diff --git a/assets/@splinetool-99227827.js b/assets/@splinetool-ead863f8.js similarity index 89% rename from assets/@splinetool-99227827.js rename to assets/@splinetool-ead863f8.js index f50797c..02038c6 100644 --- a/assets/@splinetool-99227827.js +++ b/assets/@splinetool-ead863f8.js @@ -1,4 +1,4 @@ -const Qq="modulepreload",Eq=function(g){return"/"+g},ef={},Zn=function(A,I,e){if(!I||I.length===0)return A();const i=document.getElementsByTagName("link");return Promise.all(I.map(t=>{if(t=Eq(t),t in ef)return;ef[t]=!0;const C=t.endsWith(".css"),o=C?'[rel="stylesheet"]':"";if(!!e)for(let s=i.length-1;s>=0;s--){const r=i[s];if(r.href===t&&(!C||r.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${t}"]${o}`))return;const a=document.createElement("link");if(a.rel=C?"stylesheet":Qq,C||(a.as="script",a.crossOrigin=""),a.href=t,document.head.appendChild(a),C)return new Promise((s,r)=>{a.addEventListener("load",s),a.addEventListener("error",()=>r(new Error(`Unable to preload CSS for ${t}`)))})})).then(()=>A()).catch(t=>{const C=new Event("vite:preloadError",{cancelable:!0});if(C.payload=t,window.dispatchEvent(C),!C.defaultPrevented)throw t})};var nq=Object.create,Kw=Object.defineProperty,hq=Object.getOwnPropertyDescriptor,lq=Object.getOwnPropertyNames,cq=Object.getPrototypeOf,Dq=Object.prototype.hasOwnProperty,Na=(g,A)=>()=>(A||g((A={exports:{}}).exports,A),A.exports),dq=(g,A)=>{for(var I in A)Kw(g,I,{get:A[I],enumerable:!0})},uq=(g,A,I,e)=>{if(A&&typeof A=="object"||typeof A=="function")for(let i of lq(A))!Dq.call(g,i)&&i!==I&&Kw(g,i,{get:()=>A[i],enumerable:!(e=hq(A,i))||e.enumerable});return g},Fa=(g,A,I)=>(I=g!=null?nq(cq(g)):{},uq(A||!g||!g.__esModule?Kw(I,"default",{value:g,enumerable:!0}):I,g)),pq=Na((g,A)=>{(function(I,e){typeof g=="object"?A.exports=e():typeof define=="function"&&define.amd?define(e):I.Alea=e()})(g,function(){return I.importState=function(i){var t=new I;return t.importState(i),t},I;function I(){return function(i){var t=0,C=0,o=0,B=1;i.length==0&&(i=[+new Date]);var a=e();t=a(" "),C=a(" "),o=a(" ");for(var s=0;s>>0,B-=i,B*=i,i=B>>>0,B-=i,i+=B*4294967296}return(i>>>0)*23283064365386963e-26};return t.version="Mash 0.9",t}})}),pN=Na((g,A)=>{(function(I,e){typeof g=="object"&&typeof A<"u"?e(g):typeof define=="function"&&define.amd?define(["exports"],e):e((I=typeof globalThis<"u"?globalThis:I||self).SVDJS={})})(g,function(I){I.SVD=function(e,i,t,C,o){if(i=i===void 0||i,t=t===void 0||t,o=1e-64/(C=C||Math.pow(2,-52)),!e)throw new TypeError("Matrix a is not defined");var B,a,s,r,Q,E,n,h,l,c,d,u,y=e[0].length,f=e.length;if(f{(function(I,e){typeof g=="object"&&typeof A<"u"?A.exports=e():typeof define=="function"&&define.amd?define(e):(I=I||self,I.TinyQueue=e())})(g,function(){var I=function(i,t){if(i===void 0&&(i=[]),t===void 0&&(t=e),this.data=i,this.length=this.data.length,this.compare=t,this.length>0)for(var C=(this.length>>1)-1;C>=0;C--)this._down(C)};I.prototype.push=function(i){this.data.push(i),this.length++,this._up(this.length-1)},I.prototype.pop=function(){if(this.length!==0){var i=this.data[0],t=this.data.pop();return this.length--,this.length>0&&(this.data[0]=t,this._down(0)),i}},I.prototype.peek=function(){return this.data[0]},I.prototype._up=function(i){for(var t=this,C=t.data,o=t.compare,B=C[i];i>0;){var a=i-1>>1,s=C[a];if(o(B,s)>=0)break;C[i]=s,i=a}C[i]=B},I.prototype._down=function(i){for(var t=this,C=t.data,o=t.compare,B=this.length>>1,a=C[i];i=0)break;C[i]=r,i=s}C[i]=a};function e(i,t){return it?1:0}return I})}),wq=Na((g,A)=>{var I=yq();I.default&&(I=I.default),A.exports=e,A.exports.default=e;function e(a,s,r){s=s||1;for(var Q,E,n,h,l=0;ln)&&(n=c[0]),(!l||c[1]>h)&&(h=c[1])}var d=n-Q,u=h-E,y=Math.min(d,u),f=y/2;if(y===0){var k=[Q,E];return k.distance=0,k}for(var M=new I(void 0,i),G=Q;GN.d&&(N=b);for(var O=M.length;M.length;){var H=M.pop();H.d>N.d&&(N=H,r&&console.log("found best %d after %d probes",Math.round(1e4*H.d)/1e4,O)),!(H.max-N.d<=s)&&(f=H.h/2,M.push(new t(H.x-f,H.y-f,f,a)),M.push(new t(H.x+f,H.y-f,f,a)),M.push(new t(H.x-f,H.y+f,f,a)),M.push(new t(H.x+f,H.y+f,f,a)),O+=4)}r&&(console.log("num probes: "+O),console.log("best distance: "+N.d));var _=[N.x,N.y];return _.distance=N.d,_}function i(a,s){return s.max-a.max}function t(a,s,r,Q){this.x=a,this.y=s,this.h=r,this.d=C(a,s,Q),this.max=this.d+this.h*Math.SQRT2}function C(a,s,r){for(var Q=!1,E=1/0,n=0;ns!=y[1]>s&&a<(y[0]-u[0])*(s-u[1])/(y[1]-u[1])+u[0]&&(Q=!Q),E=Math.min(E,B(a,s,u,y))}return E===0?0:(Q?1:-1)*Math.sqrt(E)}function o(a){for(var s=0,r=0,Q=0,E=a[0],n=0,h=E.length,l=h-1;n1?(E=Q[0],n=Q[1]):c>0&&(E+=h*c,n+=l*c)}return h=a-E,l=s-n,h*h+l*l}}),Sq=Na((g,A)=>{Object.defineProperty(g,"__esModule",{value:!0}),g.default=I;function I(e){if(e===null||e===!0||e===!1)return NaN;var i=Number(e);return isNaN(i)?i:i<0?Math.ceil(i):Math.floor(i)}A.exports=g.default}),fq=Na((g,A)=>{Object.defineProperty(g,"__esModule",{value:!0}),g.default=I;function I(e){var i=new Date(Date.UTC(e.getFullYear(),e.getMonth(),e.getDate(),e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds()));return i.setUTCFullYear(e.getFullYear()),e.getTime()-i.getTime()}A.exports=g.default}),Gq=Na(g=>{(function(){var A=function(){this.init()};A.prototype={init:function(){var r=this||I;return r._counter=1e3,r._html5AudioPool=[],r.html5PoolSize=10,r._codecs={},r._howls=[],r._muted=!1,r._volume=1,r._canPlayEvent="canplaythrough",r._navigator=typeof window<"u"&&window.navigator?window.navigator:null,r.masterGain=null,r.noAudio=!1,r.usingWebAudio=!0,r.autoSuspend=!0,r.ctx=null,r.autoUnlock=!0,r._setup(),r},volume:function(r){var Q=this||I;if(r=parseFloat(r),Q.ctx||s(),typeof r<"u"&&r>=0&&r<=1){if(Q._volume=r,Q._muted)return Q;Q.usingWebAudio&&Q.masterGain.gain.setValueAtTime(r,I.ctx.currentTime);for(var E=0;E=0;Q--)r._howls[Q].unload();return r.usingWebAudio&&r.ctx&&typeof r.ctx.close<"u"&&(r.ctx.close(),r.ctx=null,s()),r},codecs:function(r){return(this||I)._codecs[r.replace(/^x-/,"")]},_setup:function(){var r=this||I;if(r.state=r.ctx&&r.ctx.state||"suspended",r._autoSuspend(),!r.usingWebAudio)if(typeof Audio<"u")try{var Q=new Audio;typeof Q.oncanplaythrough>"u"&&(r._canPlayEvent="canplay")}catch{r.noAudio=!0}else r.noAudio=!0;try{var Q=new Audio;Q.muted&&(r.noAudio=!0)}catch{}return r.noAudio||r._setupCodecs(),r},_setupCodecs:function(){var r=this||I,Q=null;try{Q=typeof Audio<"u"?new Audio:null}catch{return r}if(!Q||typeof Q.canPlayType!="function")return r;var E=Q.canPlayType("audio/mpeg;").replace(/^no$/,""),n=r._navigator?r._navigator.userAgent:"",h=n.match(/OPR\/([0-6].)/g),l=h&&parseInt(h[0].split("/")[1],10)<33,c=n.indexOf("Safari")!==-1&&n.indexOf("Chrome")===-1,d=n.match(/Version\/(.*?) /),u=c&&d&&parseInt(d[1],10)<15;return r._codecs={mp3:!!(!l&&(E||Q.canPlayType("audio/mp3;").replace(/^no$/,""))),mpeg:!!E,opus:!!Q.canPlayType('audio/ogg; codecs="opus"').replace(/^no$/,""),ogg:!!Q.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),oga:!!Q.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),wav:!!(Q.canPlayType('audio/wav; codecs="1"')||Q.canPlayType("audio/wav")).replace(/^no$/,""),aac:!!Q.canPlayType("audio/aac;").replace(/^no$/,""),caf:!!Q.canPlayType("audio/x-caf;").replace(/^no$/,""),m4a:!!(Q.canPlayType("audio/x-m4a;")||Q.canPlayType("audio/m4a;")||Q.canPlayType("audio/aac;")).replace(/^no$/,""),m4b:!!(Q.canPlayType("audio/x-m4b;")||Q.canPlayType("audio/m4b;")||Q.canPlayType("audio/aac;")).replace(/^no$/,""),mp4:!!(Q.canPlayType("audio/x-mp4;")||Q.canPlayType("audio/mp4;")||Q.canPlayType("audio/aac;")).replace(/^no$/,""),weba:!!(!u&&Q.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),webm:!!(!u&&Q.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),dolby:!!Q.canPlayType('audio/mp4; codecs="ec-3"').replace(/^no$/,""),flac:!!(Q.canPlayType("audio/x-flac;")||Q.canPlayType("audio/flac;")).replace(/^no$/,"")},r},_unlockAudio:function(){var r=this||I;if(!(r._audioUnlocked||!r.ctx)){r._audioUnlocked=!1,r.autoUnlock=!1,!r._mobileUnloaded&&r.ctx.sampleRate!==44100&&(r._mobileUnloaded=!0,r.unload()),r._scratchBuffer=r.ctx.createBuffer(1,1,22050);var Q=function(E){for(;r._html5AudioPool.length"u"?u.noteOn(0):u.start(0),typeof r.ctx.resume=="function"&&r.ctx.resume(),u.onended=function(){u.disconnect(0),r._audioUnlocked=!0,document.removeEventListener("touchstart",Q,!0),document.removeEventListener("touchend",Q,!0),document.removeEventListener("click",Q,!0),document.removeEventListener("keydown",Q,!0);for(var y=0;y"u"||!I.usingWebAudio)){for(var Q=0;Q"u"||!I.usingWebAudio))return r.state==="running"&&r.ctx.state!=="interrupted"&&r._suspendTimer?(clearTimeout(r._suspendTimer),r._suspendTimer=null):r.state==="suspended"||r.state==="running"&&r.ctx.state==="interrupted"?(r.ctx.resume().then(function(){r.state="running";for(var Q=0;Q"u"&&(r="__default",!E._playLock)){for(var h=0,l=0;l0?c._seek:E._sprite[r][0]/1e3),y=Math.max(0,(E._sprite[r][0]+E._sprite[r][1])/1e3-u),f=y*1e3/Math.abs(c._rate),k=E._sprite[r][0]/1e3,M=(E._sprite[r][0]+E._sprite[r][1])/1e3;c._sprite=r,c._ended=!1;var G=function(){c._paused=!1,c._seek=u,c._start=k,c._stop=M,c._loop=!!(c._loop||E._sprite[r][2])};if(u>=M){E._ended(c);return}var v=c._node;if(E._webAudio){var N=function(){E._playLock=!1,G(),E._refreshBuffer(c);var _=c._muted||E._muted?0:c._volume;v.gain.setValueAtTime(_,I.ctx.currentTime),c._playStart=I.ctx.currentTime,typeof v.bufferSource.start>"u"?c._loop?v.bufferSource.noteGrainOn(0,u,86400):v.bufferSource.noteGrainOn(0,u,y):c._loop?v.bufferSource.start(0,u,86400):v.bufferSource.start(0,u,y),f!==1/0&&(E._endTimers[c._id]=setTimeout(E._ended.bind(E,c),f)),Q||setTimeout(function(){E._emit("play",c._id),E._loadQueue()},0)};I.state==="running"&&I.ctx.state!=="interrupted"?N():(E._playLock=!0,E.once("resume",N),E._clearTimer(c._id))}else{var b=function(){v.currentTime=u,v.muted=c._muted||E._muted||I._muted||v.muted,v.volume=c._volume*I.volume(),v.playbackRate=c._rate;try{var _=v.play();if(_&&typeof Promise<"u"&&(_ instanceof Promise||typeof _.then=="function")?(E._playLock=!0,G(),_.then(function(){E._playLock=!1,v._unlocked=!0,Q?E._loadQueue():E._emit("play",c._id)}).catch(function(){E._playLock=!1,E._emit("playerror",c._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."),c._ended=!0,c._paused=!0})):Q||(E._playLock=!1,G(),E._emit("play",c._id)),v.playbackRate=c._rate,v.paused){E._emit("playerror",c._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}r!=="__default"||c._loop?E._endTimers[c._id]=setTimeout(E._ended.bind(E,c),f):(E._endTimers[c._id]=function(){E._ended(c),v.removeEventListener("ended",E._endTimers[c._id],!1)},v.addEventListener("ended",E._endTimers[c._id],!1))}catch(gA){E._emit("playerror",c._id,gA)}};v.src==="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA"&&(v.src=E._src,v.load());var O=window&&window.ejecta||!v.readyState&&I._navigator.isCocoonJS;if(v.readyState>=3||O)b();else{E._playLock=!0,E._state="loading";var H=function(){E._state="loaded",b(),v.removeEventListener(I._canPlayEvent,H,!1)};v.addEventListener(I._canPlayEvent,H,!1),E._clearTimer(c._id)}}return c._id},pause:function(r){var Q=this;if(Q._state!=="loaded"||Q._playLock)return Q._queue.push({event:"pause",action:function(){Q.pause(r)}}),Q;for(var E=Q._getSoundIds(r),n=0;n"u"?h._node.bufferSource.noteOff(0):h._node.bufferSource.stop(0),Q._cleanBuffer(h._node)}else(!isNaN(h._node.duration)||h._node.duration===1/0)&&h._node.pause();arguments[1]||Q._emit("pause",h?h._id:null)}return Q},stop:function(r,Q){var E=this;if(E._state!=="loaded"||E._playLock)return E._queue.push({event:"stop",action:function(){E.stop(r)}}),E;for(var n=E._getSoundIds(r),h=0;h"u"?l._node.bufferSource.noteOff(0):l._node.bufferSource.stop(0),E._cleanBuffer(l._node)):(!isNaN(l._node.duration)||l._node.duration===1/0)&&(l._node.currentTime=l._start||0,l._node.pause(),l._node.duration===1/0&&E._clearSound(l._node))),Q||E._emit("stop",l._id))}return E},mute:function(r,Q){var E=this;if(E._state!=="loaded"||E._playLock)return E._queue.push({event:"mute",action:function(){E.mute(r,Q)}}),E;if(typeof Q>"u")if(typeof r=="boolean")E._muted=r;else return E._muted;for(var n=E._getSoundIds(Q),h=0;h"u"){var h=r._getSoundIds(),l=h.indexOf(Q[0]);l>=0?n=parseInt(Q[0],10):E=parseFloat(Q[0])}else Q.length>=2&&(E=parseFloat(Q[0]),n=parseInt(Q[1],10));var c;if(typeof E<"u"&&E>=0&&E<=1){if(r._state!=="loaded"||r._playLock)return r._queue.push({event:"volume",action:function(){r.volume.apply(r,Q)}}),r;typeof n>"u"&&(r._volume=E),n=r._getSoundIds(n);for(var d=0;d"u")}}return h},_startFadeInterval:function(r,Q,E,n,h,l){var c=this,d=Q,u=E-Q,y=Math.abs(u/.01),f=Math.max(4,y>0?n/y:n),k=Date.now();r._fadeTo=E,r._interval=setInterval(function(){var M=(Date.now()-k)/n;k=Date.now(),d+=u*M,d=Math.round(d*100)/100,u<0?d=Math.max(E,d):d=Math.min(E,d),c._webAudio?r._volume=d:c.volume(d,r._id,!0),l&&(c._volume=d),(EQ&&d>=E)&&(clearInterval(r._interval),r._interval=null,r._fadeTo=null,c.volume(E,r._id),c._emit("fade",r._id))},f)},_stopFade:function(r){var Q=this,E=Q._soundById(r);return E&&E._interval&&(Q._webAudio&&E._node.gain.cancelScheduledValues(I.ctx.currentTime),clearInterval(E._interval),E._interval=null,Q.volume(E._fadeTo,r),E._fadeTo=null,Q._emit("fade",r)),Q},loop:function(){var r=this,Q=arguments,E,n,h;if(Q.length===0)return r._loop;if(Q.length===1)if(typeof Q[0]=="boolean")E=Q[0],r._loop=E;else return h=r._soundById(parseInt(Q[0],10)),h?h._loop:!1;else Q.length===2&&(E=Q[0],n=parseInt(Q[1],10));for(var l=r._getSoundIds(n),c=0;c=0?n=parseInt(Q[0],10):E=parseFloat(Q[0])}else Q.length===2&&(E=parseFloat(Q[0]),n=parseInt(Q[1],10));var c;if(typeof E=="number"){if(r._state!=="loaded"||r._playLock)return r._queue.push({event:"rate",action:function(){r.rate.apply(r,Q)}}),r;typeof n>"u"&&(r._rate=E),n=r._getSoundIds(n);for(var d=0;d=0?n=parseInt(Q[0],10):r._sounds.length&&(n=r._sounds[0]._id,E=parseFloat(Q[0]))}else Q.length===2&&(E=parseFloat(Q[0]),n=parseInt(Q[1],10));if(typeof n>"u")return 0;if(typeof E=="number"&&(r._state!=="loaded"||r._playLock))return r._queue.push({event:"seek",action:function(){r.seek.apply(r,Q)}}),r;var c=r._soundById(n);if(c)if(typeof E=="number"&&E>=0){var d=r.playing(n);d&&r.pause(n,!0),c._seek=E,c._ended=!1,r._clearTimer(n),!r._webAudio&&c._node&&!isNaN(c._node.duration)&&(c._node.currentTime=E);var u=function(){d&&r.play(n,!0),r._emit("seek",n)};if(d&&!r._webAudio){var y=function(){r._playLock?setTimeout(y,0):u()};setTimeout(y,0)}else u()}else if(r._webAudio){var f=r.playing(n)?I.ctx.currentTime-c._playStart:0,k=c._rateSeek?c._rateSeek-c._seek:0;return c._seek+(k+f*Math.abs(c._rate))}else return c._node.currentTime;return r},playing:function(r){var Q=this;if(typeof r=="number"){var E=Q._soundById(r);return E?!E._paused:!1}for(var n=0;n=0&&I._howls.splice(n,1);var h=!0;for(E=0;E=0){h=!1;break}return t&&h&&delete t[r._src],I.noAudio=!1,r._state="unloaded",r._sounds=[],r=null,null},on:function(r,Q,E,n){var h=this,l=h["_on"+r];return typeof Q=="function"&&l.push(n?{id:E,fn:Q,once:n}:{id:E,fn:Q}),h},off:function(r,Q,E){var n=this,h=n["_on"+r],l=0;if(typeof Q=="number"&&(E=Q,Q=null),Q||E)for(l=0;l=0;l--)(!h[l].id||h[l].id===Q||r==="load")&&(setTimeout((function(c){c.call(this,Q,E)}).bind(n,h[l].fn),0),h[l].once&&n.off(r,h[l].fn,h[l].id));return n._loadQueue(r),n},_loadQueue:function(r){var Q=this;if(Q._queue.length>0){var E=Q._queue[0];E.event===r&&(Q._queue.shift(),Q._loadQueue()),r||E.action()}return Q},_ended:function(r){var Q=this,E=r._sprite;if(!Q._webAudio&&r._node&&!r._node.paused&&!r._node.ended&&r._node.currentTime=0;n--){if(E<=Q)return;r._sounds[n]._ended&&(r._webAudio&&r._sounds[n]._node&&r._sounds[n]._node.disconnect(0),r._sounds.splice(n,1),E--)}}},_getSoundIds:function(r){var Q=this;if(typeof r>"u"){for(var E=[],n=0;n=0;if(I._scratchBuffer&&r.bufferSource&&(r.bufferSource.onended=null,r.bufferSource.disconnect(0),E))try{r.bufferSource.buffer=I._scratchBuffer}catch{}return r.bufferSource=null,Q},_clearSound:function(r){var Q=/MSIE |Trident\//.test(I._navigator&&I._navigator.userAgent);Q||(r.src="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA")}};var i=function(r){this._parent=r,this.init()};i.prototype={init:function(){var r=this,Q=r._parent;return r._muted=Q._muted,r._loop=Q._loop,r._volume=Q._volume,r._rate=Q._rate,r._seek=0,r._paused=!0,r._ended=!0,r._sprite="__default",r._id=++I._counter,Q._sounds.push(r),r.create(),r},create:function(){var r=this,Q=r._parent,E=I._muted||r._muted||r._parent._muted?0:r._volume;return Q._webAudio?(r._node=typeof I.ctx.createGain>"u"?I.ctx.createGainNode():I.ctx.createGain(),r._node.gain.setValueAtTime(E,I.ctx.currentTime),r._node.paused=!0,r._node.connect(I.masterGain)):I.noAudio||(r._node=I._obtainHtml5Audio(),r._errorFn=r._errorListener.bind(r),r._node.addEventListener("error",r._errorFn,!1),r._loadFn=r._loadListener.bind(r),r._node.addEventListener(I._canPlayEvent,r._loadFn,!1),r._endFn=r._endListener.bind(r),r._node.addEventListener("ended",r._endFn,!1),r._node.src=Q._src,r._node.preload=Q._preload===!0?"auto":Q._preload,r._node.volume=E*I.volume(),r._node.load()),r},reset:function(){var r=this,Q=r._parent;return r._muted=Q._muted,r._loop=Q._loop,r._volume=Q._volume,r._rate=Q._rate,r._seek=0,r._rateSeek=0,r._paused=!0,r._ended=!0,r._sprite="__default",r._id=++I._counter,r},_errorListener:function(){var r=this;r._parent._emit("loaderror",r._id,r._node.error?r._node.error.code:0),r._node.removeEventListener("error",r._errorFn,!1)},_loadListener:function(){var r=this,Q=r._parent;Q._duration=Math.ceil(r._node.duration*10)/10,Object.keys(Q._sprite).length===0&&(Q._sprite={__default:[0,Q._duration*1e3]}),Q._state!=="loaded"&&(Q._state="loaded",Q._emit("load"),Q._loadQueue()),r._node.removeEventListener(I._canPlayEvent,r._loadFn,!1)},_endListener:function(){var r=this,Q=r._parent;Q._duration===1/0&&(Q._duration=Math.ceil(r._node.duration*10)/10,Q._sprite.__default[1]===1/0&&(Q._sprite.__default[1]=Q._duration*1e3),Q._ended(r)),r._node.removeEventListener("ended",r._endFn,!1)}};var t={},C=function(r){var Q=r._src;if(t[Q]){r._duration=t[Q].duration,a(r);return}if(/^data:[^;]+;base64,/.test(Q)){for(var E=atob(Q.split(",")[1]),n=new Uint8Array(E.length),h=0;h0?(t[Q._src]=h,a(Q,h)):E()};typeof Promise<"u"&&I.ctx.decodeAudioData.length===1?I.ctx.decodeAudioData(r).then(n).catch(E):I.ctx.decodeAudioData(r,n,E)},a=function(r,Q){Q&&!r._duration&&(r._duration=Q.duration),Object.keys(r._sprite).length===0&&(r._sprite={__default:[0,r._duration*1e3]}),r._state!=="loaded"&&(r._state="loaded",r._emit("load"),r._loadQueue())},s=function(){if(I.usingWebAudio){try{typeof AudioContext<"u"?I.ctx=new AudioContext:typeof webkitAudioContext<"u"?I.ctx=new webkitAudioContext:I.usingWebAudio=!1}catch{I.usingWebAudio=!1}I.ctx||(I.usingWebAudio=!1);var r=/iP(hone|od|ad)/.test(I._navigator&&I._navigator.platform),Q=I._navigator&&I._navigator.appVersion.match(/OS (\d+)_(\d+)_?(\d+)?/),E=Q?parseInt(Q[1],10):null;if(r&&E&&E<9){var n=/safari/.test(I._navigator&&I._navigator.userAgent.toLowerCase());I._navigator&&!n&&(I.usingWebAudio=!1)}I.usingWebAudio&&(I.masterGain=typeof I.ctx.createGain>"u"?I.ctx.createGainNode():I.ctx.createGain(),I.masterGain.gain.setValueAtTime(I._muted?0:I._volume,I.ctx.currentTime),I.masterGain.connect(I.ctx.destination)),I._setup()}};typeof define=="function"&&define.amd&&define([],function(){return{Howler:I,Howl:e}}),typeof g<"u"&&(g.Howler=I,g.Howl=e),typeof global<"u"?(global.HowlerGlobal=A,global.Howler=I,global.Howl=e,global.Sound=i):typeof window<"u"&&(window.HowlerGlobal=A,window.Howler=I,window.Howl=e,window.Sound=i)})(),function(){HowlerGlobal.prototype._pos=[0,0,0],HowlerGlobal.prototype._orientation=[0,0,-1,0,1,0],HowlerGlobal.prototype.stereo=function(I){var e=this;if(!e.ctx||!e.ctx.listener)return e;for(var i=e._howls.length-1;i>=0;i--)e._howls[i].stereo(I);return e},HowlerGlobal.prototype.pos=function(I,e,i){var t=this;if(!t.ctx||!t.ctx.listener)return t;if(e=typeof e!="number"?t._pos[1]:e,i=typeof i!="number"?t._pos[2]:i,typeof I=="number")t._pos=[I,e,i],typeof t.ctx.listener.positionX<"u"?(t.ctx.listener.positionX.setTargetAtTime(t._pos[0],Howler.ctx.currentTime,.1),t.ctx.listener.positionY.setTargetAtTime(t._pos[1],Howler.ctx.currentTime,.1),t.ctx.listener.positionZ.setTargetAtTime(t._pos[2],Howler.ctx.currentTime,.1)):t.ctx.listener.setPosition(t._pos[0],t._pos[1],t._pos[2]);else return t._pos;return t},HowlerGlobal.prototype.orientation=function(I,e,i,t,C,o){var B=this;if(!B.ctx||!B.ctx.listener)return B;var a=B._orientation;if(e=typeof e!="number"?a[1]:e,i=typeof i!="number"?a[2]:i,t=typeof t!="number"?a[3]:t,C=typeof C!="number"?a[4]:C,o=typeof o!="number"?a[5]:o,typeof I=="number")B._orientation=[I,e,i,t,C,o],typeof B.ctx.listener.forwardX<"u"?(B.ctx.listener.forwardX.setTargetAtTime(I,Howler.ctx.currentTime,.1),B.ctx.listener.forwardY.setTargetAtTime(e,Howler.ctx.currentTime,.1),B.ctx.listener.forwardZ.setTargetAtTime(i,Howler.ctx.currentTime,.1),B.ctx.listener.upX.setTargetAtTime(t,Howler.ctx.currentTime,.1),B.ctx.listener.upY.setTargetAtTime(C,Howler.ctx.currentTime,.1),B.ctx.listener.upZ.setTargetAtTime(o,Howler.ctx.currentTime,.1)):B.ctx.listener.setOrientation(I,e,i,t,C,o);else return a;return B},Howl.prototype.init=function(I){return function(e){var i=this;return i._orientation=e.orientation||[1,0,0],i._stereo=e.stereo||null,i._pos=e.pos||null,i._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},i._onstereo=e.onstereo?[{fn:e.onstereo}]:[],i._onpos=e.onpos?[{fn:e.onpos}]:[],i._onorientation=e.onorientation?[{fn:e.onorientation}]:[],I.call(this,e)}}(Howl.prototype.init),Howl.prototype.stereo=function(I,e){var i=this;if(!i._webAudio)return i;if(i._state!=="loaded")return i._queue.push({event:"stereo",action:function(){i.stereo(I,e)}}),i;var t=typeof Howler.ctx.createStereoPanner>"u"?"spatial":"stereo";if(typeof e>"u")if(typeof I=="number")i._stereo=I,i._pos=[I,0,0];else return i._stereo;for(var C=i._getSoundIds(e),o=0;o"u")if(typeof I=="number")C._pos=[I,e,i];else return C._pos;for(var o=C._getSoundIds(t),B=0;B"u")if(typeof I=="number")C._orientation=[I,e,i];else return C._orientation;for(var o=C._getSoundIds(t),B=0;B"u"&&(i.pannerAttr||(i.pannerAttr={coneInnerAngle:i.coneInnerAngle,coneOuterAngle:i.coneOuterAngle,coneOuterGain:i.coneOuterGain,distanceModel:i.distanceModel,maxDistance:i.maxDistance,refDistance:i.refDistance,rolloffFactor:i.rolloffFactor,panningModel:i.panningModel}),I._pannerAttr={coneInnerAngle:typeof i.pannerAttr.coneInnerAngle<"u"?i.pannerAttr.coneInnerAngle:I._coneInnerAngle,coneOuterAngle:typeof i.pannerAttr.coneOuterAngle<"u"?i.pannerAttr.coneOuterAngle:I._coneOuterAngle,coneOuterGain:typeof i.pannerAttr.coneOuterGain<"u"?i.pannerAttr.coneOuterGain:I._coneOuterGain,distanceModel:typeof i.pannerAttr.distanceModel<"u"?i.pannerAttr.distanceModel:I._distanceModel,maxDistance:typeof i.pannerAttr.maxDistance<"u"?i.pannerAttr.maxDistance:I._maxDistance,refDistance:typeof i.pannerAttr.refDistance<"u"?i.pannerAttr.refDistance:I._refDistance,rolloffFactor:typeof i.pannerAttr.rolloffFactor<"u"?i.pannerAttr.rolloffFactor:I._rolloffFactor,panningModel:typeof i.pannerAttr.panningModel<"u"?i.pannerAttr.panningModel:I._panningModel});else return C=I._soundById(parseInt(e[0],10)),C?C._pannerAttr:I._pannerAttr;else e.length===2&&(i=e[0],t=parseInt(e[1],10));for(var o=I._getSoundIds(t),B=0;B{A.exports=function(I,e){for(var i=I.split("."),t=e.split("."),C=0;C<3;C++){var o=Number(i[C]),B=Number(t[C]);if(o>B)return 1;if(B>o)return-1;if(!isNaN(o)&&isNaN(B))return 1;if(isNaN(o)&&!isNaN(B))return-1}return 0}}),PQ="149",xt={ROTATE:0,PAN:1,DOLLY_PAN:2,DOLLY_ROTATE:3},Mq=0,tf=1,mq=2,Jw=1,Uq=2,WE=3,RC=0,ni=1,Ft=2,je=0,oQ=1,Cf=2,of=3,Bf=4,Nq=5,Ps=100,Fq=101,Rq=102,af=103,rf=104,Kq=200,Jq=201,vq=202,qq=203,yN=204,wN=205,Lq=206,bq=207,Yq=208,xq=209,Hq=210,Tq=0,Oq=1,_q=2,qp=3,Pq=4,jq=5,Wq=6,Zq=7,SN=0,Vq=1,zq=2,DB=0,Xq=1,$q=2,AL=3,gL=4,IL=5,fN=300,Ur=301,Nr=302,Lp=303,bp=304,Vn=306,hB=1e3,Ke=1001,Yp=1002,ie=1003,sf=1004,md=1005,cI=1006,eL=1007,SQ=1008,vi=1009,iL=1010,tL=1011,GN=1012,CL=1013,oa=1014,Rt=1015,fQ=1016,oL=1017,BL=1018,wr=1020,aL=1021,$t=1023,rL=1024,sL=1025,Sr=1026,Fr=1027,QL=1028,EL=1029,kN=1030,nL=1031,hL=1033,Ud=33776,Nd=33777,Fd=33778,Rd=33779,Qf=35840,Ef=35841,nf=35842,hf=35843,lL=36196,lf=37492,cf=37496,Df=37808,df=37809,uf=37810,pf=37811,yf=37812,wf=37813,Sf=37814,ff=37815,Gf=37816,kf=37817,Mf=37818,mf=37819,Uf=37820,Nf=37821,Kd=36492,cL=36283,Ff=36284,Rf=36285,Kf=36286,MN=2200,mN=2201,vw=2202,Ec=2300,nc=2301,Jd=2302,Xs=2400,$s=2401,hc=2402,qw=2500,DL=2501,fo=3e3,sI=3001,UB=3200,UN=3201,dL=0,uL=1,ao="srgb",lc="srgb-linear",vd=7680,pL=519,xp=35044,Jf="300 es",Hp=1035,Si=class{addEventListener(A,I){this._listeners===void 0&&(this._listeners={});let e=this._listeners;e[A]===void 0&&(e[A]=[]),e[A].indexOf(I)===-1&&e[A].push(I)}hasEventListener(A,I){if(this._listeners===void 0)return!1;let e=this._listeners;return e[A]!==void 0&&e[A].indexOf(I)!==-1}removeEventListener(A,I){if(this._listeners===void 0)return;let e=this._listeners[A];if(e!==void 0){let i=e.indexOf(I);i!==-1&&e.splice(i,1)}}dispatchEvent(A){if(this._listeners===void 0)return;let I=this._listeners[A.type];if(I!==void 0){A.target=this;let e=I.slice(0);for(let i=0,t=e.length;i>8&255]+mi[g>>16&255]+mi[g>>24&255]+"-"+mi[A&255]+mi[A>>8&255]+"-"+mi[A>>16&15|64]+mi[A>>24&255]+"-"+mi[I&63|128]+mi[I>>8&255]+"-"+mi[I>>16&255]+mi[I>>24&255]+mi[e&255]+mi[e>>8&255]+mi[e>>16&255]+mi[e>>24&255]).toLowerCase()}function ii(g,A,I){return Math.max(A,Math.min(I,g))}function Lw(g,A){return(g%A+A)%A}function yL(g,A,I,e,i){return e+(g-A)*(i-e)/(I-A)}function wL(g,A,I){return g!==A?(I-g)/(A-g):0}function tn(g,A,I){return(1-I)*g+I*A}function SL(g,A,I,e){return tn(g,A,1-Math.exp(-I*e))}function fL(g,A=1){return A-Math.abs(Lw(g,A*2)-A)}function GL(g,A,I){return g<=A?0:g>=I?1:(g=(g-A)/(I-A),g*g*(3-2*g))}function kL(g,A,I){return g<=A?0:g>=I?1:(g=(g-A)/(I-A),g*g*g*(g*(g*6-15)+10))}function ML(g,A){return g+Math.floor(Math.random()*(A-g+1))}function mL(g,A){return g+Math.random()*(A-g)}function UL(g){return g*(.5-Math.random())}function NL(g){g!==void 0&&(vf=g);let A=vf+=1831565813;return A=Math.imul(A^A>>>15,A|1),A^=A+Math.imul(A^A>>>7,A|61),((A^A>>>14)>>>0)/4294967296}function FL(g){return g*en}function RL(g){return g*dn}function Tp(g){return(g&g-1)===0&&g!==0}function NN(g){return Math.pow(2,Math.ceil(Math.log(g)/Math.LN2))}function cc(g){return Math.pow(2,Math.floor(Math.log(g)/Math.LN2))}function KL(g,A,I,e,i){let t=Math.cos,C=Math.sin,o=t(I/2),B=C(I/2),a=t((A+e)/2),s=C((A+e)/2),r=t((A-e)/2),Q=C((A-e)/2),E=t((e-A)/2),n=C((e-A)/2);switch(i){case"XYX":g.set(o*s,B*r,B*Q,o*a);break;case"YZY":g.set(B*Q,o*s,B*r,o*a);break;case"ZXZ":g.set(B*r,B*Q,o*s,o*a);break;case"XZX":g.set(o*s,B*n,B*E,o*a);break;case"YXY":g.set(B*E,o*s,B*n,o*a);break;case"ZYZ":g.set(B*n,B*E,o*s,o*a);break;default:console.warn("THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: "+i)}}function lB(g,A){switch(A.constructor){case Float32Array:return g;case Uint16Array:return g/65535;case Uint8Array:return g/255;case Int16Array:return Math.max(g/32767,-1);case Int8Array:return Math.max(g/127,-1);default:throw new Error("Invalid component type.")}}function ee(g,A){switch(A.constructor){case Float32Array:return g;case Uint16Array:return Math.round(g*65535);case Uint8Array:return Math.round(g*255);case Int16Array:return Math.round(g*32767);case Int8Array:return Math.round(g*127);default:throw new Error("Invalid component type.")}}var vg=Object.freeze({__proto__:null,DEG2RAD:en,RAD2DEG:dn,ceilPowerOfTwo:NN,clamp:ii,damp:SL,degToRad:FL,denormalize:lB,euclideanModulo:Lw,floorPowerOfTwo:cc,generateUUID:IC,inverseLerp:wL,isPowerOfTwo:Tp,lerp:tn,mapLinear:yL,normalize:ee,pingpong:fL,radToDeg:RL,randFloat:mL,randFloatSpread:UL,randInt:ML,seededRandom:NL,setQuaternionFromProperEuler:KL,smootherstep:kL,smoothstep:GL}),sA=class{constructor(A=0,I=0){sA.prototype.isVector2=!0,this.x=A,this.y=I}get width(){return this.x}set width(A){this.x=A}get height(){return this.y}set height(A){this.y=A}set(A,I){return this.x=A,this.y=I,this}setScalar(A){return this.x=A,this.y=A,this}setX(A){return this.x=A,this}setY(A){return this.y=A,this}setComponent(A,I){switch(A){case 0:this.x=I;break;case 1:this.y=I;break;default:throw new Error("index is out of range: "+A)}return this}getComponent(A){switch(A){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+A)}}clone(){return new this.constructor(this.x,this.y)}copy(A){return this.x=A.x,this.y=A.y,this}add(A){return this.x+=A.x,this.y+=A.y,this}addScalar(A){return this.x+=A,this.y+=A,this}addVectors(A,I){return this.x=A.x+I.x,this.y=A.y+I.y,this}addScaledVector(A,I){return this.x+=A.x*I,this.y+=A.y*I,this}sub(A){return this.x-=A.x,this.y-=A.y,this}subScalar(A){return this.x-=A,this.y-=A,this}subVectors(A,I){return this.x=A.x-I.x,this.y=A.y-I.y,this}multiply(A){return this.x*=A.x,this.y*=A.y,this}multiplyScalar(A){return this.x*=A,this.y*=A,this}divide(A){return this.x/=A.x,this.y/=A.y,this}divideScalar(A){return this.multiplyScalar(1/A)}applyMatrix3(A){let I=this.x,e=this.y,i=A.elements;return this.x=i[0]*I+i[3]*e+i[6],this.y=i[1]*I+i[4]*e+i[7],this}min(A){return this.x=Math.min(this.x,A.x),this.y=Math.min(this.y,A.y),this}max(A){return this.x=Math.max(this.x,A.x),this.y=Math.max(this.y,A.y),this}clamp(A,I){return this.x=Math.max(A.x,Math.min(I.x,this.x)),this.y=Math.max(A.y,Math.min(I.y,this.y)),this}clampScalar(A,I){return this.x=Math.max(A,Math.min(I,this.x)),this.y=Math.max(A,Math.min(I,this.y)),this}clampLength(A,I){let e=this.length();return this.divideScalar(e||1).multiplyScalar(Math.max(A,Math.min(I,e)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}roundToZero(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this}negate(){return this.x=-this.x,this.y=-this.y,this}dot(A){return this.x*A.x+this.y*A.y}cross(A){return this.x*A.y-this.y*A.x}lengthSq(){return this.x*this.x+this.y*this.y}length(){return Math.sqrt(this.x*this.x+this.y*this.y)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)}normalize(){return this.divideScalar(this.length()||1)}angle(){return Math.atan2(-this.y,-this.x)+Math.PI}distanceTo(A){return Math.sqrt(this.distanceToSquared(A))}distanceToSquared(A){let I=this.x-A.x,e=this.y-A.y;return I*I+e*e}manhattanDistanceTo(A){return Math.abs(this.x-A.x)+Math.abs(this.y-A.y)}setLength(A){return this.normalize().multiplyScalar(A)}lerp(A,I){return this.x+=(A.x-this.x)*I,this.y+=(A.y-this.y)*I,this}lerpVectors(A,I,e){return this.x=A.x+(I.x-A.x)*e,this.y=A.y+(I.y-A.y)*e,this}equals(A){return A.x===this.x&&A.y===this.y}fromArray(A,I=0){return this.x=A[I],this.y=A[I+1],this}toArray(A=[],I=0){return A[I]=this.x,A[I+1]=this.y,A}fromBufferAttribute(A,I){return this.x=A.getX(I),this.y=A.getY(I),this}rotateAround(A,I){let e=Math.cos(I),i=Math.sin(I),t=this.x-A.x,C=this.y-A.y;return this.x=t*e-C*i+A.x,this.y=t*i+C*e+A.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y}},hi=class{constructor(){hi.prototype.isMatrix3=!0,this.elements=[1,0,0,0,1,0,0,0,1]}set(A,I,e,i,t,C,o,B,a){let s=this.elements;return s[0]=A,s[1]=i,s[2]=o,s[3]=I,s[4]=t,s[5]=B,s[6]=e,s[7]=C,s[8]=a,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(A){let I=this.elements,e=A.elements;return I[0]=e[0],I[1]=e[1],I[2]=e[2],I[3]=e[3],I[4]=e[4],I[5]=e[5],I[6]=e[6],I[7]=e[7],I[8]=e[8],this}extractBasis(A,I,e){return A.setFromMatrix3Column(this,0),I.setFromMatrix3Column(this,1),e.setFromMatrix3Column(this,2),this}setFromMatrix4(A){let I=A.elements;return this.set(I[0],I[4],I[8],I[1],I[5],I[9],I[2],I[6],I[10]),this}multiply(A){return this.multiplyMatrices(this,A)}premultiply(A){return this.multiplyMatrices(A,this)}multiplyMatrices(A,I){let e=A.elements,i=I.elements,t=this.elements,C=e[0],o=e[3],B=e[6],a=e[1],s=e[4],r=e[7],Q=e[2],E=e[5],n=e[8],h=i[0],l=i[3],c=i[6],d=i[1],u=i[4],y=i[7],f=i[2],k=i[5],M=i[8];return t[0]=C*h+o*d+B*f,t[3]=C*l+o*u+B*k,t[6]=C*c+o*y+B*M,t[1]=a*h+s*d+r*f,t[4]=a*l+s*u+r*k,t[7]=a*c+s*y+r*M,t[2]=Q*h+E*d+n*f,t[5]=Q*l+E*u+n*k,t[8]=Q*c+E*y+n*M,this}multiplyScalar(A){let I=this.elements;return I[0]*=A,I[3]*=A,I[6]*=A,I[1]*=A,I[4]*=A,I[7]*=A,I[2]*=A,I[5]*=A,I[8]*=A,this}determinant(){let A=this.elements,I=A[0],e=A[1],i=A[2],t=A[3],C=A[4],o=A[5],B=A[6],a=A[7],s=A[8];return I*C*s-I*o*a-e*t*s+e*o*B+i*t*a-i*C*B}invert(){let A=this.elements,I=A[0],e=A[1],i=A[2],t=A[3],C=A[4],o=A[5],B=A[6],a=A[7],s=A[8],r=s*C-o*a,Q=o*B-s*t,E=a*t-C*B,n=I*r+e*Q+i*E;if(n===0)return this.set(0,0,0,0,0,0,0,0,0);let h=1/n;return A[0]=r*h,A[1]=(i*a-s*e)*h,A[2]=(o*e-i*C)*h,A[3]=Q*h,A[4]=(s*I-i*B)*h,A[5]=(i*t-o*I)*h,A[6]=E*h,A[7]=(e*B-a*I)*h,A[8]=(C*I-e*t)*h,this}transpose(){let A,I=this.elements;return A=I[1],I[1]=I[3],I[3]=A,A=I[2],I[2]=I[6],I[6]=A,A=I[5],I[5]=I[7],I[7]=A,this}getNormalMatrix(A){return this.setFromMatrix4(A).invert().transpose()}transposeIntoArray(A){let I=this.elements;return A[0]=I[0],A[1]=I[3],A[2]=I[6],A[3]=I[1],A[4]=I[4],A[5]=I[7],A[6]=I[2],A[7]=I[5],A[8]=I[8],this}setUvTransform(A,I,e,i,t,C,o){let B=Math.cos(t),a=Math.sin(t);return this.set(e*B,e*a,-e*(B*C+a*o)+C+A,-i*a,i*B,-i*(-a*C+B*o)+o+I,0,0,1),this}scale(A,I){return this.premultiply(qd.makeScale(A,I)),this}rotate(A){return this.premultiply(qd.makeRotation(-A)),this}translate(A,I){return this.premultiply(qd.makeTranslation(A,I)),this}makeTranslation(A,I){return this.set(1,0,A,0,1,I,0,0,1),this}makeRotation(A){let I=Math.cos(A),e=Math.sin(A);return this.set(I,-e,0,e,I,0,0,0,1),this}makeScale(A,I){return this.set(A,0,0,0,I,0,0,0,1),this}equals(A){let I=this.elements,e=A.elements;for(let i=0;i<9;i++)if(I[i]!==e[i])return!1;return!0}fromArray(A,I=0){for(let e=0;e<9;e++)this.elements[e]=A[e+I];return this}toArray(A=[],I=0){let e=this.elements;return A[I]=e[0],A[I+1]=e[1],A[I+2]=e[2],A[I+3]=e[3],A[I+4]=e[4],A[I+5]=e[5],A[I+6]=e[6],A[I+7]=e[7],A[I+8]=e[8],A}clone(){return new this.constructor().fromArray(this.elements)}},qd=new hi;function FN(g){for(let A=g.length-1;A>=0;--A)if(g[A]>=65535)return!0;return!1}var JL={Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array};function Gh(g,A){return new JL[g](A)}function Dc(g){return document.createElementNS("http://www.w3.org/1999/xhtml",g)}function fr(g){return g<.04045?g*.0773993808:Math.pow(g*.9478672986+.0521327014,2.4)}function Wl(g){return g<.0031308?g*12.92:1.055*Math.pow(g,.41666)-.055}var Ld={[ao]:{[lc]:fr},[lc]:{[ao]:Wl}},Yi={legacyMode:!0,get workingColorSpace(){return lc},set workingColorSpace(g){console.warn("THREE.ColorManagement: .workingColorSpace is readonly.")},convert:function(g,A,I){if(this.legacyMode||A===I||!A||!I)return g;if(Ld[A]&&Ld[A][I]!==void 0){let e=Ld[A][I];return g.r=e(g.r),g.g=e(g.g),g.b=e(g.b),g}throw new Error("Unsupported color space conversion.")},fromWorkingColorSpace:function(g,A){return this.convert(g,this.workingColorSpace,A)},toWorkingColorSpace:function(g,A){return this.convert(g,A,this.workingColorSpace)}},RN={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074},$e={r:0,g:0,b:0},nC={h:0,s:0,l:0},kh={h:0,s:0,l:0};function bd(g,A,I){return I<0&&(I+=1),I>1&&(I-=1),I<1/6?g+(A-g)*6*I:I<1/2?A:I<2/3?g+(A-g)*6*(2/3-I):g}function Mh(g,A){return A.r=g.r,A.g=g.g,A.b=g.b,A}var Og=class{constructor(A,I,e){return this.isColor=!0,this.r=1,this.g=1,this.b=1,I===void 0&&e===void 0?this.set(A):this.setRGB(A,I,e)}set(A){return A&&A.isColor?this.copy(A):typeof A=="number"?this.setHex(A):typeof A=="string"&&this.setStyle(A),this}setScalar(A){return this.r=A,this.g=A,this.b=A,this}setHex(A,I=ao){return A=Math.floor(A),this.r=(A>>16&255)/255,this.g=(A>>8&255)/255,this.b=(A&255)/255,Yi.toWorkingColorSpace(this,I),this}setRGB(A,I,e,i=Yi.workingColorSpace){return this.r=A,this.g=I,this.b=e,Yi.toWorkingColorSpace(this,i),this}setHSL(A,I,e,i=Yi.workingColorSpace){if(A=Lw(A,1),I=ii(I,0,1),e=ii(e,0,1),I===0)this.r=this.g=this.b=e;else{let t=e<=.5?e*(1+I):e+I-e*I,C=2*e-t;this.r=bd(C,t,A+1/3),this.g=bd(C,t,A),this.b=bd(C,t,A-1/3)}return Yi.toWorkingColorSpace(this,i),this}setStyle(A,I=ao){function e(t){t!==void 0&&parseFloat(t)<1&&console.warn("THREE.Color: Alpha component of "+A+" will be ignored.")}let i;if(i=/^((?:rgb|hsl)a?)\(([^\)]*)\)/.exec(A)){let t,C=i[1],o=i[2];switch(C){case"rgb":case"rgba":if(t=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(o))return this.r=Math.min(255,parseInt(t[1],10))/255,this.g=Math.min(255,parseInt(t[2],10))/255,this.b=Math.min(255,parseInt(t[3],10))/255,Yi.toWorkingColorSpace(this,I),e(t[4]),this;if(t=/^\s*(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(o))return this.r=Math.min(100,parseInt(t[1],10))/100,this.g=Math.min(100,parseInt(t[2],10))/100,this.b=Math.min(100,parseInt(t[3],10))/100,Yi.toWorkingColorSpace(this,I),e(t[4]),this;break;case"hsl":case"hsla":if(t=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)\%\s*,\s*(\d*\.?\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(o)){let B=parseFloat(t[1])/360,a=parseFloat(t[2])/100,s=parseFloat(t[3])/100;return e(t[4]),this.setHSL(B,a,s,I)}break}}else if(i=/^\#([A-Fa-f\d]+)$/.exec(A)){let t=i[1],C=t.length;if(C===3)return this.r=parseInt(t.charAt(0)+t.charAt(0),16)/255,this.g=parseInt(t.charAt(1)+t.charAt(1),16)/255,this.b=parseInt(t.charAt(2)+t.charAt(2),16)/255,Yi.toWorkingColorSpace(this,I),this;if(C===6)return this.r=parseInt(t.charAt(0)+t.charAt(1),16)/255,this.g=parseInt(t.charAt(2)+t.charAt(3),16)/255,this.b=parseInt(t.charAt(4)+t.charAt(5),16)/255,Yi.toWorkingColorSpace(this,I),this}return A&&A.length>0?this.setColorName(A,I):this}setColorName(A,I=ao){let e=RN[A.toLowerCase()];return e!==void 0?this.setHex(e,I):console.warn("THREE.Color: Unknown color "+A),this}clone(){return new this.constructor(this.r,this.g,this.b)}copy(A){return this.r=A.r,this.g=A.g,this.b=A.b,this}copySRGBToLinear(A){return this.r=fr(A.r),this.g=fr(A.g),this.b=fr(A.b),this}copyLinearToSRGB(A){return this.r=Wl(A.r),this.g=Wl(A.g),this.b=Wl(A.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(A=ao){return Yi.fromWorkingColorSpace(Mh(this,$e),A),ii($e.r*255,0,255)<<16^ii($e.g*255,0,255)<<8^ii($e.b*255,0,255)<<0}getHexString(A=ao){return("000000"+this.getHex(A).toString(16)).slice(-6)}getHSL(A,I=Yi.workingColorSpace){Yi.fromWorkingColorSpace(Mh(this,$e),I);let e=$e.r,i=$e.g,t=$e.b,C=Math.max(e,i,t),o=Math.min(e,i,t),B,a,s=(o+C)/2;if(o===C)B=0,a=0;else{let r=C-o;switch(a=s<=.5?r/(C+o):r/(2-C-o),C){case e:B=(i-t)/r+(i"u")return g.src;let A;if(g instanceof HTMLCanvasElement)A=g;else{Qs===void 0&&(Qs=Dc("canvas")),Qs.width=g.width,Qs.height=g.height;let I=Qs.getContext("2d");g instanceof ImageData?I.putImageData(g,0,0):I.drawImage(g,0,0,g.width,g.height),A=Qs}return A.width>2048||A.height>2048?(console.warn("THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons",g),A.toDataURL("image/jpeg",.6)):A.toDataURL("image/png")}static sRGBToLinear(g){if(typeof HTMLImageElement<"u"&&g instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&g instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&g instanceof ImageBitmap){let A=Dc("canvas");A.width=g.width,A.height=g.height;let I=A.getContext("2d");I.drawImage(g,0,0,g.width,g.height);let e=I.getImageData(0,0,g.width,g.height),i=e.data;for(let t=0;t0&&(e.userData=this.userData),I||(A.textures[this.uuid]=e),e}dispose(){this.dispatchEvent({type:"dispose"})}transformUv(A){if(this.mapping!==fN)return A;if(A.applyMatrix3(this.matrix),A.x<0||A.x>1)switch(this.wrapS){case hB:A.x=A.x-Math.floor(A.x);break;case Ke:A.x=A.x<0?0:1;break;case Yp:Math.abs(Math.floor(A.x)%2)===1?A.x=Math.ceil(A.x)-A.x:A.x=A.x-Math.floor(A.x);break}if(A.y<0||A.y>1)switch(this.wrapT){case hB:A.y=A.y-Math.floor(A.y);break;case Ke:A.y=A.y<0?0:1;break;case Yp:Math.abs(Math.floor(A.y)%2)===1?A.y=Math.ceil(A.y)-A.y:A.y=A.y-Math.floor(A.y);break}return this.flipY&&(A.y=1-A.y),A}set needsUpdate(A){A===!0&&(this.version++,this.source.needsUpdate=!0)}};ti.DEFAULT_IMAGE=null;ti.DEFAULT_MAPPING=fN;ti.DEFAULT_ANISOTROPY=1;var EI=class{constructor(A=0,I=0,e=0,i=1){EI.prototype.isVector4=!0,this.x=A,this.y=I,this.z=e,this.w=i}get width(){return this.z}set width(A){this.z=A}get height(){return this.w}set height(A){this.w=A}set(A,I,e,i){return this.x=A,this.y=I,this.z=e,this.w=i,this}setScalar(A){return this.x=A,this.y=A,this.z=A,this.w=A,this}setX(A){return this.x=A,this}setY(A){return this.y=A,this}setZ(A){return this.z=A,this}setW(A){return this.w=A,this}setComponent(A,I){switch(A){case 0:this.x=I;break;case 1:this.y=I;break;case 2:this.z=I;break;case 3:this.w=I;break;default:throw new Error("index is out of range: "+A)}return this}getComponent(A){switch(A){case 0:return this.x;case 1:return this.y;case 2:return this.z;case 3:return this.w;default:throw new Error("index is out of range: "+A)}}clone(){return new this.constructor(this.x,this.y,this.z,this.w)}copy(A){return this.x=A.x,this.y=A.y,this.z=A.z,this.w=A.w!==void 0?A.w:1,this}add(A){return this.x+=A.x,this.y+=A.y,this.z+=A.z,this.w+=A.w,this}addScalar(A){return this.x+=A,this.y+=A,this.z+=A,this.w+=A,this}addVectors(A,I){return this.x=A.x+I.x,this.y=A.y+I.y,this.z=A.z+I.z,this.w=A.w+I.w,this}addScaledVector(A,I){return this.x+=A.x*I,this.y+=A.y*I,this.z+=A.z*I,this.w+=A.w*I,this}sub(A){return this.x-=A.x,this.y-=A.y,this.z-=A.z,this.w-=A.w,this}subScalar(A){return this.x-=A,this.y-=A,this.z-=A,this.w-=A,this}subVectors(A,I){return this.x=A.x-I.x,this.y=A.y-I.y,this.z=A.z-I.z,this.w=A.w-I.w,this}multiply(A){return this.x*=A.x,this.y*=A.y,this.z*=A.z,this.w*=A.w,this}multiplyScalar(A){return this.x*=A,this.y*=A,this.z*=A,this.w*=A,this}applyMatrix4(A){let I=this.x,e=this.y,i=this.z,t=this.w,C=A.elements;return this.x=C[0]*I+C[4]*e+C[8]*i+C[12]*t,this.y=C[1]*I+C[5]*e+C[9]*i+C[13]*t,this.z=C[2]*I+C[6]*e+C[10]*i+C[14]*t,this.w=C[3]*I+C[7]*e+C[11]*i+C[15]*t,this}divideScalar(A){return this.multiplyScalar(1/A)}setAxisAngleFromQuaternion(A){this.w=2*Math.acos(A.w);let I=Math.sqrt(1-A.w*A.w);return I<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=A.x/I,this.y=A.y/I,this.z=A.z/I),this}setAxisAngleFromRotationMatrix(A){let I,e,i,t,C=A.elements,o=C[0],B=C[4],a=C[8],s=C[1],r=C[5],Q=C[9],E=C[2],n=C[6],h=C[10];if(Math.abs(B-s)<.01&&Math.abs(a-E)<.01&&Math.abs(Q-n)<.01){if(Math.abs(B+s)<.1&&Math.abs(a+E)<.1&&Math.abs(Q+n)<.1&&Math.abs(o+r+h-3)<.1)return this.set(1,0,0,0),this;I=Math.PI;let c=(o+1)/2,d=(r+1)/2,u=(h+1)/2,y=(B+s)/4,f=(a+E)/4,k=(Q+n)/4;return c>d&&c>u?c<.01?(e=0,i=.707106781,t=.707106781):(e=Math.sqrt(c),i=y/e,t=f/e):d>u?d<.01?(e=.707106781,i=0,t=.707106781):(i=Math.sqrt(d),e=y/i,t=k/i):u<.01?(e=.707106781,i=.707106781,t=0):(t=Math.sqrt(u),e=f/t,i=k/t),this.set(e,i,t,I),this}let l=Math.sqrt((n-Q)*(n-Q)+(a-E)*(a-E)+(s-B)*(s-B));return Math.abs(l)<.001&&(l=1),this.x=(n-Q)/l,this.y=(a-E)/l,this.z=(s-B)/l,this.w=Math.acos((o+r+h-1)/2),this}min(A){return this.x=Math.min(this.x,A.x),this.y=Math.min(this.y,A.y),this.z=Math.min(this.z,A.z),this.w=Math.min(this.w,A.w),this}max(A){return this.x=Math.max(this.x,A.x),this.y=Math.max(this.y,A.y),this.z=Math.max(this.z,A.z),this.w=Math.max(this.w,A.w),this}clamp(A,I){return this.x=Math.max(A.x,Math.min(I.x,this.x)),this.y=Math.max(A.y,Math.min(I.y,this.y)),this.z=Math.max(A.z,Math.min(I.z,this.z)),this.w=Math.max(A.w,Math.min(I.w,this.w)),this}clampScalar(A,I){return this.x=Math.max(A,Math.min(I,this.x)),this.y=Math.max(A,Math.min(I,this.y)),this.z=Math.max(A,Math.min(I,this.z)),this.w=Math.max(A,Math.min(I,this.w)),this}clampLength(A,I){let e=this.length();return this.divideScalar(e||1).multiplyScalar(Math.max(A,Math.min(I,e)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this.w=Math.floor(this.w),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this.w=Math.ceil(this.w),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this.w=Math.round(this.w),this}roundToZero(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this.z=this.z<0?Math.ceil(this.z):Math.floor(this.z),this.w=this.w<0?Math.ceil(this.w):Math.floor(this.w),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this.w=-this.w,this}dot(A){return this.x*A.x+this.y*A.y+this.z*A.z+this.w*A.w}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)+Math.abs(this.w)}normalize(){return this.divideScalar(this.length()||1)}setLength(A){return this.normalize().multiplyScalar(A)}lerp(A,I){return this.x+=(A.x-this.x)*I,this.y+=(A.y-this.y)*I,this.z+=(A.z-this.z)*I,this.w+=(A.w-this.w)*I,this}lerpVectors(A,I,e){return this.x=A.x+(I.x-A.x)*e,this.y=A.y+(I.y-A.y)*e,this.z=A.z+(I.z-A.z)*e,this.w=A.w+(I.w-A.w)*e,this}equals(A){return A.x===this.x&&A.y===this.y&&A.z===this.z&&A.w===this.w}fromArray(A,I=0){return this.x=A[I],this.y=A[I+1],this.z=A[I+2],this.w=A[I+3],this}toArray(A=[],I=0){return A[I]=this.x,A[I+1]=this.y,A[I+2]=this.z,A[I+3]=this.w,A}fromBufferAttribute(A,I){return this.x=A.getX(I),this.y=A.getY(I),this.z=A.getZ(I),this.w=A.getW(I),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this.w=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z,yield this.w}},WI=class extends Si{constructor(A=1,I=1,e={}){super(),this.isWebGLRenderTarget=!0,this.width=A,this.height=I,this.depth=1,this.scissor=new EI(0,0,A,I),this.scissorTest=!1,this.viewport=new EI(0,0,A,I);let i={width:A,height:I,depth:1};this.texture=new ti(i,e.mapping,e.wrapS,e.wrapT,e.magFilter,e.minFilter,e.format,e.type,e.anisotropy,e.encoding),this.texture.isRenderTargetTexture=!0,this.texture.flipY=!1,this.texture.generateMipmaps=e.generateMipmaps!==void 0?e.generateMipmaps:!1,this.texture.internalFormat=e.internalFormat!==void 0?e.internalFormat:null,this.texture.minFilter=e.minFilter!==void 0?e.minFilter:cI,this.depthBuffer=e.depthBuffer!==void 0?e.depthBuffer:!0,this.stencilBuffer=e.stencilBuffer!==void 0?e.stencilBuffer:!1,this.depthTexture=e.depthTexture!==void 0?e.depthTexture:null,this.samples=e.samples!==void 0?e.samples:0}setSize(A,I,e=1){(this.width!==A||this.height!==I||this.depth!==e)&&(this.width=A,this.height=I,this.depth=e,this.texture.image.width=A,this.texture.image.height=I,this.texture.image.depth=e,this.dispose()),this.viewport.set(0,0,A,I),this.scissor.set(0,0,A,I)}clone(){return new this.constructor().copy(this)}copy(A){this.width=A.width,this.height=A.height,this.depth=A.depth,this.viewport.copy(A.viewport),this.texture=A.texture.clone(),this.texture.isRenderTargetTexture=!0;let I=Object.assign({},A.texture.image);return this.texture.source=new JN(I),this.depthBuffer=A.depthBuffer,this.stencilBuffer=A.stencilBuffer,A.depthTexture!==null&&(this.depthTexture=A.depthTexture.clone()),this.samples=A.samples,this}dispose(){this.dispatchEvent({type:"dispose"})}},vN=class extends ti{constructor(g=null,A=1,I=1,e=1){super(null),this.isDataArrayTexture=!0,this.image={data:g,width:A,height:I,depth:e},this.magFilter=ie,this.minFilter=ie,this.wrapR=Ke,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}},qL=class extends ti{constructor(g=null,A=1,I=1,e=1){super(null),this.isData3DTexture=!0,this.image={data:g,width:A,height:I,depth:e},this.magFilter=ie,this.minFilter=ie,this.wrapR=Ke,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}},LL=class extends WI{constructor(g=1,A=1,I=1,e={}){super(g,A,e),this.isWebGLMultipleRenderTargets=!0;let i=this.texture;this.texture=[];for(let t=0;t=0?1:-1,u=1-c*c;if(u>Number.EPSILON){let f=Math.sqrt(u),k=Math.atan2(f,c*d);l=Math.sin(l*k)/f,o=Math.sin(o*k)/f}let y=o*d;if(B=B*l+Q*y,a=a*l+E*y,s=s*l+n*y,r=r*l+h*y,l===1-o){let f=1/Math.sqrt(B*B+a*a+s*s+r*r);B*=f,a*=f,s*=f,r*=f}}A[I]=B,A[I+1]=a,A[I+2]=s,A[I+3]=r}static multiplyQuaternionsFlat(A,I,e,i,t,C){let o=e[i],B=e[i+1],a=e[i+2],s=e[i+3],r=t[C],Q=t[C+1],E=t[C+2],n=t[C+3];return A[I]=o*n+s*r+B*E-a*Q,A[I+1]=B*n+s*Q+a*r-o*E,A[I+2]=a*n+s*E+o*Q-B*r,A[I+3]=s*n-o*r-B*Q-a*E,A}get x(){return this._x}set x(A){this._x=A,this._onChangeCallback()}get y(){return this._y}set y(A){this._y=A,this._onChangeCallback()}get z(){return this._z}set z(A){this._z=A,this._onChangeCallback()}get w(){return this._w}set w(A){this._w=A,this._onChangeCallback()}set(A,I,e,i){return this._x=A,this._y=I,this._z=e,this._w=i,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._w)}copy(A){return this._x=A.x,this._y=A.y,this._z=A.z,this._w=A.w,this._onChangeCallback(),this}setFromEuler(A,I){let e=A._x,i=A._y,t=A._z,C=A._order,o=Math.cos,B=Math.sin,a=o(e/2),s=o(i/2),r=o(t/2),Q=B(e/2),E=B(i/2),n=B(t/2);switch(C){case"XYZ":this._x=Q*s*r+a*E*n,this._y=a*E*r-Q*s*n,this._z=a*s*n+Q*E*r,this._w=a*s*r-Q*E*n;break;case"YXZ":this._x=Q*s*r+a*E*n,this._y=a*E*r-Q*s*n,this._z=a*s*n-Q*E*r,this._w=a*s*r+Q*E*n;break;case"ZXY":this._x=Q*s*r-a*E*n,this._y=a*E*r+Q*s*n,this._z=a*s*n+Q*E*r,this._w=a*s*r-Q*E*n;break;case"ZYX":this._x=Q*s*r-a*E*n,this._y=a*E*r+Q*s*n,this._z=a*s*n-Q*E*r,this._w=a*s*r+Q*E*n;break;case"YZX":this._x=Q*s*r+a*E*n,this._y=a*E*r+Q*s*n,this._z=a*s*n-Q*E*r,this._w=a*s*r-Q*E*n;break;case"XZY":this._x=Q*s*r-a*E*n,this._y=a*E*r-Q*s*n,this._z=a*s*n+Q*E*r,this._w=a*s*r+Q*E*n;break;default:console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: "+C)}return I!==!1&&this._onChangeCallback(),this}setFromAxisAngle(A,I){let e=I/2,i=Math.sin(e);return this._x=A.x*i,this._y=A.y*i,this._z=A.z*i,this._w=Math.cos(e),this._onChangeCallback(),this}setFromRotationMatrix(A){let I=A.elements,e=I[0],i=I[4],t=I[8],C=I[1],o=I[5],B=I[9],a=I[2],s=I[6],r=I[10],Q=e+o+r;if(Q>0){let E=.5/Math.sqrt(Q+1);this._w=.25/E,this._x=(s-B)*E,this._y=(t-a)*E,this._z=(C-i)*E}else if(e>o&&e>r){let E=2*Math.sqrt(1+e-o-r);this._w=(s-B)/E,this._x=.25*E,this._y=(i+C)/E,this._z=(t+a)/E}else if(o>r){let E=2*Math.sqrt(1+o-e-r);this._w=(t-a)/E,this._x=(i+C)/E,this._y=.25*E,this._z=(B+s)/E}else{let E=2*Math.sqrt(1+r-e-o);this._w=(C-i)/E,this._x=(t+a)/E,this._y=(B+s)/E,this._z=.25*E}return this._onChangeCallback(),this}setFromUnitVectors(A,I){let e=A.dot(I)+1;return eMath.abs(A.z)?(this._x=-A.y,this._y=A.x,this._z=0,this._w=e):(this._x=0,this._y=-A.z,this._z=A.y,this._w=e)):(this._x=A.y*I.z-A.z*I.y,this._y=A.z*I.x-A.x*I.z,this._z=A.x*I.y-A.y*I.x,this._w=e),this.normalize()}angleTo(A){return 2*Math.acos(Math.abs(ii(this.dot(A),-1,1)))}rotateTowards(A,I){let e=this.angleTo(A);if(e===0)return this;let i=Math.min(1,I/e);return this.slerp(A,i),this}identity(){return this.set(0,0,0,1)}invert(){return this.conjugate()}conjugate(){return this._x*=-1,this._y*=-1,this._z*=-1,this._onChangeCallback(),this}dot(A){return this._x*A._x+this._y*A._y+this._z*A._z+this._w*A._w}lengthSq(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w}length(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)}normalize(){let A=this.length();return A===0?(this._x=0,this._y=0,this._z=0,this._w=1):(A=1/A,this._x=this._x*A,this._y=this._y*A,this._z=this._z*A,this._w=this._w*A),this._onChangeCallback(),this}multiply(A){return this.multiplyQuaternions(this,A)}premultiply(A){return this.multiplyQuaternions(A,this)}multiplyQuaternions(A,I){let e=A._x,i=A._y,t=A._z,C=A._w,o=I._x,B=I._y,a=I._z,s=I._w;return this._x=e*s+C*o+i*a-t*B,this._y=i*s+C*B+t*o-e*a,this._z=t*s+C*a+e*B-i*o,this._w=C*s-e*o-i*B-t*a,this._onChangeCallback(),this}slerp(A,I){if(I===0)return this;if(I===1)return this.copy(A);let e=this._x,i=this._y,t=this._z,C=this._w,o=C*A._w+e*A._x+i*A._y+t*A._z;if(o<0?(this._w=-A._w,this._x=-A._x,this._y=-A._y,this._z=-A._z,o=-o):this.copy(A),o>=1)return this._w=C,this._x=e,this._y=i,this._z=t,this;let B=1-o*o;if(B<=Number.EPSILON){let E=1-I;return this._w=E*C+I*this._w,this._x=E*e+I*this._x,this._y=E*i+I*this._y,this._z=E*t+I*this._z,this.normalize(),this._onChangeCallback(),this}let a=Math.sqrt(B),s=Math.atan2(a,o),r=Math.sin((1-I)*s)/a,Q=Math.sin(I*s)/a;return this._w=C*r+this._w*Q,this._x=e*r+this._x*Q,this._y=i*r+this._y*Q,this._z=t*r+this._z*Q,this._onChangeCallback(),this}slerpQuaternions(A,I,e){return this.copy(A).slerp(I,e)}random(){let A=Math.random(),I=Math.sqrt(1-A),e=Math.sqrt(A),i=2*Math.PI*Math.random(),t=2*Math.PI*Math.random();return this.set(I*Math.cos(i),e*Math.sin(t),e*Math.cos(t),I*Math.sin(i))}equals(A){return A._x===this._x&&A._y===this._y&&A._z===this._z&&A._w===this._w}fromArray(A,I=0){return this._x=A[I],this._y=A[I+1],this._z=A[I+2],this._w=A[I+3],this._onChangeCallback(),this}toArray(A=[],I=0){return A[I]=this._x,A[I+1]=this._y,A[I+2]=this._z,A[I+3]=this._w,A}fromBufferAttribute(A,I){return this._x=A.getX(I),this._y=A.getY(I),this._z=A.getZ(I),this._w=A.getW(I),this}_onChange(A){return this._onChangeCallback=A,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._w}},J=class{constructor(A=0,I=0,e=0){J.prototype.isVector3=!0,this.x=A,this.y=I,this.z=e}set(A,I,e){return e===void 0&&(e=this.z),this.x=A,this.y=I,this.z=e,this}setScalar(A){return this.x=A,this.y=A,this.z=A,this}setX(A){return this.x=A,this}setY(A){return this.y=A,this}setZ(A){return this.z=A,this}setComponent(A,I){switch(A){case 0:this.x=I;break;case 1:this.y=I;break;case 2:this.z=I;break;default:throw new Error("index is out of range: "+A)}return this}getComponent(A){switch(A){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+A)}}clone(){return new this.constructor(this.x,this.y,this.z)}copy(A){return this.x=A.x,this.y=A.y,this.z=A.z,this}add(A){return this.x+=A.x,this.y+=A.y,this.z+=A.z,this}addScalar(A){return this.x+=A,this.y+=A,this.z+=A,this}addVectors(A,I){return this.x=A.x+I.x,this.y=A.y+I.y,this.z=A.z+I.z,this}addScaledVector(A,I){return this.x+=A.x*I,this.y+=A.y*I,this.z+=A.z*I,this}sub(A){return this.x-=A.x,this.y-=A.y,this.z-=A.z,this}subScalar(A){return this.x-=A,this.y-=A,this.z-=A,this}subVectors(A,I){return this.x=A.x-I.x,this.y=A.y-I.y,this.z=A.z-I.z,this}multiply(A){return this.x*=A.x,this.y*=A.y,this.z*=A.z,this}multiplyScalar(A){return this.x*=A,this.y*=A,this.z*=A,this}multiplyVectors(A,I){return this.x=A.x*I.x,this.y=A.y*I.y,this.z=A.z*I.z,this}applyEuler(A){return this.applyQuaternion(qf.setFromEuler(A))}applyAxisAngle(A,I){return this.applyQuaternion(qf.setFromAxisAngle(A,I))}applyMatrix3(A){let I=this.x,e=this.y,i=this.z,t=A.elements;return this.x=t[0]*I+t[3]*e+t[6]*i,this.y=t[1]*I+t[4]*e+t[7]*i,this.z=t[2]*I+t[5]*e+t[8]*i,this}applyNormalMatrix(A){return this.applyMatrix3(A).normalize()}applyMatrix4(A){let I=this.x,e=this.y,i=this.z,t=A.elements,C=1/(t[3]*I+t[7]*e+t[11]*i+t[15]);return this.x=(t[0]*I+t[4]*e+t[8]*i+t[12])*C,this.y=(t[1]*I+t[5]*e+t[9]*i+t[13])*C,this.z=(t[2]*I+t[6]*e+t[10]*i+t[14])*C,this}applyQuaternion(A){let I=this.x,e=this.y,i=this.z,t=A.x,C=A.y,o=A.z,B=A.w,a=B*I+C*i-o*e,s=B*e+o*I-t*i,r=B*i+t*e-C*I,Q=-t*I-C*e-o*i;return this.x=a*B+Q*-t+s*-o-r*-C,this.y=s*B+Q*-C+r*-t-a*-o,this.z=r*B+Q*-o+a*-C-s*-t,this}project(A){return this.applyMatrix4(A.matrixWorldInverse).applyMatrix4(A.projectionMatrix)}unproject(A){return this.applyMatrix4(A.projectionMatrixInverse).applyMatrix4(A.matrixWorld)}transformDirection(A){let I=this.x,e=this.y,i=this.z,t=A.elements;return this.x=t[0]*I+t[4]*e+t[8]*i,this.y=t[1]*I+t[5]*e+t[9]*i,this.z=t[2]*I+t[6]*e+t[10]*i,this.normalize()}divide(A){return this.x/=A.x,this.y/=A.y,this.z/=A.z,this}divideScalar(A){return this.multiplyScalar(1/A)}min(A){return this.x=Math.min(this.x,A.x),this.y=Math.min(this.y,A.y),this.z=Math.min(this.z,A.z),this}max(A){return this.x=Math.max(this.x,A.x),this.y=Math.max(this.y,A.y),this.z=Math.max(this.z,A.z),this}clamp(A,I){return this.x=Math.max(A.x,Math.min(I.x,this.x)),this.y=Math.max(A.y,Math.min(I.y,this.y)),this.z=Math.max(A.z,Math.min(I.z,this.z)),this}clampScalar(A,I){return this.x=Math.max(A,Math.min(I,this.x)),this.y=Math.max(A,Math.min(I,this.y)),this.z=Math.max(A,Math.min(I,this.z)),this}clampLength(A,I){let e=this.length();return this.divideScalar(e||1).multiplyScalar(Math.max(A,Math.min(I,e)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this}roundToZero(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this.z=this.z<0?Math.ceil(this.z):Math.floor(this.z),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}dot(A){return this.x*A.x+this.y*A.y+this.z*A.z}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}normalize(){return this.divideScalar(this.length()||1)}setLength(A){return this.normalize().multiplyScalar(A)}lerp(A,I){return this.x+=(A.x-this.x)*I,this.y+=(A.y-this.y)*I,this.z+=(A.z-this.z)*I,this}lerpVectors(A,I,e){return this.x=A.x+(I.x-A.x)*e,this.y=A.y+(I.y-A.y)*e,this.z=A.z+(I.z-A.z)*e,this}cross(A){return this.crossVectors(this,A)}crossVectors(A,I){let e=A.x,i=A.y,t=A.z,C=I.x,o=I.y,B=I.z;return this.x=i*B-t*o,this.y=t*C-e*B,this.z=e*o-i*C,this}projectOnVector(A){let I=A.lengthSq();if(I===0)return this.set(0,0,0);let e=A.dot(this)/I;return this.copy(A).multiplyScalar(e)}projectOnPlane(A){return xd.copy(this).projectOnVector(A),this.sub(xd)}reflect(A){return this.sub(xd.copy(A).multiplyScalar(2*this.dot(A)))}angleTo(A){let I=Math.sqrt(this.lengthSq()*A.lengthSq());if(I===0)return Math.PI/2;let e=this.dot(A)/I;return Math.acos(ii(e,-1,1))}distanceTo(A){return Math.sqrt(this.distanceToSquared(A))}distanceToSquared(A){let I=this.x-A.x,e=this.y-A.y,i=this.z-A.z;return I*I+e*e+i*i}manhattanDistanceTo(A){return Math.abs(this.x-A.x)+Math.abs(this.y-A.y)+Math.abs(this.z-A.z)}setFromSpherical(A){return this.setFromSphericalCoords(A.radius,A.phi,A.theta)}setFromSphericalCoords(A,I,e){let i=Math.sin(I)*A;return this.x=i*Math.sin(e),this.y=Math.cos(I)*A,this.z=i*Math.cos(e),this}setFromCylindrical(A){return this.setFromCylindricalCoords(A.radius,A.theta,A.y)}setFromCylindricalCoords(A,I,e){return this.x=A*Math.sin(I),this.y=e,this.z=A*Math.cos(I),this}setFromMatrixPosition(A){let I=A.elements;return this.x=I[12],this.y=I[13],this.z=I[14],this}setFromMatrixScale(A){let I=this.setFromMatrixColumn(A,0).length(),e=this.setFromMatrixColumn(A,1).length(),i=this.setFromMatrixColumn(A,2).length();return this.x=I,this.y=e,this.z=i,this}setFromMatrixColumn(A,I){return this.fromArray(A.elements,I*4)}setFromMatrix3Column(A,I){return this.fromArray(A.elements,I*3)}setFromEuler(A){return this.x=A._x,this.y=A._y,this.z=A._z,this}equals(A){return A.x===this.x&&A.y===this.y&&A.z===this.z}fromArray(A,I=0){return this.x=A[I],this.y=A[I+1],this.z=A[I+2],this}toArray(A=[],I=0){return A[I]=this.x,A[I+1]=this.y,A[I+2]=this.z,A}fromBufferAttribute(A,I){return this.x=A.getX(I),this.y=A.getY(I),this.z=A.getZ(I),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){let A=(Math.random()-.5)*2,I=Math.random()*Math.PI*2,e=Math.sqrt(1-A**2);return this.x=e*Math.cos(I),this.y=e*Math.sin(I),this.z=A,this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}},xd=new J,qf=new QI,ve=class{constructor(A=new J(1/0,1/0,1/0),I=new J(-1/0,-1/0,-1/0)){this.isBox3=!0,this.min=A,this.max=I}set(A,I){return this.min.copy(A),this.max.copy(I),this}setFromArray(A){let I=1/0,e=1/0,i=1/0,t=-1/0,C=-1/0,o=-1/0;for(let B=0,a=A.length;Bt&&(t=s),r>C&&(C=r),Q>o&&(o=Q)}return this.min.set(I,e,i),this.max.set(t,C,o),this}setFromBufferAttribute(A){let I=1/0,e=1/0,i=1/0,t=-1/0,C=-1/0,o=-1/0;for(let B=0,a=A.count;Bt&&(t=s),r>C&&(C=r),Q>o&&(o=Q)}return this.min.set(I,e,i),this.max.set(t,C,o),this}setFromPoints(A){this.makeEmpty();for(let I=0,e=A.length;Ithis.max.x||A.ythis.max.y||A.zthis.max.z)}containsBox(A){return this.min.x<=A.min.x&&A.max.x<=this.max.x&&this.min.y<=A.min.y&&A.max.y<=this.max.y&&this.min.z<=A.min.z&&A.max.z<=this.max.z}getParameter(A,I){return I.set((A.x-this.min.x)/(this.max.x-this.min.x),(A.y-this.min.y)/(this.max.y-this.min.y),(A.z-this.min.z)/(this.max.z-this.min.z))}intersectsBox(A){return!(A.max.xthis.max.x||A.max.ythis.max.y||A.max.zthis.max.z)}intersectsSphere(A){return this.clampPoint(A.center,Va),Va.distanceToSquared(A.center)<=A.radius*A.radius}intersectsPlane(A){let I,e;return A.normal.x>0?(I=A.normal.x*this.min.x,e=A.normal.x*this.max.x):(I=A.normal.x*this.max.x,e=A.normal.x*this.min.x),A.normal.y>0?(I+=A.normal.y*this.min.y,e+=A.normal.y*this.max.y):(I+=A.normal.y*this.max.y,e+=A.normal.y*this.min.y),A.normal.z>0?(I+=A.normal.z*this.min.z,e+=A.normal.z*this.max.z):(I+=A.normal.z*this.max.z,e+=A.normal.z*this.min.z),I<=-A.constant&&e>=-A.constant}intersectsTriangle(A){if(this.isEmpty())return!1;this.getCenter(DE),mh.subVectors(this.max,DE),Es.subVectors(A.a,DE),ns.subVectors(A.b,DE),hs.subVectors(A.c,DE),bB.subVectors(ns,Es),YB.subVectors(hs,ns),za.subVectors(Es,hs);let I=[0,-bB.z,bB.y,0,-YB.z,YB.y,0,-za.z,za.y,bB.z,0,-bB.x,YB.z,0,-YB.x,za.z,0,-za.x,-bB.y,bB.x,0,-YB.y,YB.x,0,-za.y,za.x,0];return!Td(I,Es,ns,hs,mh)||(I=[1,0,0,0,1,0,0,0,1],!Td(I,Es,ns,hs,mh))?!1:(Uh.crossVectors(bB,YB),I=[Uh.x,Uh.y,Uh.z],Td(I,Es,ns,hs,mh))}clampPoint(A,I){return I.copy(A).clamp(this.min,this.max)}distanceToPoint(A){return Va.copy(A).clamp(this.min,this.max).sub(A).length()}getBoundingSphere(A){return this.getCenter(A.center),A.radius=this.getSize(Va).length()*.5,A}intersect(A){return this.min.max(A.min),this.max.min(A.max),this.isEmpty()&&this.makeEmpty(),this}union(A){return this.min.min(A.min),this.max.max(A.max),this}applyMatrix4(A){return this.isEmpty()?this:(Zo[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(A),Zo[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(A),Zo[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(A),Zo[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(A),Zo[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(A),Zo[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(A),Zo[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(A),Zo[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(A),this.setFromPoints(Zo),this)}translate(A){return this.min.add(A),this.max.add(A),this}equals(A){return A.min.equals(this.min)&&A.max.equals(this.max)}},Zo=[new J,new J,new J,new J,new J,new J,new J,new J],Va=new J,Hd=new ve,Es=new J,ns=new J,hs=new J,bB=new J,YB=new J,za=new J,DE=new J,mh=new J,Uh=new J,Xa=new J;function Td(g,A,I,e,i){for(let t=0,C=g.length-3;t<=C;t+=3){Xa.fromArray(g,t);let o=i.x*Math.abs(Xa.x)+i.y*Math.abs(Xa.y)+i.z*Math.abs(Xa.z),B=A.dot(Xa),a=I.dot(Xa),s=e.dot(Xa);if(Math.max(-Math.max(B,a,s),Math.min(B,a,s))>o)return!1}return!0}var bL=new ve,dE=new J,Od=new J,ct=class{constructor(A=new J,I=-1){this.center=A,this.radius=I}set(A,I){return this.center.copy(A),this.radius=I,this}setFromPoints(A,I){let e=this.center;I!==void 0?e.copy(I):bL.setFromPoints(A).getCenter(e);let i=0;for(let t=0,C=A.length;tthis.radius*this.radius&&(I.sub(this.center).normalize(),I.multiplyScalar(this.radius).add(this.center)),I}getBoundingBox(A){return this.isEmpty()?(A.makeEmpty(),A):(A.set(this.center,this.center),A.expandByScalar(this.radius),A)}applyMatrix4(A){return this.center.applyMatrix4(A),this.radius=this.radius*A.getMaxScaleOnAxis(),this}translate(A){return this.center.add(A),this}expandByPoint(A){if(this.isEmpty())return this.center.copy(A),this.radius=0,this;dE.subVectors(A,this.center);let I=dE.lengthSq();if(I>this.radius*this.radius){let e=Math.sqrt(I),i=(e-this.radius)*.5;this.center.addScaledVector(dE,i/e),this.radius+=i}return this}union(A){return A.isEmpty()?this:this.isEmpty()?(this.copy(A),this):(this.center.equals(A.center)===!0?this.radius=Math.max(this.radius,A.radius):(Od.subVectors(A.center,this.center).setLength(A.radius),this.expandByPoint(dE.copy(A.center).add(Od)),this.expandByPoint(dE.copy(A.center).sub(Od))),this)}equals(A){return A.center.equals(this.center)&&A.radius===this.radius}clone(){return new this.constructor().copy(this)}},Vo=new J,_d=new J,Nh=new J,xB=new J,Pd=new J,Fh=new J,jd=new J,jQ=class{constructor(A=new J,I=new J(0,0,-1)){this.origin=A,this.direction=I}set(A,I){return this.origin.copy(A),this.direction.copy(I),this}copy(A){return this.origin.copy(A.origin),this.direction.copy(A.direction),this}at(A,I){return I.copy(this.direction).multiplyScalar(A).add(this.origin)}lookAt(A){return this.direction.copy(A).sub(this.origin).normalize(),this}recast(A){return this.origin.copy(this.at(A,Vo)),this}closestPointToPoint(A,I){I.subVectors(A,this.origin);let e=I.dot(this.direction);return e<0?I.copy(this.origin):I.copy(this.direction).multiplyScalar(e).add(this.origin)}distanceToPoint(A){return Math.sqrt(this.distanceSqToPoint(A))}distanceSqToPoint(A){let I=Vo.subVectors(A,this.origin).dot(this.direction);return I<0?this.origin.distanceToSquared(A):(Vo.copy(this.direction).multiplyScalar(I).add(this.origin),Vo.distanceToSquared(A))}distanceSqToSegment(A,I,e,i){_d.copy(A).add(I).multiplyScalar(.5),Nh.copy(I).sub(A).normalize(),xB.copy(this.origin).sub(_d);let t=A.distanceTo(I)*.5,C=-this.direction.dot(Nh),o=xB.dot(this.direction),B=-xB.dot(Nh),a=xB.lengthSq(),s=Math.abs(1-C*C),r,Q,E,n;if(s>0)if(r=C*B-o,Q=C*o-B,n=t*s,r>=0)if(Q>=-n)if(Q<=n){let h=1/s;r*=h,Q*=h,E=r*(r+C*Q+2*o)+Q*(C*r+Q+2*B)+a}else Q=t,r=Math.max(0,-(C*Q+o)),E=-r*r+Q*(Q+2*B)+a;else Q=-t,r=Math.max(0,-(C*Q+o)),E=-r*r+Q*(Q+2*B)+a;else Q<=-n?(r=Math.max(0,-(-C*t+o)),Q=r>0?-t:Math.min(Math.max(-t,-B),t),E=-r*r+Q*(Q+2*B)+a):Q<=n?(r=0,Q=Math.min(Math.max(-t,-B),t),E=Q*(Q+2*B)+a):(r=Math.max(0,-(C*t+o)),Q=r>0?t:Math.min(Math.max(-t,-B),t),E=-r*r+Q*(Q+2*B)+a);else Q=C>0?-t:t,r=Math.max(0,-(C*Q+o)),E=-r*r+Q*(Q+2*B)+a;return e&&e.copy(this.direction).multiplyScalar(r).add(this.origin),i&&i.copy(Nh).multiplyScalar(Q).add(_d),E}intersectSphere(A,I){Vo.subVectors(A.center,this.origin);let e=Vo.dot(this.direction),i=Vo.dot(Vo)-e*e,t=A.radius*A.radius;if(i>t)return null;let C=Math.sqrt(t-i),o=e-C,B=e+C;return o<0&&B<0?null:o<0?this.at(B,I):this.at(o,I)}intersectsSphere(A){return this.distanceSqToPoint(A.center)<=A.radius*A.radius}distanceToPlane(A){let I=A.normal.dot(this.direction);if(I===0)return A.distanceToPoint(this.origin)===0?0:null;let e=-(this.origin.dot(A.normal)+A.constant)/I;return e>=0?e:null}intersectPlane(A,I){let e=this.distanceToPlane(A);return e===null?null:this.at(e,I)}intersectsPlane(A){let I=A.distanceToPoint(this.origin);return I===0||A.normal.dot(this.direction)*I<0}intersectBox(A,I){let e,i,t,C,o,B,a=1/this.direction.x,s=1/this.direction.y,r=1/this.direction.z,Q=this.origin;return a>=0?(e=(A.min.x-Q.x)*a,i=(A.max.x-Q.x)*a):(e=(A.max.x-Q.x)*a,i=(A.min.x-Q.x)*a),s>=0?(t=(A.min.y-Q.y)*s,C=(A.max.y-Q.y)*s):(t=(A.max.y-Q.y)*s,C=(A.min.y-Q.y)*s),e>C||t>i||((t>e||isNaN(e))&&(e=t),(C=0?(o=(A.min.z-Q.z)*r,B=(A.max.z-Q.z)*r):(o=(A.max.z-Q.z)*r,B=(A.min.z-Q.z)*r),e>B||o>i)||((o>e||e!==e)&&(e=o),(B=0?e:i,I)}intersectsBox(A){return this.intersectBox(A,Vo)!==null}intersectTriangle(A,I,e,i,t){Pd.subVectors(I,A),Fh.subVectors(e,A),jd.crossVectors(Pd,Fh);let C=this.direction.dot(jd),o;if(C>0){if(i)return null;o=1}else if(C<0)o=-1,C=-C;else return null;xB.subVectors(this.origin,A);let B=o*this.direction.dot(Fh.crossVectors(xB,Fh));if(B<0)return null;let a=o*this.direction.dot(Pd.cross(xB));if(a<0||B+a>C)return null;let s=-o*xB.dot(jd);return s<0?null:this.at(s/C,t)}applyMatrix4(A){return this.origin.applyMatrix4(A),this.direction.transformDirection(A),this}equals(A){return A.origin.equals(this.origin)&&A.direction.equals(this.direction)}clone(){return new this.constructor().copy(this)}},zA=class{constructor(){zA.prototype.isMatrix4=!0,this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}set(A,I,e,i,t,C,o,B,a,s,r,Q,E,n,h,l){let c=this.elements;return c[0]=A,c[4]=I,c[8]=e,c[12]=i,c[1]=t,c[5]=C,c[9]=o,c[13]=B,c[2]=a,c[6]=s,c[10]=r,c[14]=Q,c[3]=E,c[7]=n,c[11]=h,c[15]=l,this}identity(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this}clone(){return new zA().fromArray(this.elements)}copy(A){let I=this.elements,e=A.elements;return I[0]=e[0],I[1]=e[1],I[2]=e[2],I[3]=e[3],I[4]=e[4],I[5]=e[5],I[6]=e[6],I[7]=e[7],I[8]=e[8],I[9]=e[9],I[10]=e[10],I[11]=e[11],I[12]=e[12],I[13]=e[13],I[14]=e[14],I[15]=e[15],this}copyPosition(A){let I=this.elements,e=A.elements;return I[12]=e[12],I[13]=e[13],I[14]=e[14],this}setFromMatrix3(A){let I=A.elements;return this.set(I[0],I[3],I[6],0,I[1],I[4],I[7],0,I[2],I[5],I[8],0,0,0,0,1),this}extractBasis(A,I,e){return A.setFromMatrixColumn(this,0),I.setFromMatrixColumn(this,1),e.setFromMatrixColumn(this,2),this}makeBasis(A,I,e){return this.set(A.x,I.x,e.x,0,A.y,I.y,e.y,0,A.z,I.z,e.z,0,0,0,0,1),this}extractRotation(A){let I=this.elements,e=A.elements,i=1/ls.setFromMatrixColumn(A,0).length(),t=1/ls.setFromMatrixColumn(A,1).length(),C=1/ls.setFromMatrixColumn(A,2).length();return I[0]=e[0]*i,I[1]=e[1]*i,I[2]=e[2]*i,I[3]=0,I[4]=e[4]*t,I[5]=e[5]*t,I[6]=e[6]*t,I[7]=0,I[8]=e[8]*C,I[9]=e[9]*C,I[10]=e[10]*C,I[11]=0,I[12]=0,I[13]=0,I[14]=0,I[15]=1,this}makeRotationFromEuler(A){let I=this.elements,e=A.x,i=A.y,t=A.z,C=Math.cos(e),o=Math.sin(e),B=Math.cos(i),a=Math.sin(i),s=Math.cos(t),r=Math.sin(t);if(A.order==="XYZ"){let Q=C*s,E=C*r,n=o*s,h=o*r;I[0]=B*s,I[4]=-B*r,I[8]=a,I[1]=E+n*a,I[5]=Q-h*a,I[9]=-o*B,I[2]=h-Q*a,I[6]=n+E*a,I[10]=C*B}else if(A.order==="YXZ"){let Q=B*s,E=B*r,n=a*s,h=a*r;I[0]=Q+h*o,I[4]=n*o-E,I[8]=C*a,I[1]=C*r,I[5]=C*s,I[9]=-o,I[2]=E*o-n,I[6]=h+Q*o,I[10]=C*B}else if(A.order==="ZXY"){let Q=B*s,E=B*r,n=a*s,h=a*r;I[0]=Q-h*o,I[4]=-C*r,I[8]=n+E*o,I[1]=E+n*o,I[5]=C*s,I[9]=h-Q*o,I[2]=-C*a,I[6]=o,I[10]=C*B}else if(A.order==="ZYX"){let Q=C*s,E=C*r,n=o*s,h=o*r;I[0]=B*s,I[4]=n*a-E,I[8]=Q*a+h,I[1]=B*r,I[5]=h*a+Q,I[9]=E*a-n,I[2]=-a,I[6]=o*B,I[10]=C*B}else if(A.order==="YZX"){let Q=C*B,E=C*a,n=o*B,h=o*a;I[0]=B*s,I[4]=h-Q*r,I[8]=n*r+E,I[1]=r,I[5]=C*s,I[9]=-o*s,I[2]=-a*s,I[6]=E*r+n,I[10]=Q-h*r}else if(A.order==="XZY"){let Q=C*B,E=C*a,n=o*B,h=o*a;I[0]=B*s,I[4]=-r,I[8]=a*s,I[1]=Q*r+h,I[5]=C*s,I[9]=E*r-n,I[2]=n*r-E,I[6]=o*s,I[10]=h*r+Q}return I[3]=0,I[7]=0,I[11]=0,I[12]=0,I[13]=0,I[14]=0,I[15]=1,this}makeRotationFromQuaternion(A){return this.compose(YL,A,xL)}lookAt(A,I,e){let i=this.elements;return Gt.subVectors(A,I),Gt.lengthSq()===0&&(Gt.z=1),Gt.normalize(),HB.crossVectors(e,Gt),HB.lengthSq()===0&&(Math.abs(e.z)===1?Gt.x+=1e-4:Gt.z+=1e-4,Gt.normalize(),HB.crossVectors(e,Gt)),HB.normalize(),Rh.crossVectors(Gt,HB),i[0]=HB.x,i[4]=Rh.x,i[8]=Gt.x,i[1]=HB.y,i[5]=Rh.y,i[9]=Gt.y,i[2]=HB.z,i[6]=Rh.z,i[10]=Gt.z,this}multiply(A){return this.multiplyMatrices(this,A)}premultiply(A){return this.multiplyMatrices(A,this)}multiplyMatrices(A,I){let e=A.elements,i=I.elements,t=this.elements,C=e[0],o=e[4],B=e[8],a=e[12],s=e[1],r=e[5],Q=e[9],E=e[13],n=e[2],h=e[6],l=e[10],c=e[14],d=e[3],u=e[7],y=e[11],f=e[15],k=i[0],M=i[4],G=i[8],v=i[12],N=i[1],b=i[5],O=i[9],H=i[13],_=i[2],gA=i[6],CA=i[10],AA=i[14],BA=i[3],iA=i[7],rA=i[11],$=i[15];return t[0]=C*k+o*N+B*_+a*BA,t[4]=C*M+o*b+B*gA+a*iA,t[8]=C*G+o*O+B*CA+a*rA,t[12]=C*v+o*H+B*AA+a*$,t[1]=s*k+r*N+Q*_+E*BA,t[5]=s*M+r*b+Q*gA+E*iA,t[9]=s*G+r*O+Q*CA+E*rA,t[13]=s*v+r*H+Q*AA+E*$,t[2]=n*k+h*N+l*_+c*BA,t[6]=n*M+h*b+l*gA+c*iA,t[10]=n*G+h*O+l*CA+c*rA,t[14]=n*v+h*H+l*AA+c*$,t[3]=d*k+u*N+y*_+f*BA,t[7]=d*M+u*b+y*gA+f*iA,t[11]=d*G+u*O+y*CA+f*rA,t[15]=d*v+u*H+y*AA+f*$,this}multiplyScalar(A){let I=this.elements;return I[0]*=A,I[4]*=A,I[8]*=A,I[12]*=A,I[1]*=A,I[5]*=A,I[9]*=A,I[13]*=A,I[2]*=A,I[6]*=A,I[10]*=A,I[14]*=A,I[3]*=A,I[7]*=A,I[11]*=A,I[15]*=A,this}determinant(){let A=this.elements,I=A[0],e=A[4],i=A[8],t=A[12],C=A[1],o=A[5],B=A[9],a=A[13],s=A[2],r=A[6],Q=A[10],E=A[14],n=A[3],h=A[7],l=A[11],c=A[15];return n*(+t*B*r-i*a*r-t*o*Q+e*a*Q+i*o*E-e*B*E)+h*(+I*B*E-I*a*Q+t*C*Q-i*C*E+i*a*s-t*B*s)+l*(+I*a*r-I*o*E-t*C*r+e*C*E+t*o*s-e*a*s)+c*(-i*o*s-I*B*r+I*o*Q+i*C*r-e*C*Q+e*B*s)}transpose(){let A=this.elements,I;return I=A[1],A[1]=A[4],A[4]=I,I=A[2],A[2]=A[8],A[8]=I,I=A[6],A[6]=A[9],A[9]=I,I=A[3],A[3]=A[12],A[12]=I,I=A[7],A[7]=A[13],A[13]=I,I=A[11],A[11]=A[14],A[14]=I,this}setPosition(A,I,e){let i=this.elements;return A.isVector3?(i[12]=A.x,i[13]=A.y,i[14]=A.z):(i[12]=A,i[13]=I,i[14]=e),this}invert(){let A=this.elements,I=A[0],e=A[1],i=A[2],t=A[3],C=A[4],o=A[5],B=A[6],a=A[7],s=A[8],r=A[9],Q=A[10],E=A[11],n=A[12],h=A[13],l=A[14],c=A[15],d=r*l*a-h*Q*a+h*B*E-o*l*E-r*B*c+o*Q*c,u=n*Q*a-s*l*a-n*B*E+C*l*E+s*B*c-C*Q*c,y=s*h*a-n*r*a+n*o*E-C*h*E-s*o*c+C*r*c,f=n*r*B-s*h*B-n*o*Q+C*h*Q+s*o*l-C*r*l,k=I*d+e*u+i*y+t*f;if(k===0)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);let M=1/k;return A[0]=d*M,A[1]=(h*Q*t-r*l*t-h*i*E+e*l*E+r*i*c-e*Q*c)*M,A[2]=(o*l*t-h*B*t+h*i*a-e*l*a-o*i*c+e*B*c)*M,A[3]=(r*B*t-o*Q*t-r*i*a+e*Q*a+o*i*E-e*B*E)*M,A[4]=u*M,A[5]=(s*l*t-n*Q*t+n*i*E-I*l*E-s*i*c+I*Q*c)*M,A[6]=(n*B*t-C*l*t-n*i*a+I*l*a+C*i*c-I*B*c)*M,A[7]=(C*Q*t-s*B*t+s*i*a-I*Q*a-C*i*E+I*B*E)*M,A[8]=y*M,A[9]=(n*r*t-s*h*t-n*e*E+I*h*E+s*e*c-I*r*c)*M,A[10]=(C*h*t-n*o*t+n*e*a-I*h*a-C*e*c+I*o*c)*M,A[11]=(s*o*t-C*r*t-s*e*a+I*r*a+C*e*E-I*o*E)*M,A[12]=f*M,A[13]=(s*h*i-n*r*i+n*e*Q-I*h*Q-s*e*l+I*r*l)*M,A[14]=(n*o*i-C*h*i-n*e*B+I*h*B+C*e*l-I*o*l)*M,A[15]=(C*r*i-s*o*i+s*e*B-I*r*B-C*e*Q+I*o*Q)*M,this}scale(A){let I=this.elements,e=A.x,i=A.y,t=A.z;return I[0]*=e,I[4]*=i,I[8]*=t,I[1]*=e,I[5]*=i,I[9]*=t,I[2]*=e,I[6]*=i,I[10]*=t,I[3]*=e,I[7]*=i,I[11]*=t,this}getMaxScaleOnAxis(){let A=this.elements,I=A[0]*A[0]+A[1]*A[1]+A[2]*A[2],e=A[4]*A[4]+A[5]*A[5]+A[6]*A[6],i=A[8]*A[8]+A[9]*A[9]+A[10]*A[10];return Math.sqrt(Math.max(I,e,i))}makeTranslation(A,I,e){return this.set(1,0,0,A,0,1,0,I,0,0,1,e,0,0,0,1),this}makeRotationX(A){let I=Math.cos(A),e=Math.sin(A);return this.set(1,0,0,0,0,I,-e,0,0,e,I,0,0,0,0,1),this}makeRotationY(A){let I=Math.cos(A),e=Math.sin(A);return this.set(I,0,e,0,0,1,0,0,-e,0,I,0,0,0,0,1),this}makeRotationZ(A){let I=Math.cos(A),e=Math.sin(A);return this.set(I,-e,0,0,e,I,0,0,0,0,1,0,0,0,0,1),this}makeRotationAxis(A,I){let e=Math.cos(I),i=Math.sin(I),t=1-e,C=A.x,o=A.y,B=A.z,a=t*C,s=t*o;return this.set(a*C+e,a*o-i*B,a*B+i*o,0,a*o+i*B,s*o+e,s*B-i*C,0,a*B-i*o,s*B+i*C,t*B*B+e,0,0,0,0,1),this}makeScale(A,I,e){return this.set(A,0,0,0,0,I,0,0,0,0,e,0,0,0,0,1),this}makeShear(A,I,e,i,t,C){return this.set(1,e,t,0,A,1,C,0,I,i,1,0,0,0,0,1),this}compose(A,I,e){let i=this.elements,t=I._x,C=I._y,o=I._z,B=I._w,a=t+t,s=C+C,r=o+o,Q=t*a,E=t*s,n=t*r,h=C*s,l=C*r,c=o*r,d=B*a,u=B*s,y=B*r,f=e.x,k=e.y,M=e.z;return i[0]=(1-(h+c))*f,i[1]=(E+y)*f,i[2]=(n-u)*f,i[3]=0,i[4]=(E-y)*k,i[5]=(1-(Q+c))*k,i[6]=(l+d)*k,i[7]=0,i[8]=(n+u)*M,i[9]=(l-d)*M,i[10]=(1-(Q+h))*M,i[11]=0,i[12]=A.x,i[13]=A.y,i[14]=A.z,i[15]=1,this}decompose(A,I,e){let i=this.elements,t=ls.set(i[0],i[1],i[2]).length(),C=ls.set(i[4],i[5],i[6]).length(),o=ls.set(i[8],i[9],i[10]).length();this.determinant()<0&&(t=-t),A.x=i[12],A.y=i[13],A.z=i[14],hC.copy(this);let B=1/t,a=1/C,s=1/o;return hC.elements[0]*=B,hC.elements[1]*=B,hC.elements[2]*=B,hC.elements[4]*=a,hC.elements[5]*=a,hC.elements[6]*=a,hC.elements[8]*=s,hC.elements[9]*=s,hC.elements[10]*=s,I.setFromRotationMatrix(hC),e.x=t,e.y=C,e.z=o,this}makePerspective(A,I,e,i,t,C){let o=this.elements,B=2*t/(I-A),a=2*t/(e-i),s=(I+A)/(I-A),r=(e+i)/(e-i),Q=-(C+t)/(C-t),E=-2*C*t/(C-t);return o[0]=B,o[4]=0,o[8]=s,o[12]=0,o[1]=0,o[5]=a,o[9]=r,o[13]=0,o[2]=0,o[6]=0,o[10]=Q,o[14]=E,o[3]=0,o[7]=0,o[11]=-1,o[15]=0,this}makeOrthographic(A,I,e,i,t,C){let o=this.elements,B=1/(I-A),a=1/(e-i),s=1/(C-t),r=(I+A)*B,Q=(e+i)*a,E=(C+t)*s;return o[0]=2*B,o[4]=0,o[8]=0,o[12]=-r,o[1]=0,o[5]=2*a,o[9]=0,o[13]=-Q,o[2]=0,o[6]=0,o[10]=-2*s,o[14]=-E,o[3]=0,o[7]=0,o[11]=0,o[15]=1,this}equals(A){let I=this.elements,e=A.elements;for(let i=0;i<16;i++)if(I[i]!==e[i])return!1;return!0}fromArray(A,I=0){for(let e=0;e<16;e++)this.elements[e]=A[e+I];return this}toArray(A=[],I=0){let e=this.elements;return A[I]=e[0],A[I+1]=e[1],A[I+2]=e[2],A[I+3]=e[3],A[I+4]=e[4],A[I+5]=e[5],A[I+6]=e[6],A[I+7]=e[7],A[I+8]=e[8],A[I+9]=e[9],A[I+10]=e[10],A[I+11]=e[11],A[I+12]=e[12],A[I+13]=e[13],A[I+14]=e[14],A[I+15]=e[15],A}},ls=new J,hC=new zA,YL=new J(0,0,0),xL=new J(1,1,1),HB=new J,Rh=new J,Gt=new J,Lf=new zA,bf=new QI,Ei=class{constructor(A=0,I=0,e=0,i=Ei.DEFAULT_ORDER){this.isEuler=!0,this._x=A,this._y=I,this._z=e,this._order=i}get x(){return this._x}set x(A){this._x=A,this._onChangeCallback()}get y(){return this._y}set y(A){this._y=A,this._onChangeCallback()}get z(){return this._z}set z(A){this._z=A,this._onChangeCallback()}get order(){return this._order}set order(A){this._order=A,this._onChangeCallback()}set(A,I,e,i=this._order){return this._x=A,this._y=I,this._z=e,this._order=i,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._order)}copy(A){return this._x=A._x,this._y=A._y,this._z=A._z,this._order=A._order,this._onChangeCallback(),this}setFromRotationMatrix(A,I=this._order,e=!0){let i=A.elements,t=i[0],C=i[4],o=i[8],B=i[1],a=i[5],s=i[9],r=i[2],Q=i[6],E=i[10];switch(I){case"XYZ":this._y=Math.asin(ii(o,-1,1)),Math.abs(o)<.9999999?(this._x=Math.atan2(-s,E),this._z=Math.atan2(-C,t)):(this._x=Math.atan2(Q,a),this._z=0);break;case"YXZ":this._x=Math.asin(-ii(s,-1,1)),Math.abs(s)<.9999999?(this._y=Math.atan2(o,E),this._z=Math.atan2(B,a)):(this._y=Math.atan2(-r,t),this._z=0);break;case"ZXY":this._x=Math.asin(ii(Q,-1,1)),Math.abs(Q)<.9999999?(this._y=Math.atan2(-r,E),this._z=Math.atan2(-C,a)):(this._y=0,this._z=Math.atan2(B,t));break;case"ZYX":this._y=Math.asin(-ii(r,-1,1)),Math.abs(r)<.9999999?(this._x=Math.atan2(Q,E),this._z=Math.atan2(B,t)):(this._x=0,this._z=Math.atan2(-C,a));break;case"YZX":this._z=Math.asin(ii(B,-1,1)),Math.abs(B)<.9999999?(this._x=Math.atan2(-s,a),this._y=Math.atan2(-r,t)):(this._x=0,this._y=Math.atan2(o,E));break;case"XZY":this._z=Math.asin(-ii(C,-1,1)),Math.abs(C)<.9999999?(this._x=Math.atan2(Q,a),this._y=Math.atan2(o,t)):(this._x=Math.atan2(-s,E),this._y=0);break;default:console.warn("THREE.Euler: .setFromRotationMatrix() encountered an unknown order: "+I)}return this._order=I,e===!0&&this._onChangeCallback(),this}setFromQuaternion(A,I,e){return Lf.makeRotationFromQuaternion(A),this.setFromRotationMatrix(Lf,I,e)}setFromVector3(A,I=this._order){return this.set(A.x,A.y,A.z,I)}reorder(A){return bf.setFromEuler(this),this.setFromQuaternion(bf,A)}equals(A){return A._x===this._x&&A._y===this._y&&A._z===this._z&&A._order===this._order}fromArray(A){return this._x=A[0],this._y=A[1],this._z=A[2],A[3]!==void 0&&(this._order=A[3]),this._onChangeCallback(),this}toArray(A=[],I=0){return A[I]=this._x,A[I+1]=this._y,A[I+2]=this._z,A[I+3]=this._order,A}_onChange(A){return this._onChangeCallback=A,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._order}};Ei.DEFAULT_ORDER="XYZ";var bw=class{constructor(){this.mask=1}set(g){this.mask=(1<>>0}enable(g){this.mask|=1<1){for(let I=0;I1){for(let e=0;e0&&(e=e.concat(C))}return e}getWorldPosition(A){return this.updateWorldMatrix(!0,!1),A.setFromMatrixPosition(this.matrixWorld)}getWorldQuaternion(A){return this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(uE,A,TL),A}getWorldScale(A){return this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(uE,OL,A),A}getWorldDirection(A){this.updateWorldMatrix(!0,!1);let I=this.matrixWorld.elements;return A.set(I[8],I[9],I[10]).normalize()}raycast(){}traverse(A){A(this);let I=this.children;for(let e=0,i=I.length;e0&&(i.userData=this.userData),i.layers=this.layers.mask,i.matrix=this.matrix.toArray(),this.matrixAutoUpdate===!1&&(i.matrixAutoUpdate=!1),this.isInstancedMesh&&(i.type="InstancedMesh",i.count=this.count,i.instanceMatrix=this.instanceMatrix.toJSON(),this.instanceColor!==null&&(i.instanceColor=this.instanceColor.toJSON()));function t(o,B){return o[B.uuid]===void 0&&(o[B.uuid]=B.toJSON(A)),B.uuid}if(this.isScene)this.background&&(this.background.isColor?i.background=this.background.toJSON():this.background.isTexture&&(i.background=this.background.toJSON(A).uuid)),this.environment&&this.environment.isTexture&&this.environment.isRenderTargetTexture!==!0&&(i.environment=this.environment.toJSON(A).uuid);else if(this.isMesh||this.isLine||this.isPoints){i.geometry=t(A.geometries,this.geometry);let o=this.geometry.parameters;if(o!==void 0&&o.shapes!==void 0){let B=o.shapes;if(Array.isArray(B))for(let a=0,s=B.length;a0){i.children=[];for(let o=0;o0){i.animations=[];for(let o=0;o0&&(e.geometries=o),B.length>0&&(e.materials=B),a.length>0&&(e.textures=a),s.length>0&&(e.images=s),r.length>0&&(e.shapes=r),Q.length>0&&(e.skeletons=Q),E.length>0&&(e.animations=E),n.length>0&&(e.nodes=n)}return e.object=i,e;function C(o){let B=[];for(let a in o){let s=o[a];delete s.metadata,B.push(s)}return B}}clone(A){return new this.constructor().copy(this,A)}copy(A,I=!0){if(this.name=A.name,this.up.copy(A.up),this.position.copy(A.position),this.rotation.order=A.rotation.order,this.quaternion.copy(A.quaternion),this.scale.copy(A.scale),this.matrix.copy(A.matrix),this.matrixWorld.copy(A.matrixWorld),this.matrixAutoUpdate=A.matrixAutoUpdate,this.matrixWorldNeedsUpdate=A.matrixWorldNeedsUpdate,this.matrixWorldAutoUpdate=A.matrixWorldAutoUpdate,this.layers.mask=A.layers.mask,this.visible=A.visible,this.castShadow=A.castShadow,this.receiveShadow=A.receiveShadow,this.frustumCulled=A.frustumCulled,this.renderOrder=A.renderOrder,this.userData=JSON.parse(JSON.stringify(A.userData)),I===!0)for(let e=0;e0?i.multiplyScalar(1/Math.sqrt(t)):i.set(0,0,0)}static getBarycoord(A,I,e,i,t){lC.subVectors(i,I),Xo.subVectors(e,I),Wd.subVectors(A,I);let C=lC.dot(lC),o=lC.dot(Xo),B=lC.dot(Wd),a=Xo.dot(Xo),s=Xo.dot(Wd),r=C*a-o*o;if(r===0)return t.set(-2,-1,-1);let Q=1/r,E=(a*B-o*s)*Q,n=(C*s-o*B)*Q;return t.set(1-E-n,n,E)}static containsPoint(A,I,e,i){return this.getBarycoord(A,I,e,i,$o),$o.x>=0&&$o.y>=0&&$o.x+$o.y<=1}static getUV(A,I,e,i,t,C,o,B){return this.getBarycoord(A,I,e,i,$o),B.set(0,0),B.addScaledVector(t,$o.x),B.addScaledVector(C,$o.y),B.addScaledVector(o,$o.z),B}static isFrontFacing(A,I,e,i){return lC.subVectors(e,I),Xo.subVectors(A,I),lC.cross(Xo).dot(i)<0}set(A,I,e){return this.a.copy(A),this.b.copy(I),this.c.copy(e),this}setFromPointsAndIndices(A,I,e,i){return this.a.copy(A[I]),this.b.copy(A[e]),this.c.copy(A[i]),this}setFromAttributeAndIndices(A,I,e,i){return this.a.fromBufferAttribute(A,I),this.b.fromBufferAttribute(A,e),this.c.fromBufferAttribute(A,i),this}clone(){return new this.constructor().copy(this)}copy(A){return this.a.copy(A.a),this.b.copy(A.b),this.c.copy(A.c),this}getArea(){return lC.subVectors(this.c,this.b),Xo.subVectors(this.a,this.b),lC.cross(Xo).length()*.5}getMidpoint(A){return A.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)}getNormal(A){return Ni.getNormal(this.a,this.b,this.c,A)}getPlane(A){return A.setFromCoplanarPoints(this.a,this.b,this.c)}getBarycoord(A,I){return Ni.getBarycoord(A,this.a,this.b,this.c,I)}getUV(A,I,e,i,t){return Ni.getUV(A,this.a,this.b,this.c,I,e,i,t)}containsPoint(A){return Ni.containsPoint(A,this.a,this.b,this.c)}isFrontFacing(A){return Ni.isFrontFacing(this.a,this.b,this.c,A)}intersectsBox(A){return A.intersectsTriangle(this)}closestPointToPoint(A,I){let e=this.a,i=this.b,t=this.c,C,o;Ds.subVectors(i,e),ds.subVectors(t,e),Zd.subVectors(A,e);let B=Ds.dot(Zd),a=ds.dot(Zd);if(B<=0&&a<=0)return I.copy(e);Vd.subVectors(A,i);let s=Ds.dot(Vd),r=ds.dot(Vd);if(s>=0&&r<=s)return I.copy(i);let Q=B*r-s*a;if(Q<=0&&B>=0&&s<=0)return C=B/(B-s),I.copy(e).addScaledVector(Ds,C);zd.subVectors(A,t);let E=Ds.dot(zd),n=ds.dot(zd);if(n>=0&&E<=n)return I.copy(t);let h=E*a-B*n;if(h<=0&&a>=0&&n<=0)return o=a/(a-n),I.copy(e).addScaledVector(ds,o);let l=s*n-E*r;if(l<=0&&r-s>=0&&E-n>=0)return _f.subVectors(t,i),o=(r-s)/(r-s+(E-n)),I.copy(i).addScaledVector(_f,o);let c=1/(l+h+Q);return C=h*c,o=Q*c,I.copy(e).addScaledVector(Ds,C).addScaledVector(ds,o)}equals(A){return A.a.equals(this.a)&&A.b.equals(this.b)&&A.c.equals(this.c)}},PL=0,zn=class extends Si{constructor(){super(),this.isMaterial=!0,Object.defineProperty(this,"id",{value:PL++}),this.uuid=IC(),this.name="",this.type="Material",this.blending=oQ,this.side=RC,this.vertexColors=!1,this.opacity=1,this.transparent=!1,this.blendSrc=yN,this.blendDst=wN,this.blendEquation=Ps,this.blendSrcAlpha=null,this.blendDstAlpha=null,this.blendEquationAlpha=null,this.depthFunc=qp,this.depthTest=!0,this.depthWrite=!0,this.stencilWriteMask=255,this.stencilFunc=pL,this.stencilRef=0,this.stencilFuncMask=255,this.stencilFail=vd,this.stencilZFail=vd,this.stencilZPass=vd,this.stencilWrite=!1,this.clippingPlanes=null,this.clipIntersection=!1,this.clipShadows=!1,this.shadowSide=null,this.colorWrite=!0,this.precision=null,this.polygonOffset=!1,this.polygonOffsetFactor=0,this.polygonOffsetUnits=0,this.dithering=!1,this.alphaToCoverage=!1,this.premultipliedAlpha=!1,this.forceSinglePass=!1,this.visible=!0,this.toneMapped=!0,this.userData={},this.version=0,this._alphaTest=0}get alphaTest(){return this._alphaTest}set alphaTest(g){this._alphaTest>0!=g>0&&this.version++,this._alphaTest=g}onBuild(){}onBeforeRender(){}onBeforeCompile(){}customProgramCacheKey(){return this.onBeforeCompile.toString()}setValues(g){if(g!==void 0)for(let A in g){let I=g[A];if(I===void 0){console.warn("THREE.Material: '"+A+"' parameter is undefined.");continue}let e=this[A];if(e===void 0){console.warn("THREE."+this.type+": '"+A+"' is not a property of this material.");continue}e&&e.isColor?e.set(I):e&&e.isVector3&&I&&I.isVector3?e.copy(I):this[A]=I}}toJSON(g){let A=g===void 0||typeof g=="string";A&&(g={textures:{},images:{}});let I={metadata:{version:4.5,type:"Material",generator:"Material.toJSON"}};I.uuid=this.uuid,I.type=this.type,this.name!==""&&(I.name=this.name),this.color&&this.color.isColor&&(I.color=this.color.getHex()),this.roughness!==void 0&&(I.roughness=this.roughness),this.metalness!==void 0&&(I.metalness=this.metalness),this.sheen!==void 0&&(I.sheen=this.sheen),this.sheenColor&&this.sheenColor.isColor&&(I.sheenColor=this.sheenColor.getHex()),this.sheenRoughness!==void 0&&(I.sheenRoughness=this.sheenRoughness),this.emissive&&this.emissive.isColor&&(I.emissive=this.emissive.getHex()),this.emissiveIntensity&&this.emissiveIntensity!==1&&(I.emissiveIntensity=this.emissiveIntensity),this.specular&&this.specular.isColor&&(I.specular=this.specular.getHex()),this.specularIntensity!==void 0&&(I.specularIntensity=this.specularIntensity),this.specularColor&&this.specularColor.isColor&&(I.specularColor=this.specularColor.getHex()),this.shininess!==void 0&&(I.shininess=this.shininess),this.clearcoat!==void 0&&(I.clearcoat=this.clearcoat),this.clearcoatRoughness!==void 0&&(I.clearcoatRoughness=this.clearcoatRoughness),this.clearcoatMap&&this.clearcoatMap.isTexture&&(I.clearcoatMap=this.clearcoatMap.toJSON(g).uuid),this.clearcoatRoughnessMap&&this.clearcoatRoughnessMap.isTexture&&(I.clearcoatRoughnessMap=this.clearcoatRoughnessMap.toJSON(g).uuid),this.clearcoatNormalMap&&this.clearcoatNormalMap.isTexture&&(I.clearcoatNormalMap=this.clearcoatNormalMap.toJSON(g).uuid,I.clearcoatNormalScale=this.clearcoatNormalScale.toArray()),this.iridescence!==void 0&&(I.iridescence=this.iridescence),this.iridescenceIOR!==void 0&&(I.iridescenceIOR=this.iridescenceIOR),this.iridescenceThicknessRange!==void 0&&(I.iridescenceThicknessRange=this.iridescenceThicknessRange),this.iridescenceMap&&this.iridescenceMap.isTexture&&(I.iridescenceMap=this.iridescenceMap.toJSON(g).uuid),this.iridescenceThicknessMap&&this.iridescenceThicknessMap.isTexture&&(I.iridescenceThicknessMap=this.iridescenceThicknessMap.toJSON(g).uuid),this.map&&this.map.isTexture&&(I.map=this.map.toJSON(g).uuid),this.matcap&&this.matcap.isTexture&&(I.matcap=this.matcap.toJSON(g).uuid),this.alphaMap&&this.alphaMap.isTexture&&(I.alphaMap=this.alphaMap.toJSON(g).uuid),this.lightMap&&this.lightMap.isTexture&&(I.lightMap=this.lightMap.toJSON(g).uuid,I.lightMapIntensity=this.lightMapIntensity),this.aoMap&&this.aoMap.isTexture&&(I.aoMap=this.aoMap.toJSON(g).uuid,I.aoMapIntensity=this.aoMapIntensity),this.bumpMap&&this.bumpMap.isTexture&&(I.bumpMap=this.bumpMap.toJSON(g).uuid,I.bumpScale=this.bumpScale),this.normalMap&&this.normalMap.isTexture&&(I.normalMap=this.normalMap.toJSON(g).uuid,I.normalMapType=this.normalMapType,I.normalScale=this.normalScale.toArray()),this.displacementMap&&this.displacementMap.isTexture&&(I.displacementMap=this.displacementMap.toJSON(g).uuid,I.displacementScale=this.displacementScale,I.displacementBias=this.displacementBias),this.roughnessMap&&this.roughnessMap.isTexture&&(I.roughnessMap=this.roughnessMap.toJSON(g).uuid),this.metalnessMap&&this.metalnessMap.isTexture&&(I.metalnessMap=this.metalnessMap.toJSON(g).uuid),this.emissiveMap&&this.emissiveMap.isTexture&&(I.emissiveMap=this.emissiveMap.toJSON(g).uuid),this.specularMap&&this.specularMap.isTexture&&(I.specularMap=this.specularMap.toJSON(g).uuid),this.specularIntensityMap&&this.specularIntensityMap.isTexture&&(I.specularIntensityMap=this.specularIntensityMap.toJSON(g).uuid),this.specularColorMap&&this.specularColorMap.isTexture&&(I.specularColorMap=this.specularColorMap.toJSON(g).uuid),this.envMap&&this.envMap.isTexture&&(I.envMap=this.envMap.toJSON(g).uuid,this.combine!==void 0&&(I.combine=this.combine)),this.envMapIntensity!==void 0&&(I.envMapIntensity=this.envMapIntensity),this.reflectivity!==void 0&&(I.reflectivity=this.reflectivity),this.refractionRatio!==void 0&&(I.refractionRatio=this.refractionRatio),this.gradientMap&&this.gradientMap.isTexture&&(I.gradientMap=this.gradientMap.toJSON(g).uuid),this.transmission!==void 0&&(I.transmission=this.transmission),this.transmissionMap&&this.transmissionMap.isTexture&&(I.transmissionMap=this.transmissionMap.toJSON(g).uuid),this.thickness!==void 0&&(I.thickness=this.thickness),this.thicknessMap&&this.thicknessMap.isTexture&&(I.thicknessMap=this.thicknessMap.toJSON(g).uuid),this.attenuationDistance!==void 0&&this.attenuationDistance!==1/0&&(I.attenuationDistance=this.attenuationDistance),this.attenuationColor!==void 0&&(I.attenuationColor=this.attenuationColor.getHex()),this.size!==void 0&&(I.size=this.size),this.shadowSide!==null&&(I.shadowSide=this.shadowSide),this.sizeAttenuation!==void 0&&(I.sizeAttenuation=this.sizeAttenuation),this.blending!==oQ&&(I.blending=this.blending),this.side!==RC&&(I.side=this.side),this.vertexColors&&(I.vertexColors=!0),this.opacity<1&&(I.opacity=this.opacity),this.transparent===!0&&(I.transparent=this.transparent),I.depthFunc=this.depthFunc,I.depthTest=this.depthTest,I.depthWrite=this.depthWrite,I.colorWrite=this.colorWrite,I.stencilWrite=this.stencilWrite,I.stencilWriteMask=this.stencilWriteMask,I.stencilFunc=this.stencilFunc,I.stencilRef=this.stencilRef,I.stencilFuncMask=this.stencilFuncMask,I.stencilFail=this.stencilFail,I.stencilZFail=this.stencilZFail,I.stencilZPass=this.stencilZPass,this.rotation!==void 0&&this.rotation!==0&&(I.rotation=this.rotation),this.polygonOffset===!0&&(I.polygonOffset=!0),this.polygonOffsetFactor!==0&&(I.polygonOffsetFactor=this.polygonOffsetFactor),this.polygonOffsetUnits!==0&&(I.polygonOffsetUnits=this.polygonOffsetUnits),this.linewidth!==void 0&&this.linewidth!==1&&(I.linewidth=this.linewidth),this.dashSize!==void 0&&(I.dashSize=this.dashSize),this.gapSize!==void 0&&(I.gapSize=this.gapSize),this.scale!==void 0&&(I.scale=this.scale),this.dithering===!0&&(I.dithering=!0),this.alphaTest>0&&(I.alphaTest=this.alphaTest),this.alphaToCoverage===!0&&(I.alphaToCoverage=this.alphaToCoverage),this.premultipliedAlpha===!0&&(I.premultipliedAlpha=this.premultipliedAlpha),this.forceSinglePass===!0&&(I.forceSinglePass=this.forceSinglePass),this.wireframe===!0&&(I.wireframe=this.wireframe),this.wireframeLinewidth>1&&(I.wireframeLinewidth=this.wireframeLinewidth),this.wireframeLinecap!=="round"&&(I.wireframeLinecap=this.wireframeLinecap),this.wireframeLinejoin!=="round"&&(I.wireframeLinejoin=this.wireframeLinejoin),this.flatShading===!0&&(I.flatShading=this.flatShading),this.visible===!1&&(I.visible=!1),this.toneMapped===!1&&(I.toneMapped=!1),this.fog===!1&&(I.fog=!1),Object.keys(this.userData).length>0&&(I.userData=this.userData);function e(i){let t=[];for(let C in i){let o=i[C];delete o.metadata,t.push(o)}return t}if(A){let i=e(g.textures),t=e(g.images);i.length>0&&(I.textures=i),t.length>0&&(I.images=t)}return I}clone(){return new this.constructor().copy(this)}copy(g){this.name=g.name,this.blending=g.blending,this.side=g.side,this.vertexColors=g.vertexColors,this.opacity=g.opacity,this.transparent=g.transparent,this.blendSrc=g.blendSrc,this.blendDst=g.blendDst,this.blendEquation=g.blendEquation,this.blendSrcAlpha=g.blendSrcAlpha,this.blendDstAlpha=g.blendDstAlpha,this.blendEquationAlpha=g.blendEquationAlpha,this.depthFunc=g.depthFunc,this.depthTest=g.depthTest,this.depthWrite=g.depthWrite,this.stencilWriteMask=g.stencilWriteMask,this.stencilFunc=g.stencilFunc,this.stencilRef=g.stencilRef,this.stencilFuncMask=g.stencilFuncMask,this.stencilFail=g.stencilFail,this.stencilZFail=g.stencilZFail,this.stencilZPass=g.stencilZPass,this.stencilWrite=g.stencilWrite;let A=g.clippingPlanes,I=null;if(A!==null){let e=A.length;I=new Array(e);for(let i=0;i!==e;++i)I[i]=A[i].clone()}return this.clippingPlanes=I,this.clipIntersection=g.clipIntersection,this.clipShadows=g.clipShadows,this.shadowSide=g.shadowSide,this.colorWrite=g.colorWrite,this.precision=g.precision,this.polygonOffset=g.polygonOffset,this.polygonOffsetFactor=g.polygonOffsetFactor,this.polygonOffsetUnits=g.polygonOffsetUnits,this.dithering=g.dithering,this.alphaTest=g.alphaTest,this.alphaToCoverage=g.alphaToCoverage,this.premultipliedAlpha=g.premultipliedAlpha,this.forceSinglePass=g.forceSinglePass,this.visible=g.visible,this.toneMapped=g.toneMapped,this.userData=JSON.parse(JSON.stringify(g.userData)),this}dispose(){this.dispatchEvent({type:"dispose"})}set needsUpdate(g){g===!0&&this.version++}},Xn=class extends zn{constructor(A){super(),this.isMeshBasicMaterial=!0,this.type="MeshBasicMaterial",this.color=new Og(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.combine=SN,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.fog=!0,this.setValues(A)}copy(A){return super.copy(A),this.color.copy(A.color),this.map=A.map,this.lightMap=A.lightMap,this.lightMapIntensity=A.lightMapIntensity,this.aoMap=A.aoMap,this.aoMapIntensity=A.aoMapIntensity,this.specularMap=A.specularMap,this.alphaMap=A.alphaMap,this.envMap=A.envMap,this.combine=A.combine,this.reflectivity=A.reflectivity,this.refractionRatio=A.refractionRatio,this.wireframe=A.wireframe,this.wireframeLinewidth=A.wireframeLinewidth,this.wireframeLinecap=A.wireframeLinecap,this.wireframeLinejoin=A.wireframeLinejoin,this.fog=A.fog,this}},He=new J,Jh=new sA,zg=class{constructor(g,A,I=!1){if(Array.isArray(g))throw new TypeError("THREE.BufferAttribute: array should be a Typed Array.");this.isBufferAttribute=!0,this.name="",this.array=g,this.itemSize=A,this.count=g!==void 0?g.length/A:0,this.normalized=I,this.usage=xp,this.updateRange={offset:0,count:-1},this.version=0}onUploadCallback(){}set needsUpdate(g){g===!0&&this.version++}setUsage(g){return this.usage=g,this}copy(g){return this.name=g.name,this.array=new g.array.constructor(g.array),this.itemSize=g.itemSize,this.count=g.count,this.normalized=g.normalized,this.usage=g.usage,this}copyAt(g,A,I){g*=this.itemSize,I*=A.itemSize;for(let e=0,i=this.itemSize;e0&&(A.userData=this.userData),this.parameters!==void 0){let B=this.parameters;for(let a in B)B[a]!==void 0&&(A[a]=B[a]);return A}A.data={attributes:{}};let I=this.index;I!==null&&(A.data.index={type:I.array.constructor.name,array:Array.prototype.slice.call(I.array)});let e=this.attributes;for(let B in e){let a=e[B];A.data.attributes[B]=a.toJSON(A.data)}let i={},t=!1;for(let B in this.morphAttributes){let a=this.morphAttributes[B],s=[];for(let r=0,Q=a.length;r0&&(i[B]=s,t=!0)}t&&(A.data.morphAttributes=i,A.data.morphTargetsRelative=this.morphTargetsRelative);let C=this.groups;C.length>0&&(A.data.groups=JSON.parse(JSON.stringify(C)));let o=this.boundingSphere;return o!==null&&(A.data.boundingSphere={center:o.center.toArray(),radius:o.radius}),A}clone(){return new this.constructor().copy(this)}copy(A){this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null;let I={};this.name=A.name;let e=A.index;e!==null&&this.setIndex(e.clone(I));let i=A.attributes;for(let a in i){let s=i[a];this.setAttribute(a,s.clone(I))}let t=A.morphAttributes;for(let a in t){let s=[],r=t[a];for(let Q=0,E=r.length;Q0){let e=A[I[0]];if(e!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let i=0,t=e.length;iI.far?null:{distance:a,point:Yh.clone(),object:g}}function xh(g,A,I,e,i,t,C,o,B){g.getVertexPosition(C,yE),g.getVertexPosition(o,wE),g.getVertexPosition(B,SE);let a=WL(g,A,I,e,yE,wE,SE,gu);if(a){i&&(qh.fromBufferAttribute(i,C),Lh.fromBufferAttribute(i,o),bh.fromBufferAttribute(i,B),a.uv=Ni.getUV(gu,yE,wE,SE,qh,Lh,bh,new sA)),t&&(qh.fromBufferAttribute(t,C),Lh.fromBufferAttribute(t,o),bh.fromBufferAttribute(t,B),a.uv2=Ni.getUV(gu,yE,wE,SE,qh,Lh,bh,new sA));let s={a:C,b:o,c:B,normal:new J,materialIndex:0};Ni.getNormal(yE,wE,SE,s.normal),a.face=s}return a}var Go=class extends bg{constructor(A=1,I=1,e=1,i=1,t=1,C=1){super(),this.type="BoxGeometry",this.parameters={width:A,height:I,depth:e,widthSegments:i,heightSegments:t,depthSegments:C};let o=this;i=Math.floor(i),t=Math.floor(t),C=Math.floor(C);let B=[],a=[],s=[],r=[],Q=0,E=0;n("z","y","x",-1,-1,e,I,A,C,t,0),n("z","y","x",1,-1,e,I,-A,C,t,1),n("x","z","y",1,1,A,e,I,i,C,2),n("x","z","y",1,-1,A,e,-I,i,C,3),n("x","y","z",1,-1,A,I,e,i,t,4),n("x","y","z",-1,-1,A,I,-e,i,t,5),this.setIndex(B),this.setAttribute("position",new pg(a,3)),this.setAttribute("normal",new pg(s,3)),this.setAttribute("uv",new pg(r,2));function n(h,l,c,d,u,y,f,k,M,G,v){let N=y/M,b=f/G,O=y/2,H=f/2,_=k/2,gA=M+1,CA=G+1,AA=0,BA=0,iA=new J;for(let rA=0;rA0?1:-1,s.push(iA.x,iA.y,iA.z),r.push(IA/M),r.push(1-rA/G),AA+=1}}for(let rA=0;rA{if(t=Eq(t,e),t in ef)return;ef[t]=!0;const C=t.endsWith(".css"),o=C?'[rel="stylesheet"]':"";if(!!e)for(let s=i.length-1;s>=0;s--){const r=i[s];if(r.href===t&&(!C||r.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${t}"]${o}`))return;const a=document.createElement("link");if(a.rel=C?"stylesheet":Qq,C||(a.as="script",a.crossOrigin=""),a.href=t,document.head.appendChild(a),C)return new Promise((s,r)=>{a.addEventListener("load",s),a.addEventListener("error",()=>r(new Error(`Unable to preload CSS for ${t}`)))})})).then(()=>A()).catch(t=>{const C=new Event("vite:preloadError",{cancelable:!0});if(C.payload=t,window.dispatchEvent(C),!C.defaultPrevented)throw t})};var nq=Object.create,Kw=Object.defineProperty,hq=Object.getOwnPropertyDescriptor,lq=Object.getOwnPropertyNames,cq=Object.getPrototypeOf,Dq=Object.prototype.hasOwnProperty,Na=(g,A)=>()=>(A||g((A={exports:{}}).exports,A),A.exports),dq=(g,A)=>{for(var I in A)Kw(g,I,{get:A[I],enumerable:!0})},uq=(g,A,I,e)=>{if(A&&typeof A=="object"||typeof A=="function")for(let i of lq(A))!Dq.call(g,i)&&i!==I&&Kw(g,i,{get:()=>A[i],enumerable:!(e=hq(A,i))||e.enumerable});return g},Fa=(g,A,I)=>(I=g!=null?nq(cq(g)):{},uq(A||!g||!g.__esModule?Kw(I,"default",{value:g,enumerable:!0}):I,g)),pq=Na((g,A)=>{(function(I,e){typeof g=="object"?A.exports=e():typeof define=="function"&&define.amd?define(e):I.Alea=e()})(g,function(){return I.importState=function(i){var t=new I;return t.importState(i),t},I;function I(){return function(i){var t=0,C=0,o=0,B=1;i.length==0&&(i=[+new Date]);var a=e();t=a(" "),C=a(" "),o=a(" ");for(var s=0;s>>0,B-=i,B*=i,i=B>>>0,B-=i,i+=B*4294967296}return(i>>>0)*23283064365386963e-26};return t.version="Mash 0.9",t}})}),pN=Na((g,A)=>{(function(I,e){typeof g=="object"&&typeof A<"u"?e(g):typeof define=="function"&&define.amd?define(["exports"],e):e((I=typeof globalThis<"u"?globalThis:I||self).SVDJS={})})(g,function(I){I.SVD=function(e,i,t,C,o){if(i=i===void 0||i,t=t===void 0||t,o=1e-64/(C=C||Math.pow(2,-52)),!e)throw new TypeError("Matrix a is not defined");var B,a,s,r,Q,E,n,h,l,c,d,u,y=e[0].length,f=e.length;if(f{(function(I,e){typeof g=="object"&&typeof A<"u"?A.exports=e():typeof define=="function"&&define.amd?define(e):(I=I||self,I.TinyQueue=e())})(g,function(){var I=function(i,t){if(i===void 0&&(i=[]),t===void 0&&(t=e),this.data=i,this.length=this.data.length,this.compare=t,this.length>0)for(var C=(this.length>>1)-1;C>=0;C--)this._down(C)};I.prototype.push=function(i){this.data.push(i),this.length++,this._up(this.length-1)},I.prototype.pop=function(){if(this.length!==0){var i=this.data[0],t=this.data.pop();return this.length--,this.length>0&&(this.data[0]=t,this._down(0)),i}},I.prototype.peek=function(){return this.data[0]},I.prototype._up=function(i){for(var t=this,C=t.data,o=t.compare,B=C[i];i>0;){var a=i-1>>1,s=C[a];if(o(B,s)>=0)break;C[i]=s,i=a}C[i]=B},I.prototype._down=function(i){for(var t=this,C=t.data,o=t.compare,B=this.length>>1,a=C[i];i=0)break;C[i]=r,i=s}C[i]=a};function e(i,t){return it?1:0}return I})}),wq=Na((g,A)=>{var I=yq();I.default&&(I=I.default),A.exports=e,A.exports.default=e;function e(a,s,r){s=s||1;for(var Q,E,n,h,l=0;ln)&&(n=c[0]),(!l||c[1]>h)&&(h=c[1])}var d=n-Q,u=h-E,y=Math.min(d,u),f=y/2;if(y===0){var k=[Q,E];return k.distance=0,k}for(var M=new I(void 0,i),G=Q;GN.d&&(N=b);for(var O=M.length;M.length;){var H=M.pop();H.d>N.d&&(N=H,r&&console.log("found best %d after %d probes",Math.round(1e4*H.d)/1e4,O)),!(H.max-N.d<=s)&&(f=H.h/2,M.push(new t(H.x-f,H.y-f,f,a)),M.push(new t(H.x+f,H.y-f,f,a)),M.push(new t(H.x-f,H.y+f,f,a)),M.push(new t(H.x+f,H.y+f,f,a)),O+=4)}r&&(console.log("num probes: "+O),console.log("best distance: "+N.d));var _=[N.x,N.y];return _.distance=N.d,_}function i(a,s){return s.max-a.max}function t(a,s,r,Q){this.x=a,this.y=s,this.h=r,this.d=C(a,s,Q),this.max=this.d+this.h*Math.SQRT2}function C(a,s,r){for(var Q=!1,E=1/0,n=0;ns!=y[1]>s&&a<(y[0]-u[0])*(s-u[1])/(y[1]-u[1])+u[0]&&(Q=!Q),E=Math.min(E,B(a,s,u,y))}return E===0?0:(Q?1:-1)*Math.sqrt(E)}function o(a){for(var s=0,r=0,Q=0,E=a[0],n=0,h=E.length,l=h-1;n1?(E=Q[0],n=Q[1]):c>0&&(E+=h*c,n+=l*c)}return h=a-E,l=s-n,h*h+l*l}}),Sq=Na((g,A)=>{Object.defineProperty(g,"__esModule",{value:!0}),g.default=I;function I(e){if(e===null||e===!0||e===!1)return NaN;var i=Number(e);return isNaN(i)?i:i<0?Math.ceil(i):Math.floor(i)}A.exports=g.default}),fq=Na((g,A)=>{Object.defineProperty(g,"__esModule",{value:!0}),g.default=I;function I(e){var i=new Date(Date.UTC(e.getFullYear(),e.getMonth(),e.getDate(),e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds()));return i.setUTCFullYear(e.getFullYear()),e.getTime()-i.getTime()}A.exports=g.default}),Gq=Na(g=>{(function(){var A=function(){this.init()};A.prototype={init:function(){var r=this||I;return r._counter=1e3,r._html5AudioPool=[],r.html5PoolSize=10,r._codecs={},r._howls=[],r._muted=!1,r._volume=1,r._canPlayEvent="canplaythrough",r._navigator=typeof window<"u"&&window.navigator?window.navigator:null,r.masterGain=null,r.noAudio=!1,r.usingWebAudio=!0,r.autoSuspend=!0,r.ctx=null,r.autoUnlock=!0,r._setup(),r},volume:function(r){var Q=this||I;if(r=parseFloat(r),Q.ctx||s(),typeof r<"u"&&r>=0&&r<=1){if(Q._volume=r,Q._muted)return Q;Q.usingWebAudio&&Q.masterGain.gain.setValueAtTime(r,I.ctx.currentTime);for(var E=0;E=0;Q--)r._howls[Q].unload();return r.usingWebAudio&&r.ctx&&typeof r.ctx.close<"u"&&(r.ctx.close(),r.ctx=null,s()),r},codecs:function(r){return(this||I)._codecs[r.replace(/^x-/,"")]},_setup:function(){var r=this||I;if(r.state=r.ctx&&r.ctx.state||"suspended",r._autoSuspend(),!r.usingWebAudio)if(typeof Audio<"u")try{var Q=new Audio;typeof Q.oncanplaythrough>"u"&&(r._canPlayEvent="canplay")}catch{r.noAudio=!0}else r.noAudio=!0;try{var Q=new Audio;Q.muted&&(r.noAudio=!0)}catch{}return r.noAudio||r._setupCodecs(),r},_setupCodecs:function(){var r=this||I,Q=null;try{Q=typeof Audio<"u"?new Audio:null}catch{return r}if(!Q||typeof Q.canPlayType!="function")return r;var E=Q.canPlayType("audio/mpeg;").replace(/^no$/,""),n=r._navigator?r._navigator.userAgent:"",h=n.match(/OPR\/([0-6].)/g),l=h&&parseInt(h[0].split("/")[1],10)<33,c=n.indexOf("Safari")!==-1&&n.indexOf("Chrome")===-1,d=n.match(/Version\/(.*?) /),u=c&&d&&parseInt(d[1],10)<15;return r._codecs={mp3:!!(!l&&(E||Q.canPlayType("audio/mp3;").replace(/^no$/,""))),mpeg:!!E,opus:!!Q.canPlayType('audio/ogg; codecs="opus"').replace(/^no$/,""),ogg:!!Q.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),oga:!!Q.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),wav:!!(Q.canPlayType('audio/wav; codecs="1"')||Q.canPlayType("audio/wav")).replace(/^no$/,""),aac:!!Q.canPlayType("audio/aac;").replace(/^no$/,""),caf:!!Q.canPlayType("audio/x-caf;").replace(/^no$/,""),m4a:!!(Q.canPlayType("audio/x-m4a;")||Q.canPlayType("audio/m4a;")||Q.canPlayType("audio/aac;")).replace(/^no$/,""),m4b:!!(Q.canPlayType("audio/x-m4b;")||Q.canPlayType("audio/m4b;")||Q.canPlayType("audio/aac;")).replace(/^no$/,""),mp4:!!(Q.canPlayType("audio/x-mp4;")||Q.canPlayType("audio/mp4;")||Q.canPlayType("audio/aac;")).replace(/^no$/,""),weba:!!(!u&&Q.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),webm:!!(!u&&Q.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),dolby:!!Q.canPlayType('audio/mp4; codecs="ec-3"').replace(/^no$/,""),flac:!!(Q.canPlayType("audio/x-flac;")||Q.canPlayType("audio/flac;")).replace(/^no$/,"")},r},_unlockAudio:function(){var r=this||I;if(!(r._audioUnlocked||!r.ctx)){r._audioUnlocked=!1,r.autoUnlock=!1,!r._mobileUnloaded&&r.ctx.sampleRate!==44100&&(r._mobileUnloaded=!0,r.unload()),r._scratchBuffer=r.ctx.createBuffer(1,1,22050);var Q=function(E){for(;r._html5AudioPool.length"u"?u.noteOn(0):u.start(0),typeof r.ctx.resume=="function"&&r.ctx.resume(),u.onended=function(){u.disconnect(0),r._audioUnlocked=!0,document.removeEventListener("touchstart",Q,!0),document.removeEventListener("touchend",Q,!0),document.removeEventListener("click",Q,!0),document.removeEventListener("keydown",Q,!0);for(var y=0;y"u"||!I.usingWebAudio)){for(var Q=0;Q"u"||!I.usingWebAudio))return r.state==="running"&&r.ctx.state!=="interrupted"&&r._suspendTimer?(clearTimeout(r._suspendTimer),r._suspendTimer=null):r.state==="suspended"||r.state==="running"&&r.ctx.state==="interrupted"?(r.ctx.resume().then(function(){r.state="running";for(var Q=0;Q"u"&&(r="__default",!E._playLock)){for(var h=0,l=0;l0?c._seek:E._sprite[r][0]/1e3),y=Math.max(0,(E._sprite[r][0]+E._sprite[r][1])/1e3-u),f=y*1e3/Math.abs(c._rate),k=E._sprite[r][0]/1e3,M=(E._sprite[r][0]+E._sprite[r][1])/1e3;c._sprite=r,c._ended=!1;var G=function(){c._paused=!1,c._seek=u,c._start=k,c._stop=M,c._loop=!!(c._loop||E._sprite[r][2])};if(u>=M){E._ended(c);return}var v=c._node;if(E._webAudio){var N=function(){E._playLock=!1,G(),E._refreshBuffer(c);var _=c._muted||E._muted?0:c._volume;v.gain.setValueAtTime(_,I.ctx.currentTime),c._playStart=I.ctx.currentTime,typeof v.bufferSource.start>"u"?c._loop?v.bufferSource.noteGrainOn(0,u,86400):v.bufferSource.noteGrainOn(0,u,y):c._loop?v.bufferSource.start(0,u,86400):v.bufferSource.start(0,u,y),f!==1/0&&(E._endTimers[c._id]=setTimeout(E._ended.bind(E,c),f)),Q||setTimeout(function(){E._emit("play",c._id),E._loadQueue()},0)};I.state==="running"&&I.ctx.state!=="interrupted"?N():(E._playLock=!0,E.once("resume",N),E._clearTimer(c._id))}else{var b=function(){v.currentTime=u,v.muted=c._muted||E._muted||I._muted||v.muted,v.volume=c._volume*I.volume(),v.playbackRate=c._rate;try{var _=v.play();if(_&&typeof Promise<"u"&&(_ instanceof Promise||typeof _.then=="function")?(E._playLock=!0,G(),_.then(function(){E._playLock=!1,v._unlocked=!0,Q?E._loadQueue():E._emit("play",c._id)}).catch(function(){E._playLock=!1,E._emit("playerror",c._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."),c._ended=!0,c._paused=!0})):Q||(E._playLock=!1,G(),E._emit("play",c._id)),v.playbackRate=c._rate,v.paused){E._emit("playerror",c._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}r!=="__default"||c._loop?E._endTimers[c._id]=setTimeout(E._ended.bind(E,c),f):(E._endTimers[c._id]=function(){E._ended(c),v.removeEventListener("ended",E._endTimers[c._id],!1)},v.addEventListener("ended",E._endTimers[c._id],!1))}catch(gA){E._emit("playerror",c._id,gA)}};v.src==="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA"&&(v.src=E._src,v.load());var O=window&&window.ejecta||!v.readyState&&I._navigator.isCocoonJS;if(v.readyState>=3||O)b();else{E._playLock=!0,E._state="loading";var H=function(){E._state="loaded",b(),v.removeEventListener(I._canPlayEvent,H,!1)};v.addEventListener(I._canPlayEvent,H,!1),E._clearTimer(c._id)}}return c._id},pause:function(r){var Q=this;if(Q._state!=="loaded"||Q._playLock)return Q._queue.push({event:"pause",action:function(){Q.pause(r)}}),Q;for(var E=Q._getSoundIds(r),n=0;n"u"?h._node.bufferSource.noteOff(0):h._node.bufferSource.stop(0),Q._cleanBuffer(h._node)}else(!isNaN(h._node.duration)||h._node.duration===1/0)&&h._node.pause();arguments[1]||Q._emit("pause",h?h._id:null)}return Q},stop:function(r,Q){var E=this;if(E._state!=="loaded"||E._playLock)return E._queue.push({event:"stop",action:function(){E.stop(r)}}),E;for(var n=E._getSoundIds(r),h=0;h"u"?l._node.bufferSource.noteOff(0):l._node.bufferSource.stop(0),E._cleanBuffer(l._node)):(!isNaN(l._node.duration)||l._node.duration===1/0)&&(l._node.currentTime=l._start||0,l._node.pause(),l._node.duration===1/0&&E._clearSound(l._node))),Q||E._emit("stop",l._id))}return E},mute:function(r,Q){var E=this;if(E._state!=="loaded"||E._playLock)return E._queue.push({event:"mute",action:function(){E.mute(r,Q)}}),E;if(typeof Q>"u")if(typeof r=="boolean")E._muted=r;else return E._muted;for(var n=E._getSoundIds(Q),h=0;h"u"){var h=r._getSoundIds(),l=h.indexOf(Q[0]);l>=0?n=parseInt(Q[0],10):E=parseFloat(Q[0])}else Q.length>=2&&(E=parseFloat(Q[0]),n=parseInt(Q[1],10));var c;if(typeof E<"u"&&E>=0&&E<=1){if(r._state!=="loaded"||r._playLock)return r._queue.push({event:"volume",action:function(){r.volume.apply(r,Q)}}),r;typeof n>"u"&&(r._volume=E),n=r._getSoundIds(n);for(var d=0;d"u")}}return h},_startFadeInterval:function(r,Q,E,n,h,l){var c=this,d=Q,u=E-Q,y=Math.abs(u/.01),f=Math.max(4,y>0?n/y:n),k=Date.now();r._fadeTo=E,r._interval=setInterval(function(){var M=(Date.now()-k)/n;k=Date.now(),d+=u*M,d=Math.round(d*100)/100,u<0?d=Math.max(E,d):d=Math.min(E,d),c._webAudio?r._volume=d:c.volume(d,r._id,!0),l&&(c._volume=d),(EQ&&d>=E)&&(clearInterval(r._interval),r._interval=null,r._fadeTo=null,c.volume(E,r._id),c._emit("fade",r._id))},f)},_stopFade:function(r){var Q=this,E=Q._soundById(r);return E&&E._interval&&(Q._webAudio&&E._node.gain.cancelScheduledValues(I.ctx.currentTime),clearInterval(E._interval),E._interval=null,Q.volume(E._fadeTo,r),E._fadeTo=null,Q._emit("fade",r)),Q},loop:function(){var r=this,Q=arguments,E,n,h;if(Q.length===0)return r._loop;if(Q.length===1)if(typeof Q[0]=="boolean")E=Q[0],r._loop=E;else return h=r._soundById(parseInt(Q[0],10)),h?h._loop:!1;else Q.length===2&&(E=Q[0],n=parseInt(Q[1],10));for(var l=r._getSoundIds(n),c=0;c=0?n=parseInt(Q[0],10):E=parseFloat(Q[0])}else Q.length===2&&(E=parseFloat(Q[0]),n=parseInt(Q[1],10));var c;if(typeof E=="number"){if(r._state!=="loaded"||r._playLock)return r._queue.push({event:"rate",action:function(){r.rate.apply(r,Q)}}),r;typeof n>"u"&&(r._rate=E),n=r._getSoundIds(n);for(var d=0;d=0?n=parseInt(Q[0],10):r._sounds.length&&(n=r._sounds[0]._id,E=parseFloat(Q[0]))}else Q.length===2&&(E=parseFloat(Q[0]),n=parseInt(Q[1],10));if(typeof n>"u")return 0;if(typeof E=="number"&&(r._state!=="loaded"||r._playLock))return r._queue.push({event:"seek",action:function(){r.seek.apply(r,Q)}}),r;var c=r._soundById(n);if(c)if(typeof E=="number"&&E>=0){var d=r.playing(n);d&&r.pause(n,!0),c._seek=E,c._ended=!1,r._clearTimer(n),!r._webAudio&&c._node&&!isNaN(c._node.duration)&&(c._node.currentTime=E);var u=function(){d&&r.play(n,!0),r._emit("seek",n)};if(d&&!r._webAudio){var y=function(){r._playLock?setTimeout(y,0):u()};setTimeout(y,0)}else u()}else if(r._webAudio){var f=r.playing(n)?I.ctx.currentTime-c._playStart:0,k=c._rateSeek?c._rateSeek-c._seek:0;return c._seek+(k+f*Math.abs(c._rate))}else return c._node.currentTime;return r},playing:function(r){var Q=this;if(typeof r=="number"){var E=Q._soundById(r);return E?!E._paused:!1}for(var n=0;n=0&&I._howls.splice(n,1);var h=!0;for(E=0;E=0){h=!1;break}return t&&h&&delete t[r._src],I.noAudio=!1,r._state="unloaded",r._sounds=[],r=null,null},on:function(r,Q,E,n){var h=this,l=h["_on"+r];return typeof Q=="function"&&l.push(n?{id:E,fn:Q,once:n}:{id:E,fn:Q}),h},off:function(r,Q,E){var n=this,h=n["_on"+r],l=0;if(typeof Q=="number"&&(E=Q,Q=null),Q||E)for(l=0;l=0;l--)(!h[l].id||h[l].id===Q||r==="load")&&(setTimeout((function(c){c.call(this,Q,E)}).bind(n,h[l].fn),0),h[l].once&&n.off(r,h[l].fn,h[l].id));return n._loadQueue(r),n},_loadQueue:function(r){var Q=this;if(Q._queue.length>0){var E=Q._queue[0];E.event===r&&(Q._queue.shift(),Q._loadQueue()),r||E.action()}return Q},_ended:function(r){var Q=this,E=r._sprite;if(!Q._webAudio&&r._node&&!r._node.paused&&!r._node.ended&&r._node.currentTime=0;n--){if(E<=Q)return;r._sounds[n]._ended&&(r._webAudio&&r._sounds[n]._node&&r._sounds[n]._node.disconnect(0),r._sounds.splice(n,1),E--)}}},_getSoundIds:function(r){var Q=this;if(typeof r>"u"){for(var E=[],n=0;n=0;if(I._scratchBuffer&&r.bufferSource&&(r.bufferSource.onended=null,r.bufferSource.disconnect(0),E))try{r.bufferSource.buffer=I._scratchBuffer}catch{}return r.bufferSource=null,Q},_clearSound:function(r){var Q=/MSIE |Trident\//.test(I._navigator&&I._navigator.userAgent);Q||(r.src="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA")}};var i=function(r){this._parent=r,this.init()};i.prototype={init:function(){var r=this,Q=r._parent;return r._muted=Q._muted,r._loop=Q._loop,r._volume=Q._volume,r._rate=Q._rate,r._seek=0,r._paused=!0,r._ended=!0,r._sprite="__default",r._id=++I._counter,Q._sounds.push(r),r.create(),r},create:function(){var r=this,Q=r._parent,E=I._muted||r._muted||r._parent._muted?0:r._volume;return Q._webAudio?(r._node=typeof I.ctx.createGain>"u"?I.ctx.createGainNode():I.ctx.createGain(),r._node.gain.setValueAtTime(E,I.ctx.currentTime),r._node.paused=!0,r._node.connect(I.masterGain)):I.noAudio||(r._node=I._obtainHtml5Audio(),r._errorFn=r._errorListener.bind(r),r._node.addEventListener("error",r._errorFn,!1),r._loadFn=r._loadListener.bind(r),r._node.addEventListener(I._canPlayEvent,r._loadFn,!1),r._endFn=r._endListener.bind(r),r._node.addEventListener("ended",r._endFn,!1),r._node.src=Q._src,r._node.preload=Q._preload===!0?"auto":Q._preload,r._node.volume=E*I.volume(),r._node.load()),r},reset:function(){var r=this,Q=r._parent;return r._muted=Q._muted,r._loop=Q._loop,r._volume=Q._volume,r._rate=Q._rate,r._seek=0,r._rateSeek=0,r._paused=!0,r._ended=!0,r._sprite="__default",r._id=++I._counter,r},_errorListener:function(){var r=this;r._parent._emit("loaderror",r._id,r._node.error?r._node.error.code:0),r._node.removeEventListener("error",r._errorFn,!1)},_loadListener:function(){var r=this,Q=r._parent;Q._duration=Math.ceil(r._node.duration*10)/10,Object.keys(Q._sprite).length===0&&(Q._sprite={__default:[0,Q._duration*1e3]}),Q._state!=="loaded"&&(Q._state="loaded",Q._emit("load"),Q._loadQueue()),r._node.removeEventListener(I._canPlayEvent,r._loadFn,!1)},_endListener:function(){var r=this,Q=r._parent;Q._duration===1/0&&(Q._duration=Math.ceil(r._node.duration*10)/10,Q._sprite.__default[1]===1/0&&(Q._sprite.__default[1]=Q._duration*1e3),Q._ended(r)),r._node.removeEventListener("ended",r._endFn,!1)}};var t={},C=function(r){var Q=r._src;if(t[Q]){r._duration=t[Q].duration,a(r);return}if(/^data:[^;]+;base64,/.test(Q)){for(var E=atob(Q.split(",")[1]),n=new Uint8Array(E.length),h=0;h0?(t[Q._src]=h,a(Q,h)):E()};typeof Promise<"u"&&I.ctx.decodeAudioData.length===1?I.ctx.decodeAudioData(r).then(n).catch(E):I.ctx.decodeAudioData(r,n,E)},a=function(r,Q){Q&&!r._duration&&(r._duration=Q.duration),Object.keys(r._sprite).length===0&&(r._sprite={__default:[0,r._duration*1e3]}),r._state!=="loaded"&&(r._state="loaded",r._emit("load"),r._loadQueue())},s=function(){if(I.usingWebAudio){try{typeof AudioContext<"u"?I.ctx=new AudioContext:typeof webkitAudioContext<"u"?I.ctx=new webkitAudioContext:I.usingWebAudio=!1}catch{I.usingWebAudio=!1}I.ctx||(I.usingWebAudio=!1);var r=/iP(hone|od|ad)/.test(I._navigator&&I._navigator.platform),Q=I._navigator&&I._navigator.appVersion.match(/OS (\d+)_(\d+)_?(\d+)?/),E=Q?parseInt(Q[1],10):null;if(r&&E&&E<9){var n=/safari/.test(I._navigator&&I._navigator.userAgent.toLowerCase());I._navigator&&!n&&(I.usingWebAudio=!1)}I.usingWebAudio&&(I.masterGain=typeof I.ctx.createGain>"u"?I.ctx.createGainNode():I.ctx.createGain(),I.masterGain.gain.setValueAtTime(I._muted?0:I._volume,I.ctx.currentTime),I.masterGain.connect(I.ctx.destination)),I._setup()}};typeof define=="function"&&define.amd&&define([],function(){return{Howler:I,Howl:e}}),typeof g<"u"&&(g.Howler=I,g.Howl=e),typeof global<"u"?(global.HowlerGlobal=A,global.Howler=I,global.Howl=e,global.Sound=i):typeof window<"u"&&(window.HowlerGlobal=A,window.Howler=I,window.Howl=e,window.Sound=i)})(),function(){HowlerGlobal.prototype._pos=[0,0,0],HowlerGlobal.prototype._orientation=[0,0,-1,0,1,0],HowlerGlobal.prototype.stereo=function(I){var e=this;if(!e.ctx||!e.ctx.listener)return e;for(var i=e._howls.length-1;i>=0;i--)e._howls[i].stereo(I);return e},HowlerGlobal.prototype.pos=function(I,e,i){var t=this;if(!t.ctx||!t.ctx.listener)return t;if(e=typeof e!="number"?t._pos[1]:e,i=typeof i!="number"?t._pos[2]:i,typeof I=="number")t._pos=[I,e,i],typeof t.ctx.listener.positionX<"u"?(t.ctx.listener.positionX.setTargetAtTime(t._pos[0],Howler.ctx.currentTime,.1),t.ctx.listener.positionY.setTargetAtTime(t._pos[1],Howler.ctx.currentTime,.1),t.ctx.listener.positionZ.setTargetAtTime(t._pos[2],Howler.ctx.currentTime,.1)):t.ctx.listener.setPosition(t._pos[0],t._pos[1],t._pos[2]);else return t._pos;return t},HowlerGlobal.prototype.orientation=function(I,e,i,t,C,o){var B=this;if(!B.ctx||!B.ctx.listener)return B;var a=B._orientation;if(e=typeof e!="number"?a[1]:e,i=typeof i!="number"?a[2]:i,t=typeof t!="number"?a[3]:t,C=typeof C!="number"?a[4]:C,o=typeof o!="number"?a[5]:o,typeof I=="number")B._orientation=[I,e,i,t,C,o],typeof B.ctx.listener.forwardX<"u"?(B.ctx.listener.forwardX.setTargetAtTime(I,Howler.ctx.currentTime,.1),B.ctx.listener.forwardY.setTargetAtTime(e,Howler.ctx.currentTime,.1),B.ctx.listener.forwardZ.setTargetAtTime(i,Howler.ctx.currentTime,.1),B.ctx.listener.upX.setTargetAtTime(t,Howler.ctx.currentTime,.1),B.ctx.listener.upY.setTargetAtTime(C,Howler.ctx.currentTime,.1),B.ctx.listener.upZ.setTargetAtTime(o,Howler.ctx.currentTime,.1)):B.ctx.listener.setOrientation(I,e,i,t,C,o);else return a;return B},Howl.prototype.init=function(I){return function(e){var i=this;return i._orientation=e.orientation||[1,0,0],i._stereo=e.stereo||null,i._pos=e.pos||null,i._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},i._onstereo=e.onstereo?[{fn:e.onstereo}]:[],i._onpos=e.onpos?[{fn:e.onpos}]:[],i._onorientation=e.onorientation?[{fn:e.onorientation}]:[],I.call(this,e)}}(Howl.prototype.init),Howl.prototype.stereo=function(I,e){var i=this;if(!i._webAudio)return i;if(i._state!=="loaded")return i._queue.push({event:"stereo",action:function(){i.stereo(I,e)}}),i;var t=typeof Howler.ctx.createStereoPanner>"u"?"spatial":"stereo";if(typeof e>"u")if(typeof I=="number")i._stereo=I,i._pos=[I,0,0];else return i._stereo;for(var C=i._getSoundIds(e),o=0;o"u")if(typeof I=="number")C._pos=[I,e,i];else return C._pos;for(var o=C._getSoundIds(t),B=0;B"u")if(typeof I=="number")C._orientation=[I,e,i];else return C._orientation;for(var o=C._getSoundIds(t),B=0;B"u"&&(i.pannerAttr||(i.pannerAttr={coneInnerAngle:i.coneInnerAngle,coneOuterAngle:i.coneOuterAngle,coneOuterGain:i.coneOuterGain,distanceModel:i.distanceModel,maxDistance:i.maxDistance,refDistance:i.refDistance,rolloffFactor:i.rolloffFactor,panningModel:i.panningModel}),I._pannerAttr={coneInnerAngle:typeof i.pannerAttr.coneInnerAngle<"u"?i.pannerAttr.coneInnerAngle:I._coneInnerAngle,coneOuterAngle:typeof i.pannerAttr.coneOuterAngle<"u"?i.pannerAttr.coneOuterAngle:I._coneOuterAngle,coneOuterGain:typeof i.pannerAttr.coneOuterGain<"u"?i.pannerAttr.coneOuterGain:I._coneOuterGain,distanceModel:typeof i.pannerAttr.distanceModel<"u"?i.pannerAttr.distanceModel:I._distanceModel,maxDistance:typeof i.pannerAttr.maxDistance<"u"?i.pannerAttr.maxDistance:I._maxDistance,refDistance:typeof i.pannerAttr.refDistance<"u"?i.pannerAttr.refDistance:I._refDistance,rolloffFactor:typeof i.pannerAttr.rolloffFactor<"u"?i.pannerAttr.rolloffFactor:I._rolloffFactor,panningModel:typeof i.pannerAttr.panningModel<"u"?i.pannerAttr.panningModel:I._panningModel});else return C=I._soundById(parseInt(e[0],10)),C?C._pannerAttr:I._pannerAttr;else e.length===2&&(i=e[0],t=parseInt(e[1],10));for(var o=I._getSoundIds(t),B=0;B{A.exports=function(I,e){for(var i=I.split("."),t=e.split("."),C=0;C<3;C++){var o=Number(i[C]),B=Number(t[C]);if(o>B)return 1;if(B>o)return-1;if(!isNaN(o)&&isNaN(B))return 1;if(isNaN(o)&&!isNaN(B))return-1}return 0}}),PQ="149",xt={ROTATE:0,PAN:1,DOLLY_PAN:2,DOLLY_ROTATE:3},Mq=0,tf=1,mq=2,Jw=1,Uq=2,WE=3,RC=0,ni=1,Ft=2,je=0,oQ=1,Cf=2,of=3,Bf=4,Nq=5,Ps=100,Fq=101,Rq=102,af=103,rf=104,Kq=200,Jq=201,vq=202,qq=203,yN=204,wN=205,Lq=206,bq=207,Yq=208,xq=209,Hq=210,Tq=0,Oq=1,_q=2,qp=3,Pq=4,jq=5,Wq=6,Zq=7,SN=0,Vq=1,zq=2,DB=0,Xq=1,$q=2,AL=3,gL=4,IL=5,fN=300,Ur=301,Nr=302,Lp=303,bp=304,Vn=306,hB=1e3,Ke=1001,Yp=1002,ie=1003,sf=1004,md=1005,cI=1006,eL=1007,SQ=1008,vi=1009,iL=1010,tL=1011,GN=1012,CL=1013,oa=1014,Rt=1015,fQ=1016,oL=1017,BL=1018,wr=1020,aL=1021,$t=1023,rL=1024,sL=1025,Sr=1026,Fr=1027,QL=1028,EL=1029,kN=1030,nL=1031,hL=1033,Ud=33776,Nd=33777,Fd=33778,Rd=33779,Qf=35840,Ef=35841,nf=35842,hf=35843,lL=36196,lf=37492,cf=37496,Df=37808,df=37809,uf=37810,pf=37811,yf=37812,wf=37813,Sf=37814,ff=37815,Gf=37816,kf=37817,Mf=37818,mf=37819,Uf=37820,Nf=37821,Kd=36492,cL=36283,Ff=36284,Rf=36285,Kf=36286,MN=2200,mN=2201,vw=2202,Ec=2300,nc=2301,Jd=2302,Xs=2400,$s=2401,hc=2402,qw=2500,DL=2501,fo=3e3,sI=3001,UB=3200,UN=3201,dL=0,uL=1,ao="srgb",lc="srgb-linear",vd=7680,pL=519,xp=35044,Jf="300 es",Hp=1035,Si=class{addEventListener(A,I){this._listeners===void 0&&(this._listeners={});let e=this._listeners;e[A]===void 0&&(e[A]=[]),e[A].indexOf(I)===-1&&e[A].push(I)}hasEventListener(A,I){if(this._listeners===void 0)return!1;let e=this._listeners;return e[A]!==void 0&&e[A].indexOf(I)!==-1}removeEventListener(A,I){if(this._listeners===void 0)return;let e=this._listeners[A];if(e!==void 0){let i=e.indexOf(I);i!==-1&&e.splice(i,1)}}dispatchEvent(A){if(this._listeners===void 0)return;let I=this._listeners[A.type];if(I!==void 0){A.target=this;let e=I.slice(0);for(let i=0,t=e.length;i>8&255]+mi[g>>16&255]+mi[g>>24&255]+"-"+mi[A&255]+mi[A>>8&255]+"-"+mi[A>>16&15|64]+mi[A>>24&255]+"-"+mi[I&63|128]+mi[I>>8&255]+"-"+mi[I>>16&255]+mi[I>>24&255]+mi[e&255]+mi[e>>8&255]+mi[e>>16&255]+mi[e>>24&255]).toLowerCase()}function ii(g,A,I){return Math.max(A,Math.min(I,g))}function Lw(g,A){return(g%A+A)%A}function yL(g,A,I,e,i){return e+(g-A)*(i-e)/(I-A)}function wL(g,A,I){return g!==A?(I-g)/(A-g):0}function tn(g,A,I){return(1-I)*g+I*A}function SL(g,A,I,e){return tn(g,A,1-Math.exp(-I*e))}function fL(g,A=1){return A-Math.abs(Lw(g,A*2)-A)}function GL(g,A,I){return g<=A?0:g>=I?1:(g=(g-A)/(I-A),g*g*(3-2*g))}function kL(g,A,I){return g<=A?0:g>=I?1:(g=(g-A)/(I-A),g*g*g*(g*(g*6-15)+10))}function ML(g,A){return g+Math.floor(Math.random()*(A-g+1))}function mL(g,A){return g+Math.random()*(A-g)}function UL(g){return g*(.5-Math.random())}function NL(g){g!==void 0&&(vf=g);let A=vf+=1831565813;return A=Math.imul(A^A>>>15,A|1),A^=A+Math.imul(A^A>>>7,A|61),((A^A>>>14)>>>0)/4294967296}function FL(g){return g*en}function RL(g){return g*dn}function Tp(g){return(g&g-1)===0&&g!==0}function NN(g){return Math.pow(2,Math.ceil(Math.log(g)/Math.LN2))}function cc(g){return Math.pow(2,Math.floor(Math.log(g)/Math.LN2))}function KL(g,A,I,e,i){let t=Math.cos,C=Math.sin,o=t(I/2),B=C(I/2),a=t((A+e)/2),s=C((A+e)/2),r=t((A-e)/2),Q=C((A-e)/2),E=t((e-A)/2),n=C((e-A)/2);switch(i){case"XYX":g.set(o*s,B*r,B*Q,o*a);break;case"YZY":g.set(B*Q,o*s,B*r,o*a);break;case"ZXZ":g.set(B*r,B*Q,o*s,o*a);break;case"XZX":g.set(o*s,B*n,B*E,o*a);break;case"YXY":g.set(B*E,o*s,B*n,o*a);break;case"ZYZ":g.set(B*n,B*E,o*s,o*a);break;default:console.warn("THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: "+i)}}function lB(g,A){switch(A.constructor){case Float32Array:return g;case Uint16Array:return g/65535;case Uint8Array:return g/255;case Int16Array:return Math.max(g/32767,-1);case Int8Array:return Math.max(g/127,-1);default:throw new Error("Invalid component type.")}}function ee(g,A){switch(A.constructor){case Float32Array:return g;case Uint16Array:return Math.round(g*65535);case Uint8Array:return Math.round(g*255);case Int16Array:return Math.round(g*32767);case Int8Array:return Math.round(g*127);default:throw new Error("Invalid component type.")}}var vg=Object.freeze({__proto__:null,DEG2RAD:en,RAD2DEG:dn,ceilPowerOfTwo:NN,clamp:ii,damp:SL,degToRad:FL,denormalize:lB,euclideanModulo:Lw,floorPowerOfTwo:cc,generateUUID:IC,inverseLerp:wL,isPowerOfTwo:Tp,lerp:tn,mapLinear:yL,normalize:ee,pingpong:fL,radToDeg:RL,randFloat:mL,randFloatSpread:UL,randInt:ML,seededRandom:NL,setQuaternionFromProperEuler:KL,smootherstep:kL,smoothstep:GL}),sA=class{constructor(A=0,I=0){sA.prototype.isVector2=!0,this.x=A,this.y=I}get width(){return this.x}set width(A){this.x=A}get height(){return this.y}set height(A){this.y=A}set(A,I){return this.x=A,this.y=I,this}setScalar(A){return this.x=A,this.y=A,this}setX(A){return this.x=A,this}setY(A){return this.y=A,this}setComponent(A,I){switch(A){case 0:this.x=I;break;case 1:this.y=I;break;default:throw new Error("index is out of range: "+A)}return this}getComponent(A){switch(A){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+A)}}clone(){return new this.constructor(this.x,this.y)}copy(A){return this.x=A.x,this.y=A.y,this}add(A){return this.x+=A.x,this.y+=A.y,this}addScalar(A){return this.x+=A,this.y+=A,this}addVectors(A,I){return this.x=A.x+I.x,this.y=A.y+I.y,this}addScaledVector(A,I){return this.x+=A.x*I,this.y+=A.y*I,this}sub(A){return this.x-=A.x,this.y-=A.y,this}subScalar(A){return this.x-=A,this.y-=A,this}subVectors(A,I){return this.x=A.x-I.x,this.y=A.y-I.y,this}multiply(A){return this.x*=A.x,this.y*=A.y,this}multiplyScalar(A){return this.x*=A,this.y*=A,this}divide(A){return this.x/=A.x,this.y/=A.y,this}divideScalar(A){return this.multiplyScalar(1/A)}applyMatrix3(A){let I=this.x,e=this.y,i=A.elements;return this.x=i[0]*I+i[3]*e+i[6],this.y=i[1]*I+i[4]*e+i[7],this}min(A){return this.x=Math.min(this.x,A.x),this.y=Math.min(this.y,A.y),this}max(A){return this.x=Math.max(this.x,A.x),this.y=Math.max(this.y,A.y),this}clamp(A,I){return this.x=Math.max(A.x,Math.min(I.x,this.x)),this.y=Math.max(A.y,Math.min(I.y,this.y)),this}clampScalar(A,I){return this.x=Math.max(A,Math.min(I,this.x)),this.y=Math.max(A,Math.min(I,this.y)),this}clampLength(A,I){let e=this.length();return this.divideScalar(e||1).multiplyScalar(Math.max(A,Math.min(I,e)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}roundToZero(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this}negate(){return this.x=-this.x,this.y=-this.y,this}dot(A){return this.x*A.x+this.y*A.y}cross(A){return this.x*A.y-this.y*A.x}lengthSq(){return this.x*this.x+this.y*this.y}length(){return Math.sqrt(this.x*this.x+this.y*this.y)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)}normalize(){return this.divideScalar(this.length()||1)}angle(){return Math.atan2(-this.y,-this.x)+Math.PI}distanceTo(A){return Math.sqrt(this.distanceToSquared(A))}distanceToSquared(A){let I=this.x-A.x,e=this.y-A.y;return I*I+e*e}manhattanDistanceTo(A){return Math.abs(this.x-A.x)+Math.abs(this.y-A.y)}setLength(A){return this.normalize().multiplyScalar(A)}lerp(A,I){return this.x+=(A.x-this.x)*I,this.y+=(A.y-this.y)*I,this}lerpVectors(A,I,e){return this.x=A.x+(I.x-A.x)*e,this.y=A.y+(I.y-A.y)*e,this}equals(A){return A.x===this.x&&A.y===this.y}fromArray(A,I=0){return this.x=A[I],this.y=A[I+1],this}toArray(A=[],I=0){return A[I]=this.x,A[I+1]=this.y,A}fromBufferAttribute(A,I){return this.x=A.getX(I),this.y=A.getY(I),this}rotateAround(A,I){let e=Math.cos(I),i=Math.sin(I),t=this.x-A.x,C=this.y-A.y;return this.x=t*e-C*i+A.x,this.y=t*i+C*e+A.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y}},hi=class{constructor(){hi.prototype.isMatrix3=!0,this.elements=[1,0,0,0,1,0,0,0,1]}set(A,I,e,i,t,C,o,B,a){let s=this.elements;return s[0]=A,s[1]=i,s[2]=o,s[3]=I,s[4]=t,s[5]=B,s[6]=e,s[7]=C,s[8]=a,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(A){let I=this.elements,e=A.elements;return I[0]=e[0],I[1]=e[1],I[2]=e[2],I[3]=e[3],I[4]=e[4],I[5]=e[5],I[6]=e[6],I[7]=e[7],I[8]=e[8],this}extractBasis(A,I,e){return A.setFromMatrix3Column(this,0),I.setFromMatrix3Column(this,1),e.setFromMatrix3Column(this,2),this}setFromMatrix4(A){let I=A.elements;return this.set(I[0],I[4],I[8],I[1],I[5],I[9],I[2],I[6],I[10]),this}multiply(A){return this.multiplyMatrices(this,A)}premultiply(A){return this.multiplyMatrices(A,this)}multiplyMatrices(A,I){let e=A.elements,i=I.elements,t=this.elements,C=e[0],o=e[3],B=e[6],a=e[1],s=e[4],r=e[7],Q=e[2],E=e[5],n=e[8],h=i[0],l=i[3],c=i[6],d=i[1],u=i[4],y=i[7],f=i[2],k=i[5],M=i[8];return t[0]=C*h+o*d+B*f,t[3]=C*l+o*u+B*k,t[6]=C*c+o*y+B*M,t[1]=a*h+s*d+r*f,t[4]=a*l+s*u+r*k,t[7]=a*c+s*y+r*M,t[2]=Q*h+E*d+n*f,t[5]=Q*l+E*u+n*k,t[8]=Q*c+E*y+n*M,this}multiplyScalar(A){let I=this.elements;return I[0]*=A,I[3]*=A,I[6]*=A,I[1]*=A,I[4]*=A,I[7]*=A,I[2]*=A,I[5]*=A,I[8]*=A,this}determinant(){let A=this.elements,I=A[0],e=A[1],i=A[2],t=A[3],C=A[4],o=A[5],B=A[6],a=A[7],s=A[8];return I*C*s-I*o*a-e*t*s+e*o*B+i*t*a-i*C*B}invert(){let A=this.elements,I=A[0],e=A[1],i=A[2],t=A[3],C=A[4],o=A[5],B=A[6],a=A[7],s=A[8],r=s*C-o*a,Q=o*B-s*t,E=a*t-C*B,n=I*r+e*Q+i*E;if(n===0)return this.set(0,0,0,0,0,0,0,0,0);let h=1/n;return A[0]=r*h,A[1]=(i*a-s*e)*h,A[2]=(o*e-i*C)*h,A[3]=Q*h,A[4]=(s*I-i*B)*h,A[5]=(i*t-o*I)*h,A[6]=E*h,A[7]=(e*B-a*I)*h,A[8]=(C*I-e*t)*h,this}transpose(){let A,I=this.elements;return A=I[1],I[1]=I[3],I[3]=A,A=I[2],I[2]=I[6],I[6]=A,A=I[5],I[5]=I[7],I[7]=A,this}getNormalMatrix(A){return this.setFromMatrix4(A).invert().transpose()}transposeIntoArray(A){let I=this.elements;return A[0]=I[0],A[1]=I[3],A[2]=I[6],A[3]=I[1],A[4]=I[4],A[5]=I[7],A[6]=I[2],A[7]=I[5],A[8]=I[8],this}setUvTransform(A,I,e,i,t,C,o){let B=Math.cos(t),a=Math.sin(t);return this.set(e*B,e*a,-e*(B*C+a*o)+C+A,-i*a,i*B,-i*(-a*C+B*o)+o+I,0,0,1),this}scale(A,I){return this.premultiply(qd.makeScale(A,I)),this}rotate(A){return this.premultiply(qd.makeRotation(-A)),this}translate(A,I){return this.premultiply(qd.makeTranslation(A,I)),this}makeTranslation(A,I){return this.set(1,0,A,0,1,I,0,0,1),this}makeRotation(A){let I=Math.cos(A),e=Math.sin(A);return this.set(I,-e,0,e,I,0,0,0,1),this}makeScale(A,I){return this.set(A,0,0,0,I,0,0,0,1),this}equals(A){let I=this.elements,e=A.elements;for(let i=0;i<9;i++)if(I[i]!==e[i])return!1;return!0}fromArray(A,I=0){for(let e=0;e<9;e++)this.elements[e]=A[e+I];return this}toArray(A=[],I=0){let e=this.elements;return A[I]=e[0],A[I+1]=e[1],A[I+2]=e[2],A[I+3]=e[3],A[I+4]=e[4],A[I+5]=e[5],A[I+6]=e[6],A[I+7]=e[7],A[I+8]=e[8],A}clone(){return new this.constructor().fromArray(this.elements)}},qd=new hi;function FN(g){for(let A=g.length-1;A>=0;--A)if(g[A]>=65535)return!0;return!1}var JL={Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array};function Gh(g,A){return new JL[g](A)}function Dc(g){return document.createElementNS("http://www.w3.org/1999/xhtml",g)}function fr(g){return g<.04045?g*.0773993808:Math.pow(g*.9478672986+.0521327014,2.4)}function Wl(g){return g<.0031308?g*12.92:1.055*Math.pow(g,.41666)-.055}var Ld={[ao]:{[lc]:fr},[lc]:{[ao]:Wl}},Yi={legacyMode:!0,get workingColorSpace(){return lc},set workingColorSpace(g){console.warn("THREE.ColorManagement: .workingColorSpace is readonly.")},convert:function(g,A,I){if(this.legacyMode||A===I||!A||!I)return g;if(Ld[A]&&Ld[A][I]!==void 0){let e=Ld[A][I];return g.r=e(g.r),g.g=e(g.g),g.b=e(g.b),g}throw new Error("Unsupported color space conversion.")},fromWorkingColorSpace:function(g,A){return this.convert(g,this.workingColorSpace,A)},toWorkingColorSpace:function(g,A){return this.convert(g,A,this.workingColorSpace)}},RN={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074},$e={r:0,g:0,b:0},nC={h:0,s:0,l:0},kh={h:0,s:0,l:0};function bd(g,A,I){return I<0&&(I+=1),I>1&&(I-=1),I<1/6?g+(A-g)*6*I:I<1/2?A:I<2/3?g+(A-g)*6*(2/3-I):g}function Mh(g,A){return A.r=g.r,A.g=g.g,A.b=g.b,A}var Og=class{constructor(A,I,e){return this.isColor=!0,this.r=1,this.g=1,this.b=1,I===void 0&&e===void 0?this.set(A):this.setRGB(A,I,e)}set(A){return A&&A.isColor?this.copy(A):typeof A=="number"?this.setHex(A):typeof A=="string"&&this.setStyle(A),this}setScalar(A){return this.r=A,this.g=A,this.b=A,this}setHex(A,I=ao){return A=Math.floor(A),this.r=(A>>16&255)/255,this.g=(A>>8&255)/255,this.b=(A&255)/255,Yi.toWorkingColorSpace(this,I),this}setRGB(A,I,e,i=Yi.workingColorSpace){return this.r=A,this.g=I,this.b=e,Yi.toWorkingColorSpace(this,i),this}setHSL(A,I,e,i=Yi.workingColorSpace){if(A=Lw(A,1),I=ii(I,0,1),e=ii(e,0,1),I===0)this.r=this.g=this.b=e;else{let t=e<=.5?e*(1+I):e+I-e*I,C=2*e-t;this.r=bd(C,t,A+1/3),this.g=bd(C,t,A),this.b=bd(C,t,A-1/3)}return Yi.toWorkingColorSpace(this,i),this}setStyle(A,I=ao){function e(t){t!==void 0&&parseFloat(t)<1&&console.warn("THREE.Color: Alpha component of "+A+" will be ignored.")}let i;if(i=/^((?:rgb|hsl)a?)\(([^\)]*)\)/.exec(A)){let t,C=i[1],o=i[2];switch(C){case"rgb":case"rgba":if(t=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(o))return this.r=Math.min(255,parseInt(t[1],10))/255,this.g=Math.min(255,parseInt(t[2],10))/255,this.b=Math.min(255,parseInt(t[3],10))/255,Yi.toWorkingColorSpace(this,I),e(t[4]),this;if(t=/^\s*(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(o))return this.r=Math.min(100,parseInt(t[1],10))/100,this.g=Math.min(100,parseInt(t[2],10))/100,this.b=Math.min(100,parseInt(t[3],10))/100,Yi.toWorkingColorSpace(this,I),e(t[4]),this;break;case"hsl":case"hsla":if(t=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)\%\s*,\s*(\d*\.?\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(o)){let B=parseFloat(t[1])/360,a=parseFloat(t[2])/100,s=parseFloat(t[3])/100;return e(t[4]),this.setHSL(B,a,s,I)}break}}else if(i=/^\#([A-Fa-f\d]+)$/.exec(A)){let t=i[1],C=t.length;if(C===3)return this.r=parseInt(t.charAt(0)+t.charAt(0),16)/255,this.g=parseInt(t.charAt(1)+t.charAt(1),16)/255,this.b=parseInt(t.charAt(2)+t.charAt(2),16)/255,Yi.toWorkingColorSpace(this,I),this;if(C===6)return this.r=parseInt(t.charAt(0)+t.charAt(1),16)/255,this.g=parseInt(t.charAt(2)+t.charAt(3),16)/255,this.b=parseInt(t.charAt(4)+t.charAt(5),16)/255,Yi.toWorkingColorSpace(this,I),this}return A&&A.length>0?this.setColorName(A,I):this}setColorName(A,I=ao){let e=RN[A.toLowerCase()];return e!==void 0?this.setHex(e,I):console.warn("THREE.Color: Unknown color "+A),this}clone(){return new this.constructor(this.r,this.g,this.b)}copy(A){return this.r=A.r,this.g=A.g,this.b=A.b,this}copySRGBToLinear(A){return this.r=fr(A.r),this.g=fr(A.g),this.b=fr(A.b),this}copyLinearToSRGB(A){return this.r=Wl(A.r),this.g=Wl(A.g),this.b=Wl(A.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(A=ao){return Yi.fromWorkingColorSpace(Mh(this,$e),A),ii($e.r*255,0,255)<<16^ii($e.g*255,0,255)<<8^ii($e.b*255,0,255)<<0}getHexString(A=ao){return("000000"+this.getHex(A).toString(16)).slice(-6)}getHSL(A,I=Yi.workingColorSpace){Yi.fromWorkingColorSpace(Mh(this,$e),I);let e=$e.r,i=$e.g,t=$e.b,C=Math.max(e,i,t),o=Math.min(e,i,t),B,a,s=(o+C)/2;if(o===C)B=0,a=0;else{let r=C-o;switch(a=s<=.5?r/(C+o):r/(2-C-o),C){case e:B=(i-t)/r+(i"u")return g.src;let A;if(g instanceof HTMLCanvasElement)A=g;else{Qs===void 0&&(Qs=Dc("canvas")),Qs.width=g.width,Qs.height=g.height;let I=Qs.getContext("2d");g instanceof ImageData?I.putImageData(g,0,0):I.drawImage(g,0,0,g.width,g.height),A=Qs}return A.width>2048||A.height>2048?(console.warn("THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons",g),A.toDataURL("image/jpeg",.6)):A.toDataURL("image/png")}static sRGBToLinear(g){if(typeof HTMLImageElement<"u"&&g instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&g instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&g instanceof ImageBitmap){let A=Dc("canvas");A.width=g.width,A.height=g.height;let I=A.getContext("2d");I.drawImage(g,0,0,g.width,g.height);let e=I.getImageData(0,0,g.width,g.height),i=e.data;for(let t=0;t0&&(e.userData=this.userData),I||(A.textures[this.uuid]=e),e}dispose(){this.dispatchEvent({type:"dispose"})}transformUv(A){if(this.mapping!==fN)return A;if(A.applyMatrix3(this.matrix),A.x<0||A.x>1)switch(this.wrapS){case hB:A.x=A.x-Math.floor(A.x);break;case Ke:A.x=A.x<0?0:1;break;case Yp:Math.abs(Math.floor(A.x)%2)===1?A.x=Math.ceil(A.x)-A.x:A.x=A.x-Math.floor(A.x);break}if(A.y<0||A.y>1)switch(this.wrapT){case hB:A.y=A.y-Math.floor(A.y);break;case Ke:A.y=A.y<0?0:1;break;case Yp:Math.abs(Math.floor(A.y)%2)===1?A.y=Math.ceil(A.y)-A.y:A.y=A.y-Math.floor(A.y);break}return this.flipY&&(A.y=1-A.y),A}set needsUpdate(A){A===!0&&(this.version++,this.source.needsUpdate=!0)}};ti.DEFAULT_IMAGE=null;ti.DEFAULT_MAPPING=fN;ti.DEFAULT_ANISOTROPY=1;var EI=class{constructor(A=0,I=0,e=0,i=1){EI.prototype.isVector4=!0,this.x=A,this.y=I,this.z=e,this.w=i}get width(){return this.z}set width(A){this.z=A}get height(){return this.w}set height(A){this.w=A}set(A,I,e,i){return this.x=A,this.y=I,this.z=e,this.w=i,this}setScalar(A){return this.x=A,this.y=A,this.z=A,this.w=A,this}setX(A){return this.x=A,this}setY(A){return this.y=A,this}setZ(A){return this.z=A,this}setW(A){return this.w=A,this}setComponent(A,I){switch(A){case 0:this.x=I;break;case 1:this.y=I;break;case 2:this.z=I;break;case 3:this.w=I;break;default:throw new Error("index is out of range: "+A)}return this}getComponent(A){switch(A){case 0:return this.x;case 1:return this.y;case 2:return this.z;case 3:return this.w;default:throw new Error("index is out of range: "+A)}}clone(){return new this.constructor(this.x,this.y,this.z,this.w)}copy(A){return this.x=A.x,this.y=A.y,this.z=A.z,this.w=A.w!==void 0?A.w:1,this}add(A){return this.x+=A.x,this.y+=A.y,this.z+=A.z,this.w+=A.w,this}addScalar(A){return this.x+=A,this.y+=A,this.z+=A,this.w+=A,this}addVectors(A,I){return this.x=A.x+I.x,this.y=A.y+I.y,this.z=A.z+I.z,this.w=A.w+I.w,this}addScaledVector(A,I){return this.x+=A.x*I,this.y+=A.y*I,this.z+=A.z*I,this.w+=A.w*I,this}sub(A){return this.x-=A.x,this.y-=A.y,this.z-=A.z,this.w-=A.w,this}subScalar(A){return this.x-=A,this.y-=A,this.z-=A,this.w-=A,this}subVectors(A,I){return this.x=A.x-I.x,this.y=A.y-I.y,this.z=A.z-I.z,this.w=A.w-I.w,this}multiply(A){return this.x*=A.x,this.y*=A.y,this.z*=A.z,this.w*=A.w,this}multiplyScalar(A){return this.x*=A,this.y*=A,this.z*=A,this.w*=A,this}applyMatrix4(A){let I=this.x,e=this.y,i=this.z,t=this.w,C=A.elements;return this.x=C[0]*I+C[4]*e+C[8]*i+C[12]*t,this.y=C[1]*I+C[5]*e+C[9]*i+C[13]*t,this.z=C[2]*I+C[6]*e+C[10]*i+C[14]*t,this.w=C[3]*I+C[7]*e+C[11]*i+C[15]*t,this}divideScalar(A){return this.multiplyScalar(1/A)}setAxisAngleFromQuaternion(A){this.w=2*Math.acos(A.w);let I=Math.sqrt(1-A.w*A.w);return I<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=A.x/I,this.y=A.y/I,this.z=A.z/I),this}setAxisAngleFromRotationMatrix(A){let I,e,i,t,C=A.elements,o=C[0],B=C[4],a=C[8],s=C[1],r=C[5],Q=C[9],E=C[2],n=C[6],h=C[10];if(Math.abs(B-s)<.01&&Math.abs(a-E)<.01&&Math.abs(Q-n)<.01){if(Math.abs(B+s)<.1&&Math.abs(a+E)<.1&&Math.abs(Q+n)<.1&&Math.abs(o+r+h-3)<.1)return this.set(1,0,0,0),this;I=Math.PI;let c=(o+1)/2,d=(r+1)/2,u=(h+1)/2,y=(B+s)/4,f=(a+E)/4,k=(Q+n)/4;return c>d&&c>u?c<.01?(e=0,i=.707106781,t=.707106781):(e=Math.sqrt(c),i=y/e,t=f/e):d>u?d<.01?(e=.707106781,i=0,t=.707106781):(i=Math.sqrt(d),e=y/i,t=k/i):u<.01?(e=.707106781,i=.707106781,t=0):(t=Math.sqrt(u),e=f/t,i=k/t),this.set(e,i,t,I),this}let l=Math.sqrt((n-Q)*(n-Q)+(a-E)*(a-E)+(s-B)*(s-B));return Math.abs(l)<.001&&(l=1),this.x=(n-Q)/l,this.y=(a-E)/l,this.z=(s-B)/l,this.w=Math.acos((o+r+h-1)/2),this}min(A){return this.x=Math.min(this.x,A.x),this.y=Math.min(this.y,A.y),this.z=Math.min(this.z,A.z),this.w=Math.min(this.w,A.w),this}max(A){return this.x=Math.max(this.x,A.x),this.y=Math.max(this.y,A.y),this.z=Math.max(this.z,A.z),this.w=Math.max(this.w,A.w),this}clamp(A,I){return this.x=Math.max(A.x,Math.min(I.x,this.x)),this.y=Math.max(A.y,Math.min(I.y,this.y)),this.z=Math.max(A.z,Math.min(I.z,this.z)),this.w=Math.max(A.w,Math.min(I.w,this.w)),this}clampScalar(A,I){return this.x=Math.max(A,Math.min(I,this.x)),this.y=Math.max(A,Math.min(I,this.y)),this.z=Math.max(A,Math.min(I,this.z)),this.w=Math.max(A,Math.min(I,this.w)),this}clampLength(A,I){let e=this.length();return this.divideScalar(e||1).multiplyScalar(Math.max(A,Math.min(I,e)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this.w=Math.floor(this.w),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this.w=Math.ceil(this.w),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this.w=Math.round(this.w),this}roundToZero(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this.z=this.z<0?Math.ceil(this.z):Math.floor(this.z),this.w=this.w<0?Math.ceil(this.w):Math.floor(this.w),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this.w=-this.w,this}dot(A){return this.x*A.x+this.y*A.y+this.z*A.z+this.w*A.w}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)+Math.abs(this.w)}normalize(){return this.divideScalar(this.length()||1)}setLength(A){return this.normalize().multiplyScalar(A)}lerp(A,I){return this.x+=(A.x-this.x)*I,this.y+=(A.y-this.y)*I,this.z+=(A.z-this.z)*I,this.w+=(A.w-this.w)*I,this}lerpVectors(A,I,e){return this.x=A.x+(I.x-A.x)*e,this.y=A.y+(I.y-A.y)*e,this.z=A.z+(I.z-A.z)*e,this.w=A.w+(I.w-A.w)*e,this}equals(A){return A.x===this.x&&A.y===this.y&&A.z===this.z&&A.w===this.w}fromArray(A,I=0){return this.x=A[I],this.y=A[I+1],this.z=A[I+2],this.w=A[I+3],this}toArray(A=[],I=0){return A[I]=this.x,A[I+1]=this.y,A[I+2]=this.z,A[I+3]=this.w,A}fromBufferAttribute(A,I){return this.x=A.getX(I),this.y=A.getY(I),this.z=A.getZ(I),this.w=A.getW(I),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this.w=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z,yield this.w}},WI=class extends Si{constructor(A=1,I=1,e={}){super(),this.isWebGLRenderTarget=!0,this.width=A,this.height=I,this.depth=1,this.scissor=new EI(0,0,A,I),this.scissorTest=!1,this.viewport=new EI(0,0,A,I);let i={width:A,height:I,depth:1};this.texture=new ti(i,e.mapping,e.wrapS,e.wrapT,e.magFilter,e.minFilter,e.format,e.type,e.anisotropy,e.encoding),this.texture.isRenderTargetTexture=!0,this.texture.flipY=!1,this.texture.generateMipmaps=e.generateMipmaps!==void 0?e.generateMipmaps:!1,this.texture.internalFormat=e.internalFormat!==void 0?e.internalFormat:null,this.texture.minFilter=e.minFilter!==void 0?e.minFilter:cI,this.depthBuffer=e.depthBuffer!==void 0?e.depthBuffer:!0,this.stencilBuffer=e.stencilBuffer!==void 0?e.stencilBuffer:!1,this.depthTexture=e.depthTexture!==void 0?e.depthTexture:null,this.samples=e.samples!==void 0?e.samples:0}setSize(A,I,e=1){(this.width!==A||this.height!==I||this.depth!==e)&&(this.width=A,this.height=I,this.depth=e,this.texture.image.width=A,this.texture.image.height=I,this.texture.image.depth=e,this.dispose()),this.viewport.set(0,0,A,I),this.scissor.set(0,0,A,I)}clone(){return new this.constructor().copy(this)}copy(A){this.width=A.width,this.height=A.height,this.depth=A.depth,this.viewport.copy(A.viewport),this.texture=A.texture.clone(),this.texture.isRenderTargetTexture=!0;let I=Object.assign({},A.texture.image);return this.texture.source=new JN(I),this.depthBuffer=A.depthBuffer,this.stencilBuffer=A.stencilBuffer,A.depthTexture!==null&&(this.depthTexture=A.depthTexture.clone()),this.samples=A.samples,this}dispose(){this.dispatchEvent({type:"dispose"})}},vN=class extends ti{constructor(g=null,A=1,I=1,e=1){super(null),this.isDataArrayTexture=!0,this.image={data:g,width:A,height:I,depth:e},this.magFilter=ie,this.minFilter=ie,this.wrapR=Ke,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}},qL=class extends ti{constructor(g=null,A=1,I=1,e=1){super(null),this.isData3DTexture=!0,this.image={data:g,width:A,height:I,depth:e},this.magFilter=ie,this.minFilter=ie,this.wrapR=Ke,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}},LL=class extends WI{constructor(g=1,A=1,I=1,e={}){super(g,A,e),this.isWebGLMultipleRenderTargets=!0;let i=this.texture;this.texture=[];for(let t=0;t=0?1:-1,u=1-c*c;if(u>Number.EPSILON){let f=Math.sqrt(u),k=Math.atan2(f,c*d);l=Math.sin(l*k)/f,o=Math.sin(o*k)/f}let y=o*d;if(B=B*l+Q*y,a=a*l+E*y,s=s*l+n*y,r=r*l+h*y,l===1-o){let f=1/Math.sqrt(B*B+a*a+s*s+r*r);B*=f,a*=f,s*=f,r*=f}}A[I]=B,A[I+1]=a,A[I+2]=s,A[I+3]=r}static multiplyQuaternionsFlat(A,I,e,i,t,C){let o=e[i],B=e[i+1],a=e[i+2],s=e[i+3],r=t[C],Q=t[C+1],E=t[C+2],n=t[C+3];return A[I]=o*n+s*r+B*E-a*Q,A[I+1]=B*n+s*Q+a*r-o*E,A[I+2]=a*n+s*E+o*Q-B*r,A[I+3]=s*n-o*r-B*Q-a*E,A}get x(){return this._x}set x(A){this._x=A,this._onChangeCallback()}get y(){return this._y}set y(A){this._y=A,this._onChangeCallback()}get z(){return this._z}set z(A){this._z=A,this._onChangeCallback()}get w(){return this._w}set w(A){this._w=A,this._onChangeCallback()}set(A,I,e,i){return this._x=A,this._y=I,this._z=e,this._w=i,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._w)}copy(A){return this._x=A.x,this._y=A.y,this._z=A.z,this._w=A.w,this._onChangeCallback(),this}setFromEuler(A,I){let e=A._x,i=A._y,t=A._z,C=A._order,o=Math.cos,B=Math.sin,a=o(e/2),s=o(i/2),r=o(t/2),Q=B(e/2),E=B(i/2),n=B(t/2);switch(C){case"XYZ":this._x=Q*s*r+a*E*n,this._y=a*E*r-Q*s*n,this._z=a*s*n+Q*E*r,this._w=a*s*r-Q*E*n;break;case"YXZ":this._x=Q*s*r+a*E*n,this._y=a*E*r-Q*s*n,this._z=a*s*n-Q*E*r,this._w=a*s*r+Q*E*n;break;case"ZXY":this._x=Q*s*r-a*E*n,this._y=a*E*r+Q*s*n,this._z=a*s*n+Q*E*r,this._w=a*s*r-Q*E*n;break;case"ZYX":this._x=Q*s*r-a*E*n,this._y=a*E*r+Q*s*n,this._z=a*s*n-Q*E*r,this._w=a*s*r+Q*E*n;break;case"YZX":this._x=Q*s*r+a*E*n,this._y=a*E*r+Q*s*n,this._z=a*s*n-Q*E*r,this._w=a*s*r-Q*E*n;break;case"XZY":this._x=Q*s*r-a*E*n,this._y=a*E*r-Q*s*n,this._z=a*s*n+Q*E*r,this._w=a*s*r+Q*E*n;break;default:console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: "+C)}return I!==!1&&this._onChangeCallback(),this}setFromAxisAngle(A,I){let e=I/2,i=Math.sin(e);return this._x=A.x*i,this._y=A.y*i,this._z=A.z*i,this._w=Math.cos(e),this._onChangeCallback(),this}setFromRotationMatrix(A){let I=A.elements,e=I[0],i=I[4],t=I[8],C=I[1],o=I[5],B=I[9],a=I[2],s=I[6],r=I[10],Q=e+o+r;if(Q>0){let E=.5/Math.sqrt(Q+1);this._w=.25/E,this._x=(s-B)*E,this._y=(t-a)*E,this._z=(C-i)*E}else if(e>o&&e>r){let E=2*Math.sqrt(1+e-o-r);this._w=(s-B)/E,this._x=.25*E,this._y=(i+C)/E,this._z=(t+a)/E}else if(o>r){let E=2*Math.sqrt(1+o-e-r);this._w=(t-a)/E,this._x=(i+C)/E,this._y=.25*E,this._z=(B+s)/E}else{let E=2*Math.sqrt(1+r-e-o);this._w=(C-i)/E,this._x=(t+a)/E,this._y=(B+s)/E,this._z=.25*E}return this._onChangeCallback(),this}setFromUnitVectors(A,I){let e=A.dot(I)+1;return eMath.abs(A.z)?(this._x=-A.y,this._y=A.x,this._z=0,this._w=e):(this._x=0,this._y=-A.z,this._z=A.y,this._w=e)):(this._x=A.y*I.z-A.z*I.y,this._y=A.z*I.x-A.x*I.z,this._z=A.x*I.y-A.y*I.x,this._w=e),this.normalize()}angleTo(A){return 2*Math.acos(Math.abs(ii(this.dot(A),-1,1)))}rotateTowards(A,I){let e=this.angleTo(A);if(e===0)return this;let i=Math.min(1,I/e);return this.slerp(A,i),this}identity(){return this.set(0,0,0,1)}invert(){return this.conjugate()}conjugate(){return this._x*=-1,this._y*=-1,this._z*=-1,this._onChangeCallback(),this}dot(A){return this._x*A._x+this._y*A._y+this._z*A._z+this._w*A._w}lengthSq(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w}length(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)}normalize(){let A=this.length();return A===0?(this._x=0,this._y=0,this._z=0,this._w=1):(A=1/A,this._x=this._x*A,this._y=this._y*A,this._z=this._z*A,this._w=this._w*A),this._onChangeCallback(),this}multiply(A){return this.multiplyQuaternions(this,A)}premultiply(A){return this.multiplyQuaternions(A,this)}multiplyQuaternions(A,I){let e=A._x,i=A._y,t=A._z,C=A._w,o=I._x,B=I._y,a=I._z,s=I._w;return this._x=e*s+C*o+i*a-t*B,this._y=i*s+C*B+t*o-e*a,this._z=t*s+C*a+e*B-i*o,this._w=C*s-e*o-i*B-t*a,this._onChangeCallback(),this}slerp(A,I){if(I===0)return this;if(I===1)return this.copy(A);let e=this._x,i=this._y,t=this._z,C=this._w,o=C*A._w+e*A._x+i*A._y+t*A._z;if(o<0?(this._w=-A._w,this._x=-A._x,this._y=-A._y,this._z=-A._z,o=-o):this.copy(A),o>=1)return this._w=C,this._x=e,this._y=i,this._z=t,this;let B=1-o*o;if(B<=Number.EPSILON){let E=1-I;return this._w=E*C+I*this._w,this._x=E*e+I*this._x,this._y=E*i+I*this._y,this._z=E*t+I*this._z,this.normalize(),this._onChangeCallback(),this}let a=Math.sqrt(B),s=Math.atan2(a,o),r=Math.sin((1-I)*s)/a,Q=Math.sin(I*s)/a;return this._w=C*r+this._w*Q,this._x=e*r+this._x*Q,this._y=i*r+this._y*Q,this._z=t*r+this._z*Q,this._onChangeCallback(),this}slerpQuaternions(A,I,e){return this.copy(A).slerp(I,e)}random(){let A=Math.random(),I=Math.sqrt(1-A),e=Math.sqrt(A),i=2*Math.PI*Math.random(),t=2*Math.PI*Math.random();return this.set(I*Math.cos(i),e*Math.sin(t),e*Math.cos(t),I*Math.sin(i))}equals(A){return A._x===this._x&&A._y===this._y&&A._z===this._z&&A._w===this._w}fromArray(A,I=0){return this._x=A[I],this._y=A[I+1],this._z=A[I+2],this._w=A[I+3],this._onChangeCallback(),this}toArray(A=[],I=0){return A[I]=this._x,A[I+1]=this._y,A[I+2]=this._z,A[I+3]=this._w,A}fromBufferAttribute(A,I){return this._x=A.getX(I),this._y=A.getY(I),this._z=A.getZ(I),this._w=A.getW(I),this}_onChange(A){return this._onChangeCallback=A,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._w}},J=class{constructor(A=0,I=0,e=0){J.prototype.isVector3=!0,this.x=A,this.y=I,this.z=e}set(A,I,e){return e===void 0&&(e=this.z),this.x=A,this.y=I,this.z=e,this}setScalar(A){return this.x=A,this.y=A,this.z=A,this}setX(A){return this.x=A,this}setY(A){return this.y=A,this}setZ(A){return this.z=A,this}setComponent(A,I){switch(A){case 0:this.x=I;break;case 1:this.y=I;break;case 2:this.z=I;break;default:throw new Error("index is out of range: "+A)}return this}getComponent(A){switch(A){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+A)}}clone(){return new this.constructor(this.x,this.y,this.z)}copy(A){return this.x=A.x,this.y=A.y,this.z=A.z,this}add(A){return this.x+=A.x,this.y+=A.y,this.z+=A.z,this}addScalar(A){return this.x+=A,this.y+=A,this.z+=A,this}addVectors(A,I){return this.x=A.x+I.x,this.y=A.y+I.y,this.z=A.z+I.z,this}addScaledVector(A,I){return this.x+=A.x*I,this.y+=A.y*I,this.z+=A.z*I,this}sub(A){return this.x-=A.x,this.y-=A.y,this.z-=A.z,this}subScalar(A){return this.x-=A,this.y-=A,this.z-=A,this}subVectors(A,I){return this.x=A.x-I.x,this.y=A.y-I.y,this.z=A.z-I.z,this}multiply(A){return this.x*=A.x,this.y*=A.y,this.z*=A.z,this}multiplyScalar(A){return this.x*=A,this.y*=A,this.z*=A,this}multiplyVectors(A,I){return this.x=A.x*I.x,this.y=A.y*I.y,this.z=A.z*I.z,this}applyEuler(A){return this.applyQuaternion(qf.setFromEuler(A))}applyAxisAngle(A,I){return this.applyQuaternion(qf.setFromAxisAngle(A,I))}applyMatrix3(A){let I=this.x,e=this.y,i=this.z,t=A.elements;return this.x=t[0]*I+t[3]*e+t[6]*i,this.y=t[1]*I+t[4]*e+t[7]*i,this.z=t[2]*I+t[5]*e+t[8]*i,this}applyNormalMatrix(A){return this.applyMatrix3(A).normalize()}applyMatrix4(A){let I=this.x,e=this.y,i=this.z,t=A.elements,C=1/(t[3]*I+t[7]*e+t[11]*i+t[15]);return this.x=(t[0]*I+t[4]*e+t[8]*i+t[12])*C,this.y=(t[1]*I+t[5]*e+t[9]*i+t[13])*C,this.z=(t[2]*I+t[6]*e+t[10]*i+t[14])*C,this}applyQuaternion(A){let I=this.x,e=this.y,i=this.z,t=A.x,C=A.y,o=A.z,B=A.w,a=B*I+C*i-o*e,s=B*e+o*I-t*i,r=B*i+t*e-C*I,Q=-t*I-C*e-o*i;return this.x=a*B+Q*-t+s*-o-r*-C,this.y=s*B+Q*-C+r*-t-a*-o,this.z=r*B+Q*-o+a*-C-s*-t,this}project(A){return this.applyMatrix4(A.matrixWorldInverse).applyMatrix4(A.projectionMatrix)}unproject(A){return this.applyMatrix4(A.projectionMatrixInverse).applyMatrix4(A.matrixWorld)}transformDirection(A){let I=this.x,e=this.y,i=this.z,t=A.elements;return this.x=t[0]*I+t[4]*e+t[8]*i,this.y=t[1]*I+t[5]*e+t[9]*i,this.z=t[2]*I+t[6]*e+t[10]*i,this.normalize()}divide(A){return this.x/=A.x,this.y/=A.y,this.z/=A.z,this}divideScalar(A){return this.multiplyScalar(1/A)}min(A){return this.x=Math.min(this.x,A.x),this.y=Math.min(this.y,A.y),this.z=Math.min(this.z,A.z),this}max(A){return this.x=Math.max(this.x,A.x),this.y=Math.max(this.y,A.y),this.z=Math.max(this.z,A.z),this}clamp(A,I){return this.x=Math.max(A.x,Math.min(I.x,this.x)),this.y=Math.max(A.y,Math.min(I.y,this.y)),this.z=Math.max(A.z,Math.min(I.z,this.z)),this}clampScalar(A,I){return this.x=Math.max(A,Math.min(I,this.x)),this.y=Math.max(A,Math.min(I,this.y)),this.z=Math.max(A,Math.min(I,this.z)),this}clampLength(A,I){let e=this.length();return this.divideScalar(e||1).multiplyScalar(Math.max(A,Math.min(I,e)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this}roundToZero(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this.z=this.z<0?Math.ceil(this.z):Math.floor(this.z),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}dot(A){return this.x*A.x+this.y*A.y+this.z*A.z}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}normalize(){return this.divideScalar(this.length()||1)}setLength(A){return this.normalize().multiplyScalar(A)}lerp(A,I){return this.x+=(A.x-this.x)*I,this.y+=(A.y-this.y)*I,this.z+=(A.z-this.z)*I,this}lerpVectors(A,I,e){return this.x=A.x+(I.x-A.x)*e,this.y=A.y+(I.y-A.y)*e,this.z=A.z+(I.z-A.z)*e,this}cross(A){return this.crossVectors(this,A)}crossVectors(A,I){let e=A.x,i=A.y,t=A.z,C=I.x,o=I.y,B=I.z;return this.x=i*B-t*o,this.y=t*C-e*B,this.z=e*o-i*C,this}projectOnVector(A){let I=A.lengthSq();if(I===0)return this.set(0,0,0);let e=A.dot(this)/I;return this.copy(A).multiplyScalar(e)}projectOnPlane(A){return xd.copy(this).projectOnVector(A),this.sub(xd)}reflect(A){return this.sub(xd.copy(A).multiplyScalar(2*this.dot(A)))}angleTo(A){let I=Math.sqrt(this.lengthSq()*A.lengthSq());if(I===0)return Math.PI/2;let e=this.dot(A)/I;return Math.acos(ii(e,-1,1))}distanceTo(A){return Math.sqrt(this.distanceToSquared(A))}distanceToSquared(A){let I=this.x-A.x,e=this.y-A.y,i=this.z-A.z;return I*I+e*e+i*i}manhattanDistanceTo(A){return Math.abs(this.x-A.x)+Math.abs(this.y-A.y)+Math.abs(this.z-A.z)}setFromSpherical(A){return this.setFromSphericalCoords(A.radius,A.phi,A.theta)}setFromSphericalCoords(A,I,e){let i=Math.sin(I)*A;return this.x=i*Math.sin(e),this.y=Math.cos(I)*A,this.z=i*Math.cos(e),this}setFromCylindrical(A){return this.setFromCylindricalCoords(A.radius,A.theta,A.y)}setFromCylindricalCoords(A,I,e){return this.x=A*Math.sin(I),this.y=e,this.z=A*Math.cos(I),this}setFromMatrixPosition(A){let I=A.elements;return this.x=I[12],this.y=I[13],this.z=I[14],this}setFromMatrixScale(A){let I=this.setFromMatrixColumn(A,0).length(),e=this.setFromMatrixColumn(A,1).length(),i=this.setFromMatrixColumn(A,2).length();return this.x=I,this.y=e,this.z=i,this}setFromMatrixColumn(A,I){return this.fromArray(A.elements,I*4)}setFromMatrix3Column(A,I){return this.fromArray(A.elements,I*3)}setFromEuler(A){return this.x=A._x,this.y=A._y,this.z=A._z,this}equals(A){return A.x===this.x&&A.y===this.y&&A.z===this.z}fromArray(A,I=0){return this.x=A[I],this.y=A[I+1],this.z=A[I+2],this}toArray(A=[],I=0){return A[I]=this.x,A[I+1]=this.y,A[I+2]=this.z,A}fromBufferAttribute(A,I){return this.x=A.getX(I),this.y=A.getY(I),this.z=A.getZ(I),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){let A=(Math.random()-.5)*2,I=Math.random()*Math.PI*2,e=Math.sqrt(1-A**2);return this.x=e*Math.cos(I),this.y=e*Math.sin(I),this.z=A,this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}},xd=new J,qf=new QI,ve=class{constructor(A=new J(1/0,1/0,1/0),I=new J(-1/0,-1/0,-1/0)){this.isBox3=!0,this.min=A,this.max=I}set(A,I){return this.min.copy(A),this.max.copy(I),this}setFromArray(A){let I=1/0,e=1/0,i=1/0,t=-1/0,C=-1/0,o=-1/0;for(let B=0,a=A.length;Bt&&(t=s),r>C&&(C=r),Q>o&&(o=Q)}return this.min.set(I,e,i),this.max.set(t,C,o),this}setFromBufferAttribute(A){let I=1/0,e=1/0,i=1/0,t=-1/0,C=-1/0,o=-1/0;for(let B=0,a=A.count;Bt&&(t=s),r>C&&(C=r),Q>o&&(o=Q)}return this.min.set(I,e,i),this.max.set(t,C,o),this}setFromPoints(A){this.makeEmpty();for(let I=0,e=A.length;Ithis.max.x||A.ythis.max.y||A.zthis.max.z)}containsBox(A){return this.min.x<=A.min.x&&A.max.x<=this.max.x&&this.min.y<=A.min.y&&A.max.y<=this.max.y&&this.min.z<=A.min.z&&A.max.z<=this.max.z}getParameter(A,I){return I.set((A.x-this.min.x)/(this.max.x-this.min.x),(A.y-this.min.y)/(this.max.y-this.min.y),(A.z-this.min.z)/(this.max.z-this.min.z))}intersectsBox(A){return!(A.max.xthis.max.x||A.max.ythis.max.y||A.max.zthis.max.z)}intersectsSphere(A){return this.clampPoint(A.center,Va),Va.distanceToSquared(A.center)<=A.radius*A.radius}intersectsPlane(A){let I,e;return A.normal.x>0?(I=A.normal.x*this.min.x,e=A.normal.x*this.max.x):(I=A.normal.x*this.max.x,e=A.normal.x*this.min.x),A.normal.y>0?(I+=A.normal.y*this.min.y,e+=A.normal.y*this.max.y):(I+=A.normal.y*this.max.y,e+=A.normal.y*this.min.y),A.normal.z>0?(I+=A.normal.z*this.min.z,e+=A.normal.z*this.max.z):(I+=A.normal.z*this.max.z,e+=A.normal.z*this.min.z),I<=-A.constant&&e>=-A.constant}intersectsTriangle(A){if(this.isEmpty())return!1;this.getCenter(DE),mh.subVectors(this.max,DE),Es.subVectors(A.a,DE),ns.subVectors(A.b,DE),hs.subVectors(A.c,DE),bB.subVectors(ns,Es),YB.subVectors(hs,ns),za.subVectors(Es,hs);let I=[0,-bB.z,bB.y,0,-YB.z,YB.y,0,-za.z,za.y,bB.z,0,-bB.x,YB.z,0,-YB.x,za.z,0,-za.x,-bB.y,bB.x,0,-YB.y,YB.x,0,-za.y,za.x,0];return!Td(I,Es,ns,hs,mh)||(I=[1,0,0,0,1,0,0,0,1],!Td(I,Es,ns,hs,mh))?!1:(Uh.crossVectors(bB,YB),I=[Uh.x,Uh.y,Uh.z],Td(I,Es,ns,hs,mh))}clampPoint(A,I){return I.copy(A).clamp(this.min,this.max)}distanceToPoint(A){return Va.copy(A).clamp(this.min,this.max).sub(A).length()}getBoundingSphere(A){return this.getCenter(A.center),A.radius=this.getSize(Va).length()*.5,A}intersect(A){return this.min.max(A.min),this.max.min(A.max),this.isEmpty()&&this.makeEmpty(),this}union(A){return this.min.min(A.min),this.max.max(A.max),this}applyMatrix4(A){return this.isEmpty()?this:(Zo[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(A),Zo[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(A),Zo[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(A),Zo[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(A),Zo[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(A),Zo[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(A),Zo[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(A),Zo[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(A),this.setFromPoints(Zo),this)}translate(A){return this.min.add(A),this.max.add(A),this}equals(A){return A.min.equals(this.min)&&A.max.equals(this.max)}},Zo=[new J,new J,new J,new J,new J,new J,new J,new J],Va=new J,Hd=new ve,Es=new J,ns=new J,hs=new J,bB=new J,YB=new J,za=new J,DE=new J,mh=new J,Uh=new J,Xa=new J;function Td(g,A,I,e,i){for(let t=0,C=g.length-3;t<=C;t+=3){Xa.fromArray(g,t);let o=i.x*Math.abs(Xa.x)+i.y*Math.abs(Xa.y)+i.z*Math.abs(Xa.z),B=A.dot(Xa),a=I.dot(Xa),s=e.dot(Xa);if(Math.max(-Math.max(B,a,s),Math.min(B,a,s))>o)return!1}return!0}var bL=new ve,dE=new J,Od=new J,ct=class{constructor(A=new J,I=-1){this.center=A,this.radius=I}set(A,I){return this.center.copy(A),this.radius=I,this}setFromPoints(A,I){let e=this.center;I!==void 0?e.copy(I):bL.setFromPoints(A).getCenter(e);let i=0;for(let t=0,C=A.length;tthis.radius*this.radius&&(I.sub(this.center).normalize(),I.multiplyScalar(this.radius).add(this.center)),I}getBoundingBox(A){return this.isEmpty()?(A.makeEmpty(),A):(A.set(this.center,this.center),A.expandByScalar(this.radius),A)}applyMatrix4(A){return this.center.applyMatrix4(A),this.radius=this.radius*A.getMaxScaleOnAxis(),this}translate(A){return this.center.add(A),this}expandByPoint(A){if(this.isEmpty())return this.center.copy(A),this.radius=0,this;dE.subVectors(A,this.center);let I=dE.lengthSq();if(I>this.radius*this.radius){let e=Math.sqrt(I),i=(e-this.radius)*.5;this.center.addScaledVector(dE,i/e),this.radius+=i}return this}union(A){return A.isEmpty()?this:this.isEmpty()?(this.copy(A),this):(this.center.equals(A.center)===!0?this.radius=Math.max(this.radius,A.radius):(Od.subVectors(A.center,this.center).setLength(A.radius),this.expandByPoint(dE.copy(A.center).add(Od)),this.expandByPoint(dE.copy(A.center).sub(Od))),this)}equals(A){return A.center.equals(this.center)&&A.radius===this.radius}clone(){return new this.constructor().copy(this)}},Vo=new J,_d=new J,Nh=new J,xB=new J,Pd=new J,Fh=new J,jd=new J,jQ=class{constructor(A=new J,I=new J(0,0,-1)){this.origin=A,this.direction=I}set(A,I){return this.origin.copy(A),this.direction.copy(I),this}copy(A){return this.origin.copy(A.origin),this.direction.copy(A.direction),this}at(A,I){return I.copy(this.direction).multiplyScalar(A).add(this.origin)}lookAt(A){return this.direction.copy(A).sub(this.origin).normalize(),this}recast(A){return this.origin.copy(this.at(A,Vo)),this}closestPointToPoint(A,I){I.subVectors(A,this.origin);let e=I.dot(this.direction);return e<0?I.copy(this.origin):I.copy(this.direction).multiplyScalar(e).add(this.origin)}distanceToPoint(A){return Math.sqrt(this.distanceSqToPoint(A))}distanceSqToPoint(A){let I=Vo.subVectors(A,this.origin).dot(this.direction);return I<0?this.origin.distanceToSquared(A):(Vo.copy(this.direction).multiplyScalar(I).add(this.origin),Vo.distanceToSquared(A))}distanceSqToSegment(A,I,e,i){_d.copy(A).add(I).multiplyScalar(.5),Nh.copy(I).sub(A).normalize(),xB.copy(this.origin).sub(_d);let t=A.distanceTo(I)*.5,C=-this.direction.dot(Nh),o=xB.dot(this.direction),B=-xB.dot(Nh),a=xB.lengthSq(),s=Math.abs(1-C*C),r,Q,E,n;if(s>0)if(r=C*B-o,Q=C*o-B,n=t*s,r>=0)if(Q>=-n)if(Q<=n){let h=1/s;r*=h,Q*=h,E=r*(r+C*Q+2*o)+Q*(C*r+Q+2*B)+a}else Q=t,r=Math.max(0,-(C*Q+o)),E=-r*r+Q*(Q+2*B)+a;else Q=-t,r=Math.max(0,-(C*Q+o)),E=-r*r+Q*(Q+2*B)+a;else Q<=-n?(r=Math.max(0,-(-C*t+o)),Q=r>0?-t:Math.min(Math.max(-t,-B),t),E=-r*r+Q*(Q+2*B)+a):Q<=n?(r=0,Q=Math.min(Math.max(-t,-B),t),E=Q*(Q+2*B)+a):(r=Math.max(0,-(C*t+o)),Q=r>0?t:Math.min(Math.max(-t,-B),t),E=-r*r+Q*(Q+2*B)+a);else Q=C>0?-t:t,r=Math.max(0,-(C*Q+o)),E=-r*r+Q*(Q+2*B)+a;return e&&e.copy(this.direction).multiplyScalar(r).add(this.origin),i&&i.copy(Nh).multiplyScalar(Q).add(_d),E}intersectSphere(A,I){Vo.subVectors(A.center,this.origin);let e=Vo.dot(this.direction),i=Vo.dot(Vo)-e*e,t=A.radius*A.radius;if(i>t)return null;let C=Math.sqrt(t-i),o=e-C,B=e+C;return o<0&&B<0?null:o<0?this.at(B,I):this.at(o,I)}intersectsSphere(A){return this.distanceSqToPoint(A.center)<=A.radius*A.radius}distanceToPlane(A){let I=A.normal.dot(this.direction);if(I===0)return A.distanceToPoint(this.origin)===0?0:null;let e=-(this.origin.dot(A.normal)+A.constant)/I;return e>=0?e:null}intersectPlane(A,I){let e=this.distanceToPlane(A);return e===null?null:this.at(e,I)}intersectsPlane(A){let I=A.distanceToPoint(this.origin);return I===0||A.normal.dot(this.direction)*I<0}intersectBox(A,I){let e,i,t,C,o,B,a=1/this.direction.x,s=1/this.direction.y,r=1/this.direction.z,Q=this.origin;return a>=0?(e=(A.min.x-Q.x)*a,i=(A.max.x-Q.x)*a):(e=(A.max.x-Q.x)*a,i=(A.min.x-Q.x)*a),s>=0?(t=(A.min.y-Q.y)*s,C=(A.max.y-Q.y)*s):(t=(A.max.y-Q.y)*s,C=(A.min.y-Q.y)*s),e>C||t>i||((t>e||isNaN(e))&&(e=t),(C=0?(o=(A.min.z-Q.z)*r,B=(A.max.z-Q.z)*r):(o=(A.max.z-Q.z)*r,B=(A.min.z-Q.z)*r),e>B||o>i)||((o>e||e!==e)&&(e=o),(B=0?e:i,I)}intersectsBox(A){return this.intersectBox(A,Vo)!==null}intersectTriangle(A,I,e,i,t){Pd.subVectors(I,A),Fh.subVectors(e,A),jd.crossVectors(Pd,Fh);let C=this.direction.dot(jd),o;if(C>0){if(i)return null;o=1}else if(C<0)o=-1,C=-C;else return null;xB.subVectors(this.origin,A);let B=o*this.direction.dot(Fh.crossVectors(xB,Fh));if(B<0)return null;let a=o*this.direction.dot(Pd.cross(xB));if(a<0||B+a>C)return null;let s=-o*xB.dot(jd);return s<0?null:this.at(s/C,t)}applyMatrix4(A){return this.origin.applyMatrix4(A),this.direction.transformDirection(A),this}equals(A){return A.origin.equals(this.origin)&&A.direction.equals(this.direction)}clone(){return new this.constructor().copy(this)}},zA=class{constructor(){zA.prototype.isMatrix4=!0,this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}set(A,I,e,i,t,C,o,B,a,s,r,Q,E,n,h,l){let c=this.elements;return c[0]=A,c[4]=I,c[8]=e,c[12]=i,c[1]=t,c[5]=C,c[9]=o,c[13]=B,c[2]=a,c[6]=s,c[10]=r,c[14]=Q,c[3]=E,c[7]=n,c[11]=h,c[15]=l,this}identity(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this}clone(){return new zA().fromArray(this.elements)}copy(A){let I=this.elements,e=A.elements;return I[0]=e[0],I[1]=e[1],I[2]=e[2],I[3]=e[3],I[4]=e[4],I[5]=e[5],I[6]=e[6],I[7]=e[7],I[8]=e[8],I[9]=e[9],I[10]=e[10],I[11]=e[11],I[12]=e[12],I[13]=e[13],I[14]=e[14],I[15]=e[15],this}copyPosition(A){let I=this.elements,e=A.elements;return I[12]=e[12],I[13]=e[13],I[14]=e[14],this}setFromMatrix3(A){let I=A.elements;return this.set(I[0],I[3],I[6],0,I[1],I[4],I[7],0,I[2],I[5],I[8],0,0,0,0,1),this}extractBasis(A,I,e){return A.setFromMatrixColumn(this,0),I.setFromMatrixColumn(this,1),e.setFromMatrixColumn(this,2),this}makeBasis(A,I,e){return this.set(A.x,I.x,e.x,0,A.y,I.y,e.y,0,A.z,I.z,e.z,0,0,0,0,1),this}extractRotation(A){let I=this.elements,e=A.elements,i=1/ls.setFromMatrixColumn(A,0).length(),t=1/ls.setFromMatrixColumn(A,1).length(),C=1/ls.setFromMatrixColumn(A,2).length();return I[0]=e[0]*i,I[1]=e[1]*i,I[2]=e[2]*i,I[3]=0,I[4]=e[4]*t,I[5]=e[5]*t,I[6]=e[6]*t,I[7]=0,I[8]=e[8]*C,I[9]=e[9]*C,I[10]=e[10]*C,I[11]=0,I[12]=0,I[13]=0,I[14]=0,I[15]=1,this}makeRotationFromEuler(A){let I=this.elements,e=A.x,i=A.y,t=A.z,C=Math.cos(e),o=Math.sin(e),B=Math.cos(i),a=Math.sin(i),s=Math.cos(t),r=Math.sin(t);if(A.order==="XYZ"){let Q=C*s,E=C*r,n=o*s,h=o*r;I[0]=B*s,I[4]=-B*r,I[8]=a,I[1]=E+n*a,I[5]=Q-h*a,I[9]=-o*B,I[2]=h-Q*a,I[6]=n+E*a,I[10]=C*B}else if(A.order==="YXZ"){let Q=B*s,E=B*r,n=a*s,h=a*r;I[0]=Q+h*o,I[4]=n*o-E,I[8]=C*a,I[1]=C*r,I[5]=C*s,I[9]=-o,I[2]=E*o-n,I[6]=h+Q*o,I[10]=C*B}else if(A.order==="ZXY"){let Q=B*s,E=B*r,n=a*s,h=a*r;I[0]=Q-h*o,I[4]=-C*r,I[8]=n+E*o,I[1]=E+n*o,I[5]=C*s,I[9]=h-Q*o,I[2]=-C*a,I[6]=o,I[10]=C*B}else if(A.order==="ZYX"){let Q=C*s,E=C*r,n=o*s,h=o*r;I[0]=B*s,I[4]=n*a-E,I[8]=Q*a+h,I[1]=B*r,I[5]=h*a+Q,I[9]=E*a-n,I[2]=-a,I[6]=o*B,I[10]=C*B}else if(A.order==="YZX"){let Q=C*B,E=C*a,n=o*B,h=o*a;I[0]=B*s,I[4]=h-Q*r,I[8]=n*r+E,I[1]=r,I[5]=C*s,I[9]=-o*s,I[2]=-a*s,I[6]=E*r+n,I[10]=Q-h*r}else if(A.order==="XZY"){let Q=C*B,E=C*a,n=o*B,h=o*a;I[0]=B*s,I[4]=-r,I[8]=a*s,I[1]=Q*r+h,I[5]=C*s,I[9]=E*r-n,I[2]=n*r-E,I[6]=o*s,I[10]=h*r+Q}return I[3]=0,I[7]=0,I[11]=0,I[12]=0,I[13]=0,I[14]=0,I[15]=1,this}makeRotationFromQuaternion(A){return this.compose(YL,A,xL)}lookAt(A,I,e){let i=this.elements;return Gt.subVectors(A,I),Gt.lengthSq()===0&&(Gt.z=1),Gt.normalize(),HB.crossVectors(e,Gt),HB.lengthSq()===0&&(Math.abs(e.z)===1?Gt.x+=1e-4:Gt.z+=1e-4,Gt.normalize(),HB.crossVectors(e,Gt)),HB.normalize(),Rh.crossVectors(Gt,HB),i[0]=HB.x,i[4]=Rh.x,i[8]=Gt.x,i[1]=HB.y,i[5]=Rh.y,i[9]=Gt.y,i[2]=HB.z,i[6]=Rh.z,i[10]=Gt.z,this}multiply(A){return this.multiplyMatrices(this,A)}premultiply(A){return this.multiplyMatrices(A,this)}multiplyMatrices(A,I){let e=A.elements,i=I.elements,t=this.elements,C=e[0],o=e[4],B=e[8],a=e[12],s=e[1],r=e[5],Q=e[9],E=e[13],n=e[2],h=e[6],l=e[10],c=e[14],d=e[3],u=e[7],y=e[11],f=e[15],k=i[0],M=i[4],G=i[8],v=i[12],N=i[1],b=i[5],O=i[9],H=i[13],_=i[2],gA=i[6],CA=i[10],AA=i[14],BA=i[3],iA=i[7],rA=i[11],$=i[15];return t[0]=C*k+o*N+B*_+a*BA,t[4]=C*M+o*b+B*gA+a*iA,t[8]=C*G+o*O+B*CA+a*rA,t[12]=C*v+o*H+B*AA+a*$,t[1]=s*k+r*N+Q*_+E*BA,t[5]=s*M+r*b+Q*gA+E*iA,t[9]=s*G+r*O+Q*CA+E*rA,t[13]=s*v+r*H+Q*AA+E*$,t[2]=n*k+h*N+l*_+c*BA,t[6]=n*M+h*b+l*gA+c*iA,t[10]=n*G+h*O+l*CA+c*rA,t[14]=n*v+h*H+l*AA+c*$,t[3]=d*k+u*N+y*_+f*BA,t[7]=d*M+u*b+y*gA+f*iA,t[11]=d*G+u*O+y*CA+f*rA,t[15]=d*v+u*H+y*AA+f*$,this}multiplyScalar(A){let I=this.elements;return I[0]*=A,I[4]*=A,I[8]*=A,I[12]*=A,I[1]*=A,I[5]*=A,I[9]*=A,I[13]*=A,I[2]*=A,I[6]*=A,I[10]*=A,I[14]*=A,I[3]*=A,I[7]*=A,I[11]*=A,I[15]*=A,this}determinant(){let A=this.elements,I=A[0],e=A[4],i=A[8],t=A[12],C=A[1],o=A[5],B=A[9],a=A[13],s=A[2],r=A[6],Q=A[10],E=A[14],n=A[3],h=A[7],l=A[11],c=A[15];return n*(+t*B*r-i*a*r-t*o*Q+e*a*Q+i*o*E-e*B*E)+h*(+I*B*E-I*a*Q+t*C*Q-i*C*E+i*a*s-t*B*s)+l*(+I*a*r-I*o*E-t*C*r+e*C*E+t*o*s-e*a*s)+c*(-i*o*s-I*B*r+I*o*Q+i*C*r-e*C*Q+e*B*s)}transpose(){let A=this.elements,I;return I=A[1],A[1]=A[4],A[4]=I,I=A[2],A[2]=A[8],A[8]=I,I=A[6],A[6]=A[9],A[9]=I,I=A[3],A[3]=A[12],A[12]=I,I=A[7],A[7]=A[13],A[13]=I,I=A[11],A[11]=A[14],A[14]=I,this}setPosition(A,I,e){let i=this.elements;return A.isVector3?(i[12]=A.x,i[13]=A.y,i[14]=A.z):(i[12]=A,i[13]=I,i[14]=e),this}invert(){let A=this.elements,I=A[0],e=A[1],i=A[2],t=A[3],C=A[4],o=A[5],B=A[6],a=A[7],s=A[8],r=A[9],Q=A[10],E=A[11],n=A[12],h=A[13],l=A[14],c=A[15],d=r*l*a-h*Q*a+h*B*E-o*l*E-r*B*c+o*Q*c,u=n*Q*a-s*l*a-n*B*E+C*l*E+s*B*c-C*Q*c,y=s*h*a-n*r*a+n*o*E-C*h*E-s*o*c+C*r*c,f=n*r*B-s*h*B-n*o*Q+C*h*Q+s*o*l-C*r*l,k=I*d+e*u+i*y+t*f;if(k===0)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);let M=1/k;return A[0]=d*M,A[1]=(h*Q*t-r*l*t-h*i*E+e*l*E+r*i*c-e*Q*c)*M,A[2]=(o*l*t-h*B*t+h*i*a-e*l*a-o*i*c+e*B*c)*M,A[3]=(r*B*t-o*Q*t-r*i*a+e*Q*a+o*i*E-e*B*E)*M,A[4]=u*M,A[5]=(s*l*t-n*Q*t+n*i*E-I*l*E-s*i*c+I*Q*c)*M,A[6]=(n*B*t-C*l*t-n*i*a+I*l*a+C*i*c-I*B*c)*M,A[7]=(C*Q*t-s*B*t+s*i*a-I*Q*a-C*i*E+I*B*E)*M,A[8]=y*M,A[9]=(n*r*t-s*h*t-n*e*E+I*h*E+s*e*c-I*r*c)*M,A[10]=(C*h*t-n*o*t+n*e*a-I*h*a-C*e*c+I*o*c)*M,A[11]=(s*o*t-C*r*t-s*e*a+I*r*a+C*e*E-I*o*E)*M,A[12]=f*M,A[13]=(s*h*i-n*r*i+n*e*Q-I*h*Q-s*e*l+I*r*l)*M,A[14]=(n*o*i-C*h*i-n*e*B+I*h*B+C*e*l-I*o*l)*M,A[15]=(C*r*i-s*o*i+s*e*B-I*r*B-C*e*Q+I*o*Q)*M,this}scale(A){let I=this.elements,e=A.x,i=A.y,t=A.z;return I[0]*=e,I[4]*=i,I[8]*=t,I[1]*=e,I[5]*=i,I[9]*=t,I[2]*=e,I[6]*=i,I[10]*=t,I[3]*=e,I[7]*=i,I[11]*=t,this}getMaxScaleOnAxis(){let A=this.elements,I=A[0]*A[0]+A[1]*A[1]+A[2]*A[2],e=A[4]*A[4]+A[5]*A[5]+A[6]*A[6],i=A[8]*A[8]+A[9]*A[9]+A[10]*A[10];return Math.sqrt(Math.max(I,e,i))}makeTranslation(A,I,e){return this.set(1,0,0,A,0,1,0,I,0,0,1,e,0,0,0,1),this}makeRotationX(A){let I=Math.cos(A),e=Math.sin(A);return this.set(1,0,0,0,0,I,-e,0,0,e,I,0,0,0,0,1),this}makeRotationY(A){let I=Math.cos(A),e=Math.sin(A);return this.set(I,0,e,0,0,1,0,0,-e,0,I,0,0,0,0,1),this}makeRotationZ(A){let I=Math.cos(A),e=Math.sin(A);return this.set(I,-e,0,0,e,I,0,0,0,0,1,0,0,0,0,1),this}makeRotationAxis(A,I){let e=Math.cos(I),i=Math.sin(I),t=1-e,C=A.x,o=A.y,B=A.z,a=t*C,s=t*o;return this.set(a*C+e,a*o-i*B,a*B+i*o,0,a*o+i*B,s*o+e,s*B-i*C,0,a*B-i*o,s*B+i*C,t*B*B+e,0,0,0,0,1),this}makeScale(A,I,e){return this.set(A,0,0,0,0,I,0,0,0,0,e,0,0,0,0,1),this}makeShear(A,I,e,i,t,C){return this.set(1,e,t,0,A,1,C,0,I,i,1,0,0,0,0,1),this}compose(A,I,e){let i=this.elements,t=I._x,C=I._y,o=I._z,B=I._w,a=t+t,s=C+C,r=o+o,Q=t*a,E=t*s,n=t*r,h=C*s,l=C*r,c=o*r,d=B*a,u=B*s,y=B*r,f=e.x,k=e.y,M=e.z;return i[0]=(1-(h+c))*f,i[1]=(E+y)*f,i[2]=(n-u)*f,i[3]=0,i[4]=(E-y)*k,i[5]=(1-(Q+c))*k,i[6]=(l+d)*k,i[7]=0,i[8]=(n+u)*M,i[9]=(l-d)*M,i[10]=(1-(Q+h))*M,i[11]=0,i[12]=A.x,i[13]=A.y,i[14]=A.z,i[15]=1,this}decompose(A,I,e){let i=this.elements,t=ls.set(i[0],i[1],i[2]).length(),C=ls.set(i[4],i[5],i[6]).length(),o=ls.set(i[8],i[9],i[10]).length();this.determinant()<0&&(t=-t),A.x=i[12],A.y=i[13],A.z=i[14],hC.copy(this);let B=1/t,a=1/C,s=1/o;return hC.elements[0]*=B,hC.elements[1]*=B,hC.elements[2]*=B,hC.elements[4]*=a,hC.elements[5]*=a,hC.elements[6]*=a,hC.elements[8]*=s,hC.elements[9]*=s,hC.elements[10]*=s,I.setFromRotationMatrix(hC),e.x=t,e.y=C,e.z=o,this}makePerspective(A,I,e,i,t,C){let o=this.elements,B=2*t/(I-A),a=2*t/(e-i),s=(I+A)/(I-A),r=(e+i)/(e-i),Q=-(C+t)/(C-t),E=-2*C*t/(C-t);return o[0]=B,o[4]=0,o[8]=s,o[12]=0,o[1]=0,o[5]=a,o[9]=r,o[13]=0,o[2]=0,o[6]=0,o[10]=Q,o[14]=E,o[3]=0,o[7]=0,o[11]=-1,o[15]=0,this}makeOrthographic(A,I,e,i,t,C){let o=this.elements,B=1/(I-A),a=1/(e-i),s=1/(C-t),r=(I+A)*B,Q=(e+i)*a,E=(C+t)*s;return o[0]=2*B,o[4]=0,o[8]=0,o[12]=-r,o[1]=0,o[5]=2*a,o[9]=0,o[13]=-Q,o[2]=0,o[6]=0,o[10]=-2*s,o[14]=-E,o[3]=0,o[7]=0,o[11]=0,o[15]=1,this}equals(A){let I=this.elements,e=A.elements;for(let i=0;i<16;i++)if(I[i]!==e[i])return!1;return!0}fromArray(A,I=0){for(let e=0;e<16;e++)this.elements[e]=A[e+I];return this}toArray(A=[],I=0){let e=this.elements;return A[I]=e[0],A[I+1]=e[1],A[I+2]=e[2],A[I+3]=e[3],A[I+4]=e[4],A[I+5]=e[5],A[I+6]=e[6],A[I+7]=e[7],A[I+8]=e[8],A[I+9]=e[9],A[I+10]=e[10],A[I+11]=e[11],A[I+12]=e[12],A[I+13]=e[13],A[I+14]=e[14],A[I+15]=e[15],A}},ls=new J,hC=new zA,YL=new J(0,0,0),xL=new J(1,1,1),HB=new J,Rh=new J,Gt=new J,Lf=new zA,bf=new QI,Ei=class{constructor(A=0,I=0,e=0,i=Ei.DEFAULT_ORDER){this.isEuler=!0,this._x=A,this._y=I,this._z=e,this._order=i}get x(){return this._x}set x(A){this._x=A,this._onChangeCallback()}get y(){return this._y}set y(A){this._y=A,this._onChangeCallback()}get z(){return this._z}set z(A){this._z=A,this._onChangeCallback()}get order(){return this._order}set order(A){this._order=A,this._onChangeCallback()}set(A,I,e,i=this._order){return this._x=A,this._y=I,this._z=e,this._order=i,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._order)}copy(A){return this._x=A._x,this._y=A._y,this._z=A._z,this._order=A._order,this._onChangeCallback(),this}setFromRotationMatrix(A,I=this._order,e=!0){let i=A.elements,t=i[0],C=i[4],o=i[8],B=i[1],a=i[5],s=i[9],r=i[2],Q=i[6],E=i[10];switch(I){case"XYZ":this._y=Math.asin(ii(o,-1,1)),Math.abs(o)<.9999999?(this._x=Math.atan2(-s,E),this._z=Math.atan2(-C,t)):(this._x=Math.atan2(Q,a),this._z=0);break;case"YXZ":this._x=Math.asin(-ii(s,-1,1)),Math.abs(s)<.9999999?(this._y=Math.atan2(o,E),this._z=Math.atan2(B,a)):(this._y=Math.atan2(-r,t),this._z=0);break;case"ZXY":this._x=Math.asin(ii(Q,-1,1)),Math.abs(Q)<.9999999?(this._y=Math.atan2(-r,E),this._z=Math.atan2(-C,a)):(this._y=0,this._z=Math.atan2(B,t));break;case"ZYX":this._y=Math.asin(-ii(r,-1,1)),Math.abs(r)<.9999999?(this._x=Math.atan2(Q,E),this._z=Math.atan2(B,t)):(this._x=0,this._z=Math.atan2(-C,a));break;case"YZX":this._z=Math.asin(ii(B,-1,1)),Math.abs(B)<.9999999?(this._x=Math.atan2(-s,a),this._y=Math.atan2(-r,t)):(this._x=0,this._y=Math.atan2(o,E));break;case"XZY":this._z=Math.asin(-ii(C,-1,1)),Math.abs(C)<.9999999?(this._x=Math.atan2(Q,a),this._y=Math.atan2(o,t)):(this._x=Math.atan2(-s,E),this._y=0);break;default:console.warn("THREE.Euler: .setFromRotationMatrix() encountered an unknown order: "+I)}return this._order=I,e===!0&&this._onChangeCallback(),this}setFromQuaternion(A,I,e){return Lf.makeRotationFromQuaternion(A),this.setFromRotationMatrix(Lf,I,e)}setFromVector3(A,I=this._order){return this.set(A.x,A.y,A.z,I)}reorder(A){return bf.setFromEuler(this),this.setFromQuaternion(bf,A)}equals(A){return A._x===this._x&&A._y===this._y&&A._z===this._z&&A._order===this._order}fromArray(A){return this._x=A[0],this._y=A[1],this._z=A[2],A[3]!==void 0&&(this._order=A[3]),this._onChangeCallback(),this}toArray(A=[],I=0){return A[I]=this._x,A[I+1]=this._y,A[I+2]=this._z,A[I+3]=this._order,A}_onChange(A){return this._onChangeCallback=A,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._order}};Ei.DEFAULT_ORDER="XYZ";var bw=class{constructor(){this.mask=1}set(g){this.mask=(1<>>0}enable(g){this.mask|=1<1){for(let I=0;I1){for(let e=0;e0&&(e=e.concat(C))}return e}getWorldPosition(A){return this.updateWorldMatrix(!0,!1),A.setFromMatrixPosition(this.matrixWorld)}getWorldQuaternion(A){return this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(uE,A,TL),A}getWorldScale(A){return this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(uE,OL,A),A}getWorldDirection(A){this.updateWorldMatrix(!0,!1);let I=this.matrixWorld.elements;return A.set(I[8],I[9],I[10]).normalize()}raycast(){}traverse(A){A(this);let I=this.children;for(let e=0,i=I.length;e0&&(i.userData=this.userData),i.layers=this.layers.mask,i.matrix=this.matrix.toArray(),this.matrixAutoUpdate===!1&&(i.matrixAutoUpdate=!1),this.isInstancedMesh&&(i.type="InstancedMesh",i.count=this.count,i.instanceMatrix=this.instanceMatrix.toJSON(),this.instanceColor!==null&&(i.instanceColor=this.instanceColor.toJSON()));function t(o,B){return o[B.uuid]===void 0&&(o[B.uuid]=B.toJSON(A)),B.uuid}if(this.isScene)this.background&&(this.background.isColor?i.background=this.background.toJSON():this.background.isTexture&&(i.background=this.background.toJSON(A).uuid)),this.environment&&this.environment.isTexture&&this.environment.isRenderTargetTexture!==!0&&(i.environment=this.environment.toJSON(A).uuid);else if(this.isMesh||this.isLine||this.isPoints){i.geometry=t(A.geometries,this.geometry);let o=this.geometry.parameters;if(o!==void 0&&o.shapes!==void 0){let B=o.shapes;if(Array.isArray(B))for(let a=0,s=B.length;a0){i.children=[];for(let o=0;o0){i.animations=[];for(let o=0;o0&&(e.geometries=o),B.length>0&&(e.materials=B),a.length>0&&(e.textures=a),s.length>0&&(e.images=s),r.length>0&&(e.shapes=r),Q.length>0&&(e.skeletons=Q),E.length>0&&(e.animations=E),n.length>0&&(e.nodes=n)}return e.object=i,e;function C(o){let B=[];for(let a in o){let s=o[a];delete s.metadata,B.push(s)}return B}}clone(A){return new this.constructor().copy(this,A)}copy(A,I=!0){if(this.name=A.name,this.up.copy(A.up),this.position.copy(A.position),this.rotation.order=A.rotation.order,this.quaternion.copy(A.quaternion),this.scale.copy(A.scale),this.matrix.copy(A.matrix),this.matrixWorld.copy(A.matrixWorld),this.matrixAutoUpdate=A.matrixAutoUpdate,this.matrixWorldNeedsUpdate=A.matrixWorldNeedsUpdate,this.matrixWorldAutoUpdate=A.matrixWorldAutoUpdate,this.layers.mask=A.layers.mask,this.visible=A.visible,this.castShadow=A.castShadow,this.receiveShadow=A.receiveShadow,this.frustumCulled=A.frustumCulled,this.renderOrder=A.renderOrder,this.userData=JSON.parse(JSON.stringify(A.userData)),I===!0)for(let e=0;e0?i.multiplyScalar(1/Math.sqrt(t)):i.set(0,0,0)}static getBarycoord(A,I,e,i,t){lC.subVectors(i,I),Xo.subVectors(e,I),Wd.subVectors(A,I);let C=lC.dot(lC),o=lC.dot(Xo),B=lC.dot(Wd),a=Xo.dot(Xo),s=Xo.dot(Wd),r=C*a-o*o;if(r===0)return t.set(-2,-1,-1);let Q=1/r,E=(a*B-o*s)*Q,n=(C*s-o*B)*Q;return t.set(1-E-n,n,E)}static containsPoint(A,I,e,i){return this.getBarycoord(A,I,e,i,$o),$o.x>=0&&$o.y>=0&&$o.x+$o.y<=1}static getUV(A,I,e,i,t,C,o,B){return this.getBarycoord(A,I,e,i,$o),B.set(0,0),B.addScaledVector(t,$o.x),B.addScaledVector(C,$o.y),B.addScaledVector(o,$o.z),B}static isFrontFacing(A,I,e,i){return lC.subVectors(e,I),Xo.subVectors(A,I),lC.cross(Xo).dot(i)<0}set(A,I,e){return this.a.copy(A),this.b.copy(I),this.c.copy(e),this}setFromPointsAndIndices(A,I,e,i){return this.a.copy(A[I]),this.b.copy(A[e]),this.c.copy(A[i]),this}setFromAttributeAndIndices(A,I,e,i){return this.a.fromBufferAttribute(A,I),this.b.fromBufferAttribute(A,e),this.c.fromBufferAttribute(A,i),this}clone(){return new this.constructor().copy(this)}copy(A){return this.a.copy(A.a),this.b.copy(A.b),this.c.copy(A.c),this}getArea(){return lC.subVectors(this.c,this.b),Xo.subVectors(this.a,this.b),lC.cross(Xo).length()*.5}getMidpoint(A){return A.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)}getNormal(A){return Ni.getNormal(this.a,this.b,this.c,A)}getPlane(A){return A.setFromCoplanarPoints(this.a,this.b,this.c)}getBarycoord(A,I){return Ni.getBarycoord(A,this.a,this.b,this.c,I)}getUV(A,I,e,i,t){return Ni.getUV(A,this.a,this.b,this.c,I,e,i,t)}containsPoint(A){return Ni.containsPoint(A,this.a,this.b,this.c)}isFrontFacing(A){return Ni.isFrontFacing(this.a,this.b,this.c,A)}intersectsBox(A){return A.intersectsTriangle(this)}closestPointToPoint(A,I){let e=this.a,i=this.b,t=this.c,C,o;Ds.subVectors(i,e),ds.subVectors(t,e),Zd.subVectors(A,e);let B=Ds.dot(Zd),a=ds.dot(Zd);if(B<=0&&a<=0)return I.copy(e);Vd.subVectors(A,i);let s=Ds.dot(Vd),r=ds.dot(Vd);if(s>=0&&r<=s)return I.copy(i);let Q=B*r-s*a;if(Q<=0&&B>=0&&s<=0)return C=B/(B-s),I.copy(e).addScaledVector(Ds,C);zd.subVectors(A,t);let E=Ds.dot(zd),n=ds.dot(zd);if(n>=0&&E<=n)return I.copy(t);let h=E*a-B*n;if(h<=0&&a>=0&&n<=0)return o=a/(a-n),I.copy(e).addScaledVector(ds,o);let l=s*n-E*r;if(l<=0&&r-s>=0&&E-n>=0)return _f.subVectors(t,i),o=(r-s)/(r-s+(E-n)),I.copy(i).addScaledVector(_f,o);let c=1/(l+h+Q);return C=h*c,o=Q*c,I.copy(e).addScaledVector(Ds,C).addScaledVector(ds,o)}equals(A){return A.a.equals(this.a)&&A.b.equals(this.b)&&A.c.equals(this.c)}},PL=0,zn=class extends Si{constructor(){super(),this.isMaterial=!0,Object.defineProperty(this,"id",{value:PL++}),this.uuid=IC(),this.name="",this.type="Material",this.blending=oQ,this.side=RC,this.vertexColors=!1,this.opacity=1,this.transparent=!1,this.blendSrc=yN,this.blendDst=wN,this.blendEquation=Ps,this.blendSrcAlpha=null,this.blendDstAlpha=null,this.blendEquationAlpha=null,this.depthFunc=qp,this.depthTest=!0,this.depthWrite=!0,this.stencilWriteMask=255,this.stencilFunc=pL,this.stencilRef=0,this.stencilFuncMask=255,this.stencilFail=vd,this.stencilZFail=vd,this.stencilZPass=vd,this.stencilWrite=!1,this.clippingPlanes=null,this.clipIntersection=!1,this.clipShadows=!1,this.shadowSide=null,this.colorWrite=!0,this.precision=null,this.polygonOffset=!1,this.polygonOffsetFactor=0,this.polygonOffsetUnits=0,this.dithering=!1,this.alphaToCoverage=!1,this.premultipliedAlpha=!1,this.forceSinglePass=!1,this.visible=!0,this.toneMapped=!0,this.userData={},this.version=0,this._alphaTest=0}get alphaTest(){return this._alphaTest}set alphaTest(g){this._alphaTest>0!=g>0&&this.version++,this._alphaTest=g}onBuild(){}onBeforeRender(){}onBeforeCompile(){}customProgramCacheKey(){return this.onBeforeCompile.toString()}setValues(g){if(g!==void 0)for(let A in g){let I=g[A];if(I===void 0){console.warn("THREE.Material: '"+A+"' parameter is undefined.");continue}let e=this[A];if(e===void 0){console.warn("THREE."+this.type+": '"+A+"' is not a property of this material.");continue}e&&e.isColor?e.set(I):e&&e.isVector3&&I&&I.isVector3?e.copy(I):this[A]=I}}toJSON(g){let A=g===void 0||typeof g=="string";A&&(g={textures:{},images:{}});let I={metadata:{version:4.5,type:"Material",generator:"Material.toJSON"}};I.uuid=this.uuid,I.type=this.type,this.name!==""&&(I.name=this.name),this.color&&this.color.isColor&&(I.color=this.color.getHex()),this.roughness!==void 0&&(I.roughness=this.roughness),this.metalness!==void 0&&(I.metalness=this.metalness),this.sheen!==void 0&&(I.sheen=this.sheen),this.sheenColor&&this.sheenColor.isColor&&(I.sheenColor=this.sheenColor.getHex()),this.sheenRoughness!==void 0&&(I.sheenRoughness=this.sheenRoughness),this.emissive&&this.emissive.isColor&&(I.emissive=this.emissive.getHex()),this.emissiveIntensity&&this.emissiveIntensity!==1&&(I.emissiveIntensity=this.emissiveIntensity),this.specular&&this.specular.isColor&&(I.specular=this.specular.getHex()),this.specularIntensity!==void 0&&(I.specularIntensity=this.specularIntensity),this.specularColor&&this.specularColor.isColor&&(I.specularColor=this.specularColor.getHex()),this.shininess!==void 0&&(I.shininess=this.shininess),this.clearcoat!==void 0&&(I.clearcoat=this.clearcoat),this.clearcoatRoughness!==void 0&&(I.clearcoatRoughness=this.clearcoatRoughness),this.clearcoatMap&&this.clearcoatMap.isTexture&&(I.clearcoatMap=this.clearcoatMap.toJSON(g).uuid),this.clearcoatRoughnessMap&&this.clearcoatRoughnessMap.isTexture&&(I.clearcoatRoughnessMap=this.clearcoatRoughnessMap.toJSON(g).uuid),this.clearcoatNormalMap&&this.clearcoatNormalMap.isTexture&&(I.clearcoatNormalMap=this.clearcoatNormalMap.toJSON(g).uuid,I.clearcoatNormalScale=this.clearcoatNormalScale.toArray()),this.iridescence!==void 0&&(I.iridescence=this.iridescence),this.iridescenceIOR!==void 0&&(I.iridescenceIOR=this.iridescenceIOR),this.iridescenceThicknessRange!==void 0&&(I.iridescenceThicknessRange=this.iridescenceThicknessRange),this.iridescenceMap&&this.iridescenceMap.isTexture&&(I.iridescenceMap=this.iridescenceMap.toJSON(g).uuid),this.iridescenceThicknessMap&&this.iridescenceThicknessMap.isTexture&&(I.iridescenceThicknessMap=this.iridescenceThicknessMap.toJSON(g).uuid),this.map&&this.map.isTexture&&(I.map=this.map.toJSON(g).uuid),this.matcap&&this.matcap.isTexture&&(I.matcap=this.matcap.toJSON(g).uuid),this.alphaMap&&this.alphaMap.isTexture&&(I.alphaMap=this.alphaMap.toJSON(g).uuid),this.lightMap&&this.lightMap.isTexture&&(I.lightMap=this.lightMap.toJSON(g).uuid,I.lightMapIntensity=this.lightMapIntensity),this.aoMap&&this.aoMap.isTexture&&(I.aoMap=this.aoMap.toJSON(g).uuid,I.aoMapIntensity=this.aoMapIntensity),this.bumpMap&&this.bumpMap.isTexture&&(I.bumpMap=this.bumpMap.toJSON(g).uuid,I.bumpScale=this.bumpScale),this.normalMap&&this.normalMap.isTexture&&(I.normalMap=this.normalMap.toJSON(g).uuid,I.normalMapType=this.normalMapType,I.normalScale=this.normalScale.toArray()),this.displacementMap&&this.displacementMap.isTexture&&(I.displacementMap=this.displacementMap.toJSON(g).uuid,I.displacementScale=this.displacementScale,I.displacementBias=this.displacementBias),this.roughnessMap&&this.roughnessMap.isTexture&&(I.roughnessMap=this.roughnessMap.toJSON(g).uuid),this.metalnessMap&&this.metalnessMap.isTexture&&(I.metalnessMap=this.metalnessMap.toJSON(g).uuid),this.emissiveMap&&this.emissiveMap.isTexture&&(I.emissiveMap=this.emissiveMap.toJSON(g).uuid),this.specularMap&&this.specularMap.isTexture&&(I.specularMap=this.specularMap.toJSON(g).uuid),this.specularIntensityMap&&this.specularIntensityMap.isTexture&&(I.specularIntensityMap=this.specularIntensityMap.toJSON(g).uuid),this.specularColorMap&&this.specularColorMap.isTexture&&(I.specularColorMap=this.specularColorMap.toJSON(g).uuid),this.envMap&&this.envMap.isTexture&&(I.envMap=this.envMap.toJSON(g).uuid,this.combine!==void 0&&(I.combine=this.combine)),this.envMapIntensity!==void 0&&(I.envMapIntensity=this.envMapIntensity),this.reflectivity!==void 0&&(I.reflectivity=this.reflectivity),this.refractionRatio!==void 0&&(I.refractionRatio=this.refractionRatio),this.gradientMap&&this.gradientMap.isTexture&&(I.gradientMap=this.gradientMap.toJSON(g).uuid),this.transmission!==void 0&&(I.transmission=this.transmission),this.transmissionMap&&this.transmissionMap.isTexture&&(I.transmissionMap=this.transmissionMap.toJSON(g).uuid),this.thickness!==void 0&&(I.thickness=this.thickness),this.thicknessMap&&this.thicknessMap.isTexture&&(I.thicknessMap=this.thicknessMap.toJSON(g).uuid),this.attenuationDistance!==void 0&&this.attenuationDistance!==1/0&&(I.attenuationDistance=this.attenuationDistance),this.attenuationColor!==void 0&&(I.attenuationColor=this.attenuationColor.getHex()),this.size!==void 0&&(I.size=this.size),this.shadowSide!==null&&(I.shadowSide=this.shadowSide),this.sizeAttenuation!==void 0&&(I.sizeAttenuation=this.sizeAttenuation),this.blending!==oQ&&(I.blending=this.blending),this.side!==RC&&(I.side=this.side),this.vertexColors&&(I.vertexColors=!0),this.opacity<1&&(I.opacity=this.opacity),this.transparent===!0&&(I.transparent=this.transparent),I.depthFunc=this.depthFunc,I.depthTest=this.depthTest,I.depthWrite=this.depthWrite,I.colorWrite=this.colorWrite,I.stencilWrite=this.stencilWrite,I.stencilWriteMask=this.stencilWriteMask,I.stencilFunc=this.stencilFunc,I.stencilRef=this.stencilRef,I.stencilFuncMask=this.stencilFuncMask,I.stencilFail=this.stencilFail,I.stencilZFail=this.stencilZFail,I.stencilZPass=this.stencilZPass,this.rotation!==void 0&&this.rotation!==0&&(I.rotation=this.rotation),this.polygonOffset===!0&&(I.polygonOffset=!0),this.polygonOffsetFactor!==0&&(I.polygonOffsetFactor=this.polygonOffsetFactor),this.polygonOffsetUnits!==0&&(I.polygonOffsetUnits=this.polygonOffsetUnits),this.linewidth!==void 0&&this.linewidth!==1&&(I.linewidth=this.linewidth),this.dashSize!==void 0&&(I.dashSize=this.dashSize),this.gapSize!==void 0&&(I.gapSize=this.gapSize),this.scale!==void 0&&(I.scale=this.scale),this.dithering===!0&&(I.dithering=!0),this.alphaTest>0&&(I.alphaTest=this.alphaTest),this.alphaToCoverage===!0&&(I.alphaToCoverage=this.alphaToCoverage),this.premultipliedAlpha===!0&&(I.premultipliedAlpha=this.premultipliedAlpha),this.forceSinglePass===!0&&(I.forceSinglePass=this.forceSinglePass),this.wireframe===!0&&(I.wireframe=this.wireframe),this.wireframeLinewidth>1&&(I.wireframeLinewidth=this.wireframeLinewidth),this.wireframeLinecap!=="round"&&(I.wireframeLinecap=this.wireframeLinecap),this.wireframeLinejoin!=="round"&&(I.wireframeLinejoin=this.wireframeLinejoin),this.flatShading===!0&&(I.flatShading=this.flatShading),this.visible===!1&&(I.visible=!1),this.toneMapped===!1&&(I.toneMapped=!1),this.fog===!1&&(I.fog=!1),Object.keys(this.userData).length>0&&(I.userData=this.userData);function e(i){let t=[];for(let C in i){let o=i[C];delete o.metadata,t.push(o)}return t}if(A){let i=e(g.textures),t=e(g.images);i.length>0&&(I.textures=i),t.length>0&&(I.images=t)}return I}clone(){return new this.constructor().copy(this)}copy(g){this.name=g.name,this.blending=g.blending,this.side=g.side,this.vertexColors=g.vertexColors,this.opacity=g.opacity,this.transparent=g.transparent,this.blendSrc=g.blendSrc,this.blendDst=g.blendDst,this.blendEquation=g.blendEquation,this.blendSrcAlpha=g.blendSrcAlpha,this.blendDstAlpha=g.blendDstAlpha,this.blendEquationAlpha=g.blendEquationAlpha,this.depthFunc=g.depthFunc,this.depthTest=g.depthTest,this.depthWrite=g.depthWrite,this.stencilWriteMask=g.stencilWriteMask,this.stencilFunc=g.stencilFunc,this.stencilRef=g.stencilRef,this.stencilFuncMask=g.stencilFuncMask,this.stencilFail=g.stencilFail,this.stencilZFail=g.stencilZFail,this.stencilZPass=g.stencilZPass,this.stencilWrite=g.stencilWrite;let A=g.clippingPlanes,I=null;if(A!==null){let e=A.length;I=new Array(e);for(let i=0;i!==e;++i)I[i]=A[i].clone()}return this.clippingPlanes=I,this.clipIntersection=g.clipIntersection,this.clipShadows=g.clipShadows,this.shadowSide=g.shadowSide,this.colorWrite=g.colorWrite,this.precision=g.precision,this.polygonOffset=g.polygonOffset,this.polygonOffsetFactor=g.polygonOffsetFactor,this.polygonOffsetUnits=g.polygonOffsetUnits,this.dithering=g.dithering,this.alphaTest=g.alphaTest,this.alphaToCoverage=g.alphaToCoverage,this.premultipliedAlpha=g.premultipliedAlpha,this.forceSinglePass=g.forceSinglePass,this.visible=g.visible,this.toneMapped=g.toneMapped,this.userData=JSON.parse(JSON.stringify(g.userData)),this}dispose(){this.dispatchEvent({type:"dispose"})}set needsUpdate(g){g===!0&&this.version++}},Xn=class extends zn{constructor(A){super(),this.isMeshBasicMaterial=!0,this.type="MeshBasicMaterial",this.color=new Og(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.combine=SN,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.fog=!0,this.setValues(A)}copy(A){return super.copy(A),this.color.copy(A.color),this.map=A.map,this.lightMap=A.lightMap,this.lightMapIntensity=A.lightMapIntensity,this.aoMap=A.aoMap,this.aoMapIntensity=A.aoMapIntensity,this.specularMap=A.specularMap,this.alphaMap=A.alphaMap,this.envMap=A.envMap,this.combine=A.combine,this.reflectivity=A.reflectivity,this.refractionRatio=A.refractionRatio,this.wireframe=A.wireframe,this.wireframeLinewidth=A.wireframeLinewidth,this.wireframeLinecap=A.wireframeLinecap,this.wireframeLinejoin=A.wireframeLinejoin,this.fog=A.fog,this}},He=new J,Jh=new sA,zg=class{constructor(g,A,I=!1){if(Array.isArray(g))throw new TypeError("THREE.BufferAttribute: array should be a Typed Array.");this.isBufferAttribute=!0,this.name="",this.array=g,this.itemSize=A,this.count=g!==void 0?g.length/A:0,this.normalized=I,this.usage=xp,this.updateRange={offset:0,count:-1},this.version=0}onUploadCallback(){}set needsUpdate(g){g===!0&&this.version++}setUsage(g){return this.usage=g,this}copy(g){return this.name=g.name,this.array=new g.array.constructor(g.array),this.itemSize=g.itemSize,this.count=g.count,this.normalized=g.normalized,this.usage=g.usage,this}copyAt(g,A,I){g*=this.itemSize,I*=A.itemSize;for(let e=0,i=this.itemSize;e0&&(A.userData=this.userData),this.parameters!==void 0){let B=this.parameters;for(let a in B)B[a]!==void 0&&(A[a]=B[a]);return A}A.data={attributes:{}};let I=this.index;I!==null&&(A.data.index={type:I.array.constructor.name,array:Array.prototype.slice.call(I.array)});let e=this.attributes;for(let B in e){let a=e[B];A.data.attributes[B]=a.toJSON(A.data)}let i={},t=!1;for(let B in this.morphAttributes){let a=this.morphAttributes[B],s=[];for(let r=0,Q=a.length;r0&&(i[B]=s,t=!0)}t&&(A.data.morphAttributes=i,A.data.morphTargetsRelative=this.morphTargetsRelative);let C=this.groups;C.length>0&&(A.data.groups=JSON.parse(JSON.stringify(C)));let o=this.boundingSphere;return o!==null&&(A.data.boundingSphere={center:o.center.toArray(),radius:o.radius}),A}clone(){return new this.constructor().copy(this)}copy(A){this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null;let I={};this.name=A.name;let e=A.index;e!==null&&this.setIndex(e.clone(I));let i=A.attributes;for(let a in i){let s=i[a];this.setAttribute(a,s.clone(I))}let t=A.morphAttributes;for(let a in t){let s=[],r=t[a];for(let Q=0,E=r.length;Q0){let e=A[I[0]];if(e!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let i=0,t=e.length;iI.far?null:{distance:a,point:Yh.clone(),object:g}}function xh(g,A,I,e,i,t,C,o,B){g.getVertexPosition(C,yE),g.getVertexPosition(o,wE),g.getVertexPosition(B,SE);let a=WL(g,A,I,e,yE,wE,SE,gu);if(a){i&&(qh.fromBufferAttribute(i,C),Lh.fromBufferAttribute(i,o),bh.fromBufferAttribute(i,B),a.uv=Ni.getUV(gu,yE,wE,SE,qh,Lh,bh,new sA)),t&&(qh.fromBufferAttribute(t,C),Lh.fromBufferAttribute(t,o),bh.fromBufferAttribute(t,B),a.uv2=Ni.getUV(gu,yE,wE,SE,qh,Lh,bh,new sA));let s={a:C,b:o,c:B,normal:new J,materialIndex:0};Ni.getNormal(yE,wE,SE,s.normal),a.face=s}return a}var Go=class extends bg{constructor(A=1,I=1,e=1,i=1,t=1,C=1){super(),this.type="BoxGeometry",this.parameters={width:A,height:I,depth:e,widthSegments:i,heightSegments:t,depthSegments:C};let o=this;i=Math.floor(i),t=Math.floor(t),C=Math.floor(C);let B=[],a=[],s=[],r=[],Q=0,E=0;n("z","y","x",-1,-1,e,I,A,C,t,0),n("z","y","x",1,-1,e,I,-A,C,t,1),n("x","z","y",1,1,A,e,I,i,C,2),n("x","z","y",1,-1,A,e,-I,i,C,3),n("x","y","z",1,-1,A,I,e,i,t,4),n("x","y","z",-1,-1,A,I,-e,i,t,5),this.setIndex(B),this.setAttribute("position",new pg(a,3)),this.setAttribute("normal",new pg(s,3)),this.setAttribute("uv",new pg(r,2));function n(h,l,c,d,u,y,f,k,M,G,v){let N=y/M,b=f/G,O=y/2,H=f/2,_=k/2,gA=M+1,CA=G+1,AA=0,BA=0,iA=new J;for(let rA=0;rA0?1:-1,s.push(iA.x,iA.y,iA.z),r.push(IA/M),r.push(1-rA/G),AA+=1}}for(let rA=0;rAs||i.y>s)&&(i.x>s&&(t.x=Math.floor(s/gA.x),i.x=t.x*gA.x,_.mapSize.x=t.x),i.y>s&&(t.y=Math.floor(s/gA.y),i.y=t.y*gA.y,_.mapSize.y=t.y)),_.map===null){let AA=this.type!==WE?{minFilter:ie,magFilter:ie}:{};_.map=new WI(i.x,i.y,AA),_.map.texture.name=H.name+".shadowMap",_.camera.updateProjectionMatrix()}g.setRenderTarget(_.map),g.clear();let CA=_.getViewportCount();for(let AA=0;AA0||f.map&&f.alphaTest>0){let O=N.uuid,H=f.uuid,_=a[O];_===void 0&&(_={},a[O]=_);let gA=_[H];gA===void 0&&(gA=N.clone(),_[H]=gA),N=gA}return N.visible=f.visible,N.wireframe=f.wireframe,v===WE?N.side=f.shadowSide!==null?f.shadowSide:f.side:N.side=f.shadowSide!==null?f.shadowSide:r[f.side],N.alphaMap=f.alphaMap,N.alphaTest=f.alphaTest,N.map=f.map,N.clipShadows=f.clipShadows,N.clippingPlanes=f.clippingPlanes,N.clipIntersection=f.clipIntersection,N.displacementMap=f.displacementMap,N.displacementScale=f.displacementScale,N.displacementBias=f.displacementBias,N.wireframeLinewidth=f.wireframeLinewidth,N.linewidth=f.linewidth,k.isPointLight===!0&&N.isMeshDistanceMaterial===!0&&(N.referencePosition.setFromMatrixPosition(k.matrixWorld),N.nearDistance=M,N.farDistance=G),N}function u(y,f,k,M,G){if(y.visible===!1)return;if(y.layers.test(f.layers)&&(y.isMesh||y.isLine||y.isPoints)&&(y.castShadow||y.receiveShadow&&G===WE)&&(!y.frustumCulled||e.intersectsObject(y))){y.modelViewMatrix.multiplyMatrices(k.matrixWorldInverse,y.matrixWorld);let N=A.update(y),b=y.material;if(Array.isArray(b)){let O=N.groups;for(let H=0,_=O.length;H<_;H++){let gA=O[H],CA=b[gA.materialIndex];if(CA&&CA.visible){let AA=d(y,CA,M,k.near,k.far,G);g.renderBufferDirect(k,null,N,AA,y,gA)}}}else if(b.visible){let O=d(y,b,M,k.near,k.far,G);g.renderBufferDirect(k,null,N,O,y,null)}}let v=y.children;for(let N=0,b=v.length;N=1):BA.indexOf("OpenGL ES")!==-1&&(AA=parseFloat(/^OpenGL ES (\d)/.exec(BA)[1]),CA=AA>=2);let iA=null,rA={},$=g.getParameter(3088),IA=g.getParameter(2978),hA=new EI().fromArray($),QA=new EI().fromArray(IA);function DA(lA,KA,WA){let Qg=new Uint8Array(4),Lg=g.createTexture();g.bindTexture(lA,Lg),g.texParameteri(lA,10241,9728),g.texParameteri(lA,10240,9728);for(let $g=0;$g"u"?!1:/OculusBrowser/g.test(navigator.userAgent),n=new WeakMap,h,l=new WeakMap,c=!1;try{c=typeof OffscreenCanvas<"u"&&new OffscreenCanvas(1,1).getContext("2d")!==null}catch{}function d(V,W){return c?new OffscreenCanvas(V,W):Dc("canvas")}function u(V,W,wA,qA){let Ig=1;if((V.width>qA||V.height>qA)&&(Ig=qA/Math.max(V.width,V.height)),Ig<1||W===!0)if(typeof HTMLImageElement<"u"&&V instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&V instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&V instanceof ImageBitmap){let jA=W?cc:Math.floor,dg=jA(Ig*V.width),Cg=jA(Ig*V.height);h===void 0&&(h=d(dg,Cg));let UA=wA?d(dg,Cg):h;return UA.width=dg,UA.height=Cg,UA.getContext("2d").drawImage(V,0,0,dg,Cg),console.warn("THREE.WebGLRenderer: Texture has been resized from ("+V.width+"x"+V.height+") to ("+dg+"x"+Cg+")."),UA}else return"data"in V&&console.warn("THREE.WebGLRenderer: Image in DataTexture is too big ("+V.width+"x"+V.height+")."),V;return V}function y(V){return Tp(V.width)&&Tp(V.height)}function f(V){return o?!1:V.wrapS!==Ke||V.wrapT!==Ke||V.minFilter!==ie&&V.minFilter!==cI}function k(V,W){return V.generateMipmaps&&W&&V.minFilter!==ie&&V.minFilter!==cI}function M(V){g.generateMipmap(V)}function G(V,W,wA,qA,Ig=!1){if(o===!1)return W;if(V!==null){if(g[V]!==void 0)return g[V];console.warn("THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format '"+V+"'")}let jA=W;return W===6403&&(wA===5126&&(jA=33326),wA===5131&&(jA=33325),wA===5121&&(jA=33321)),W===33319&&(wA===5126&&(jA=33328),wA===5131&&(jA=33327),wA===5121&&(jA=33323)),W===6408&&(wA===5126&&(jA=34836),wA===5131&&(jA=34842),wA===5121&&(jA=qA===sI&&Ig===!1?35907:32856),wA===32819&&(jA=32854),wA===32820&&(jA=32855)),(jA===33325||jA===33326||jA===33327||jA===33328||jA===34842||jA===34836)&&A.get("EXT_color_buffer_float"),jA}function v(V,W,wA){return k(V,wA)===!0||V.isFramebufferTexture&&V.minFilter!==ie&&V.minFilter!==cI?Math.log2(Math.max(W.width,W.height))+1:V.mipmaps!==void 0&&V.mipmaps.length>0?V.mipmaps.length:V.isCompressedTexture&&Array.isArray(V.image)?W.mipmaps.length:1}function N(V){return V===ie||V===sf||V===md?9728:9729}function b(V){let W=V.target;W.removeEventListener("dispose",b),H(W),W.isVideoTexture&&n.delete(W)}function O(V){let W=V.target;W.removeEventListener("dispose",O),gA(W)}function H(V){let W=e.get(V);if(W.__webglInit===void 0)return;let wA=V.source,qA=l.get(wA);if(qA){let Ig=qA[W.__cacheKey];Ig.usedTimes--,Ig.usedTimes===0&&_(V),Object.keys(qA).length===0&&l.delete(wA)}e.remove(V)}function _(V){let W=e.get(V);g.deleteTexture(W.__webglTexture);let wA=V.source,qA=l.get(wA);delete qA[W.__cacheKey],C.memory.textures--}function gA(V){let W=V.texture,wA=e.get(V),qA=e.get(W);if(qA.__webglTexture!==void 0&&(g.deleteTexture(qA.__webglTexture),C.memory.textures--),V.depthTexture&&V.depthTexture.dispose(),V.isWebGLCubeRenderTarget)for(let Ig=0;Ig<6;Ig++)g.deleteFramebuffer(wA.__webglFramebuffer[Ig]),wA.__webglDepthbuffer&&g.deleteRenderbuffer(wA.__webglDepthbuffer[Ig]);else{if(g.deleteFramebuffer(wA.__webglFramebuffer),wA.__webglDepthbuffer&&g.deleteRenderbuffer(wA.__webglDepthbuffer),wA.__webglMultisampledFramebuffer&&g.deleteFramebuffer(wA.__webglMultisampledFramebuffer),wA.__webglColorRenderbuffer)for(let Ig=0;Ig=B&&console.warn("THREE.WebGLTextures: Trying to use "+V+" texture units while this GPU supports only "+B),CA+=1,V}function iA(V){let W=[];return W.push(V.wrapS),W.push(V.wrapT),W.push(V.wrapR||0),W.push(V.magFilter),W.push(V.minFilter),W.push(V.anisotropy),W.push(V.internalFormat),W.push(V.format),W.push(V.type),W.push(V.generateMipmaps),W.push(V.premultiplyAlpha),W.push(V.flipY),W.push(V.unpackAlignment),W.push(V.encoding),W.join()}function rA(V,W){let wA=e.get(V);if(V.isVideoTexture&&mg(V),V.isRenderTargetTexture===!1&&V.version>0&&wA.__version!==V.version){let qA=V.image;if(qA===null)console.warn("THREE.WebGLRenderer: Texture marked for update but no image data found.");else if(qA.complete===!1)console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete");else{nA(wA,V,W);return}}I.bindTexture(3553,wA.__webglTexture,33984+W)}function $(V,W){let wA=e.get(V);if(V.version>0&&wA.__version!==V.version){nA(wA,V,W);return}I.bindTexture(35866,wA.__webglTexture,33984+W)}function IA(V,W){let wA=e.get(V);if(V.version>0&&wA.__version!==V.version){nA(wA,V,W);return}I.bindTexture(32879,wA.__webglTexture,33984+W)}function hA(V,W){let wA=e.get(V);if(V.version>0&&wA.__version!==V.version){fA(wA,V,W);return}I.bindTexture(34067,wA.__webglTexture,33984+W)}let QA={[hB]:10497,[Ke]:33071,[Yp]:33648},DA={[ie]:9728,[sf]:9984,[md]:9986,[cI]:9729,[eL]:9985,[SQ]:9987};function eA(V,W,wA){if(wA?(g.texParameteri(V,10242,QA[W.wrapS]),g.texParameteri(V,10243,QA[W.wrapT]),(V===32879||V===35866)&&g.texParameteri(V,32882,QA[W.wrapR]),g.texParameteri(V,10240,DA[W.magFilter]),g.texParameteri(V,10241,DA[W.minFilter])):(g.texParameteri(V,10242,33071),g.texParameteri(V,10243,33071),(V===32879||V===35866)&&g.texParameteri(V,32882,33071),(W.wrapS!==Ke||W.wrapT!==Ke)&&console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping."),g.texParameteri(V,10240,N(W.magFilter)),g.texParameteri(V,10241,N(W.minFilter)),W.minFilter!==ie&&W.minFilter!==cI&&console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.")),A.has("EXT_texture_filter_anisotropic")===!0){let qA=A.get("EXT_texture_filter_anisotropic");if(W.magFilter===ie||W.minFilter!==md&&W.minFilter!==SQ||W.type===Rt&&A.has("OES_texture_float_linear")===!1||o===!1&&W.type===fQ&&A.has("OES_texture_half_float_linear")===!1)return;(W.anisotropy>1||e.get(W).__currentAnisotropy)&&(g.texParameterf(V,qA.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(W.anisotropy,i.getMaxAnisotropy())),e.get(W).__currentAnisotropy=W.anisotropy)}}function aA(V,W){let wA=!1;V.__webglInit===void 0&&(V.__webglInit=!0,W.addEventListener("dispose",b));let qA=W.source,Ig=l.get(qA);Ig===void 0&&(Ig={},l.set(qA,Ig));let jA=iA(W);if(jA!==V.__cacheKey){Ig[jA]===void 0&&(Ig[jA]={texture:g.createTexture(),usedTimes:0},C.memory.textures++,wA=!0),Ig[jA].usedTimes++;let dg=Ig[V.__cacheKey];dg!==void 0&&(Ig[V.__cacheKey].usedTimes--,dg.usedTimes===0&&_(W)),V.__cacheKey=jA,V.__webglTexture=Ig[jA].texture}return wA}function nA(V,W,wA){let qA=3553;(W.isDataArrayTexture||W.isCompressedArrayTexture)&&(qA=35866),W.isData3DTexture&&(qA=32879);let Ig=aA(V,W),jA=W.source;I.bindTexture(qA,V.__webglTexture,33984+wA);let dg=e.get(jA);if(jA.version!==dg.__version||Ig===!0){I.activeTexture(33984+wA),g.pixelStorei(37440,W.flipY),g.pixelStorei(37441,W.premultiplyAlpha),g.pixelStorei(3317,W.unpackAlignment),g.pixelStorei(37443,0);let Cg=f(W)&&y(W.image)===!1,UA=u(W.image,Cg,!1,s);UA=hg(W,UA);let fg=y(UA)||o,Rg=t.convert(W.format,W.encoding),Ug=t.convert(W.type),ng=G(W.internalFormat,Rg,Ug,W.encoding,W.isVideoTexture);eA(qA,W,fg);let og,Zg=W.mipmaps,cg=o&&W.isVideoTexture!==!0,OI=dg.__version===void 0||Ig===!0,lA=v(W,UA,fg);if(W.isDepthTexture)ng=6402,o?W.type===Rt?ng=36012:W.type===oa?ng=33190:W.type===wr?ng=35056:ng=33189:W.type===Rt&&console.error("WebGLRenderer: Floating point depth texture requires WebGL2."),W.format===Sr&&ng===6402&&W.type!==GN&&W.type!==oa&&(console.warn("THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture."),W.type=oa,Ug=t.convert(W.type)),W.format===Fr&&ng===6402&&(ng=34041,W.type!==wr&&(console.warn("THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture."),W.type=wr,Ug=t.convert(W.type))),OI&&(cg?I.texStorage2D(3553,1,ng,UA.width,UA.height):I.texImage2D(3553,0,ng,UA.width,UA.height,0,Rg,Ug,null));else if(W.isDataTexture)if(Zg.length>0&&fg){cg&&OI&&I.texStorage2D(3553,lA,ng,Zg[0].width,Zg[0].height);for(let KA=0,WA=Zg.length;KA>=1,WA>>=1}}else if(Zg.length>0&&fg){cg&&OI&&I.texStorage2D(3553,lA,ng,Zg[0].width,Zg[0].height);for(let KA=0,WA=Zg.length;KA0&&OI++,I.texStorage2D(34067,OI,og,UA[0].width,UA[0].height));for(let KA=0;KA<6;KA++)if(Cg){Zg?I.texSubImage2D(34069+KA,0,0,0,UA[KA].width,UA[KA].height,Ug,ng,UA[KA].data):I.texImage2D(34069+KA,0,og,UA[KA].width,UA[KA].height,0,Ug,ng,UA[KA].data);for(let WA=0;WA=34069&&Ig<=34074)&&g.framebufferTexture2D(36160,qA,Ig,e.get(wA).__webglTexture,0),I.bindFramebuffer(36160,null)}function VA(V,W,wA){if(g.bindRenderbuffer(36161,V),W.depthBuffer&&!W.stencilBuffer){let qA=33189;if(wA||$A(W)){let Ig=W.depthTexture;Ig&&Ig.isDepthTexture&&(Ig.type===Rt?qA=36012:Ig.type===oa&&(qA=33190));let jA=Eg(W);$A(W)?Q.renderbufferStorageMultisampleEXT(36161,jA,qA,W.width,W.height):g.renderbufferStorageMultisample(36161,jA,qA,W.width,W.height)}else g.renderbufferStorage(36161,qA,W.width,W.height);g.framebufferRenderbuffer(36160,36096,36161,V)}else if(W.depthBuffer&&W.stencilBuffer){let qA=Eg(W);wA&&$A(W)===!1?g.renderbufferStorageMultisample(36161,qA,35056,W.width,W.height):$A(W)?Q.renderbufferStorageMultisampleEXT(36161,qA,35056,W.width,W.height):g.renderbufferStorage(36161,34041,W.width,W.height),g.framebufferRenderbuffer(36160,33306,36161,V)}else{let qA=W.isWebGLMultipleRenderTargets===!0?W.texture:[W.texture];for(let Ig=0;Ig0&&$A(V)===!1){let Cg=jA?W:[W];wA.__webglMultisampledFramebuffer=g.createFramebuffer(),wA.__webglColorRenderbuffer=[],I.bindFramebuffer(36160,wA.__webglMultisampledFramebuffer);for(let UA=0;UA0&&$A(V)===!1){let W=V.isWebGLMultipleRenderTargets?V.texture:[V.texture],wA=V.width,qA=V.height,Ig=16384,jA=[],dg=V.stencilBuffer?33306:36096,Cg=e.get(V),UA=V.isWebGLMultipleRenderTargets===!0;if(UA)for(let fg=0;fg0&&A.has("WEBGL_multisampled_render_to_texture")===!0&&W.__useRenderToTexture!==!1}function mg(V){let W=C.render.frame;n.get(V)!==W&&(n.set(V,W),V.update())}function hg(V,W){let wA=V.encoding,qA=V.format,Ig=V.type;return V.isCompressedTexture===!0||V.isVideoTexture===!0||V.format===Hp||wA!==fo&&(wA===sI?o===!1?A.has("EXT_sRGB")===!0&&qA===$t?(V.format=Hp,V.minFilter=cI,V.generateMipmaps=!1):W=KN.sRGBToLinear(W):(qA!==$t||Ig!==vi)&&console.warn("THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType."):console.error("THREE.WebGLTextures: Unsupported texture encoding:",wA)),W}this.allocateTextureUnit=BA,this.resetTextureUnits=AA,this.setTexture2D=rA,this.setTexture2DArray=$,this.setTexture3D=IA,this.setTextureCube=hA,this.rebindTextures=HA,this.setupRenderTarget=Ag,this.updateRenderTargetMipmap=gg,this.updateMultisampleRenderTarget=Dg,this.setupDepthRenderbuffer=LA,this.setupFrameBufferTexture=uA,this.useMultisampledRTT=$A}function fH(g,A,I){let e=I.isWebGL2;function i(t,C=null){let o;if(t===vi)return 5121;if(t===oL)return 32819;if(t===BL)return 32820;if(t===iL)return 5120;if(t===tL)return 5122;if(t===GN)return 5123;if(t===CL)return 5124;if(t===oa)return 5125;if(t===Rt)return 5126;if(t===fQ)return e?5131:(o=A.get("OES_texture_half_float"),o!==null?o.HALF_FLOAT_OES:null);if(t===aL)return 6406;if(t===$t)return 6408;if(t===rL)return 6409;if(t===sL)return 6410;if(t===Sr)return 6402;if(t===Fr)return 34041;if(t===Hp)return o=A.get("EXT_sRGB"),o!==null?o.SRGB_ALPHA_EXT:null;if(t===QL)return 6403;if(t===EL)return 36244;if(t===kN)return 33319;if(t===nL)return 33320;if(t===hL)return 36249;if(t===Ud||t===Nd||t===Fd||t===Rd)if(C===sI)if(o=A.get("WEBGL_compressed_texture_s3tc_srgb"),o!==null){if(t===Ud)return o.COMPRESSED_SRGB_S3TC_DXT1_EXT;if(t===Nd)return o.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;if(t===Fd)return o.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;if(t===Rd)return o.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT}else return null;else if(o=A.get("WEBGL_compressed_texture_s3tc"),o!==null){if(t===Ud)return o.COMPRESSED_RGB_S3TC_DXT1_EXT;if(t===Nd)return o.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(t===Fd)return o.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(t===Rd)return o.COMPRESSED_RGBA_S3TC_DXT5_EXT}else return null;if(t===Qf||t===Ef||t===nf||t===hf)if(o=A.get("WEBGL_compressed_texture_pvrtc"),o!==null){if(t===Qf)return o.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(t===Ef)return o.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(t===nf)return o.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(t===hf)return o.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}else return null;if(t===lL)return o=A.get("WEBGL_compressed_texture_etc1"),o!==null?o.COMPRESSED_RGB_ETC1_WEBGL:null;if(t===lf||t===cf)if(o=A.get("WEBGL_compressed_texture_etc"),o!==null){if(t===lf)return C===sI?o.COMPRESSED_SRGB8_ETC2:o.COMPRESSED_RGB8_ETC2;if(t===cf)return C===sI?o.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:o.COMPRESSED_RGBA8_ETC2_EAC}else return null;if(t===Df||t===df||t===uf||t===pf||t===yf||t===wf||t===Sf||t===ff||t===Gf||t===kf||t===Mf||t===mf||t===Uf||t===Nf)if(o=A.get("WEBGL_compressed_texture_astc"),o!==null){if(t===Df)return C===sI?o.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:o.COMPRESSED_RGBA_ASTC_4x4_KHR;if(t===df)return C===sI?o.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:o.COMPRESSED_RGBA_ASTC_5x4_KHR;if(t===uf)return C===sI?o.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:o.COMPRESSED_RGBA_ASTC_5x5_KHR;if(t===pf)return C===sI?o.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:o.COMPRESSED_RGBA_ASTC_6x5_KHR;if(t===yf)return C===sI?o.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:o.COMPRESSED_RGBA_ASTC_6x6_KHR;if(t===wf)return C===sI?o.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:o.COMPRESSED_RGBA_ASTC_8x5_KHR;if(t===Sf)return C===sI?o.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:o.COMPRESSED_RGBA_ASTC_8x6_KHR;if(t===ff)return C===sI?o.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:o.COMPRESSED_RGBA_ASTC_8x8_KHR;if(t===Gf)return C===sI?o.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:o.COMPRESSED_RGBA_ASTC_10x5_KHR;if(t===kf)return C===sI?o.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:o.COMPRESSED_RGBA_ASTC_10x6_KHR;if(t===Mf)return C===sI?o.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:o.COMPRESSED_RGBA_ASTC_10x8_KHR;if(t===mf)return C===sI?o.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:o.COMPRESSED_RGBA_ASTC_10x10_KHR;if(t===Uf)return C===sI?o.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:o.COMPRESSED_RGBA_ASTC_12x10_KHR;if(t===Nf)return C===sI?o.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:o.COMPRESSED_RGBA_ASTC_12x12_KHR}else return null;if(t===Kd)if(o=A.get("EXT_texture_compression_bptc"),o!==null){if(t===Kd)return C===sI?o.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT:o.COMPRESSED_RGBA_BPTC_UNORM_EXT}else return null;if(t===cL||t===Ff||t===Rf||t===Kf)if(o=A.get("EXT_texture_compression_rgtc"),o!==null){if(t===Kd)return o.COMPRESSED_RED_RGTC1_EXT;if(t===Ff)return o.COMPRESSED_SIGNED_RED_RGTC1_EXT;if(t===Rf)return o.COMPRESSED_RED_GREEN_RGTC2_EXT;if(t===Kf)return o.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT}else return null;return t===wr?e?34042:(o=A.get("WEBGL_depth_texture"),o!==null?o.UNSIGNED_INT_24_8_WEBGL:null):g[t]!==void 0?g[t]:null}return{convert:i}}var GH=class extends Ui{constructor(g=[]){super(),this.isArrayCamera=!0,this.cameras=g}},gQ=class extends ZI{constructor(){super(),this.isGroup=!0,this.type="Group"}},kH={type:"move"},Cu=class{constructor(){this._targetRay=null,this._grip=null,this._hand=null}getHandSpace(){return this._hand===null&&(this._hand=new gQ,this._hand.matrixAutoUpdate=!1,this._hand.visible=!1,this._hand.joints={},this._hand.inputState={pinching:!1}),this._hand}getTargetRaySpace(){return this._targetRay===null&&(this._targetRay=new gQ,this._targetRay.matrixAutoUpdate=!1,this._targetRay.visible=!1,this._targetRay.hasLinearVelocity=!1,this._targetRay.linearVelocity=new J,this._targetRay.hasAngularVelocity=!1,this._targetRay.angularVelocity=new J),this._targetRay}getGripSpace(){return this._grip===null&&(this._grip=new gQ,this._grip.matrixAutoUpdate=!1,this._grip.visible=!1,this._grip.hasLinearVelocity=!1,this._grip.linearVelocity=new J,this._grip.hasAngularVelocity=!1,this._grip.angularVelocity=new J),this._grip}dispatchEvent(g){return this._targetRay!==null&&this._targetRay.dispatchEvent(g),this._grip!==null&&this._grip.dispatchEvent(g),this._hand!==null&&this._hand.dispatchEvent(g),this}connect(g){if(g&&g.hand){let A=this._hand;if(A)for(let I of g.hand.values())this._getHandJoint(A,I)}return this.dispatchEvent({type:"connected",data:g}),this}disconnect(g){return this.dispatchEvent({type:"disconnected",data:g}),this._targetRay!==null&&(this._targetRay.visible=!1),this._grip!==null&&(this._grip.visible=!1),this._hand!==null&&(this._hand.visible=!1),this}update(g,A,I){let e=null,i=null,t=null,C=this._targetRay,o=this._grip,B=this._hand;if(g&&A.session.visibilityState!=="visible-blurred"){if(B&&g.hand){t=!0;for(let n of g.hand.values()){let h=A.getJointPose(n,I),l=this._getHandJoint(B,n);h!==null&&(l.matrix.fromArray(h.transform.matrix),l.matrix.decompose(l.position,l.rotation,l.scale),l.jointRadius=h.radius),l.visible=h!==null}let a=B.joints["index-finger-tip"],s=B.joints["thumb-tip"],r=a.position.distanceTo(s.position),Q=.02,E=.005;B.inputState.pinching&&r>Q+E?(B.inputState.pinching=!1,this.dispatchEvent({type:"pinchend",handedness:g.handedness,target:this})):!B.inputState.pinching&&r<=Q-E&&(B.inputState.pinching=!0,this.dispatchEvent({type:"pinchstart",handedness:g.handedness,target:this}))}else o!==null&&g.gripSpace&&(i=A.getPose(g.gripSpace,I),i!==null&&(o.matrix.fromArray(i.transform.matrix),o.matrix.decompose(o.position,o.rotation,o.scale),i.linearVelocity?(o.hasLinearVelocity=!0,o.linearVelocity.copy(i.linearVelocity)):o.hasLinearVelocity=!1,i.angularVelocity?(o.hasAngularVelocity=!0,o.angularVelocity.copy(i.angularVelocity)):o.hasAngularVelocity=!1));C!==null&&(e=A.getPose(g.targetRaySpace,I),e===null&&i!==null&&(e=i),e!==null&&(C.matrix.fromArray(e.transform.matrix),C.matrix.decompose(C.position,C.rotation,C.scale),e.linearVelocity?(C.hasLinearVelocity=!0,C.linearVelocity.copy(e.linearVelocity)):C.hasLinearVelocity=!1,e.angularVelocity?(C.hasAngularVelocity=!0,C.angularVelocity.copy(e.angularVelocity)):C.hasAngularVelocity=!1,this.dispatchEvent(kH)))}return C!==null&&(C.visible=e!==null),o!==null&&(o.visible=i!==null),B!==null&&(B.visible=t!==null),this}_getHandJoint(g,A){if(g.joints[A.jointName]===void 0){let I=new gQ;I.matrixAutoUpdate=!1,I.visible=!1,g.joints[A.jointName]=I,g.add(I)}return g.joints[A.jointName]}},kQ=class extends ti{constructor(A,I,e,i,t,C,o,B,a,s){if(s=s!==void 0?s:Sr,s!==Sr&&s!==Fr)throw new Error("DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat");e===void 0&&s===Sr&&(e=oa),e===void 0&&s===Fr&&(e=wr),super(null,i,t,C,o,B,s,e,a),this.isDepthTexture=!0,this.image={width:A,height:I},this.magFilter=o!==void 0?o:ie,this.minFilter=B!==void 0?B:ie,this.flipY=!1,this.generateMipmaps=!1}},MH=class extends Si{constructor(g,A){super();let I=this,e=null,i=1,t=null,C="local-floor",o=1,B=null,a=null,s=null,r=null,Q=null,E=null,n=A.getContextAttributes(),h=null,l=null,c=[],d=[],u=new Set,y=new Map,f=new Ui;f.layers.enable(1),f.viewport=new EI;let k=new Ui;k.layers.enable(2),k.viewport=new EI;let M=[f,k],G=new GH;G.layers.enable(1),G.layers.enable(2);let v=null,N=null;this.cameraAutoUpdate=!0,this.enabled=!1,this.isPresenting=!1,this.getController=function($){let IA=c[$];return IA===void 0&&(IA=new Cu,c[$]=IA),IA.getTargetRaySpace()},this.getControllerGrip=function($){let IA=c[$];return IA===void 0&&(IA=new Cu,c[$]=IA),IA.getGripSpace()},this.getHand=function($){let IA=c[$];return IA===void 0&&(IA=new Cu,c[$]=IA),IA.getHandSpace()};function b($){let IA=d.indexOf($.inputSource);if(IA===-1)return;let hA=c[IA];hA!==void 0&&hA.dispatchEvent({type:$.type,data:$.inputSource})}function O(){e.removeEventListener("select",b),e.removeEventListener("selectstart",b),e.removeEventListener("selectend",b),e.removeEventListener("squeeze",b),e.removeEventListener("squeezestart",b),e.removeEventListener("squeezeend",b),e.removeEventListener("end",O),e.removeEventListener("inputsourceschange",H);for(let $=0;$=0&&(d[QA]=null,c[QA].disconnect(hA))}for(let IA=0;IA<$.added.length;IA++){let hA=$.added[IA],QA=d.indexOf(hA);if(QA===-1){for(let eA=0;eA=d.length){d.push(hA),QA=eA;break}else if(d[eA]===null){d[eA]=hA,QA=eA;break}if(QA===-1)break}let DA=c[QA];DA&&DA.connect(hA)}}let _=new J,gA=new J;function CA($,IA,hA){_.setFromMatrixPosition(IA.matrixWorld),gA.setFromMatrixPosition(hA.matrixWorld);let QA=_.distanceTo(gA),DA=IA.projectionMatrix.elements,eA=hA.projectionMatrix.elements,aA=DA[14]/(DA[10]-1),nA=DA[14]/(DA[10]+1),fA=(DA[9]+1)/DA[5],uA=(DA[9]-1)/DA[5],VA=(DA[8]-1)/DA[0],yA=(eA[8]+1)/eA[0],LA=aA*VA,HA=aA*yA,Ag=QA/(-VA+yA),gg=Ag*-VA;IA.matrixWorld.decompose($.position,$.quaternion,$.scale),$.translateX(gg),$.translateZ(Ag),$.matrixWorld.compose($.position,$.quaternion,$.scale),$.matrixWorldInverse.copy($.matrixWorld).invert();let Dg=aA+Ag,Eg=nA+Ag,$A=LA-gg,mg=HA+(QA-gg),hg=fA*nA/Eg*Dg,V=uA*nA/Eg*Dg;$.projectionMatrix.makePerspective($A,mg,hg,V,Dg,Eg)}function AA($,IA){IA===null?$.matrixWorld.copy($.matrix):$.matrixWorld.multiplyMatrices(IA.matrixWorld,$.matrix),$.matrixWorldInverse.copy($.matrixWorld).invert()}this.updateCamera=function($){if(e===null)return;G.near=k.near=f.near=$.near,G.far=k.far=f.far=$.far,(v!==G.near||N!==G.far)&&(e.updateRenderState({depthNear:G.near,depthFar:G.far}),v=G.near,N=G.far);let IA=$.parent,hA=G.cameras;AA(G,IA);for(let DA=0;DADA&&(y.set(QA,QA.lastChangedTime),I.dispatchEvent({type:"planechanged",data:QA}))}}E=null}let rA=new bN;rA.setAnimationLoop(iA),this.setAnimationLoop=function($){BA=$},this.dispose=function(){}}};function mH(g,A){function I(h,l){l.color.getRGB(h.fogColor.value,LN(g)),l.isFog?(h.fogNear.value=l.near,h.fogFar.value=l.far):l.isFogExp2&&(h.fogDensity.value=l.density)}function e(h,l,c,d,u){l.isMeshBasicMaterial||l.isMeshLambertMaterial?i(h,l):l.isMeshToonMaterial?(i(h,l),s(h,l)):l.isMeshPhongMaterial?(i(h,l),a(h,l)):l.isMeshStandardMaterial?(i(h,l),r(h,l),l.isMeshPhysicalMaterial&&Q(h,l,u)):l.isMeshMatcapMaterial?(i(h,l),E(h,l)):l.isMeshDepthMaterial?i(h,l):l.isMeshDistanceMaterial?(i(h,l),n(h,l)):l.isMeshNormalMaterial?i(h,l):l.isLineBasicMaterial?(t(h,l),l.isLineDashedMaterial&&C(h,l)):l.isPointsMaterial?o(h,l,c,d):l.isSpriteMaterial?B(h,l):l.isShadowMaterial?(h.color.value.copy(l.color),h.opacity.value=l.opacity):l.isShaderMaterial&&(l.uniformsNeedUpdate=!1)}function i(h,l){h.opacity.value=l.opacity,l.color&&h.diffuse.value.copy(l.color),l.emissive&&h.emissive.value.copy(l.emissive).multiplyScalar(l.emissiveIntensity),l.map&&(h.map.value=l.map),l.alphaMap&&(h.alphaMap.value=l.alphaMap),l.bumpMap&&(h.bumpMap.value=l.bumpMap,h.bumpScale.value=l.bumpScale,l.side===ni&&(h.bumpScale.value*=-1)),l.displacementMap&&(h.displacementMap.value=l.displacementMap,h.displacementScale.value=l.displacementScale,h.displacementBias.value=l.displacementBias),l.emissiveMap&&(h.emissiveMap.value=l.emissiveMap),l.normalMap&&(h.normalMap.value=l.normalMap,h.normalScale.value.copy(l.normalScale),l.side===ni&&h.normalScale.value.negate()),l.specularMap&&(h.specularMap.value=l.specularMap),l.alphaTest>0&&(h.alphaTest.value=l.alphaTest);let c=A.get(l).envMap;if(c&&(h.envMap.value=c,h.flipEnvMap.value=c.isCubeTexture&&c.isRenderTargetTexture===!1?-1:1,h.reflectivity.value=l.reflectivity,h.ior.value=l.ior,h.refractionRatio.value=l.refractionRatio),l.lightMap){h.lightMap.value=l.lightMap;let y=g.physicallyCorrectLights!==!0?Math.PI:1;h.lightMapIntensity.value=l.lightMapIntensity*y}l.aoMap&&(h.aoMap.value=l.aoMap,h.aoMapIntensity.value=l.aoMapIntensity);let d;l.map?d=l.map:l.specularMap?d=l.specularMap:l.displacementMap?d=l.displacementMap:l.normalMap?d=l.normalMap:l.bumpMap?d=l.bumpMap:l.roughnessMap?d=l.roughnessMap:l.metalnessMap?d=l.metalnessMap:l.alphaMap?d=l.alphaMap:l.emissiveMap?d=l.emissiveMap:l.clearcoatMap?d=l.clearcoatMap:l.clearcoatNormalMap?d=l.clearcoatNormalMap:l.clearcoatRoughnessMap?d=l.clearcoatRoughnessMap:l.iridescenceMap?d=l.iridescenceMap:l.iridescenceThicknessMap?d=l.iridescenceThicknessMap:l.specularIntensityMap?d=l.specularIntensityMap:l.specularColorMap?d=l.specularColorMap:l.transmissionMap?d=l.transmissionMap:l.thicknessMap?d=l.thicknessMap:l.sheenColorMap?d=l.sheenColorMap:l.sheenRoughnessMap&&(d=l.sheenRoughnessMap),d!==void 0&&(d.isWebGLRenderTarget&&(d=d.texture),d.matrixAutoUpdate===!0&&d.updateMatrix(),h.uvTransform.value.copy(d.matrix));let u;l.aoMap?u=l.aoMap:l.lightMap&&(u=l.lightMap),u!==void 0&&(u.isWebGLRenderTarget&&(u=u.texture),u.matrixAutoUpdate===!0&&u.updateMatrix(),h.uv2Transform.value.copy(u.matrix))}function t(h,l){h.diffuse.value.copy(l.color),h.opacity.value=l.opacity}function C(h,l){h.dashSize.value=l.dashSize,h.totalSize.value=l.dashSize+l.gapSize,h.scale.value=l.scale}function o(h,l,c,d){h.diffuse.value.copy(l.color),h.opacity.value=l.opacity,h.size.value=l.size*c,h.scale.value=d*.5,l.map&&(h.map.value=l.map),l.alphaMap&&(h.alphaMap.value=l.alphaMap),l.alphaTest>0&&(h.alphaTest.value=l.alphaTest);let u;l.map?u=l.map:l.alphaMap&&(u=l.alphaMap),u!==void 0&&(u.matrixAutoUpdate===!0&&u.updateMatrix(),h.uvTransform.value.copy(u.matrix))}function B(h,l){h.diffuse.value.copy(l.color),h.opacity.value=l.opacity,h.rotation.value=l.rotation,l.map&&(h.map.value=l.map),l.alphaMap&&(h.alphaMap.value=l.alphaMap),l.alphaTest>0&&(h.alphaTest.value=l.alphaTest);let c;l.map?c=l.map:l.alphaMap&&(c=l.alphaMap),c!==void 0&&(c.matrixAutoUpdate===!0&&c.updateMatrix(),h.uvTransform.value.copy(c.matrix))}function a(h,l){h.specular.value.copy(l.specular),h.shininess.value=Math.max(l.shininess,1e-4)}function s(h,l){l.gradientMap&&(h.gradientMap.value=l.gradientMap)}function r(h,l){h.roughness.value=l.roughness,h.metalness.value=l.metalness,l.roughnessMap&&(h.roughnessMap.value=l.roughnessMap),l.metalnessMap&&(h.metalnessMap.value=l.metalnessMap),A.get(l).envMap&&(h.envMapIntensity.value=l.envMapIntensity)}function Q(h,l,c){h.ior.value=l.ior,l.sheen>0&&(h.sheenColor.value.copy(l.sheenColor).multiplyScalar(l.sheen),h.sheenRoughness.value=l.sheenRoughness,l.sheenColorMap&&(h.sheenColorMap.value=l.sheenColorMap),l.sheenRoughnessMap&&(h.sheenRoughnessMap.value=l.sheenRoughnessMap)),l.clearcoat>0&&(h.clearcoat.value=l.clearcoat,h.clearcoatRoughness.value=l.clearcoatRoughness,l.clearcoatMap&&(h.clearcoatMap.value=l.clearcoatMap),l.clearcoatRoughnessMap&&(h.clearcoatRoughnessMap.value=l.clearcoatRoughnessMap),l.clearcoatNormalMap&&(h.clearcoatNormalScale.value.copy(l.clearcoatNormalScale),h.clearcoatNormalMap.value=l.clearcoatNormalMap,l.side===ni&&h.clearcoatNormalScale.value.negate())),l.iridescence>0&&(h.iridescence.value=l.iridescence,h.iridescenceIOR.value=l.iridescenceIOR,h.iridescenceThicknessMinimum.value=l.iridescenceThicknessRange[0],h.iridescenceThicknessMaximum.value=l.iridescenceThicknessRange[1],l.iridescenceMap&&(h.iridescenceMap.value=l.iridescenceMap),l.iridescenceThicknessMap&&(h.iridescenceThicknessMap.value=l.iridescenceThicknessMap)),l.transmission>0&&(h.transmission.value=l.transmission,h.transmissionSamplerMap.value=c.texture,h.transmissionSamplerSize.value.set(c.width,c.height),l.transmissionMap&&(h.transmissionMap.value=l.transmissionMap),h.thickness.value=l.thickness,l.thicknessMap&&(h.thicknessMap.value=l.thicknessMap),h.attenuationDistance.value=l.attenuationDistance,h.attenuationColor.value.copy(l.attenuationColor)),h.specularIntensity.value=l.specularIntensity,h.specularColor.value.copy(l.specularColor),l.specularIntensityMap&&(h.specularIntensityMap.value=l.specularIntensityMap),l.specularColorMap&&(h.specularColorMap.value=l.specularColorMap)}function E(h,l){l.matcap&&(h.matcap.value=l.matcap)}function n(h,l){h.referencePosition.value.copy(l.referencePosition),h.nearDistance.value=l.nearDistance,h.farDistance.value=l.farDistance}return{refreshFogUniforms:I,refreshMaterialUniforms:e}}function UH(g,A,I,e){let i={},t={},C=[],o=I.isWebGL2?g.getParameter(35375):0;function B(d,u){let y=u.program;e.uniformBlockBinding(d,y)}function a(d,u){let y=i[d.id];y===void 0&&(n(d),y=s(d),i[d.id]=y,d.addEventListener("dispose",l));let f=u.program;e.updateUBOMapping(d,f);let k=A.render.frame;t[d.id]!==k&&(Q(d),t[d.id]=k)}function s(d){let u=r();d.__bindingPointIndex=u;let y=g.createBuffer(),f=d.__size,k=d.usage;return g.bindBuffer(35345,y),g.bufferData(35345,f,k),g.bindBuffer(35345,null),g.bindBufferBase(35345,u,y),y}function r(){for(let d=0;d0){k=y%f;let O=f-k;k!==0&&O-N.boundary<0&&(y+=f-k,v.__offset=y)}y+=N.storage}return k=y%f,k>0&&(y+=f-k),d.__size=y,d.__cache={},this}function h(d){let u={boundary:0,storage:0};return typeof d=="number"?(u.boundary=4,u.storage=4):d.isVector2?(u.boundary=8,u.storage=8):d.isVector3||d.isColor?(u.boundary=16,u.storage=12):d.isVector4?(u.boundary=16,u.storage=16):d.isMatrix3?(u.boundary=48,u.storage=48):d.isMatrix4?(u.boundary=64,u.storage=64):d.isTexture?console.warn("THREE.WebGLRenderer: Texture samplers can not be part of an uniforms group."):console.warn("THREE.WebGLRenderer: Unsupported uniform value type.",d),u}function l(d){let u=d.target;u.removeEventListener("dispose",l);let y=C.indexOf(u.__bindingPointIndex);C.splice(y,1),g.deleteBuffer(i[u.id]),delete i[u.id],delete t[u.id]}function c(){for(let d in i)g.deleteBuffer(i[d]);C=[],i={},t={}}return{bind:B,update:a,dispose:c}}function NH(){let g=Dc("canvas");return g.style.display="block",g}function _N(g={}){this.isWebGLRenderer=!0;let A=g.canvas!==void 0?g.canvas:NH(),I=g.context!==void 0?g.context:null,e=g.depth!==void 0?g.depth:!0,i=g.stencil!==void 0?g.stencil:!0,t=g.antialias!==void 0?g.antialias:!1,C=g.premultipliedAlpha!==void 0?g.premultipliedAlpha:!0,o=g.preserveDrawingBuffer!==void 0?g.preserveDrawingBuffer:!1,B=g.powerPreference!==void 0?g.powerPreference:"default",a=g.failIfMajorPerformanceCaveat!==void 0?g.failIfMajorPerformanceCaveat:!1,s;I!==null?s=I.getContextAttributes().alpha:s=g.alpha!==void 0?g.alpha:!1;let r=null,Q=null,E=[],n=[];this.domElement=A,this.debug={checkShaderErrors:!0},this.autoClear=!0,this.autoClearColor=!0,this.autoClearDepth=!0,this.autoClearStencil=!0,this.sortObjects=!0,this.clippingPlanes=[],this.localClippingEnabled=!1,this.outputEncoding=fo,this.physicallyCorrectLights=!1,this.toneMapping=DB,this.toneMappingExposure=1;let h=this,l=!1,c=0,d=0,u=null,y=-1,f=null,k=new EI,M=new EI,G=null,v=A.width,N=A.height,b=1,O=null,H=null,_=new EI(0,0,v,N),gA=new EI(0,0,v,N),CA=!1,AA=new xw,BA=!1,iA=!1,rA=null,$=new zA,IA=new sA,hA=new J,QA={background:null,fog:null,environment:null,overrideMaterial:null,isScene:!0};function DA(){return u===null?b:1}let eA=I;function aA(z,mA){for(let vA=0;vA0?Q=n[n.length-1]:Q=null,E.pop(),E.length>0?r=E[E.length-1]:r=null};function qI(z,mA,vA,GA){if(z.visible===!1)return;if(z.layers.test(mA.layers)){if(z.isGroup)vA=z.renderOrder;else if(z.isLOD)z.autoUpdate===!0&&z.update(mA);else if(z.isLight)Q.pushLight(z),z.castShadow&&Q.pushShadow(z);else if(z.isSprite){if(!z.frustumCulled||AA.intersectsSprite(z)){GA&&hA.setFromMatrixPosition(z.matrixWorld).applyMatrix4($);let Gg=Eg.update(z),Jg=z.material;Jg.visible&&r.push(z,Gg,Jg,vA,hA.z,null)}}else if((z.isMesh||z.isLine||z.isPoints)&&(z.isSkinnedMesh&&z.skeleton.frame!==VA.render.frame&&(z.skeleton.update(),z.skeleton.frame=VA.render.frame),!z.frustumCulled||AA.intersectsObject(z))){GA&&hA.setFromMatrixPosition(z.matrixWorld).applyMatrix4($);let Gg=Eg.update(z),Jg=z.material;if(Array.isArray(Jg)){let Xg=Gg.groups;for(let xg=0,tI=Xg.length;xg0&&be(bA,mA,vA),GA&&uA.viewport(k.copy(GA)),bA.length>0&&NI(bA,mA,vA),Gg.length>0&&NI(Gg,mA,vA),Jg.length>0&&NI(Jg,mA,vA),uA.buffers.depth.setTest(!0),uA.buffers.depth.setMask(!0),uA.buffers.color.setMask(!0),uA.setPolygonOffset(!1)}function be(z,mA,vA){let GA=fA.isWebGL2;rA===null&&(rA=new WI(1,1,{generateMipmaps:!0,type:nA.has("EXT_color_buffer_half_float")?fQ:vi,minFilter:SQ,samples:GA&&t===!0?4:0})),h.getDrawingBufferSize(IA),GA?rA.setSize(IA.x,IA.y):rA.setSize(cc(IA.x),cc(IA.y));let bA=h.getRenderTarget();h.setRenderTarget(rA),h.clear();let Gg=h.toneMapping;h.toneMapping=DB,NI(z,mA,vA),h.toneMapping=Gg,LA.updateMultisampleRenderTarget(rA),LA.updateRenderTargetMipmap(rA),h.setRenderTarget(bA)}function NI(z,mA,vA){let GA=mA.isScene===!0?mA.overrideMaterial:null;for(let bA=0,Gg=z.length;bA0&&LA.useMultisampledRTT(z)===!1?bA=yA.get(z).__webglMultisampledFramebuffer:bA=tI,k.copy(z.viewport),M.copy(z.scissor),G=z.scissorTest}else k.copy(_).multiplyScalar(b).floor(),M.copy(gA).multiplyScalar(b).floor(),G=CA;if(uA.bindFramebuffer(36160,bA)&&fA.drawBuffers&&GA&&uA.drawBuffers(z,bA),uA.viewport(k),uA.scissor(M),uA.setScissorTest(G),Gg){let Xg=yA.get(z.texture);eA.framebufferTexture2D(36160,36064,34069+mA,Xg.__webglTexture,vA)}else if(Jg){let Xg=yA.get(z.texture),xg=mA||0;eA.framebufferTextureLayer(36160,36064,Xg.__webglTexture,vA||0,xg)}y=-1},this.readRenderTargetPixels=function(z,mA,vA,GA,bA,Gg,Jg){if(!(z&&z.isWebGLRenderTarget)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");return}let Xg=yA.get(z).__webglFramebuffer;if(z.isWebGLCubeRenderTarget&&Jg!==void 0&&(Xg=Xg[Jg]),Xg){uA.bindFramebuffer(36160,Xg);try{let xg=z.texture,tI=xg.format,uI=xg.type;if(tI!==$t&&Cg.convert(tI)!==eA.getParameter(35739)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.");return}let hI=uI===fQ&&(nA.has("EXT_color_buffer_half_float")||fA.isWebGL2&&nA.has("EXT_color_buffer_float"));if(uI!==vi&&Cg.convert(uI)!==eA.getParameter(35738)&&!(uI===Rt&&(fA.isWebGL2||nA.has("OES_texture_float")||nA.has("WEBGL_color_buffer_float")))&&!hI){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.");return}mA>=0&&mA<=z.width-GA&&vA>=0&&vA<=z.height-bA&&eA.readPixels(mA,vA,GA,bA,Cg.convert(tI),Cg.convert(uI),Gg)}finally{let xg=u!==null?yA.get(u).__webglFramebuffer:null;uA.bindFramebuffer(36160,xg)}}},this.copyFramebufferToTexture=function(z,mA,vA=0){let GA=Math.pow(2,-vA),bA=Math.floor(mA.image.width*GA),Gg=Math.floor(mA.image.height*GA);LA.setTexture2D(mA,0),eA.copyTexSubImage2D(3553,vA,0,0,z.x,z.y,bA,Gg),uA.unbindTexture()},this.copyTextureToTexture=function(z,mA,vA,GA=0){let bA=mA.image.width,Gg=mA.image.height,Jg=Cg.convert(vA.format),Xg=Cg.convert(vA.type);LA.setTexture2D(vA,0),eA.pixelStorei(37440,vA.flipY),eA.pixelStorei(37441,vA.premultiplyAlpha),eA.pixelStorei(3317,vA.unpackAlignment),mA.isDataTexture?eA.texSubImage2D(3553,GA,z.x,z.y,bA,Gg,Jg,Xg,mA.image.data):mA.isCompressedTexture?eA.compressedTexSubImage2D(3553,GA,z.x,z.y,mA.mipmaps[0].width,mA.mipmaps[0].height,Jg,mA.mipmaps[0].data):eA.texSubImage2D(3553,GA,z.x,z.y,Jg,Xg,mA.image),GA===0&&vA.generateMipmaps&&eA.generateMipmap(3553),uA.unbindTexture()},this.copyTextureToTexture3D=function(z,mA,vA,GA,bA=0){if(h.isWebGL1Renderer){console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: can only be used with WebGL2.");return}let Gg=z.max.x-z.min.x+1,Jg=z.max.y-z.min.y+1,Xg=z.max.z-z.min.z+1,xg=Cg.convert(GA.format),tI=Cg.convert(GA.type),uI;if(GA.isData3DTexture)LA.setTexture3D(GA,0),uI=32879;else if(GA.isDataArrayTexture)LA.setTexture2DArray(GA,0),uI=35866;else{console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: only supports THREE.DataTexture3D and THREE.DataTexture2DArray.");return}eA.pixelStorei(37440,GA.flipY),eA.pixelStorei(37441,GA.premultiplyAlpha),eA.pixelStorei(3317,GA.unpackAlignment);let hI=eA.getParameter(3314),FI=eA.getParameter(32878),ce=eA.getParameter(3316),di=eA.getParameter(3315),Gi=eA.getParameter(32877),Ie=vA.isCompressedTexture?vA.mipmaps[0]:vA.image;eA.pixelStorei(3314,Ie.width),eA.pixelStorei(32878,Ie.height),eA.pixelStorei(3316,z.min.x),eA.pixelStorei(3315,z.min.y),eA.pixelStorei(32877,z.min.z),vA.isDataTexture||vA.isData3DTexture?eA.texSubImage3D(uI,bA,mA.x,mA.y,mA.z,Gg,Jg,Xg,xg,tI,Ie.data):vA.isCompressedArrayTexture?(console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: untested support for compressed srcTexture."),eA.compressedTexSubImage3D(uI,bA,mA.x,mA.y,mA.z,Gg,Jg,Xg,xg,Ie.data)):eA.texSubImage3D(uI,bA,mA.x,mA.y,mA.z,Gg,Jg,Xg,xg,tI,Ie),eA.pixelStorei(3314,hI),eA.pixelStorei(32878,FI),eA.pixelStorei(3316,ce),eA.pixelStorei(3315,di),eA.pixelStorei(32877,Gi),bA===0&&GA.generateMipmaps&&eA.generateMipmap(uI),uA.unbindTexture()},this.initTexture=function(z){z.isCubeTexture?LA.setTextureCube(z,0):z.isData3DTexture?LA.setTexture3D(z,0):z.isDataArrayTexture||z.isCompressedArrayTexture?LA.setTexture2DArray(z,0):LA.setTexture2D(z,0),uA.unbindTexture()},this.resetState=function(){c=0,d=0,u=null,uA.reset(),UA.reset()},typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}var FH=class extends _N{};FH.prototype.isWebGL1Renderer=!0;var PN=class{constructor(g,A=1,I=1e3){this.isFog=!0,this.name="",this.color=new Og(g),this.near=A,this.far=I}clone(){return new PN(this.color,this.near,this.far)}toJSON(){return{type:"Fog",color:this.color.getHex(),near:this.near,far:this.far}}},ca=class extends ZI{constructor(){super(),this.isScene=!0,this.type="Scene",this.background=null,this.environment=null,this.fog=null,this.backgroundBlurriness=0,this.backgroundIntensity=1,this.overrideMaterial=null,typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}copy(g,A){return super.copy(g,A),g.background!==null&&(this.background=g.background.clone()),g.environment!==null&&(this.environment=g.environment.clone()),g.fog!==null&&(this.fog=g.fog.clone()),this.backgroundBlurriness=g.backgroundBlurriness,this.backgroundIntensity=g.backgroundIntensity,g.overrideMaterial!==null&&(this.overrideMaterial=g.overrideMaterial.clone()),this.matrixAutoUpdate=g.matrixAutoUpdate,this}toJSON(g){let A=super.toJSON(g);return this.fog!==null&&(A.object.fog=this.fog.toJSON()),this.backgroundBlurriness>0&&(A.object.backgroundBlurriness=this.backgroundBlurriness),this.backgroundIntensity!==1&&(A.object.backgroundIntensity=this.backgroundIntensity),A}get autoUpdate(){return console.warn("THREE.Scene: autoUpdate was renamed to matrixWorldAutoUpdate in r144."),this.matrixWorldAutoUpdate}set autoUpdate(g){console.warn("THREE.Scene: autoUpdate was renamed to matrixWorldAutoUpdate in r144."),this.matrixWorldAutoUpdate=g}},RH=class{constructor(g,A){this.isInterleavedBuffer=!0,this.array=g,this.stride=A,this.count=g!==void 0?g.length/A:0,this.usage=xp,this.updateRange={offset:0,count:-1},this.version=0,this.uuid=IC()}onUploadCallback(){}set needsUpdate(g){g===!0&&this.version++}setUsage(g){return this.usage=g,this}copy(g){return this.array=new g.array.constructor(g.array),this.count=g.count,this.stride=g.stride,this.usage=g.usage,this}copyAt(g,A,I){g*=this.stride,I*=A.stride;for(let e=0,i=this.stride;eo)continue;r.applyMatrix4(this.matrixWorld);let f=g.ray.origin.distanceTo(r);fg.far||A.push({distance:f,point:s.clone().applyMatrix4(this.matrixWorld),index:c,face:null,faceIndex:null,object:this})}}else{let h=Math.max(0,t.start),l=Math.min(n.count,t.start+t.count);for(let c=h,d=l-1;co)continue;r.applyMatrix4(this.matrixWorld);let u=g.ray.origin.distanceTo(r);ug.far||A.push({distance:u,point:s.clone().applyMatrix4(this.matrixWorld),index:c,face:null,faceIndex:null,object:this})}}}updateMorphTargets(){let g=this.geometry.morphAttributes,A=Object.keys(g);if(A.length>0){let I=g[A[0]];if(I!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let e=0,i=I.length;e=g.HAVE_CURRENT_DATA&&(this.needsUpdate=!0)}},Fo=class{constructor(){this.type="Curve",this.arcLengthDivisions=200}getPoint(){return console.warn("THREE.Curve: .getPoint() not implemented."),null}getPointAt(A,I){let e=this.getUtoTmapping(A);return this.getPoint(e,I)}getPoints(A=5){let I=[];for(let e=0;e<=A;e++)I.push(this.getPoint(e/A));return I}getSpacedPoints(A=5){let I=[];for(let e=0;e<=A;e++)I.push(this.getPointAt(e/A));return I}getLength(){let A=this.getLengths();return A[A.length-1]}getLengths(A=this.arcLengthDivisions){if(this.cacheArcLengths&&this.cacheArcLengths.length===A+1&&!this.needsUpdate)return this.cacheArcLengths;this.needsUpdate=!1;let I=[],e,i=this.getPoint(0),t=0;I.push(0);for(let C=1;C<=A;C++)e=this.getPoint(C/A),t+=e.distanceTo(i),I.push(t),i=e;return this.cacheArcLengths=I,I}updateArcLengths(){this.needsUpdate=!0,this.getLengths()}getUtoTmapping(A,I){let e=this.getLengths(),i=0,t=e.length,C;I?C=I:C=A*e[t-1];let o=0,B=t-1,a;for(;o<=B;)if(i=Math.floor(o+(B-o)/2),a=e[i]-C,a<0)o=i+1;else if(a>0)B=i-1;else{B=i;break}if(i=B,e[i]===C)return i/(t-1);let s=e[i],r=e[i+1]-s,Q=(C-s)/r;return(i+Q)/(t-1)}getTangent(A,I){let e=A-1e-4,i=A+1e-4;e<0&&(e=0),i>1&&(i=1);let t=this.getPoint(e),C=this.getPoint(i),o=I||(t.isVector2?new sA:new J);return o.copy(C).sub(t).normalize(),o}getTangentAt(A,I){let e=this.getUtoTmapping(A);return this.getTangent(e,I)}computeFrenetFrames(A,I){let e=new J,i=[],t=[],C=[],o=new J,B=new zA;for(let E=0;E<=A;E++){let n=E/A;i[E]=this.getTangentAt(n,new J)}t[0]=new J,C[0]=new J;let a=Number.MAX_VALUE,s=Math.abs(i[0].x),r=Math.abs(i[0].y),Q=Math.abs(i[0].z);s<=a&&(a=s,e.set(1,0,0)),r<=a&&(a=r,e.set(0,1,0)),Q<=a&&e.set(0,0,1),o.crossVectors(i[0],e).normalize(),t[0].crossVectors(i[0],o),C[0].crossVectors(i[0],t[0]);for(let E=1;E<=A;E++){if(t[E]=t[E-1].clone(),C[E]=C[E-1].clone(),o.crossVectors(i[E-1],i[E]),o.length()>Number.EPSILON){o.normalize();let n=Math.acos(ii(i[E-1].dot(i[E]),-1,1));t[E].applyMatrix4(B.makeRotationAxis(o,n))}C[E].crossVectors(i[E],t[E])}if(I===!0){let E=Math.acos(ii(t[0].dot(t[A]),-1,1));E/=A,i[0].dot(o.crossVectors(t[0],t[A]))>0&&(E=-E);for(let n=1;n<=A;n++)t[n].applyMatrix4(B.makeRotationAxis(i[n],E*n)),C[n].crossVectors(i[n],t[n])}return{tangents:i,normals:t,binormals:C}}clone(){return new this.constructor().copy(this)}copy(A){return this.arcLengthDivisions=A.arcLengthDivisions,this}toJSON(){let A={metadata:{version:4.5,type:"Curve",generator:"Curve.toJSON"}};return A.arcLengthDivisions=this.arcLengthDivisions,A.type=this.type,A}fromJSON(A){return this.arcLengthDivisions=A.arcLengthDivisions,this}},KD=class extends Fo{constructor(g=0,A=0,I=1,e=1,i=0,t=Math.PI*2,C=!1,o=0){super(),this.isEllipseCurve=!0,this.type="EllipseCurve",this.aX=g,this.aY=A,this.xRadius=I,this.yRadius=e,this.aStartAngle=i,this.aEndAngle=t,this.aClockwise=C,this.aRotation=o}getPoint(g,A){let I=A||new sA,e=Math.PI*2,i=this.aEndAngle-this.aStartAngle,t=Math.abs(i)e;)i-=e;i0?0:(Math.floor(Math.abs(C)/i)+1)*i:o===0&&C===i-1&&(C=i-2,o=1);let B,a;this.closed||C>0?B=e[(C-1)%i]:(Ph.subVectors(e[0],e[1]).add(e[0]),B=Ph);let s=e[C%i],r=e[(C+1)%i];if(this.closed||C+2e.length-2?e.length-1:t+1],s=e[t>e.length-3?e.length-1:t+2];return I.set(pG(C,o.x,B.x,a.x,s.x),pG(C,o.y,B.y,a.y,s.y)),I}copy(g){super.copy(g),this.points=[];for(let A=0,I=g.points.length;A=I){let t=e[i]-I,C=this.curves[i],o=C.getLength(),B=o===0?0:1-t/o;return C.getPointAt(B,A)}i++}return null}getLength(){let g=this.getCurveLengths();return g[g.length-1]}updateArcLengths(){this.needsUpdate=!0,this.cacheLengths=null,this.getCurveLengths()}getCurveLengths(){if(this.cacheLengths&&this.cacheLengths.length===this.curves.length)return this.cacheLengths;let g=[],A=0;for(let I=0,e=this.curves.length;I1&&!A[A.length-1].equals(A[0])&&A.push(A[0]),A}copy(g){super.copy(g),this.curves=[];for(let A=0,I=g.curves.length;A0){let s=B.getPoint(0);s.equals(this.currentPoint)||this.lineTo(s.x,s.y)}this.curves.push(B);let a=B.getPoint(1);return this.currentPoint.copy(a),this}copy(g){return super.copy(g),this.currentPoint.copy(g.currentPoint),this}toJSON(){let g=super.toJSON();return g.currentPoint=this.currentPoint.toArray(),g}fromJSON(g){return super.fromJSON(g),this.currentPoint.fromArray(g.currentPoint),this}},VN=class extends bg{constructor(g=[new sA(0,-.5),new sA(.5,0),new sA(0,.5)],A=12,I=0,e=Math.PI*2){super(),this.type="LatheGeometry",this.parameters={points:g,segments:A,phiStart:I,phiLength:e},A=Math.floor(A),e=ii(e,0,Math.PI*2);let i=[],t=[],C=[],o=[],B=[],a=1/A,s=new J,r=new sA,Q=new J,E=new J,n=new J,h=0,l=0;for(let c=0;c<=g.length-1;c++)switch(c){case 0:h=g[c+1].x-g[c].x,l=g[c+1].y-g[c].y,Q.x=l*1,Q.y=-h,Q.z=l*0,n.copy(Q),Q.normalize(),o.push(Q.x,Q.y,Q.z);break;case g.length-1:o.push(n.x,n.y,n.z);break;default:h=g[c+1].x-g[c].x,l=g[c+1].y-g[c].y,Q.x=l*1,Q.y=-h,Q.z=l*0,E.copy(Q),Q.x+=n.x,Q.y+=n.y,Q.z+=n.z,Q.normalize(),o.push(Q.x,Q.y,Q.z),n.copy(E)}for(let c=0;c<=A;c++){let d=I+c*a*e,u=Math.sin(d),y=Math.cos(d);for(let f=0;f<=g.length-1;f++){s.x=g[f].x*u,s.y=g[f].y,s.z=g[f].x*y,t.push(s.x,s.y,s.z),r.x=c/A,r.y=f/(g.length-1),C.push(r.x,r.y);let k=o[3*f+0]*u,M=o[3*f+1],G=o[3*f+0]*y;B.push(k,M,G)}}for(let c=0;c0&&d(!0),A>0&&d(!1)),this.setIndex(a),this.setAttribute("position",new pg(s,3)),this.setAttribute("normal",new pg(r,3)),this.setAttribute("uv",new pg(Q,2));function c(){let u=new J,y=new J,f=0,k=(A-g)/I;for(let M=0;M<=i;M++){let G=[],v=M/i,N=v*(A-g)+g;for(let b=0;b<=e;b++){let O=b/e,H=O*o+C,_=Math.sin(H),gA=Math.cos(H);y.x=N*_,y.y=-v*I+h,y.z=N*gA,s.push(y.x,y.y,y.z),u.set(_,k,gA).normalize(),r.push(u.x,u.y,u.z),Q.push(O,1-v),G.push(E++)}n.push(G)}for(let M=0;M.9&&k<.1&&(d<.2&&(t[c+0]+=1),u<.2&&(t[c+2]+=1),y<.2&&(t[c+4]+=1))}}function r(c){i.push(c.x,c.y,c.z)}function Q(c,d){let u=c*3;d.x=g[u+0],d.y=g[u+1],d.z=g[u+2]}function E(){let c=new J,d=new J,u=new J,y=new J,f=new sA,k=new sA,M=new sA;for(let G=0,v=0;G80*I){o=a=g[0],B=s=g[1];for(let n=I;na&&(a=r),Q>s&&(s=Q);E=Math.max(a-o,s-B),E=E!==0?32767/E:0}return un(t,C,I,o,B,E,0),C}};function $N(g,A,I,e,i){let t,C;if(i===r1(g,A,I,e)>0)for(t=A;t=A;t-=e)C=yG(t,g[t],g[t+1],C);return C&&JD(C,C.next)&&(yn(C),C=C.next),C}function Rr(g,A){if(!g)return g;A||(A=g);let I=g,e;do if(e=!1,!I.steiner&&(JD(I,I.next)||ue(I.prev,I,I.next)===0)){if(yn(I),I=A=I.prev,I===I.next)break;e=!0}else I=I.next;while(e||I!==A);return A}function un(g,A,I,e,i,t,C){if(!g)return;!C&&t&&i1(g,e,i,t);let o=g,B,a;for(;g.prev!==g.next;){if(B=g.prev,a=g.next,t?VH(g,e,i,t):ZH(g)){A.push(B.i/I|0),A.push(g.i/I|0),A.push(a.i/I|0),yn(g),g=a.next,o=a.next;continue}if(g=a,g===o){C?C===1?(g=zH(Rr(g),A,I),un(g,A,I,e,i,t,2)):C===2&&XH(g,A,I,e,i,t):un(Rr(g),A,I,e,i,t,1);break}}}function ZH(g){let A=g.prev,I=g,e=g.next;if(ue(A,I,e)>=0)return!1;let i=A.x,t=I.x,C=e.x,o=A.y,B=I.y,a=e.y,s=it?i>C?i:C:t>C?t:C,E=o>B?o>a?o:a:B>a?B:a,n=e.next;for(;n!==A;){if(n.x>=s&&n.x<=Q&&n.y>=r&&n.y<=E&&IQ(i,o,t,B,C,a,n.x,n.y)&&ue(n.prev,n,n.next)>=0)return!1;n=n.next}return!0}function VH(g,A,I,e){let i=g.prev,t=g,C=g.next;if(ue(i,t,C)>=0)return!1;let o=i.x,B=t.x,a=C.x,s=i.y,r=t.y,Q=C.y,E=oB?o>a?o:a:B>a?B:a,l=s>r?s>Q?s:Q:r>Q?r:Q,c=Pp(E,n,A,I,e),d=Pp(h,l,A,I,e),u=g.prevZ,y=g.nextZ;for(;u&&u.z>=c&&y&&y.z<=d;){if(u.x>=E&&u.x<=h&&u.y>=n&&u.y<=l&&u!==i&&u!==C&&IQ(o,s,B,r,a,Q,u.x,u.y)&&ue(u.prev,u,u.next)>=0||(u=u.prevZ,y.x>=E&&y.x<=h&&y.y>=n&&y.y<=l&&y!==i&&y!==C&&IQ(o,s,B,r,a,Q,y.x,y.y)&&ue(y.prev,y,y.next)>=0))return!1;y=y.nextZ}for(;u&&u.z>=c;){if(u.x>=E&&u.x<=h&&u.y>=n&&u.y<=l&&u!==i&&u!==C&&IQ(o,s,B,r,a,Q,u.x,u.y)&&ue(u.prev,u,u.next)>=0)return!1;u=u.prevZ}for(;y&&y.z<=d;){if(y.x>=E&&y.x<=h&&y.y>=n&&y.y<=l&&y!==i&&y!==C&&IQ(o,s,B,r,a,Q,y.x,y.y)&&ue(y.prev,y,y.next)>=0)return!1;y=y.nextZ}return!0}function zH(g,A,I){let e=g;do{let i=e.prev,t=e.next.next;!JD(i,t)&&AF(i,e,e.next,t)&&pn(i,t)&&pn(t,i)&&(A.push(i.i/I|0),A.push(e.i/I|0),A.push(t.i/I|0),yn(e),yn(e.next),e=g=t),e=e.next}while(e!==g);return Rr(e)}function XH(g,A,I,e,i,t){let C=g;do{let o=C.next.next;for(;o!==C.prev;){if(C.i!==o.i&&o1(C,o)){let B=gF(C,o);C=Rr(C,C.next),B=Rr(B,B.next),un(C,A,I,e,i,t,0),un(B,A,I,e,i,t,0);return}o=o.next}C=C.next}while(C!==g)}function $H(g,A,I,e){let i=[],t,C,o,B,a;for(t=0,C=A.length;t=I.next.y&&I.next.y!==I.y){let Q=I.x+(C-I.y)*(I.next.x-I.x)/(I.next.y-I.y);if(Q<=t&&Q>e&&(e=Q,i=I.x=I.x&&I.x>=B&&t!==I.x&&IQ(Ci.x||I.x===i.x&&e1(i,I)))&&(i=I,s=r)),I=I.next;while(I!==o);return i}function e1(g,A){return ue(g.prev,g,A.prev)<0&&ue(A.next,g,g.next)<0}function i1(g,A,I,e){let i=g;do i.z===0&&(i.z=Pp(i.x,i.y,A,I,e)),i.prevZ=i.prev,i.nextZ=i.next,i=i.next;while(i!==g);i.prevZ.nextZ=null,i.prevZ=null,t1(i)}function t1(g){let A,I,e,i,t,C,o,B,a=1;do{for(I=g,g=null,t=null,C=0;I;){for(C++,e=I,o=0,A=0;A0||B>0&&e;)o!==0&&(B===0||!e||I.z<=e.z)?(i=I,I=I.nextZ,o--):(i=e,e=e.nextZ,B--),t?t.nextZ=i:g=i,i.prevZ=t,t=i;I=e}t.nextZ=null,a*=2}while(C>1);return g}function Pp(g,A,I,e,i){return g=(g-I)*i|0,A=(A-e)*i|0,g=(g|g<<8)&16711935,g=(g|g<<4)&252645135,g=(g|g<<2)&858993459,g=(g|g<<1)&1431655765,A=(A|A<<8)&16711935,A=(A|A<<4)&252645135,A=(A|A<<2)&858993459,A=(A|A<<1)&1431655765,g|A<<1}function C1(g){let A=g,I=g;do(A.x=(g-C)*(t-o)&&(g-C)*(e-o)>=(I-C)*(A-o)&&(I-C)*(t-o)>=(i-C)*(e-o)}function o1(g,A){return g.next.i!==A.i&&g.prev.i!==A.i&&!B1(g,A)&&(pn(g,A)&&pn(A,g)&&a1(g,A)&&(ue(g.prev,g,A.prev)||ue(g,A.prev,A))||JD(g,A)&&ue(g.prev,g,g.next)>0&&ue(A.prev,A,A.next)>0)}function ue(g,A,I){return(A.y-g.y)*(I.x-A.x)-(A.x-g.x)*(I.y-A.y)}function JD(g,A){return g.x===A.x&&g.y===A.y}function AF(g,A,I,e){let i=Wh(ue(g,A,I)),t=Wh(ue(g,A,e)),C=Wh(ue(I,e,g)),o=Wh(ue(I,e,A));return!!(i!==t&&C!==o||i===0&&jh(g,I,A)||t===0&&jh(g,e,A)||C===0&&jh(I,g,e)||o===0&&jh(I,A,e))}function jh(g,A,I){return A.x<=Math.max(g.x,I.x)&&A.x>=Math.min(g.x,I.x)&&A.y<=Math.max(g.y,I.y)&&A.y>=Math.min(g.y,I.y)}function Wh(g){return g>0?1:g<0?-1:0}function B1(g,A){let I=g;do{if(I.i!==g.i&&I.next.i!==g.i&&I.i!==A.i&&I.next.i!==A.i&&AF(I,I.next,g,A))return!0;I=I.next}while(I!==g);return!1}function pn(g,A){return ue(g.prev,g,g.next)<0?ue(g,A,g.next)>=0&&ue(g,g.prev,A)>=0:ue(g,A,g.prev)<0||ue(g,g.next,A)<0}function a1(g,A){let I=g,e=!1,i=(g.x+A.x)/2,t=(g.y+A.y)/2;do I.y>t!=I.next.y>t&&I.next.y!==I.y&&i<(I.next.x-I.x)*(t-I.y)/(I.next.y-I.y)+I.x&&(e=!e),I=I.next;while(I!==g);return e}function gF(g,A){let I=new jp(g.i,g.x,g.y),e=new jp(A.i,A.x,A.y),i=g.next,t=A.prev;return g.next=A,A.prev=g,I.next=i,i.prev=I,e.next=I,I.prev=e,t.next=e,e.prev=t,e}function yG(g,A,I,e){let i=new jp(g,A,I);return e?(i.next=e.next,i.prev=e,e.next.prev=i,e.next=i):(i.prev=i,i.next=i),i}function yn(g){g.next.prev=g.prev,g.prev.next=g.next,g.prevZ&&(g.prevZ.nextZ=g.nextZ),g.nextZ&&(g.nextZ.prevZ=g.prevZ)}function jp(g,A,I){this.i=g,this.x=A,this.y=I,this.prev=null,this.next=null,this.z=0,this.prevZ=null,this.nextZ=null,this.steiner=!1}function r1(g,A,I,e){let i=0;for(let t=A,C=I-e;t2&&g[A-1].equals(g[0])&&g.pop()}function SG(g,A){for(let I=0;I0)&&Q.push(d,u,f),(l!==I-1||o=i)){let C=A[1];g=i)break g}t=I,I=0;break I}break A}for(;I>>1;gI;)--C;if(++C,t!==0||C!==i){t>=C&&(C=Math.max(C,1),t=C-1);let o=this.getValueSize();this.times=TB(e,t,C),this.values=TB(this.values,t*o,C*o)}return this}validate(){let A=!0,I=this.getValueSize();I-Math.floor(I)!==0&&(console.error("THREE.KeyframeTrack: Invalid value size in track.",this),A=!1);let e=this.times,i=this.values,t=e.length;t===0&&(console.error("THREE.KeyframeTrack: Track is empty.",this),A=!1);let C=null;for(let o=0;o!==t;o++){let B=e[o];if(typeof B=="number"&&isNaN(B)){console.error("THREE.KeyframeTrack: Time is not a valid number.",this,o,B),A=!1;break}if(C!==null&&C>B){console.error("THREE.KeyframeTrack: Out of order keys.",this,o,B,C),A=!1;break}C=B}if(i!==void 0&&tF(i))for(let o=0,B=i.length;o!==B;++o){let a=i[o];if(isNaN(a)){console.error("THREE.KeyframeTrack: Value is not a valid number.",this,o,a),A=!1;break}}return A}optimize(){let A=TB(this.times),I=TB(this.values),e=this.getValueSize(),i=this.getInterpolation()===Jd,t=A.length-1,C=1;for(let o=1;o0){A[C]=A[t];for(let o=t*e,B=C*e,a=0;a!==e;++a)I[B+a]=I[o+a];++C}return C!==A.length?(this.times=TB(A,0,C),this.values=TB(I,0,C*e)):(this.times=A,this.values=I),this}clone(){let A=TB(this.times,0),I=TB(this.values,0),e=this.constructor,i=new e(this.name,A,I);return i.createInterpolant=this.createInterpolant,i}};Ro.prototype.TimeBufferType=Float32Array;Ro.prototype.ValueBufferType=Float32Array;Ro.prototype.DefaultInterpolation=nc;var zQ=class extends Ro{};zQ.prototype.ValueTypeName="bool";zQ.prototype.ValueBufferType=Array;zQ.prototype.DefaultInterpolation=Ec;zQ.prototype.InterpolantFactoryMethodLinear=void 0;zQ.prototype.InterpolantFactoryMethodSmooth=void 0;var BF=class extends Ro{};BF.prototype.ValueTypeName="color";var wc=class extends Ro{};wc.prototype.ValueTypeName="number";var n1=class extends vD{constructor(g,A,I,e){super(g,A,I,e)}interpolate_(g,A,I,e){let i=this.resultBuffer,t=this.sampleValues,C=this.valueSize,o=(I-A)/(e-A),B=g*C;for(let a=B+C;B!==a;B+=4)QI.slerpFlat(i,0,t,B-C,t,B,o);return i}},Ah=class extends Ro{InterpolantFactoryMethodLinear(g){return new n1(this.times,this.values,this.getValueSize(),g)}};Ah.prototype.ValueTypeName="quaternion";Ah.prototype.DefaultInterpolation=nc;Ah.prototype.InterpolantFactoryMethodSmooth=void 0;var XQ=class extends Ro{};XQ.prototype.ValueTypeName="string";XQ.prototype.ValueBufferType=Array;XQ.prototype.DefaultInterpolation=Ec;XQ.prototype.InterpolantFactoryMethodLinear=void 0;XQ.prototype.InterpolantFactoryMethodSmooth=void 0;var Sc=class extends Ro{};Sc.prototype.ValueTypeName="vector";var Wp=class{constructor(g,A=-1,I,e=qw){this.name=g,this.tracks=I,this.duration=A,this.blendMode=e,this.uuid=IC(),this.duration<0&&this.resetDuration()}static parse(g){let A=[],I=g.tracks,e=1/(g.fps||1);for(let t=0,C=I.length;t!==C;++t)A.push(l1(I[t]).scale(e));let i=new this(g.name,g.duration,A,g.blendMode);return i.uuid=g.uuid,i}static toJSON(g){let A=[],I=g.tracks,e={name:g.name,duration:g.duration,tracks:A,uuid:g.uuid,blendMode:g.blendMode};for(let i=0,t=I.length;i!==t;++i)A.push(Ro.toJSON(I[i]));return e}static CreateFromMorphTargetSequence(g,A,I,e){let i=A.length,t=[];for(let C=0;C1){let s=a[1],r=e[s];r||(e[s]=r=[]),r.push(B)}}let t=[];for(let C in e)t.push(this.CreateFromMorphTargetSequence(C,e[C],A,I));return t}static parseAnimation(g,A){if(!g)return console.error("THREE.AnimationClip: No animation in JSONLoader data."),null;let I=function(a,s,r,Q,E){if(r.length!==0){let n=[],h=[];CF(r,n,h,Q),n.length!==0&&E.push(new a(s,n,h))}},e=[],i=g.name||"default",t=g.fps||30,C=g.blendMode,o=g.length||-1,B=g.hierarchy||[];for(let a=0;a{A&&A(i),this.manager.itemEnd(g)},0),i;if(AB[g]!==void 0){AB[g].push({onLoad:A,onProgress:I,onError:e});return}AB[g]=[],AB[g].push({onLoad:A,onProgress:I,onError:e});let t=new Request(g,{headers:new Headers(this.requestHeader),credentials:this.withCredentials?"include":"same-origin"}),C=this.mimeType,o=this.responseType;fetch(t).then(B=>{if(B.status===200||B.status===0){if(B.status===0&&console.warn("THREE.FileLoader: HTTP Status 0 received."),typeof ReadableStream>"u"||B.body===void 0||B.body.getReader===void 0)return B;let a=AB[g],s=B.body.getReader(),r=B.headers.get("Content-Length")||B.headers.get("X-File-Size"),Q=r?parseInt(r):0,E=Q!==0,n=0,h=new ReadableStream({start(l){c();function c(){s.read().then(({done:d,value:u})=>{if(d)l.close();else{n+=u.byteLength;let y=new ProgressEvent("progress",{lengthComputable:E,loaded:n,total:Q});for(let f=0,k=a.length;f{switch(o){case"arraybuffer":return B.arrayBuffer();case"blob":return B.blob();case"document":return B.text().then(a=>new DOMParser().parseFromString(a,C));case"json":return B.json();default:if(C===void 0)return B.text();{let a=/charset="?([^;"\s]*)"?/i.exec(C),s=a&&a[1]?a[1].toLowerCase():void 0,r=new TextDecoder(s);return B.arrayBuffer().then(Q=>r.decode(Q))}}}).then(B=>{GG.add(g,B);let a=AB[g];delete AB[g];for(let s=0,r=a.length;s{let a=AB[g];if(a===void 0)throw this.manager.itemError(g),B;delete AB[g];for(let s=0,r=a.length;s{this.manager.itemEnd(g)}),this.manager.itemStart(g)}setResponseType(g){return this.responseType=g,this}setMimeType(g){return this.mimeType=g,this}},gh=class extends ZI{constructor(A,I=1){super(),this.isLight=!0,this.type="Light",this.color=new Og(A),this.intensity=I}dispose(){}copy(A,I){return super.copy(A,I),this.color.copy(A.color),this.intensity=A.intensity,this}toJSON(A){let I=super.toJSON(A);return I.object.color=this.color.getHex(),I.object.intensity=this.intensity,this.groundColor!==void 0&&(I.object.groundColor=this.groundColor.getHex()),this.distance!==void 0&&(I.object.distance=this.distance),this.angle!==void 0&&(I.object.angle=this.angle),this.decay!==void 0&&(I.object.decay=this.decay),this.penumbra!==void 0&&(I.object.penumbra=this.penumbra),this.shadow!==void 0&&(I.object.shadow=this.shadow.toJSON()),I}},d1=class extends gh{constructor(g,A,I){super(g,I),this.isHemisphereLight=!0,this.type="HemisphereLight",this.position.copy(ZI.DEFAULT_UP),this.updateMatrix(),this.groundColor=new Og(A)}copy(g,A){return super.copy(g,A),this.groundColor.copy(g.groundColor),this}},su=new zA,kG=new J,MG=new J,zw=class{constructor(g){this.camera=g,this.bias=0,this.normalBias=0,this.radius=1,this.blurSamples=8,this.mapSize=new sA(512,512),this.map=null,this.mapPass=null,this.matrix=new zA,this.autoUpdate=!0,this.needsUpdate=!1,this._frustum=new xw,this._frameExtents=new sA(1,1),this._viewportCount=1,this._viewports=[new EI(0,0,1,1)]}getViewportCount(){return this._viewportCount}getFrustum(){return this._frustum}updateMatrices(g){let A=this.camera,I=this.matrix;kG.setFromMatrixPosition(g.matrixWorld),A.position.copy(kG),MG.setFromMatrixPosition(g.target.matrixWorld),A.lookAt(MG),A.updateMatrixWorld(),su.multiplyMatrices(A.projectionMatrix,A.matrixWorldInverse),this._frustum.setFromProjectionMatrix(su),I.set(.5,0,0,.5,0,.5,0,.5,0,0,.5,.5,0,0,0,1),I.multiply(su)}getViewport(g){return this._viewports[g]}getFrameExtents(){return this._frameExtents}dispose(){this.map&&this.map.dispose(),this.mapPass&&this.mapPass.dispose()}copy(g){return this.camera=g.camera.clone(),this.bias=g.bias,this.radius=g.radius,this.mapSize.copy(g.mapSize),this}clone(){return new this.constructor().copy(this)}toJSON(){let g={};return this.bias!==0&&(g.bias=this.bias),this.normalBias!==0&&(g.normalBias=this.normalBias),this.radius!==1&&(g.radius=this.radius),(this.mapSize.x!==512||this.mapSize.y!==512)&&(g.mapSize=this.mapSize.toArray()),g.camera=this.camera.toJSON(!1).object,delete g.camera.matrix,g}},u1=class extends zw{constructor(){super(new Ui(50,1,.5,500)),this.isSpotLightShadow=!0,this.focus=1}updateMatrices(g){let A=this.camera,I=dn*2*g.angle*this.focus,e=this.mapSize.width/this.mapSize.height,i=g.distance||A.far;(I!==A.fov||e!==A.aspect||i!==A.far)&&(A.fov=I,A.aspect=e,A.far=i,A.updateProjectionMatrix()),super.updateMatrices(g)}copy(g){return super.copy(g),this.focus=g.focus,this}},p1=class extends gh{constructor(g,A,I=0,e=Math.PI/3,i=0,t=2){super(g,A),this.isSpotLight=!0,this.type="SpotLight",this.position.copy(ZI.DEFAULT_UP),this.updateMatrix(),this.target=new ZI,this.distance=I,this.angle=e,this.penumbra=i,this.decay=t,this.map=null,this.shadow=new u1}get power(){return this.intensity*Math.PI}set power(g){this.intensity=g/Math.PI}dispose(){this.shadow.dispose()}copy(g,A){return super.copy(g,A),this.distance=g.distance,this.angle=g.angle,this.penumbra=g.penumbra,this.decay=g.decay,this.target=g.target.clone(),this.shadow=g.shadow.clone(),this}},mG=new zA,fE=new J,Qu=new J,y1=class extends zw{constructor(){super(new Ui(90,1,.5,500)),this.isPointLightShadow=!0,this._frameExtents=new sA(4,2),this._viewportCount=6,this._viewports=[new EI(2,1,1,1),new EI(0,1,1,1),new EI(3,1,1,1),new EI(1,1,1,1),new EI(3,0,1,1),new EI(1,0,1,1)],this._cubeDirections=[new J(1,0,0),new J(-1,0,0),new J(0,0,1),new J(0,0,-1),new J(0,1,0),new J(0,-1,0)],this._cubeUps=[new J(0,1,0),new J(0,1,0),new J(0,1,0),new J(0,1,0),new J(0,0,1),new J(0,0,-1)]}updateMatrices(g,A=0){let I=this.camera,e=this.matrix,i=g.distance||I.far;i!==I.far&&(I.far=i,I.updateProjectionMatrix()),fE.setFromMatrixPosition(g.matrixWorld),I.position.copy(fE),Qu.copy(I.position),Qu.add(this._cubeDirections[A]),I.up.copy(this._cubeUps[A]),I.lookAt(Qu),I.updateMatrixWorld(),e.makeTranslation(-fE.x,-fE.y,-fE.z),mG.multiplyMatrices(I.projectionMatrix,I.matrixWorldInverse),this._frustum.setFromProjectionMatrix(mG)}},w1=class extends gh{constructor(g,A,I=0,e=2){super(g,A),this.isPointLight=!0,this.type="PointLight",this.distance=I,this.decay=e,this.shadow=new y1}get power(){return this.intensity*4*Math.PI}set power(g){this.intensity=g/(4*Math.PI)}dispose(){this.shadow.dispose()}copy(g,A){return super.copy(g,A),this.distance=g.distance,this.decay=g.decay,this.shadow=g.shadow.clone(),this}},S1=class extends zw{constructor(){super(new Hw(-5,5,5,-5,.5,500)),this.isDirectionalLightShadow=!0}},f1=class extends gh{constructor(g,A){super(g,A),this.isDirectionalLight=!0,this.type="DirectionalLight",this.position.copy(ZI.DEFAULT_UP),this.updateMatrix(),this.target=new ZI,this.shadow=new S1}dispose(){this.shadow.dispose()}copy(g){return super.copy(g),this.target=g.target.clone(),this.shadow=g.shadow.clone(),this}},G1=class extends bg{constructor(){super(),this.isInstancedBufferGeometry=!0,this.type="InstancedBufferGeometry",this.instanceCount=1/0}copy(g){return super.copy(g),this.instanceCount=g.instanceCount,this}toJSON(){let g=super.toJSON();return g.instanceCount=this.instanceCount,g.isInstancedBufferGeometry=!0,g}},rF=class extends Vw{constructor(g){super(g)}load(g,A,I,e){let i=this,t=new Zp(i.manager);t.setPath(i.path),t.setRequestHeader(i.requestHeader),t.setWithCredentials(i.withCredentials),t.load(g,function(C){try{A(i.parse(JSON.parse(C)))}catch(o){e?e(o):console.error(o),i.manager.itemError(g)}},I,e)}parse(g){let A={},I={};function e(r,Q){if(A[Q]!==void 0)return A[Q];let E=r.interleavedBuffers[Q],n=i(r,E.buffer),h=Gh(E.type,n),l=new RH(h,E.stride);return l.uuid=E.uuid,A[Q]=l,l}function i(r,Q){if(I[Q]!==void 0)return I[Q];let E=r.arrayBuffers[Q],n=new Uint32Array(E).buffer;return I[Q]=n,n}let t=g.isInstancedBufferGeometry?new G1:new bg,C=g.data.index;if(C!==void 0){let r=Gh(C.type,C.array);t.setIndex(new zg(r,1))}let o=g.data.attributes;for(let r in o){let Q=o[r],E;if(Q.isInterleavedBufferAttribute){let n=e(g.data,Q.data);E=new _p(n,Q.itemSize,Q.offset,Q.normalized)}else{let n=Gh(Q.type,Q.array),h=Q.isInstancedBufferAttribute?JH:zg;E=new h(n,Q.itemSize,Q.normalized)}Q.name!==void 0&&(E.name=Q.name),Q.usage!==void 0&&E.setUsage(Q.usage),Q.updateRange!==void 0&&(E.updateRange.offset=Q.updateRange.offset,E.updateRange.count=Q.updateRange.count),t.setAttribute(r,E)}let B=g.data.morphAttributes;if(B)for(let r in B){let Q=B[r],E=[];for(let n=0,h=Q.length;n"u"?Date:performance).now()}var M1=class{constructor(g,A,I){this.binding=g,this.valueSize=I;let e,i,t;switch(A){case"quaternion":e=this._slerp,i=this._slerpAdditive,t=this._setAdditiveIdentityQuaternion,this.buffer=new Float64Array(I*6),this._workIndex=5;break;case"string":case"bool":e=this._select,i=this._select,t=this._setAdditiveIdentityOther,this.buffer=new Array(I*5);break;default:e=this._lerp,i=this._lerpAdditive,t=this._setAdditiveIdentityNumeric,this.buffer=new Float64Array(I*5)}this._mixBufferRegion=e,this._mixBufferRegionAdditive=i,this._setIdentity=t,this._origIndex=3,this._addIndex=4,this.cumulativeWeight=0,this.cumulativeWeightAdditive=0,this.useCount=0,this.referenceCount=0}accumulate(g,A){let I=this.buffer,e=this.valueSize,i=g*e+e,t=this.cumulativeWeight;if(t===0){for(let C=0;C!==e;++C)I[i+C]=I[C];t=A}else{t+=A;let C=A/t;this._mixBufferRegion(I,i,0,C,e)}this.cumulativeWeight=t}accumulateAdditive(g){let A=this.buffer,I=this.valueSize,e=I*this._addIndex;this.cumulativeWeightAdditive===0&&this._setIdentity(),this._mixBufferRegionAdditive(A,e,0,g,I),this.cumulativeWeightAdditive+=g}apply(g){let A=this.valueSize,I=this.buffer,e=g*A+A,i=this.cumulativeWeight,t=this.cumulativeWeightAdditive,C=this.binding;if(this.cumulativeWeight=0,this.cumulativeWeightAdditive=0,i<1){let o=A*this._origIndex;this._mixBufferRegion(I,e,o,1-i,A)}t>0&&this._mixBufferRegionAdditive(I,e,this._addIndex*A,1,A);for(let o=A,B=A+A;o!==B;++o)if(I[o]!==I[o+A]){C.setValue(I,e);break}}saveOriginalState(){let g=this.binding,A=this.buffer,I=this.valueSize,e=I*this._origIndex;g.getValue(A,e);for(let i=I,t=e;i!==t;++i)A[i]=A[e+i%I];this._setIdentity(),this.cumulativeWeight=0,this.cumulativeWeightAdditive=0}restoreOriginalState(){let g=this.valueSize*3;this.binding.setValue(this.buffer,g)}_setAdditiveIdentityNumeric(){let g=this._addIndex*this.valueSize,A=g+this.valueSize;for(let I=g;I=.5)for(let t=0;t!==i;++t)g[A+t]=g[I+t]}_slerp(g,A,I,e){QI.slerpFlat(g,A,g,A,g,I,e)}_slerpAdditive(g,A,I,e,i){let t=this._workIndex*i;QI.multiplyQuaternionsFlat(g,t,g,A,g,I),QI.slerpFlat(g,A,g,A,g,t,e)}_lerp(g,A,I,e,i){let t=1-e;for(let C=0;C!==i;++C){let o=A+C;g[o]=g[o]*t+g[I+C]*e}}_lerpAdditive(g,A,I,e,i){for(let t=0;t!==i;++t){let C=A+t;g[C]=g[C]+g[I+t]*e}}},Xw="\\[\\]\\.:\\/",m1=new RegExp("["+Xw+"]","g"),$w="[^"+Xw+"]",U1="[^"+Xw.replace("\\.","")+"]",N1=/((?:WC+[\/:])*)/.source.replace("WC",$w),F1=/(WCOD+)?/.source.replace("WCOD",U1),R1=/(?:\.(WC+)(?:\[(.+)\])?)?/.source.replace("WC",$w),K1=/\.(WC+)(?:\[(.+)\])?/.source.replace("WC",$w),J1=new RegExp("^"+N1+F1+R1+K1+"$"),v1=["material","materials","bones","map"],q1=class{constructor(g,A,I){let e=I||Ae.parseTrackName(A);this._targetGroup=g,this._bindings=g.subscribe_(A,e)}getValue(g,A){this.bind();let I=this._targetGroup.nCachedObjects_,e=this._bindings[I];e!==void 0&&e.getValue(g,A)}setValue(g,A){let I=this._bindings;for(let e=this._targetGroup.nCachedObjects_,i=I.length;e!==i;++e)I[e].setValue(g,A)}bind(){let g=this._bindings;for(let A=this._targetGroup.nCachedObjects_,I=g.length;A!==I;++A)g[A].bind()}unbind(){let g=this._bindings;for(let A=this._targetGroup.nCachedObjects_,I=g.length;A!==I;++A)g[A].unbind()}},Ae=class{constructor(A,I,e){this.path=I,this.parsedPath=e||Ae.parseTrackName(I),this.node=Ae.findNode(A,this.parsedPath.nodeName)||A,this.rootNode=A,this.getValue=this._getValue_unbound,this.setValue=this._setValue_unbound}static create(A,I,e){return A&&A.isAnimationObjectGroup?new Ae.Composite(A,I,e):new Ae(A,I,e)}static sanitizeNodeName(A){return A.replace(/\s/g,"_").replace(m1,"")}static parseTrackName(A){let I=J1.exec(A);if(I===null)throw new Error("PropertyBinding: Cannot parse trackName: "+A);let e={nodeName:I[2],objectName:I[3],objectIndex:I[4],propertyName:I[5],propertyIndex:I[6]},i=e.nodeName&&e.nodeName.lastIndexOf(".");if(i!==void 0&&i!==-1){let t=e.nodeName.substring(i+1);v1.indexOf(t)!==-1&&(e.nodeName=e.nodeName.substring(0,i),e.objectName=t)}if(e.propertyName===null||e.propertyName.length===0)throw new Error("PropertyBinding: can not parse propertyName from trackName: "+A);return e}static findNode(A,I){if(I===void 0||I===""||I==="."||I===-1||I===A.name||I===A.uuid)return A;if(A.skeleton){let e=A.skeleton.getBoneByName(I);if(e!==void 0)return e}if(A.children){let e=function(t){for(let C=0;C0){let o=this._interpolants,B=this._propertyBindings;switch(this.blendMode){case DL:for(let a=0,s=o.length;a!==s;++a)o[a].evaluate(t),B[a].accumulateAdditive(C);break;case qw:default:for(let a=0,s=o.length;a!==s;++a)o[a].evaluate(t),B[a].accumulate(e,C)}}}_updateWeight(g){let A=0;if(this.enabled){A=this.weight;let I=this._weightInterpolant;if(I!==null){let e=I.evaluate(g)[0];A*=e,g>I.parameterPositions[1]&&(this.stopFading(),e===0&&(this.enabled=!1))}}return this._effectiveWeight=A,A}_updateTimeScale(g){let A=0;if(!this.paused){A=this.timeScale;let I=this._timeScaleInterpolant;if(I!==null){let e=I.evaluate(g)[0];A*=e,g>I.parameterPositions[1]&&(this.stopWarping(),A===0?this.paused=!0:this.timeScale=A)}}return this._effectiveTimeScale=A,A}_updateTime(g){let A=this._clip.duration,I=this.loop,e=this.time+g,i=this._loopCount,t=I===vw;if(g===0)return i===-1?e:t&&(i&1)===1?A-e:e;if(I===MN){i===-1&&(this._loopCount=0,this._setEndings(!0,!0,!1));A:{if(e>=A)e=A;else if(e<0)e=0;else{this.time=e;break A}this.clampWhenFinished?this.paused=!0:this.enabled=!1,this.time=e,this._mixer.dispatchEvent({type:"finished",action:this,direction:g<0?-1:1})}}else{if(i===-1&&(g>=0?(i=0,this._setEndings(!0,this.repetitions===0,t)):this._setEndings(this.repetitions===0,!0,t)),e>=A||e<0){let C=Math.floor(e/A);e-=A*C,i+=Math.abs(C);let o=this.repetitions-i;if(o<=0)this.clampWhenFinished?this.paused=!0:this.enabled=!1,e=g>0?A:0,this.time=e,this._mixer.dispatchEvent({type:"finished",action:this,direction:g>0?1:-1});else{if(o===1){let B=g<0;this._setEndings(B,!B,t)}else this._setEndings(!1,!1,t);this._loopCount=i,this.time=e,this._mixer.dispatchEvent({type:"loop",action:this,loopDelta:C})}}else this.time=e;if(t&&(i&1)===1)return A-e}return e}_setEndings(g,A,I){let e=this._interpolantSettings;I?(e.endingStart=$s,e.endingEnd=$s):(g?e.endingStart=this.zeroSlopeAtStart?$s:Xs:e.endingStart=hc,A?e.endingEnd=this.zeroSlopeAtEnd?$s:Xs:e.endingEnd=hc)}_scheduleFading(g,A,I){let e=this._mixer,i=e.time,t=this._weightInterpolant;t===null&&(t=e._lendControlInterpolant(),this._weightInterpolant=t);let C=t.parameterPositions,o=t.sampleValues;return C[0]=i,o[0]=A,C[1]=i+g,o[1]=I,this}},b1=new Float32Array(1),Y1=class extends Si{constructor(g){super(),this._root=g,this._initMemoryManager(),this._accuIndex=0,this.time=0,this.timeScale=1}_bindAction(g,A){let I=g._localRoot||this._root,e=g._clip.tracks,i=e.length,t=g._propertyBindings,C=g._interpolants,o=I.uuid,B=this._bindingsByRootAndName,a=B[o];a===void 0&&(a={},B[o]=a);for(let s=0;s!==i;++s){let r=e[s],Q=r.name,E=a[Q];if(E!==void 0)++E.referenceCount,t[s]=E;else{if(E=t[s],E!==void 0){E._cacheIndex===null&&(++E.referenceCount,this._addInactiveBinding(E,o,Q));continue}let n=A&&A._propertyBindings[s].binding.parsedPath;E=new M1(Ae.create(I,Q,n),r.ValueTypeName,r.getValueSize()),++E.referenceCount,this._addInactiveBinding(E,o,Q),t[s]=E}C[s].resultBuffer=E.buffer}}_activateAction(g){if(!this._isActiveAction(g)){if(g._cacheIndex===null){let I=(g._localRoot||this._root).uuid,e=g._clip.uuid,i=this._actionsByClip[e];this._bindAction(g,i&&i.knownActions[0]),this._addInactiveAction(g,e,I)}let A=g._propertyBindings;for(let I=0,e=A.length;I!==e;++I){let i=A[I];i.useCount++===0&&(this._lendBinding(i),i.saveOriginalState())}this._lendAction(g)}}_deactivateAction(g){if(this._isActiveAction(g)){let A=g._propertyBindings;for(let I=0,e=A.length;I!==e;++I){let i=A[I];--i.useCount===0&&(i.restoreOriginalState(),this._takeBackBinding(i))}this._takeBackAction(g)}}_initMemoryManager(){this._actions=[],this._nActiveActions=0,this._actionsByClip={},this._bindings=[],this._nActiveBindings=0,this._bindingsByRootAndName={},this._controlInterpolants=[],this._nActiveControlInterpolants=0;let g=this;this.stats={actions:{get total(){return g._actions.length},get inUse(){return g._nActiveActions}},bindings:{get total(){return g._bindings.length},get inUse(){return g._nActiveBindings}},controlInterpolants:{get total(){return g._controlInterpolants.length},get inUse(){return g._nActiveControlInterpolants}}}}_isActiveAction(g){let A=g._cacheIndex;return A!==null&&A=0;--I)g[I].stop();return this}update(g){g*=this.timeScale;let A=this._actions,I=this._nActiveActions,e=this.time+=g,i=Math.sign(g),t=this._accuIndex^=1;for(let B=0;B!==I;++B)A[B]._update(e,g,i,t);let C=this._bindings,o=this._nActiveBindings;for(let B=0;B!==o;++B)C[B].apply(t);return this}setTime(g){this.time=0;for(let A=0;Athis.max.x||g.ythis.max.y)}containsBox(g){return this.min.x<=g.min.x&&g.max.x<=this.max.x&&this.min.y<=g.min.y&&g.max.y<=this.max.y}getParameter(g,A){return A.set((g.x-this.min.x)/(this.max.x-this.min.x),(g.y-this.min.y)/(this.max.y-this.min.y))}intersectsBox(g){return!(g.max.xthis.max.x||g.max.ythis.max.y)}clampPoint(g,A){return A.copy(g).clamp(this.min,this.max)}distanceToPoint(g){return RG.copy(g).clamp(this.min,this.max).sub(g).length()}intersect(g){return this.min.max(g.min),this.max.min(g.max),this}union(g){return this.min.min(g.min),this.max.max(g.max),this}translate(g){return this.min.add(g),this.max.add(g),this}equals(g){return g.min.equals(this.min)&&g.max.equals(this.max)}},KG=new J,Vh=new J,eC=class{constructor(A=new J,I=new J){this.start=A,this.end=I}set(A,I){return this.start.copy(A),this.end.copy(I),this}copy(A){return this.start.copy(A.start),this.end.copy(A.end),this}getCenter(A){return A.addVectors(this.start,this.end).multiplyScalar(.5)}delta(A){return A.subVectors(this.end,this.start)}distanceSq(){return this.start.distanceToSquared(this.end)}distance(){return this.start.distanceTo(this.end)}at(A,I){return this.delta(I).multiplyScalar(A).add(this.start)}closestPointToPointParameter(A,I){KG.subVectors(A,this.start),Vh.subVectors(this.end,this.start);let e=Vh.dot(Vh),i=Vh.dot(KG)/e;return I&&(i=ii(i,0,1)),i}closestPointToPoint(A,I,e){let i=this.closestPointToPointParameter(A,I);return this.delta(e).multiplyScalar(i).add(this.start)}applyMatrix4(A){return this.start.applyMatrix4(A),this.end.applyMatrix4(A),this}equals(A){return A.start.equals(this.start)&&A.end.equals(this.end)}clone(){return new this.constructor().copy(this)}},JG=new J,x1=class extends ZI{constructor(g,A){super(),this.light=g,this.matrix=g.matrixWorld,this.matrixAutoUpdate=!1,this.color=A,this.type="SpotLightHelper";let I=new bg,e=[0,0,0,0,0,1,0,0,0,1,0,1,0,0,0,-1,0,1,0,0,0,0,1,1,0,0,0,0,-1,1];for(let t=0,C=1,o=32;tho(g)?g.slice(A.length):A===""?g:g.slice(A.length+1),concat:(g,A)=>ho(g)?(g=[...g],A&&g.push(A),g):A&&A.toString!==void 0?(g!==""&&(g+=GE),g0(A)?g+A.toString():g+A):g,initial:g=>{if(ho(g))return g.slice(0,-1);if(g==="")return g;let A=g.lastIndexOf(GE);return A===-1?"":g.slice(0,A)},last:g=>{if(ho(g))return g[g.length-1]||"";if(g==="")return g;let A=g.lastIndexOf(GE);return A===-1?g:g.slice(A+1)},walk:(g,A)=>{if(ho(g))for(let I of g)A(I);else if(g!==""){let I=0,e=g.indexOf(GE);if(e===-1)A(g);else for(;I{g&&(g=g[I])}),g}},Zt=P1;function j1(g){return typeof g=="object"&&typeof g.next=="function"}function W1(g,A,I,e,i){let t=g.next;if(A.name==="entries")g.next=function(){let C=t.call(this);return C.done===!1&&(C.value[0]=i(C.value[0],A,C.value[0],e),C.value[1]=i(C.value[1],A,C.value[0],e)),C};else if(A.name==="values"){let C=I[A0].keys();g.next=function(){let o=t.call(this);return o.done===!1&&(o.value=i(o.value,A,C.next().value,e)),o}}else g.next=function(){let C=t.call(this);return C.done===!1&&(C.value=i(C.value,A,C.value,e)),C};return g}function LG(g,A,I){return g.isUnsubscribed||A.ignoreSymbols&&g0(I)||A.ignoreUnderscores&&I.charAt(0)==="_"||"ignoreKeys"in A&&A.ignoreKeys.includes(I)}var Z1=class{constructor(g){this._equals=g,this._proxyCache=new WeakMap,this._pathCache=new WeakMap,this.isUnsubscribed=!1}_getDescriptorCache(){return this._descriptorCache===void 0&&(this._descriptorCache=new WeakMap),this._descriptorCache}_getProperties(g){let A=this._getDescriptorCache(),I=A.get(g);return I===void 0&&(I={},A.set(g,I)),I}_getOwnPropertyDescriptor(g,A){if(this.isUnsubscribed)return Reflect.getOwnPropertyDescriptor(g,A);let I=this._getProperties(g),e=I[A];return e===void 0&&(e=Reflect.getOwnPropertyDescriptor(g,A),I[A]=e),e}getProxy(g,A,I,e){if(this.isUnsubscribed)return g;let i=g[e],t=i||g;this._pathCache.set(t,A);let C=this._proxyCache.get(t);return C===void 0&&(C=i===void 0?new Proxy(g,I):g,this._proxyCache.set(t,C)),C}getPath(g){return this.isUnsubscribed?void 0:this._pathCache.get(g)}isDetached(g,A){return!Object.is(g,Zt.get(A,this.getPath(g)))}defineProperty(g,A,I){return Reflect.defineProperty(g,A,I)?(this.isUnsubscribed||(this._getProperties(g)[A]=I),!0):!1}setProperty(g,A,I,e,i){if(!this._equals(i,I)||!(A in g)){let t=this._getOwnPropertyDescriptor(g,A);return t!==void 0&&"set"in t?Reflect.set(g,A,I,e):Reflect.set(g,A,I)}return!0}deleteProperty(g,A,I){if(Reflect.deleteProperty(g,A)){if(!this.isUnsubscribed){let e=this._getDescriptorCache().get(g);e&&(delete e[A],this._pathCache.delete(I))}return!0}return!1}isSameDescriptor(g,A,I){let e=this._getOwnPropertyDescriptor(A,I);return g!==void 0&&e!==void 0&&Object.is(g.value,e.value)&&(g.writable||!1)===(e.writable||!1)&&(g.enumerable||!1)===(e.enumerable||!1)&&(g.configurable||!1)===(e.configurable||!1)&&g.get===e.get&&g.set===e.set}isGetInvariant(g,A){let I=this._getOwnPropertyDescriptor(g,A);return I!==void 0&&I.configurable!==!0&&I.writable!==!0}unsubscribe(){this._descriptorCache=null,this._pathCache=null,this._proxyCache=null,this.isUnsubscribed=!0}};function Xp(g){return toString.call(g)==="[object Object]"}function $h(){return!0}function Gs(g,A){return g.length!==A.length||g.some((I,e)=>A[e]!==I)}var nF=new Set(["hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]),V1=new Set(["concat","includes","indexOf","join","keys","lastIndexOf"]),hF={push:$h,pop:$h,shift:$h,unshift:$h,copyWithin:Gs,reverse:Gs,sort:Gs,splice:Gs,flat:Gs,fill:Gs},z1=new Set([...nF,...V1,...Object.keys(hF)]);function Al(g,A){if(g.size!==A.size)return!0;for(let I of g)if(!A.has(I))return!0;return!1}var lF=["keys","values","entries"],cF=new Set(["has","toString"]),DF={add:Al,clear:Al,delete:Al,forEach:Al},X1=new Set([...cF,...Object.keys(DF),...lF]);function gl(g,A){if(g.size!==A.size)return!0;let I;for(let[e,i]of g)if(I=A.get(e),I!==i||I===void 0&&!A.has(e))return!0;return!1}var $1=new Set([...cF,"get"]),dF={set:gl,clear:gl,delete:gl,forEach:gl},AT=new Set([...$1,...Object.keys(dF),...lF]),Ga=class{constructor(A,I,e,i){this._path=I,this._isChanged=!1,this._clonedCache=new Set,this._hasOnValidate=i,this._changes=i?[]:null,this.clone=I===void 0?A:this._shallowClone(A)}static isHandledMethod(A){return nF.has(A)}_shallowClone(A){let I=A;if(Xp(A))I={...A};else if(ho(A))I=[...A];else if(A instanceof Date)I=new Date(A);else if(A instanceof Set)I=new Set([...A].map(e=>this._shallowClone(e)));else if(A instanceof Map){I=new Map;for(let[e,i]of A.entries())I.set(e,this._shallowClone(i))}return this._clonedCache.add(I),I}preferredThisArg(A,I,e,i){return A?(ho(i)?this._onIsChanged=hF[I]:i instanceof Set?this._onIsChanged=DF[I]:i instanceof Map&&(this._onIsChanged=dF[I]),i):e}update(A,I,e){let i=Zt.after(A,this._path);if(I!=="length"){let t=this.clone;Zt.walk(i,C=>{t&&t[C]&&(this._clonedCache.has(t[C])||(t[C]=this._shallowClone(t[C])),t=t[C])}),this._hasOnValidate&&this._changes.push({path:i,property:I,previous:e}),t&&t[I]&&(t[I]=e)}this._isChanged=!0}undo(A){let I;for(let e=this._changes.length-1;e!==-1;e--)I=this._changes[e],Zt.get(A,I.path)[I.property]=I.previous}isChanged(A){return this._onIsChanged===void 0?this._isChanged:this._onIsChanged(this.clone,A)}},bG=class extends Ga{static isHandledMethod(g){return z1.has(g)}},gT=class extends Ga{undo(g){g.setTime(this.clone.getTime())}isChanged(g,A){return!A(this.clone.valueOf(),g.valueOf())}},YG=class extends Ga{static isHandledMethod(g){return X1.has(g)}undo(g){for(let A of this.clone)g.add(A);for(let A of g)this.clone.has(A)||g.delete(A)}},xG=class extends Ga{static isHandledMethod(g){return AT.has(g)}undo(g){for(let[A,I]of this.clone.entries())g.set(A,I);for(let A of g.keys())this.clone.has(A)||g.delete(A)}},IT=class extends Ga{constructor(g,A,I,e){super(void 0,A,I,e),this._arg1=I[0],this._weakValue=g.has(this._arg1)}isChanged(g){return this._weakValue!==g.has(this._arg1)}undo(g){this._weakValue&&!g.has(this._arg1)?g.add(this._arg1):g.delete(this._arg1)}},eT=class extends Ga{constructor(g,A,I,e){super(void 0,A,I,e),this._weakKey=I[0],this._weakHas=g.has(this._weakKey),this._weakValue=g.get(this._weakKey)}isChanged(g){return this._weakValue!==g.get(this._weakKey)}undo(g){let A=g.has(this._weakKey);this._weakHas&&!A?g.set(this._weakKey,this._weakValue):!this._weakHas&&A?g.delete(this._weakKey):this._weakValue!==g.get(this._weakKey)&&g.set(this._weakKey,this._weakValue)}},js=class{constructor(A){this._stack=[],this._hasOnValidate=A}static isHandledType(A){return Xp(A)||ho(A)||zp(A)}static isHandledMethod(A,I){return Xp(A)?Ga.isHandledMethod(I):ho(A)?bG.isHandledMethod(I):A instanceof Set?YG.isHandledMethod(I):A instanceof Map?xG.isHandledMethod(I):zp(A)}get isCloning(){return this._stack.length>0}start(A,I,e){let i=Ga;ho(A)?i=bG:A instanceof Date?i=gT:A instanceof Set?i=YG:A instanceof Map?i=xG:A instanceof WeakSet?i=IT:A instanceof WeakMap&&(i=eT),this._stack.push(new i(A,I,e,this._hasOnValidate))}update(A,I,e){this._stack[this._stack.length-1].update(A,I,e)}preferredThisArg(A,I,e){let{name:i}=A,t=js.isHandledMethod(e,i);return this._stack[this._stack.length-1].preferredThisArg(t,i,I,e)}isChanged(A,I,e){return this._stack[this._stack.length-1].isChanged(A,I,e)}undo(A){this._previousClone!==void 0&&this._previousClone.undo(A)}stop(){return this._previousClone=this._stack.pop(),this._previousClone.clone}},iT={equals:Object.is,isShallow:!1,pathAsArray:!1,ignoreSymbols:!1,ignoreUnderscores:!1,ignoreDetached:!1,details:!1},I0=(g,A,I={})=>{I={...iT,...I};let e=Symbol("ProxyTarget"),{equals:i,isShallow:t,ignoreDetached:C,details:o}=I,B=new Z1(i),a=typeof I.onValidate=="function",s=new js(a),r=(d,u,y,f,k)=>!a||s.isCloning||I.onValidate(Zt.concat(B.getPath(d),u),y,f,k)===!0,Q=(d,u,y,f)=>{!LG(B,I,u)&&!(C&&B.isDetached(d,g))&&E(B.getPath(d),u,y,f)},E=(d,u,y,f,k)=>{s.isCloning?s.update(d,u,f):A(Zt.concat(d,u),y,f,k)},n=d=>d&&(d[e]||d),h=(d,u,y,f)=>_1(d)||y==="constructor"||t&&!js.isHandledMethod(u,y)||LG(B,I,y)||B.isGetInvariant(u,y)||C&&B.isDetached(u,g)?d:(f===void 0&&(f=B.getPath(u)),B.getProxy(d,Zt.concat(f,y),l,e)),l={get(d,u,y){if(g0(u)){if(u===e||u===A0)return d;if(u===EF&&!B.isUnsubscribed&&B.getPath(d).length===0)return B.unsubscribe(),d}let f=zp(d)?Reflect.get(d,u):Reflect.get(d,u,y);return h(f,d,u)},set(d,u,y,f){y=n(y);let k=d[e]||d,M=k[u];if(i(M,y)&&u in d)return!0;let G=r(d,u,y,M);return G&&B.setProperty(k,u,y,f,M)?(Q(d,u,d[u],M),!0):!G},defineProperty(d,u,y){if(!B.isSameDescriptor(y,d,u)){let f=d[u];r(d,u,y.value,f)&&B.defineProperty(d,u,y,f)&&Q(d,u,y.value,f)}return!0},deleteProperty(d,u){if(!Reflect.has(d,u))return!0;let y=Reflect.get(d,u),f=r(d,u,void 0,y);return f&&B.deleteProperty(d,u,y)?(Q(d,u,void 0,y),!0):!f},apply(d,u,y){let f=u[e]||u;if(B.isUnsubscribed)return Reflect.apply(d,f,y);if((o===!1||o!==!0&&!o.includes(d.name))&&js.isHandledType(f)){let k=Zt.initial(B.getPath(d)),M=js.isHandledMethod(f,d.name);s.start(f,k,y);let G=Reflect.apply(d,s.preferredThisArg(d,u,f),M?y.map(b=>n(b)):y),v=s.isChanged(f,i),N=s.stop();if(js.isHandledType(G)&&M&&(u instanceof Map&&d.name==="get"&&(k=Zt.concat(k,y[0])),G=B.getProxy(G,k,l)),v){let b={name:d.name,args:y,result:G},O=s.isCloning?Zt.initial(k):k,H=s.isCloning?Zt.last(k):"";r(Zt.get(g,O),H,f,N,b)?E(O,H,f,N,b):s.undo(f)}return(u instanceof Map||u instanceof Set)&&j1(G)?W1(G,d,u,k,h):G}return Reflect.apply(d,u,y)}},c=B.getProxy(g,I.pathAsArray?[]:"",l);return A=A.bind(c),a&&(I.onValidate=I.onValidate.bind(c)),c};I0.target=g=>g&&g[A0]||g;I0.unsubscribe=g=>g[EF]||g;var HG=I0,tT=typeof global=="object"&&global&&global.Object===Object&&global,uF=tT,CT=typeof self=="object"&&self&&self.Object===Object&&self,oT=uF||CT||Function("return this")(),LC=oT,BT=LC.Symbol,tC=BT,pF=Object.prototype,aT=pF.hasOwnProperty,rT=pF.toString,kE=tC?tC.toStringTag:void 0;function sT(g){var A=aT.call(g,kE),I=g[kE];try{g[kE]=void 0;var e=!0}catch{}var i=rT.call(g);return e&&(A?g[kE]=I:delete g[kE]),i}var QT=sT,ET=Object.prototype,nT=ET.toString;function hT(g){return nT.call(g)}var lT=hT,cT="[object Null]",DT="[object Undefined]",TG=tC?tC.toStringTag:void 0;function dT(g){return g==null?g===void 0?DT:cT:TG&&TG in Object(g)?QT(g):lT(g)}var xr=dT;function uT(g){return g!=null&&typeof g=="object"}var wB=uT,pT="[object Symbol]";function yT(g){return typeof g=="symbol"||wB(g)&&xr(g)==pT}var qD=yT;function wT(g,A){for(var I=-1,e=g==null?0:g.length,i=Array(e);++I0){if(++A>=cO)return arguments[0]}else A=0;return g.apply(void 0,arguments)}}var pO=uO;function yO(g){return function(){return g}}var wO=yO,SO=function(){try{var g=Tr(Object,"defineProperty");return g({},"",{}),g}catch{}}(),kc=SO,fO=kc?function(g,A){return kc(g,"toString",{configurable:!0,enumerable:!1,value:wO(A),writable:!0})}:YT,GO=fO,kO=pO(GO),MO=kO;function mO(g,A){for(var I=-1,e=g==null?0:g.length;++I-1&&g%1==0&&g-1&&g%1==0&&g<=HO}var C0=TO;function OO(g){return g!=null&&C0(g.length)&&!SF(g)}var GF=OO,_O=Object.prototype;function PO(g){var A=g&&g.constructor,I=typeof A=="function"&&A.prototype||_O;return g===I}var o0=PO;function jO(g,A){for(var I=-1,e=Array(g);++I-1}var U3=m3;function N3(g,A){var I=this.__data__,e=LD(I,g);return e<0?(++this.size,I.push([g,A])):I[e][1]=A,this}var F3=N3;function AE(g){var A=-1,I=g==null?0:g.length;for(this.clear();++A0&&I(o)?A>1?KF(o,A-1,I,e,i):E0(i,o):e||(i[i.length]=o)}return i}var s4=KF;function Q4(g){var A=g==null?0:g.length;return A?s4(g,1):[]}var E4=Q4;function n4(g){return MO(xO(g,void 0,E4),g+"")}var JF=n4,h4=FF(Object.getPrototypeOf,Object),n0=h4,l4="[object Object]",c4=Function.prototype,D4=Object.prototype,vF=c4.toString,d4=D4.hasOwnProperty,u4=vF.call(Object);function p4(g){if(!wB(g)||xr(g)!=l4)return!1;var A=n0(g);if(A===null)return!0;var I=d4.call(A,"constructor")&&A.constructor;return typeof I=="function"&&I instanceof I&&vF.call(I)==u4}var y4=p4;function w4(g,A,I){var e=-1,i=g.length;A<0&&(A=-A>i?0:i+A),I=I>i?i:I,I<0&&(I+=i),i=A>I?0:I-A>>>0,A>>>=0;for(var t=Array(i);++eo))return!1;var a=t.get(g),s=t.get(A);if(a&&s)return a==A&&s==g;var r=-1,Q=!0,E=I&jj?new xj:void 0;for(t.set(g,A),t.set(A,g);++r=A||M<0||r&&G>=t}function c(){var k=lu();if(l(k))return d(k);o=setTimeout(c,h(k))}function d(k){return o=void 0,Q&&e?E(k):(e=i=void 0,C)}function u(){o!==void 0&&clearTimeout(o),a=0,e=B=i=o=void 0}function y(){return o===void 0?C:d(lu())}function f(){var k=lu(),M=l(k);if(e=arguments,i=this,B=k,M){if(o===void 0)return n(B);if(r)return clearTimeout(o),o=setTimeout(c,A),E(B)}return o===void 0&&(o=setTimeout(c,A)),C}return f.cancel=u,f.flush=y,f}var c0=K8;function J8(g){var A=g==null?0:g.length;return A?g[A-1]:void 0}var v8=J8;function q8(g,A){return A.length<2?g:RF(g,S4(A,0,-1))}var L8=q8;function b8(g,A){return w8(g,A)}var WF=b8;function Y8(g,A){return A=IE(A,g),g=L8(g,A),g==null||delete g[HD(v8(A))]}var x8=Y8;function H8(g){return y4(g)?void 0:g}var T8=H8,O8=1,_8=2,P8=4,j8=JF(function(g,A){var I={};if(g==null)return I;var e=!1;A=yF(A,function(t){return t=IE(t,g),e||(e=t.length>1),t}),Ih(g,xF(g),I),e&&(I=_F(I,O8|_8|P8,T8));for(var i=A.length;i--;)x8(I,A[i]);return I}),iy=j8;function W8(g,A,I,e){if(!KC(g))return g;A=IE(A,g);for(var i=-1,t=A.length,C=t-1,o=g;o!=null&&++itypeof window>"u"?!1:window.navigator.userAgent.toLowerCase().includes(" electron/"),CW=()=>typeof window>"u"?!1:window.navigator.platform.toUpperCase().includes("MAC"),oW=()=>typeof window>"u"?!1:/iPad|iPhone|iPod/.test(window.navigator.userAgent)||OD&&"ontouchend"in document,BW=()=>typeof window>"u"?!1:window.navigator.userAgent.toLowerCase().indexOf("firefox")>-1,aW=()=>typeof window>"u"?!1:"ontouchstart"in window||navigator.maxTouchPoints>0,rW=()=>{if(typeof window>"u")return!1;let g=navigator.userAgent,A=navigator.vendor;return/Safari/i.test(g)&&/Apple Computer/.test(A)},sW=()=>{if(typeof window>"u")return null;let g=navigator.userAgent.match(/Version\/(\d+\.\d)/);return g&&g[1]},QW=()=>{if(typeof window>"u")return;let g=new URLSearchParams(window.location.search).get("desktop-app-version");return g?(window.localStorage.setItem("desktop-app-version",g),g):window.localStorage.getItem("desktop-app-version")??"0.0.6"},EW=tW();EW&&QW();var OD=CW(),ZF=oW(),nW=BW(),Kt=aW(),uk=rW(),pk=Number(sW());function VF(g){return Array.isArray(g)?g:[g]}function hW(g,A){let I=0;for(;IA[I])return 1;I+=1}return I!==A.length?-1:I!==g.length?1:0}function el(g){return OD?g.metaKey:g.ctrlKey}var Pg=[],Nc={},VE={},$l={};function zF(g){Pg.includes(g)||Pg.push(g)}function aQ(g){delete Nc[g.pointerId];for(let A=0;A{AR=g}),il;function uW(){if(il)return il;async function g(){let A="https://unpkg.com/@splinetool/navmesh-wasm@0.9.483/build",I=Zn(()=>Promise.resolve().then(()=>_gA),void 0),[e,i]=await Promise.all([I,fetch(`${A}/navmesh.wasm`).then(o=>o.arrayBuffer())]),t=e.default,C=await t({wasmBinary:i});AR(C)}return il=g(),il}var gR,pW=new Promise(g=>{gR=g}),tl;function yW(){if(tl)return tl;async function g(){let A=await Zn(()=>Promise.resolve().then(()=>$gA),void 0);await A.init(),gR(A)}return tl=g(),tl}var lI=class{modifyById(A,I){let e=this;if(e[A]===void 0)throw new Error("not expected");{let i={...e,[A]:I};return Object.setPrototypeOf(i,lI.prototype),i}}add(A,I){var e;return((e=this.runOp({type:1,id:A,data:I}))==null?void 0:e.data)??this}runOp(A){let I=this;if(A.type===1){let e=I[A.id],i;e===void 0?i={type:2,id:A.id}:i={type:1,id:A.id,data:e};let{id:t,data:C}=A,o={...I,[t]:C};return Object.setPrototypeOf(o,lI.prototype),{data:o,actual:A,reverse:i}}else if(A.type===2){let{id:e}=A,i=I[e];if(i===void 0)return null;{let t={...I};return Object.setPrototypeOf(t,lI.prototype),delete t[e],{data:t,actual:A,reverse:{type:1,id:e,data:i}}}}return null}};function D0(g){if(g.deepFreeze!==void 0){g.deepFreeze(g);return}let A=Object.getOwnPropertyNames(g);for(let I of A){let e=g[I];e&&typeof e=="object"&&D0(e)}return Object.freeze(g)}function wW(g,A){let I=0;for(;IA[I])return 1;I+=1}return I!==A.length?-1:I!==g.length?1:0}var IR=class extends Error{};function Du(g){let A={...g};return Object.setPrototypeOf(A,Object.getPrototypeOf(g)),A}function Ba(g,A,I){if(g===void 0?A===void 0?(g=0,A=10):g=A-10:A===void 0&&(A=g+10),g>A){let t=g;g=A,A=t}let e=[],i=1/(I+1);for(let t=0;to.id===A);if(t<0)throw new Error("not expected");let C=i[t];return i=[...i],i[t]={...C,data:I},this.modifyArrayBy(e,i)}}modifyArrayBy(A,I){let e=A,i=I;for(;e!==null;){let C=i,o=e;if(e=this.parent(e),e===void 0)throw new Error;i=this.childrenArray(e);let B=i.findIndex(a=>a.id===o);if(B<0)throw new Error;i=[...i],i[B]={...i[B],children:C}}Object.setPrototypeOf(i,ht.prototype);let t=i;return t.fillCaches(),t}runOp(A){switch(A.type){case 7:return this.addOp(A);case 8:return this.deleteOp(A);case 9:return this.moveOp(A)}return null}checkDuplicatedIdRec({id:A,children:I}){if(this.get(A)!==void 0)return!0;for(let e of I)if(this.checkDuplicatedIdRec(e))return!0;return!1}addOp(A){let{parent:I,fi:e,id:i,data:t,children:C}=A;if(I!==null&&this.get(I)===void 0||this.checkDuplicatedIdRec(A))return null;{let o=I,B=this.childrenArray(o),a={fi:e,id:i,data:t,children:C};return B=[...B,a],B.sort((s,r)=>s.fi-r.fi),A.localIndex=B.indexOf(a),{data:this.modifyArrayBy(o,B),actual:A,reverse:{type:8,id:i}}}}deleteOp(A){let{id:I}=A;if(this.get(I)===null)return null;{let e=this.parent(I);if(e===void 0)return null;let i=this.childrenArray(e),t=i.findIndex(o=>o.id===I);A.localIndex=t,i=[...i];let C=i.splice(t,1)[0];return{data:this.modifyArrayBy(e,i),actual:A,reverse:{type:7,...C,parent:e}}}}moveOp(A){let{parent:I,fi:e,id:i}=A;if(I!==null&&this.get(I)===void 0)return this.deleteOp({type:8,id:i});if(I!==null){let Q=I;for(;Q!==null;){if(Q===void 0)throw new Error;if(Q===i)throw new IR("cyclic tree");Q=this.parent(Q)}}let t=this.parent(i);if(t===void 0)return null;let C=t,o=this.childrenArray(t),B=o.findIndex(Q=>Q.id===i);o=[...o];let a=o.splice(B,1)[0],s=this.modifyArrayBy(t,o);t=I,o=s.childrenArray(t);let r=a.fi;return a={...a,fi:e},o=[...o,a],o.sort((Q,E)=>Q.fi-E.fi),A.localIndex=o.indexOf(a),s=s.modifyArrayBy(t,o),{data:s,actual:A,reverse:{type:9,parent:C,fi:r,id:i}}}previous(A,I){if(I===null){let i=this.childrenArray(A);return i.length===0?null:i[i.length-1].id}let e=null;for(let i of this.childrenArray(A)){if(i.id===I)return e;e=i.id}return null}traverseSortNext(A){let I=this.parent(A);if(I!==void 0){let e=this.childrenArray(I),i=e.findIndex(t=>t.id===A)+1;if(i0?I[0].id:this.traverseSortNext(A)}traverseSortPrevious(A){let I=this.childrenArray(A);return I.length>0?this.traverseSortPrevious(I[I.length-1].id):A}sortPrevious(A){let I=this.parent(A);if(I!==void 0){let e=this.childrenArray(I),i=e.findIndex(t=>t.id===A)-1;return i>=0?this.traverseSortPrevious(e[i].id):I}}getAllSorted(A){let I=[];for(let e of A){let i=this.getWithSortKey(e.id);i!==void 0&&I.push({...e,...i})}I.sort((e,i)=>wW(e.sortKey,i.sortKey));for(let e of I)delete e.sortKey;return I}getWithSortKey(A){var I=A;let e=[],i=this.get(I),t=i;if(i!==void 0){for(;I;)e.splice(0,0,i.fi),I=this.parent(I),I!==null&&(i=this.get(I));return{...t,sortKey:e}}}insertBeforeHelper(A,I,e){return this.insertAfterHelper(A,this.previous(A,I),e)}insertAfterHelper(A,I,e){let i=this.childrenArray(A);if(I===null){if(i.length===0)return Ba(0,e,e);{let t=i[0].fi;return Ba(t-e,t,e)}}else{let t=this.get(I);if(t===void 0||this.parent(I)!==A)throw new Error("illegal args");let C=i.find(o=>o.fi>t.fi);if(C===void 0){let o=i[i.length-1].fi;return Ba(o,o+e,e)}else return Ba(t.fi,C.fi,e)}}},Rc;(g=>{function A(I,e){if(e.type!==0)return null;if(Array.isArray(I)){let i=e.props,t={},C=[...I],o=!1;if(i)for(let B of Object.keys(i)){let a=parseInt(B);if(isNaN(a))throw new Error("wrong index");t[B]=C[a],C[a]=i[B],o=!0}return o?{data:C,actual:e,reverse:{type:0,props:t}}:null}else{let i=e.props,t={},C={...I},o=!1;if(i)for(let B of Object.keys(i)){t[B]=C[B];let a=i[B];a===void 0?delete C[B]:C[B]=a,o=!0}return o?{data:C,actual:e,reverse:{type:0,props:t}}:null}}g.runOp=A})(Rc||(Rc={}));var _g=class extends Array{constructor(...A){super(...A),Object.setPrototypeOf(this,_g.prototype)}deepFreeze(){let A=0;for(;AC.id===A);if(i<0)throw new Error("not expected");let t=e[i];return e=[...e],e[i]={...t,data:I},this.modifyArrayBy(e)}}modifyArrayBy(A){Object.setPrototypeOf(A,_g.prototype);let I=A;return SW()||I.fillCaches(),I}runOp(A){switch(A.type){case 4:return this.addOp(A);case 5:return this.deleteOp(A);case 6:return this.moveOp(A)}return null}addOp(A){let{fi:I,id:e,data:i}=A,t=this,C={fi:I,id:e,data:i};return t=[...t,C],t.sort((o,B)=>o.fi-B.fi),A.localIndex=t.indexOf(C),{data:this.modifyArrayBy(t),actual:A,reverse:{type:5,id:e}}}deleteOp(A){let{id:I}=A,e=this,i=e.findIndex(C=>C.id===I);if(i===-1)return null;A.localIndex=i,e=[...e];let t=e.splice(i,1)[0];return{data:this.modifyArrayBy(e),actual:A,reverse:{type:4,...t}}}moveOp(A){let{fi:I,id:e}=A,i=this;i=[...i];let t=i.findIndex(B=>B.id===e);if(t===-1)return null;let C=i[t].fi,o={...i[t],fi:I};return i[t]=o,i.sort((B,a)=>B.fi-a.fi),A.localIndex=i.indexOf(o),{data:this.modifyArrayBy(i),actual:A,reverse:{type:6,fi:C,id:e}}}previous(A){if(A===null)return this.length===0?null:this[this.length-1].id;let I=null;for(let e of this){if(e.id===A)return I;I=e.id}return null}insertBeforeHelper(A,I){return this.insertAfterHelper(this.previous(A),I)}insertAfterHelper(A,I){let e=this;if(A===null){if(e.length===0)return Ba(0,I,I);{let i=e[0].fi;return Ba(i-I,i,I)}}else{let i=this.get(A);if(i===void 0)throw new Error("illegal args");let t=e.find(C=>C.fi>i.fi);if(t===void 0){let C=e[e.length-1].fi;return Ba(C,C+I,I)}else return Ba(i.fi,t.fi,I)}}};function mQ(g){return g&&typeof g=="object"&&g instanceof Ci}var Ci=class{unusedFunOverridesTable(A){}runOp(A){let I=[],e=this,i=0,t={};for(;i0;){if(Object.keys(e).length===0){let B=I[i-1];B&&(e=Du(B),delete e[A.path[i-1]])}else{let B=I[i-1];if(B){let a=Du(B);a[A.path[i-1]]=e,e=a}else{let a=new Ci;a[A.path[i-1]]=e,e=a}}i-=1}let C=Object.setPrototypeOf(e,Ci.prototype),o={...A,props:t};return{data:C,actual:A,reverse:o}}},Da;(g=>{function A(i,t){return Gn(i,t)??i}g.apply=A;function I(i,t){return p0(i,t)}g.merge=I;function e(i,t){let C=0,o=t.path,B=i;for(;C{let t=i.id,C=Gn(i.data,A[t]);if(I=I||C!==void 0,C===void 0&&(C=i.data),i.children){let o=u0(i.children,A);return o!==void 0?I=!0:o=i.children,{...i,id:t,data:C,children:o}}else return{...i,id:t,data:C}});if(I)return e}function fW(g,A){if(A===void 0)return;let I=!1,e=g.map(i=>{let t=i.id,C=Gn(i.data,A[t]);return I=I||C!==void 0,C===void 0&&(C=i.data),{...i,id:t,data:C}});if(I)return Object.setPrototypeOf(e,Object.getPrototypeOf(g)),e}function Gn(g,A){if(!mQ(A))return A;if(g instanceof ht){let I=u0(g,A);return I!==void 0&&Object.setPrototypeOf(I,Object.getPrototypeOf(g)),I}else{if(g instanceof _g)return fW(g,A);if(Array.isArray(g)){let I=!1,e=g.map((i,t)=>{let C=Gn(i,A[t]);return I=I||C!==void 0,C===void 0&&(C=i),C});return I?(Object.setPrototypeOf(e,Object.getPrototypeOf(g)),e):void 0}else{if(g instanceof Ci)return p0(g,A);if(g&&typeof g=="object"){let I={},e=!1;for(let[i,t]of Object.entries(g)){let C=Gn(t,A[i]);e=e||C!==void 0,C===void 0&&(C=t),I[i]=C}return e?(Object.setPrototypeOf(I,Object.getPrototypeOf(g)),I):void 0}}}}function p0(g,A){if(g===void 0)return A;if(A===void 0)return g;if(!mQ(A))return A;if(!mQ(g))return Da.apply(g,A);let I=new Set;for(let i of Object.keys(g))I.add(i);for(let i of Object.keys(A))I.add(i);let e=new Ci;for(let i of I){let t=p0(g===void 0?void 0:g[i],A===void 0?void 0:A[i]);e[i]=t}return e}function GW(g,A){let I={cur:[],result:[],len:0};return g=kn(g,A,I)??g,[g,I.result]}function Kc(g,A){return g===null?null:(g.cur[g.len]=A,g.len+=1,g)}function Jc(g){g&&(g.len-=1)}function kW(g){if(g===null)return null;g.result.push(g.cur.slice(0,g.len))}function tR(g,A,I){let e=!1,i=g.map(t=>{let C=t.id,o=A[C];if(o!==void 0&&typeof o=="string"&&(e=!0,C=o,I!==null))throw new Error("not supported");let B=kn(t.data,A,Kc(I,C));Jc(I),e=e||B!==void 0,B===void 0&&(B=t.data);let a=tR(t.children,A,I);return a!==void 0?e=!0:a=t.children,{...t,id:C,data:B,children:a}});if(e)return i}function MW(g,A,I){let e=!1,i=g.map(t=>{let C=t.id,o=A[C];if(o!==void 0&&typeof o=="string"&&(e=!0,C=o,I!==null))throw new Error("not supported");let B=kn(t.data,A,Kc(I,C));return Jc(I),e=e||B!==void 0,B===void 0&&(B=t.data),{...t,id:C,data:B}});if(e)return Object.setPrototypeOf(i,Object.getPrototypeOf(g)),i}function kn(g,A,I){if(g instanceof ht){let e=tR(g,A,I);return e!==void 0&&Object.setPrototypeOf(e,Object.getPrototypeOf(g)),e}else{if(g instanceof _g)return MW(g,A,I);if(Array.isArray(g)){let e=!1,i=g.map((t,C)=>{let o=kn(t,A,Kc(I,C));return Jc(I),e=e||o!==void 0,o===void 0&&(o=t),o});return e?(Object.setPrototypeOf(i,Object.getPrototypeOf(g)),i):void 0}else if(g&&typeof g=="object"&&!d0(g)){let e={},i=!1;for(let[t,C]of Object.entries(g))if(t!=="name"){let o=A[t];if(typeof o=="string"){if(I!==null)throw new Error("not supported");i=!0,t=o}let B=kn(C,A,Kc(I,t));Jc(I),i=i||B!==void 0,B===void 0&&(B=C),e[t]=B}else e[t]=C;return i?(Object.setPrototypeOf(e,Object.getPrototypeOf(g)),e):void 0}else if(typeof g=="string"){let e=A[g];return e!==void 0&&kW(I),e}else return}}var ty;(g=>{function A(I,e){let i=ji.zoom(e,I.path);if(typeof i=="object"){let t={};for(let C of Object.keys(I.props))t[C]=i[C];return{...I,props:t}}else return{...I,props:{}}}g.replaceProps=A})(ty||(ty={}));var Fi;(g=>{function A(B,a){return{...B,path:B.path.slice(a)}}g.drop=A;function I(B,a){var s;return((s=e(B,a))==null?void 0:s.data)??B}g.applySimple=I;function e(B,a){var Q,E;let s=a.path;for(var r=[];;){let n;if(B instanceof Ci&&a.type===0&&(n=B.runOp({...a,path:s.slice(r.length)}),n===null&&(n=void 0)),n===void 0&&r.length===s.length&&(B instanceof ht||B instanceof _g||B instanceof lI?n=B.runOp(a):n=Rc.runOp(B,a)),n!==void 0)if(n!==null){let c=n.data;for(let d=r.length-1;d>=0;d--){let u=s[d],y=r[d];if(y instanceof ht){if(typeof u=="number")throw new Error("illegal arg");c=y.modifyById(u,c)}else if(y instanceof _g){if(typeof u=="number")throw new Error("illegal arg");c=y.modifyById(u,c)}else if(y instanceof lI){if(typeof u=="number")throw new Error("illegal arg");c=y.modifyById(u,c)}else if(y instanceof Ci){let f={...y,[u]:c};c=Object.setPrototypeOf(f,Ci.prototype)}else if(typeof y=="object")if(Array.isArray(y)){if(typeof u=="string"&&(u=parseInt(u),isNaN(u)))throw new Error("Invalid path");let f=c;c=[...y],c[u]=f}else c={...y,[u]:c};else return null}return{data:c,actual:{...n.actual,path:s},reverse:{...n.reverse,path:s}}}else return null;let h=s[r.length],l;if(B instanceof ht){if(typeof h=="number")throw new Error("");l=(Q=B.get(h))==null?void 0:Q.data}else if(B instanceof _g){if(typeof h=="number")throw new Error("");l=(E=B.get(h))==null?void 0:E.data}else B!==null&&(l=B[h]);if(l!==void 0)r.push(B),B=l;else return null}}g.apply=e;function i(B,a){for(let s=0;sa.props[s]!==void 0):!1}g.subsumed=o})(Fi||(Fi={}));var Cy;(g=>{function A(){return[]}g.empty=A;function I(a,s){let r=[];for(let Q of a){let[E,...n]=Q.path;E===s&&r.push({...Q,path:n})}return r}g.removePrefix=I;function e(a,s){return a.map(r=>({...r,path:[s,...r.path]}))}g.addPrefix=e;function i(a,s){return[...a,...s]}g.concat=i;function t(a,s){return[...a.filter(r=>!s.some(Q=>Fi.subsumed(r,Q))),...s]}g.compress=t;function C(a,s){return a.every(r=>s.every(Q=>Fi.commutative(r,Q)))}g.commutative=C;function o(a,s){for(let r of s){let Q=B(a,r);Q!==null&&(a=Q.data)}return a}g.applyAll=o;function B(a,s){var r=a;let Q=[],E=[];for(let n of s)try{if(n.type===3||n.type===5&&n.path[n.path.length-1]==="variables"){let h,l,c;if(n.type===3?(h=ji.zoom(r,[...n.path,n.id]),c=Fi.apply(r,{...n,type:2})):(h=ji.zoom(r,[...n.path,n.id,"value"]),c=Fi.apply(r,n)),c!==null){r=c.data;let[d,u]=GW(r,{[n.id]:h});r=d;for(let y=0;yM.includes(N)?n.id:v),h=G,k=f.pop()}else{if(k==="alphaOverride"||k==="alpha"){h/=100;let M=h,G=ji.zoom(r,f.slice(0,f.length-2)),v=G.layers.map(N=>N.id===f[f.length-1]?{...N,data:{...N.data,[k]:M}}:N);Object.setPrototypeOf(v,Object.getPrototypeOf(G.layers)),G.layers=v}l=n.id}Q.push({type:0,path:f,props:{[k]:h}}),E.push({type:0,path:f,props:{[k]:l}})}E.push(c.reverse),Q.push(c.actual)}}else{let h=Fi.apply(r,n);h!==null&&(Q.push(h.actual),r=h.data,E.push(h.reverse))}}catch(h){if(h instanceof IR)return null;throw h}return{data:r,actual:Q,reverse:E.reverse()}}g.apply=B})(Cy||(Cy={}));var CR=Symbol(),mW=Symbol(),_D=Symbol(),eh=class{reportOp(g,A,I=[]){let e=this;if(A===null)return;e._current=A.data;let i=I;for(;!(e instanceof BR);){let t=e._path,C=e._current;if(t!==""&&i.splice(0,0,t),e=e._parent,e===null)return;e.update(t,C)}e.push(i,g,A.actual,A.reverse)}deleteChildren(g){if(this._children){let A=this._children[g];if(A){let I=A[_D];I&&I(),delete this._children[g]}}}},UW=class extends eh{constructor(g,A,I){super(),this._parent=g,this._path=A,this._current=I}update(g,A){if(Array.isArray(this._current)){if(typeof g=="string"&&(g=parseInt(g),isNaN(g)))throw new Error("Invalid path");this._current=[...this._current],this._current[g]=A}else this._current={...this._current,[g]:A}}runOp(g){this.reportOp(g,Rc.runOp(this._current,g),g.path)}},NW=class extends eh{constructor(g,A,I){super(),this._parent=g,this._path=A,this._current=I}update(g,A){this._current={...this._current,[g]:A},Object.setPrototypeOf(this._current,lI.prototype)}runOp(g){this.reportOp(g,this._current.runOp(g))}},oR={get(g,A){if(A===_D)return()=>{g._parent=null};if(A===CR)return g._current;if(A===mW)return g;let{_current:I,_children:e}=g;if(A==="push"&&Array.isArray(I))throw new Error("not supported to expand array");let i=e===void 0?void 0:e[A];if(i!==void 0)return i;let t=I[A],C=PD(g,A,t);return C!==t?(e===void 0&&(e={},g._children=e),e[A]=C,C):t},has(g,A){return A in g._current},ownKeys(g){return Reflect.ownKeys(g._current)},defineProperty(){throw Error("not supported")},getPrototypeOf(g){return Object.getPrototypeOf(g._current)},setPrototypeOf(){throw Error("not supported")},getOwnPropertyDescriptor(g,A){let I=g._current,e=Reflect.getOwnPropertyDescriptor(I,A);return e&&{writable:!0,configurable:!0,enumerable:e.enumerable,value:I[A]}}},FW={...oR,set(g,A,I){let e={type:0,props:{[A]:We(I)??I}};return g.deleteChildren(A),g.runOp(e),!0},deleteProperty(g,A){let I={type:0,props:{[A]:void 0}};return g.deleteChildren(A),g.runOp(I),!0}},RW={...oR,set(g,A,I){return I===void 0?this.deleteProperty(g,A):(g.deleteChildren(A),g.runOp({type:1,id:A,data:I})),!0},deleteProperty(g,A){return g.runOp({type:2,id:A}),!0}},y0=class extends eh{constructor(g,A,I){super(),this._children={},this._parent=g,this._path=A,this._current=I,this[_D]=()=>{this._parent=null}}unproxy(){return this._current}update(g,A){this._current=this._current.modifyById(g,A)}runOp(g){this.reportOp(g,this._current.runOp(g))}randomId(){return this._current.randomId()}isDescendantOf(g,A){return this._current.isDescendantOf(g,A)}childrenOf(g){return this._current.childrenOf(g)}traverse(g){return this._current.traverse(g)}get(g){return this._current.get(g)}parent(g){return this._current.parent(g)}traverse(g){this._current.traverse((A,I)=>{g(A,this.data(A))})}data(g){var C;let{_current:A,_children:I}=this,e=I===void 0?void 0:I[g];if(e!==void 0)return e;let i=(C=A.get(g))==null?void 0:C.data,t=PD(this,g,i);return t!==i?(I===void 0&&(I={},this._children=I),I[g]=t,t):i}add(g,A,I,e,i){this.runOp({type:7,parent:g,fi:A,id:I,data:e,children:i})}move(g,A,I){this.runOp({type:9,parent:g,fi:A,id:I})}insertAfter(g,A,I){let e=this._current.insertAfterHelper(g,A,I.length);for(let i=0;i{this._parent=null}}unproxy(){return this._current}get length(){return this._current.length}forEach(g){let A=this.length;for(let I=0;I0){let e=g[g.length-1];if(e.type===0&&A.type===0&&ji.equal(e.path,I)){Object.assign(e.props,A.props);return}}g.push({...A,path:I})}var BR=class extends eh{constructor(g){super(),this.ts=[],this.actual=[],this.reverse=[],this._current=g}update(g,A){if(g!=="")throw new Error("");this._current=A}push(g,A,I,e){du(this.ts,A,g),du(this.actual,I,g),du(this.reverse,e,g)}result(){return{data:this._current,ts:this.ts,actual:this.actual,reverse:this.reverse.reverse()}}};function PD(g,A,I){return I instanceof ht?new y0(g,A,I):I instanceof _g?new w0(g,A,I):I instanceof lI?new Proxy(new NW(g,A,I),RW):I!==null&&typeof I=="object"?d0(I)?I:new Proxy(new UW(g,A,I),FW):I}function aR(g){let A=new BR(g);return[PD(A,"",g),A]}function Mn(g,A){let[I,e]=aR(g);return A(I),e.result()}function We(g){return g instanceof y0||g instanceof w0?g._current:g!==null&&typeof g=="object"?g[CR]:g}var ji;(g=>{function A(t,C){if(C.length===t.length)for(var o=0;o{delete a[s]}),a}else return C}g.removeOverridden=I;function e(t,C){if((t instanceof ht||t instanceof y0)&&typeof C=="string"||(t instanceof _g||t instanceof w0)&&typeof C=="string")return t.data(C);if(typeof C=="number"&&Array.isArray(t)||typeof C=="string"&&typeof t=="object"&&t!==null)return t[C]}g.zoomOnce=e;function i(t,C,o=0){for(;o(ay(),this?this.unpack(A,I):vc.prototype.unpack.call(Sk,A,I)));da=I>-1?I:A.length,kA=0,lo=0,aa=null,Ut=null,wg=A;try{TI=A.dataView||(A.dataView=new DataView(A.buffer,A.byteOffset,A.byteLength))}catch(e){throw wg=null,A instanceof Uint8Array?e:new Error("Source must be a Uint8Array or Buffer but was a "+(A&&typeof A=="object"?A.constructor.name:typeof A))}if(this instanceof vc){if(rt=this,this.structures)return LI=this.structures,Cl();(!LI||LI.length>0)&&(LI=[])}else rt=Sk,(!LI||LI.length>0)&&(LI=[]);return Cl()}unpackMultiple(A,I){let e,i=0;try{UQ=!0;let t=A.length,C=this?this.unpack(A,t):WD.unpack(A,t);if(I){for(I(C);kA=32&&(t.highByte=e-32>>5))}A.sharedLength=A.length;for(let e in I||[])if(e>=0){let i=A[e],t=I[e];t&&(i&&((A.restoreStructures||(A.restoreStructures=[]))[e]=i),A[e]=t)}return this.structures=A}decode(A,I){return this.unpack(A,I)}};function Cl(){try{if(!rt.trusted&&!UQ){let A=LI.sharedLength||0;Ada){let A=new Error("Unexpected end of MessagePack data");throw A.incomplete=!0,A}else if(!UQ)throw new Error("Data read, but end of buffer not reached");return g}catch(g){throw LI.restoreStructures&&fk(),ay(),(g instanceof RangeError||g.message.startsWith("Unexpected end of buffer"))&&(g.incomplete=!0),g}}function fk(){for(let g in LI.restoreStructures)LI[g]=LI.restoreStructures[g];LI.restoreStructures=null}function Se(){let g=wg[kA++];if(g<160)if(g<128){if(g<64)return g;{let A=LI[g&63]||rt.getStructures&&ER()[g&63];return A?(A.read||(A.read=S0(A,g&63)),A.read()):g}}else if(g<144)if(g-=128,rt.mapsAsObjects){let A={};for(let I=0;I=kA)return aa.slice(kA-Vt,(kA+=A)-Vt);if(lo==0&&da<140){let I=A<16?f0(A):nR(A);if(I!=null)return I}return By(A)}else{let A;switch(g){case 192:return null;case 193:return Ut?(A=Se(),A>0?Ut[1].slice(Ut.position1,Ut.position1+=A):Ut[0].slice(Ut.position0,Ut.position0-=A)):QR;case 194:return!1;case 195:return!0;case 196:return uu(wg[kA++]);case 197:return A=TI.getUint16(kA),kA+=2,uu(A);case 198:return A=TI.getUint32(kA),kA+=4,uu(A);case 199:return $a(wg[kA++]);case 200:return A=TI.getUint16(kA),kA+=2,$a(A);case 201:return A=TI.getUint32(kA),kA+=4,$a(A);case 202:if(A=TI.getFloat32(kA),rt.useFloat32>2){let I=G0[(wg[kA]&127)<<1|wg[kA+1]>>7];return kA+=4,(I*A+(A>0?.5:-.5)>>0)/I}return kA+=4,A;case 203:return A=TI.getFloat64(kA),kA+=8,A;case 204:return wg[kA++];case 205:return A=TI.getUint16(kA),kA+=2,A;case 206:return A=TI.getUint32(kA),kA+=4,A;case 207:return rt.int64AsNumber?(A=TI.getUint32(kA)*4294967296,A+=TI.getUint32(kA+4)):A=TI.getBigUint64(kA),kA+=8,A;case 208:return TI.getInt8(kA++);case 209:return A=TI.getInt16(kA),kA+=2,A;case 210:return A=TI.getInt32(kA),kA+=4,A;case 211:return rt.int64AsNumber?(A=TI.getInt32(kA)*4294967296,A+=TI.getUint32(kA+4)):A=TI.getBigInt64(kA),kA+=8,A;case 212:if(A=wg[kA++],A==114)return Uk(wg[kA++]&63);{let I=$i[A];if(I)return I.read?(kA++,I.read(Se())):I.noBuffer?(kA++,I()):I(wg.subarray(kA,++kA));throw new Error("Unknown extension "+A)}case 213:return A=wg[kA],A==114?(kA++,Uk(wg[kA++]&63,wg[kA++])):$a(2);case 214:return $a(4);case 215:return $a(8);case 216:return $a(16);case 217:return A=wg[kA++],lo>=kA?aa.slice(kA-Vt,(kA+=A)-Vt):vW(A);case 218:return A=TI.getUint16(kA),kA+=2,lo>=kA?aa.slice(kA-Vt,(kA+=A)-Vt):qW(A);case 219:return A=TI.getUint32(kA),kA+=4,lo>=kA?aa.slice(kA-Vt,(kA+=A)-Vt):LW(A);case 220:return A=TI.getUint16(kA),kA+=2,kk(A);case 221:return A=TI.getUint32(kA),kA+=4,kk(A);case 222:return A=TI.getUint16(kA),kA+=2,Mk(A);case 223:return A=TI.getUint32(kA),kA+=4,Mk(A);default:if(g>=224)return g-256;if(g===void 0){let I=new Error("Unexpected end of MessagePack data");throw I.incomplete=!0,I}throw new Error("Unknown MessagePack token "+g)}}}var JW=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function S0(g,A){function I(){if(I.count++>2){let i=g.read=new Function("r","return function(){return {"+g.map(t=>JW.test(t)?t+":r()":"["+JSON.stringify(t)+"]:r()").join(",")+"}}")(Se);return g.highByte===0&&(g.read=Gk(A,g.read)),i()}let e={};for(let i=0,t=g.length;ifunction(){let I=wg[kA++];if(I===0)return A();let e=g<32?-(g+(I<<5)):g+(I<<5),i=LI[e]||ER()[e];if(!i)throw new Error("Record id is not defined for "+e);return i.read||(i.read=S0(i,g)),i.read()};function ER(){let g=DR(()=>(wg=null,rt.getStructures()));return LI=rt._mergeStructures(g,LI)}var By=jD,vW=jD,qW=jD,LW=jD;function jD(g){let A;if(g<16&&(A=f0(g)))return A;if(g>64&&oy)return oy.decode(wg.subarray(kA,kA+=g));let I=kA+g,e=[];for(A="";kA65535&&(B-=65536,e.push(B>>>10&1023|55296),B=56320|B&1023),e.push(B)}else e.push(i);e.length>=4096&&(A+=Qi.apply(String,e),e.length=0)}return e.length>0&&(A+=Qi.apply(String,e)),A}function kk(g){let A=new Array(g);for(let I=0;I0){kA=A;return}I[e]=i}return Qi.apply(String,I)}function f0(g){if(g<4)if(g<2){if(g===0)return"";{let A=wg[kA++];if((A&128)>1){kA-=1;return}return Qi(A)}}else{let A=wg[kA++],I=wg[kA++];if((A&128)>0||(I&128)>0){kA-=2;return}if(g<3)return Qi(A,I);let e=wg[kA++];if((e&128)>0){kA-=3;return}return Qi(A,I,e)}else{let A=wg[kA++],I=wg[kA++],e=wg[kA++],i=wg[kA++];if((A&128)>0||(I&128)>0||(e&128)>0||(i&128)>0){kA-=4;return}if(g<6){if(g===4)return Qi(A,I,e,i);{let t=wg[kA++];if((t&128)>0){kA-=5;return}return Qi(A,I,e,i,t)}}else if(g<8){let t=wg[kA++],C=wg[kA++];if((t&128)>0||(C&128)>0){kA-=6;return}if(g<7)return Qi(A,I,e,i,t,C);let o=wg[kA++];if((o&128)>0){kA-=7;return}return Qi(A,I,e,i,t,C,o)}else{let t=wg[kA++],C=wg[kA++],o=wg[kA++],B=wg[kA++];if((t&128)>0||(C&128)>0||(o&128)>0||(B&128)>0){kA-=8;return}if(g<10){if(g===8)return Qi(A,I,e,i,t,C,o,B);{let a=wg[kA++];if((a&128)>0){kA-=9;return}return Qi(A,I,e,i,t,C,o,B,a)}}else if(g<12){let a=wg[kA++],s=wg[kA++];if((a&128)>0||(s&128)>0){kA-=10;return}if(g<11)return Qi(A,I,e,i,t,C,o,B,a,s);let r=wg[kA++];if((r&128)>0){kA-=11;return}return Qi(A,I,e,i,t,C,o,B,a,s,r)}else{let a=wg[kA++],s=wg[kA++],r=wg[kA++],Q=wg[kA++];if((a&128)>0||(s&128)>0||(r&128)>0||(Q&128)>0){kA-=12;return}if(g<14){if(g===12)return Qi(A,I,e,i,t,C,o,B,a,s,r,Q);{let E=wg[kA++];if((E&128)>0){kA-=13;return}return Qi(A,I,e,i,t,C,o,B,a,s,r,Q,E)}}else{let E=wg[kA++],n=wg[kA++];if((E&128)>0||(n&128)>0){kA-=14;return}if(g<15)return Qi(A,I,e,i,t,C,o,B,a,s,r,Q,E,n);let h=wg[kA++];if((h&128)>0){kA-=15;return}return Qi(A,I,e,i,t,C,o,B,a,s,r,Q,E,n,h)}}}}}function uu(g){return rt.copyBuffers?Uint8Array.prototype.slice.call(wg,kA,kA+=g):wg.subarray(kA,kA+=g)}function $a(g){let A=wg[kA++];if($i[A])return $i[A](wg.subarray(kA,kA+=g));throw new Error("Unknown extension type "+A)}var mk=new Array(4096);function hR(){let g=wg[kA++];if(g>=160&&g<192){if(g=g-160,lo>=kA)return aa.slice(kA-Vt,(kA+=g)-Vt);if(!(lo==0&&da<180))return By(g)}else return kA--,Se();let A=(g<<5^(g>1?TI.getUint16(kA):g>0?wg[kA]:0))&4095,I=mk[A],e=kA,i=kA+g-3,t,C=0;if(I&&I.bytes==g){for(;e{var I=Se();let e=g;A!==void 0&&(g=g<32?-((A<<5)+g):(A<<5)+g,I.highByte=A);let i=LI[g];return i&&i.isShared&&((LI.restoreStructures||(LI.restoreStructures=[]))[g]=i),LI[g]=I,I.read=S0(I,e),I.read()},lR=typeof self=="object"?self:global;$i[0]=()=>{};$i[0].noBuffer=!0;$i[101]=()=>{let g=Se();return(lR[g[0]]||Error)(g[1])};$i[105]=g=>{let A=TI.getUint32(kA-4);uB||(uB=new Map);let I=wg[kA],e;I>=144&&I<160||I==220||I==221?e=[]:e={};let i={target:e};uB.set(A,i);let t=Se();return i.used?Object.assign(e,t):(i.target=t,t)};$i[112]=g=>{let A=TI.getUint32(kA-4),I=uB.get(A);return I.used=!0,I.target};$i[115]=()=>new Set(Se());var cR=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(g=>g+"Array");$i[116]=g=>{let A=g[0],I=cR[A];if(!I)throw new Error("Could not find typed array for code "+A);return new lR[I](Uint8Array.prototype.slice.call(g,1).buffer)};$i[120]=()=>{let g=Se();return new RegExp(g[0],g[1])};$i[98]=g=>{let A=(g[0]<<24)+(g[1]<<16)+(g[2]<<8)+g[3],I=kA;kA+=A-4,Ut=[Se(),Se()],Ut.position0=0,Ut.position1=0;let e=kA;kA=I;try{return Se()}finally{kA=e}};$i[255]=g=>g.length==4?new Date((g[0]*16777216+(g[1]<<16)+(g[2]<<8)+g[3])*1e3):g.length==8?new Date(((g[0]<<22)+(g[1]<<14)+(g[2]<<6)+(g[3]>>2))/1e6+((g[3]&3)*4294967296+g[4]*16777216+(g[5]<<16)+(g[6]<<8)+g[7])*1e3):g.length==12?new Date(((g[0]<<24)+(g[1]<<16)+(g[2]<<8)+g[3])/1e6+((g[4]&128?-281474976710656:0)+g[6]*1099511627776+g[7]*4294967296+g[8]*16777216+(g[9]<<16)+(g[10]<<8)+g[11])*1e3):new Date("invalid");function DR(g){let A=da,I=kA,e=Vt,i=lo,t=aa,C=uB,o=Ut,B=new Uint8Array(wg.slice(0,da)),a=LI,s=LI.slice(0,LI.length),r=rt,Q=UQ,E=g();return da=A,kA=I,Vt=e,lo=i,aa=t,uB=C,Ut=o,wg=B,UQ=Q,LI=a,LI.splice(0,LI.length,...s),rt=r,TI=new DataView(wg.buffer,wg.byteOffset,wg.byteLength),E}function ay(){wg=null,uB=null,LI=null}function bW(g){g.unpack?$i[g.type]=g.unpack:$i[g.type]=g}var G0=new Array(147);for(let g=0;g<256;g++)G0[g]=+("1e"+Math.floor(45.15-g*.30103));var WD=new vc({useRecords:!1});WD.unpack;WD.unpackMultiple;WD.unpack;var YW=new Float32Array(1);new Uint8Array(YW.buffer,0,4);var Ac;try{Ac=new TextEncoder}catch{}var qc,k0,ZD=typeof Buffer<"u",pu=ZD?Buffer.allocUnsafeSlow:Uint8Array,dR=ZD?Buffer:Uint8Array,Nk=ZD?4294967296:2144337920,PA,Ue,FA=0,VC,zC=null,xW=/[\u0080-\uFFFF]/,ME=Symbol("record-id"),uR=class extends vc{constructor(g){super(g),this.offset=0;let A,I,e,i,t,C=0,o=dR.prototype.utf8Write?function(k,M,G){return PA.utf8Write(k,M,G)}:Ac&&Ac.encodeInto?function(k,M){return Ac.encodeInto(k,PA.subarray(M)).written}:!1,B=this;g||(g={});let a=g&&g.sequential,s=g.structures||g.saveStructures,r=g.maxSharedStructures;if(r==null&&(r=s?32:0),r>8160)throw new Error("Maximum maxSharedStructure is 8160");let Q=g.maxOwnStructures;Q==null&&(Q=s?32:64),a&&!g.saveStructures&&(this.structures=[]);let E=r>32||Q+r>64,n=r+64,h=r+Q+64;if(h>8256)throw new Error("Maximum maxSharedStructure + maxOwnStructure is 8192");let l=[],c=0,d=0;this.pack=this.encode=function(k,M){if(PA||(PA=new pu(8192),Ue=new DataView(PA.buffer,0,8192),FA=0),VC=PA.length-10,VC-FA<2048?(PA=new pu(PA.length),Ue=new DataView(PA.buffer,0,PA.length),VC=PA.length-10,FA=0):FA=FA+7&2147483640,A=FA,t=B.structuredClone?new Map:null,B.bundleStrings?(zC=["",""],PA[FA++]=214,PA[FA++]=98,zC.position=FA-A,FA+=4):zC=null,I=B.structures,I){I.uninitialized&&(I=B._mergeStructures(B.getStructures()));let G=I.sharedLength||0;if(G>r)throw new Error("Shared structures is larger than maximum shared structures, try increasing maxSharedStructures to "+I.sharedLength);if(!I.transitions){I.transitions=Object.create(null);for(let v=0;vVC&&f(FA),B.offset=FA;let G=TW(PA.subarray(A,FA),t.idsToInsert);return t=null,G}return M&OW?(PA.start=A,PA.end=FA,PA):PA.subarray(A,FA)}finally{if(I){if(d<10&&d++,c>1e4)I.transitions=null,d=0,c=0,l.length>0&&(l=[]);else if(l.length>0&&!a){for(let G=0,v=l.length;GG&&(I=I.slice(0,G));let v=PA.subarray(A,FA);return B.saveStructures(I,C)===!1?(B._mergeStructures(B.getStructures()),B.pack(k)):(C=G,v)}}M&_W&&(FA=A)}};let u=k=>{FA>VC&&(PA=f(FA));var M=typeof k,G;if(M==="string"){let v=k.length;if(zC&&v>=8&&v<4096){let O=xW.test(k);zC[O?0:1]+=k,PA[FA++]=193,u(O?-v:v);return}let N;v<32?N=1:v<256?N=2:v<65536?N=3:N=5;let b=v*3;if(FA+b>VC&&(PA=f(FA+b)),v<64||!o){let O,H,_,gA=FA+N;for(O=0;O>6|192,PA[gA++]=H&63|128):(H&64512)===55296&&((_=k.charCodeAt(O+1))&64512)===56320?(H=65536+((H&1023)<<10)+(_&1023),O++,PA[gA++]=H>>18|240,PA[gA++]=H>>12&63|128,PA[gA++]=H>>6&63|128,PA[gA++]=H&63|128):(PA[gA++]=H>>12|224,PA[gA++]=H>>6&63|128,PA[gA++]=H&63|128);G=gA-FA-N}else G=o(k,FA+N,b);G<32?PA[FA++]=160|G:G<256?(N<2&&PA.copyWithin(FA+2,FA+1,FA+1+G),PA[FA++]=217,PA[FA++]=G):G<65536?(N<3&&PA.copyWithin(FA+3,FA+2,FA+2+G),PA[FA++]=218,PA[FA++]=G>>8,PA[FA++]=G&255):(N<5&&PA.copyWithin(FA+5,FA+3,FA+3+G),PA[FA++]=219,Ue.setUint32(FA,G),FA+=4),FA+=G}else if(M==="number")if(k>>>0===k)k<64?PA[FA++]=k:k<256?(PA[FA++]=204,PA[FA++]=k):k<65536?(PA[FA++]=205,PA[FA++]=k>>8,PA[FA++]=k&255):(PA[FA++]=206,Ue.setUint32(FA,k),FA+=4);else if(k>>0===k)k>=-32?PA[FA++]=256+k:k>=-128?(PA[FA++]=208,PA[FA++]=k+256):k>=-32768?(PA[FA++]=209,Ue.setInt16(FA,k),FA+=2):(PA[FA++]=210,Ue.setInt32(FA,k),FA+=4);else{let v;if((v=this.useFloat32)>0&&k<4294967296&&k>=-2147483648){PA[FA++]=202,Ue.setFloat32(FA,k);let N;if(v<4||(N=k*G0[(PA[FA]&127)<<1|PA[FA+1]>>7])>>0===N){FA+=4;return}else FA--}PA[FA++]=203,Ue.setFloat64(FA,k),FA+=8}else if(M==="object")if(!k)PA[FA++]=192;else{if(t){let N=t.get(k);if(N){if(!N.id){let b=t.idsToInsert||(t.idsToInsert=[]);N.id=b.push(N)}PA[FA++]=214,PA[FA++]=112,Ue.setUint32(FA,N.id),FA+=4;return}else t.set(k,{offset:FA-A})}let v=k.constructor;if(v===Object)y(k,!0);else if(v===Array){G=k.length,G<16?PA[FA++]=144|G:G<65536?(PA[FA++]=220,PA[FA++]=G>>8,PA[FA++]=G&255):(PA[FA++]=221,Ue.setUint32(FA,G),FA+=4);for(let N=0;N>8,PA[FA++]=G&255):(PA[FA++]=223,Ue.setUint32(FA,G),FA+=4);for(let[N,b]of k)u(N),u(b)}else{for(let N=0,b=qc.length;N(PA=_,_=null,FA+=BA,FA>VC&&f(FA),{target:PA,targetView:Ue,position:FA-BA}),u)}finally{_&&(PA=_,Ue=gA,FA=CA,VC=PA.length-10)}AA&&(AA.length+FA>VC&&f(AA.length+FA),FA=HW(AA,PA,FA,H.type));return}}y(k,!k.hasOwnProperty)}}else if(M==="boolean")PA[FA++]=k?195:194;else if(M==="bigint"){if(k=-(BigInt(1)<0)PA[FA++]=207,Ue.setBigUint64(FA,k);else if(this.largeBigIntToFloat)PA[FA++]=203,Ue.setFloat64(FA,Number(k));else throw new RangeError(k+" was too large to fit in MessagePack 64-bit integer format, set largeBigIntToFloat to convert to float-64");FA+=8}else if(M==="undefined")this.encodeUndefinedAsNil?PA[FA++]=192:(PA[FA++]=212,PA[FA++]=0,PA[FA++]=0);else if(M==="function")u(this.writeFunction&&this.writeFunction());else throw new Error("Unknown type: "+M)},y=this.useRecords===!1?this.variableMapSize?k=>{let M=Object.keys(k),G=M.length;G<16?PA[FA++]=128|G:G<65536?(PA[FA++]=222,PA[FA++]=G>>8,PA[FA++]=G&255):(PA[FA++]=223,Ue.setUint32(FA,G),FA+=4);let v;for(let N=0;N{PA[FA++]=222;let G=FA-A;FA+=2;let v=0;for(let N in k)(M||k.hasOwnProperty(N))&&(u(N),u(k[N]),v++);PA[G+++A]=v>>8,PA[G+A]=v&255}:k=>{let M=Object.keys(k),G,v=i.transitions||(i.transitions=Object.create(null)),N=0;for(let O=0,H=M.length;O=96&&E?(PA[FA++]=((b-=96)&31)+96,PA[FA++]=b>>5):PA[FA++]=b;else{b=i.nextId,b||(b=64),b=h&&(b=n),i.nextId=b+1);let O=M.highByte=b>=96&&E?b-96>>5:-1;v[ME]=b,i[b-64]=M,b=0?(PA[FA++]=(b&31)+96,PA[FA++]=O):PA[FA++]=b):(O>=0?(PA[FA++]=213,PA[FA++]=114,PA[FA++]=(b&31)+96,PA[FA++]=O):(PA[FA++]=212,PA[FA++]=114,PA[FA++]=b),N&&(c+=d*N),l.length>=Q&&(l.shift()[ME]=0),l.push(v),u(M))}for(let O=0,H=M.length;O{let M;if(k>16777216){if(k-A>Nk)throw new Error("Packed buffer would be larger than maximum buffer size");M=Math.min(Nk,Math.round(Math.max((k-A)*(k>67108864?1.25:2),4194304)/4096)*4096)}else M=(Math.max(k-A<<2,PA.length-1)>>12)+1<<12;let G=new pu(M);return Ue=new DataView(G.buffer,0,M),PA.copy?PA.copy(G,0,A,k):G.set(PA.slice(A,k)),FA-=A,A=0,VC=G.length-10,PA=G}}useBuffer(g){PA=g,Ue=new DataView(PA.buffer,PA.byteOffset,PA.byteLength),FA=0}};k0=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,sR];qc=[{pack(g,A,I){let e=g.getTime()/1e3;if((this.useTimestamp32||g.getMilliseconds()===0)&&e>=0&&e<4294967296){let{target:i,targetView:t,position:C}=A(6);i[C++]=214,i[C++]=255,t.setUint32(C,e)}else if(e>0&&e<17179869184){let{target:i,targetView:t,position:C}=A(10);i[C++]=215,i[C++]=255,t.setUint32(C,g.getMilliseconds()*4e6+(e/1e3/4294967296>>0)),t.setUint32(C+4,e)}else if(isNaN(e)){if(this.onInvalidDate)return A(0),I(this.onInvalidDate());let{target:i,targetView:t,position:C}=A(3);i[C++]=212,i[C++]=255,i[C++]=255}else{let{target:i,targetView:t,position:C}=A(15);i[C++]=199,i[C++]=12,i[C++]=255,t.setUint32(C,g.getMilliseconds()*1e6),t.setBigInt64(C+4,BigInt(Math.floor(e)))}}},{pack(g,A,I){let e=Array.from(g),{target:i,position:t}=A(this.structuredClone?3:0);this.structuredClone&&(i[t++]=212,i[t++]=115,i[t++]=0),I(e)}},{pack(g,A,I){let{target:e,position:i}=A(this.structuredClone?3:0);this.structuredClone&&(e[i++]=212,e[i++]=101,e[i++]=0),I([g.name,g.message])}},{pack(g,A,I){let{target:e,position:i}=A(this.structuredClone?3:0);this.structuredClone&&(e[i++]=212,e[i++]=120,e[i++]=0),I([g.source,g.flags])}},{pack(g,A){this.structuredClone?Fk(g,16,A):Rk(ZD?Buffer.from(g):new Uint8Array(g),A)}},{pack(g,A){let I=g.constructor;I!==dR&&this.structuredClone?Fk(g,cR.indexOf(I.name),A):Rk(g,A)}},{pack(g,A){let{target:I,position:e}=A(1);I[e]=193}}];function Fk(g,A,I,e){let i=g.byteLength;if(i+1<256){var{target:t,position:C}=I(4+i);t[C++]=199,t[C++]=i+1}else if(i+1<65536){var{target:t,position:C}=I(5+i);t[C++]=200,t[C++]=i+1>>8,t[C++]=i+1&255}else{var{target:t,position:C,targetView:o}=I(7+i);t[C++]=201,o.setUint32(C,i+1),C+=4}t[C++]=116,t[C++]=A,t.set(new Uint8Array(g.buffer,g.byteOffset,g.byteLength),C)}function Rk(g,A){let I=g.byteLength;var e,i;if(I<256){var{target:e,position:i}=A(I+2);e[i++]=196,e[i++]=I}else if(I<65536){var{target:e,position:i}=A(I+3);e[i++]=197,e[i++]=I>>8,e[i++]=I&255}else{var{target:e,position:i,targetView:t}=A(I+5);e[i++]=198,t.setUint32(i,I),i+=4}e.set(g,i)}function HW(g,A,I,e){let i=g.length;switch(i){case 1:A[I++]=212;break;case 2:A[I++]=213;break;case 4:A[I++]=214;break;case 8:A[I++]=215;break;case 16:A[I++]=216;break;default:i<256?(A[I++]=199,A[I++]=i):i<65536?(A[I++]=200,A[I++]=i>>8,A[I++]=i&255):(A[I++]=201,A[I++]=i>>24,A[I++]=i>>16&255,A[I++]=i>>8&255,A[I++]=i&255)}return A[I++]=e,A.set(g,I),I+=i,I}function TW(g,A){let I,e=A.length*6,i=g.length-e;for(A.sort((t,C)=>t.offset>C.offset?1:-1);I=A.pop();){let t=I.offset,C=I.id;g.copyWithin(t+e,t,i),e-=6;let o=t+e;g[o++]=214,g[o++]=105,g[o++]=C>>24,g[o++]=C>>16&255,g[o++]=C>>8&255,g[o++]=C&255,i=t}return g}function iE(g){if(g.Class){if(!g.pack&&!g.write)throw new Error("Extension has no pack or write function");if(g.pack&&!g.type)throw new Error("Extension has no type (numeric code to identify the extension)");k0.unshift(g.Class),qc.unshift(g)}bW(g)}var pR=new uR({useRecords:!1});pR.pack;pR.pack;var OW=512,_W=1024,Kk=new uR({structuredClone:!0});iE({Class:lI.prototype.constructor,type:1,write(g){return{...g}},read(g){return Object.setPrototypeOf(g,lI.prototype),g}});iE({Class:_g.prototype.constructor,type:2,write(g){return[...g]},read(g){return Object.setPrototypeOf(g,_g.prototype),g}});iE({Class:ht.prototype.constructor,type:3,write(g){return[...g]},read(g){return Object.setPrototypeOf(g,ht.prototype),g}});iE({Class:yk.prototype.constructor,type:4,write(g){return g.id},read(g){return new yk(g)}});iE({Class:wk.prototype.constructor,type:5,write(g){return g.data},read(g){return new wk(g)}});iE({Class:Ci.prototype.constructor,type:6,write(g){return{...g}},read(g){return Object.setPrototypeOf(g,Ci.prototype),g}});function PW(g){var A=0;if(g.length===0)return A;for(let I=0;I{function A(i){return Kk.pack(i)}g.serialize=A;function I(i){return Kk.unpack(i)}g.deserialize=I;function e(i){return PW(A(ry(i))).toString()}g.checksum=e})(sy||(sy={}));var Jk;(g=>{function A(e){return e.type==="Conditional"?e.condition.type==="Distance"?"Distance":"StateChange":e.type}g.toEventUIType=A;function I(e){return e==="Distance"||e==="StateChange"?"Conditional":e}g.fromEventUIType=I})(Jk||(Jk={}));var Mt={LookAt:[],Follow:["Create"],DragDrop:["Transition","Animation","Audio","Create","SetVariable","DynamicVariablePlay","Conditional"],MouseHover:["Transition","Animation","Create","Destroy","SwitchCamera","SceneTransition","SetVariable","DynamicVariablePlay","Conditional"],Scroll:["Transition","Animation","Create","SetVariable","DynamicVariablePlay","Conditional"],Start:["Transition","Animation","Audio","Video","Create","Destroy","SwitchCamera","SceneTransition","SetVariable","DynamicVariablePlay","Conditional"],Conditional:["Transition","Animation","Audio","Video","Link","Create","Destroy","SwitchCamera","SceneTransition","Reset","SetVariable","DynamicVariablePlay","Conditional"],MouseDown:["Transition","Animation","Audio","Video","Link","Create","Destroy","SwitchCamera","SceneTransition","Reset","SetVariable","DynamicVariablePlay","Conditional"],MouseUp:["Transition","Animation","Audio","Video","Link","Create","Destroy","SwitchCamera","SceneTransition","Reset","SetVariable","DynamicVariablePlay","Conditional"],MousePress:["Transition","Animation","Audio","Video","Link","Create","SwitchCamera","SceneTransition","Reset","SetVariable","DynamicVariablePlay","Conditional"],KeyDown:["Transition","Animation","Audio","Video","Link","Create","Destroy","SwitchCamera","SceneTransition","Reset","SetVariable","DynamicVariablePlay","Conditional"],KeyUp:["Transition","Animation","Audio","Video","Link","Create","Destroy","SwitchCamera","SceneTransition","Reset","SetVariable","DynamicVariablePlay","Conditional"],KeyPress:["Transition","Animation","Audio","Video","Link","Create","SwitchCamera","Reset","SetVariable","DynamicVariablePlay","Conditional"],GameControl:["Transition","Animation","Audio","Create","Conditional"],Collision:["Transition","Animation","Audio","Video","Create","Destroy","Reset","SetVariable","DynamicVariablePlay","Conditional"],Trigger:["Transition","Audio","Video","Link","Create","Destroy","SwitchCamera","SceneTransition","Reset","SetVariable","DynamicVariablePlay","Conditional"],Resize:["Transition","Animation","Audio","Video","Create","Destroy","SwitchCamera","SceneTransition","Reset","SetVariable","DynamicVariablePlay","Conditional"],VariableChange:["Transition","Animation","Audio","Video","Link","Create","Destroy","SwitchCamera","SceneTransition","Reset","SetVariable","DynamicVariablePlay","Conditional"]},vk;(g=>{function A(e){return e.type==="MouseDown"||e.type==="MouseUp"||e.type==="MousePress"||e.type==="KeyDown"||e.type==="KeyUp"||e.type==="KeyPress"}g.is=A;function I(e){return e==="MouseDown"||e==="MouseUp"||e==="MousePress"?{type:e,mode:"Object",disabled:!1,runMode:"Once",actions:new _g}:{type:e,disabled:!1,key:void 0,runMode:"Once",actions:new _g}}g.defaultData=I})(vk||(vk={}));var Lc;(g=>{function A(I){return{type:"Property",value:[I??null,"position","x"]}}g.propertyDefaultData=A,g.valueDefaultData={type:"Literal",value:0}})(Lc||(Lc={}));var Qy;(g=>{function A(i){return{type:"Comparison",operator:"==",lOperand:Lc.propertyDefaultData(i),rOperand:{...Lc.valueDefaultData}}}g.comparisonDefaultData=A;function I(i){return{type:"Distance",toObject:i??null,fromObject:i??null,distance:200}}g.distanceDefaultData=I;function e(i,t){return{type:"State",object:i??null,state:t??null}}g.stateDefaultData=e})(Qy||(Qy={}));var qk;(g=>{function A(e){return e.type==="Conditional"}g.is=A;function I(e){return{type:"Conditional",disabled:!1,inActions:new _g,outActions:new _g,condition:Qy.distanceDefaultData(e)}}g.defaultData=I})(qk||(qk={}));var Lk;(g=>g.defaultData={type:"DragDrop",cursor:"hand",disabled:!1,dampingFactor:1,objects:[],snapTo:"center",snapSurfaceMode:"bbox",snapSurfaceOffset:0,dropOn:"all",autoOrient:!0,dropDestinations:[],plane:"adaptive",planeMode:"locked",referenceFrame:"global",limits:[-1/0,1/0,-1/0,1/0,-1/0,1/0],drop:!1,resetOnSnapFail:!1,snapSpeed:20,resetSpeed:20,dragDropActions:{drag:new _g,drop:new _g}})(Lk||(Lk={}));var Ey;(g=>g.defaultData={type:"Follow",disabled:!1,maxDelta:0,dampingFactor:1,target:"cursor",plane:"custom",resetOnPointerLeave:!0,resetAfterDistanceLimit:!0,enabledTranslation:[!0,!0,!0],limitDistanceEnabled:!1,limitDistance:1e3,snapDelay:0,resetSpeed:5,actions:new _g})(Ey||(Ey={}));var ny;(g=>g.defaultData={type:"LookAt",disabled:!1,distance:1e3,dampingFactor:1,target:"cursor",tilt:"up",axis:"z",plane:"custom",resetOnPointerLeave:!0,resetAfterDistanceLimit:!0,enabledRotation:[!0,!0,!0],limitDistanceEnabled:!1,limitDistance:1e3,snapDelay:0,resetSpeed:5})(ny||(ny={}));var bk;(g=>{function A(e){return e.type==="MouseHover"}g.is=A;function I(){return{type:"MouseHover",disabled:!1,actions:new _g}}g.defaultData=I})(bk||(bk={}));var Yk;(g=>{function A(e){return e.type==="Scroll"}g.is=A;function I(){return{type:"Scroll",disabled:!1,steps:100,trigger:"load",startFrom:"enter",enterAnchor:"top",startOffset:0,endAfter:400,actions:new _g}}g.defaultData=I})(Yk||(Yk={}));var xk;(g=>{function A(e){return e.type==="Start"}g.is=A;function I(){return{type:"Start",disabled:!1,actions:new _g}}g.defaultData=I})(xk||(xk={}));var Hk;(g=>{function A(e){return e.type==="Collision"}g.is=A;function I(){return{type:"Collision",disabled:!1,runMode:"Once",target:"character",actions:new _g}}g.defaultData=I})(Hk||(Hk={}));var Tk;(g=>{function A(e){return e.type==="Trigger"}g.is=A;function I(e,i){return{type:"Trigger",disabled:!1,runMode:"Once",target:"all",triggeringObjects:[],actions:new _g,triggerZone:"box",position:i.toArray(),rotation:[0,0,0],size:e.toArray(),radius:e.length()/2,helperVisible:!0}}g.defaultData=I})(Tk||(Tk={}));var hy;(g=>{g.defaultSizes={mobile:[480,480],tablet:[768,768],desktop:[1200,1200],custom:[769,1200]};function A(C){return C.type==="Resize"}g.is=A;function I(C){return typeof C=="string"?C:"custom"}g.sizeToDevice=I;function e(C){return typeof C=="string"?[...g.defaultSizes[C]]:[...C]}g.deviceToSize=e;function i(){let C={size:"mobile",operator:"<",actions:new _g},o={size:"tablet",operator:"<",actions:new _g},B={size:[...g.defaultSizes.custom],operator:"<>",actions:new _g},a=new _g;return a.push({id:vg.generateUUID(),fi:0,data:C},{id:vg.generateUUID(),fi:1,data:o},{id:vg.generateUUID(),fi:2,data:B}),{type:"Resize",disabled:!1,orientation:"horizontal",breakpoints:a}}g.defaultData=i;function t(){return{size:[...g.defaultSizes.custom],operator:"<>",actions:new _g}}g.defaultBreakpointData=t})(hy||(hy={}));var ly;(g=>{g.propertyPaths={Position:["position"],"Position X":["position","x"],"Position Y":["position","y"],"Position Z":["position","z"],Rotation:["rotation"],"Rotation X":["rotation","x"],"Rotation Y":["rotation","y"],"Rotation Z":["rotation","z"],Scale:["scale"],"Scale X":["scale","x"],"Scale Y":["scale","y"],"Scale Z":["scale","z"],Width:["width"],Height:["height"],Depth:["depth"],"Mouse Position X":["mouse","x"],"Mouse Position Y":["mouse","y"],"Mouse Pressed":["mouse","pressed"],"Screen Width":["mouse","width"],"Screen Height":["mouse","height"],"Hit Position X":["raycast","x"],"Hit Position Y":["raycast","y"],"Hit Position Z":["raycast","z"],"Hit Object Position X":["raycast","objX"],"Hit Object Position Y":["raycast","objY"],"Hit Object Position Z":["raycast","objZ"]};function A(e){return e.type==="VariableChange"}g.is=A;function I(){return{disabled:!1,type:"VariableChange",actions:new _g,variableId:"",objectId:null,property:"Position X"}}g.defaultData=I})(ly||(ly={}));var tE="personal camera",an="a218fcc3-276b-49b9-b485-49037fd14f5f",jW=2960946,CC=5526619,eQ;(g=>{function A(e,i){return e[0]===i[0]&&e[1]===i[1]}g.isEqual=A;function I(e,i,t){return[e[0]+(i[0]-e[0])*t,e[1]+(i[1]-e[1])*t]}g.lerp=I})(eQ||(eQ={}));var Gr;(g=>{function A(B,a){return B[0]===a[0]&&B[1]===a[1]&&B[2]===a[2]}g.isEqual=A;function I(B,a){return[B[0]+a[0],B[1]+a[1],B[2]+a[2]]}g.add=I;function e(B,a){return[B[0]-a[0],B[1]-a[1],B[2]-a[2]]}g.sub=e;function i(B,a){return[B[0]/a[0],B[1]/a[1],B[2]/a[2]]}g.div=i;function t(B,a){return[B[0]*a[0],B[1]*a[1],B[2]*a[2]]}g.mul=t;function C(B,a){return Math.hypot(B[0]-a[0],B[1]-a[1],B[2]-a[2])}g.dist=C;function o(B,a,s){return[B[0]+(a[0]-B[0])*s,B[1]+(a[1]-B[1])*s,B[2]+(a[2]-B[2])*s]}g.lerp=o})(Gr||(Gr={}));var bc;(g=>{function A(e,i){return e[0]===i[0]&&e[1]===i[1]&&e[2]===i[2]&&e[3]===i[3]}g.isEqual=A;function I(e,i,t){return[e[0]+(i[0]-e[0])*t,e[1]+(i[1]-e[1])*t,e[2]+(i[2]-e[2])*t,e[3]+(i[3]-e[3])*t]}g.lerp=I})(bc||(bc={}));var NQ;(g=>{g.identity=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function A(i,t){for(let C=0;C<16;C++)if(i[C]!==t[C])return!1;return!0}g.isEqual=A;function I(i){return i??g.identity}g.simplify=I;function e(i,t){let C=t.slice(0);for(var o=0,B=t.length;o{function A(B){return typeof B=="object"&&typeof B.r=="number"&&typeof B.g=="number"&&typeof B.b=="number"}g.isRGB=A,g.white={r:1,g:1,b:1},g.red={r:1,g:0,b:0},g.black={r:0,g:0,b:0};function I(B){return{r:Math.round(B.r*255),g:Math.round(B.g*255),b:Math.round(B.b*255),a:1}}g.toRgb255a1=I;function e(B){return{r:B.r,g:B.g,b:B.b}}g.clone=e;function i(B){return B=Math.floor(B),{r:(B>>16&255)/255,g:(B>>8&255)/255,b:(B&255)/255}}g.fromHex=i;function t(B){return Math.round(B.r*255)*65536+Math.round(B.g*255)*256+Math.round(B.b*255)}g.toHex=t;function C(B,a){return B.r===a.r&&B.g===a.g&&B.b===a.b}g.equals=C;function o(B,a,s){return{r:B.r+(a.r-B.r)*s,g:B.g+(a.g-B.g)*s,b:B.b+(a.b-B.b)*s}}g.lerp=o})(_i||(_i={}));var MC;(g=>{g.white={..._i.white,a:1},g.transparent={..._i.white,a:0};function A(C){return{r:C[0],g:C[1],b:C[2],a:C[3]}}g.from0to1=A;function I(C,o){return{..._i.fromHex(C),a:o}}g.fromHexAndA=I;function e(C){return{r:Math.round(C.r*255),g:Math.round(C.g*255),b:Math.round(C.b*255),a:C.a}}g.toRgb255a1=e;function i(C,o){return _i.equals(C,o)&&C.a===o.a}g.equals=i;function t(C,o,B){return{r:C.r+(o.r-C.r)*B,g:C.g+(o.g-C.g)*B,b:C.b+(o.b-C.b)*B,a:C.a+(o.a-C.a)*B}}g.lerp=t})(MC||(MC={}));var cy;(g=>g.identity={position:[0,0,0],rotation:[0,0,0],scale:[1,1,1]})(cy||(cy={}));var Ok;(g=>g.defaultData={mass:1,stiffness:80,damping:10,velocity:0})(Ok||(Ok={}));var _k;(g=>g.defaultData={control1:[.5,0],control2:[.5,1]})(_k||(_k={}));var Ia;(g=>(g.linear=[0,0,1,1],g.ease=[.25,.1,.25,1],g.easeIn=[.42,0,1,1],g.easeOut=[0,0,.58,1],g.easeInOut=[.42,0,.58,1]))(Ia||(Ia={}));function WW(g){return typeof g=="string"&&g.length===36?/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(g):!1}var Kr;(g=>{g.all=["PerspectiveCamera","OrthographicCamera"];function A(I){return g.all.includes(I)}g.is=A})(Kr||(Kr={}));var FQ;(g=>{g.DefaultUp=[0,1,0],g.DefaultTargetOffset=1e3,g.defaultData={far:1e5,type:"OrthographicCamera",perspective:{near:70,fov:45,zoom:1},orthographic:{near:-1e5,zoom:1},up:g.DefaultUp,isUpVectorFlipped:!1,targetOffset:g.DefaultTargetOffset};function A(I){return I.type==="PerspectiveCamera"?I.perspective.zoom:I.orthographic.zoom}g.getZoom=A})(FQ||(FQ={}));var ra;(g=>{function A(e,i=.1){return{disabled:!1,type:"linear",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]},toObject:{object:"",spreadType:"random",scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],axis:"x",seed:0,count:99,align:"normal"},linear:{scale:[1,1,1],rotation:[0,0,0],position:[e[0]+e[0]*i,0,0]},grid:{count:[2,2,2],size:e.map(t=>t*(1+i)),useCenter:!0},randomness:!1,randomnessObject:{strength:100,scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],movement:1,seed:0,freqScale:10,noiseType:"perlin"}}}g.defaultData=A;function I(e,i){let t={...e};if(yR.forEach(C=>{Object.assign(t,{[C]:i[C]??e[C]})}),t.radial={...e.radial},i.radial){let C=e.radial,o=i.radial;wR.forEach(B=>{Object.assign(t.radial,{[B]:o[B]??C[B]})})}if(t.linear={...e.linear},i.linear){let C=e.linear,o=i.linear;SR.forEach(B=>{Object.assign(t.linear,{[B]:o[B]??C[B]})})}if(t.grid={...e.grid},i.grid){let C=e.grid,o=i.grid;fR.forEach(B=>{Object.assign(t.grid,{[B]:o[B]??C[B]})})}if(t.toObject={...e.toObject},i.toObject){let C=e.toObject,o=i.toObject;GR.forEach(B=>{Object.assign(t.toObject,{[B]:o[B]??C[B]})})}if(t.randomnessObject={...e.randomnessObject},i.randomnessObject){let C=e.randomnessObject,o=i.randomnessObject;kR.forEach(B=>{Object.assign(t.randomnessObject,{[B]:o[B]??C[B]})})}return t}g.merge=I})(ra||(ra={}));var Dy;(g=>{g.defaultData={radial:{},linear:{},grid:{},toObject:{},randomnessObject:{}};let A=["radial","linear","grid","toObject","randomnessObject"];function I(e,i){let t=[];e.count!==void 0&&t.push({type:0,path:i,props:{count:e.count}});for(let C of A){let o=e[C];o&&Object.keys(o).length>0&&t.push({type:0,path:[...i,C],props:o})}return t}g.toOps=I})(Dy||(Dy={}));var yR=["count"],wR=["radius","start","end","position","scale","rotation"],SR=["position","scale","rotation"],fR=["count","size"],GR=["count","position","scale","rotation"],kR=["strength","scale","rotation","position","movement","seed","freqScale"],dy;(g=>{g.all=["PointLight","SpotLight","DirectionalLight","HemisphereLight"];function A(I){return g.all.includes(I)}g.is=A})(dy||(dy={}));var uy;(g=>{function A(e){return I(e)}g.defaultData=A;function I(e){if(e==="PointLight")return{type:e,color:MC.white,intensity:1,distance:2e3,decay:1,shadows:!0,shadowResolution:1024,shadowRadius:1,penumbraSize:.5,depth:1e5};if(e==="SpotLight")return{type:e,color:MC.white,intensity:1,distance:2e3,decay:1,shadows:!0,penumbra:0,angle:30/180*Math.PI,depth:1e5,penumbraSize:.5,shadowResolution:1024,shadowRadius:1};if(e==="DirectionalLight")return{type:e,color:MC.white,intensity:1,shadows:!0,size:2e3,depth:1e5,penumbraSize:.5,shadowResolution:1024,shadowRadius:1};throw new Error("not implemented")}})(uy||(uy={}));var RQ;(g=>g.defaultData={enabled:"visibility",fusedBody:!0,rigidBody:"positioned",density:1,pointMass:0,gravityScale:1,friction:.5,damping:0,restitution:.2,colliderType:"convex",enabledRotation:[!0,!0,!0],enabledTranslation:[!0,!0,!0]})(RQ||(RQ={}));var py;(g=>{g.defaultData={castShadow:!0,receiveShadow:!0};function A(I,e){return I.castShadow===e.castShadow&&I.receiveShadow===e.receiveShadow}g.equals=A})(py||(py={}));var yy;(g=>{g.defaultData={flatShading:!1,wireframe:!1,side:0};function A(I,e){return I.flatShading===e.flatShading&&I.side===e.side&&I.wireframe===e.wireframe}g.equals=A})(yy||(yy={}));var wy;(g=>g.defaultData={...yy.defaultData,...py.defaultData})(wy||(wy={}));var Pk;(g=>{function A(I,e){var t,C;let i=[];if("material"in I){let o=typeof I.material=="string"?e.materials[I.material]??((t=e.lib.materials[I.material])==null?void 0:t.asset):I.material;o&&i.push(o)}else if("materials"in I)for(let o of I.materials){let B=typeof o=="string"?e.materials[o]??((C=e.lib.materials[o])==null?void 0:C.asset):o;B&&i.push(B)}return i}g.getMaterialData=A})(Pk||(Pk={}));var Yc;(g=>(g.defaultVideo={data:"",thumb:"/_assets/_videos/catThumb.png",type:"video",name:"Cat video"},g.maxSize=3e7))(Yc||(Yc={}));var jk;(g=>{function A(I){return I==="texture"||I==="video"||I==="color"||I==="depth"||I==="normal"||I==="gradient"||I==="noise"||I==="fresnel"||I==="rainbow"||I==="toon"||I==="outline"||I==="transmission"||I==="matcap"||I==="displace"||I==="pattern"||I==="light"}g.is=A})(jk||(jk={}));function ZW(g){return g.type!=="displace"}var Wk;(g=>{function A(I){return I==="phong"||I==="toon"||I==="lambert"||I==="physical"}g.is=A})(Wk||(Wk={}));var MR=["mode","gradientType","noiseType","displacementType","projection","cnormal","crop","axis","side"],VW=["wrapping","image","video","name"],Bt;(g=>{function A(t,C){let{texture:o,...B}=C;if(Object.assign(t,B),o){let a=t.texture;a&&Object.assign(a,o)}}g.patch=A;function I(t,C){return t==="light"&&C?e(C):i(t)}g.defaultData=I;function e(t){let C={mode:0,isMask:!1,visible:!0,bumpMap:void 0,bumpMapIntensity:5,roughnessMap:void 0,alphaOverride:1};switch(t){case"phong":return{...C,category:"phong",specular:{r:.2,g:.2,b:.2},shininess:5,type:"light",visible:!0,mode:0,occlusion:!0,alpha:.6};case"toon":return{...C,category:"toon",specular:{r:.2,g:.2,b:.2},shininess:10,type:"light",alpha:1};case"lambert":return{...C,category:"lambert",emissive:{r:0,g:0,b:0},type:"light",alpha:1,visible:!0,mode:0,occlusion:!0};case"physical":return{...C,category:"physical",roughness:.2,metalness:.2,reflectivity:.2,type:"light",alpha:1,visible:!0,mode:0,occlusion:!0}}}function i(t){let C={alpha:1,mode:0,isMask:!1,visible:!0};switch(t){case"texture":return{...C,type:"texture",size:[128,128],blending:0,axis:"x",side:2,projection:0,texture:{image:"image_0",wrapping:1e3,repeat:[1,1],offset:[0,0]},crop:!1};case"video":return{...C,type:"video",size:[128,128],blending:0,axis:"x",side:2,projection:0,texture:{video:Yc.defaultVideo,wrapping:1001,repeat:[1,1],offset:[0,0]},crop:!1};case"color":return{...C,type:"color",color:_i.fromHex(CC)};case"depth":return{...C,type:"depth",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{...C,type:"normal",cnormal:[1,1,1]};case"gradient":return{...C,type:"gradient",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{...C,type:"noise",size:[100,100,100],noiseType:0,scale:1,move:1,colorA:{..._i.fromHex(6710886),a:1},colorB:{..._i.fromHex(6710886),a:1},colorC:{..._i.fromHex(16777215),a:1},colorD:{..._i.fromHex(16777215),a:1},distortion:[1,1],fA:[1.7,9.2],fB:[8.3,2.8],voronoiStyle:0,highCut:1,lowCut:0,smoothness:.3,seed:0,quality:1};case"fresnel":return{...C,type:"fresnel",color:MC.fromHexAndA(16777215,1),bias:.1,scale:1,intensity:2,factor:1};case"rainbow":return{...C,type:"rainbow",filmThickness:30,movement:0,wavelengths:[0,0,0],noiseStrength:0,noiseScale:1,offset:[0,0,0]};case"toon":return{...C,type:"toon",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:MC.fromHexAndA(0,0),offset:[0,0,0]};case"outline":return{...C,type:"outline",outlineColor:MC.fromHexAndA(0,1),contourColor:MC.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{...C,type:"matcap",texture:{image:"matcap_0",wrapping:1001,repeat:[1,1],offset:[0,0]}};case"transmission":return{...C,type:"transmission",thickness:10,ior:1.5,roughness:1};case"displace":return{visible:!0,type:"displace",displacementType:"noise",noiseType:0,scale:10,movement:1,offset:[0,0,0],intensity:8,voronoiStyle:0,smoothness:.3,seed:0,highCut:1,lowCut:0,quality:1};case"pattern":return{...C,type:"pattern",style:0,projection:0,axis:"y",blending:0,offset:[0,0],colorA:{..._i.fromHex(0),a:1},colorB:{..._i.fromHex(16777215),a:1},frequency:[10,10],size:.5,variation:0,smoothness:.5,zigzag:0,rotation:0,vertical:[0,1],horizontal:[0,1],sides:6}}}})(Bt||(Bt={}));var Ki;(g=>{function A(a){return!a.layers.some(s=>s.data.type==="texture"&&s.data.projection!==0||s.data.type==="depth"&&!s.data.isWorldSpace||s.data.type==="noise"||s.data.type==="displace")}g.isMergable=A;function I(a){let s="";return a.layers.forEach(r=>{Object.entries(r.data).forEach(([Q,E])=>{s+=`${Q}${E}`,Array.isArray(E)?E.forEach(n=>s+=`${n}`):typeof E=="object"?Object.values(E).forEach(n=>{typeof n=="number"?s+=`${n.toFixed(4)}`:s+=`${n}`}):s+=`${E}`})}),s}g.getHash=I;function e(){return{layers:new _g}}g.defaultEmptyData=e;function i(a="layer1",s="layer2"){return C("phong",a,s)}g.defaultData=i;function t(a,s){return{...a,name:s}}g.withName=t;function C(a,s="layer1",r="layer2"){let Q=new _g;return Q.push({fi:0,data:Bt.defaultData("light",a),id:s}),Q.push({fi:1,data:Bt.defaultData("color"),id:r}),{layers:Q}}g.defaultTwoLayerData=C;function o(a,s="phong",r="layer1",Q="layer2"){let E=Bt.defaultData("texture");Object.assign(E.texture,{image:a});let n=new _g;return n.push({fi:0,data:E,id:r}),n.push({fi:1,data:Bt.defaultData("light",s),id:Q}),{layers:n}}g.defaultTwoLayerTextureData=o;function B(a,s="phong",r="layer1",Q="layer2"){let E=Bt.defaultData("video");Object.assign(E.texture,{video:a});let n=new _g;return n.push({fi:0,data:E,id:r}),n.push({fi:1,data:Bt.defaultData("light",s),id:Q}),{layers:n}}g.defaultTwoLayerVideoTextureData=B})(Ki||(Ki={}));var xc;(g=>{function A(){return{points:new _g,roundness:0,shapeHoles:[],isClosed:!1}}g.defaultData=A})(xc||(xc={}));var Hc;(g=>{function A(){return{points:new _g,lastInsertionPlane:null,subdivisions:12,isClosed:!1}}g.defaultData=A})(Hc||(Hc={}));var mR={type:"Ellipse",width:50,height:50,spikes:16,angle:360,innerRadius:0},Sy;(g=>{function A(I,e){let i={...I};return NR.forEach(t=>{Object.assign(i,{[t]:e[t]??I[t]})}),i}g.merge=A})(Sy||(Sy={}));var UR={shape:mR,depth:1,offset:0,bevel:50,bevelSides:6,angle:0,twist:0,startScale:1,endScale:1,capType:"flat"},NR=["depth","offset","angle","twist","startScale","endScale"],Tc;(g=>{function A(e){return e==="PolygonGeometry"||e==="RectangleGeometry"||e==="StarGeometry"||e==="TriangleGeometry"||e==="EllipseGeometry"}g.is2DParametricMesh=A;function I(e){return e==="PolygonGeometry"||e==="PolygonGeometry"||e==="RectangleGeometry"||e==="StarGeometry"||e==="TriangleGeometry"||e==="EllipseGeometry"||e==="PathGeometry"||e==="VectorGeometry"||e==="ConeGeometry"||e==="CubeGeometry"||e==="CylinderGeometry"||e==="DodecahedronGeometry"||e==="HelixGeometry"||e==="IcosahedronGeometry"||e==="LatheGeometry"||e==="PyramidGeometry"||e==="SphereGeometry"||e==="PlaneGeometry"||e==="BackdropGeometry"||e==="TorusGeometry"||e==="TorusKnotGeometry"||e==="BooleanGeometry"||e==="TextGeometry"}g.isParametricMesh=I})(Tc||(Tc={}));var fy;(g=>{function A(I,e){let i={...I};return Object.assign(i,e),i.type==="PathGeometry"&&"extrusion"in e&&e.extrusion&&(i.extrusion={...I.extrusion},Object.assign(i.extrusion,Sy.merge(i.extrusion,e.extrusion))),i}g.merge=A})(fy||(fy={}));var rQ;(g=>{function A(I){if(I==="RectangleGeometry")return{width:320,height:320,type:I,cornerRadius:[0,0,0,0],cornerType:0,depth:0,extrudeBevelSize:0,extrudeBevelSegments:1};if(I==="PathGeometry")return{type:I,width:1,height:1,depth:1,path:Hc.defaultData(),extrusion:UR};if(I==="VectorGeometry")return{width:1,height:1,type:I,subdivisions:12,shape:xc.defaultData(),depth:0,extrudeBevelSize:0,extrudeBevelSegments:1};if(I==="BooleanGeometry")return{type:I,operation:2,width:0,height:0,depth:0,phongAngle:35};if(I==="TextGeometry")return{type:I,width:100,height:100,depth:0,horizontalAlign:1,verticalAlign:1,fontSize:16,lineHeight:1.2,letterSpacing:0,text:{textValue:""},textTransform:1,font:"Roboto_regular",extrudeBevelSize:0,extrudeBevelSegments:1};if(I==="SphereGeometry")return{type:"SphereGeometry",width:100,height:100,depth:100,widthSegments:64,heightSegments:64,phiStart:0,phiLength:2*Math.PI,thetaStart:0,thetaLength:180};throw new Error("not implemented")}g.defaultData=A})(rQ||(rQ={}));var Zk=["width","height","depth"],Gy;(g=>g.defaultData={enabled:!1,useBackgroundColor:!1,color:_i.white,near:.1,far:2e3})(Gy||(Gy={}));var Oc;(g=>{let A={opacity:1,blendFunction:13,enabled:!1};g.defaultData={enabled:!1,pixelation:{...A,blendFunction:16,granularity:15},bloom:{...A,blendFunction:16,intensity:1,blurScale:1,luminanceThreshold:.25,luminanceSmoothing:.025,kernelSize:3},chromaticAberration:{...A,offset:[2,2]},vignette:{...A,darkness:1,offset:0},hueSaturation:{...A,hue:3,saturation:0},brightnessContrast:{...A,brightness:.25,contrast:0},depthOfField:{...A,focalLength:2,focusDistance:2,bokehScale:2},noise:{...A,blendFunction:16}}})(Oc||(Oc={}));var ky;(g=>g.defaultData={softShadowQuality:"low"})(ky||(ky={}));var My;(g=>g.defaultData={enabled:!0,color:{r:.8274509803921568,g:.8274509803921568,b:.8274509803921568},intensity:.75})(My||(My={}));var my;(g=>g.defaultData={occlusion:!1,aoFullRes:!1,radius:256,bias:.5,aoColor:{r:.19607843137254902,g:.19607843137254902,b:.19607843137254902}})(my||(my={}));var KQ;(g=>g.defaultData={usePhysics:!1,gravity:-10})(KQ||(KQ={}));var Uy;(g=>g.defaultData={playCamera:tE,gameControlObject:null})(Uy||(Uy={}));var Ny;(g=>g.defaultData={backgroundColor:MC.fromHexAndA(jW,1),postprocessing:Oc.defaultData,fog:Gy.defaultData,globalPhysics:KQ.defaultData,ambient:My.defaultData,ao:my.defaultData,shadow:ky.defaultData,publish:Uy.defaultData})(Ny||(Ny={}));var Vk;(g=>{function A(e){return e==="Component"||e==="Instance"}g.isComponentRelated=A;function I(e){return e==="Empty"||e==="Instance"}g.isEmptyOrComponent=I})(Vk||(Vk={}));var JQ;(g=>{g.identity={...cy.identity,hiddenMatrix:NQ.identity};function A(i){return{position:i.position,rotation:i.rotation,scale:i.scale,hiddenMatrix:i.hiddenMatrix}}g.fromObject=A;function I(i,t){return{position:(t==null?void 0:t.position)||i.position,rotation:(t==null?void 0:t.rotation)||i.rotation,scale:(t==null?void 0:t.scale)||i.scale,hiddenMatrix:(t==null?void 0:t.hiddenMatrix)||i.hiddenMatrix}}g.merge=I;function e(i,t){return iW({position:Gr.isEqual(i.position,t.position)?void 0:t.position,rotation:Gr.isEqual(i.rotation,t.rotation)?void 0:t.rotation,scale:Gr.isEqual(i.scale,t.scale)?null:t.scale,hiddenMatrix:NQ.isEqual(i.hiddenMatrix,t.hiddenMatrix)?void 0:t.hiddenMatrix})}g.diff=e})(JQ||(JQ={}));var Xi;(g=>g.defaultData={states:new _g,events:new _g,visible:!0,raycastLock:!1,physics:RQ.defaultData,pathSnapping:{pathId:null,slide:0,offset:0,orientation:"tangential"},...JQ.identity,cloner:null})(Xi||(Xi={}));var Fy;(g=>g.defaultData={type:"Empty",...Xi.defaultData})(Fy||(Fy={}));var zk;(g=>g.defaultData={type:"Component",...Xi.defaultData})(zk||(zk={}));var sQ;(g=>g.defaultData={type:"Mesh",...Xi.defaultData,...wy.defaultData})(sQ||(sQ={}));var mn;(g=>g.defaultData={...Xi.defaultData,...JQ.identity,position:[0,0,FQ.DefaultTargetOffset],...FQ.defaultData})(mn||(mn={}));var Ry;(g=>{function A(I){return{...Xi.defaultData,...uy.defaultData(I)}}g.defaultData=A,g.defaultDirectionalLightData={...g.defaultData("DirectionalLight"),position:[200,300,300],name:"Directional Light",intensity:.7}})(Ry||(Ry={}));var _c;(g=>{function A(e,i,t=0){for(;t{g.rootOverrideProps=["physics","events"],g.compositeNonOptionalOverrideProps=["geometry"],g.compositeEntireOverrideOverrideProps=["material"];function A(e,i){return{...Xi.defaultData,...i,component:e,overrides:new Ci,physics:void 0,events:void 0,type:"Instance"}}g.ofComponent=A;function I(e){let i=JQ.fromObject(e.data);return A(e.id,i)}g.fromComponentData=I})(sa||(sa={}));var vQ;(g=>g.defaultData={type:"Page",...Xi.defaultData,physics:{...RQ.defaultData,fusedBody:!1},...Ny.defaultData,camera:mn.defaultData})(vQ||(vQ={}));var Ky;(g=>(g.defaultCamera={position:[0,0,1e3],scale:[1,1,1],rotation:[0,0,0],hiddenMatrix:NQ.identity,name:"Play Camera",visible:!0,raycastLock:!1,physics:RQ.defaultData,states:new _g,events:new _g,cloner:null,pathSnapping:{pathId:null,orientation:"tangential",slide:0,offset:0},...FQ.defaultData},g.KeysByResetCategory={States:["states"],Events:["events"],Material:["material","materials"],Geometry:["geometry"],Position:["position"],Rotation:["rotation"],Scale:["scale"],Transform:["position","scale","rotation","hiddenMatrix"],Name:["name"],Visibility:["visible","raycastLock","flatShading","wireframe","side"],Shadows:["castShadow","receiveShadow"],Cloner:["cloner"],Physics:["physics"]},g.defaultMeshObject={name:"Rectangle",...Xi.defaultData,...sQ.defaultData,geometry:rQ.defaultData("RectangleGeometry"),material:Ki.defaultTwoLayerData("phong","layer1","layer2")},g.defaultBooleanObject={name:"Boolean",...Xi.defaultData,...sQ.defaultData,geometry:rQ.defaultData("BooleanGeometry"),material:Ki.defaultTwoLayerData("phong","layer1","layer2")},g.defaultTextObject={name:"Text",...Xi.defaultData,...sQ.defaultData,geometry:rQ.defaultData("TextGeometry"),material:Ki.defaultTwoLayerData("phong","layer1","layer2")}))(Ky||(Ky={}));var cr;(g=>{function A(t,C){let o={name:C};return t.type==="Mesh"?(o.geometry={},"material"in t&&(o.material={layers:new Ci}),"materials"in t&&(o.materials=t.materials.map(B=>({layers:new Ci})))):Kr.is(t.type)&&(o.perspective={},o.orthographic={}),o}g.newEmpty=A;function I(t,C){if(C===void 0)return t;let o={...t};return"material"in o&&"material"in C&&C.material&&(o.material=Mn(o.material,B=>{if(typeof B!="string")for(let[a,s]of Object.entries(C.material.layers)){let r=B.layers.data(a);r&&Bt.patch(r,s)}}).data),o.materials&&C.materials&&(o.materials=Mn(o.materials,B=>{var a,s;for(let r=0;r0){let c={path:[...r,"layers",E,"texture"],props:h,type:0};B.push(c)}if(Object.keys(l).length>0){let c={path:[...r,"layers",E],props:l,type:0};B.push(c)}}}for(let[r,Q]of Object.entries(C))if(r!=="name")if(r==="cloner")B.push(...Dy.toOps(Q,["cloner"]));else if(r==="pathSnapping")B.push({path:[r],props:{slide:Q.slide,offset:Q.offset},type:0});else if(r==="material")s(["material"],Q);else if(r==="materials")for(let[E,n]of Object.entries(Q))s(["materials",E],n);else if(a[r]===0){if(r==="geometry"&&Q.extrusion!==void 0){let E={path:[r,"extrusion"],props:Q.extrusion,type:0};B.push(E),Q={...Q},delete Q.extrusion}if(Object.keys(Q).length>0){let E={path:[r],props:Q,type:0};B.push(E)}}else o===void 0&&(o={path:[],props:{},type:0},B.push(o)),o.props[r]=Q;return B}g.toOps=e;function i(t,C){var B,a,s,r,Q,E;if(C===void 0)return t;let o={...t};if(Object.assign(o,JQ.merge(o,C)),Object.assign(o,{pathSnapping:Object.assign({},o.pathSnapping,{slide:((B=C.pathSnapping)==null?void 0:B.slide)??((a=o.pathSnapping)==null?void 0:a.slide)??0,offset:((s=C.pathSnapping)==null?void 0:s.offset)??((r=o.pathSnapping)==null?void 0:r.offset)??0})}),Kr.is(t.type)){o.orthographic={...o.orthographic},o.perspective={...o.perspective};let n=C;((Q=n.orthographic)==null?void 0:Q.zoom)!==void 0&&(o.orthographic.zoom=n.orthographic.zoom),((E=n.perspective)==null?void 0:E.zoom)!==void 0&&(o.perspective.zoom=n.perspective.zoom),n.isUpVectorFlipped!==void 0&&(o.isUpVectorFlipped=n.isUpVectorFlipped),n.targetOffset!==void 0&&(o.targetOffset=n.targetOffset)}else if(t.type==="Mesh")"geometry"in C&&Object.assign(o,{geometry:fy.merge(o.geometry,C.geometry)}),(C.material||C.materials)&&(o=I(o,C)),o.cloner&&"cloner"in C&&Object.assign(o,{cloner:ra.merge(o.cloner,C.cloner)});else if(t.type==="Empty")o.cloner&&"cloner"in C&&Object.assign(o,{cloner:ra.merge(o.cloner,C.cloner)});else if(dy.is(t.type)){let n=C;n.intensity!==void 0&&(o.intensity=n.intensity),n.color!==void 0&&(typeof n.color=="string"?o.color=n.color:o.color=_i.clone(n.color))}return o}g.patch=i})(cr||(cr={}));var Pc;(g=>g.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,hoverRotateDamping:.125,isTouchZoom:!0,orbitTouches:2,panTouches:3,resetHoverEffectOnPointerLeave:!0})(Pc||(Pc={}));var kr;(g=>g.defaultData={orbitControls:Pc.defaultData,playPage:an,withBackground:!0,preventScroll:!1,preventTouchScroll:!1,hideCursor:!1,mouseEventTarget:"canvas",joystickSizeAndXYOffset:Array(12).fill(0).map((A,I)=>{let e=0,i=0;return I<5?i=-30:I<10&&(i=30),I===0||I===10||I===5?e=30:(I===4||I===11||I===9)&&(e=-30),[120,[e,i],"show"]}),settings:{image:{format:"jpg",ratio:1},video:{format:"mp4",imageFormat:"jpg",fps:30,mbps:80,ratio:Math.max(1,typeof window<"u"?Math.floor(window.devicePixelRatio):1),stopMode:"manual",duration:5e3},web:{logo:!0,compress:!0,preset:1,preload:!0,hint:!1}},stopRaycast:!0,hdTransmission:!1})(kr||(kr={}));var Jy;(g=>g.defaultData={id:"basic",label:"Basic",style:"None",prompt:""})(Jy||(Jy={}));var vy;(g=>g.defaultData={weather:0,shadows:0,lightOrigin:0,temperature:0,sun:0,camera:0,environment:0,particles:0,nature:0,floor:0})(vy||(vy={}));var QQ;(g=>(g.defaultData=()=>({mode:"line-art-both",prompt:"",negativePrompt:"",style:{...Jy.defaultData},isRandomSeed:!0,seed:g.generateSeed(),guessMode:!1,advanced:!1,steps:20,guidanceScale:7.5,controlNetScale:1,modifiers:vy.defaultData}),g.generateSeed=()=>Math.round(Math.random()*1e5)))(QQ||(QQ={}));var Un;(g=>{function A(e){return e.find(i=>i.data.type==="Page"&&i.data.globalPhysics.usePhysics)!==void 0}g.physicsEnabled=A;function I(e,i,t){e.scene.objects.traverseFrom(i,(C,o)=>{var B;if(o.type==="Instance"){let a=(B=Vc.getComponentData(e,o.component))==null?void 0:B.data;a&&t(C,o,a.events)}else t(C,o,o.events)})}g.traverseModuleInstances=I})(Un||(Un={}));var EQ;(g=>{g.TRASH_CAN_ID="830a2708-8ed9-49cf-a68e-085299892222";function A(i={withLight:!0,withSquare:!0}){let t=[],C=Ky.defaultMeshObject;i.withLight===!0&&t.push({fi:-1,data:Ry.defaultDirectionalLightData,id:"830a2708-8ed9-49cf-a68e-085299899103",children:[]}),i.withSquare===!0&&t.push({fi:1,id:"7ba78968-2a55-48f2-b14c-5191da3e075e",data:C,children:[]});let o=new ht;return o.push({fi:1,id:an,data:{...vQ.defaultData,name:"Scene 1"},children:t}),o}g.defaultData={objects:A(),publish:kr.defaultData,styles:QQ.defaultData()},g.emptyDataWithoutPage=function(){return{objects:new ht,publish:kr.defaultData,styles:QQ.defaultData()}},g.emptyDataWithPage=function(i){return{objects:A(i),publish:kr.defaultData,styles:QQ.defaultData()}};function I(i){return{...g.defaultData,objects:SB(i,ht.prototype)}}g.withObjs=I;function e(i,t){return I([{id:i,data:t,children:[],fi:0}])}g.withObj=e})(EQ||(EQ={}));var rn;(g=>g.defaultData={preset:"fullscreen",allowResponsive:!1,size:[512,512],coords:[0,0],sceneScale:1,color:{r:0,g:0,b:0,a:.5}})(rn||(rn={}));var jc;(g=>g.emptyImage={data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVQYV2NgYAAAAAMAAWgmWQ0AAAAASUVORK5CYII=",name:"empty"})(jc||(jc={}));var Jt;(g=>{function A(C){return C.textValue!==void 0}g.isTextValue=A;function I(C){return typeof C=="number"}g.isNumber=I;function e(C){return typeof C=="boolean"}g.isBoolean=e;function i(C){return A(C)?"string":e(C)?"boolean":"number"}g.typeOfVariable=i;function t(C){return g.isTextValue(C)?Array.isArray(C.textValue)?C.textValue.map(o=>o.toString().padStart(C.padding??2,"0")).join(C.deliminator??":")+(C.suffix!==void 0?" "+C.suffix:""):C.textValue.toString():g.isBoolean(C)?C?"True":"False":g.isNumber(C)?parseFloat(C.toFixed(3)).toString():C.toString()}g.getDisplayedValue=t})(Jt||(Jt={}));var qy;(g=>g.all=["images","videos","colors","audios","fonts","materials","variables"])(qy||(qy={}));var Xk;(g=>g.all=[...qy.all,"components"])(Xk||(Xk={}));var $k;(g=>{function A(){return{images:new lI,videos:new lI,colors:new lI,audios:new lI,fonts:new lI,materials:new lI,components:new lI,variables:new lI}}g.defaultData=A})($k||($k={}));var qQ;(g=>{function A(){return{images:new lI,videos:new lI,colors:new lI,audios:new lI,fonts:new lI,materials:new lI,components:new lI,variables:new lI}}g.defaultData=A})(qQ||(qQ={}));var fC;(g=>{function A(){let C={};return C["89b10010-844c-11ec-a8a3-0242ac120002"]={r:.5,g:.5,b:.5,a:1,name:"Default Color"},SB(C,lI.prototype)}g.defaultColors=A;function I(C){let o={};return C!=null&&C.withAITexture&&(o["a1b10010-844c-a8a3-11ec-0242ac2011ec"]={...jc.emptyImage,name:"AI generated image"}),SB(o,lI.prototype)}g.defaultImages=I;function e(){return{catelogs:new lI,materials:new lI,images:new lI,videos:new lI,colors:new lI,audios:new lI,fonts:new lI,variables:new _g,lib:qQ.defaultData()}}g.emptyData=e;function i(C){switch(C){case"number":return{value:0,name:"Number"};case"boolean":return{value:!1,name:"Boolean"};case"string":return{value:{textValue:"String value"},name:"String"};case"time":let o=[0,0,0];return{name:"Time",value:{textValue:o,deliminator:":",padding:2,suffix:"AM"},dynamicVariableType:"time",format:"HH:mm:ss",format12h24h:"12ampm",timeZone:null,hasEnd:!1,endValue:{textValue:o,deliminator:":",padding:2,suffix:"AM"},autoStart:!0,repeat:!1};case"counter":return{name:"Counter",value:0,dynamicVariableType:"counter",updateInterval:1e3,increment:1,autoStart:!0,hasEnd:!0,endValue:60,repeat:!0,randomStart:!1,range:[0,100],decimals:0};case"random":return{name:"Random",value:0,dynamicVariableType:"random",updateInterval:1e3,increment:1,autoStart:!0,isStatic:!1,hasEnd:!0,endValue:60,repeat:!0,min:0,max:100,decimals:0};default:console.error("Unknown variable type",C)}}g.defaultVariables=i;function t(C,o){if(o.format==="HH:mm:ss"){let B=Math.floor(C/3600),a=Math.floor((C-B*3600)/60),s=Math.round(C-B*3600-a*60);return{textValue:[B,a,s]}}else if(o.format==="mm:ss"){let B=Math.floor(C/60),a=Math.round(C-B*60);return{textValue:[B,a]}}else return o.format==="number"?C=Math.round(C):C=Math.round(C*1e3)/1e3,C}g.getFormattedTimerTime=t})(fC||(fC={}));var Wc;(g=>g.list=["idle","move","jump","run"])(Wc||(Wc={}));var Zc;(g=>(g.defaultColliderData={type:"capsule",height:200,radius:50,position:[0,0,0],rotation:[0,0,0]},g.defaultDataThirdPerson={moveMode:"walk",forwardDirection:"+z",speedTranslate:1e3,speedRotate:100,runMultiplier:2,rotationMode:"normal",rotBy:"keys",rotByTouch:"drag",delayPos:[.3,.3],delayRot:[.3,.3],keyAssignments:[["moveNegZ","W"],["moveNegX","A"],["movePosZ","S"],["movePosX","D"],["rotPosX","▲"],["rotPosY","◀"],["rotNegX","▼"],["rotNegY","▶"],["jump","Space"],["run","⇧"],["none","Ctrl"]],touchControl:!0,joystickPosLoc:5,joystickRotLoc:11,jumpTouchButtonLoc:9,collider:g.defaultColliderData,colliderHelperVisible:!0,collisionEnabled:!0,jumpPower:100,resetYPosition:3e3,alignToGround:!1,autoOrientMove:!0,orientWith:"camera",orientMode:"radial",delayPosCamera:.3,delayRotCamera:.3,camera:"",cameraXAxis:"Limit",cameraYAxis:"Free",cameraRotXLimits:[0,Math.PI/2],cameraRotYLimits:[-Math.PI/2,Math.PI/2],gameActions:{idle:new _g,move:new _g,jump:new _g,run:new _g},navmesh:{enabled:!1,ch:6,cs:6,walkableClimb:5,walkableHeight:1,walkableRadius:0,zones:"all",objects:[],helperVisible:!0,destinationHelperRadius:0,destinationHelperColor:MC.fromHexAndA(3728051,1)}}))(Zc||(Zc={}));function AM(g){g.layers.forEach(A=>{if(A.type==="depth"&&A.colorA!==void 0){let I=A.colorA,e=A.colorB,i=[[I.r,I.g,I.b,I.a],[e.r,e.g,e.b,e.a]],t=[0,1];for(let o=2;o<10;o++)i.push(i[1]),t.push(1);let C={...dB(We(A),"type","visible","isVector","isWorldSpace","origin","alpha","mode"),near:Math.max(0,A.near),far:Math.max(0,A.far),colors:i,steps:t,num:2,direction:[1,0,0],smooth:!1,gradientType:1};Object.assign(A,C)}else if(A.type==="depth"&&A.gradientType===1&&(A.near<0||A.far<0)){let I={...We(A),near:Math.max(A.near,0),far:Math.max(A.far,0)};Object.assign(A,I)}})}function ea(g,A){Object.values(g.shared.materials).forEach(I=>A(I))}function ia(g,A){g.scene.objects.traverse((I,e)=>{"materials"in e?e.materials.forEach((i,t)=>{i===void 0&&(e.materials[t]=Ki.defaultData(),i=e.materials[t]),typeof i!="string"&&A(i)}):"material"in e?typeof e.material!="string"&&(e.material===void 0&&(e.material=Ki.defaultData()),A(e.material)):e.type==="Mesh"&&(e.material===void 0&&(e.material=Ki.defaultData()),A(e.material)),"overrides"in e&&Object.values(e.overrides).forEach(i=>{i.material&&typeof i.material!="string"&&A(i.material)})})}function zW(g){Object.assign(g.scene.publish,{orbitControls:{...Pc.defaultData,...We(g.scene.publish.orbitControls)}})}function XW(g){Object.assign(g.scene.publish.settings,{video:{...kr.defaultData.settings.video,...We(g.scene.publish.settings.video)}})}function $W(g){function A(I){if(I.layers){for(let e of Object.values(I.layers))if(e){for(let[i,t]of Object.entries(e))if((MR.includes(i)||typeof t=="boolean")&&delete e[i],i==="texture")for(let[C,o]of Object.entries(t))(VW.includes(C)||typeof o=="boolean")&&delete t[C]}}}g.scene.objects.traverse((I,e)=>{e.states.forEach(i=>{let t=i;t.material?A(t.material):t.materials&&t.materials.forEach(C=>{A(C)})})})}function A5(g){g.scene.publish.withBackground=!0}function g5(g){g.scene.publish.settings.web={compress:!0,preload:!0,preset:1,logo:!0,hint:!1}}function I5(g){g.scene.objects.traverse((A,I)=>{let e=I.cloner;e&&(e.radial.scale=e.radial.scale.map(i=>i+1),e.linear.scale=e.linear.scale.map(i=>i+1))})}function e5(g){g.scene.objects.traverse((A,I)=>{let e=I.geometry;e&&(e.type==="DodecahedronGeometry"||e.type==="IcosahedronGeometry")&&(e.detail=Math.round(e.detail))})}function i5(g){g.scene.objects.traverse((A,I)=>{let e=g.scene.objects.unproxy().parent(A);if(e){let i=We(g.scene.objects.data(e));i&&i.type==="Mesh"&&i.geometry.type==="BooleanGeometry"&&I.type==="Mesh"&&(I.visible=We(I).booleanExclude!==!0)}})}function t5(g){g.scene.objects.traverse((A,I)=>{if(I.type==="Mesh"){let e=I;I.geometry.type==="NonParametricGeometry"?e.material!==void 0&&delete e.material:e.materials!==void 0&&delete e.materials}})}function C5(g){function A(e){Object.setPrototypeOf(e,Ci.prototype),e.texture&&Object.setPrototypeOf(e.texture,Ci.prototype)}function I(e){Object.setPrototypeOf(e,Ci.prototype);for(let i in e)A(e[i])}g.scene.objects.traverse((e,i)=>{i.states.forEach(t=>{let C=t;if(C.material){let o=We(C.material).layers;I(o),C.material.layers=o}if(C.materials)for(let o=0;o{if(A.type==="depth"&&A.colors.length===10){let I=[...A.colors];I.push(A.colors[9]);let e=[...A.steps];e.push(A.steps[9]);let i={...We(A),colors:I,steps:e};Object.assign(A,i)}})}function o5(g){g.scene.objects.traverse((A,I)=>{I.type==="Mesh"&&(I.geometry.type==="BooleanGeometry"||I.geometry.type==="SubdivGeometry")&&(I.geometry.phongAngle=35)})}function IM(g){g.scene.objects.traverse((A,I)=>{"materials"in I?I.materials.forEach(e=>{typeof e!="string"&&yu(e)}):"material"in I&&typeof I.material!="string"&&yu(I.material)}),Object.values(g.shared.materials).forEach(A=>yu(A))}function B5(g){g.scene.environment.ambientLight.softShadows=!1,g.scene.environment.ambientLight.softShadowQuality="low",g.scene.objects.traverse((A,I)=>{(I.type==="DirectionalLight"||I.type==="SpotLight")&&(I.shadowResolution=1024,I.shadowRadius=1,I.depth=1e5)}),g.shared.penumbraSize=new Array(5).fill(.5)}function a5(g){g.shared.audios=SB({},lI.prototype)}function r5(g){g.shared.videos=SB({},lI.prototype)}function s5(g){let A=g.shared.materials;Object.entries(A).forEach(([I,e])=>{if(!e.layers){let i={name:"Untitled Material",layers:[{fi:0,data:{type:"light",category:"phong",alpha:.6,visible:!0,mode:0,specular:{r:.2,g:.2,b:.2},shininess:5},id:"layer1"},{fi:1,data:{type:"color",alpha:1,visible:!0,mode:0,color:{r:.2823529411764706,g:.2823529411764706,b:.30196078431372547}},id:"layer2"}]};Object.assign(A,{[I]:i})}})}function Q5(g){Object.entries(We(g.shared.images)).filter(A=>A[1].asset===!1).map(A=>A[0]).forEach(A=>{delete g.shared.images[A]}),Object.entries(We(g.shared.audios)).filter(A=>A[1].asset===!1).map(A=>A[0]).forEach(A=>{delete g.shared.audios[A]})}function E5(g){g.scene.publish.settings.web.preload=!1}function eM(g){g.layers&&g.layers.forEach(A=>{A.type==="depth"&&A.num!==void 0&&(A.colors=A.colors.slice(0,A.num),A.steps=A.steps.slice(0,A.num),delete A.num)})}function iM(g){g.layers&&g.layers.forEach(A=>{ZW(A)&&A.isMask===void 0&&(A.isMask=!1),(A.type==="texture"||A.type==="video")&&A.blending===void 0&&(A.blending=0),(A.type==="noise"||A.type==="displace"&&A.displacementType==="noise")&&(A.voronoiStyle===void 0&&(A.voronoiStyle=0),A.highCut===void 0&&(A.highCut=1),A.lowCut===void 0&&(A.lowCut=0),A.smoothness===void 0&&(A.smoothness=.3),A.seed===void 0&&(A.seed=0),A.quality===void 0&&(A.quality=1))})}function n5(g){g.shared.fonts=SB({},lI.prototype)}function h5(g){return g.replace(".typeface","").replace(/optimer/gi,"open sans").replace("space_mono","space mono").replace(/alma_mono/gi,"varela round").replace(/droid_sans_mono/gi,"noto sans mono").replace(/droid_sans|gentilis|gnomon_(simple|foreground)|helvetiker/gi,"roboto").replace(/droid_serif/gi,"roboto slab").replace("_sans"," sans").replace("crimson_text","crimson text").replace("medium_medium","medium").replace("fatface_fatface","fatface").replace("100hairline","thin").replace("200thin","extralight").replace("300light","light").replace("500medium","medium").replace("600semi","semibold").replace("800heavy","extrabold").replace("900black","black").replace(/bodoni_(11|16|24|36|48|72|96)([^_])/gi,"bodoni_$1_$2").replace(/bodoni_(11|16|24|36|48|72|96)/gi,"bodoni moda").replace(/(thin|hairline)(_regular)?/gi,"100").replace(/(extra|ultra)light(_regular)?/gi,"200").replace(/light(_regular)?/gi,"300").replace(/_book|_normal|_roman/gi,"_regular").replace(/medium(_regular)?/gi,"500").replace(/(semi|demi)bold(_regular)?/gi,"600").replace(/(extra|ultra)bold(_regular)?/gi,"800").replace(/bold(_regular)?/gi,"700").replace(/(black|heavy|fatface)(_regular)?/gi,"900").replace(/([1-9]00)_italic/gi,"$1italic").replace(/regularitalic/gi,"italic").replace(/regularitalic/gi,"italic").split(" ").map(A=>A.charAt(0).toUpperCase()+A.slice(1)).join(" ")}function l5(g){let A=[];g.scene.objects.traverse((I,e)=>{let i=e;if(i.type==="TextFrame"){let t=Ki.defaultTwoLayerData("phong"),C=typeof i.color=="string"?g.shared.colors[i.color]:i.color;t.layers[1].data.color={r:C.r,g:C.g,b:C.b},t.layers[1].data.alpha=i.alpha;let o=h5(i.font);g.shared.fonts[o]===void 0&&(g.shared.fonts[o]={name:o});let B={name:i.name,...Xi.defaultData,...sQ.defaultData,flatShading:!1,wireframe:!1,geometry:{...rQ.defaultData("TextGeometry"),width:i.width,height:i.height,font:o,depth:0,horizontalAlign:i.horizontalAlign,verticalAlign:i.verticalAlign,fontSize:i.fontSize*1.40625,lineHeight:i.lineHeight/1.40625,letterSpacing:i.letterSpacing-1,text:i.text,textTransform:i.textTransform,extrudeBevelSize:0,extrudeBevelSegments:1},material:t,states:We(i.states),events:We(i.events),visible:i.visible,raycastLock:i.raycastLock,position:i.position,rotation:i.rotation,scale:i.scale,hiddenMatrix:i.hiddenMatrix},a=We(g.scene.objects).parent(I);g.scene.objects.insertAfter(a??null,I,[{id:I+"new",data:B,children:[]}]),A.push(I)}}),A.forEach(I=>{g.scene.objects.delete(I)})}function c5(g){let A={0:"MouseDown",1:"MouseUp",2:"MouseHover",5:"KeyDown",6:"KeyUp",7:"Start",9:"LookAt",10:"Follow",11:"Scroll",12:"Audio",13:"GameControl"};g.scene.objects.traverse((I,e)=>{e.events.forEach(i=>{if(A[Number(i.type)])if(Object.assign(i,{type:A[Number(i.type)]}),i.type==="Audio"&&"audioEvent"in i&&(Object.assign(i,{playAudio:i.audioEvent}),delete i.audioEvent),i.type==="GameControl")Object.assign(i,{gameActions:{idle:new _g,move:new _g,jump:new _g}});else{let t=new _g;Object.assign(i,{actions:t}),(i.type==="MouseDown"||i.type==="MouseUp"||i.type==="KeyDown"||i.type==="KeyUp")&&"url"in i&&t.push({fi:0,id:vg.generateUUID(),data:{type:"Link",url:i.url,delay:0}}),"targets"in i&&(i.targets.forEach((C,o,B)=>{let a={state:void 0,repeat:0,delay:0,delayDirection:void 0,direction:"normal",duration:0,easing:4},s={easing:C.easing,duration:C.duration};C.easing===6?Object.assign(s,dB(C,"mass","stiffness","damping","velocity")):C.easing===5&&Object.assign(s,{control1:{...C.control1},control2:{...C.control2}});let r={repeat:C.repeat?-1:0,delay:C.delay,delayDirection:C.delayDirection,direction:C.cycle&&C.rewind?"pingpong-rewind":C.cycle?"pingpong":"normal"},Q={state:C.state,...r,...s},E={allowSlerp:!0,type:"Transition",object:C.object,repeat:0,delay:0,delayDirection:void 0,direction:"normal",tweens:new _g({fi:0,id:vg.generateUUID(),data:a},{fi:1,id:vg.generateUUID(),data:Q})};t.push({fi:B,id:o,data:E})}),delete i.targets)}})})}function D5(g){g.scene.objects.traverse((A,I)=>{function e(i,t){var B;let C=new _g,o=[];if(I.events.forEach((a,s,r)=>{if(a.type==="Audio"&&a.trigger===t){let Q;o.push(s),a.interaction==="play"?Q={...dB(a,"interaction","audio","delay","volume","loop"),triggerAfter:"after"in a?a.after:void 0,toggle:"after"in a?a.toggle:void 0,type:"Audio"}:(a.interaction==="pause"||a.interaction==="stop")&&(Q={...dB(a,"interaction","delay","object","playAudio"),type:"Audio"}),Q&&C.push({fi:r,id:s,data:Q})}}),o.forEach(a=>I.events.delete(a)),C.length){let a=(B=I.events.find(s=>s.type===i))==null?void 0:B.data;a?"actions"in a&&a.actions.insertBefore(null,C):I.events.insertBefore(null,[{id:vg.generateUUID(),data:{type:i,actions:C}}])}}e("Start","start"),e("MouseDown","mouseDown"),e("MouseUp","mouseUp"),e("KeyDown","keyDown"),e("KeyUp","keyUp")})}function tM(g){var I;let A=(I=g.layers.find(e=>e.type==="light"))==null?void 0:I.data;if((A==null?void 0:A.category)==="basic"){let e=Bt.defaultData("light","phong"),i=A;Object.assign(i,e),i.visible=!1}}function CM(g){ea(g,tM),ia(g,tM)}function d5(g){g.scene.objects.traverse((A,I)=>{I.type==="Mesh"&&I.geometry.type==="SubdivGeometry"&&(I.geometry.scaleBaked||(I.geometry.scaleBaked=[1,1,1]))})}function u5(g){g.scene.objects.traverse((A,I)=>{(I.type==="Empty"||I.type==="Mesh")&&I.cloner&&!I.cloner.randomnessObject&&!I.cloner.toObject&&!I.cloner.randomness&&(I.cloner={...I.cloner,toObject:{object:"",spreadType:"random",scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],axis:"x",seed:0,count:99,align:"normal"},randomness:!1,randomnessObject:{strength:100,scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],movement:1,seed:0,freqScale:10,noiseType:"perlin"}})})}function p5(g){g.scene.objects.traverse((A,I)=>{I.type==="Mesh"&&I.geometry.type==="NonParametricGeometry"&&!("material"in I)&&!("materials"in I)&&(I.material=Ki.defaultTwoLayerData("phong"))})}function y5(g){g.scene.publish.orbitControls.autoZoom===void 0&&(g.scene.publish.orbitControls.autoZoom=!1),g.scene.objects.traverse((A,I)=>{(I.type==="OrthographicCamera"||I.type==="PerspectiveCamera")&&(I.orthographic.autoZoom===void 0&&(I.orthographic.autoZoom=!1),I.orthographic.autoZoomFrustumSize===void 0&&(I.orthographic.autoZoomFrustumSize=790))})}function w5(g){g.scene.objects.traverse((A,I)=>{I.pathSnapping===void 0&&(I.pathSnapping={pathId:null,slide:0,offset:0,orientation:"tangential"}),I.pathSnapping.offset===void 0&&(I.pathSnapping.offset=0)})}function S5(g){g.scene.publish.mouseEventTarget===void 0&&(g.scene.publish.mouseEventTarget="canvas"),g.scene.publish.settings.web.hint===void 0&&(g.scene.publish.settings.web.hint=!1)}function f5(g){let{video:A}=g.scene.publish.settings;A.format==="gif"&&A.fps>48&&(A.fps=15)}function G5(g){g.scene.objects.traverse((A,I)=>{I.events.forEach(e=>{e.type==="GameControl"&&(e.resetYPosition=Math.abs(e.resetYPosition-I.position[1]))})})}function k5(g){let A=g.scene.environment.usePhysics;g.scene.objects.traverse((I,e)=>{A&&e.physics===null?e.collision=!1:e.collision="visibility"})}function M5(g){g.scene.objects.traverse((A,I)=>{I.events.forEach(e=>{e.type==="GameControl"&&(e.navmesh=Zc.defaultDataThirdPerson.navmesh)})})}function m5(g){g.scene.styles||(g.scene.styles=QQ.defaultData())}function oM(g){g.layers.forEach(A=>{A.type==="light"&&A.category!=="toon"&&A.occlusion===void 0&&(A.occlusion=!0)})}function U5(g){g.scene.environment.ambientLight.occlusion===void 0&&(g.scene.environment.ambientLight.occlusion=!1),g.scene.environment.ambientLight.aoFullRes===void 0&&(g.scene.environment.ambientLight.aoFullRes=!1),g.scene.environment.ambientLight.radius===void 0&&(g.scene.environment.ambientLight.radius=256),g.scene.environment.ambientLight.bias===void 0&&(g.scene.environment.ambientLight.bias=.5),g.scene.environment.ambientLight.aoColor===void 0&&(g.scene.environment.ambientLight.aoColor={r:.19607843137254902,g:.19607843137254902,b:.19607843137254902}),ia(g,oM),ea(g,oM)}function N5(g){g.scene.objects.traverse((A,I)=>{I.events.forEach(e=>{e.type==="GameControl"&&Object.assign(e.gameActions,{run:new _g})})})}function F5(g){g.scene.objects.traverse((A,I)=>{I.events.forEach(e=>{e.type==="GameControl"&&(e.keyAssignments=[...e.keyAssignments,["run","⇧"],["none","Ctrl"]])})})}function BM(g){g.layers&&g.layers.forEach(A=>{A.type==="light"&&A.bumpMapIntensity===void 0&&(A.bumpMapIntensity=5)})}function R5(g,A){if(A<1&&(ia(g,AM),ea(g,AM),g.schema=1),A<2&&(zW(g),g.schema=2),A<3&&($W(g),g.schema=3),A<4&&(A5(g),g.schema=4),A<5&&(g5(g),g.schema=5),A<6&&(I5(g),g.schema=6),A<7&&(e5(g),g.schema=7),A<8&&(g.schema=8),A<9&&(IM(g),g.schema=9),A<10&&(o5(g),g.schema=10),A<11&&(B5(g),g.schema=11),A<12&&(IM(g),g.schema=12),A<13&&(a5(g),g.schema=13),A<14&&(s5(g),g.schema=14),A<15&&(Q5(g),g.schema=15),A<16&&(E5(g),g.schema=16),A<17&&(ia(g,eM),ea(g,eM),g.schema=17),A<18&&(ia(g,gM),ea(g,gM),g.schema=18),A<19&&(XW(g),g.schema=19),A<20&&(n5(g),l5(g),g.schema=20),A<21&&(c5(g),D5(g),g.schema=21),A<22&&(CM(g),g.schema=22),A<23&&(d5(g),g.schema=23),A<24&&(u5(g),g.schema=24),(A<25||g.shared.videos===void 0)&&(r5(g),A<25&&(g.schema=25)),A<26&&(i5(g),g.schema=26),A<27&&(t5(g),g.schema=27),A<28&&(CM(g),g.schema=28),A<29&&(C5(g),g.schema=29),A<30&&(p5(g),g.schema=30),A<31&&(y5(g),g.schema=31),A<33&&(w5(g),g.schema=33),A<34&&(S5(g),g.schema=34),A<35&&(f5(g),g.schema=35),A<36&&(G5(g),g.schema=36),A<37&&(k5(g),g.schema=37),A<38&&(ia(g,iM),ea(g,iM),g.schema=38),A<39&&(M5(g),g.schema=39),A<40&&(m5(g),g.schema=40),A<41&&(U5(g),g.schema=41),A<42&&(N5(g),g.schema=42),A<43&&(F5(g),g.schema=43),A<99){ia(g,BM),ea(g,BM),g.scene.publish.playCamera===null&&(g.scene.publish.playCamera=tE);let I=We(g.scene.objects),e=g.scene.objects;g.scene.publish.playPage=an,e.insertBefore(null,null,[{id:an,data:{...vQ.defaultData,backgroundColor:g.scene.backgroundColor,fog:g.scene.fog,postprocessing:g.scene.postprocessing,ao:dB(g.scene.environment.ambientLight,"occlusion","aoFullRes","radius","bias","aoColor"),publish:{playCamera:g.scene.publish.playCamera,gameControlObject:g.scene.publish.gameControlObject},shadow:dB(g.scene.environment.ambientLight,"softShadowQuality"),globalPhysics:{...KQ.defaultData,...dB(g.scene.environment,"usePhysics","gravity")},camera:We(g.scene.ownerCamera)??vQ.defaultData.camera,name:"Scene"},children:[]}]);for(let C of I)C.id!==EQ.TRASH_CAN_ID&&e.move(an,C.fi,C.id);let i=0,t=0;g.shared.penumbraSize&&g.scene.objects.traverse((C,o)=>{o.type==="DirectionalLight"?(o.penumbraSize=g.shared.penumbraSize[Math.min(i,2)],i+=1):o.type==="SpotLight"&&(o.penumbraSize=g.shared.penumbraSize[3+Math.min(t,1)],t+=1),(o.physics===void 0||o.physics===null)&&o.type!=="Instance"&&(o.physics={},Object.assign(o.physics,RQ.defaultData)),o.physics!==void 0&&o.physics!==null&&(o.physics.enabled=o.collision??"visibility",delete o.collision)}),g.schema=99}}function aM(g){g.layers&&g.layers.forEach(A=>{A.type==="light"&&A.alphaOverride===void 0&&(A.alphaOverride=1)})}function K5(g){g.scene.objects.traverse((A,I)=>{let e=I.geometry;e&&e.type==="PathGeometry"&&(e.extrusion.capType="flat",e.extrusion.bevel=50,e.extrusion.bevelSides=6,e.extrusion.shape.type==="Custom"&&(e.extrusion.shape.shapeQuality="low"))})}var Ws=180/Math.PI;function rM(g){g.rotation=g.rotation.slice(0,3).map(A=>A*Ws)}function FR(g){var I,e;rM(g),g.type==="Page"&&rM(g.camera),(I=g.states)==null||I.forEach(i=>{i.rotation===void 0||i.rotation===null||(i.rotation=i.rotation.slice(0,3).map(t=>t*Ws))});let A=g.geometry;A&&A.type==="SphereGeometry"&&(A.thetaLength=A.thetaLength*Ws),A&&A.type==="TorusGeometry"&&(A.arc=A.arc*Ws),A&&A.type==="PathGeometry"&&(A.extrusion.angle*=Ws,A.extrusion.twist*=Ws),g.type==="Mesh"&&g.geometry.type==="TextGeometry"&&(g.geometry.text={textValue:g.geometry.text}),Array.isArray(We(g.events))&&((e=g.events)==null||e.forEach(i=>{(i.type==="MouseDown"||i.type==="MouseUp"||i.type==="MousePress"||i.type==="KeyDown"||i.type==="KeyUp"||i.type==="KeyPress"||i.type==="Collision"||i.type==="Trigger")&&(i.runMode=i.toggle?"Toggle":"Once")}))}function J5(g){g.shared.variables=SB({},lI.prototype)}function v5(g){let A=We(g.shared.variables);g.shared.variables=SB(Object.entries(A??{}).map(([I,e],i)=>({fi:i,id:I,data:e})),_g.prototype)}var ta=107;function RR(g,A){A(g.data);for(let I of g.children)RR(I,A)}function q5(g){let A=g.schema??104;A!==ta&&A<105&&(RR(g.asset,FR),g.schema=105)}function KR(g){let A=g.schema??0;if(A!==ta){console.warn("updating from ",A,"to ",ta),R5(g,A),A<100&&(g.scene.publish.joystickSizeAndXYOffset===void 0&&(g.scene.publish.joystickSizeAndXYOffset=kr.defaultData.joystickSizeAndXYOffset),g.schema=100),A<101&&(ia(g,aM),ea(g,aM),g.schema=101),A<102&&(K5(g),g.schema=102),A<104&&(g.shared.catelogs=new lI,g.shared.lib=qQ.defaultData(),g.schema=104),A<105&&(J5(g),g.scene.objects.traverse((I,e)=>{FR(e)}),g.schema=105);for(let I of Object.values(g.shared.lib.components))q5(I);A<106&&(v5(g),g.schema=106),A<107&&(g.shared.lib.variables=qQ.defaultData().variables,g.schema=107)}}var Vc;(g=>{g.defaultData={schema:ta,scene:EQ.defaultData,frames:new lI().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",rn.defaultData),shared:{...fC.emptyData(),colors:fC.defaultColors()}},g.emptyDataForImports=function(i){let t=EQ.emptyDataWithPage(i);return{schema:ta,scene:t,frames:new lI().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",rn.defaultData),shared:{...fC.emptyData(),colors:fC.defaultColors(),images:fC.defaultImages(i)}}},g.emptyData=function(){return{schema:ta,scene:EQ.emptyDataWithPage(),frames:new lI().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",rn.defaultData),shared:fC.emptyData()}},g.collabHelper={...Cy,updateSchema(i){return(i.schema??0)I&&(I=i,A=e)}return A}function EM(g,A){A.set(g)}function nM(g,A,I){let e,i;for(let t=0;t<3;t++){let C=t+3;e=g[t],i=A[t],I[t]=ei?e:i}}function Bl(g,A,I){for(let e=0;e<3;e++){let i=A[g+2*e],t=A[g+2*e+1],C=i-t,o=i+t;CI[e+3]&&(I[e+3]=o)}}function mE(g){let A=g[3]-g[0],I=g[4]-g[1],e=g[5]-g[2];return 2*(A*I+I*e+e*A)}function b5(g,A){if(!g.index){let I=g.attributes.position.count,e=A.useSharedArrayBuffer?SharedArrayBuffer:ArrayBuffer,i;I>65535?i=new Uint32Array(new e(4*I)):i=new Uint16Array(new e(2*I)),g.setIndex(new zg(i,1));for(let t=0;ti-t);for(let i=0;iB&&(B=M),c&&yn&&(n=y);let G=g[d+2],v=g[d+3],N=G-v,b=G+v;Na&&(a=b),c&&Gh&&(h=G);let O=g[d+4],H=g[d+5],_=O-H,gA=O+H;_s&&(s=gA),c&&Ol&&(l=O)}e[0]=t,e[1]=C,e[2]=o,e[3]=B,e[4]=a,e[5]=s,c&&(i[0]=r,i[1]=Q,i[2]=E,i[3]=n,i[4]=h,i[5]=l)}function x5(g,A,I,e){let i=1/0,t=1/0,C=1/0,o=-1/0,B=-1/0,a=-1/0;for(let s=A*6,r=(A+I)*6;so&&(o=Q);let E=g[s+2];EB&&(B=E);let n=g[s+4];na&&(a=n)}e[0]=i,e[1]=t,e[2]=C,e[3]=o,e[4]=B,e[5]=a}function H5(g,A,I,e,i){let t=I,C=I+e-1,o=i.pos,B=i.axis*2;for(;;){for(;t<=C&&A[t*6+B]=o;)C--;if(tg.candidate-A.candidate,OB=new Array(CB).fill().map(()=>({count:0,bounds:new Float32Array(6),rightCacheBounds:new Float32Array(6),leftCacheBounds:new Float32Array(6),candidate:0})),al=new Float32Array(6);function O5(g,A,I,e,i,t){let C=-1,o=0;if(t===0)C=QM(A),C!==-1&&(o=(A[C]+A[C+3])/2);else if(t===1)C=QM(g),C!==-1&&(o=_5(I,e,i,C));else if(t===2){let B=mE(g),a=1.25*i,s=e*6,r=(e+i)*6;for(let Q=0;Q<3;Q++){let E=A[Q],n=(A[Q+3]-E)/CB;if(i=f.candidate?Bl(d,I,f.rightCacheBounds):(Bl(d,I,f.leftCacheBounds),f.count++)}}for(let d=0;d=CB&&(d=CB-1);let u=OB[d];u.count++,Bl(c,I,u.bounds)}let h=OB[CB-1];EM(h.bounds,h.rightCacheBounds);for(let c=CB-2;c>=0;c--){let d=OB[c],u=OB[c+1];nM(d.bounds,u.rightCacheBounds,d.rightCacheBounds)}let l=0;for(let c=0;ck&&(k=u),y>k&&(k=y);let M=(k-f)/2,G=c*2;t[E+G+0]=f+M,t[E+G+1]=M+(Math.abs(f)+M)*L5,fA[c+3]&&(A[c+3]=k)}}return t}function j5(g,A){function I(c){Q&&Q(c/E)}function e(c,d,u,y=null,f=0){if(!n&&f>=B&&(n=!0,a&&(console.warn(`MeshBVH: Max depth of ${B} reached when generating BVH. Consider increasing maxDepth.`),console.warn(g))),u<=s||f>=B)return I(d+u),c.offset=d,c.count=u,c;let k=O5(c.boundingData,y,C,d,u,r);if(k.axis===-1)return I(d+u),c.offset=d,c.count=u,c;let M=H5(o,C,d,u,k);if(M===d||M===d+u)I(d+u),c.offset=d,c.count=u;else{c.splitAxis=k.axis;let G=new ol,v=d,N=M-d;c.left=G,G.boundingData=new Float32Array(6),wu(C,v,N,G.boundingData,t),e(G,v,N,t,f+1);let b=new ol,O=M,H=u-N;c.right=b,b.boundingData=new Float32Array(6),wu(C,O,H,b.boundingData,t),e(b,O,H,t,f+1)}return c}b5(g,A);let i=new Float32Array(6),t=new Float32Array(6),C=P5(g,i),o=g.index.array,B=A.maxDepth,a=A.verbose,s=A.maxLeafTris,r=A.strategy,Q=A.onProgress,E=g.index.count/3,n=!1,h=[],l=Y5(g);if(l.length===1){let c=l[0],d=new ol;d.boundingData=i,x5(C,c.offset,c.count,t),e(d,c.offset,c.count,t),h.push(d)}else for(let c of l){let d=new ol;d.boundingData=new Float32Array(6),wu(C,c.offset,c.count,d.boundingData,t),e(d,c.offset,c.count,t),h.push(d)}return h}function W5(g,A){let I=j5(g,A),e,i,t,C=[],o=A.useSharedArrayBuffer?SharedArrayBuffer:ArrayBuffer;for(let s=0;sMath.pow(2,32))throw new Error("MeshBVH: Cannot store child pointer greater than 32 bits.");return i[Q+6]=u/4,u=a(u,c),i[Q+7]=d,u}}}var fB=class{constructor(){this.min=1/0,this.max=-1/0}setFromPointsField(A,I){let e=1/0,i=-1/0;for(let t=0,C=A.length;ti?o:i}this.min=e,this.max=i}setFromPoints(A,I){let e=1/0,i=-1/0;for(let t=0,C=I.length;ti?B:i}this.min=e,this.max=i}isSeparated(A){return this.min>A.max||A.min>this.max}};fB.prototype.setFromBox=function(){let g=new J;return function(A,I){let e=I.min,i=I.max,t=1/0,C=-1/0;for(let o=0;o<=1;o++)for(let B=0;B<=1;B++)for(let a=0;a<=1;a++){g.x=e.x*o+i.x*(1-o),g.y=e.y*B+i.y*(1-B),g.z=e.z*a+i.z*(1-a);let s=A.dot(g);t=Math.min(s,t),C=Math.max(s,C)}this.min=t,this.max=C}}();var Z5=function(){let g=new J,A=new J,I=new J;return function(e,i,t){let C=e.start,o=g,B=i.start,a=A;I.subVectors(C,B),g.subVectors(e.end,e.start),A.subVectors(i.end,i.start);let s=I.dot(a),r=a.dot(o),Q=a.dot(a),E=I.dot(o),n=o.dot(o)*Q-r*r,h,l;n!==0?h=(s*r-E*Q)/n:h=0,l=(s+h*r)/Q,t.x=h,t.y=l}}(),M0=function(){let g=new sA,A=new J,I=new J;return function(e,i,t,C){Z5(e,i,g);let o=g.x,B=g.y;if(o>=0&&o<=1&&B>=0&&B<=1){e.at(o,t),i.at(B,C);return}else if(o>=0&&o<=1){B<0?i.at(0,C):i.at(1,C),e.closestPointToPoint(C,!0,t);return}else if(B>=0&&B<=1){o<0?e.at(0,t):e.at(1,t),i.closestPointToPoint(t,!0,C);return}else{let a;o<0?a=e.start:a=e.end;let s;B<0?s=i.start:s=i.end;let r=A,Q=I;if(e.closestPointToPoint(s,!0,A),i.closestPointToPoint(a,!0,I),r.distanceToSquared(s)<=Q.distanceToSquared(a)){t.copy(r),C.copy(s);return}else{t.copy(a),C.copy(Q);return}}}}(),V5=function(){let g=new J,A=new J,I=new Nt,e=new eC;return function(i,t){let{radius:C,center:o}=i,{a:B,b:a,c:s}=t;if(e.start=B,e.end=a,e.closestPointToPoint(o,!0,g).distanceTo(o)<=C||(e.start=B,e.end=s,e.closestPointToPoint(o,!0,g).distanceTo(o)<=C)||(e.start=a,e.end=s,e.closestPointToPoint(o,!0,g).distanceTo(o)<=C))return!0;let r=t.getPlane(I);if(Math.abs(r.distanceToPoint(o))<=C){let Q=r.projectPoint(o,A);if(t.containsPoint(Q))return!0}return!1}}(),z5=1e-15;function ks(g){return Math.abs(g)new J),this.satBounds=new Array(4).fill().map(()=>new fB),this.points=[this.a,this.b,this.c],this.sphere=new ct,this.plane=new Nt,this.needsUpdate=!0}intersectsSphere(A){return V5(A,this)}update(){let A=this.a,I=this.b,e=this.c,i=this.points,t=this.satAxes,C=this.satBounds,o=t[0],B=C[0];this.getNormal(o),B.setFromPoints(o,i);let a=t[1],s=C[1];a.subVectors(A,I),s.setFromPoints(a,i);let r=t[2],Q=C[2];r.subVectors(I,e),Q.setFromPoints(r,i);let E=t[3],n=C[3];E.subVectors(e,A),n.setFromPoints(E,i),this.sphere.setFromPoints(this.points),this.plane.setFromNormalAndCoplanarPoint(o,A),this.needsUpdate=!1}};GB.prototype.closestPointToSegment=function(){let g=new J,A=new J,I=new eC;return function(e,i=null,t=null){let{start:C,end:o}=e,B=this.points,a,s=1/0;for(let r=0;r<3;r++){let Q=(r+1)%3;I.start.copy(B[r]),I.end.copy(B[Q]),M0(I,e,g,A),a=g.distanceToSquared(A),a1-1e-10){let c=this.satBounds,d=this.satAxes;I[0]=Q.a,I[1]=Q.b,I[2]=Q.c;for(let f=0;f<4;f++){let k=c[f],M=d[f];if(e.setFromPoints(M,I),k.isSeparated(e))return!1}let u=Q.satBounds,y=Q.satAxes;A[0]=this.a,A[1]=this.b,A[2]=this.c;for(let f=0;f<4;f++){let k=u[f],M=y[f];if(e.setFromPoints(M,A),k.isSeparated(e))return!1}for(let f=0;f<4;f++){let k=d[f];for(let M=0;M<4;M++){let G=y[M];if(t.crossVectors(k,G),e.setFromPoints(t,A),i.setFromPoints(t,I),e.isSeparated(i))return!1}}return E&&(n||console.warn("ExtendedTriangle.intersectsTriangle: Triangles are coplanar which does not support an output edge. Setting edge to 0, 0, 0."),E.start.set(0,0,0),E.end.set(0,0,0)),!0}else{let c=this.points,d=!1,u=0;for(let H=0;H<3;H++){let _=c[H],gA=c[(H+1)%3];a.start.copy(_),a.end.copy(gA),a.delta(C);let CA=d?s.start:s.end,AA=ks(l.distanceToPoint(_));if(ks(l.normal.dot(C))&&AA){s.copy(a),u=2;break}if((l.intersectLine(a,CA)||AA)&&!ks(CA.distanceTo(gA))){if(u++,d)break;d=!0}}if(u===1&&Q.containsPoint(s.end))return E&&(E.start.copy(s.end),E.end.copy(s.end)),!0;if(u!==2)return!1;let y=Q.points,f=!1,k=0;for(let H=0;H<3;H++){let _=y[H],gA=y[(H+1)%3];a.start.copy(_),a.end.copy(gA),a.delta(o);let CA=f?r.start:r.end,AA=ks(h.distanceToPoint(_));if(ks(h.normal.dot(o))&&AA){r.copy(a),k=2;break}if((h.intersectLine(a,CA)||AA)&&!ks(CA.distanceTo(gA))){if(k++,f)break;f=!0}}if(k===1&&this.containsPoint(r.end))return E&&(E.start.copy(r.end),E.end.copy(r.end)),!0;if(k!==2)return!1;if(s.delta(C),r.delta(o),C.dot(o)<0){let H=r.start;r.start=r.end,r.end=H}let M=s.start.dot(C),G=s.end.dot(C),v=r.start.dot(C),N=r.end.dot(C),b=G0?E.start.copy(s.start):E.start.copy(r.start),B.subVectors(s.end,r.end),B.dot(C)<0?E.end.copy(s.end):E.end.copy(r.end)),!0)}}}();GB.prototype.distanceToPoint=function(){let g=new J;return function(A){return this.closestPointToPoint(A,g),A.distanceTo(g)}}();GB.prototype.distanceToTriangle=function(){let g=new J,A=new J,I=["a","b","c"],e=new eC,i=new eC;return function(t,C=null,o=null){let B=C||o?e:null;if(this.intersectsTriangle(t,B))return(C||o)&&(C&&B.getCenter(C),o&&B.getCenter(o)),0;let a=1/0;for(let s=0;s<3;s++){let r,Q=I[s],E=t[Q];this.closestPointToPoint(E,g),r=E.distanceToSquared(g),rnew J),this.satAxes=new Array(3).fill().map(()=>new J),this.satBounds=new Array(3).fill().map(()=>new fB),this.alignedSatBounds=new Array(3).fill().map(()=>new fB),this.needsUpdate=!1,A&&this.min.copy(A),I&&this.max.copy(I),e&&this.matrix.copy(e)}set(A,I,e){this.min.copy(A),this.max.copy(I),this.matrix.copy(e),this.needsUpdate=!0}copy(A){this.min.copy(A.min),this.max.copy(A.max),this.matrix.copy(A.matrix),this.needsUpdate=!0}};Mo.prototype.update=function(){return function(){let g=this.matrix,A=this.min,I=this.max,e=this.points;for(let B=0;B<=1;B++)for(let a=0;a<=1;a++)for(let s=0;s<=1;s++){let r=1*B|2*a|4*s,Q=e[r];Q.x=B?I.x:A.x,Q.y=a?I.y:A.y,Q.z=s?I.z:A.z,Q.applyMatrix4(g)}let i=this.satBounds,t=this.satAxes,C=e[0];for(let B=0;B<3;B++){let a=t[B],s=i[B],r=1<new eC),I=new Array(12).fill().map(()=>new eC),e=new J,i=new J;return function(t,C=0,o=null,B=null){if(this.needsUpdate&&this.update(),this.intersectsBox(t))return(o||B)&&(t.getCenter(i),this.closestPointToPoint(i,e),t.closestPointToPoint(e,i),o&&o.copy(e),B&&B.copy(i)),0;let a=C*C,s=t.min,r=t.max,Q=this.points,E=1/0;for(let h=0;h<8;h++){let l=Q[h];i.copy(l).clamp(s,r);let c=l.distanceToSquared(i);if(c0&&a.normal.multiplyScalar(-1));let s={a:t,b:C,c:o,normal:new J,materialIndex:0};Ni.getNormal(Ms,ms,Us,s.normal),a.face=s,a.faceIndex=t}return a}function JR(g,A,I,e,i){let t=e*3,C=g.index.getX(t),o=g.index.getX(t+1),B=g.index.getX(t+2),{position:a,normal:s,uv:r,uv1:Q}=g.attributes,E=$5(I,a,s,r,Q,C,o,B,A);return E?(E.faceIndex=e,i&&i.push(E),E):null}function AZ(g,A,I,e,i,t){for(let C=e,o=e+i;C=0,r,Q;s?(r=Fn(g),Q=Rn(g,o)):(r=Rn(g,o),Q=Fn(g));let E=Xc(r,t,e,zc)?by(r,A,I,e):null;if(E){let h=E.point[a];if(s?h<=t[Q+B]:h>=t[Q+B+3])return E}let n=Xc(Q,t,e,zc)?by(Q,A,I,e):null;return E&&n?E.distance<=n.distance?E:n:E||n||null}}var iZ=function(){let g,A,I=[],e=new vR(()=>new ve);return function(...t){g=e.getPrimitive(),A=e.getPrimitive(),I.push(g,A);let C=i(...t);e.releasePrimitive(g),e.releasePrimitive(A),I.pop(),I.pop();let o=I.length;return o>0&&(A=I[o-1],g=I[o-2]),C};function i(t,C,o,B,a=null,s=0,r=0){function Q(d){let u=d*2,y=ua,f=pa;for(;!Ca(u,y);)d=Fn(d),u=d*2;return nQ(d,f)}function E(d){let u=d*2,y=ua,f=pa;for(;!Ca(u,y);)d=Rn(d,f),u=d*2;return nQ(d,f)+Nn(u,y)}let n=t*2,h=CE,l=ua,c=pa;if(Ca(n,l)){let d=nQ(t,c),u=Nn(n,l);return co(t,h,g),B(d,u,!1,r,s+t,g)}else{let d=Fn(t),u=Rn(t,c),y=d,f=u,k,M,G,v;if(a&&(G=g,v=A,co(y,h,G),co(f,h,v),k=a(G),M=a(v),Mi.intersectsBox(k),intersectsTriangle:k=>{k.a.applyMatrix4(a),k.b.applyMatrix4(a),k.c.applyMatrix4(a),k.needsUpdate=!0;for(let M=y*3,G=(f+y)*3;Mnew GB),sn=class{static serialize(A,I={}){if(I.isBufferGeometry)return console.warn("MeshBVH.serialize: The arguments for the function have changed. See documentation for new signature."),sn.serialize(arguments[0],{cloneBuffers:arguments[2]===void 0?!0:arguments[2]});I={cloneBuffers:!0,...I};let e=A.geometry,i=A._roots,t=e.getIndex(),C;return I.cloneBuffers?C={roots:i.map(o=>o.slice()),index:t.array.slice()}:C={roots:i,index:t.array},C}static deserialize(A,I,e={}){if(typeof e=="boolean")return console.warn("MeshBVH.deserialize: The arguments for the function have changed. See documentation for new signature."),sn.deserialize(arguments[0],arguments[1],{setIndex:arguments[2]===void 0?!0:arguments[2]});e={setIndex:!0,...e};let{index:i,roots:t}=A,C=new sn(I,{...e,[Su]:!0});if(C._roots=t,e.setIndex){let o=I.getIndex();if(o===null){let B=new zg(A.index,1,!1);I.setIndex(B)}else o.array!==i&&(o.array.set(i),o.needsUpdate=!0)}return C}constructor(A,I={}){if(A.isBufferGeometry){if(A.index&&A.index.isInterleavedBufferAttribute)throw new Error("MeshBVH: InterleavedBufferAttribute is not supported for the index attribute.")}else throw new Error("MeshBVH: Only BufferGeometries are supported.");if(I=Object.assign({strategy:0,maxDepth:40,maxLeafTris:10,verbose:!0,useSharedArrayBuffer:!1,setBoundingBox:!0,onProgress:null,[Su]:!1},I),I.useSharedArrayBuffer&&typeof SharedArrayBuffer>"u")throw new Error("MeshBVH: SharedArrayBuffer is not available.");this._roots=null,I[Su]||(this._roots=W5(A,I),!A.boundingBox&&I.setBoundingBox&&(A.boundingBox=this.getBoundingBox(new ve))),this.geometry=A}refit(A=null){A&&Array.isArray(A)&&(A=new Set(A));let I=this.geometry,e=I.index.array,i=I.attributes.position,t,C,o,B,a=0,s=this._roots;for(let Q=0,E=s.length;Qf&&(f=b),Ok&&(k=O),HM&&(M=H)}return B[Q+0]!==d||B[Q+1]!==u||B[Q+2]!==y||B[Q+3]!==f||B[Q+4]!==k||B[Q+5]!==M?(B[Q+0]=d,B[Q+1]=u,B[Q+2]=y,B[Q+3]=f,B[Q+4]=k,B[Q+5]=M,!0):!1}else{let l=Q+8,c=C[Q+6],d=l+E,u=c+E,y=n,f=!1,k=!1;A?y||(f=A.has(d),k=A.has(u),y=!f&&!k):(f=!0,k=!0);let M=y||f,G=y||k,v=!1;M&&(v=r(l,E,y));let N=!1;G&&(N=r(c,E,y));let b=v||N;if(b)for(let O=0;O<3;O++){let H=l+O,_=c+O,gA=B[H],CA=B[H+3],AA=B[_],BA=B[_+3];B[Q+O]=gABA?CA:BA}return b}}}traverse(A,I=0){let e=this._roots[I],i=new Uint32Array(e),t=new Uint16Array(e);C(0);function C(o,B=0){let a=o*2,s=t[a+15]===65535;if(s){let r=i[o+6],Q=t[a+14];A(B,s,new Float32Array(e,o*4,6),r,Q)}else{let r=o+8,Q=i[o+6],E=i[o+7];A(B,s,new Float32Array(e,o*4,6),E)||(C(r,B+1),C(Q,B+1))}}}raycast(A,I=RC){let e=this._roots,i=this.geometry,t=[],C=I.isMaterial,o=Array.isArray(I),B=i.groups,a=C?I.side:I;for(let s=0,r=e.length;s{let c=n*3;return Q(E,c,c+1,c+2,h,l)}}A={boundsTraverseOrder:e,intersectsBounds:A,intersectsTriangle:I,intersectsRange:null},console.warn("MeshBVH: Shapecast function signature has changed and now takes an object of callbacks as a second argument. See docs for new signature.")}let t=XC.getPrimitive(),{boundsTraverseOrder:C,intersectsBounds:o,intersectsRange:B,intersectsTriangle:a}=A;if(B&&a){let Q=B;B=(E,n,h,l,c)=>Q(E,n,h,l,c)?!0:DM(E,n,i,a,h,l,t)}else B||(a?B=(Q,E,n,h)=>DM(Q,E,i,a,n,h,t):B=(Q,E,n)=>n);let s=!1,r=0;for(let Q of this._roots){if(zE(Q),s=iZ(0,i,o,B,C,r),nl(),s)break;r+=Q.byteLength}return XC.releasePrimitive(t),s}bvhcast(A,I,e){let{intersectsRanges:i,intersectsTriangles:t}=e,C=this.geometry.index,o=this.geometry.attributes.position,B=A.geometry.index,a=A.geometry.attributes.position;Ns.copy(I).invert();let s=XC.getPrimitive(),r=XC.getPrimitive();if(t){let E=function(n,h,l,c,d,u,y,f){for(let k=l,M=l+c;kGu.intersectsBox(E),intersectsRange:(E,n,h,l,c,d)=>(fu.copy(d),fu.applyMatrix4(Ns),A.shapecast({intersectsBounds:u=>fu.intersectsBox(u),intersectsRange:(u,y,f,k,M)=>i(E,n,u,y,l,c,k,M)}))});return XC.releasePrimitive(s),XC.releasePrimitive(r),Q}intersectsBox(A,I){return Ar.set(A.min,A.max,I),Ar.needsUpdate=!0,this.shapecast({intersectsBounds:e=>Ar.intersectsBox(e),intersectsTriangle:e=>Ar.intersectsTriangle(e)})}intersectsSphere(A){return this.shapecast({intersectsBounds:I=>A.intersectsBox(I),intersectsTriangle:I=>I.intersectsSphere(A)})}closestPointToGeometry(A,I,e={},i={},t=0,C=1/0){A.boundingBox||A.computeBoundingBox(),Ar.set(A.boundingBox.min,A.boundingBox.max,I),Ar.needsUpdate=!0;let o=this.geometry,B=o.attributes.position,a=o.index,s=A.attributes.position,r=A.index,Q=XC.getPrimitive(),E=XC.getPrimitive(),n=hl,h=CZ,l=null,c=null;i&&(l=oZ,c=BZ);let d=1/0,u=null,y=null;return Ns.copy(I).invert(),UE.matrix.copy(Ns),this.shapecast({boundsTraverseOrder:f=>Ar.distanceToBox(f),intersectsBounds:(f,k,M)=>M{if(A.boundsTree)return A.boundsTree.shapecast({boundsTraverseOrder:M=>UE.distanceToBox(M),intersectsBounds:(M,G,v)=>v{for(let v=M*3,N=(M+G)*3;v(NE.copy(A).clamp(s.min,s.max),NE.distanceToSquared(A)),intersectsBounds:(s,r,Q)=>Q{s.closestPointToPoint(A,NE);let Q=A.distanceToSquared(NE);return Q{co(0,new Float32Array(I),dM),A.union(dM)}),A}},FE=Fa(pq()),aZ=.5*(Math.sqrt(3)-1),RE=(3-Math.sqrt(3))/6,rZ=1/3,$C=1/6,Qn=g=>Math.floor(g)|0,uM=new Float64Array([1,1,-1,1,1,-1,-1,-1,1,0,-1,0,1,0,-1,0,0,1,0,-1,0,1,0,-1]),ku=new Float64Array([1,1,0,-1,1,0,1,-1,0,-1,-1,0,1,0,1,-1,0,1,1,0,-1,-1,0,-1,0,1,1,0,-1,1,0,1,-1,0,-1,-1]);function Mu(g=Math.random){let A=qR(g),I=new Float64Array(A).map(i=>uM[i%12*2]),e=new Float64Array(A).map(i=>uM[i%12*2+1]);return function(i,t){let C=0,o=0,B=0,a=(i+t)*aZ,s=Qn(i+a),r=Qn(t+a),Q=(s+r)*RE,E=s-Q,n=r-Q,h=i-E,l=t-n,c,d;h>l?(c=1,d=0):(c=0,d=1);let u=h-c+RE,y=l-d+RE,f=h-1+2*RE,k=l-1+2*RE,M=s&255,G=r&255,v=.5-h*h-l*l;if(v>=0){let O=M+A[G],H=I[O],_=e[O];v*=v,C=v*v*(H*h+_*l)}let N=.5-u*u-y*y;if(N>=0){let O=M+c+A[G+d],H=I[O],_=e[O];N*=N,o=N*N*(H*u+_*y)}let b=.5-f*f-k*k;if(b>=0){let O=M+1+A[G+1],H=I[O],_=e[O];b*=b,B=b*b*(H*f+_*k)}return 70*(C+o+B)}}function sZ(g=Math.random){let A=qR(g),I=new Float64Array(A).map(t=>ku[t%12*3]),e=new Float64Array(A).map(t=>ku[t%12*3+1]),i=new Float64Array(A).map(t=>ku[t%12*3+2]);return function(t,C,o){let B,a,s,r,Q=(t+C+o)*rZ,E=Qn(t+Q),n=Qn(C+Q),h=Qn(o+Q),l=(E+n+h)*$C,c=E-l,d=n-l,u=h-l,y=t-c,f=C-d,k=o-u,M,G,v,N,b,O;y>=f?f>=k?(M=1,G=0,v=0,N=1,b=1,O=0):y>=k?(M=1,G=0,v=0,N=1,b=0,O=1):(M=0,G=0,v=1,N=1,b=0,O=1):fg){i=t;break}else g1&&(e=1-e,i=1-i),cC.a.fromBufferAttribute(this.positionAttribute,g*3),cC.b.fromBufferAttribute(this.positionAttribute,g*3+1),cC.c.fromBufferAttribute(this.positionAttribute,g*3+2),A.set(0,0,0).addScaledVector(cC.a,e).addScaledVector(cC.b,i).addScaledVector(cC.c,1-(e+i)),cC.getNormal(I),this}},EZ=Fa(pN()),nZ=new zA,hZ=new zA,lZ=new zA,Kn;(g=>{function A(I){return I&&I.__isSPEObject}g.is=A})(Kn||(Kn={}));var m0=g=>class extends g{constructor(){super(...arguments),this.previousModelViewMatrix=new zA,this.copyPreviousMatrix=!0,this.hiddenMatrix=new zA,this.matrixWorldRigid=new zA,this.shearScale=new zA,this.shearScaleInv=new zA}get __isSPEObject(){return!0}isDescendantOf(A){A instanceof ZI&&(A=A.uuid);let I=this;for(;I.parent;){if(I.parent.uuid===A)return!0;I=I.parent}return!1}updateMatrixWorld(A){this.matrixAutoUpdate&&this.updateMatrix(),(this.matrixWorldNeedsUpdate||A)&&(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,A=!0);for(let I of this.children)I.updateMatrixWorld(A)}updateWorldMatrix(A,I){let e=this.parent;if(A&&e!==null&&e.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)),I)for(let i of this.children)i.updateWorldMatrix(!1,!0)}traverseChildren(A,I=0){for(let e of this.children)Kn.is(e)&&e.traverseObject(A,I+1)}traverseObject(A,I=0){if(A(this,I)!==!0)for(let e of this.children)Kn.is(e)&&e.traverseObject(A,I+1)}updateMatrixWorldSVD(){let A=this.matrixWorld.elements,I=[[A[0],A[4],A[8]],[A[1],A[5],A[9]],[A[2],A[6],A[10]]],{u:e,v:i,q:t}=(0,EZ.SVD)(I),C=nZ.set(e[0][0],e[0][1],e[0][2],0,e[1][0],e[1][1],e[1][2],0,e[2][0],e[2][1],e[2][2],0,0,0,0,1),o=hZ.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),B=lZ.copy(o).transpose();this.shearScale.makeScale(t[0],t[1],t[2]).multiply(B).premultiply(o),this.shearScaleInv.copy(this.shearScale).invert(),this.matrixWorldRigid.multiplyMatrices(C,B).copyPosition(this.matrixWorld),t.every(a=>Math.abs(t[0]-a)<.01)?this.hasNonUniformScale=!1:this.hasNonUniformScale=!0}attach(A,I){this.updateWorldMatrix(!0,!1);let e=new zA().copy(this.matrixWorld).invert();return A.parent!==null&&(A.parent.updateWorldMatrix(!0,!1),e.multiply(A.parent.matrixWorld)),"hiddenMatrix"in A&&A.hiddenMatrix instanceof zA?A.hiddenMatrix.premultiply(e):A.applyMatrix4(e),A.updateWorldMatrix(!1,!1),this.add(A),I!==void 0&&(this.children.pop(),this.children.splice(I,0,A)),this}copy(A,I=!1){return super.copy(A,I),this.hasNonUniformScale=A.hasNonUniformScale,this}onAfterRender(A,I,e,i,t,C){this.copyPreviousMatrix&&this.previousModelViewMatrix.copy(this.modelViewMatrix)}},cZ=class extends m0(ZI){},DZ=g=>g.type==="Mesh",Ri=class extends cZ{constructor(A){super(),this.object=A,this.matrixAutoUpdate=!1,this.hasNonUniformScale=A.hasNonUniformScale}raycast(A,I){}expand(){let A=0,I=this.object.entityChildren(A);for(;I;){let e=this.children[A];(e==null?void 0:e.object)!==I&&(e&&this.remove(e),e=new Ri(I),this.add(e),this.children.splice(A,0,this.children.pop()),e.matrixWorldNeedsUpdate=!0,e.matrixAutoUpdate=!1,e.matrix=I.matrix,e.hiddenMatrix=I.hiddenMatrix),e.expand(),A+=1,I=this.object.entityChildren(A)}for(;this.children.length>A;)this.remove(this.children[A])}get visible(){var A;return this.playModeVisible!==void 0?this.playModeVisible:this.object.visible||this.object.dataPatched.visible&&((A=this.object.dataPatched.cloner)==null?void 0:A.hideBase)===!0}set visible(A){}get castShadow(){return this.object.castShadow}set castShadow(A){}get receiveShadow(){return this.object.receiveShadow}set receiveShadow(A){}get isMesh(){return DZ(this.object)}get isLight(){return this.object.isLight}get layers(){return this.object.layers}set layers(A){}get isCamera(){return!1}get geometry(){if(this.object.geometry)return this.object.geometry}get material(){if(this.object.material)return this.object.material}},sr=new J,Qr=new J,hQ=new zA,LR=[new J(-1,1,1),new J(-1,-1,1),new J(1,-1,1),new J(1,1,1),new J(-1,1,-1),new J(-1,-1,-1),new J(1,-1,-1),new J(1,1,-1)],dZ=[[0,3],[1,2],[5,6],[4,7],[0,1],[3,2],[7,6],[4,5],[0,4],[1,5],[2,6],[3,7]],uZ=[[0,2],[7,5],[4,1],[3,6],[4,3],[1,6]],pM=(g,A,I)=>{g.updateEntityBoxSize(sr,Qr),hQ.copy(A).multiply(g.matrixWorld),Qr.x===0&&Qr.y===0&&Qr.z===0?I.push(new J(sr.x,sr.y,sr.z).applyMatrix4(hQ)):LR.forEach(e=>{I.push(e.clone().multiply(Qr).add(sr).applyMatrix4(hQ))})},yM=class extends ve{constructor(){super(...arguments),this.matrix=new zA,this.vertices=[],this.faces=[],this.edges=[],this.centerEdges=[]}copy(g){return super.copy(g),this.matrix.copy(g.matrix),this.vertices=g.vertices.map(A=>A.clone()),this.faces=g.faces.map(A=>A.clone()),this.edges=g.edges.map(A=>A.clone()),this.centerEdges=g.centerEdges.map(A=>A.clone()),this}setFromObjectSize(g,A=!1){g.updateWorldMatrix(!1,A),this.makeEmpty(),this.matrix.copy(g.matrixWorld);let I=new zA().copy(g.matrixWorld).invert();return this.expandByObjectSize(g,I,A)}expandByObjectSize(g,A,I=!1){let e=[];return I===!0?g.traverseEntity(i=>{if(i.visible||i.cloner&&i.data.visible){if(!("geometry"in i)){e.push(new J);return}pM(i,A,e)}}):pM(g,A,e),this.setFromPoints(e)}getCenter(g){return g=super.getCenter(g),g.applyMatrix4(this.matrix),g}getPositionToCenter(g){return g=super.getCenter(g),g.applyMatrix4(hQ.copy(this.matrix).setPosition(0,0,0)),g}computeVertices(){this.getSize(Qr).multiplyScalar(.5),this.getCenter(sr),hQ.copy(this.matrix).setPosition(sr),this.vertices=LR.map(g=>g.clone().multiply(Qr).applyMatrix4(hQ))}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=dZ.map(([g,A])=>new eC(this.vertices[g],this.vertices[A])),this.centerEdges=this.edges.map(g=>g.getCenter(new J))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=uZ.map(([g,A])=>this.vertices[g].clone().add(this.vertices[A]).multiplyScalar(.5))}},Qa={Cloner:()=>{},changeEntityProptotype:()=>{},createEntity:()=>{}},pZ=class extends ZN{constructor(){super()}getPoints(g=12){let A=[],I,e=this.getCurveLengths(),i=e[e.length-1]/e.length;for(let t=0,C=this.curves;t1&&!A[A.length-1].equals(A[0])&&A.push(A[0]),A}},xy=.001;function Hy(g,A,I){return A.clone().sub(g).cross(A.clone().sub(I)).length()<=xy}function mu(g,A){let I=new J(...g.position),e=new J(...g.controlNext.position),i=new J(...A.controlPrevious.position),t=new J(...A.position);return Hy(I,e,t)&&Hy(I,i,t)}function bR(g){let A=g.points.map(s=>new J(...s.data.position)),I=[g.points[0]],e=new J(...I[0].data.position);for(let s=0;sxy&&(h=new Vl(E.position,E.controlNext,n.controlPrevious,n.position));else{let l=E.position.clone(),c=n.position.clone();(E.removedLength!==0||n.removedLength!==0)&&(E.nextDir&&l.add(E.nextDir.clone().setLength(E.removedLength)),n.prevDir&&c.add(n.prevDir.clone().setLength(n.removedLength))),l.distanceTo(c)>xy&&(h=new Vl(l,l.clone().lerp(c,.3),c.clone().lerp(l,.3),c))}B[2*s+1]=h}for(let s=0;s{s&&a.add(s)}),a}var MI;(g=>{function A(I){return I&&I.__isEntity}g.is=A})(MI||(MI={}));var QB=g=>MI.is(g),yZ={type:"completeState",isfromEntity:!0},wZ=["x","y","z"],Uu=new J,SZ=new J().set(0,1,0),U0=g=>class extends m0(g){constructor(){super(...arguments),this.raycastLock=!1,this.scaleLock=!1,this.disposed=!1,this.stateSelection=null,this.destroyedInAction=!1,this.instances=[],this.prevState=null,this.currentState=null,this.reversibleToState=null,this.currentTransitionEvent=null,this.previousAction=null,this._singleBBox=new yM,this._recursiveBBox=new yM,this.singleBBoxNeedsUpdate=!0,this.recursiveBBoxNeedsUpdate=!0,this._needApplyPathSnapping=!0,this.attachedPaths=new Set}get __isEntity(){return!0}entityChildren(A){let I=this.children[A];if(MI.is(I))return I}entityChildrenCount(){let A=this.children.length;for(;A--;)if(MI.is(this.children[A]))return A+1;return 0}get isConcreteEntity(){return typeof this.identity=="string"}get isVirtualEntity(){return typeof this.identity!="string"}get isInstanceRoot(){return this.isConcreteEntity&&this.data.type==="Instance"}nearestInstanceSelfOrParent(){let A=this;for(;A.data.type!=="Instance";){let I=A.parent;if(MI.is(I))A=I;else return}return A}forInstancesRec(A){this.instances.forEach(I=>{I.disposed||A(I),I.forInstancesRec(A)})}super_Entity(A,I){typeof A=="string"&&(this.uuid=A),this.identity=A,this.data=I,this.matrixAutoUpdate=!1,this.dataPatched=this.data}changeSelectedState(A,I,e=!1){if(!(this.data.states.length===0&&!e)){for(let i of this.data.states)cr.toOps(this.data,i.data).forEach(t=>{let C=ty.replaceProps(t,this.data);this.dataPatched=this.data,this.updateByPatchedOp(C,this.data,I)});if(A!==null){let i=this.data.states.data(A);i&&(this.dataPatched=cr.patch(this.data,i),cr.toOps(this.data,i).forEach(t=>{this.updateByPatchedOp(t,this.dataPatched,I)}))}e&&this.updateTransformState(this.dataPatched,I),this.stateSelection=A,this.updatePathSnapping(this.dataPatched.pathSnapping)}}get singleBBox(){return this.singleBBoxNeedsUpdate&&(this.singleBBoxNeedsUpdate=!1,this._singleBBox.setFromObjectSize(this,!1),this._singleBBox.computeVertices(),this._singleBBox.computeEdges(),this._singleBBox.computeFaces()),this._singleBBox}get recursiveBBox(){return this.recursiveBBoxNeedsUpdate&&(this.recursiveBBoxNeedsUpdate=!1,this._recursiveBBox.setFromObjectSize(this,!0),this._recursiveBBox.computeVertices(),this._recursiveBBox.computeEdges(),this._recursiveBBox.computeFaces()),this._recursiveBBox}updateEntityBoxSize(A,I){A.setScalar(0),I.setScalar(0)}resetBBoxNeedsUpdateSelf(){this.singleBBoxNeedsUpdate=!0,this.recursiveBBoxNeedsUpdate=!0}resetBBoxNeedsUpdate(){this.resetBBoxNeedsUpdateSelf(),this.traverseAncestors(A=>{QB(A)&&A.resetBBoxNeedsUpdateSelf()}),this.traverseEntity(A=>{A.resetBBoxNeedsUpdateSelf()})}find(A){let I;return this.traverseEntity(e=>{e.uuid===A&&(I=e)}),I}traverseSortNextHelper(){let A=this.parent;if(A){let I=A.children,e=I.indexOf(this)+1;if(MI.is(I[e]))return I[e];if(MI.is(A))return A.traverseSortNextHelper()}}sortNext(){let A=this.children;return this.children.length>0&&MI.is(this.children[0])?A[0]:this.traverseSortNextHelper()}goUp(A){let I=this;for(;A>0&&I!==null;)I=I.parent,A-=1;return I}hasAnccestorOrSelf(A){return this===A||this.hasAnccestor(A)}hasAnccestor(A){let I=this.parent;for(;I;){if(A===I)return!0;I=I.parent}return!1}countToAccestor(A){let I=0,e=this;for(;e!==A;){if(e===null)return-1;e=e.parent,I+=1}return I}forEachEntity(A){for(let I of this.children)QB(I)&&A(I)}traverseEntityAncestors(A){this.traverseAncestors(I=>{MI.is(I)&&A(I)})}traverseConcreteEntity(A,I=0){if(A(this,I)!==!0)for(let e of this.children)QB(e)&&e.isConcreteEntity&&e.traverseEntity(A,I+1)}traverseEntity(A,I=0){if(A(this,I)!==!0)for(let e of this.children)QB(e)&&e.traverseEntity(A,I+1)}traverseVisibleEntity(A){A(this);for(let I of this.children)QB(I)&&I.visible&&I.traverseVisibleEntity(A)}updateMatrix(){super.updateMatrix(),this.cloner&&this.cloner.onObjUpdateMatrix(),this.dispatchEvent({type:"updateMatrix"})}updateMatrixWorld(A){super.updateMatrixWorld(A),this.dispatchEvent({type:"updateMatrixWorld"})}copy(A,I=!1){return super.copy(A,I),this.dataPatched=A.dataPatched,this.raycastLock=A.raycastLock,this.scaleLock=A.scaleLock,this.hiddenMatrix.copy(A.hiddenMatrix),this}hasEntityChild(){return this.children.some(A=>QB(A))}isAncestorOf(A){if(this.uuid===A)return!1;let I=!1;return this.traverseEntity(e=>{e.uuid===A&&(I=!0)}),I}toObjectTransformState(A=[]){this.updateWorldMatrix(!0,!1);let I={position:this.position.toArray(),rotation:[this.rotation.x*vg.RAD2DEG,this.rotation.y*vg.RAD2DEG,this.rotation.z*vg.RAD2DEG],scale:this.scale.toArray(),hiddenMatrix:this.hiddenMatrix.toArray()};return iy(I,A)}getTransformValues(A,I,e){return I[A].map((i,t)=>(e==null?void 0:e.shared.getVariable(i,[this.uuid,A,wZ[t]]))??i)}updateTransformState(A,I){let e=!1;return A.position&&(this.position.fromArray(this.getTransformValues("position",A,I)),e=!0),A.rotation&&(Uu.fromArray(this.getTransformValues("rotation",A,I)).multiplyScalar(vg.DEG2RAD),this.rotation.setFromVector3(Uu),e=!0),A.scale&&(this.scale.fromArray(this.getTransformValues("scale",A,I)),e=!0),A.hiddenMatrix!==void 0&&(e=!0,this.hiddenMatrix.fromArray(A.hiddenMatrix??NQ.identity)),e&&(this.updateMatrix(),this.resetBBoxNeedsUpdate(),this.invalidateClonerTransform(this),this.traverseEntityAncestors(i=>{i.invalidateClonerTransform(this)})),A.position&&A.rotation&&A.scale&&A.hiddenMatrix!==void 0&&this.updateWorldMatrix(!1,!0),e}onVariableUpdate(A=!1){if(A){this.resetBBoxNeedsUpdate();return}this.updateMatrix(),this.resetBBoxNeedsUpdate(),this.invalidateClonerTransform(this),this.traverseEntityAncestors(I=>{I.invalidateClonerTransform(this)})}dispose(){this.disposed=!0,this.cloner&&(this.cloner.removeFromParent(),this.cloner=void 0)}disposeChildrenRecursively(){for(let A of this.children)MI.is(A)&&A.disposeRecursively()}disposeRecursively(){this.dispose(),this.children.forEach(A=>{MI.is(A)&&A.disposeRecursively()})}toState(A=[]){let I={name:this.name,visible:this.visible,raycastLock:this.raycastLock,...this.toObjectTransformState(A)};return iy(I,A)}updateByObjUpdateOp(A,I){A!==void 0&&this.updateByOp({type:0,props:A,path:[]},{...this.data,...A},I,!1)}updateByOp(A,I,e,i){let t=this.data;this.data=I;let C=A,o=AC(A.path,["states","*"]);if(o!==null){if(A.type===0){let[B]=o;if((this==null?void 0:this.stateSelection)===B){let a={...A.props};if(delete a.name,Object.values(A.props).some(s=>s===void 0)){let s=this.data;if(s!==void 0){let r=ji.zoom(s,A.path.slice(2));if(r)for(let Q in A.props)A.props[Q]===void 0&&Q in r&&(a[Q]=r[Q])}}C={...A,props:a,path:A.path.slice(2)}}}}else if(A.type===0){let B=this.stateSelection?this.data.states.data(this.stateSelection):void 0;if(B!==void 0){if(A.props.name!==void 0&&B.name){let{name:s,...r}=B;B=r}if(A.props.material!==void 0&&"material"in B){let{material:s,...r}=B;B=r}let a=ji.removeOverridden(A.path,A.props,B);C={...A,props:a}}}if(this.updateByPatchedOpBase(C,cr.patch(this.data,this.stateSelection?this.data.states.data(this.stateSelection):void 0),e),AC(A.path,["overrides"])){let B=[],a=[...A.path];for(B.push(a[1]),a.splice(0,2);a.length>0&&a[0]==="descendants";)B.push(a[1]),a.splice(0,2);if(B[B.length-1]===void 0){if(A.type===0)for(let s of Object.keys(A.props)){B[B.length-1]=s;let r=e.scene.findInstance([this.uuid,...B]);r&&(r.overrideData=A.props[s],r.updateState(Da.apply(r.component.data,r.overrideData),e))}}else{let s=e.scene.findInstance([this.uuid,...B]);if(s){let r=ji.zoom(s.component.data,a);if(A={...A,path:a},A.type===0){let Q=A.props;if(r)for(let[E,n]of Object.entries(A.props))n===void 0&&(Q===A.props&&(Q={...A.props}),Q[E]=r[E]);A={...A,props:Q}}s.overrideData=_c.resolve(I.overrides,B),s.updateByOp(A,Fi.applySimple(s.data,A),e,!1)}}}else if(this.instances.length>0){let B;if(A.path.length===0&&A.type===0){let a;for(let s of sa.rootOverrideProps)s in A.props&&(a===void 0&&(a={}),a[s]=A.props[s]);a&&(B={...A,props:a})}else for(let a of sa.rootOverrideProps)if(AC(A.path,[a])){B=A;break}B!==void 0&&this.instances.forEach(a=>{if(a.isInstanceRoot){let s=Da.filterOp(a.overrideData,B);s&&a.updateByOp(s,Fi.applySimple(a.data,s),e,!0)}}),this.instances.forEach(a=>{if(!a.isInstanceRoot){let s=Da.filterOp(a.overrideData,A);if(s){let r;t===a.data&&A===s?r=I:r=Fi.applySimple(a.data,s),a.updateByOp(s,r,e,!0)}}})}}updateByPatchedOpBase(A,I,e){if(this.dataPatched=I,A.path.length===0&&A.type===0)A.props.type!==void 0&&!Kr.is(A.props.type)&&Qa.changeEntityProptotype(this,I,e);else if(A.path.length===1&&A.path[0]==="geometry"&&A.type===0&&"type"in A.props){Qa.changeEntityProptotype(this,I,e);for(let i of this.children)MI.is(i)&&i.updateVisible()}this.updateByPatchedOp(A,I,e)}updateByPatchedOp(A,I,e){if(A.path.length===0&&A.type===0&&this.updateState(A.props,e),AC(A.path,["pathSnapping"])!==null&&this.updatePathSnapping(I.pathSnapping),AC(A.path,["cloner"])!==null){let i=Fi.drop(A,1);i.path.length===0&&i.type===0&&i.props.disabled===!0?this.setFromClonerState(null,e):this.cloner?this.cloner.updateState(I.cloner,e.scene):(this.setFromClonerState(I.cloner,e),this.expandCloner(e.scene)),this.updateVisible()}}updatePathSnapping(A){this._updatedPathSnapping=A,this._needApplyPathSnapping=!0}get updatedPathSnapping(){return this._updatedPathSnapping}applyPathSnapping(A){var n,h,l,c,d;let I=((n=this._updatedPathSnapping)==null?void 0:n.pathId)??this.dataPatched.pathSnapping.pathId,e=((h=this._updatedPathSnapping)==null?void 0:h.slide)??this.dataPatched.pathSnapping.slide??0,i=((l=this._updatedPathSnapping)==null?void 0:l.offset)??this.dataPatched.pathSnapping.offset,t=((c=this._updatedPathSnapping)==null?void 0:c.orientation)??this.dataPatched.pathSnapping.orientation;if(I===null)return;let C=A.find(I);if(!C||this._needApplyPathSnapping===!1)return;this._needApplyPathSnapping=!1;let o=C.data;if(o.geometry.path.points.length<=1)return;let B=bR(o.geometry.path),a=(e+i)%1;e+i===1&&a===0&&(a=1);let s=B.getPointAt(a),r=this.parent?(d=this.parent)==null?void 0:d.matrixWorld:new zA;C.updateMatrixWorld();let Q=new zA().multiplyMatrices(r.clone().invert(),C.matrixWorld);s.applyMatrix4(Q);let E={position:s.toArray(),rotation:o.rotation};if(t==="tangential"){let u=new zA().extractRotation(C.matrixWorld),y=B.getTangentAt(a).applyMatrix4(u).add(s),f=new zA().lookAt(s,y,SZ),k=Uu.setFromEuler(new Ei().setFromRotationMatrix(f)).multiplyScalar(vg.RAD2DEG);E={...E,rotation:k.toArray()}}this.updateTransformState(E),this.traverseEntity(u=>{u._cameraType&&u.dispatchEvent(yZ)})}updateVisible(){var A;this.visible=this.dataPatched.visible&&(!this.dataPatched.cloner||(this.dataPatched.cloner.disabled??!1)||((A=this.dataPatched.cloner)==null?void 0:A.hideBase)!==!0)}updateState_Entity(A,I){A.name!==void 0&&(this.name=A.name),A.raycastLock!==void 0&&(this.raycastLock=A.raycastLock),A.visible!==void 0&&(this.updateVisible(),this.resetBBoxNeedsUpdate()),I&&"cloner"in A&&A.cloner!==void 0&&(this.setFromClonerState(A.cloner,I),this.updateVisible()),this.updateTransformState(A,I)}get attachedSurfaceCloners(){return this.children.filter(A=>A instanceof Qa.Cloner&&A.parameters.type==="toObject")}setFromClonerState(A,I){this.disposed||(A===null||A.disabled?(this.cloner&&this.cloner.removeFromParent(),this.cloner=void 0):this.cloner===void 0?(this.cloner=new Qa.Cloner(this,A),I.scene.addPendingExpandCloner(this)):this.cloner.updateState(A,I.scene))}expandCloner(A){!this.disposed&&this.cloner&&this.cloner.expandClones(A)}invalidateClonerTransform(A){this.cloner&&this.cloner.invalidateTransform(A)}},YR=class{static create(g){return this.build(this.normalizeInputs(g))}static normalizeInputs(g,A){let I=Object.assign({},(A==null?void 0:A.parameters)??{width:100,radialSegments:64,heightSegments:1,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadius:8,cornerSegments:8,hollow:0},g.parameters);I.thetaLength=vg.clamp(I.thetaLength,0,360);let e=I.width/2,i=I.radiusTop??e,t=I.radiusBottom??e;return i===t?(i=e,t=e):i>t?(i=e,t=t*e/i):(i=i*e/t,t=e),{parameters:Object.assign(I,{width:Math.abs(I.width),height:Math.abs(I.height??I.width),depth:Math.abs(I.depth??I.width),radiusTop:i,radiusBottom:t})}}static build(g){let{width:A,depth:I,height:e,radialSegments:i,heightSegments:t,openEnded:C,thetaStart:o,thetaLength:B,radiusTop:a,radiusBottom:s,cornerRadius:r,cornerSegments:Q,hollow:E}=g.parameters,n;return B===0?(n=new bg,n.setAttribute("position",new pg([],3))):r||E?n=new xR(a,s,e,i,t,C,o,B*Math.PI/180,r,r,Q,E):n=new jw(a,s,e,i,t,C,o,B*Math.PI/180),n.scale(1,1,I/A),Object.assign(n,{userData:{...g,type:"CylinderGeometry"}})}};function _B(g,A,I){I.x=g.x*A.x,I.y=g.y,I.z=g.x*A.y}function wM(g){return new sA(g.y,-g.x)}var xR=class extends bg{constructor(g,A,I,e,i,t,C,o,B,a,s,r,Q=!1){super(),this.type="RoundedCylinderBufferGeometry",g=g!==void 0?g:1,A=A!==void 0?A:1,I=I||1,e=Math.floor(e)||8,i=Math.floor(i)||1,t=t!==void 0?t:!1,C=C!==void 0?C:0,o=o!==void 0?o:Math.PI*2,t&&(B=0,a=0);let E=[],n=[],h=[],l=[],c=0,d=I/2,u=new J,y=new J;Q&&g==0&&(g=B),Q&&A==0&&(A=a);let f=new sA(g,d),k=new sA(A,-d),M=null,G=null,v=null,N=null,b=f.clone().sub(k),O=0,H=0,_=0;r>0&&(O=Math.min(g,A)*(1-r),H=g-O,_=A-O);let gA=f.clone();gA.x-=O;let CA=Math.PI-b.angle(),AA=b.angle(),BA=Math.tan(AA/2),iA=Math.tan(CA/2),rA=BA+iA,$=r?rA:iA,IA=r?rA:BA;if(B=Math.min(B,(g-H)/$,b.length()/rA),a=Math.min(a,(A-_)/IA,b.length()/rA),B>0){let nA=B/BA;M=f.clone().sub(new sA(nA,B)),r&&(v=M.clone(),v.x-=O-rA*B),f.sub(b.clone().setLength(nA))}if(a>0){let nA=a/iA;G=k.clone().sub(new sA(nA,-a)),k.add(b.clone().setLength(nA)),r&&(N=G.clone(),N.x-=O-rA*a,gA.sub(b.clone().setLength(nA)))}b=f.clone().sub(k);let hA=b.length()<.5,QA=[];for(let nA=0;nA<=e;nA++){let fA=[],uA=nA/e,VA=uA*o+C,yA=new sA(Math.sin(VA),Math.cos(VA));N&&G?(DA(fA,uA,yA,CA,a,N,-1,!0),DA(fA,uA,yA,AA,a,G,-1,!1)):G?(eA(fA,yA,G.x,0,-1),DA(fA,uA,yA,AA,a,G,-1,!1)):t||eA(fA,yA,A,_,-1);let LA=wM(b).normalize();if(_B(LA,yA,u),!hA)for(let HA=0;HA<=i;HA++){let Ag=HA/i,gg=b.clone().multiplyScalar(Ag).add(k);_B(gg,yA,y),n.push(y.x,y.y,y.z),h.push(u.x,u.y,u.z),l.push(uA,.5+y.y/I),fA.push(c++)}if(v&&M?(DA(fA,uA,yA,CA,B,M,1,!1),DA(fA,uA,yA,AA,B,v,1,!0)):M?(DA(fA,uA,yA,CA,B,M,1,!1),eA(fA,yA,M.x,0,1)):t||eA(fA,yA,g,H,1),r&&!hA){let HA=wM(b).multiplyScalar(-1).normalize();_B(HA,yA,u);for(let Ag=0;Ag<=i;Ag++){let gg=Ag/i,Dg=b.clone().multiplyScalar(-gg).add(gA);_B(Dg,yA,y),n.push(y.x,y.y,y.z),h.push(u.x,u.y,u.z),l.push(uA,.5+y.y/I),fA.push(c++)}}r&&!t&&fA.push(fA[0]),QA.push(fA)}for(let nA=0;nAE.push(Dg,Eg,$A):(Dg,Eg,$A)=>E.push(Dg,$A,Eg),Ag=new sA((g+A+H+_)/4,0);_B(Ag,VA,LA),n.push(LA.x,LA.y,LA.z),h.push(yA.x,0,yA.y),l.push(.5,.5);let gg=c++;for(let Dg of fA){let Eg=n.slice(Dg*3,Dg*3+3);n.push(...Eg),h.push(yA.x,0,yA.y);let $A=l.slice(Dg*2,Dg*2+2);l.push(...$A),c++}for(let Dg=gg+1;Dg0||s>0||B<360?Q=new xR(0,A/2,e,i,t,C,o,B*Math.PI/180,a,s,r,0,!0):Q=new zN(A/2,e,i,t,C),Q.scale(1,1,I/A),Object.assign(Q,{userData:{...g,type:"ConeGeometry"}})}},GZ=class{static create(g){return this.build(this.normalizeInputs(g))}static normalizeInputs(g,A){let I=Object.assign({},(A==null?void 0:A.parameters)??{width:100,widthSegments:1,heightSegments:1,depthSegments:1,cornerRadius:8,cornerSegments:8},g.parameters);return{parameters:Object.assign(I,{width:Math.abs(I.width),height:Math.abs(I.height??I.width),depth:Math.abs(I.depth??I.width)})}}static build(g){let{width:A,height:I,depth:e,widthSegments:i,heightSegments:t,depthSegments:C,cornerRadius:o,cornerSegments:B}=g.parameters,a;return o==0?a=new Go(A,I,e,i,t,C):a=new kZ(A,I,e,i,t,C,o,B),Object.assign(a,{userData:{...g,type:"CubeGeometry"}})}},Nu=Math.PI/2,kZ=class extends bg{constructor(g=1,A=1,I=1,e=1,i=1,t=1,C=0,o=4){super(),this.type="BoxGeometry";let B=this;e=Math.floor(e),i=Math.floor(i),t=Math.floor(t),o=Math.floor(o),C=Math.min(C,g/2,A/2,I/2);let a=[],s=[],r=[],Q=[],E=0,n=0;h("z","y","x",-1,-1,I,A,g,t,i,0),h("z","y","x",1,-1,I,A,-g,t,i,1),h("x","z","y",1,1,g,I,A,e,t,2),h("x","z","y",1,-1,g,I,-A,e,t,3),h("x","y","z",1,-1,g,A,I,e,i,4),h("x","y","z",-1,-1,g,A,-I,e,i,5),C>0&&(l("z","y","x",-1,-1,1,I,A,g,t,0),l("z","y","x",1,-1,-1,I,A,g,t,1),l("z","y","x",-1,1,-1,I,A,g,t,1),l("z","y","x",1,1,1,I,A,g,t,0),l("x","y","z",-1,-1,-1,g,A,I,e,0),l("x","y","z",1,-1,1,g,A,I,e,1),l("x","y","z",-1,1,1,g,A,I,e,0),l("x","y","z",1,1,-1,g,A,I,e,1),l("y","x","z",-1,-1,1,A,g,I,i,0),l("y","x","z",1,-1,-1,A,g,I,i,1),l("y","x","z",1,1,1,A,g,I,i,1),l("y","x","z",-1,1,-1,A,g,I,i,0),c(1,1,1),c(-1,1,1),c(1,-1,1),c(-1,-1,1),c(1,1,-1),c(-1,1,-1),c(1,-1,-1),c(-1,-1,-1)),this.setIndex(a),this.setAttribute("position",new pg(s,3)),this.setAttribute("normal",new pg(r,3)),this.setAttribute("uv",new pg(Q,2));function h(d,u,y,f,k,M,G,v,N,b,O){let H=(M-2*C)/N,_=(G-2*C)/b,gA=M/2-C,CA=G/2-C,AA=v/2,BA=N+1,iA=b+1,rA=0,$=0,IA=new J;for(let hA=0;hA0?1:-1,r.push(IA.x,IA.y,IA.z),Q.push(DA/N),Q.push(1-hA/b),rA+=1}}for(let hA=0;hA0?(N,b,O)=>a.push(N,b,O):(N,b,O)=>a.push(N,O,b);for(let N=0;N<=o;N++){let b=[],O=Nu*(1-N/o),H=Math.cos(O),_=Math.sin(O),gA=0;for(let CA=0;CA<=N;CA++){let AA=Math.cos(gA),BA=Math.sin(gA);f.x=H*AA,f.y=_,f.z=H*BA;let iA=k.clone().addScaledVector(f,C);s.push(d*iA.x,u*iA.y,y*iA.z),r.push(d*f.x,u*f.y,y*f.z),Q.push(0,0),b.push(E++),gA+=Nu/N}M.push(b)}let v=M.length-1;for(let N=0;Nu.subVectors(iA,rA).normalize(),f=(iA,rA)=>Array(iA).fill(void 0).map(rA),k=f(A.length/3,(iA,rA)=>new J().fromArray(A,rA*3).setLength(i)),M=[],G=1e6;for(let iA=0;iAyA[0]==hA)}M.push(aA)}let v=[];{let iA=0,rA=0,$,IA,hA=Q==3;for(let QA=0;QA<=C;QA++){$=QA*(QA+1)/2,IA=(QA+1)*(QA+2)/2;for(let DA=0;DAf(Q,()=>E.clone()));for(let iA=0;iAaA.add(nA),QA).multiplyScalar(1/Q);for(let aA=0;aAuA[yA]);o.push(...VA.map(yA=>[yA.x,yA.y,yA.z]).flat()),a.push(...VA.map(yA=>(y(yA,N),[u.x,u.y,u.z])).flat())}}let AA=[];for(let iA=0;iADA%G==iA),hA=gA[iA][rA],QA=gA[$][IA];for(let DA=0;DA{o.push(uA[0].x,uA[0].y,uA[0].z),a.push(uA[1].x,uA[1].y,uA[1].z)})}AA.push(hA[0][0],QA[d][0],hA[d][0],QA[0][0])}}for(;AA.length;){let iA,rA,$,IA;[iA,rA]=AA.splice(0,2);let hA=[iA];for(;iA!=rA;)hA.push(rA),$=AA.indexOf(rA),IA=$%2,rA=AA.splice($-IA,2)[1-IA];u.subVectors(hA[0],hA[1]).cross(E.subVectors(hA[0],hA[2])).normalize();let QA=u.dot(hA[0])<0;QA&&u.negate();for(let DA=1;DA<=hA.length-2;DA++)[hA[DA+ +QA],hA[DA+1-+QA],hA[0]].forEach(eA=>{o.push(eA.x,eA.y,eA.z),a.push(u.x,u.y,u.z)})}}function r(){let Q=new J;for(let M=0;M{N<0&&M.x===1&&(B[G]=M.x-1),v.x===0&&v.z===0&&(B[G]=N/2/Math.PI+.5)};for(let M=0,G=0;M.9&&O<.1&&(G<.2&&(B[M+0]+=1),v<.2&&(B[M+2]+=1),N<.2&&(B[M+4]+=1))}function f(M){return Math.atan2(M.z,-M.x)}function k(M){return Math.atan2(-M.y,Math.sqrt(M.x*M.x+M.z*M.z))}}}static fromJSON(A){return new N0(A.vertices,A.indices,A.radius,A.corner,A.cornerSides)}},MZ=class{static create(g){return this.build(this.normalizeInputs(g))}static normalizeInputs(g,A){let I=Object.assign({},(A==null?void 0:A.parameters)??{width:100,detail:0,corner:0,cornerSides:4},g.parameters);return{parameters:Object.assign(I,{width:Math.abs(I.width),height:Math.abs(I.height??I.width),depth:Math.abs(I.depth??I.width)})}}static build(g){let{width:A,height:I,depth:e,detail:i,corner:t,cornerSides:C}=g.parameters,o=i===0&&t!==0?new HR(A*.5,t,C):new XN(A*.5,i);return o.scale(1,I/A,e/A),Object.assign(o,{userData:{...g,type:"DodecahedronGeometry"}})}},HR=class extends N0{constructor(g=1,A=.2,I=4){let e=(1+Math.sqrt(5))/2,i=1/e,t=[-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,-e,0,-i,e,0,i,-e,0,i,e,-i,-e,0,-i,e,0,i,-e,0,i,e,0,-e,0,-i,e,0,-i,-e,0,i,e,0,i],C=[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],o="DodecahedronGeometry";super(t,C,o,g,A,I),this.type=o}static fromJSON(g){return new HR(g.radius,g.corner,g.cornerSides)}},KE=1e-12,F0=class{constructor(g){this.position=new sA,this.startPosition=new sA,this.uuid=vg.generateUUID(),this.position=g.clone()}start(){this.reset()}reset(){this.startPosition.copy(this.position)}applyOffset(g){this.position.copy(this.startPosition).add(g)}copy(g){return this.position.copy(g.position),this.startPosition.copy(g.startPosition),this}clone(){return new F0(this.position).copy(this)}toJSON(){return[this.position.x,this.position.y]}},Ty=class extends F0{constructor(g){super(g.position),this.parent=g}copy(g){return super.copy(g),this}clone(){return new Ty(this.parent).copy(this)}},lQ=class extends F0{constructor(A,I){super(I),this.controls=[],this.roundness=0,this.areControlsDirectionsMirrored=!0,this.uuid=A,this.controls.push(new Ty(this),new Ty(this))}static create(A,I){let e=new lQ(A,new sA(...I.position));return e.controls[0].position.set(...I.controlPrevious.position),e.controls[1].position.set(...I.controlNext.position),e.roundness=I.roundness,e.areControlsDirectionsMirrored=I.areControlsDirectionsMirrored,e}getOppositeControl(A){let I=this.controls.indexOf(A);return I===0?this.controls[1]:I===1?this.controls[0]:null}applyOffsetToControls(A,I=1){for(let e=0,i=this.controls.length;eg,oE=new sA,VD=new sA,mZ=new sA,UZ=new sA,NZ=new sA,FZ=new sA,TR=new J,OR=new J;function RZ(g){let A=new sA;A.addVectors(g.v0,oE.subVectors(g.v1,g.v0).multiplyScalar(2/3));let I=new sA;return I.addVectors(g.v2,VD.subVectors(g.v1,g.v2).multiplyScalar(2/3)),new kC(g.v0,A,I,g.v2)}function XE(g,A,I=Number.EPSILON){return Math.abs(g-A)Math.PI&&(s*=-1),XE(a,o)?r=(o+a)*(e/s-.5)*8/3/(C-B):r=(C+B)*(e/s-.5)*8/3/(a-o),i.set(A.x-r*o,A.y+r*C),t.set(I.x+r*a,I.y-r*B),[i,t]}function fM(g,A){return g.position.equals(g.controls[1].position)&&A.position.equals(A.controls[0].position)}function GM(g,A){return Oy(g.position,g.controls[1].position,A.position)&&Oy(g.position,A.controls[0].position,A.position)}function YZ(g,A,I,e,i=.5){let t=oE.subVectors(A,g).multiplyScalar(i).add(g),C=VD.subVectors(I,A).multiplyScalar(i).add(A),o=mZ.subVectors(e,I).multiplyScalar(i).add(I),B=t,a=UZ.subVectors(C,t).multiplyScalar(i).add(t),s=NZ.subVectors(o,C).multiplyScalar(i).add(C),r=o,Q=FZ.subVectors(s,a).multiplyScalar(i).add(a);return[g.x,g.y,B.x,B.y,a.x,a.y,Q.x,Q.y,s.x,s.y,r.x,r.y,e.x,e.y]}function xZ(g,A,I=12,e=!0){let i=OR.set(0,0,0),t,C=0;for(let o=0;o1&&!(g.getX(C-1)===g.getX(0)&&g.getY(C-1)===g.getY(0)&&g.getZ(C-1)===g.getZ(0))&&(g.setXYZ(C,g.getX(0),g.getY(0),g.getZ(0)),C++),g}function HZ(g,A,I,e=12,i=!0){let t=OR.set(0,0,0),C=0,o=[];for(let B=0;B1&&!(g.getX(C-1)===g.getX(0)&&g.getY(C-1)===g.getY(0)&&g.getZ(C-1)===g.getZ(0))&&(g.setXYZ(C,g.getX(0),g.getY(0),g.getZ(0)),C++),o}function kM(g,A=12,I=!1){let e=[];for(let i=0,t=g.length;i0&&(e[i-1]+=B),o+=B}C.curveAfter!==void 0&&(o+=Mr(C.curveAfter,A)),e.push(o)}return g.length>0&&I&&g[0].roundedCurveCorner!==void 0&&(e[g.length-1]+=Mr(g[0].roundedCurveCorner,A)*.5),e}function Mr(g,A=12){return g&&g instanceof KD?A*2:g&&(g instanceof FC||g instanceof WN)?1:g&&g instanceof Pw?A*g.points.length:A}function TZ(g,A,I=12,e=!0){let i,t=0;for(let C=0;C1&&!(XE(g[t-1],g[1],KE)&&XE(g[t-2],g[0],KE))&&(g.push(g[0],g[1]),t++),g}var Fu=new sA,OZ=new sA,_Z=new sA,PZ=new sA,jZ=new sA,WZ=new sA,fe=class extends yc{constructor(A=100,I=100){super(),this.points=[],this.shapeHoles=[],this.plane=new Nt(new J(0,0,-1)),this.subdivision=0,this.controlSnapDistance=4,this.pointIDs=0,this.isMesh2D=!1,this.isText=!1,this._roundness=0,this.isClosed=!1,this.useCubicForRoundedCorners=!0,this.uuid=vg.generateUUID(),this.needsUpdate=!1,this.roundedCurves=[],this._width=A,this._height=I}static createFromState(A,I,e){let i=new fe;return i.isClosed=A.isClosed,i.points=A.points.map(t=>lQ.create(t.id,t.data)),typeof A.roundness=="number"&&(i.roundness=A.roundness),i.shapeHoles=A.shapeHoles.map(t=>fe.createFromState(t)),I!==void 0&&e!==void 0&&i.applySize(I,e),i.update(),i}get width(){return this._width}get height(){return this._height}get roundness(){return this._roundness}set roundness(A){if(this._roundness!==A){this._roundness=A;for(let I=0,e=this.points.length;Ithis.getPointIndexById(I)).filter(I=>I>=0)}getPointIndexById(A){let I=this.points.length,e=this.points.findIndex(i=>i.uuid===A);if(e<0){let i=I;for(let t=0,C=this.shapeHoles.length;t0){let I=this.points.length;for(let e=0,i=this.shapeHoles.length;e=0)return I;if(I=this.points.length,this.shapeHoles.length>0)for(let e=0,i=this.shapeHoles.length;e=0)return I+C;I+=t.points.length}return-1}getAllPoints(){let A=[].concat(...this.shapeHoles.map(I=>I.points));return[...this.points,...A]}applySize(A,I){A===0&&(A=.001),I===0&&(I=.001),this._width=A,this._height=I}applyScale(A,I){let e=Fu.set(A,I);for(let i=0,t=this.points.length;i=0&&this.points.splice(I,1),this.needsUpdate=!0}removePointById(A){let I=this.points.find(e=>e.uuid===A);I&&this.removePoint(I)}update(){for(let A=0,I=this.shapeHoles.length;At+C,0)+1}computeCurveDivisions(A=12){return this.curveDivisions=kM(this.points,A,!1),this.roundedCurveDivisions=kM(this.points,A,!0),this.curveDivisions}extractFilteredShapePointsToBuffer(A,I,e=12){return HZ(A,this.curves,I,e,this.autoClose).reduce((i,t)=>i+t,0)*2}extractShapePointsToFlatArray(A,I=12){return this.subdivision=I,this.curveDivisions===void 0&&this.computeCurveDivisions(I),TZ(A,this.roundedCurves,I,this.autoClose)}getCurveIndexFromVertexId(A,I=!1){let e=0;this.curveDivisions===void 0&&this.computeCurveDivisions(this.subdivision);let i=I?this.roundedCurveDivisions:this.curveDivisions,t=0;I&&this.points[0].roundedCurveCorner!==void 0&&(t=Mr(this.points[0].roundedCurveCorner,this.subdivision)*.5);let C=A-t;C<0&&(C+=i.reduce((o,B)=>o+B,0));for(let o=0,B=i.length;o=this.points.length-1?0:A+1],C=this.curveDivisions,o=C[A];if(fM(i,t)){let a=i.position.distanceTo(t.position);return i.position.distanceTo(Fu.set(e.x,e.y))/a}let B=0;for(let a=0;a2){let I=0;for(let e=0,i=this.points.length;e0&&!a){let s=t.curveBefore,r=t.curveAfter;if(s===void 0||r===void 0)continue;let Q=t.roundedCurveBefore,E=t.roundedCurveAfter,n=s.getLength(),h=r.getLength(),l=Math.min(B,n*.499),c=Math.min(B,h*.499),d=Math.min(l,c),u=1-d/n,y=d/h,f=s.getPointAt(u,Fu),k=r.getPointAt(y,OZ);this._subSplitCurve(s,Q,u,f,void 0),this._subSplitCurve(r,E,y,void 0,k);let M;if(this.useCubicForRoundedCorners){let G=_R(f,t.position,k)/2,v=Math.tan(G)*f.distanceTo(t.position),[N,b]=qZ(f,k,v,_Z,PZ),O=LZ(N,b,t.position),[H,_]=bZ(O,f,k,v,jZ,WZ);M=new kC(f.clone(),H.clone(),_.clone(),k.clone())}else M=new fa(f.clone(),t.position.clone(),k.clone());t.roundedCurveCorner=M,this.roundedCurves.splice(e+I,0,M),I++}}}}_subSplitCurve(A,I,e,i,t){if(A instanceof FC)i!==void 0&&I.v2.copy(i),t!==void 0&&I.v1.copy(t);else{let C=A,o=I,B=C.getUtoTmapping(e,0),a=YZ(C.v0,C.v1,C.v2,C.v3,B);return i!==void 0&&(o.v0.set(a[0],a[1]),o.v1.set(a[2],a[3]),o.v2.set(a[4],a[5]),o.v3.set(a[6],a[7])),t!==void 0&&(o.v0.set(a[6],a[7]),o.v1.set(a[8],a[9]),o.v2.set(a[10],a[11]),o.v3.set(a[12],a[13])),o}return I}clone(){let A=new fe(this._width,this._height);return A.points=this.points.map(I=>I.clone()),A.isClosed=this.isClosed,A.roundness=this.roundness,A.isMesh2D=this.isMesh2D,A.shapeHoles=this.shapeHoles.map(I=>I.clone()),A}toJSON(){return{points:this.points.reduce((A,I)=>A.concat(I.toJSON()),[]),shapeHoles:this.shapeHoles.map(A=>A.toJSON()),isClosed:this.isClosed,roundness:this.roundness}}fromJSON(A){var e;this.points=[],this.pointIDs=0;let I=A.points.length/7;for(let i=0;i{let t=new fe;return t.fromJSON(i),t}):[],this.isClosed=A.isClosed,this._roundness=A.roundness,this._update(),this}fromShape(A,I=!1){this.isText=I;let e=(t,C)=>{C instanceof kC&&C.v3.equals(t.position)&&t.controls[0].position.copy(C.v2)},i=t=>{let C=[],o,B;for(o=0,B=t.length;o0?t[o-1]:null,E;r instanceof kC?(E=this.createPoint(r.v0),E.controls[1].position.copy(r.v1)):r instanceof FC&&(E=this.createPoint(r.v1)),E!==void 0&&(Q!==null&&e(E,Q),C.push(E))}let a=t[t.length-1],s=!1;return a instanceof kC?a.v3.equals(C[0].position)&&(C[0].controls[0].position.copy(a.v2),s=!0):a instanceof FC&&a.v2.equals(C[0].position)&&(s=!0),this.isClosed=s,C};return this.points=i(A.curves),A instanceof yc&&(this.shapeHoles=A.holes.map(t=>{let C=new fe;return C.fromShape(t),C})),this.update(),this}updatePoint(A,I){let e=this.getPointByUuid(A);e&&(I.position!==void 0&&e.position.fromArray(I.position),I.roundness!==void 0&&(e.roundness=I.roundness),I.areControlsDirectionsMirrored!==void 0&&(e.areControlsDirectionsMirrored=I.areControlsDirectionsMirrored),this.needsUpdate=!0)}updatePreviousControl(A,I){var i;let e=(i=this.getPointByUuid(A))==null?void 0:i.controls[0];e&&(I.position&&e.position.fromArray(I.position),this.needsUpdate=!0)}updateNextControl(A,I){var i;let e=(i=this.getPointByUuid(A))==null?void 0:i.controls[1];e&&(I.position&&e.position.fromArray(I.position),this.needsUpdate=!0)}},_y=Math.PI*2;function Ru({x:g,y:A},I,e,i,t){return{x:g*I+i,y:A*e+t}}function ZZ(g,A){let I=A===1.5707963267948966?.551915024494:A===-1.5707963267948966?-.551915024494:1.3333333333333333*Math.tan(A/4),e=Math.cos(g),i=Math.sin(g),t=Math.cos(g+A),C=Math.sin(g+A);return[{x:e-i*I,y:i+e*I},{x:t+C*I,y:C-t*I},{x:t,y:C}]}function MM(g,A,I,e){let i=g*e-A*I<0?-1:1,t=Math.min(1,Math.max(-1,g*I+A*e));return i*Math.acos(t)}function VZ(g,A,I,e,i,t,C,o,B,a){let s=Math.pow(i,2),r=Math.pow(t,2),Q=Math.pow(C,2),E=Math.pow(o,2),n=s*r-s*E-r*Q;n<0&&(n=0),n/=s*E+r*Q,n=Math.sqrt(n)*(B===a?-1:1);let h=n*i/t*o,l=n*-t/i*C,c=h+(g+I)/2,d=l+(A+e)/2,u=(C-h)/i,y=(o-l)/t,f=(-C-h)/i,k=(-o-l)/t,M=MM(1,0,u,y),G=MM(u,y,f,k);return!a&&G>0&&(G-=_y),a&&G<0&&(G+=_y),{centerx:c,centery:d,ang1:M,ang2:G}}function zZ({px:g,py:A,cx:I,cy:e,rx:i,ry:t,largeArcFlag:C,sweepFlag:o}){let B=[];if(i===0||t===0)return[];let a=(g-I)/2,s=(A-e)/2;if(a===0&&s===0)return[];i=Math.abs(i),t=Math.abs(t);let r=Math.pow(a,2)/Math.pow(i,2)+Math.pow(s,2)/Math.pow(t,2);r>1&&(i*=Math.sqrt(r),t*=Math.sqrt(r));let Q=VZ(g,A,I,e,i,t,a,s,C,o),{ang1:E,ang2:n}=Q,{centerx:h,centery:l}=Q,c=Math.abs(n)/(_y/4);Math.abs(1-c)<1e-7&&(c=1);let d=Math.max(Math.ceil(c),1);n/=d;for(let u=0;u{let{x:y,y:f}=Ru(u[0],i,t,h,l),{x:k,y:M}=Ru(u[1],i,t,h,l),{x:G,y:v}=Ru(u[2],i,t,h,l);return{x1:y,y1:f,x2:k,y2:M,x:G,y:v}})}var jI;(function(g){g[g.ODD=0]="ODD",g[g.NONZERO=1]="NONZERO",g[g.POSITIVE=2]="POSITIVE",g[g.NEGATIVE=3]="NEGATIVE",g[g.ABS_GEQ_TWO=4]="ABS_GEQ_TWO"})(jI||(jI={}));var Pe;(function(g){g[g.POLYGONS=0]="POLYGONS",g[g.CONNECTED_POLYGONS=1]="CONNECTED_POLYGONS",g[g.BOUNDARY_CONTOURS=2]="BOUNDARY_CONTOURS"})(Pe||(Pe={}));function jg(g,A){if(!g)throw A||"Assertion Failed!"}var Yg=function(){function g(){}return g.vertEq=function(A,I){return A.s===I.s&&A.t===I.t},g.vertLeq=function(A,I){return A.s0?i0?(I.t-e.t)*i+(I.t-A.t)*t:0},g.transEval=function(A,I,e){jg(g.transLeq(A,I)&&g.transLeq(I,e));var i=I.t-A.t,t=e.t-I.t;return i+t>0?i0?(I.s-e.s)*i+(I.s-A.s)*t:0},g.vertCCW=function(A,I,e){return A.s*(I.t-e.t)+I.s*(e.t-A.t)+e.s*(A.t-I.t)>=0},g.interpolate=function(A,I,e,i){return A=A<0?0:A,e=e<0?0:e,A<=e?e===0?(I+i)/2:I+(i-I)*(A/(A+e)):i+(I-i)*(e/(A+e))},g.intersect=function(A,I,e,i,t){var C,o,B;g.vertLeq(A,I)||(B=A,A=I,I=B),g.vertLeq(e,i)||(B=e,e=i,i=B),g.vertLeq(A,e)||(B=A,A=e,e=B,B=I,I=i,i=B),g.vertLeq(e,I)?g.vertLeq(I,i)?(C=g.edgeEval(A,e,I),o=g.edgeEval(e,I,i),C+o<0&&(C=-C,o=-o),t.s=g.interpolate(C,e.s,o,I.s)):(C=g.edgeSign(A,e,I),o=-g.edgeSign(A,i,I),C+o<0&&(C=-C,o=-o),t.s=g.interpolate(C,e.s,o,i.s)):t.s=(e.s+I.s)/2,g.transLeq(A,I)||(B=A,A=I,I=B),g.transLeq(e,i)||(B=e,e=i,i=B),g.transLeq(A,e)||(B=A,A=e,e=B,B=I,I=i,i=B),g.transLeq(e,I)?g.transLeq(I,i)?(C=g.transEval(A,e,I),o=g.transEval(e,I,i),C+o<0&&(C=-C,o=-o),t.t=g.interpolate(C,e.t,o,I.t)):(C=g.transSign(A,e,I),o=-g.transSign(A,i,I),C+o<0&&(C=-C,o=-o),t.t=g.interpolate(C,e.t,o,i.t)):t.t=(e.t+I.t)/2},g}(),JE=function(){function g(){this.next=null,this.prev=null,this.anEdge=null,this.trail=null,this.n=0,this.marked=!1,this.inside=!1}return g}(),ll=function(){function g(A){this.side=A,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(g.prototype,"Rface",{get:function(){return this.Sym.Lface},set:function(A){this.Sym.Lface=A},enumerable:!0,configurable:!0}),Object.defineProperty(g.prototype,"Dst",{get:function(){return this.Sym.Org},set:function(A){this.Sym.Org=A},enumerable:!0,configurable:!0}),Object.defineProperty(g.prototype,"Oprev",{get:function(){return this.Sym.Lnext},set:function(A){this.Sym.Lnext=A},enumerable:!0,configurable:!0}),Object.defineProperty(g.prototype,"Lprev",{get:function(){return this.Onext.Sym},set:function(A){this.Onext.Sym=A},enumerable:!0,configurable:!0}),Object.defineProperty(g.prototype,"Dprev",{get:function(){return this.Lnext.Sym},set:function(A){this.Lnext.Sym=A},enumerable:!0,configurable:!0}),Object.defineProperty(g.prototype,"Rprev",{get:function(){return this.Sym.Onext},set:function(A){this.Sym.Onext=A},enumerable:!0,configurable:!0}),Object.defineProperty(g.prototype,"Dnext",{get:function(){return this.Sym.Onext.Sym},set:function(A){this.Sym.Onext.Sym=A},enumerable:!0,configurable:!0}),Object.defineProperty(g.prototype,"Rnext",{get:function(){return this.Sym.Lnext.Sym},set:function(A){this.Sym.Lnext.Sym=A},enumerable:!0,configurable:!0}),g}(),Zs=function(){function g(){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 g}(),mM=function(){function g(){var A=new Zs,I=new JE,e=new ll(0),i=new ll(1);A.next=A.prev=A,A.anEdge=null,I.next=I.prev=I,e.next=e,e.Sym=i,i.next=i,i.Sym=e,this.vHead=A,this.fHead=I,this.eHead=e,this.eHeadSym=i}return g.prototype.makeEdge_=function(A){var I=new ll(0),e=new ll(1);A.Sym.sidethis.size||this.leq(e[i].key,e[t].key)){I[A].handle=i,e[i].node=A;break}I[A].handle=t,e[t].node=A,A=C}},g.prototype.floatUp_=function(A){var I=this.nodes,e=this.handles,i,t,C;for(i=I[A].handle;;){if(C=A>>1,t=I[C].handle,C===0||this.leq(e[t].key,e[i].key)){I[A].handle=i,e[i].node=A;break}I[A].handle=t,e[t].node=A,A=C}},g.prototype.init=function(){for(var A=this.size;A>=1;--A)this.floatDown_(A);this.initialized=!0},g.prototype.min=function(){return this.handles[this.nodes[1].handle].key},g.prototype.insert=function(A){var I,e;if(I=++this.size,I*2>this.max){this.max*=2;var i,t;for(t=this.nodes.length,this.nodes.length=this.max+1,i=t;i0&&(A[1].handle=A[this.size].handle,I[A[1].handle].node=1,I[e].key=null,I[e].node=this.freeList,this.freeList=e,--this.size,this.size>0&&this.floatDown_(1)),i},g.prototype.delete=function(A){var I=this.nodes,e=this.handles,i;jg(A>=1&&A<=this.max&&e[A].key!==null),i=e[A].node,I[i].handle=I[this.size].handle,e[I[i].handle].node=i,--this.size,i<=this.size&&(i<=1||this.leq(e[I[i>>1].handle].key,e[I[i].handle].key)?this.floatDown_(i):this.floatUp_(i)),e[A].key=null,e[A].node=this.freeList,this.freeList=A},g}(),Ku=function(){function g(){this.eUp=null,this.nodeUp=null,this.windingNumber=0,this.inside=!1,this.sentinel=!1,this.dirty=!1,this.fixUpperEdge=!1}return g}(),FM=function(){function g(){this.key=null,this.next=null,this.prev=null}return g}(),$Z=function(){function g(A,I){this.frame=A,this.leq=I,this.head=new FM,this.head.next=this.head,this.head.prev=this.head}return g.prototype.min=function(){return this.head.next},g.prototype.max=function(){return this.head.prev},g.prototype.insert=function(A){return this.insertBefore(this.head,A)},g.prototype.search=function(A){var I=this.head;do I=I.next;while(I.key!==null&&!this.leq(this.frame,A,I.key));return I},g.prototype.insertBefore=function(A,I){do A=A.prev;while(A.key!==null&&!this.leq(this.frame,A.key,I));var e=new FM;return e.key=I,e.next=A.next,A.next.prev=e,e.prev=A,A.next=e,e},g.prototype.delete=function(A){A.next.prev=A.prev,A.prev.next=A.next},g}(),AV=function(){function g(){}return g.regionBelow=function(A){return A.nodeUp.prev.key},g.regionAbove=function(A){return A.nodeUp.next.key},g.debugEvent=function(A){},g.addWinding=function(A,I){A.winding+=I.winding,A.Sym.winding+=I.Sym.winding},g.edgeLeq=function(A,I,e){var i=A.event,t=I.eUp,C=e.eUp;if(t.Dst===i)return C.Dst===i?Yg.vertLeq(t.Org,C.Org)?Yg.edgeSign(C.Dst,t.Org,C.Org)<=0:Yg.edgeSign(t.Dst,C.Org,t.Org)>=0:Yg.edgeSign(C.Dst,i,C.Org)<=0;if(C.Dst===i)return Yg.edgeSign(t.Dst,i,t.Org)>=0;var o=Yg.edgeEval(t.Dst,i,t.Org),B=Yg.edgeEval(C.Dst,i,C.Org);return o>=B},g.deleteRegion=function(A,I){I.fixUpperEdge&&jg(I.eUp.winding===0),I.eUp.activeRegion=null,A.dict.delete(I.nodeUp)},g.fixUpperEdge=function(A,I,e){jg(I.fixUpperEdge),A.mesh.delete(I.eUp),I.fixUpperEdge=!1,I.eUp=e,e.activeRegion=I},g.topLeftRegion=function(A,I){var e=I.eUp.Org,i;do I=g.regionAbove(I);while(I.eUp.Org===e);if(I.fixUpperEdge){if(i=A.mesh.connect(g.regionBelow(I).eUp.Sym,I.eUp.Lnext),i===null)return null;g.fixUpperEdge(A,I,i),I=g.regionAbove(I)}return I},g.topRightRegion=function(A){var I=A.eUp.Dst;do A=g.regionAbove(A);while(A.eUp.Dst===I);return A},g.addRegionBelow=function(A,I,e){var i=new Ku;return i.eUp=e,i.nodeUp=A.dict.insertBefore(I.nodeUp,i),i.fixUpperEdge=!1,i.sentinel=!1,i.dirty=!1,e.activeRegion=i,i},g.isWindingInside=function(A,I){switch(A.windingRule){case jI.ODD:return(I&1)!==0;case jI.NONZERO:return I!==0;case jI.POSITIVE:return I>0;case jI.NEGATIVE:return I<0;case jI.ABS_GEQ_TWO:return I>=2||I<=-2}throw new Error("Invalid winding rulle")},g.computeWinding=function(A,I){I.windingNumber=g.regionAbove(I).windingNumber+I.eUp.winding,I.inside=g.isWindingInside(A,I.windingNumber)},g.finishRegion=function(A,I){var e=I.eUp,i=e.Lface;i.inside=I.inside,i.anEdge=e,g.deleteRegion(A,I)},g.finishLeftRegions=function(A,I,e){for(var i,t=null,C=I,o=I.eUp;C!==e;){if(C.fixUpperEdge=!1,t=g.regionBelow(C),i=t.eUp,i.Org!=o.Org){if(!t.fixUpperEdge){g.finishRegion(A,C);break}i=A.mesh.connect(o.Lprev,i.Sym),g.fixUpperEdge(A,t,i)}o.Onext!==i&&(A.mesh.splice(i.Oprev,i),A.mesh.splice(o,i)),g.finishRegion(A,C),o=t.eUp,C=t}return o},g.addRightEdges=function(A,I,e,i,t,C){var o,B,a,s,r=!0;a=e;do jg(Yg.vertLeq(a.Org,a.Dst)),g.addRegionBelow(A,I,a.Sym),a=a.Onext;while(a!==i);for(t===null&&(t=g.regionBelow(I).eUp.Rprev),B=I,s=t;o=g.regionBelow(B),a=o.eUp.Sym,a.Org===s.Org;)a.Onext!==s&&(A.mesh.splice(a.Oprev,a),A.mesh.splice(s.Oprev,a)),o.windingNumber=B.windingNumber-a.winding,o.inside=g.isWindingInside(A,o.windingNumber),B.dirty=!0,!r&&g.checkForRightSplice(A,B)&&(g.addWinding(a,s),g.deleteRegion(A,B),A.mesh.delete(s)),r=!1,B=o,s=a;B.dirty=!0,jg(B.windingNumber-a.winding===o.windingNumber),C&&g.walkDirtyRegions(A,B)},g.spliceMergeVertices=function(A,I,e){A.mesh.splice(I,e)},g.vertexWeights=function(A,I,e){var i=Yg.vertL1dist(I,A),t=Yg.vertL1dist(e,A),C=.5*t/(i+t),o=.5*i/(i+t);A.coords[0]+=C*I.coords[0]+o*e.coords[0],A.coords[1]+=C*I.coords[1]+o*e.coords[1],A.coords[2]+=C*I.coords[2]+o*e.coords[2]},g.getIntersectData=function(A,I,e,i,t,C){I.coords[0]=I.coords[1]=I.coords[2]=0,I.idx=-1,g.vertexWeights(I,e,i),g.vertexWeights(I,t,C)},g.checkForRightSplice=function(A,I){var e=g.regionBelow(I),i=I.eUp,t=e.eUp;if(Yg.vertLeq(i.Org,t.Org)){if(Yg.edgeSign(t.Dst,i.Org,t.Org)>0)return!1;Yg.vertEq(i.Org,t.Org)?i.Org!==t.Org&&(A.pq.delete(i.Org.pqHandle),g.spliceMergeVertices(A,t.Oprev,i)):(A.mesh.splitEdge(t.Sym),A.mesh.splice(i,t.Oprev),I.dirty=e.dirty=!0)}else{if(Yg.edgeSign(i.Dst,t.Org,i.Org)<0)return!1;g.regionAbove(I).dirty=I.dirty=!0,A.mesh.splitEdge(i.Sym),A.mesh.splice(t.Oprev,i)}return!0},g.checkForLeftSplice=function(A,I){var e=g.regionBelow(I),i=I.eUp,t=e.eUp,C;if(jg(!Yg.vertEq(i.Dst,t.Dst)),Yg.vertLeq(i.Dst,t.Dst)){if(Yg.edgeSign(i.Dst,t.Dst,i.Org)<0)return!1;g.regionAbove(I).dirty=I.dirty=!0,C=A.mesh.splitEdge(i),A.mesh.splice(t.Sym,C),C.Lface.inside=I.inside}else{if(Yg.edgeSign(t.Dst,i.Dst,t.Org)>0)return!1;I.dirty=e.dirty=!0,C=A.mesh.splitEdge(t),A.mesh.splice(i.Lnext,t.Sym),C.Rface.inside=I.inside}return!0},g.checkForIntersect=function(A,I){var e=g.regionBelow(I),i=I.eUp,t=e.eUp,C=i.Org,o=t.Org,B=i.Dst,a=t.Dst,s,r,Q=new Zs,E,n;if(jg(!Yg.vertEq(a,B)),jg(Yg.edgeSign(B,A.event,C)<=0),jg(Yg.edgeSign(a,A.event,o)>=0),jg(C!==A.event&&o!==A.event),jg(!I.fixUpperEdge&&!e.fixUpperEdge),C===o||(s=Math.min(C.t,B.t),r=Math.max(o.t,a.t),s>r))return!1;if(Yg.vertLeq(C,o)){if(Yg.edgeSign(a,C,o)>0)return!1}else if(Yg.edgeSign(B,o,C)<0)return!1;return g.debugEvent(A),Yg.intersect(B,C,a,o,Q),jg(Math.min(C.t,B.t)<=Q.t),jg(Q.t<=Math.max(o.t,a.t)),jg(Math.min(a.s,B.s)<=Q.s),jg(Q.s<=Math.max(o.s,C.s)),Yg.vertLeq(Q,A.event)&&(Q.s=A.event.s,Q.t=A.event.t),E=Yg.vertLeq(C,o)?C:o,Yg.vertLeq(E,Q)&&(Q.s=E.s,Q.t=E.t),Yg.vertEq(Q,C)||Yg.vertEq(Q,o)?(g.checkForRightSplice(A,I),!1):!Yg.vertEq(B,A.event)&&Yg.edgeSign(B,A.event,Q)>=0||!Yg.vertEq(a,A.event)&&Yg.edgeSign(a,A.event,Q)<=0?a===A.event?(A.mesh.splitEdge(i.Sym),A.mesh.splice(t.Sym,i),I=g.topLeftRegion(A,I),i=g.regionBelow(I).eUp,g.finishLeftRegions(A,g.regionBelow(I),e),g.addRightEdges(A,I,i.Oprev,i,i,!0),!0):B===A.event?(A.mesh.splitEdge(t.Sym),A.mesh.splice(i.Lnext,t.Oprev),e=I,I=g.topRightRegion(I),n=g.regionBelow(I).eUp.Rprev,e.eUp=t.Oprev,t=g.finishLeftRegions(A,e,null),g.addRightEdges(A,I,t.Onext,i.Rprev,n,!0),!0):(Yg.edgeSign(B,A.event,Q)>=0&&(g.regionAbove(I).dirty=I.dirty=!0,A.mesh.splitEdge(i.Sym),i.Org.s=A.event.s,i.Org.t=A.event.t),Yg.edgeSign(a,A.event,Q)<=0&&(I.dirty=e.dirty=!0,A.mesh.splitEdge(t.Sym),t.Org.s=A.event.s,t.Org.t=A.event.t),!1):(A.mesh.splitEdge(i.Sym),A.mesh.splitEdge(t.Sym),A.mesh.splice(t.Oprev,i),i.Org.s=Q.s,i.Org.t=Q.t,i.Org.pqHandle=A.pq.insert(i.Org),g.getIntersectData(A,i.Org,C,B,o,a),g.regionAbove(I).dirty=I.dirty=e.dirty=!0,!1)},g.walkDirtyRegions=function(A,I){for(var e=g.regionBelow(I),i,t;;){for(;e.dirty;)I=e,e=g.regionBelow(e);if(!I.dirty&&(e=I,I=g.regionAbove(I),I===null||!I.dirty))return;if(I.dirty=!1,i=I.eUp,t=e.eUp,i.Dst!==t.Dst&&g.checkForLeftSplice(A,I)&&(e.fixUpperEdge?(g.deleteRegion(A,e),A.mesh.delete(t),e=g.regionBelow(I),t=e.eUp):I.fixUpperEdge&&(g.deleteRegion(A,I),A.mesh.delete(i),I=g.regionAbove(e),i=I.eUp)),i.Org!==t.Org)if(i.Dst!==t.Dst&&!I.fixUpperEdge&&!e.fixUpperEdge&&(i.Dst===A.event||t.Dst===A.event)){if(g.checkForIntersect(A,I))return}else g.checkForRightSplice(A,I);i.Org===t.Org&&i.Dst===t.Dst&&(g.addWinding(t,i),g.deleteRegion(A,I),A.mesh.delete(i),I=g.regionAbove(e))}},g.connectRightVertex=function(A,I,e){var i,t=e.Onext,C=g.regionBelow(I),o=I.eUp,B=C.eUp,a=!1;if(o.Dst!==B.Dst&&g.checkForIntersect(A,I),Yg.vertEq(o.Org,A.event)&&(A.mesh.splice(t.Oprev,o),I=g.topLeftRegion(A,I),t=g.regionBelow(I).eUp,g.finishLeftRegions(A,g.regionBelow(I),C),a=!0),Yg.vertEq(B.Org,A.event)&&(A.mesh.splice(e,B.Oprev),e=g.finishLeftRegions(A,C,null),a=!0),a){g.addRightEdges(A,I,e.Onext,t,t,!0);return}Yg.vertLeq(B.Org,o.Org)?i=B.Oprev:i=o,i=A.mesh.connect(e.Lprev,i),g.addRightEdges(A,I,i,i.Onext,i.Onext,!1),i.Sym.activeRegion.fixUpperEdge=!0,g.walkDirtyRegions(A,I)},g.connectLeftDegenerate=function(A,I,e){var i,t,C,o,B;if(i=I.eUp,Yg.vertEq(i.Org,e)){jg(!1),g.spliceMergeVertices(A,i,e.anEdge);return}if(!Yg.vertEq(i.Dst,e)){A.mesh.splitEdge(i.Sym),I.fixUpperEdge&&(A.mesh.delete(i.Onext),I.fixUpperEdge=!1),A.mesh.splice(e.anEdge,i),g.sweepEvent(A,e);return}jg(!1),I=g.topRightRegion(I),B=g.regionBelow(I),C=B.eUp.Sym,t=o=C.Onext,B.fixUpperEdge&&(jg(t!==C),g.deleteRegion(A,B),A.mesh.delete(C),C=t.Oprev),A.mesh.splice(e.anEdge,C),Yg.edgeGoesLeft(t)||(t=null),g.addRightEdges(A,I,C.Onext,o,t,!0)},g.connectLeftVertex=function(A,I){var e,i,t,C,o,B,a=new Ku;if(a.eUp=I.anEdge.Sym,e=A.dict.search(a).key,i=g.regionBelow(e),!!i){if(C=e.eUp,o=i.eUp,Yg.edgeSign(C.Dst,I,C.Org)===0){g.connectLeftDegenerate(A,e,I);return}if(t=Yg.vertLeq(o.Dst,C.Dst)?e:i,e.inside||t.fixUpperEdge){if(t===e)B=A.mesh.connect(I.anEdge.Sym,C.Lnext);else{var s=A.mesh.connect(o.Dnext,I.anEdge);B=s.Sym}t.fixUpperEdge?g.fixUpperEdge(A,t,B):g.computeWinding(A,g.addRegionBelow(A,e,B)),g.sweepEvent(A,I)}else g.addRightEdges(A,e,I.anEdge,I.anEdge,null,!0)}},g.sweepEvent=function(A,I){A.event=I,g.debugEvent(A);for(var e=I.anEdge;e.activeRegion===null;)if(e=e.Onext,e===I.anEdge){g.connectLeftVertex(A,I);return}var i=g.topLeftRegion(A,e.activeRegion);jg(i!==null);var t=g.regionBelow(i),C=t.eUp,o=g.finishLeftRegions(A,t,null);o.Onext===C?g.connectRightVertex(A,i,o):g.addRightEdges(A,i,o.Onext,C,C,!0)},g.addSentinel=function(A,I,e,i){var t=new Ku,C=A.mesh.makeEdge();C.Org.s=e,C.Org.t=i,C.Dst.s=I,C.Dst.t=i,A.event=C.Dst,t.eUp=C,t.windingNumber=0,t.inside=!1,t.fixUpperEdge=!1,t.sentinel=!0,t.dirty=!1,t.nodeUp=A.dict.insert(t)},g.initEdgeDict=function(A){A.dict=new $Z(A,g.edgeLeq);var I=A.bmax[0]-A.bmin[0],e=A.bmax[1]-A.bmin[1],i=A.bmin[0]-I,t=A.bmax[0]+I,C=A.bmin[1]-e,o=A.bmax[1]+e;g.addSentinel(A,i,t,C),g.addSentinel(A,i,t,o)},g.doneEdgeDict=function(A){for(var I,e=0;(I=A.dict.min().key)!==null;)I.sentinel||(jg(I.fixUpperEdge),jg(++e===1)),jg(I.windingNumber===0),g.deleteRegion(A,I)},g.removeDegenerateEdges=function(A){var I,e,i,t=A.mesh.eHead;for(I=t.next;I!==t;I=e)e=I.next,i=I.Lnext,Yg.vertEq(I.Org,I.Dst)&&I.Lnext.Lnext!==I&&(g.spliceMergeVertices(A,i,I),A.mesh.delete(I),I=i,i=I.Lnext),i.Lnext===I&&(i!==I&&((i===e||i===e.Sym)&&(e=e.next),A.mesh.delete(i)),(I===e||I===e.Sym)&&(e=e.next),A.mesh.delete(I))},g.initPriorityQ=function(A){var I,e,i,t=0;for(i=A.mesh.vHead,e=i.next;e!==i;e=e.next)t++;for(t+=8,I=A.pq=new XZ(t,Yg.vertLeq),i=A.mesh.vHead,e=i.next;e!==i;e=e.next)e.pqHandle=I.insert(e);return e!==i?!1:(I.init(),!0)},g.donePriorityQ=function(A){A.pq=null},g.removeDegenerateFaces=function(A,I){var e,i,t;for(e=I.fHead.next;e!==I.fHead;e=i)i=e.next,t=e.anEdge,jg(t.Lnext!==t),t.Lnext.Lnext===t&&(g.addWinding(t.Onext,t),A.mesh.delete(t));return!0},g.computeInterior=function(A,I){I===void 0&&(I=!0);var e,i;if(g.removeDegenerateEdges(A),!g.initPriorityQ(A))return!1;for(g.initEdgeDict(A);(e=A.pq.extractMin())!==null;){for(;i=A.pq.min(),!(i===null||!Yg.vertEq(i,e));)i=A.pq.extractMin(),g.spliceMergeVertices(A,e.anEdge,i.anEdge);g.sweepEvent(A,e)}return A.event=A.dict.min().key.eUp.Org,g.debugEvent(A),g.doneEdgeDict(A),g.donePriorityQ(A),g.removeDegenerateFaces(A,A.mesh)?(I&&A.mesh.check(),!0):!1},g}(),gV=function(){function g(){this.mesh=new mM,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=jI.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 g.prototype.dot_=function(A,I){return A[0]*I[0]+A[1]*I[1]+A[2]*I[2]},g.prototype.normalize_=function(A){var I=A[0]*A[0]+A[1]*A[1]+A[2]*A[2];if(!I)throw"Zero-size vector!";I=Math.sqrt(I),A[0]/=I,A[1]/=I,A[2]/=I},g.prototype.longAxis_=function(A){var I=0;return Math.abs(A[1])>Math.abs(A[0])&&(I=1),Math.abs(A[2])>Math.abs(A[I])&&(I=2),I},g.prototype.computeNormal_=function(A){var I,e,i,t,C,o,B=[0,0,0],a=[0,0,0],s=[0,0,0],r=[0,0,0],Q=[0,0,0],E=[null,null,null],n=[null,null,null],h=this.mesh.vHead;I=h.next;for(var l=0;l<3;++l)t=I.coords[l],a[l]=t,n[l]=I,B[l]=t,E[l]=I;for(I=h.next;I!==h;I=I.next)for(var c=0;c<3;++c)t=I.coords[c],tB[c]&&(B[c]=t,E[c]=I);var d=0;if(B[1]-a[1]>B[0]-a[0]&&(d=1),B[2]-a[2]>B[d]-a[d]&&(d=2),a[d]>=B[d]){A[0]=0,A[1]=0,A[2]=1;return}for(o=0,e=n[d],i=E[d],s[0]=e.coords[0]-i.coords[0],s[1]=e.coords[1]-i.coords[1],s[2]=e.coords[2]-i.coords[2],I=h.next;I!==h;I=I.next)r[0]=I.coords[0]-i.coords[0],r[1]=I.coords[1]-i.coords[1],r[2]=I.coords[2]-i.coords[2],Q[0]=s[1]*r[2]-s[2]*r[1],Q[1]=s[2]*r[0]-s[0]*r[2],Q[2]=s[0]*r[1]-s[1]*r[0],C=Q[0]*Q[0]+Q[1]*Q[1]+Q[2]*Q[2],C>o&&(o=C,A[0]=Q[0],A[1]=Q[1],A[2]=Q[2]);o<=0&&(A[0]=A[1]=A[2]=0,A[this.longAxis_(s)]=1)},g.prototype.checkOrientation_=function(){for(var A=this.mesh.fHead,I,e=this.mesh.vHead,i,t=0,C=A.next;C!==A;C=C.next)if(i=C.anEdge,!(i.winding<=0))do t+=(i.Org.s-i.Dst.s)*(i.Org.t+i.Dst.t),i=i.Lnext;while(i!==C.anEdge);if(t<0){for(I=e.next;I!==e;I=I.next)I.t=-I.t;this.tUnit[0]=-this.tUnit[0],this.tUnit[1]=-this.tUnit[1],this.tUnit[2]=-this.tUnit[2]}},g.prototype.projectPolygon_=function(){var A=this.mesh.vHead,I=[0,0,0],e,i,t=!1;I[0]=this.normal[0],I[1]=this.normal[1],I[2]=this.normal[2],!I[0]&&!I[1]&&!I[2]&&(this.computeNormal_(I),t=!0),e=this.sUnit,i=this.tUnit;var C=this.longAxis_(I);e[C]=0,e[(C+1)%3]=1,e[(C+2)%3]=0,i[C]=0,i[(C+1)%3]=0,i[(C+2)%3]=I[C]>0?1:-1;for(var o=A.next;o!==A;o=o.next)o.s=this.dot_(o.coords,e),o.t=this.dot_(o.coords,i);t&&this.checkOrientation_();for(var B=!0,a=A.next;a!==A;a=a.next)B?(this.bmin[0]=this.bmax[0]=a.s,this.bmin[1]=this.bmax[1]=a.t,B=!1):(a.sthis.bmax[0]&&(this.bmax[0]=a.s),a.tthis.bmax[1]&&(this.bmax[1]=a.t))},g.prototype.addWinding_=function(A,I){A.winding+=I.winding,A.Sym.winding+=I.Sym.winding},g.prototype.tessellateMonoRegion_=function(A,I){var e,i;if(e=I.anEdge,!(e.Lnext!==e&&e.Lnext.Lnext!==e))throw"Mono region invalid";for(;Yg.vertLeq(e.Dst,e.Org);e=e.Lprev);for(;Yg.vertLeq(e.Org,e.Dst);e=e.Lnext);i=e.Lprev;for(var t=void 0;e.Lnext!==i;)if(Yg.vertLeq(e.Dst,i.Org)){for(;i.Lnext!==e&&(Yg.edgeGoesLeft(i.Lnext)||Yg.edgeSign(i.Org,i.Dst,i.Lnext.Dst)<=0);)t=A.connect(i.Lnext,i),i=t.Sym;i=i.Lprev}else{for(;i.Lnext!==e&&(Yg.edgeGoesRight(e.Lprev)||Yg.edgeSign(e.Dst,e.Org,e.Lprev.Org)>=0);)t=A.connect(e,e.Lprev),e=t.Sym;e=e.Lnext}if(i.Lnext===e)throw"Mono region invalid";for(;i.Lnext.Lnext!==e;)t=A.connect(i.Lnext,i),i=t.Sym;return!0},g.prototype.tessellateInterior_=function(A){for(var I,e=A.fHead.next;e!==A.fHead;e=I)if(I=e.next,e.inside&&!this.tessellateMonoRegion_(A,e))return!1;return!0},g.prototype.discardExterior_=function(A){for(var I,e=A.fHead.next;e!==A.fHead;e=I)I=e.next,e.inside||A.zapFace(e)},g.prototype.setWindingNumber_=function(A,I,e){for(var i,t=A.eHead.next;t!==A.eHead;t=i)i=t.next,t.Rface.inside!==t.Lface.inside?t.winding=t.Lface.inside?I:-I:e?A.delete(t):t.winding=0},g.prototype.getNeighbourFace_=function(A){return!A.Rface||!A.Rface.inside?-1:A.Rface.n},g.prototype.outputPolymesh_=function(A,I,e,i){var t,C=0,o=0,B;e>3&&A.mergeConvexFaces(e);for(var a=A.vHead.next;a!==A.vHead;a=a.next)a.n=-1;for(var s=A.fHead.next;s!==A.fHead;s=s.next)if(s.n=-1,!!s.inside){t=s.anEdge,B=0;do{var a=t.Org;a.n===-1&&(a.n=o,o++),B++,t=t.Lnext}while(t!==s.anEdge);if(B>e)throw"Face vertex greater that support polygon";s.n=C,++C}this.elementCount=C,I===Pe.CONNECTED_POLYGONS&&(C*=2),this.elements=[],this.elements.length=C*e,this.vertexCount=o,this.vertices=[],this.vertices.length=o*i,this.vertexIndices=[],this.vertexIndices.length=o;for(var a=A.vHead.next;a!==A.vHead;a=a.next)if(a.n!==-1){var r=a.n*i;this.vertices[r+0]=a.coords[0],this.vertices[r+1]=a.coords[1],i>2&&(this.vertices[r+2]=a.coords[2]),this.vertexIndices[a.n]=a.idx}for(var Q=0,s=A.fHead.next;s!==A.fHead;s=s.next)if(s.inside){t=s.anEdge,B=0;do{var a=t.Org;this.elements[Q++]=a.n,B++,t=t.Lnext}while(t!==s.anEdge);for(var E=B;E2&&(this.vertices[B++]=e.Org.coords[2]),this.vertexIndices[a++]=this.vertexIdCallback?this.vertexIdCallback(e):e.Org.idx,C++,e=e.Lnext;while(e!==i);this.elements[s++]=t,this.elements[s++]=C,t+=C}},g.prototype.addContour=function(A,I){this.mesh===null&&(this.mesh=new mM),A<2&&(A=2),A>3&&(A=3);for(var e=null,i=0;i2?e.Org.coords[2]=I[i+2]:e.Org.coords[2]=0,e.Org.idx=this.vertexIndexCounter++,this.edgeCreateCallback&&this.edgeCreateCallback(e),e.winding=1,e.Sym.winding=-1},g.prototype.tesselate=function(A,I,e,i,t,C){if(A===void 0&&(A=jI.ODD),I===void 0&&(I=Pe.POLYGONS),C===void 0&&(C=!0),this.vertices=[],this.elements=[],this.vertexIndices=[],this.vertexIndexCounter=0,t&&(this.normal[0]=t[0],this.normal[1]=t[1],this.normal[2]=t[2]),this.windingRule=A,i<2&&(i=2),i>3&&(i=3),!this.mesh)return!1;this.projectPolygon_(),AV.computeInterior(this,C);var o=this.mesh;return I===Pe.BOUNDARY_CONTOURS?this.setWindingNumber_(o,1,!0):this.tessellateInterior_(o),C&&o.check(),I===Pe.BOUNDARY_CONTOURS?this.outputContours_(o,i):this.outputPolymesh_(o,I,e,i),!0},g}();function Ea(g){var A=g.windingRule,I=A===void 0?jI.ODD:A,e=g.elementType,i=e===void 0?Pe.POLYGONS:e,t=g.polySize,C=t===void 0?3:t,o=g.vertexSize,B=o===void 0?2:o,a=g.normal,s=a===void 0?[0,0,1]:a,r=g.contours,Q=r===void 0?[]:r,E=g.strict,n=E===void 0?!0:E,h=g.debug,l=h===void 0?!1:h;if(!Q&&n)throw new Error("Contours can't be empty");if(Q){var c=new gV;g.edgeCreateCallback&&(c.edgeCreateCallback=g.edgeCreateCallback),g.vertexIdCallback&&(c.vertexIdCallback=g.vertexIdCallback);for(var d=0;dthis.capacity){let e=this.capacity;for(;A>e;)e*=2;this.realloc(e)}let I=this.size;return this.size=A,I}reserve(g){let A=this.size+g;A>this.capacity&&this.realloc(A)}shrink(){this.debug&&console.log(`shrinking ${this.capacity} → ${this.size}`),this.realloc(this.size,!0)}},PR=Py;PR.eSize=(3+3+2)*Float32Array.BYTES_PER_ELEMENT;var IV=Fa(wq()),K0={vertices:[160,160,-160,160,-160,-160,160,-160],vertexIndices:[1,0,3,2],vertexCount:4,elements:[0,4],elementCount:1,mesh:void 0},jR={vertices:[],vertexIndices:[],vertexCount:0,elements:[],elementCount:0,mesh:void 0},WR={vertices:[-160,160,160,-160,160,160,-160,-160],vertexIndices:[1,3,0,2],vertexCount:4,elements:[0,1,2,1,0,3],elementCount:2,mesh:void 0},Ju=(g,A)=>([I,e])=>(e=I?g:g+A)<=e),J0=class extends bg{constructor(A,I,e=0,i=12,t=3,C=jI.ODD,o=!1){super(),this.forPathBevel=o,this.type="ShapeGeometry",this.vertexCache={},this._shape=A,this._depth=I,this._curveSegments=i,this._bevelSegmentsInput=t;let B=this._shape.extractShapePointsToFlatArray([],i),a=this._shape.shapeHoles.map(N=>{let b=N.extractShapePointsToFlatArray([],i),O=[];for(let H=b.length-1;H>=1;H-=2){let _=b[H-1],gA=b[H-0];O.push(_,gA)}return O}),s=[],r=[];for(let N=0;NN.position)).getSize(new sA).length()*.1:s[0].length===0?Q=e:Q=(0,IV.default)(s).distance,e<=0?(this._bevel=0,this._bevelSegments=0):(this._bevel=Math.min(e,Q,I/2),this._bevelSegments=Math.floor(t));let E;try{E=Ea({windingRule:C,elementType:Pe.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[B]})}catch{E=K0}let n;try{n=Ea({windingRule:jI.ODD,elementType:Pe.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...a]})}catch{n=jR}if(!E)throw new Error("error generating geometry");let h=E.elementCount;if(n){E.elementCount+=n.elementCount;for(let N=0;Nc&&(c=H),_u&&(u=_)}this._minX=l,this._minY=d,this._width=c-l,this._height=u-d,this._buffer=new PR(this._computeBufferEstimatedSize(E));let y=[],f=[];for(let N=E.elementCount-1;N>=0;N--){let b=N>=h,O=N*2,H=E.elements[O+0],_=E.elements[O+1],gA=H+_,CA={start:H,count:_,normals:[],continuous:[],concave:[]},AA=H,BA=gA-1,iA=H+1,rA=this._shape.roundedCurves.length;do{let DA=AA-H,eA=E.vertices[BA*2+0],aA=E.vertices[BA*2+1],nA=E.vertices[AA*2+0],fA=E.vertices[AA*2+1],uA=E.vertices[iA*2+0],VA=E.vertices[iA*2+1],yA=nA-eA,LA=fA-aA,HA=Math.sqrt(yA*yA+LA*LA);yA/=HA,LA/=HA;let Ag=nA-uA,gg=fA-VA,Dg=Math.sqrt(Ag*Ag+gg*gg);Ag/=Dg,gg/=Dg,CA.normals[DA*2+0]=-gg,CA.normals[DA*2+1]=Ag,CA.concave[DA]=yA*gg-LA*Ag>0;let Eg=E.vertexIndices[AA];if(Array.isArray(Eg))CA.continuous[DA]=!1;else{let[$A,mg]=this._shape.getCurveIndexFromVertexId(Eg-1,!0);if(mg>0&&mg<1)CA.continuous[DA]=!0;else{let hg=mg===1?$A+1:$A-1;hg=(hg+rA)%rA;let V=mg===1?0:1,W=this._shape.roundedCurves[$A].getTangent(mg),wA=this._shape.roundedCurves[hg].getTangent(V);CA.continuous[DA]=W.dot(wA)>.95}}b&&(CA.normals[DA*2+0]*=-1,CA.normals[DA*2+1]*=-1),[BA,AA,iA]=[AA,iA,iA+1],iA>=gA&&(iA-=_)}while(iA!==H+1);let $=[];$.push({bevelI:0,angle:0,size:0,boundary:{vertices:E.vertices.slice(H*2,gA*2),vertexCount:_,vertexIndices:new Array(_).fill(!0).map((DA,eA)=>[eA,eA]),elements:[0,_],elementCount:1,mesh:null},reverseMap:[],insetPoints:E.vertices.slice(H*2,gA*2)});let IA=0;for(let DA=1;DA<=this._bevelSegments;DA++){let eA=DA/this._bevelSegments*Math.PI/2,aA=(1-Math.cos(eA))*this._bevel,nA=[],fA=[],uA=0;for(let yA=0;yA<_;yA++){let LA=yA*2,HA=(yA-1+_)%_*2,Ag=E.vertices[CA.start*2+LA+0],gg=E.vertices[CA.start*2+LA+1],Dg=-CA.normals[HA+0]*aA,Eg=-CA.normals[HA+1]*aA,$A=-CA.normals[LA+0]*aA,mg=-CA.normals[LA+1]*aA;if(CA.concave[yA]||!CA.concave[yA]&&b){let hg=Math.atan2(Eg,Dg),V=Math.atan2(mg,$A);V>hg&&(V-=Math.PI*2);let W=V-hg;if(CA.continuous[yA]||b){let wA=hg+W/2,qA=Math.cos(wA)*aA,Ig=Math.sin(wA)*aA;nA[2*uA+0]=Ag+qA*(b?-1:1),nA[2*uA+1]=gg+Ig*(b?-1:1),fA[uA]=yA,uA++}else{let wA=Math.max(1,Math.floor(i/4*Math.abs(W)/Math.PI));for(let qA=0;qA<=wA;qA++){let Ig=hg+W*(qA/wA),jA=Math.cos(Ig)*aA,dg=Math.sin(Ig)*aA;nA[2*uA+0]=Ag+jA,nA[2*uA+1]=gg+dg,fA[uA]=yA,uA++}}}else nA[2*uA+0]=Ag+Dg,nA[2*uA+1]=gg+Eg,fA[uA]=yA,uA++,nA[2*uA+0]=Ag,nA[2*uA+1]=gg,fA[uA]=yA,uA++,nA[2*uA+0]=Ag+$A,nA[2*uA+1]=gg+mg,fA[uA]=yA,uA++}let VA=Ea({windingRule:jI.POSITIVE,elementType:Pe.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[nA],edgeCreateCallback:yA=>{let LA=yA.Org.idx,HA=fA[LA],Ag=fA[(LA+1)%fA.length];yA.idx=[HA,Ag],yA.Sym.idx=[Ag,HA]},vertexIdCallback:yA=>{let LA=yA.Lprev.idx;return[LA?LA[1]:0,yA.idx?yA.idx[0]:0]}});if(!VA)throw console.log("Error"),new Error(`error generating bevel geometry for ${DA}'th loop`);if(!VA.vertexCount){let yA=(DA-1)/this._bevelSegments*Math.PI/2;IA=(1-Math.sin(yA))*this._bevel;break}for(let yA=0;yA{let nA=0,fA=DA.boundary.vertexIndices.length;for(;nAqA){let jA=wA/qA,dg=0;for(let Cg=1;Cg(dg+1)*jA&&(dg++,V=this._buildBevelVert(CA,aA,(HA+dg)%fA,dg/(qA-1),gg),y.push(mg.topN,hg.topP,V.topP),o===!1&&y.push(hg.bottomP,mg.bottomN,V.bottomP),mg=V)}else{let jA=qA/wA,dg=0;for(let Cg=1;Cg(dg+1)*jA&&(dg++,hg=this._buildBevelVert(CA,eA,(LA+dg)%nA,dg/(wA-1),gg),y.push($A.topN,hg.topP,mg.topN),o===!1&&y.push(hg.bottomP,$A.bottomN,mg.bottomN),$A=hg)}LA=(LA+wA)%nA,HA=(HA+qA)%fA,VA=(VA+1)%uA}while(VA!==Ag)}if(o===!1&&this._depth>this._bevel*2&&this._buildWall($,CA,y),b){let DA=[];for(let eA=y.length-1;eA>=QA+2;eA-=3){let aA=y[eA-2],nA=y[eA-1],fA=y[eA-0];DA.push(fA,nA,aA)}y.splice(QA,y.length-QA,...DA)}if(b){let DA=[];for(let eA=$[$.length-1].boundary.vertices.length-1;eA>=1;eA-=2){let aA=$[$.length-1].boundary.vertices[eA-1],nA=$[$.length-1].boundary.vertices[eA-0];DA.push(aA,nA)}f.push(DA)}if(!b){let DA=$[$.length-1],eA;try{eA=Ea({windingRule:$.length>1?jI.POSITIVE:jI.ODD,elementType:Pe.POLYGONS,vertexSize:2,strict:!0,contours:[DA.insetPoints,...f]})}catch{eA=WR}if(!eA)throw new Error("Error generating geometry for surface");a.length===0&&this._bevel0,r=A.continuous[a]||Q);let E=Math.cos(I.angle),n=Math.sin(I.angle),h=e*2,l=a*2,c=s*2,d=I.boundary.vertices[h+0],u=I.boundary.vertices[h+1],y=(1-n)*this._bevel,f=(d-this._minX)/this._width,k=(u-this._minY)/this._height;this.forPathBevel&&(t!==void 0&&(f=t),k=1);let M=A.normals[l+0],G=A.normals[l+1],v=A.normals[c+0],N=A.normals[c+1];if(Q){let gA=v-M,CA=N-G;M=M+gA*(1-i),G=G+CA*(1-i);let AA=Math.sqrt(M*M+G*G);M/=AA,G/=AA}let b=this.forPathBevel?this._buffer.get(r?1:2):this._buffer.get(r?2:4),O=b*3,H=b*2,_={i:e,fi:a,topP:b+0,topN:b+0,bottomP:b+1,bottomN:b+1,pathBevelUCoord:t};return this._buffer.positions[O+0]=d,this._buffer.positions[O+1]=u,this._buffer.positions[O+2]=(this.forPathBevel?this._bevel:this._depth)-y,this._buffer.normals[O+0]=M*E,this._buffer.normals[O+1]=G*E,this._buffer.normals[O+2]=n,this._buffer.uvs[H+0]=f,this._buffer.uvs[H+1]=k,this.forPathBevel===!1&&(this._buffer.positions[O+3]=d,this._buffer.positions[O+4]=u,this._buffer.positions[O+5]=y,this._buffer.normals[O+3]=M*E,this._buffer.normals[O+4]=G*E,this._buffer.normals[O+5]=-n,this._buffer.uvs[H+2]=k,this._buffer.uvs[H+3]=f),r||(this.forPathBevel?(b+=1,O+=3,H+=2):(b+=2,O+=6,H+=4),_.topP=b+0,_.bottomP=b+1,this._buffer.positions[O+0]=d,this._buffer.positions[O+1]=u,this._buffer.positions[O+2]=(this.forPathBevel?this._bevel:this._depth)-y,this._buffer.normals[O+0]=v*E,this._buffer.normals[O+1]=N*E,this._buffer.normals[O+2]=n,this._buffer.uvs[H+0]=f,this._buffer.uvs[H+1]=k,this.forPathBevel===!1&&(this._buffer.positions[O+3]=d,this._buffer.positions[O+4]=u,this._buffer.positions[O+5]=y,this._buffer.normals[O+3]=v*E,this._buffer.normals[O+4]=N*E,this._buffer.normals[O+5]=-n,this._buffer.uvs[H+2]=k,this._buffer.uvs[H+3]=f)),this.vertexCache[C]=_,_}clone(){let A=new J0(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return A.userData=TD(this.userData),A}},ZR=class extends bg{constructor(g,A=12,I={}){super(),this.type="ShapeGeometry",this.windingRule=jI.ODD,this.elementType=Pe.POLYGONS,this.polySize=3,this.vertexSize=2,this.strict=!0,this._shape=g,this._curveSegments=A,this._triangulationOptions=Object.assign({windingRule:jI.ODD,elementType:Pe.POLYGONS,polySize:3,vertexSize:2,strict:!0},I);let e=this._shape.extractShapePointsToFlatArray([],this._curveSegments),i=this._shape.shapeHoles.map(Q=>Q.extractShapePointsToFlatArray([],this._curveSegments)),t,C=!0,o=!0,B,a;for(let Q=0,E=e.length/2;QE&&(E=f),kh&&(h=k)}let l=E-Q,c=h-n;for(let d=0,u=s;d0&&o.update());let a=o??new fe(i,t);return{parameters:Object.assign(e,{width:i,height:t,depth:C,roundness:B}),shape:a}}static build(A){let{depth:I,extrudeBevelSize:e,extrudeBevelSegments:i,subdivisions:t,roundness:C,windingRule:o}=A.parameters;A.shape.roundness=C;let B;return I<=0?B=new ZR(A.shape,t,{windingRule:o}):B=new VR(A.shape,I,e,t,i,o),Object.assign(B,{userData:{...A,type:"VectorGeometry"}})}},zR=Math.PI*2,v0=class{static create(g){return this.build(this.normalizeInputs(g))}static normalizeInputs(g,A){let I=Object.assign({},(A==null?void 0:A.parameters)??{width:100,depth:0,spikes:64,angle:360,innerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1},g.parameters);return I.angle=vg.clamp(I.angle,0,360),{shape:g.shape&&g.shape instanceof fe?g.shape:new fe,parameters:Object.assign(I,{width:Math.abs(I.width),height:Math.abs(I.height??I.width),depth:Math.abs(I.depth??0)})}}static build(g){let{width:A,height:I,spikes:e,angle:i,innerRadius:t,depth:C,extrudeBevelSize:o,extrudeBevelSegments:B}=g.parameters,a=g.shape,s=A*.5,r=I*.5,Q=eV(a,s,r,i*Math.PI/180,e,t);a.isClosed=!0,a.update();let E;return i===0?(E=new bg,E.setAttribute("position",new pg([],3))):E=Or.create({shape:a,parameters:{subdivisions:Q,depth:C,extrudeBevelSize:o,extrudeBevelSegments:B}}),Object.assign(E,{userData:{...g,type:"EllipseGeometry"}})}};function eV(g,A,I,e,i,t){if(e>=zR)return i>30||i%4===0?(tV(g,A,I,t),Math.round(i/4)):RM(g,e,i,A,I,t);e=Math.max(e,.001);let C={x:0,y:I},o=e+Math.PI*.5,B={x:Math.cos(o)*A,y:Math.sin(o)*I},a=zZ({px:C.x,py:C.y,cx:B.x,cy:B.y,rx:A,ry:I,largeArcFlag:e>Math.PI,sweepFlag:!0});return i>30||i%a.length===0?iV(g,C.x,C.y,a,i,A,I,t):RM(g,e,i,A,I,t)}function iV(g,A,I,e,i,t,C,o){let B=Math.round(i/e.length);g.addPoint(cQ(A,I));for(let a=0,s=e.length;a0?XR(g,t,C,o):g.addPoint(cQ(0,0)),B}function RM(g,A,I,e,i,t){let C=-A/I;for(let o=0;o<=I;o++){let B=C*o,a=Math.sin(B)*e,s=Math.cos(B)*i;g.addPoint(cQ(a,s))}return A0?XR(g,e,i,t):g.addPoint(cQ(0,0)):(g.removePoint(g.points[g.points.length-1]),t>0&&$R(g,e,i,t)),1}function tV(g,A,I,e=0,i=0,t=0){let C=.5522847498,o=A*C,B=I*C;g.addPoint(cl(i-A,t,i-A,t-B,i-A,t+B)),g.addPoint(cl(i,t+I,i-o,t+I,i+o,t+I)),g.addPoint(cl(i+A,t,i+A,t+B,i+A,t-B)),g.addPoint(cl(i,t-I,i+o,t-I,i-o,t-I)),e>0&&$R(g,A,I,e)}function cQ(g,A){return new lQ(vg.generateUUID(),new sA(g,A))}function cl(g,A,I,e,i,t){let C=cQ(g,A);return C.controls[0].position.set(I,e),C.controls[1].position.set(i,t),C}function XR(g,A,I,e){AK(g,A,I,e).forEach(i=>g.addPoint(i))}function $R(g,A,I,e){let i=AK(g,A,I,e),t=new fe;i.forEach(C=>t.addPoint(C)),t.isClosed=!0,g.shapeHoles.push(t)}function AK(g,A,I,e){let i=e*A/100,t=i*(Math.abs(I)/Math.abs(A)),C=new sA(i/A,t/I),o=g.points.map(B=>{let a=B.clone();return a.uuid=vg.generateUUID(),a}).reverse();return o.forEach(B=>{B.position.multiply(C);let a=B.controls[0].position.clone().multiply(C),s=B.controls[1].position.clone().multiply(C);B.controls[0].position.copy(s),B.controls[1].position.copy(a)}),o}var CV=class{static create(g){return this.build(this.normalizeInputs(g))}static normalizeInputs(g,A){let I=Object.assign({},(A==null?void 0:A.parameters)??{width:100,revolutions:2,segments:40,pathRadius:10,pathType:0,pathSegments:30,cornerRadius:30,cornerSegments:4},g.parameters),e=Math.abs(I.width),i=Math.abs(I.height??e),t=Math.abs(I.depth??e),C=Math.abs(Math.min(e,t))/2;return{parameters:Object.assign(I,{width:e,height:i,depth:t,radius:C,segments:Math.round(I.segments),pathSegments:Math.round(I.pathSegments),cornerSegments:Math.round(I.cornerSegments)})}}static build(g){let{width:A,height:I,depth:e,radius:i,revolutions:t,segments:C,pathRadius:o,pathType:B,pathSegments:a,cornerRadius:s,cornerSegments:r}=g.parameters,Q=new gK(!1,A,I,e,i,t,C,o,B,a,s,r);return Object.assign(Q,{userData:{...g,type:"HelixGeometry"}})}},vu=new BQ([0,0,0],1),gK=class extends bg{constructor(g=!0,A=1,I=1,e=1,i=1,t=1,C=1,o=1,B=1,a=1,s=1,r=1){if(super(),t===0)return;let Q=g&&t===1;Q&&(r=0),s>100&&(s=100),s===0&&(r=0);let E=()=>new J,n=new J,h=E(),l=E(),c=E(),d,u,y,f,k,M,G,v,N=E(),b=E(),O=E(),H=E(),_=E(),gA=E(),CA=E(),AA=E(),BA=I-2*o+.001,iA=BA/t,rA=Math.ceil(C*t),$=rA+1,IA=BA/rA,hA=-BA/2,QA=a+1,DA=2*Math.PI/a,eA=Math.PI/2/r,aA=.01,nA=Math.min((1-s/100)*o,o-aA),fA=o-nA,uA=0,VA=2,yA=r*VA+VA,LA=QA*yA/VA,HA=LA+QA*$,Ag=Math.max(0,QA*($+yA)),[gg,Dg,Eg]=[3,3,2].map(UA=>Array(Ag*UA).fill(0)),$A=[],mg=i-o;function hg(UA,fg){let Rg=Math.PI/2;M=fg*IA,v=2*Math.PI*(M%iA)/iA+Rg,M+=hA,G=Math.sin(v)*mg,k=Math.cos(v)*mg,g?UA.set(k,G,M):UA.set(k,M,G)}hg(n,-1e-10),hg(h,0),N.copy(n),hg(n,1);let V=n.distanceTo(h),W=Q?0:fA+nA,wA=V*rA+2*W,qA=nA,Ig=wA-W;for(let UA=0;UA<=rA;UA++){hg(l,UA),AA.subVectors(l,N).normalize(),N.copy(l),gA.copy(l).setComponent(+g+1,0).normalize(),CA.crossVectors(AA,gA).normalize();let fg=UA===0,Rg=UA===rA,Ug=fg?3*Math.PI/2:eA,ng=fg?qA:Ig,og=fg?QA:HA,Zg=fg?0:Ag-QA,cg=AA.clone().multiplyScalar(fg?-fA:fA).add(l),OI=AA.clone().multiplyScalar(fg?-1:1).normalize();for(let lA=0;lA{gg[uA*3+WA]=cg.getComponent(WA),Dg[uA*3+WA]=OI.getComponent(WA)}),Eg[uA*2]=+Rg,Eg[uA*2+1]=lA/a),h.copy(O).multiplyScalar(nA),c.addVectors(l,h);for(let WA=0;WA{gg[uA*3+$g]=h.getComponent($g),Dg[uA*3+$g]=_.getComponent($g)});let Lg=+fg+Math.sin(Qg);Eg[uA*2]=(ng+fA*Lg)/wA,Eg[uA*2+1]=lA/a}}h.addVectors(l,b),uA=LA+UA*QA+lA,[0,1,2].forEach(WA=>{gg[uA*3+WA]=h.getComponent(WA),Dg[uA*3+WA]=O.getComponent(WA)}),Eg[uA*2]=(W+UA*V)/wA,Eg[uA*2+1]=lA/a}}let jA=$+2*r+VA,[dg,Cg]=[+Q,jA-1];for(let UA=dg;UA<=Cg-1;UA++){let fg=Q&&UA===Cg-1;for(let Rg=0;Rg{Array.isArray(i)&&(i.x=i[0],i.y=i[1])});let I=Object.assign({},(A==null?void 0:A.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}]},g.parameters);return{parameters:Object.assign(I,{width:Math.abs(I.width),height:Math.abs(I.height??I.width),depth:Math.abs(I.depth??I.width)})}}static build(g){let{points:A,segments:I,verticalSegments:e}=g.parameters,i=new yc;i.moveTo(A[0].x,A[0].y),i.bezierCurveTo(A[1].x,A[1].y,A[2].x,A[2].y,A[3].x,A[3].y);let t=new VN(i.extractPoints(e).shape,I);return t.rotateZ(Math.PI),Object.assign(t,{userData:{...g,type:"LatheGeometry"}})}},Ao=new zA,qu=new ZI,Dl=new J,$c=class extends Si{constructor(){super(),this.uuid=vg.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(A){let I=new hi().getNormalMatrix(A);for(let e=0,i=this.vertices.length;e0)for(let Q=0;Q0&&(this.normalsNeedUpdate=!0)}computeFlatVertexNormals(){this.computeFaceNormals();for(let A=0,I=this.faces.length;A0&&(this.normalsNeedUpdate=!0)}computeMorphNormals(){for(let I=0,e=this.faces.length;I=0;B--){let a=C[B];this.faces.splice(a,1);for(let s=0,r=this.faceVertexUvs.length;s0,y=h.vertexNormals.length>0,f=h.color.r!==1||h.color.g!==1||h.color.b!==1,k=h.vertexColors.length>0,M=0;if(M=s(M,0,0),M=s(M,1,l),M=s(M,2,c),M=s(M,3,d),M=s(M,4,u),M=s(M,5,y),M=s(M,6,f),M=s(M,7,k),e.push(M),e.push(h.a,h.b,h.c),e.push(h.materialIndex),d){let G=this.faceVertexUvs[0][n];e.push(E(G[0]),E(G[1]),E(G[2]))}if(u&&e.push(r(h.normal)),y){let G=h.vertexNormals;e.push(r(G[0]),r(G[1]),r(G[2]))}if(f&&e.push(Q(h.color)),k){let G=h.vertexColors;e.push(Q(G[0]),Q(G[1]),Q(G[2]))}}function s(n,h,l){return l?n|1<0&&(A.data.colors=C),B.length>0&&(A.data.uvs=[B]),A.data.faces=e,A}clone(){return new $c().copy(this)}copy(A){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=A.name;let I=A.vertices;for(let Q=0,E=I.length;Q0){let i=new Float32Array(A.normals.length*3);I.setAttribute("normal",dl.call(new zg(i,3),A.normals))}if(A.colors.length>0){let i=new Float32Array(A.colors.length*3);I.setAttribute("color",KM.call(new zg(i,3),A.colors))}if(A.uvs.length>0){let i=new Float32Array(A.uvs.length*2);I.setAttribute("uv",JM.call(new zg(i,2),A.uvs))}if(A.uvs2.length>0){let i=new Float32Array(A.uvs2.length*2);I.setAttribute("uv2",JM.call(new zg(i,2),A.uvs2))}I.groups=A.groups;for(let i in A.morphTargets){let t=[],C=A.morphTargets[i];for(let o=0,B=C.length;o0){let i=new pg(A.skinIndices.length*4,4);I.setAttribute("skinIndex",vM.call(i,A.skinIndices))}if(A.skinWeights.length>0){let i=new pg(A.skinWeights.length*4,4);I.setAttribute("skinWeight",vM.call(i,A.skinWeights))}return A.boundingSphere!==null&&(I.boundingSphere=A.boundingSphere.clone()),A.boundingBox!==null&&(I.boundingBox=A.boundingBox.clone()),I}computeTangents(){console.error("THREE.Geometry: .computeTangents() has been removed.")}computeLineDistances(){console.error("THREE.Geometry: .computeLineDistances() has been removed. Use THREE.Line.computeLineDistances() instead.")}applyMatrix(A){return console.warn("THREE.Geometry: .applyMatrix() has been renamed to .applyMatrix4()."),this.applyMatrix4(A)}dispose(){this.dispatchEvent({type:"dispose"})}static createBufferGeometryFromObject(A){let I=new bg,e=A.geometry;if(A.isPoints||A.isLine){let i=new pg(e.vertices.length*3,3),t=new pg(e.colors.length*3,3);if(I.setAttribute("position",dl.call(i,e.vertices)),I.setAttribute("color",KM.call(t,e.colors)),e.lineDistances&&e.lineDistances.length===e.vertices.length){let C=new pg(e.lineDistances.length,1);I.setAttribute("lineDistance",rV.call(C,e.lineDistances))}e.boundingSphere!==null&&(I.boundingSphere=e.boundingSphere.clone()),e.boundingBox!==null&&(I.boundingBox=e.boundingBox.clone())}else A.isMesh&&(I=e.toBufferGeometry());return I}};$c.prototype.isGeometry=!0;var aV=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(g){let A=[],I,e,i,t=g.faces;for(e=0;e0,t=e[1]&&e[1].length>0,C=g.morphTargets,o=C.length,B;if(o>0){B=[];for(let l=0;l0){r=[];for(let l=0;l0&&A.length===0&&console.error("THREE.DirectGeometry: Faceless geometries are not supported.");for(let l=0;l0;)this._smooth(g);return g.computeFaceNormals(),g.computeVertexNormals(),g}_smooth(g){let A=new J,I,e,i,t,C,o=g.vertices,B=g.faces,a=g.faceVertexUvs[0],s=a!==void 0&&a.length>0,r=[],Q=new Map;EV(o,B,r,Q);let E=[],n,h,l,c,d,u,y;for(let aA of Array.from(Q.keys())){for(h=Q.get(aA),l=new J,d=3/8,u=1/8,y=h.faces.length,y!=2&&(d=.5,u=0,y!=1),l.addVectors(h.a,h.b).multiplyScalar(d),A.set(0,0,0),t=0;t3&&(f=3/(8*I)),k=1-I*Number(f),M=f,I<=2&&(I==2?(k=3/4,M=1/8):I==1||I==0),b=N.clone().multiplyScalar(k),A.set(0,0,0),t=0;t0?(o===void 0||(C==null?void 0:C.subdivisions)!==i)&&(o===void 0&&(o=t),t=new nV(i).modify(o).toBufferGeometry()):(o!==void 0&&(t=o),o=void 0,t.getAttribute("normal")===void 0&&t.computeVertexNormals())}catch{o!==void 0&&(t=o),o=void 0,t.getAttribute("normal")===void 0&&t.computeVertexNormals()}return o!==void 0&&Object.assign(t,{originalGeometry:o}),delete g.geometry,Object.assign(t,{userData:{...g,type:"NonParametricGeometry"}})}static loadFromUrl(g,A,I){new rF(I).load(g,e=>{let i=this.normalizeInputs({geometry:e});e.boundingBox.getSize(Ai);let t=100/Ai.x;Object.assign(i.parameters,{width:100,height:Ai.y*t,depth:Ai.z*t}),A(this.build(i))})}},eK=class{static create(g){return this.build(this.normalizeInputs(g))}static normalizeInputs(g,A){let I=Object.assign({},(A==null?void 0:A.parameters)??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:3},g.parameters);return{shape:g.shape&&g.shape instanceof fe?g.shape:new fe,parameters:Object.assign(I,{width:Math.abs(I.width),height:Math.abs(I.height??I.width),depth:Math.abs(I.depth??0)})}}static build(g){let{width:A,height:I,spikes:e,cornerRadius:i,depth:t,extrudeBevelSize:C,extrudeBevelSegments:o}=g.parameters,B=g.shape,a=A*.5,s=I*.5,r=0,Q=0,E=2*Math.PI/e;for(let h=0;h0){{let Ag=BA.clone().add(iA).multiplyScalar(.5),gg=u.clone().sub(Ag).normalize(),Dg=d.clone().sub(Ag).normalize().add(gg).normalize().multiplyScalar(-1),Eg=IA.clone().sub($);gA(Ag,Eg,Dg,k.angle())}let LA,HA;{let Ag=new J;vE(v,fA,Ag);let gg=IA.clone().add(rA).multiplyScalar(.5);gg=cV(gg,iA,u);let Dg=IA.clone().sub(rA);[LA,HA]=gA(gg,Dg,Ag,b,rA.y)}{let Ag=LA,gg=Ag.clone().setY(0).normalize(),Dg=new J(0,-1,0),Eg=gg.clone().cross(Dg);CA(Ag,gg,Dg,Eg)}{let Ag=k.angle(),gg=Math.PI-Ag,Dg=u.clone();Dg.y-=t/Math.sin(Ag-Math.PI/2);let Eg=new J,$A=[];for(let hg=0;hgI&&k>e?Math.min(y*I/f,y*e/k):f>I?y*I/f:k>e?y*e/k:y}let E=[];E[0]=i[0]===0?0:Q(i[0],i[0]+i[3],i[0]+i[1]),E[1]=i[1]===0?0:Q(i[1],i[1]+i[2],i[1]+i[0]),E[2]=i[2]===0?0:Q(i[2],i[2]+i[1],i[2]+i[3]),E[3]=i[3]===0?0:Q(i[3],i[3]+i[0],i[3]+i[2]);let n=s.x,h=r.x,l=r.y,c=s.y;A.addPoint(A.createPoint(n,l)),A.addPoint(A.createPoint(h,l)),A.addPoint(A.createPoint(h,c)),A.addPoint(A.createPoint(n,c)),A.isClosed=!0;let d=!0;for(let y=0,f=A.points.length;y0&&E[y]!==E[y-1]&&(d=!1);d&&(A.roundness=E[0]),A.useCubicForRoundedCorners=t!==1,A.update();let u=Or.create({shape:A,parameters:{depth:C,extrudeBevelSize:o,extrudeBevelSegments:B}});return Object.assign(u,{userData:{...g,type:"RectangleGeometry"}})}},dV=class{static create(g){return this.build(this.normalizeInputs(g))}static normalizeInputs(g,A){let I=Object.assign({},(A==null?void 0:A.parameters)??{width:100,widthSegments:64,heightSegments:64,phiStart:0,phiLength:2*Math.PI,thetaStart:0,thetaLength:180},g.parameters);return I.thetaLength=vg.clamp(I.thetaLength,0,180),{parameters:Object.assign(I,{width:Math.abs(I.width),height:Math.abs(I.height??I.width),depth:Math.abs(I.depth??I.width)})}}static build(g){let{width:A=100,height:I=A,depth:e=A,widthSegments:i=64,heightSegments:t=64,phiStart:C,phiLength:o,thetaStart:B,thetaLength:a}=g.parameters,s;return a===0?(s=new bg,s.setAttribute("position",new pg([],3))):s=new Zw(.5*A,i,t,C,o,B,a*vg.DEG2RAD),s.scale(1,I/A,e/A),Object.assign(s,{userData:{...g,type:"SphereGeometry"}})}},uV=class{static create(g){return this.build(this.normalizeInputs(g))}static normalizeInputs(g,A){let I=Object.assign({},(A==null?void 0:A.parameters)??{width:100,depth:0,widthSegments:8,heightSegments:8},g.parameters);return{parameters:Object.assign(I,{width:Math.abs(I.width),height:Math.abs(I.height??I.width),depth:0})}}static build(g){let{width:A=100,height:I=A,widthSegments:e=8,heightSegments:i=8}=g.parameters,t=new FD(A,I,e,i);return t.scale(1,1,1),Object.assign(t,{userData:{...g,type:"PlaneGeometry"}})}},pV=class{static create(g){return this.build(this.normalizeInputs(g))}static normalizeInputs(g,A){let I=Object.assign({},(A==null?void 0:A.parameters)??{width:100,angle:90,cornerRadius:24,cornerSegments:8},g.parameters);return{parameters:Object.assign(I,{width:Math.abs(I.width),height:Math.abs(I.height??I.width),depth:Math.abs(I.depth??I.width)})}}static build(g){let{width:A,height:I,depth:e,angle:i,cornerRadius:t,cornerSegments:C}=g.parameters,o=new yV(A,I,e,i,t,C);return Object.assign(o,{userData:{...g,type:"BackdropGeometry"}})}},yV=class extends bg{constructor(g=1,A=1,I=1,e=90,i=10,t=24){super(),this.type="BackdropGeometry";let C=[],o=[],B=[],a=.001;i==0&&(t=1),t=Math.max(1,Math.floor(t)),i=Math.min(i,100),e=Math.min(180-a,e),e*=Math.PI/180;let s=[],r=Math.PI/2,Q=(aA=0,nA=0,fA=0)=>new J(aA,nA,fA),E=Q(),n=Q(),[h,l,c]=[A/2,g/2,I/2],d=-l,u=+l,[y,f,k]=[Q(d,-h,+c),Q(d,-h,-c),Q(d,+h,-c)],M=(aA,nA=!1)=>Math.sin(aA-Math.PI/(1+ +nA)),G=(aA,nA=!1)=>Math.cos(aA-Math.PI/(1+ +nA));k.y=Math.sin(e)*A-h;let v=Math.cos(e)*A-c,N=y.z-a;e<=r?(k.z=Math.min(v,N),k.z==N&&(k.y-=(v-N)/Math.tan(r-e))):f.z=Math.min(f.z-v-c,y.z-a),E.subVectors(y,f),n.subVectors(k,f);let b=Math.min(E.length(),n.length())*i/100,O=b*Math.tan(e/2),H=b/Math.cos(e/2),_=E.clone().normalize().add(n.normalize()).setLength(H).add(f);E.set(0,M(e,!0),G(e,!0)),s.push([k,E.clone()]);let gA=(Math.PI-e)/t;for(let aA=0;aA<=t;aA++){let nA=r+e+aA*gA;E.set(0,Math.sin(nA)*O,Math.cos(nA)*O),E.add(_),n.set(0,M(nA),G(nA)),s.push([E.clone(),n.clone()])}s.push([y,Q(0,1,0)]);let CA=Math.sin(gA/2)*O*2,AA=s.length-1,BA=s[0][0].distanceTo(s[1][0]),iA=s[AA-1][0].distanceTo(s[AA][0]),rA=BA+CA*t+iA;s[0].push(1);for(let aA=0;aA<=t;aA++)s[aA+1].push(1-(BA+aA*CA)/rA);s[AA].push(0);let[$,IA,hA]=s[0],QA,DA,eA;for(let aA=1;aA{if(typeof A!="object"||!A.name||!A.init)throw new Error("Invalid JSEP plugin format");this.registered[A.name]||(A.init(this.jsep),this.registered[A.name]=A)})}},JA=class{static get version(){return"1.3.8"}static toString(){return"JavaScript Expression Parser (JSEP) v"+JA.version}static addUnaryOp(A){return JA.max_unop_len=Math.max(A.length,JA.max_unop_len),JA.unary_ops[A]=1,JA}static addBinaryOp(A,I,e){return JA.max_binop_len=Math.max(A.length,JA.max_binop_len),JA.binary_ops[A]=I,e?JA.right_associative.add(A):JA.right_associative.delete(A),JA}static addIdentifierChar(A){return JA.additional_identifier_chars.add(A),JA}static addLiteral(A,I){return JA.literals[A]=I,JA}static removeUnaryOp(A){return delete JA.unary_ops[A],A.length===JA.max_unop_len&&(JA.max_unop_len=JA.getMaxKeyLen(JA.unary_ops)),JA}static removeAllUnaryOps(){return JA.unary_ops={},JA.max_unop_len=0,JA}static removeIdentifierChar(A){return JA.additional_identifier_chars.delete(A),JA}static removeBinaryOp(A){return delete JA.binary_ops[A],A.length===JA.max_binop_len&&(JA.max_binop_len=JA.getMaxKeyLen(JA.binary_ops)),JA.right_associative.delete(A),JA}static removeAllBinaryOps(){return JA.binary_ops={},JA.max_binop_len=0,JA}static removeLiteral(A){return delete JA.literals[A],JA}static removeAllLiterals(){return JA.literals={},JA}get char(){return this.expr.charAt(this.index)}get code(){return this.expr.charCodeAt(this.index)}constructor(A){this.expr=A,this.index=0}static parse(A){return new JA(A).parse()}static getMaxKeyLen(A){return Math.max(0,...Object.keys(A).map(I=>I.length))}static isDecimalDigit(A){return A>=48&&A<=57}static binaryPrecedence(A){return JA.binary_ops[A]||0}static isIdentifierStart(A){return A>=65&&A<=90||A>=97&&A<=122||A>=128&&!JA.binary_ops[String.fromCharCode(A)]||JA.additional_identifier_chars.has(String.fromCharCode(A))}static isIdentifierPart(A){return JA.isIdentifierStart(A)||JA.isDecimalDigit(A)}throwError(A){let I=new Error(A+" at character "+this.index);throw I.index=this.index,I.description=A,I}runHook(A,I){if(JA.hooks[A]){let e={context:this,node:I};return JA.hooks.run(A,e),e.node}return I}searchHook(A){if(JA.hooks[A]){let I={context:this};return JA.hooks[A].find(function(e){return e.call(I.context,I),I.node}),I.node}}gobbleSpaces(){let A=this.code;for(;A===JA.SPACE_CODE||A===JA.TAB_CODE||A===JA.LF_CODE||A===JA.CR_CODE;)A=this.expr.charCodeAt(++this.index);this.runHook("gobble-spaces")}parse(){this.runHook("before-all");let A=this.gobbleExpressions(),I=A.length===1?A[0]:{type:JA.COMPOUND,body:A};return this.runHook("after-all",I)}gobbleExpressions(A){let I=[],e,i;for(;this.index0;){if(JA.binary_ops.hasOwnProperty(A)&&(!JA.isIdentifierStart(this.code)||this.index+A.lengtht.right_a&&r.right_a?e>r.prec:e<=r.prec;for(;i.length>2&&s(i[i.length-2]);)o=i.pop(),I=i.pop().value,C=i.pop(),A={type:JA.BINARY_EXP,operator:I,left:C,right:o},i.push(A);A=this.gobbleToken(),A||this.throwError("Expected expression after "+a),i.push(t,A)}for(B=i.length-1,A=i[B];B>1;)A={type:JA.BINARY_EXP,operator:i[B-1].value,left:i[B-2],right:A},B-=2;return A}gobbleToken(){let A,I,e,i;if(this.gobbleSpaces(),i=this.searchHook("gobble-token"),i)return this.runHook("after-token",i);if(A=this.code,JA.isDecimalDigit(A)||A===JA.PERIOD_CODE)return this.gobbleNumericLiteral();if(A===JA.SQUOTE_CODE||A===JA.DQUOTE_CODE)i=this.gobbleStringLiteral();else if(A===JA.OBRACK_CODE)i=this.gobbleArray();else{for(I=this.expr.substr(this.index,JA.max_unop_len),e=I.length;e>0;){if(JA.unary_ops.hasOwnProperty(I)&&(!JA.isIdentifierStart(this.code)||this.index+I.lengths||i.y>s)&&(i.x>s&&(t.x=Math.floor(s/gA.x),i.x=t.x*gA.x,_.mapSize.x=t.x),i.y>s&&(t.y=Math.floor(s/gA.y),i.y=t.y*gA.y,_.mapSize.y=t.y)),_.map===null){let AA=this.type!==WE?{minFilter:ie,magFilter:ie}:{};_.map=new WI(i.x,i.y,AA),_.map.texture.name=H.name+".shadowMap",_.camera.updateProjectionMatrix()}g.setRenderTarget(_.map),g.clear();let CA=_.getViewportCount();for(let AA=0;AA0||f.map&&f.alphaTest>0){let O=N.uuid,H=f.uuid,_=a[O];_===void 0&&(_={},a[O]=_);let gA=_[H];gA===void 0&&(gA=N.clone(),_[H]=gA),N=gA}return N.visible=f.visible,N.wireframe=f.wireframe,v===WE?N.side=f.shadowSide!==null?f.shadowSide:f.side:N.side=f.shadowSide!==null?f.shadowSide:r[f.side],N.alphaMap=f.alphaMap,N.alphaTest=f.alphaTest,N.map=f.map,N.clipShadows=f.clipShadows,N.clippingPlanes=f.clippingPlanes,N.clipIntersection=f.clipIntersection,N.displacementMap=f.displacementMap,N.displacementScale=f.displacementScale,N.displacementBias=f.displacementBias,N.wireframeLinewidth=f.wireframeLinewidth,N.linewidth=f.linewidth,k.isPointLight===!0&&N.isMeshDistanceMaterial===!0&&(N.referencePosition.setFromMatrixPosition(k.matrixWorld),N.nearDistance=M,N.farDistance=G),N}function u(y,f,k,M,G){if(y.visible===!1)return;if(y.layers.test(f.layers)&&(y.isMesh||y.isLine||y.isPoints)&&(y.castShadow||y.receiveShadow&&G===WE)&&(!y.frustumCulled||e.intersectsObject(y))){y.modelViewMatrix.multiplyMatrices(k.matrixWorldInverse,y.matrixWorld);let N=A.update(y),b=y.material;if(Array.isArray(b)){let O=N.groups;for(let H=0,_=O.length;H<_;H++){let gA=O[H],CA=b[gA.materialIndex];if(CA&&CA.visible){let AA=d(y,CA,M,k.near,k.far,G);g.renderBufferDirect(k,null,N,AA,y,gA)}}}else if(b.visible){let O=d(y,b,M,k.near,k.far,G);g.renderBufferDirect(k,null,N,O,y,null)}}let v=y.children;for(let N=0,b=v.length;N=1):BA.indexOf("OpenGL ES")!==-1&&(AA=parseFloat(/^OpenGL ES (\d)/.exec(BA)[1]),CA=AA>=2);let iA=null,rA={},$=g.getParameter(3088),IA=g.getParameter(2978),hA=new EI().fromArray($),QA=new EI().fromArray(IA);function DA(lA,KA,WA){let Qg=new Uint8Array(4),Lg=g.createTexture();g.bindTexture(lA,Lg),g.texParameteri(lA,10241,9728),g.texParameteri(lA,10240,9728);for(let $g=0;$g"u"?!1:/OculusBrowser/g.test(navigator.userAgent),n=new WeakMap,h,l=new WeakMap,c=!1;try{c=typeof OffscreenCanvas<"u"&&new OffscreenCanvas(1,1).getContext("2d")!==null}catch{}function d(V,W){return c?new OffscreenCanvas(V,W):Dc("canvas")}function u(V,W,wA,qA){let Ig=1;if((V.width>qA||V.height>qA)&&(Ig=qA/Math.max(V.width,V.height)),Ig<1||W===!0)if(typeof HTMLImageElement<"u"&&V instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&V instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&V instanceof ImageBitmap){let jA=W?cc:Math.floor,dg=jA(Ig*V.width),Cg=jA(Ig*V.height);h===void 0&&(h=d(dg,Cg));let UA=wA?d(dg,Cg):h;return UA.width=dg,UA.height=Cg,UA.getContext("2d").drawImage(V,0,0,dg,Cg),console.warn("THREE.WebGLRenderer: Texture has been resized from ("+V.width+"x"+V.height+") to ("+dg+"x"+Cg+")."),UA}else return"data"in V&&console.warn("THREE.WebGLRenderer: Image in DataTexture is too big ("+V.width+"x"+V.height+")."),V;return V}function y(V){return Tp(V.width)&&Tp(V.height)}function f(V){return o?!1:V.wrapS!==Ke||V.wrapT!==Ke||V.minFilter!==ie&&V.minFilter!==cI}function k(V,W){return V.generateMipmaps&&W&&V.minFilter!==ie&&V.minFilter!==cI}function M(V){g.generateMipmap(V)}function G(V,W,wA,qA,Ig=!1){if(o===!1)return W;if(V!==null){if(g[V]!==void 0)return g[V];console.warn("THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format '"+V+"'")}let jA=W;return W===6403&&(wA===5126&&(jA=33326),wA===5131&&(jA=33325),wA===5121&&(jA=33321)),W===33319&&(wA===5126&&(jA=33328),wA===5131&&(jA=33327),wA===5121&&(jA=33323)),W===6408&&(wA===5126&&(jA=34836),wA===5131&&(jA=34842),wA===5121&&(jA=qA===sI&&Ig===!1?35907:32856),wA===32819&&(jA=32854),wA===32820&&(jA=32855)),(jA===33325||jA===33326||jA===33327||jA===33328||jA===34842||jA===34836)&&A.get("EXT_color_buffer_float"),jA}function v(V,W,wA){return k(V,wA)===!0||V.isFramebufferTexture&&V.minFilter!==ie&&V.minFilter!==cI?Math.log2(Math.max(W.width,W.height))+1:V.mipmaps!==void 0&&V.mipmaps.length>0?V.mipmaps.length:V.isCompressedTexture&&Array.isArray(V.image)?W.mipmaps.length:1}function N(V){return V===ie||V===sf||V===md?9728:9729}function b(V){let W=V.target;W.removeEventListener("dispose",b),H(W),W.isVideoTexture&&n.delete(W)}function O(V){let W=V.target;W.removeEventListener("dispose",O),gA(W)}function H(V){let W=e.get(V);if(W.__webglInit===void 0)return;let wA=V.source,qA=l.get(wA);if(qA){let Ig=qA[W.__cacheKey];Ig.usedTimes--,Ig.usedTimes===0&&_(V),Object.keys(qA).length===0&&l.delete(wA)}e.remove(V)}function _(V){let W=e.get(V);g.deleteTexture(W.__webglTexture);let wA=V.source,qA=l.get(wA);delete qA[W.__cacheKey],C.memory.textures--}function gA(V){let W=V.texture,wA=e.get(V),qA=e.get(W);if(qA.__webglTexture!==void 0&&(g.deleteTexture(qA.__webglTexture),C.memory.textures--),V.depthTexture&&V.depthTexture.dispose(),V.isWebGLCubeRenderTarget)for(let Ig=0;Ig<6;Ig++)g.deleteFramebuffer(wA.__webglFramebuffer[Ig]),wA.__webglDepthbuffer&&g.deleteRenderbuffer(wA.__webglDepthbuffer[Ig]);else{if(g.deleteFramebuffer(wA.__webglFramebuffer),wA.__webglDepthbuffer&&g.deleteRenderbuffer(wA.__webglDepthbuffer),wA.__webglMultisampledFramebuffer&&g.deleteFramebuffer(wA.__webglMultisampledFramebuffer),wA.__webglColorRenderbuffer)for(let Ig=0;Ig=B&&console.warn("THREE.WebGLTextures: Trying to use "+V+" texture units while this GPU supports only "+B),CA+=1,V}function iA(V){let W=[];return W.push(V.wrapS),W.push(V.wrapT),W.push(V.wrapR||0),W.push(V.magFilter),W.push(V.minFilter),W.push(V.anisotropy),W.push(V.internalFormat),W.push(V.format),W.push(V.type),W.push(V.generateMipmaps),W.push(V.premultiplyAlpha),W.push(V.flipY),W.push(V.unpackAlignment),W.push(V.encoding),W.join()}function rA(V,W){let wA=e.get(V);if(V.isVideoTexture&&mg(V),V.isRenderTargetTexture===!1&&V.version>0&&wA.__version!==V.version){let qA=V.image;if(qA===null)console.warn("THREE.WebGLRenderer: Texture marked for update but no image data found.");else if(qA.complete===!1)console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete");else{nA(wA,V,W);return}}I.bindTexture(3553,wA.__webglTexture,33984+W)}function $(V,W){let wA=e.get(V);if(V.version>0&&wA.__version!==V.version){nA(wA,V,W);return}I.bindTexture(35866,wA.__webglTexture,33984+W)}function IA(V,W){let wA=e.get(V);if(V.version>0&&wA.__version!==V.version){nA(wA,V,W);return}I.bindTexture(32879,wA.__webglTexture,33984+W)}function hA(V,W){let wA=e.get(V);if(V.version>0&&wA.__version!==V.version){fA(wA,V,W);return}I.bindTexture(34067,wA.__webglTexture,33984+W)}let QA={[hB]:10497,[Ke]:33071,[Yp]:33648},DA={[ie]:9728,[sf]:9984,[md]:9986,[cI]:9729,[eL]:9985,[SQ]:9987};function eA(V,W,wA){if(wA?(g.texParameteri(V,10242,QA[W.wrapS]),g.texParameteri(V,10243,QA[W.wrapT]),(V===32879||V===35866)&&g.texParameteri(V,32882,QA[W.wrapR]),g.texParameteri(V,10240,DA[W.magFilter]),g.texParameteri(V,10241,DA[W.minFilter])):(g.texParameteri(V,10242,33071),g.texParameteri(V,10243,33071),(V===32879||V===35866)&&g.texParameteri(V,32882,33071),(W.wrapS!==Ke||W.wrapT!==Ke)&&console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping."),g.texParameteri(V,10240,N(W.magFilter)),g.texParameteri(V,10241,N(W.minFilter)),W.minFilter!==ie&&W.minFilter!==cI&&console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.")),A.has("EXT_texture_filter_anisotropic")===!0){let qA=A.get("EXT_texture_filter_anisotropic");if(W.magFilter===ie||W.minFilter!==md&&W.minFilter!==SQ||W.type===Rt&&A.has("OES_texture_float_linear")===!1||o===!1&&W.type===fQ&&A.has("OES_texture_half_float_linear")===!1)return;(W.anisotropy>1||e.get(W).__currentAnisotropy)&&(g.texParameterf(V,qA.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(W.anisotropy,i.getMaxAnisotropy())),e.get(W).__currentAnisotropy=W.anisotropy)}}function aA(V,W){let wA=!1;V.__webglInit===void 0&&(V.__webglInit=!0,W.addEventListener("dispose",b));let qA=W.source,Ig=l.get(qA);Ig===void 0&&(Ig={},l.set(qA,Ig));let jA=iA(W);if(jA!==V.__cacheKey){Ig[jA]===void 0&&(Ig[jA]={texture:g.createTexture(),usedTimes:0},C.memory.textures++,wA=!0),Ig[jA].usedTimes++;let dg=Ig[V.__cacheKey];dg!==void 0&&(Ig[V.__cacheKey].usedTimes--,dg.usedTimes===0&&_(W)),V.__cacheKey=jA,V.__webglTexture=Ig[jA].texture}return wA}function nA(V,W,wA){let qA=3553;(W.isDataArrayTexture||W.isCompressedArrayTexture)&&(qA=35866),W.isData3DTexture&&(qA=32879);let Ig=aA(V,W),jA=W.source;I.bindTexture(qA,V.__webglTexture,33984+wA);let dg=e.get(jA);if(jA.version!==dg.__version||Ig===!0){I.activeTexture(33984+wA),g.pixelStorei(37440,W.flipY),g.pixelStorei(37441,W.premultiplyAlpha),g.pixelStorei(3317,W.unpackAlignment),g.pixelStorei(37443,0);let Cg=f(W)&&y(W.image)===!1,UA=u(W.image,Cg,!1,s);UA=hg(W,UA);let fg=y(UA)||o,Rg=t.convert(W.format,W.encoding),Ug=t.convert(W.type),ng=G(W.internalFormat,Rg,Ug,W.encoding,W.isVideoTexture);eA(qA,W,fg);let og,Zg=W.mipmaps,cg=o&&W.isVideoTexture!==!0,OI=dg.__version===void 0||Ig===!0,lA=v(W,UA,fg);if(W.isDepthTexture)ng=6402,o?W.type===Rt?ng=36012:W.type===oa?ng=33190:W.type===wr?ng=35056:ng=33189:W.type===Rt&&console.error("WebGLRenderer: Floating point depth texture requires WebGL2."),W.format===Sr&&ng===6402&&W.type!==GN&&W.type!==oa&&(console.warn("THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture."),W.type=oa,Ug=t.convert(W.type)),W.format===Fr&&ng===6402&&(ng=34041,W.type!==wr&&(console.warn("THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture."),W.type=wr,Ug=t.convert(W.type))),OI&&(cg?I.texStorage2D(3553,1,ng,UA.width,UA.height):I.texImage2D(3553,0,ng,UA.width,UA.height,0,Rg,Ug,null));else if(W.isDataTexture)if(Zg.length>0&&fg){cg&&OI&&I.texStorage2D(3553,lA,ng,Zg[0].width,Zg[0].height);for(let KA=0,WA=Zg.length;KA>=1,WA>>=1}}else if(Zg.length>0&&fg){cg&&OI&&I.texStorage2D(3553,lA,ng,Zg[0].width,Zg[0].height);for(let KA=0,WA=Zg.length;KA0&&OI++,I.texStorage2D(34067,OI,og,UA[0].width,UA[0].height));for(let KA=0;KA<6;KA++)if(Cg){Zg?I.texSubImage2D(34069+KA,0,0,0,UA[KA].width,UA[KA].height,Ug,ng,UA[KA].data):I.texImage2D(34069+KA,0,og,UA[KA].width,UA[KA].height,0,Ug,ng,UA[KA].data);for(let WA=0;WA=34069&&Ig<=34074)&&g.framebufferTexture2D(36160,qA,Ig,e.get(wA).__webglTexture,0),I.bindFramebuffer(36160,null)}function VA(V,W,wA){if(g.bindRenderbuffer(36161,V),W.depthBuffer&&!W.stencilBuffer){let qA=33189;if(wA||$A(W)){let Ig=W.depthTexture;Ig&&Ig.isDepthTexture&&(Ig.type===Rt?qA=36012:Ig.type===oa&&(qA=33190));let jA=Eg(W);$A(W)?Q.renderbufferStorageMultisampleEXT(36161,jA,qA,W.width,W.height):g.renderbufferStorageMultisample(36161,jA,qA,W.width,W.height)}else g.renderbufferStorage(36161,qA,W.width,W.height);g.framebufferRenderbuffer(36160,36096,36161,V)}else if(W.depthBuffer&&W.stencilBuffer){let qA=Eg(W);wA&&$A(W)===!1?g.renderbufferStorageMultisample(36161,qA,35056,W.width,W.height):$A(W)?Q.renderbufferStorageMultisampleEXT(36161,qA,35056,W.width,W.height):g.renderbufferStorage(36161,34041,W.width,W.height),g.framebufferRenderbuffer(36160,33306,36161,V)}else{let qA=W.isWebGLMultipleRenderTargets===!0?W.texture:[W.texture];for(let Ig=0;Ig0&&$A(V)===!1){let Cg=jA?W:[W];wA.__webglMultisampledFramebuffer=g.createFramebuffer(),wA.__webglColorRenderbuffer=[],I.bindFramebuffer(36160,wA.__webglMultisampledFramebuffer);for(let UA=0;UA0&&$A(V)===!1){let W=V.isWebGLMultipleRenderTargets?V.texture:[V.texture],wA=V.width,qA=V.height,Ig=16384,jA=[],dg=V.stencilBuffer?33306:36096,Cg=e.get(V),UA=V.isWebGLMultipleRenderTargets===!0;if(UA)for(let fg=0;fg0&&A.has("WEBGL_multisampled_render_to_texture")===!0&&W.__useRenderToTexture!==!1}function mg(V){let W=C.render.frame;n.get(V)!==W&&(n.set(V,W),V.update())}function hg(V,W){let wA=V.encoding,qA=V.format,Ig=V.type;return V.isCompressedTexture===!0||V.isVideoTexture===!0||V.format===Hp||wA!==fo&&(wA===sI?o===!1?A.has("EXT_sRGB")===!0&&qA===$t?(V.format=Hp,V.minFilter=cI,V.generateMipmaps=!1):W=KN.sRGBToLinear(W):(qA!==$t||Ig!==vi)&&console.warn("THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType."):console.error("THREE.WebGLTextures: Unsupported texture encoding:",wA)),W}this.allocateTextureUnit=BA,this.resetTextureUnits=AA,this.setTexture2D=rA,this.setTexture2DArray=$,this.setTexture3D=IA,this.setTextureCube=hA,this.rebindTextures=HA,this.setupRenderTarget=Ag,this.updateRenderTargetMipmap=gg,this.updateMultisampleRenderTarget=Dg,this.setupDepthRenderbuffer=LA,this.setupFrameBufferTexture=uA,this.useMultisampledRTT=$A}function fH(g,A,I){let e=I.isWebGL2;function i(t,C=null){let o;if(t===vi)return 5121;if(t===oL)return 32819;if(t===BL)return 32820;if(t===iL)return 5120;if(t===tL)return 5122;if(t===GN)return 5123;if(t===CL)return 5124;if(t===oa)return 5125;if(t===Rt)return 5126;if(t===fQ)return e?5131:(o=A.get("OES_texture_half_float"),o!==null?o.HALF_FLOAT_OES:null);if(t===aL)return 6406;if(t===$t)return 6408;if(t===rL)return 6409;if(t===sL)return 6410;if(t===Sr)return 6402;if(t===Fr)return 34041;if(t===Hp)return o=A.get("EXT_sRGB"),o!==null?o.SRGB_ALPHA_EXT:null;if(t===QL)return 6403;if(t===EL)return 36244;if(t===kN)return 33319;if(t===nL)return 33320;if(t===hL)return 36249;if(t===Ud||t===Nd||t===Fd||t===Rd)if(C===sI)if(o=A.get("WEBGL_compressed_texture_s3tc_srgb"),o!==null){if(t===Ud)return o.COMPRESSED_SRGB_S3TC_DXT1_EXT;if(t===Nd)return o.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;if(t===Fd)return o.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;if(t===Rd)return o.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT}else return null;else if(o=A.get("WEBGL_compressed_texture_s3tc"),o!==null){if(t===Ud)return o.COMPRESSED_RGB_S3TC_DXT1_EXT;if(t===Nd)return o.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(t===Fd)return o.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(t===Rd)return o.COMPRESSED_RGBA_S3TC_DXT5_EXT}else return null;if(t===Qf||t===Ef||t===nf||t===hf)if(o=A.get("WEBGL_compressed_texture_pvrtc"),o!==null){if(t===Qf)return o.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(t===Ef)return o.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(t===nf)return o.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(t===hf)return o.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}else return null;if(t===lL)return o=A.get("WEBGL_compressed_texture_etc1"),o!==null?o.COMPRESSED_RGB_ETC1_WEBGL:null;if(t===lf||t===cf)if(o=A.get("WEBGL_compressed_texture_etc"),o!==null){if(t===lf)return C===sI?o.COMPRESSED_SRGB8_ETC2:o.COMPRESSED_RGB8_ETC2;if(t===cf)return C===sI?o.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:o.COMPRESSED_RGBA8_ETC2_EAC}else return null;if(t===Df||t===df||t===uf||t===pf||t===yf||t===wf||t===Sf||t===ff||t===Gf||t===kf||t===Mf||t===mf||t===Uf||t===Nf)if(o=A.get("WEBGL_compressed_texture_astc"),o!==null){if(t===Df)return C===sI?o.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:o.COMPRESSED_RGBA_ASTC_4x4_KHR;if(t===df)return C===sI?o.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:o.COMPRESSED_RGBA_ASTC_5x4_KHR;if(t===uf)return C===sI?o.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:o.COMPRESSED_RGBA_ASTC_5x5_KHR;if(t===pf)return C===sI?o.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:o.COMPRESSED_RGBA_ASTC_6x5_KHR;if(t===yf)return C===sI?o.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:o.COMPRESSED_RGBA_ASTC_6x6_KHR;if(t===wf)return C===sI?o.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:o.COMPRESSED_RGBA_ASTC_8x5_KHR;if(t===Sf)return C===sI?o.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:o.COMPRESSED_RGBA_ASTC_8x6_KHR;if(t===ff)return C===sI?o.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:o.COMPRESSED_RGBA_ASTC_8x8_KHR;if(t===Gf)return C===sI?o.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:o.COMPRESSED_RGBA_ASTC_10x5_KHR;if(t===kf)return C===sI?o.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:o.COMPRESSED_RGBA_ASTC_10x6_KHR;if(t===Mf)return C===sI?o.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:o.COMPRESSED_RGBA_ASTC_10x8_KHR;if(t===mf)return C===sI?o.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:o.COMPRESSED_RGBA_ASTC_10x10_KHR;if(t===Uf)return C===sI?o.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:o.COMPRESSED_RGBA_ASTC_12x10_KHR;if(t===Nf)return C===sI?o.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:o.COMPRESSED_RGBA_ASTC_12x12_KHR}else return null;if(t===Kd)if(o=A.get("EXT_texture_compression_bptc"),o!==null){if(t===Kd)return C===sI?o.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT:o.COMPRESSED_RGBA_BPTC_UNORM_EXT}else return null;if(t===cL||t===Ff||t===Rf||t===Kf)if(o=A.get("EXT_texture_compression_rgtc"),o!==null){if(t===Kd)return o.COMPRESSED_RED_RGTC1_EXT;if(t===Ff)return o.COMPRESSED_SIGNED_RED_RGTC1_EXT;if(t===Rf)return o.COMPRESSED_RED_GREEN_RGTC2_EXT;if(t===Kf)return o.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT}else return null;return t===wr?e?34042:(o=A.get("WEBGL_depth_texture"),o!==null?o.UNSIGNED_INT_24_8_WEBGL:null):g[t]!==void 0?g[t]:null}return{convert:i}}var GH=class extends Ui{constructor(g=[]){super(),this.isArrayCamera=!0,this.cameras=g}},gQ=class extends ZI{constructor(){super(),this.isGroup=!0,this.type="Group"}},kH={type:"move"},Cu=class{constructor(){this._targetRay=null,this._grip=null,this._hand=null}getHandSpace(){return this._hand===null&&(this._hand=new gQ,this._hand.matrixAutoUpdate=!1,this._hand.visible=!1,this._hand.joints={},this._hand.inputState={pinching:!1}),this._hand}getTargetRaySpace(){return this._targetRay===null&&(this._targetRay=new gQ,this._targetRay.matrixAutoUpdate=!1,this._targetRay.visible=!1,this._targetRay.hasLinearVelocity=!1,this._targetRay.linearVelocity=new J,this._targetRay.hasAngularVelocity=!1,this._targetRay.angularVelocity=new J),this._targetRay}getGripSpace(){return this._grip===null&&(this._grip=new gQ,this._grip.matrixAutoUpdate=!1,this._grip.visible=!1,this._grip.hasLinearVelocity=!1,this._grip.linearVelocity=new J,this._grip.hasAngularVelocity=!1,this._grip.angularVelocity=new J),this._grip}dispatchEvent(g){return this._targetRay!==null&&this._targetRay.dispatchEvent(g),this._grip!==null&&this._grip.dispatchEvent(g),this._hand!==null&&this._hand.dispatchEvent(g),this}connect(g){if(g&&g.hand){let A=this._hand;if(A)for(let I of g.hand.values())this._getHandJoint(A,I)}return this.dispatchEvent({type:"connected",data:g}),this}disconnect(g){return this.dispatchEvent({type:"disconnected",data:g}),this._targetRay!==null&&(this._targetRay.visible=!1),this._grip!==null&&(this._grip.visible=!1),this._hand!==null&&(this._hand.visible=!1),this}update(g,A,I){let e=null,i=null,t=null,C=this._targetRay,o=this._grip,B=this._hand;if(g&&A.session.visibilityState!=="visible-blurred"){if(B&&g.hand){t=!0;for(let n of g.hand.values()){let h=A.getJointPose(n,I),l=this._getHandJoint(B,n);h!==null&&(l.matrix.fromArray(h.transform.matrix),l.matrix.decompose(l.position,l.rotation,l.scale),l.jointRadius=h.radius),l.visible=h!==null}let a=B.joints["index-finger-tip"],s=B.joints["thumb-tip"],r=a.position.distanceTo(s.position),Q=.02,E=.005;B.inputState.pinching&&r>Q+E?(B.inputState.pinching=!1,this.dispatchEvent({type:"pinchend",handedness:g.handedness,target:this})):!B.inputState.pinching&&r<=Q-E&&(B.inputState.pinching=!0,this.dispatchEvent({type:"pinchstart",handedness:g.handedness,target:this}))}else o!==null&&g.gripSpace&&(i=A.getPose(g.gripSpace,I),i!==null&&(o.matrix.fromArray(i.transform.matrix),o.matrix.decompose(o.position,o.rotation,o.scale),i.linearVelocity?(o.hasLinearVelocity=!0,o.linearVelocity.copy(i.linearVelocity)):o.hasLinearVelocity=!1,i.angularVelocity?(o.hasAngularVelocity=!0,o.angularVelocity.copy(i.angularVelocity)):o.hasAngularVelocity=!1));C!==null&&(e=A.getPose(g.targetRaySpace,I),e===null&&i!==null&&(e=i),e!==null&&(C.matrix.fromArray(e.transform.matrix),C.matrix.decompose(C.position,C.rotation,C.scale),e.linearVelocity?(C.hasLinearVelocity=!0,C.linearVelocity.copy(e.linearVelocity)):C.hasLinearVelocity=!1,e.angularVelocity?(C.hasAngularVelocity=!0,C.angularVelocity.copy(e.angularVelocity)):C.hasAngularVelocity=!1,this.dispatchEvent(kH)))}return C!==null&&(C.visible=e!==null),o!==null&&(o.visible=i!==null),B!==null&&(B.visible=t!==null),this}_getHandJoint(g,A){if(g.joints[A.jointName]===void 0){let I=new gQ;I.matrixAutoUpdate=!1,I.visible=!1,g.joints[A.jointName]=I,g.add(I)}return g.joints[A.jointName]}},kQ=class extends ti{constructor(A,I,e,i,t,C,o,B,a,s){if(s=s!==void 0?s:Sr,s!==Sr&&s!==Fr)throw new Error("DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat");e===void 0&&s===Sr&&(e=oa),e===void 0&&s===Fr&&(e=wr),super(null,i,t,C,o,B,s,e,a),this.isDepthTexture=!0,this.image={width:A,height:I},this.magFilter=o!==void 0?o:ie,this.minFilter=B!==void 0?B:ie,this.flipY=!1,this.generateMipmaps=!1}},MH=class extends Si{constructor(g,A){super();let I=this,e=null,i=1,t=null,C="local-floor",o=1,B=null,a=null,s=null,r=null,Q=null,E=null,n=A.getContextAttributes(),h=null,l=null,c=[],d=[],u=new Set,y=new Map,f=new Ui;f.layers.enable(1),f.viewport=new EI;let k=new Ui;k.layers.enable(2),k.viewport=new EI;let M=[f,k],G=new GH;G.layers.enable(1),G.layers.enable(2);let v=null,N=null;this.cameraAutoUpdate=!0,this.enabled=!1,this.isPresenting=!1,this.getController=function($){let IA=c[$];return IA===void 0&&(IA=new Cu,c[$]=IA),IA.getTargetRaySpace()},this.getControllerGrip=function($){let IA=c[$];return IA===void 0&&(IA=new Cu,c[$]=IA),IA.getGripSpace()},this.getHand=function($){let IA=c[$];return IA===void 0&&(IA=new Cu,c[$]=IA),IA.getHandSpace()};function b($){let IA=d.indexOf($.inputSource);if(IA===-1)return;let hA=c[IA];hA!==void 0&&hA.dispatchEvent({type:$.type,data:$.inputSource})}function O(){e.removeEventListener("select",b),e.removeEventListener("selectstart",b),e.removeEventListener("selectend",b),e.removeEventListener("squeeze",b),e.removeEventListener("squeezestart",b),e.removeEventListener("squeezeend",b),e.removeEventListener("end",O),e.removeEventListener("inputsourceschange",H);for(let $=0;$=0&&(d[QA]=null,c[QA].disconnect(hA))}for(let IA=0;IA<$.added.length;IA++){let hA=$.added[IA],QA=d.indexOf(hA);if(QA===-1){for(let eA=0;eA=d.length){d.push(hA),QA=eA;break}else if(d[eA]===null){d[eA]=hA,QA=eA;break}if(QA===-1)break}let DA=c[QA];DA&&DA.connect(hA)}}let _=new J,gA=new J;function CA($,IA,hA){_.setFromMatrixPosition(IA.matrixWorld),gA.setFromMatrixPosition(hA.matrixWorld);let QA=_.distanceTo(gA),DA=IA.projectionMatrix.elements,eA=hA.projectionMatrix.elements,aA=DA[14]/(DA[10]-1),nA=DA[14]/(DA[10]+1),fA=(DA[9]+1)/DA[5],uA=(DA[9]-1)/DA[5],VA=(DA[8]-1)/DA[0],yA=(eA[8]+1)/eA[0],LA=aA*VA,HA=aA*yA,Ag=QA/(-VA+yA),gg=Ag*-VA;IA.matrixWorld.decompose($.position,$.quaternion,$.scale),$.translateX(gg),$.translateZ(Ag),$.matrixWorld.compose($.position,$.quaternion,$.scale),$.matrixWorldInverse.copy($.matrixWorld).invert();let Dg=aA+Ag,Eg=nA+Ag,$A=LA-gg,mg=HA+(QA-gg),hg=fA*nA/Eg*Dg,V=uA*nA/Eg*Dg;$.projectionMatrix.makePerspective($A,mg,hg,V,Dg,Eg)}function AA($,IA){IA===null?$.matrixWorld.copy($.matrix):$.matrixWorld.multiplyMatrices(IA.matrixWorld,$.matrix),$.matrixWorldInverse.copy($.matrixWorld).invert()}this.updateCamera=function($){if(e===null)return;G.near=k.near=f.near=$.near,G.far=k.far=f.far=$.far,(v!==G.near||N!==G.far)&&(e.updateRenderState({depthNear:G.near,depthFar:G.far}),v=G.near,N=G.far);let IA=$.parent,hA=G.cameras;AA(G,IA);for(let DA=0;DADA&&(y.set(QA,QA.lastChangedTime),I.dispatchEvent({type:"planechanged",data:QA}))}}E=null}let rA=new bN;rA.setAnimationLoop(iA),this.setAnimationLoop=function($){BA=$},this.dispose=function(){}}};function mH(g,A){function I(h,l){l.color.getRGB(h.fogColor.value,LN(g)),l.isFog?(h.fogNear.value=l.near,h.fogFar.value=l.far):l.isFogExp2&&(h.fogDensity.value=l.density)}function e(h,l,c,d,u){l.isMeshBasicMaterial||l.isMeshLambertMaterial?i(h,l):l.isMeshToonMaterial?(i(h,l),s(h,l)):l.isMeshPhongMaterial?(i(h,l),a(h,l)):l.isMeshStandardMaterial?(i(h,l),r(h,l),l.isMeshPhysicalMaterial&&Q(h,l,u)):l.isMeshMatcapMaterial?(i(h,l),E(h,l)):l.isMeshDepthMaterial?i(h,l):l.isMeshDistanceMaterial?(i(h,l),n(h,l)):l.isMeshNormalMaterial?i(h,l):l.isLineBasicMaterial?(t(h,l),l.isLineDashedMaterial&&C(h,l)):l.isPointsMaterial?o(h,l,c,d):l.isSpriteMaterial?B(h,l):l.isShadowMaterial?(h.color.value.copy(l.color),h.opacity.value=l.opacity):l.isShaderMaterial&&(l.uniformsNeedUpdate=!1)}function i(h,l){h.opacity.value=l.opacity,l.color&&h.diffuse.value.copy(l.color),l.emissive&&h.emissive.value.copy(l.emissive).multiplyScalar(l.emissiveIntensity),l.map&&(h.map.value=l.map),l.alphaMap&&(h.alphaMap.value=l.alphaMap),l.bumpMap&&(h.bumpMap.value=l.bumpMap,h.bumpScale.value=l.bumpScale,l.side===ni&&(h.bumpScale.value*=-1)),l.displacementMap&&(h.displacementMap.value=l.displacementMap,h.displacementScale.value=l.displacementScale,h.displacementBias.value=l.displacementBias),l.emissiveMap&&(h.emissiveMap.value=l.emissiveMap),l.normalMap&&(h.normalMap.value=l.normalMap,h.normalScale.value.copy(l.normalScale),l.side===ni&&h.normalScale.value.negate()),l.specularMap&&(h.specularMap.value=l.specularMap),l.alphaTest>0&&(h.alphaTest.value=l.alphaTest);let c=A.get(l).envMap;if(c&&(h.envMap.value=c,h.flipEnvMap.value=c.isCubeTexture&&c.isRenderTargetTexture===!1?-1:1,h.reflectivity.value=l.reflectivity,h.ior.value=l.ior,h.refractionRatio.value=l.refractionRatio),l.lightMap){h.lightMap.value=l.lightMap;let y=g.physicallyCorrectLights!==!0?Math.PI:1;h.lightMapIntensity.value=l.lightMapIntensity*y}l.aoMap&&(h.aoMap.value=l.aoMap,h.aoMapIntensity.value=l.aoMapIntensity);let d;l.map?d=l.map:l.specularMap?d=l.specularMap:l.displacementMap?d=l.displacementMap:l.normalMap?d=l.normalMap:l.bumpMap?d=l.bumpMap:l.roughnessMap?d=l.roughnessMap:l.metalnessMap?d=l.metalnessMap:l.alphaMap?d=l.alphaMap:l.emissiveMap?d=l.emissiveMap:l.clearcoatMap?d=l.clearcoatMap:l.clearcoatNormalMap?d=l.clearcoatNormalMap:l.clearcoatRoughnessMap?d=l.clearcoatRoughnessMap:l.iridescenceMap?d=l.iridescenceMap:l.iridescenceThicknessMap?d=l.iridescenceThicknessMap:l.specularIntensityMap?d=l.specularIntensityMap:l.specularColorMap?d=l.specularColorMap:l.transmissionMap?d=l.transmissionMap:l.thicknessMap?d=l.thicknessMap:l.sheenColorMap?d=l.sheenColorMap:l.sheenRoughnessMap&&(d=l.sheenRoughnessMap),d!==void 0&&(d.isWebGLRenderTarget&&(d=d.texture),d.matrixAutoUpdate===!0&&d.updateMatrix(),h.uvTransform.value.copy(d.matrix));let u;l.aoMap?u=l.aoMap:l.lightMap&&(u=l.lightMap),u!==void 0&&(u.isWebGLRenderTarget&&(u=u.texture),u.matrixAutoUpdate===!0&&u.updateMatrix(),h.uv2Transform.value.copy(u.matrix))}function t(h,l){h.diffuse.value.copy(l.color),h.opacity.value=l.opacity}function C(h,l){h.dashSize.value=l.dashSize,h.totalSize.value=l.dashSize+l.gapSize,h.scale.value=l.scale}function o(h,l,c,d){h.diffuse.value.copy(l.color),h.opacity.value=l.opacity,h.size.value=l.size*c,h.scale.value=d*.5,l.map&&(h.map.value=l.map),l.alphaMap&&(h.alphaMap.value=l.alphaMap),l.alphaTest>0&&(h.alphaTest.value=l.alphaTest);let u;l.map?u=l.map:l.alphaMap&&(u=l.alphaMap),u!==void 0&&(u.matrixAutoUpdate===!0&&u.updateMatrix(),h.uvTransform.value.copy(u.matrix))}function B(h,l){h.diffuse.value.copy(l.color),h.opacity.value=l.opacity,h.rotation.value=l.rotation,l.map&&(h.map.value=l.map),l.alphaMap&&(h.alphaMap.value=l.alphaMap),l.alphaTest>0&&(h.alphaTest.value=l.alphaTest);let c;l.map?c=l.map:l.alphaMap&&(c=l.alphaMap),c!==void 0&&(c.matrixAutoUpdate===!0&&c.updateMatrix(),h.uvTransform.value.copy(c.matrix))}function a(h,l){h.specular.value.copy(l.specular),h.shininess.value=Math.max(l.shininess,1e-4)}function s(h,l){l.gradientMap&&(h.gradientMap.value=l.gradientMap)}function r(h,l){h.roughness.value=l.roughness,h.metalness.value=l.metalness,l.roughnessMap&&(h.roughnessMap.value=l.roughnessMap),l.metalnessMap&&(h.metalnessMap.value=l.metalnessMap),A.get(l).envMap&&(h.envMapIntensity.value=l.envMapIntensity)}function Q(h,l,c){h.ior.value=l.ior,l.sheen>0&&(h.sheenColor.value.copy(l.sheenColor).multiplyScalar(l.sheen),h.sheenRoughness.value=l.sheenRoughness,l.sheenColorMap&&(h.sheenColorMap.value=l.sheenColorMap),l.sheenRoughnessMap&&(h.sheenRoughnessMap.value=l.sheenRoughnessMap)),l.clearcoat>0&&(h.clearcoat.value=l.clearcoat,h.clearcoatRoughness.value=l.clearcoatRoughness,l.clearcoatMap&&(h.clearcoatMap.value=l.clearcoatMap),l.clearcoatRoughnessMap&&(h.clearcoatRoughnessMap.value=l.clearcoatRoughnessMap),l.clearcoatNormalMap&&(h.clearcoatNormalScale.value.copy(l.clearcoatNormalScale),h.clearcoatNormalMap.value=l.clearcoatNormalMap,l.side===ni&&h.clearcoatNormalScale.value.negate())),l.iridescence>0&&(h.iridescence.value=l.iridescence,h.iridescenceIOR.value=l.iridescenceIOR,h.iridescenceThicknessMinimum.value=l.iridescenceThicknessRange[0],h.iridescenceThicknessMaximum.value=l.iridescenceThicknessRange[1],l.iridescenceMap&&(h.iridescenceMap.value=l.iridescenceMap),l.iridescenceThicknessMap&&(h.iridescenceThicknessMap.value=l.iridescenceThicknessMap)),l.transmission>0&&(h.transmission.value=l.transmission,h.transmissionSamplerMap.value=c.texture,h.transmissionSamplerSize.value.set(c.width,c.height),l.transmissionMap&&(h.transmissionMap.value=l.transmissionMap),h.thickness.value=l.thickness,l.thicknessMap&&(h.thicknessMap.value=l.thicknessMap),h.attenuationDistance.value=l.attenuationDistance,h.attenuationColor.value.copy(l.attenuationColor)),h.specularIntensity.value=l.specularIntensity,h.specularColor.value.copy(l.specularColor),l.specularIntensityMap&&(h.specularIntensityMap.value=l.specularIntensityMap),l.specularColorMap&&(h.specularColorMap.value=l.specularColorMap)}function E(h,l){l.matcap&&(h.matcap.value=l.matcap)}function n(h,l){h.referencePosition.value.copy(l.referencePosition),h.nearDistance.value=l.nearDistance,h.farDistance.value=l.farDistance}return{refreshFogUniforms:I,refreshMaterialUniforms:e}}function UH(g,A,I,e){let i={},t={},C=[],o=I.isWebGL2?g.getParameter(35375):0;function B(d,u){let y=u.program;e.uniformBlockBinding(d,y)}function a(d,u){let y=i[d.id];y===void 0&&(n(d),y=s(d),i[d.id]=y,d.addEventListener("dispose",l));let f=u.program;e.updateUBOMapping(d,f);let k=A.render.frame;t[d.id]!==k&&(Q(d),t[d.id]=k)}function s(d){let u=r();d.__bindingPointIndex=u;let y=g.createBuffer(),f=d.__size,k=d.usage;return g.bindBuffer(35345,y),g.bufferData(35345,f,k),g.bindBuffer(35345,null),g.bindBufferBase(35345,u,y),y}function r(){for(let d=0;d0){k=y%f;let O=f-k;k!==0&&O-N.boundary<0&&(y+=f-k,v.__offset=y)}y+=N.storage}return k=y%f,k>0&&(y+=f-k),d.__size=y,d.__cache={},this}function h(d){let u={boundary:0,storage:0};return typeof d=="number"?(u.boundary=4,u.storage=4):d.isVector2?(u.boundary=8,u.storage=8):d.isVector3||d.isColor?(u.boundary=16,u.storage=12):d.isVector4?(u.boundary=16,u.storage=16):d.isMatrix3?(u.boundary=48,u.storage=48):d.isMatrix4?(u.boundary=64,u.storage=64):d.isTexture?console.warn("THREE.WebGLRenderer: Texture samplers can not be part of an uniforms group."):console.warn("THREE.WebGLRenderer: Unsupported uniform value type.",d),u}function l(d){let u=d.target;u.removeEventListener("dispose",l);let y=C.indexOf(u.__bindingPointIndex);C.splice(y,1),g.deleteBuffer(i[u.id]),delete i[u.id],delete t[u.id]}function c(){for(let d in i)g.deleteBuffer(i[d]);C=[],i={},t={}}return{bind:B,update:a,dispose:c}}function NH(){let g=Dc("canvas");return g.style.display="block",g}function _N(g={}){this.isWebGLRenderer=!0;let A=g.canvas!==void 0?g.canvas:NH(),I=g.context!==void 0?g.context:null,e=g.depth!==void 0?g.depth:!0,i=g.stencil!==void 0?g.stencil:!0,t=g.antialias!==void 0?g.antialias:!1,C=g.premultipliedAlpha!==void 0?g.premultipliedAlpha:!0,o=g.preserveDrawingBuffer!==void 0?g.preserveDrawingBuffer:!1,B=g.powerPreference!==void 0?g.powerPreference:"default",a=g.failIfMajorPerformanceCaveat!==void 0?g.failIfMajorPerformanceCaveat:!1,s;I!==null?s=I.getContextAttributes().alpha:s=g.alpha!==void 0?g.alpha:!1;let r=null,Q=null,E=[],n=[];this.domElement=A,this.debug={checkShaderErrors:!0},this.autoClear=!0,this.autoClearColor=!0,this.autoClearDepth=!0,this.autoClearStencil=!0,this.sortObjects=!0,this.clippingPlanes=[],this.localClippingEnabled=!1,this.outputEncoding=fo,this.physicallyCorrectLights=!1,this.toneMapping=DB,this.toneMappingExposure=1;let h=this,l=!1,c=0,d=0,u=null,y=-1,f=null,k=new EI,M=new EI,G=null,v=A.width,N=A.height,b=1,O=null,H=null,_=new EI(0,0,v,N),gA=new EI(0,0,v,N),CA=!1,AA=new xw,BA=!1,iA=!1,rA=null,$=new zA,IA=new sA,hA=new J,QA={background:null,fog:null,environment:null,overrideMaterial:null,isScene:!0};function DA(){return u===null?b:1}let eA=I;function aA(z,mA){for(let vA=0;vA0?Q=n[n.length-1]:Q=null,E.pop(),E.length>0?r=E[E.length-1]:r=null};function qI(z,mA,vA,GA){if(z.visible===!1)return;if(z.layers.test(mA.layers)){if(z.isGroup)vA=z.renderOrder;else if(z.isLOD)z.autoUpdate===!0&&z.update(mA);else if(z.isLight)Q.pushLight(z),z.castShadow&&Q.pushShadow(z);else if(z.isSprite){if(!z.frustumCulled||AA.intersectsSprite(z)){GA&&hA.setFromMatrixPosition(z.matrixWorld).applyMatrix4($);let Gg=Eg.update(z),Jg=z.material;Jg.visible&&r.push(z,Gg,Jg,vA,hA.z,null)}}else if((z.isMesh||z.isLine||z.isPoints)&&(z.isSkinnedMesh&&z.skeleton.frame!==VA.render.frame&&(z.skeleton.update(),z.skeleton.frame=VA.render.frame),!z.frustumCulled||AA.intersectsObject(z))){GA&&hA.setFromMatrixPosition(z.matrixWorld).applyMatrix4($);let Gg=Eg.update(z),Jg=z.material;if(Array.isArray(Jg)){let Xg=Gg.groups;for(let xg=0,tI=Xg.length;xg0&&be(bA,mA,vA),GA&&uA.viewport(k.copy(GA)),bA.length>0&&NI(bA,mA,vA),Gg.length>0&&NI(Gg,mA,vA),Jg.length>0&&NI(Jg,mA,vA),uA.buffers.depth.setTest(!0),uA.buffers.depth.setMask(!0),uA.buffers.color.setMask(!0),uA.setPolygonOffset(!1)}function be(z,mA,vA){let GA=fA.isWebGL2;rA===null&&(rA=new WI(1,1,{generateMipmaps:!0,type:nA.has("EXT_color_buffer_half_float")?fQ:vi,minFilter:SQ,samples:GA&&t===!0?4:0})),h.getDrawingBufferSize(IA),GA?rA.setSize(IA.x,IA.y):rA.setSize(cc(IA.x),cc(IA.y));let bA=h.getRenderTarget();h.setRenderTarget(rA),h.clear();let Gg=h.toneMapping;h.toneMapping=DB,NI(z,mA,vA),h.toneMapping=Gg,LA.updateMultisampleRenderTarget(rA),LA.updateRenderTargetMipmap(rA),h.setRenderTarget(bA)}function NI(z,mA,vA){let GA=mA.isScene===!0?mA.overrideMaterial:null;for(let bA=0,Gg=z.length;bA0&&LA.useMultisampledRTT(z)===!1?bA=yA.get(z).__webglMultisampledFramebuffer:bA=tI,k.copy(z.viewport),M.copy(z.scissor),G=z.scissorTest}else k.copy(_).multiplyScalar(b).floor(),M.copy(gA).multiplyScalar(b).floor(),G=CA;if(uA.bindFramebuffer(36160,bA)&&fA.drawBuffers&&GA&&uA.drawBuffers(z,bA),uA.viewport(k),uA.scissor(M),uA.setScissorTest(G),Gg){let Xg=yA.get(z.texture);eA.framebufferTexture2D(36160,36064,34069+mA,Xg.__webglTexture,vA)}else if(Jg){let Xg=yA.get(z.texture),xg=mA||0;eA.framebufferTextureLayer(36160,36064,Xg.__webglTexture,vA||0,xg)}y=-1},this.readRenderTargetPixels=function(z,mA,vA,GA,bA,Gg,Jg){if(!(z&&z.isWebGLRenderTarget)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");return}let Xg=yA.get(z).__webglFramebuffer;if(z.isWebGLCubeRenderTarget&&Jg!==void 0&&(Xg=Xg[Jg]),Xg){uA.bindFramebuffer(36160,Xg);try{let xg=z.texture,tI=xg.format,uI=xg.type;if(tI!==$t&&Cg.convert(tI)!==eA.getParameter(35739)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.");return}let hI=uI===fQ&&(nA.has("EXT_color_buffer_half_float")||fA.isWebGL2&&nA.has("EXT_color_buffer_float"));if(uI!==vi&&Cg.convert(uI)!==eA.getParameter(35738)&&!(uI===Rt&&(fA.isWebGL2||nA.has("OES_texture_float")||nA.has("WEBGL_color_buffer_float")))&&!hI){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.");return}mA>=0&&mA<=z.width-GA&&vA>=0&&vA<=z.height-bA&&eA.readPixels(mA,vA,GA,bA,Cg.convert(tI),Cg.convert(uI),Gg)}finally{let xg=u!==null?yA.get(u).__webglFramebuffer:null;uA.bindFramebuffer(36160,xg)}}},this.copyFramebufferToTexture=function(z,mA,vA=0){let GA=Math.pow(2,-vA),bA=Math.floor(mA.image.width*GA),Gg=Math.floor(mA.image.height*GA);LA.setTexture2D(mA,0),eA.copyTexSubImage2D(3553,vA,0,0,z.x,z.y,bA,Gg),uA.unbindTexture()},this.copyTextureToTexture=function(z,mA,vA,GA=0){let bA=mA.image.width,Gg=mA.image.height,Jg=Cg.convert(vA.format),Xg=Cg.convert(vA.type);LA.setTexture2D(vA,0),eA.pixelStorei(37440,vA.flipY),eA.pixelStorei(37441,vA.premultiplyAlpha),eA.pixelStorei(3317,vA.unpackAlignment),mA.isDataTexture?eA.texSubImage2D(3553,GA,z.x,z.y,bA,Gg,Jg,Xg,mA.image.data):mA.isCompressedTexture?eA.compressedTexSubImage2D(3553,GA,z.x,z.y,mA.mipmaps[0].width,mA.mipmaps[0].height,Jg,mA.mipmaps[0].data):eA.texSubImage2D(3553,GA,z.x,z.y,Jg,Xg,mA.image),GA===0&&vA.generateMipmaps&&eA.generateMipmap(3553),uA.unbindTexture()},this.copyTextureToTexture3D=function(z,mA,vA,GA,bA=0){if(h.isWebGL1Renderer){console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: can only be used with WebGL2.");return}let Gg=z.max.x-z.min.x+1,Jg=z.max.y-z.min.y+1,Xg=z.max.z-z.min.z+1,xg=Cg.convert(GA.format),tI=Cg.convert(GA.type),uI;if(GA.isData3DTexture)LA.setTexture3D(GA,0),uI=32879;else if(GA.isDataArrayTexture)LA.setTexture2DArray(GA,0),uI=35866;else{console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: only supports THREE.DataTexture3D and THREE.DataTexture2DArray.");return}eA.pixelStorei(37440,GA.flipY),eA.pixelStorei(37441,GA.premultiplyAlpha),eA.pixelStorei(3317,GA.unpackAlignment);let hI=eA.getParameter(3314),FI=eA.getParameter(32878),ce=eA.getParameter(3316),di=eA.getParameter(3315),Gi=eA.getParameter(32877),Ie=vA.isCompressedTexture?vA.mipmaps[0]:vA.image;eA.pixelStorei(3314,Ie.width),eA.pixelStorei(32878,Ie.height),eA.pixelStorei(3316,z.min.x),eA.pixelStorei(3315,z.min.y),eA.pixelStorei(32877,z.min.z),vA.isDataTexture||vA.isData3DTexture?eA.texSubImage3D(uI,bA,mA.x,mA.y,mA.z,Gg,Jg,Xg,xg,tI,Ie.data):vA.isCompressedArrayTexture?(console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: untested support for compressed srcTexture."),eA.compressedTexSubImage3D(uI,bA,mA.x,mA.y,mA.z,Gg,Jg,Xg,xg,Ie.data)):eA.texSubImage3D(uI,bA,mA.x,mA.y,mA.z,Gg,Jg,Xg,xg,tI,Ie),eA.pixelStorei(3314,hI),eA.pixelStorei(32878,FI),eA.pixelStorei(3316,ce),eA.pixelStorei(3315,di),eA.pixelStorei(32877,Gi),bA===0&&GA.generateMipmaps&&eA.generateMipmap(uI),uA.unbindTexture()},this.initTexture=function(z){z.isCubeTexture?LA.setTextureCube(z,0):z.isData3DTexture?LA.setTexture3D(z,0):z.isDataArrayTexture||z.isCompressedArrayTexture?LA.setTexture2DArray(z,0):LA.setTexture2D(z,0),uA.unbindTexture()},this.resetState=function(){c=0,d=0,u=null,uA.reset(),UA.reset()},typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}var FH=class extends _N{};FH.prototype.isWebGL1Renderer=!0;var PN=class{constructor(g,A=1,I=1e3){this.isFog=!0,this.name="",this.color=new Og(g),this.near=A,this.far=I}clone(){return new PN(this.color,this.near,this.far)}toJSON(){return{type:"Fog",color:this.color.getHex(),near:this.near,far:this.far}}},ca=class extends ZI{constructor(){super(),this.isScene=!0,this.type="Scene",this.background=null,this.environment=null,this.fog=null,this.backgroundBlurriness=0,this.backgroundIntensity=1,this.overrideMaterial=null,typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}copy(g,A){return super.copy(g,A),g.background!==null&&(this.background=g.background.clone()),g.environment!==null&&(this.environment=g.environment.clone()),g.fog!==null&&(this.fog=g.fog.clone()),this.backgroundBlurriness=g.backgroundBlurriness,this.backgroundIntensity=g.backgroundIntensity,g.overrideMaterial!==null&&(this.overrideMaterial=g.overrideMaterial.clone()),this.matrixAutoUpdate=g.matrixAutoUpdate,this}toJSON(g){let A=super.toJSON(g);return this.fog!==null&&(A.object.fog=this.fog.toJSON()),this.backgroundBlurriness>0&&(A.object.backgroundBlurriness=this.backgroundBlurriness),this.backgroundIntensity!==1&&(A.object.backgroundIntensity=this.backgroundIntensity),A}get autoUpdate(){return console.warn("THREE.Scene: autoUpdate was renamed to matrixWorldAutoUpdate in r144."),this.matrixWorldAutoUpdate}set autoUpdate(g){console.warn("THREE.Scene: autoUpdate was renamed to matrixWorldAutoUpdate in r144."),this.matrixWorldAutoUpdate=g}},RH=class{constructor(g,A){this.isInterleavedBuffer=!0,this.array=g,this.stride=A,this.count=g!==void 0?g.length/A:0,this.usage=xp,this.updateRange={offset:0,count:-1},this.version=0,this.uuid=IC()}onUploadCallback(){}set needsUpdate(g){g===!0&&this.version++}setUsage(g){return this.usage=g,this}copy(g){return this.array=new g.array.constructor(g.array),this.count=g.count,this.stride=g.stride,this.usage=g.usage,this}copyAt(g,A,I){g*=this.stride,I*=A.stride;for(let e=0,i=this.stride;eo)continue;r.applyMatrix4(this.matrixWorld);let f=g.ray.origin.distanceTo(r);fg.far||A.push({distance:f,point:s.clone().applyMatrix4(this.matrixWorld),index:c,face:null,faceIndex:null,object:this})}}else{let h=Math.max(0,t.start),l=Math.min(n.count,t.start+t.count);for(let c=h,d=l-1;co)continue;r.applyMatrix4(this.matrixWorld);let u=g.ray.origin.distanceTo(r);ug.far||A.push({distance:u,point:s.clone().applyMatrix4(this.matrixWorld),index:c,face:null,faceIndex:null,object:this})}}}updateMorphTargets(){let g=this.geometry.morphAttributes,A=Object.keys(g);if(A.length>0){let I=g[A[0]];if(I!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let e=0,i=I.length;e=g.HAVE_CURRENT_DATA&&(this.needsUpdate=!0)}},Fo=class{constructor(){this.type="Curve",this.arcLengthDivisions=200}getPoint(){return console.warn("THREE.Curve: .getPoint() not implemented."),null}getPointAt(A,I){let e=this.getUtoTmapping(A);return this.getPoint(e,I)}getPoints(A=5){let I=[];for(let e=0;e<=A;e++)I.push(this.getPoint(e/A));return I}getSpacedPoints(A=5){let I=[];for(let e=0;e<=A;e++)I.push(this.getPointAt(e/A));return I}getLength(){let A=this.getLengths();return A[A.length-1]}getLengths(A=this.arcLengthDivisions){if(this.cacheArcLengths&&this.cacheArcLengths.length===A+1&&!this.needsUpdate)return this.cacheArcLengths;this.needsUpdate=!1;let I=[],e,i=this.getPoint(0),t=0;I.push(0);for(let C=1;C<=A;C++)e=this.getPoint(C/A),t+=e.distanceTo(i),I.push(t),i=e;return this.cacheArcLengths=I,I}updateArcLengths(){this.needsUpdate=!0,this.getLengths()}getUtoTmapping(A,I){let e=this.getLengths(),i=0,t=e.length,C;I?C=I:C=A*e[t-1];let o=0,B=t-1,a;for(;o<=B;)if(i=Math.floor(o+(B-o)/2),a=e[i]-C,a<0)o=i+1;else if(a>0)B=i-1;else{B=i;break}if(i=B,e[i]===C)return i/(t-1);let s=e[i],r=e[i+1]-s,Q=(C-s)/r;return(i+Q)/(t-1)}getTangent(A,I){let e=A-1e-4,i=A+1e-4;e<0&&(e=0),i>1&&(i=1);let t=this.getPoint(e),C=this.getPoint(i),o=I||(t.isVector2?new sA:new J);return o.copy(C).sub(t).normalize(),o}getTangentAt(A,I){let e=this.getUtoTmapping(A);return this.getTangent(e,I)}computeFrenetFrames(A,I){let e=new J,i=[],t=[],C=[],o=new J,B=new zA;for(let E=0;E<=A;E++){let n=E/A;i[E]=this.getTangentAt(n,new J)}t[0]=new J,C[0]=new J;let a=Number.MAX_VALUE,s=Math.abs(i[0].x),r=Math.abs(i[0].y),Q=Math.abs(i[0].z);s<=a&&(a=s,e.set(1,0,0)),r<=a&&(a=r,e.set(0,1,0)),Q<=a&&e.set(0,0,1),o.crossVectors(i[0],e).normalize(),t[0].crossVectors(i[0],o),C[0].crossVectors(i[0],t[0]);for(let E=1;E<=A;E++){if(t[E]=t[E-1].clone(),C[E]=C[E-1].clone(),o.crossVectors(i[E-1],i[E]),o.length()>Number.EPSILON){o.normalize();let n=Math.acos(ii(i[E-1].dot(i[E]),-1,1));t[E].applyMatrix4(B.makeRotationAxis(o,n))}C[E].crossVectors(i[E],t[E])}if(I===!0){let E=Math.acos(ii(t[0].dot(t[A]),-1,1));E/=A,i[0].dot(o.crossVectors(t[0],t[A]))>0&&(E=-E);for(let n=1;n<=A;n++)t[n].applyMatrix4(B.makeRotationAxis(i[n],E*n)),C[n].crossVectors(i[n],t[n])}return{tangents:i,normals:t,binormals:C}}clone(){return new this.constructor().copy(this)}copy(A){return this.arcLengthDivisions=A.arcLengthDivisions,this}toJSON(){let A={metadata:{version:4.5,type:"Curve",generator:"Curve.toJSON"}};return A.arcLengthDivisions=this.arcLengthDivisions,A.type=this.type,A}fromJSON(A){return this.arcLengthDivisions=A.arcLengthDivisions,this}},KD=class extends Fo{constructor(g=0,A=0,I=1,e=1,i=0,t=Math.PI*2,C=!1,o=0){super(),this.isEllipseCurve=!0,this.type="EllipseCurve",this.aX=g,this.aY=A,this.xRadius=I,this.yRadius=e,this.aStartAngle=i,this.aEndAngle=t,this.aClockwise=C,this.aRotation=o}getPoint(g,A){let I=A||new sA,e=Math.PI*2,i=this.aEndAngle-this.aStartAngle,t=Math.abs(i)e;)i-=e;i0?0:(Math.floor(Math.abs(C)/i)+1)*i:o===0&&C===i-1&&(C=i-2,o=1);let B,a;this.closed||C>0?B=e[(C-1)%i]:(Ph.subVectors(e[0],e[1]).add(e[0]),B=Ph);let s=e[C%i],r=e[(C+1)%i];if(this.closed||C+2e.length-2?e.length-1:t+1],s=e[t>e.length-3?e.length-1:t+2];return I.set(pG(C,o.x,B.x,a.x,s.x),pG(C,o.y,B.y,a.y,s.y)),I}copy(g){super.copy(g),this.points=[];for(let A=0,I=g.points.length;A=I){let t=e[i]-I,C=this.curves[i],o=C.getLength(),B=o===0?0:1-t/o;return C.getPointAt(B,A)}i++}return null}getLength(){let g=this.getCurveLengths();return g[g.length-1]}updateArcLengths(){this.needsUpdate=!0,this.cacheLengths=null,this.getCurveLengths()}getCurveLengths(){if(this.cacheLengths&&this.cacheLengths.length===this.curves.length)return this.cacheLengths;let g=[],A=0;for(let I=0,e=this.curves.length;I1&&!A[A.length-1].equals(A[0])&&A.push(A[0]),A}copy(g){super.copy(g),this.curves=[];for(let A=0,I=g.curves.length;A0){let s=B.getPoint(0);s.equals(this.currentPoint)||this.lineTo(s.x,s.y)}this.curves.push(B);let a=B.getPoint(1);return this.currentPoint.copy(a),this}copy(g){return super.copy(g),this.currentPoint.copy(g.currentPoint),this}toJSON(){let g=super.toJSON();return g.currentPoint=this.currentPoint.toArray(),g}fromJSON(g){return super.fromJSON(g),this.currentPoint.fromArray(g.currentPoint),this}},VN=class extends bg{constructor(g=[new sA(0,-.5),new sA(.5,0),new sA(0,.5)],A=12,I=0,e=Math.PI*2){super(),this.type="LatheGeometry",this.parameters={points:g,segments:A,phiStart:I,phiLength:e},A=Math.floor(A),e=ii(e,0,Math.PI*2);let i=[],t=[],C=[],o=[],B=[],a=1/A,s=new J,r=new sA,Q=new J,E=new J,n=new J,h=0,l=0;for(let c=0;c<=g.length-1;c++)switch(c){case 0:h=g[c+1].x-g[c].x,l=g[c+1].y-g[c].y,Q.x=l*1,Q.y=-h,Q.z=l*0,n.copy(Q),Q.normalize(),o.push(Q.x,Q.y,Q.z);break;case g.length-1:o.push(n.x,n.y,n.z);break;default:h=g[c+1].x-g[c].x,l=g[c+1].y-g[c].y,Q.x=l*1,Q.y=-h,Q.z=l*0,E.copy(Q),Q.x+=n.x,Q.y+=n.y,Q.z+=n.z,Q.normalize(),o.push(Q.x,Q.y,Q.z),n.copy(E)}for(let c=0;c<=A;c++){let d=I+c*a*e,u=Math.sin(d),y=Math.cos(d);for(let f=0;f<=g.length-1;f++){s.x=g[f].x*u,s.y=g[f].y,s.z=g[f].x*y,t.push(s.x,s.y,s.z),r.x=c/A,r.y=f/(g.length-1),C.push(r.x,r.y);let k=o[3*f+0]*u,M=o[3*f+1],G=o[3*f+0]*y;B.push(k,M,G)}}for(let c=0;c0&&d(!0),A>0&&d(!1)),this.setIndex(a),this.setAttribute("position",new pg(s,3)),this.setAttribute("normal",new pg(r,3)),this.setAttribute("uv",new pg(Q,2));function c(){let u=new J,y=new J,f=0,k=(A-g)/I;for(let M=0;M<=i;M++){let G=[],v=M/i,N=v*(A-g)+g;for(let b=0;b<=e;b++){let O=b/e,H=O*o+C,_=Math.sin(H),gA=Math.cos(H);y.x=N*_,y.y=-v*I+h,y.z=N*gA,s.push(y.x,y.y,y.z),u.set(_,k,gA).normalize(),r.push(u.x,u.y,u.z),Q.push(O,1-v),G.push(E++)}n.push(G)}for(let M=0;M.9&&k<.1&&(d<.2&&(t[c+0]+=1),u<.2&&(t[c+2]+=1),y<.2&&(t[c+4]+=1))}}function r(c){i.push(c.x,c.y,c.z)}function Q(c,d){let u=c*3;d.x=g[u+0],d.y=g[u+1],d.z=g[u+2]}function E(){let c=new J,d=new J,u=new J,y=new J,f=new sA,k=new sA,M=new sA;for(let G=0,v=0;G80*I){o=a=g[0],B=s=g[1];for(let n=I;na&&(a=r),Q>s&&(s=Q);E=Math.max(a-o,s-B),E=E!==0?32767/E:0}return un(t,C,I,o,B,E,0),C}};function $N(g,A,I,e,i){let t,C;if(i===r1(g,A,I,e)>0)for(t=A;t=A;t-=e)C=yG(t,g[t],g[t+1],C);return C&&JD(C,C.next)&&(yn(C),C=C.next),C}function Rr(g,A){if(!g)return g;A||(A=g);let I=g,e;do if(e=!1,!I.steiner&&(JD(I,I.next)||ue(I.prev,I,I.next)===0)){if(yn(I),I=A=I.prev,I===I.next)break;e=!0}else I=I.next;while(e||I!==A);return A}function un(g,A,I,e,i,t,C){if(!g)return;!C&&t&&i1(g,e,i,t);let o=g,B,a;for(;g.prev!==g.next;){if(B=g.prev,a=g.next,t?VH(g,e,i,t):ZH(g)){A.push(B.i/I|0),A.push(g.i/I|0),A.push(a.i/I|0),yn(g),g=a.next,o=a.next;continue}if(g=a,g===o){C?C===1?(g=zH(Rr(g),A,I),un(g,A,I,e,i,t,2)):C===2&&XH(g,A,I,e,i,t):un(Rr(g),A,I,e,i,t,1);break}}}function ZH(g){let A=g.prev,I=g,e=g.next;if(ue(A,I,e)>=0)return!1;let i=A.x,t=I.x,C=e.x,o=A.y,B=I.y,a=e.y,s=it?i>C?i:C:t>C?t:C,E=o>B?o>a?o:a:B>a?B:a,n=e.next;for(;n!==A;){if(n.x>=s&&n.x<=Q&&n.y>=r&&n.y<=E&&IQ(i,o,t,B,C,a,n.x,n.y)&&ue(n.prev,n,n.next)>=0)return!1;n=n.next}return!0}function VH(g,A,I,e){let i=g.prev,t=g,C=g.next;if(ue(i,t,C)>=0)return!1;let o=i.x,B=t.x,a=C.x,s=i.y,r=t.y,Q=C.y,E=oB?o>a?o:a:B>a?B:a,l=s>r?s>Q?s:Q:r>Q?r:Q,c=Pp(E,n,A,I,e),d=Pp(h,l,A,I,e),u=g.prevZ,y=g.nextZ;for(;u&&u.z>=c&&y&&y.z<=d;){if(u.x>=E&&u.x<=h&&u.y>=n&&u.y<=l&&u!==i&&u!==C&&IQ(o,s,B,r,a,Q,u.x,u.y)&&ue(u.prev,u,u.next)>=0||(u=u.prevZ,y.x>=E&&y.x<=h&&y.y>=n&&y.y<=l&&y!==i&&y!==C&&IQ(o,s,B,r,a,Q,y.x,y.y)&&ue(y.prev,y,y.next)>=0))return!1;y=y.nextZ}for(;u&&u.z>=c;){if(u.x>=E&&u.x<=h&&u.y>=n&&u.y<=l&&u!==i&&u!==C&&IQ(o,s,B,r,a,Q,u.x,u.y)&&ue(u.prev,u,u.next)>=0)return!1;u=u.prevZ}for(;y&&y.z<=d;){if(y.x>=E&&y.x<=h&&y.y>=n&&y.y<=l&&y!==i&&y!==C&&IQ(o,s,B,r,a,Q,y.x,y.y)&&ue(y.prev,y,y.next)>=0)return!1;y=y.nextZ}return!0}function zH(g,A,I){let e=g;do{let i=e.prev,t=e.next.next;!JD(i,t)&&AF(i,e,e.next,t)&&pn(i,t)&&pn(t,i)&&(A.push(i.i/I|0),A.push(e.i/I|0),A.push(t.i/I|0),yn(e),yn(e.next),e=g=t),e=e.next}while(e!==g);return Rr(e)}function XH(g,A,I,e,i,t){let C=g;do{let o=C.next.next;for(;o!==C.prev;){if(C.i!==o.i&&o1(C,o)){let B=gF(C,o);C=Rr(C,C.next),B=Rr(B,B.next),un(C,A,I,e,i,t,0),un(B,A,I,e,i,t,0);return}o=o.next}C=C.next}while(C!==g)}function $H(g,A,I,e){let i=[],t,C,o,B,a;for(t=0,C=A.length;t=I.next.y&&I.next.y!==I.y){let Q=I.x+(C-I.y)*(I.next.x-I.x)/(I.next.y-I.y);if(Q<=t&&Q>e&&(e=Q,i=I.x=I.x&&I.x>=B&&t!==I.x&&IQ(Ci.x||I.x===i.x&&e1(i,I)))&&(i=I,s=r)),I=I.next;while(I!==o);return i}function e1(g,A){return ue(g.prev,g,A.prev)<0&&ue(A.next,g,g.next)<0}function i1(g,A,I,e){let i=g;do i.z===0&&(i.z=Pp(i.x,i.y,A,I,e)),i.prevZ=i.prev,i.nextZ=i.next,i=i.next;while(i!==g);i.prevZ.nextZ=null,i.prevZ=null,t1(i)}function t1(g){let A,I,e,i,t,C,o,B,a=1;do{for(I=g,g=null,t=null,C=0;I;){for(C++,e=I,o=0,A=0;A0||B>0&&e;)o!==0&&(B===0||!e||I.z<=e.z)?(i=I,I=I.nextZ,o--):(i=e,e=e.nextZ,B--),t?t.nextZ=i:g=i,i.prevZ=t,t=i;I=e}t.nextZ=null,a*=2}while(C>1);return g}function Pp(g,A,I,e,i){return g=(g-I)*i|0,A=(A-e)*i|0,g=(g|g<<8)&16711935,g=(g|g<<4)&252645135,g=(g|g<<2)&858993459,g=(g|g<<1)&1431655765,A=(A|A<<8)&16711935,A=(A|A<<4)&252645135,A=(A|A<<2)&858993459,A=(A|A<<1)&1431655765,g|A<<1}function C1(g){let A=g,I=g;do(A.x=(g-C)*(t-o)&&(g-C)*(e-o)>=(I-C)*(A-o)&&(I-C)*(t-o)>=(i-C)*(e-o)}function o1(g,A){return g.next.i!==A.i&&g.prev.i!==A.i&&!B1(g,A)&&(pn(g,A)&&pn(A,g)&&a1(g,A)&&(ue(g.prev,g,A.prev)||ue(g,A.prev,A))||JD(g,A)&&ue(g.prev,g,g.next)>0&&ue(A.prev,A,A.next)>0)}function ue(g,A,I){return(A.y-g.y)*(I.x-A.x)-(A.x-g.x)*(I.y-A.y)}function JD(g,A){return g.x===A.x&&g.y===A.y}function AF(g,A,I,e){let i=Wh(ue(g,A,I)),t=Wh(ue(g,A,e)),C=Wh(ue(I,e,g)),o=Wh(ue(I,e,A));return!!(i!==t&&C!==o||i===0&&jh(g,I,A)||t===0&&jh(g,e,A)||C===0&&jh(I,g,e)||o===0&&jh(I,A,e))}function jh(g,A,I){return A.x<=Math.max(g.x,I.x)&&A.x>=Math.min(g.x,I.x)&&A.y<=Math.max(g.y,I.y)&&A.y>=Math.min(g.y,I.y)}function Wh(g){return g>0?1:g<0?-1:0}function B1(g,A){let I=g;do{if(I.i!==g.i&&I.next.i!==g.i&&I.i!==A.i&&I.next.i!==A.i&&AF(I,I.next,g,A))return!0;I=I.next}while(I!==g);return!1}function pn(g,A){return ue(g.prev,g,g.next)<0?ue(g,A,g.next)>=0&&ue(g,g.prev,A)>=0:ue(g,A,g.prev)<0||ue(g,g.next,A)<0}function a1(g,A){let I=g,e=!1,i=(g.x+A.x)/2,t=(g.y+A.y)/2;do I.y>t!=I.next.y>t&&I.next.y!==I.y&&i<(I.next.x-I.x)*(t-I.y)/(I.next.y-I.y)+I.x&&(e=!e),I=I.next;while(I!==g);return e}function gF(g,A){let I=new jp(g.i,g.x,g.y),e=new jp(A.i,A.x,A.y),i=g.next,t=A.prev;return g.next=A,A.prev=g,I.next=i,i.prev=I,e.next=I,I.prev=e,t.next=e,e.prev=t,e}function yG(g,A,I,e){let i=new jp(g,A,I);return e?(i.next=e.next,i.prev=e,e.next.prev=i,e.next=i):(i.prev=i,i.next=i),i}function yn(g){g.next.prev=g.prev,g.prev.next=g.next,g.prevZ&&(g.prevZ.nextZ=g.nextZ),g.nextZ&&(g.nextZ.prevZ=g.prevZ)}function jp(g,A,I){this.i=g,this.x=A,this.y=I,this.prev=null,this.next=null,this.z=0,this.prevZ=null,this.nextZ=null,this.steiner=!1}function r1(g,A,I,e){let i=0;for(let t=A,C=I-e;t2&&g[A-1].equals(g[0])&&g.pop()}function SG(g,A){for(let I=0;I0)&&Q.push(d,u,f),(l!==I-1||o=i)){let C=A[1];g=i)break g}t=I,I=0;break I}break A}for(;I>>1;gI;)--C;if(++C,t!==0||C!==i){t>=C&&(C=Math.max(C,1),t=C-1);let o=this.getValueSize();this.times=TB(e,t,C),this.values=TB(this.values,t*o,C*o)}return this}validate(){let A=!0,I=this.getValueSize();I-Math.floor(I)!==0&&(console.error("THREE.KeyframeTrack: Invalid value size in track.",this),A=!1);let e=this.times,i=this.values,t=e.length;t===0&&(console.error("THREE.KeyframeTrack: Track is empty.",this),A=!1);let C=null;for(let o=0;o!==t;o++){let B=e[o];if(typeof B=="number"&&isNaN(B)){console.error("THREE.KeyframeTrack: Time is not a valid number.",this,o,B),A=!1;break}if(C!==null&&C>B){console.error("THREE.KeyframeTrack: Out of order keys.",this,o,B,C),A=!1;break}C=B}if(i!==void 0&&tF(i))for(let o=0,B=i.length;o!==B;++o){let a=i[o];if(isNaN(a)){console.error("THREE.KeyframeTrack: Value is not a valid number.",this,o,a),A=!1;break}}return A}optimize(){let A=TB(this.times),I=TB(this.values),e=this.getValueSize(),i=this.getInterpolation()===Jd,t=A.length-1,C=1;for(let o=1;o0){A[C]=A[t];for(let o=t*e,B=C*e,a=0;a!==e;++a)I[B+a]=I[o+a];++C}return C!==A.length?(this.times=TB(A,0,C),this.values=TB(I,0,C*e)):(this.times=A,this.values=I),this}clone(){let A=TB(this.times,0),I=TB(this.values,0),e=this.constructor,i=new e(this.name,A,I);return i.createInterpolant=this.createInterpolant,i}};Ro.prototype.TimeBufferType=Float32Array;Ro.prototype.ValueBufferType=Float32Array;Ro.prototype.DefaultInterpolation=nc;var zQ=class extends Ro{};zQ.prototype.ValueTypeName="bool";zQ.prototype.ValueBufferType=Array;zQ.prototype.DefaultInterpolation=Ec;zQ.prototype.InterpolantFactoryMethodLinear=void 0;zQ.prototype.InterpolantFactoryMethodSmooth=void 0;var BF=class extends Ro{};BF.prototype.ValueTypeName="color";var wc=class extends Ro{};wc.prototype.ValueTypeName="number";var n1=class extends vD{constructor(g,A,I,e){super(g,A,I,e)}interpolate_(g,A,I,e){let i=this.resultBuffer,t=this.sampleValues,C=this.valueSize,o=(I-A)/(e-A),B=g*C;for(let a=B+C;B!==a;B+=4)QI.slerpFlat(i,0,t,B-C,t,B,o);return i}},Ah=class extends Ro{InterpolantFactoryMethodLinear(g){return new n1(this.times,this.values,this.getValueSize(),g)}};Ah.prototype.ValueTypeName="quaternion";Ah.prototype.DefaultInterpolation=nc;Ah.prototype.InterpolantFactoryMethodSmooth=void 0;var XQ=class extends Ro{};XQ.prototype.ValueTypeName="string";XQ.prototype.ValueBufferType=Array;XQ.prototype.DefaultInterpolation=Ec;XQ.prototype.InterpolantFactoryMethodLinear=void 0;XQ.prototype.InterpolantFactoryMethodSmooth=void 0;var Sc=class extends Ro{};Sc.prototype.ValueTypeName="vector";var Wp=class{constructor(g,A=-1,I,e=qw){this.name=g,this.tracks=I,this.duration=A,this.blendMode=e,this.uuid=IC(),this.duration<0&&this.resetDuration()}static parse(g){let A=[],I=g.tracks,e=1/(g.fps||1);for(let t=0,C=I.length;t!==C;++t)A.push(l1(I[t]).scale(e));let i=new this(g.name,g.duration,A,g.blendMode);return i.uuid=g.uuid,i}static toJSON(g){let A=[],I=g.tracks,e={name:g.name,duration:g.duration,tracks:A,uuid:g.uuid,blendMode:g.blendMode};for(let i=0,t=I.length;i!==t;++i)A.push(Ro.toJSON(I[i]));return e}static CreateFromMorphTargetSequence(g,A,I,e){let i=A.length,t=[];for(let C=0;C1){let s=a[1],r=e[s];r||(e[s]=r=[]),r.push(B)}}let t=[];for(let C in e)t.push(this.CreateFromMorphTargetSequence(C,e[C],A,I));return t}static parseAnimation(g,A){if(!g)return console.error("THREE.AnimationClip: No animation in JSONLoader data."),null;let I=function(a,s,r,Q,E){if(r.length!==0){let n=[],h=[];CF(r,n,h,Q),n.length!==0&&E.push(new a(s,n,h))}},e=[],i=g.name||"default",t=g.fps||30,C=g.blendMode,o=g.length||-1,B=g.hierarchy||[];for(let a=0;a{A&&A(i),this.manager.itemEnd(g)},0),i;if(AB[g]!==void 0){AB[g].push({onLoad:A,onProgress:I,onError:e});return}AB[g]=[],AB[g].push({onLoad:A,onProgress:I,onError:e});let t=new Request(g,{headers:new Headers(this.requestHeader),credentials:this.withCredentials?"include":"same-origin"}),C=this.mimeType,o=this.responseType;fetch(t).then(B=>{if(B.status===200||B.status===0){if(B.status===0&&console.warn("THREE.FileLoader: HTTP Status 0 received."),typeof ReadableStream>"u"||B.body===void 0||B.body.getReader===void 0)return B;let a=AB[g],s=B.body.getReader(),r=B.headers.get("Content-Length")||B.headers.get("X-File-Size"),Q=r?parseInt(r):0,E=Q!==0,n=0,h=new ReadableStream({start(l){c();function c(){s.read().then(({done:d,value:u})=>{if(d)l.close();else{n+=u.byteLength;let y=new ProgressEvent("progress",{lengthComputable:E,loaded:n,total:Q});for(let f=0,k=a.length;f{switch(o){case"arraybuffer":return B.arrayBuffer();case"blob":return B.blob();case"document":return B.text().then(a=>new DOMParser().parseFromString(a,C));case"json":return B.json();default:if(C===void 0)return B.text();{let a=/charset="?([^;"\s]*)"?/i.exec(C),s=a&&a[1]?a[1].toLowerCase():void 0,r=new TextDecoder(s);return B.arrayBuffer().then(Q=>r.decode(Q))}}}).then(B=>{GG.add(g,B);let a=AB[g];delete AB[g];for(let s=0,r=a.length;s{let a=AB[g];if(a===void 0)throw this.manager.itemError(g),B;delete AB[g];for(let s=0,r=a.length;s{this.manager.itemEnd(g)}),this.manager.itemStart(g)}setResponseType(g){return this.responseType=g,this}setMimeType(g){return this.mimeType=g,this}},gh=class extends ZI{constructor(A,I=1){super(),this.isLight=!0,this.type="Light",this.color=new Og(A),this.intensity=I}dispose(){}copy(A,I){return super.copy(A,I),this.color.copy(A.color),this.intensity=A.intensity,this}toJSON(A){let I=super.toJSON(A);return I.object.color=this.color.getHex(),I.object.intensity=this.intensity,this.groundColor!==void 0&&(I.object.groundColor=this.groundColor.getHex()),this.distance!==void 0&&(I.object.distance=this.distance),this.angle!==void 0&&(I.object.angle=this.angle),this.decay!==void 0&&(I.object.decay=this.decay),this.penumbra!==void 0&&(I.object.penumbra=this.penumbra),this.shadow!==void 0&&(I.object.shadow=this.shadow.toJSON()),I}},d1=class extends gh{constructor(g,A,I){super(g,I),this.isHemisphereLight=!0,this.type="HemisphereLight",this.position.copy(ZI.DEFAULT_UP),this.updateMatrix(),this.groundColor=new Og(A)}copy(g,A){return super.copy(g,A),this.groundColor.copy(g.groundColor),this}},su=new zA,kG=new J,MG=new J,zw=class{constructor(g){this.camera=g,this.bias=0,this.normalBias=0,this.radius=1,this.blurSamples=8,this.mapSize=new sA(512,512),this.map=null,this.mapPass=null,this.matrix=new zA,this.autoUpdate=!0,this.needsUpdate=!1,this._frustum=new xw,this._frameExtents=new sA(1,1),this._viewportCount=1,this._viewports=[new EI(0,0,1,1)]}getViewportCount(){return this._viewportCount}getFrustum(){return this._frustum}updateMatrices(g){let A=this.camera,I=this.matrix;kG.setFromMatrixPosition(g.matrixWorld),A.position.copy(kG),MG.setFromMatrixPosition(g.target.matrixWorld),A.lookAt(MG),A.updateMatrixWorld(),su.multiplyMatrices(A.projectionMatrix,A.matrixWorldInverse),this._frustum.setFromProjectionMatrix(su),I.set(.5,0,0,.5,0,.5,0,.5,0,0,.5,.5,0,0,0,1),I.multiply(su)}getViewport(g){return this._viewports[g]}getFrameExtents(){return this._frameExtents}dispose(){this.map&&this.map.dispose(),this.mapPass&&this.mapPass.dispose()}copy(g){return this.camera=g.camera.clone(),this.bias=g.bias,this.radius=g.radius,this.mapSize.copy(g.mapSize),this}clone(){return new this.constructor().copy(this)}toJSON(){let g={};return this.bias!==0&&(g.bias=this.bias),this.normalBias!==0&&(g.normalBias=this.normalBias),this.radius!==1&&(g.radius=this.radius),(this.mapSize.x!==512||this.mapSize.y!==512)&&(g.mapSize=this.mapSize.toArray()),g.camera=this.camera.toJSON(!1).object,delete g.camera.matrix,g}},u1=class extends zw{constructor(){super(new Ui(50,1,.5,500)),this.isSpotLightShadow=!0,this.focus=1}updateMatrices(g){let A=this.camera,I=dn*2*g.angle*this.focus,e=this.mapSize.width/this.mapSize.height,i=g.distance||A.far;(I!==A.fov||e!==A.aspect||i!==A.far)&&(A.fov=I,A.aspect=e,A.far=i,A.updateProjectionMatrix()),super.updateMatrices(g)}copy(g){return super.copy(g),this.focus=g.focus,this}},p1=class extends gh{constructor(g,A,I=0,e=Math.PI/3,i=0,t=2){super(g,A),this.isSpotLight=!0,this.type="SpotLight",this.position.copy(ZI.DEFAULT_UP),this.updateMatrix(),this.target=new ZI,this.distance=I,this.angle=e,this.penumbra=i,this.decay=t,this.map=null,this.shadow=new u1}get power(){return this.intensity*Math.PI}set power(g){this.intensity=g/Math.PI}dispose(){this.shadow.dispose()}copy(g,A){return super.copy(g,A),this.distance=g.distance,this.angle=g.angle,this.penumbra=g.penumbra,this.decay=g.decay,this.target=g.target.clone(),this.shadow=g.shadow.clone(),this}},mG=new zA,fE=new J,Qu=new J,y1=class extends zw{constructor(){super(new Ui(90,1,.5,500)),this.isPointLightShadow=!0,this._frameExtents=new sA(4,2),this._viewportCount=6,this._viewports=[new EI(2,1,1,1),new EI(0,1,1,1),new EI(3,1,1,1),new EI(1,1,1,1),new EI(3,0,1,1),new EI(1,0,1,1)],this._cubeDirections=[new J(1,0,0),new J(-1,0,0),new J(0,0,1),new J(0,0,-1),new J(0,1,0),new J(0,-1,0)],this._cubeUps=[new J(0,1,0),new J(0,1,0),new J(0,1,0),new J(0,1,0),new J(0,0,1),new J(0,0,-1)]}updateMatrices(g,A=0){let I=this.camera,e=this.matrix,i=g.distance||I.far;i!==I.far&&(I.far=i,I.updateProjectionMatrix()),fE.setFromMatrixPosition(g.matrixWorld),I.position.copy(fE),Qu.copy(I.position),Qu.add(this._cubeDirections[A]),I.up.copy(this._cubeUps[A]),I.lookAt(Qu),I.updateMatrixWorld(),e.makeTranslation(-fE.x,-fE.y,-fE.z),mG.multiplyMatrices(I.projectionMatrix,I.matrixWorldInverse),this._frustum.setFromProjectionMatrix(mG)}},w1=class extends gh{constructor(g,A,I=0,e=2){super(g,A),this.isPointLight=!0,this.type="PointLight",this.distance=I,this.decay=e,this.shadow=new y1}get power(){return this.intensity*4*Math.PI}set power(g){this.intensity=g/(4*Math.PI)}dispose(){this.shadow.dispose()}copy(g,A){return super.copy(g,A),this.distance=g.distance,this.decay=g.decay,this.shadow=g.shadow.clone(),this}},S1=class extends zw{constructor(){super(new Hw(-5,5,5,-5,.5,500)),this.isDirectionalLightShadow=!0}},f1=class extends gh{constructor(g,A){super(g,A),this.isDirectionalLight=!0,this.type="DirectionalLight",this.position.copy(ZI.DEFAULT_UP),this.updateMatrix(),this.target=new ZI,this.shadow=new S1}dispose(){this.shadow.dispose()}copy(g){return super.copy(g),this.target=g.target.clone(),this.shadow=g.shadow.clone(),this}},G1=class extends bg{constructor(){super(),this.isInstancedBufferGeometry=!0,this.type="InstancedBufferGeometry",this.instanceCount=1/0}copy(g){return super.copy(g),this.instanceCount=g.instanceCount,this}toJSON(){let g=super.toJSON();return g.instanceCount=this.instanceCount,g.isInstancedBufferGeometry=!0,g}},rF=class extends Vw{constructor(g){super(g)}load(g,A,I,e){let i=this,t=new Zp(i.manager);t.setPath(i.path),t.setRequestHeader(i.requestHeader),t.setWithCredentials(i.withCredentials),t.load(g,function(C){try{A(i.parse(JSON.parse(C)))}catch(o){e?e(o):console.error(o),i.manager.itemError(g)}},I,e)}parse(g){let A={},I={};function e(r,Q){if(A[Q]!==void 0)return A[Q];let E=r.interleavedBuffers[Q],n=i(r,E.buffer),h=Gh(E.type,n),l=new RH(h,E.stride);return l.uuid=E.uuid,A[Q]=l,l}function i(r,Q){if(I[Q]!==void 0)return I[Q];let E=r.arrayBuffers[Q],n=new Uint32Array(E).buffer;return I[Q]=n,n}let t=g.isInstancedBufferGeometry?new G1:new bg,C=g.data.index;if(C!==void 0){let r=Gh(C.type,C.array);t.setIndex(new zg(r,1))}let o=g.data.attributes;for(let r in o){let Q=o[r],E;if(Q.isInterleavedBufferAttribute){let n=e(g.data,Q.data);E=new _p(n,Q.itemSize,Q.offset,Q.normalized)}else{let n=Gh(Q.type,Q.array),h=Q.isInstancedBufferAttribute?JH:zg;E=new h(n,Q.itemSize,Q.normalized)}Q.name!==void 0&&(E.name=Q.name),Q.usage!==void 0&&E.setUsage(Q.usage),Q.updateRange!==void 0&&(E.updateRange.offset=Q.updateRange.offset,E.updateRange.count=Q.updateRange.count),t.setAttribute(r,E)}let B=g.data.morphAttributes;if(B)for(let r in B){let Q=B[r],E=[];for(let n=0,h=Q.length;n"u"?Date:performance).now()}var M1=class{constructor(g,A,I){this.binding=g,this.valueSize=I;let e,i,t;switch(A){case"quaternion":e=this._slerp,i=this._slerpAdditive,t=this._setAdditiveIdentityQuaternion,this.buffer=new Float64Array(I*6),this._workIndex=5;break;case"string":case"bool":e=this._select,i=this._select,t=this._setAdditiveIdentityOther,this.buffer=new Array(I*5);break;default:e=this._lerp,i=this._lerpAdditive,t=this._setAdditiveIdentityNumeric,this.buffer=new Float64Array(I*5)}this._mixBufferRegion=e,this._mixBufferRegionAdditive=i,this._setIdentity=t,this._origIndex=3,this._addIndex=4,this.cumulativeWeight=0,this.cumulativeWeightAdditive=0,this.useCount=0,this.referenceCount=0}accumulate(g,A){let I=this.buffer,e=this.valueSize,i=g*e+e,t=this.cumulativeWeight;if(t===0){for(let C=0;C!==e;++C)I[i+C]=I[C];t=A}else{t+=A;let C=A/t;this._mixBufferRegion(I,i,0,C,e)}this.cumulativeWeight=t}accumulateAdditive(g){let A=this.buffer,I=this.valueSize,e=I*this._addIndex;this.cumulativeWeightAdditive===0&&this._setIdentity(),this._mixBufferRegionAdditive(A,e,0,g,I),this.cumulativeWeightAdditive+=g}apply(g){let A=this.valueSize,I=this.buffer,e=g*A+A,i=this.cumulativeWeight,t=this.cumulativeWeightAdditive,C=this.binding;if(this.cumulativeWeight=0,this.cumulativeWeightAdditive=0,i<1){let o=A*this._origIndex;this._mixBufferRegion(I,e,o,1-i,A)}t>0&&this._mixBufferRegionAdditive(I,e,this._addIndex*A,1,A);for(let o=A,B=A+A;o!==B;++o)if(I[o]!==I[o+A]){C.setValue(I,e);break}}saveOriginalState(){let g=this.binding,A=this.buffer,I=this.valueSize,e=I*this._origIndex;g.getValue(A,e);for(let i=I,t=e;i!==t;++i)A[i]=A[e+i%I];this._setIdentity(),this.cumulativeWeight=0,this.cumulativeWeightAdditive=0}restoreOriginalState(){let g=this.valueSize*3;this.binding.setValue(this.buffer,g)}_setAdditiveIdentityNumeric(){let g=this._addIndex*this.valueSize,A=g+this.valueSize;for(let I=g;I=.5)for(let t=0;t!==i;++t)g[A+t]=g[I+t]}_slerp(g,A,I,e){QI.slerpFlat(g,A,g,A,g,I,e)}_slerpAdditive(g,A,I,e,i){let t=this._workIndex*i;QI.multiplyQuaternionsFlat(g,t,g,A,g,I),QI.slerpFlat(g,A,g,A,g,t,e)}_lerp(g,A,I,e,i){let t=1-e;for(let C=0;C!==i;++C){let o=A+C;g[o]=g[o]*t+g[I+C]*e}}_lerpAdditive(g,A,I,e,i){for(let t=0;t!==i;++t){let C=A+t;g[C]=g[C]+g[I+t]*e}}},Xw="\\[\\]\\.:\\/",m1=new RegExp("["+Xw+"]","g"),$w="[^"+Xw+"]",U1="[^"+Xw.replace("\\.","")+"]",N1=/((?:WC+[\/:])*)/.source.replace("WC",$w),F1=/(WCOD+)?/.source.replace("WCOD",U1),R1=/(?:\.(WC+)(?:\[(.+)\])?)?/.source.replace("WC",$w),K1=/\.(WC+)(?:\[(.+)\])?/.source.replace("WC",$w),J1=new RegExp("^"+N1+F1+R1+K1+"$"),v1=["material","materials","bones","map"],q1=class{constructor(g,A,I){let e=I||Ae.parseTrackName(A);this._targetGroup=g,this._bindings=g.subscribe_(A,e)}getValue(g,A){this.bind();let I=this._targetGroup.nCachedObjects_,e=this._bindings[I];e!==void 0&&e.getValue(g,A)}setValue(g,A){let I=this._bindings;for(let e=this._targetGroup.nCachedObjects_,i=I.length;e!==i;++e)I[e].setValue(g,A)}bind(){let g=this._bindings;for(let A=this._targetGroup.nCachedObjects_,I=g.length;A!==I;++A)g[A].bind()}unbind(){let g=this._bindings;for(let A=this._targetGroup.nCachedObjects_,I=g.length;A!==I;++A)g[A].unbind()}},Ae=class{constructor(A,I,e){this.path=I,this.parsedPath=e||Ae.parseTrackName(I),this.node=Ae.findNode(A,this.parsedPath.nodeName)||A,this.rootNode=A,this.getValue=this._getValue_unbound,this.setValue=this._setValue_unbound}static create(A,I,e){return A&&A.isAnimationObjectGroup?new Ae.Composite(A,I,e):new Ae(A,I,e)}static sanitizeNodeName(A){return A.replace(/\s/g,"_").replace(m1,"")}static parseTrackName(A){let I=J1.exec(A);if(I===null)throw new Error("PropertyBinding: Cannot parse trackName: "+A);let e={nodeName:I[2],objectName:I[3],objectIndex:I[4],propertyName:I[5],propertyIndex:I[6]},i=e.nodeName&&e.nodeName.lastIndexOf(".");if(i!==void 0&&i!==-1){let t=e.nodeName.substring(i+1);v1.indexOf(t)!==-1&&(e.nodeName=e.nodeName.substring(0,i),e.objectName=t)}if(e.propertyName===null||e.propertyName.length===0)throw new Error("PropertyBinding: can not parse propertyName from trackName: "+A);return e}static findNode(A,I){if(I===void 0||I===""||I==="."||I===-1||I===A.name||I===A.uuid)return A;if(A.skeleton){let e=A.skeleton.getBoneByName(I);if(e!==void 0)return e}if(A.children){let e=function(t){for(let C=0;C0){let o=this._interpolants,B=this._propertyBindings;switch(this.blendMode){case DL:for(let a=0,s=o.length;a!==s;++a)o[a].evaluate(t),B[a].accumulateAdditive(C);break;case qw:default:for(let a=0,s=o.length;a!==s;++a)o[a].evaluate(t),B[a].accumulate(e,C)}}}_updateWeight(g){let A=0;if(this.enabled){A=this.weight;let I=this._weightInterpolant;if(I!==null){let e=I.evaluate(g)[0];A*=e,g>I.parameterPositions[1]&&(this.stopFading(),e===0&&(this.enabled=!1))}}return this._effectiveWeight=A,A}_updateTimeScale(g){let A=0;if(!this.paused){A=this.timeScale;let I=this._timeScaleInterpolant;if(I!==null){let e=I.evaluate(g)[0];A*=e,g>I.parameterPositions[1]&&(this.stopWarping(),A===0?this.paused=!0:this.timeScale=A)}}return this._effectiveTimeScale=A,A}_updateTime(g){let A=this._clip.duration,I=this.loop,e=this.time+g,i=this._loopCount,t=I===vw;if(g===0)return i===-1?e:t&&(i&1)===1?A-e:e;if(I===MN){i===-1&&(this._loopCount=0,this._setEndings(!0,!0,!1));A:{if(e>=A)e=A;else if(e<0)e=0;else{this.time=e;break A}this.clampWhenFinished?this.paused=!0:this.enabled=!1,this.time=e,this._mixer.dispatchEvent({type:"finished",action:this,direction:g<0?-1:1})}}else{if(i===-1&&(g>=0?(i=0,this._setEndings(!0,this.repetitions===0,t)):this._setEndings(this.repetitions===0,!0,t)),e>=A||e<0){let C=Math.floor(e/A);e-=A*C,i+=Math.abs(C);let o=this.repetitions-i;if(o<=0)this.clampWhenFinished?this.paused=!0:this.enabled=!1,e=g>0?A:0,this.time=e,this._mixer.dispatchEvent({type:"finished",action:this,direction:g>0?1:-1});else{if(o===1){let B=g<0;this._setEndings(B,!B,t)}else this._setEndings(!1,!1,t);this._loopCount=i,this.time=e,this._mixer.dispatchEvent({type:"loop",action:this,loopDelta:C})}}else this.time=e;if(t&&(i&1)===1)return A-e}return e}_setEndings(g,A,I){let e=this._interpolantSettings;I?(e.endingStart=$s,e.endingEnd=$s):(g?e.endingStart=this.zeroSlopeAtStart?$s:Xs:e.endingStart=hc,A?e.endingEnd=this.zeroSlopeAtEnd?$s:Xs:e.endingEnd=hc)}_scheduleFading(g,A,I){let e=this._mixer,i=e.time,t=this._weightInterpolant;t===null&&(t=e._lendControlInterpolant(),this._weightInterpolant=t);let C=t.parameterPositions,o=t.sampleValues;return C[0]=i,o[0]=A,C[1]=i+g,o[1]=I,this}},b1=new Float32Array(1),Y1=class extends Si{constructor(g){super(),this._root=g,this._initMemoryManager(),this._accuIndex=0,this.time=0,this.timeScale=1}_bindAction(g,A){let I=g._localRoot||this._root,e=g._clip.tracks,i=e.length,t=g._propertyBindings,C=g._interpolants,o=I.uuid,B=this._bindingsByRootAndName,a=B[o];a===void 0&&(a={},B[o]=a);for(let s=0;s!==i;++s){let r=e[s],Q=r.name,E=a[Q];if(E!==void 0)++E.referenceCount,t[s]=E;else{if(E=t[s],E!==void 0){E._cacheIndex===null&&(++E.referenceCount,this._addInactiveBinding(E,o,Q));continue}let n=A&&A._propertyBindings[s].binding.parsedPath;E=new M1(Ae.create(I,Q,n),r.ValueTypeName,r.getValueSize()),++E.referenceCount,this._addInactiveBinding(E,o,Q),t[s]=E}C[s].resultBuffer=E.buffer}}_activateAction(g){if(!this._isActiveAction(g)){if(g._cacheIndex===null){let I=(g._localRoot||this._root).uuid,e=g._clip.uuid,i=this._actionsByClip[e];this._bindAction(g,i&&i.knownActions[0]),this._addInactiveAction(g,e,I)}let A=g._propertyBindings;for(let I=0,e=A.length;I!==e;++I){let i=A[I];i.useCount++===0&&(this._lendBinding(i),i.saveOriginalState())}this._lendAction(g)}}_deactivateAction(g){if(this._isActiveAction(g)){let A=g._propertyBindings;for(let I=0,e=A.length;I!==e;++I){let i=A[I];--i.useCount===0&&(i.restoreOriginalState(),this._takeBackBinding(i))}this._takeBackAction(g)}}_initMemoryManager(){this._actions=[],this._nActiveActions=0,this._actionsByClip={},this._bindings=[],this._nActiveBindings=0,this._bindingsByRootAndName={},this._controlInterpolants=[],this._nActiveControlInterpolants=0;let g=this;this.stats={actions:{get total(){return g._actions.length},get inUse(){return g._nActiveActions}},bindings:{get total(){return g._bindings.length},get inUse(){return g._nActiveBindings}},controlInterpolants:{get total(){return g._controlInterpolants.length},get inUse(){return g._nActiveControlInterpolants}}}}_isActiveAction(g){let A=g._cacheIndex;return A!==null&&A=0;--I)g[I].stop();return this}update(g){g*=this.timeScale;let A=this._actions,I=this._nActiveActions,e=this.time+=g,i=Math.sign(g),t=this._accuIndex^=1;for(let B=0;B!==I;++B)A[B]._update(e,g,i,t);let C=this._bindings,o=this._nActiveBindings;for(let B=0;B!==o;++B)C[B].apply(t);return this}setTime(g){this.time=0;for(let A=0;Athis.max.x||g.ythis.max.y)}containsBox(g){return this.min.x<=g.min.x&&g.max.x<=this.max.x&&this.min.y<=g.min.y&&g.max.y<=this.max.y}getParameter(g,A){return A.set((g.x-this.min.x)/(this.max.x-this.min.x),(g.y-this.min.y)/(this.max.y-this.min.y))}intersectsBox(g){return!(g.max.xthis.max.x||g.max.ythis.max.y)}clampPoint(g,A){return A.copy(g).clamp(this.min,this.max)}distanceToPoint(g){return RG.copy(g).clamp(this.min,this.max).sub(g).length()}intersect(g){return this.min.max(g.min),this.max.min(g.max),this}union(g){return this.min.min(g.min),this.max.max(g.max),this}translate(g){return this.min.add(g),this.max.add(g),this}equals(g){return g.min.equals(this.min)&&g.max.equals(this.max)}},KG=new J,Vh=new J,eC=class{constructor(A=new J,I=new J){this.start=A,this.end=I}set(A,I){return this.start.copy(A),this.end.copy(I),this}copy(A){return this.start.copy(A.start),this.end.copy(A.end),this}getCenter(A){return A.addVectors(this.start,this.end).multiplyScalar(.5)}delta(A){return A.subVectors(this.end,this.start)}distanceSq(){return this.start.distanceToSquared(this.end)}distance(){return this.start.distanceTo(this.end)}at(A,I){return this.delta(I).multiplyScalar(A).add(this.start)}closestPointToPointParameter(A,I){KG.subVectors(A,this.start),Vh.subVectors(this.end,this.start);let e=Vh.dot(Vh),i=Vh.dot(KG)/e;return I&&(i=ii(i,0,1)),i}closestPointToPoint(A,I,e){let i=this.closestPointToPointParameter(A,I);return this.delta(e).multiplyScalar(i).add(this.start)}applyMatrix4(A){return this.start.applyMatrix4(A),this.end.applyMatrix4(A),this}equals(A){return A.start.equals(this.start)&&A.end.equals(this.end)}clone(){return new this.constructor().copy(this)}},JG=new J,x1=class extends ZI{constructor(g,A){super(),this.light=g,this.matrix=g.matrixWorld,this.matrixAutoUpdate=!1,this.color=A,this.type="SpotLightHelper";let I=new bg,e=[0,0,0,0,0,1,0,0,0,1,0,1,0,0,0,-1,0,1,0,0,0,0,1,1,0,0,0,0,-1,1];for(let t=0,C=1,o=32;tho(g)?g.slice(A.length):A===""?g:g.slice(A.length+1),concat:(g,A)=>ho(g)?(g=[...g],A&&g.push(A),g):A&&A.toString!==void 0?(g!==""&&(g+=GE),g0(A)?g+A.toString():g+A):g,initial:g=>{if(ho(g))return g.slice(0,-1);if(g==="")return g;let A=g.lastIndexOf(GE);return A===-1?"":g.slice(0,A)},last:g=>{if(ho(g))return g[g.length-1]||"";if(g==="")return g;let A=g.lastIndexOf(GE);return A===-1?g:g.slice(A+1)},walk:(g,A)=>{if(ho(g))for(let I of g)A(I);else if(g!==""){let I=0,e=g.indexOf(GE);if(e===-1)A(g);else for(;I{g&&(g=g[I])}),g}},Zt=P1;function j1(g){return typeof g=="object"&&typeof g.next=="function"}function W1(g,A,I,e,i){let t=g.next;if(A.name==="entries")g.next=function(){let C=t.call(this);return C.done===!1&&(C.value[0]=i(C.value[0],A,C.value[0],e),C.value[1]=i(C.value[1],A,C.value[0],e)),C};else if(A.name==="values"){let C=I[A0].keys();g.next=function(){let o=t.call(this);return o.done===!1&&(o.value=i(o.value,A,C.next().value,e)),o}}else g.next=function(){let C=t.call(this);return C.done===!1&&(C.value=i(C.value,A,C.value,e)),C};return g}function LG(g,A,I){return g.isUnsubscribed||A.ignoreSymbols&&g0(I)||A.ignoreUnderscores&&I.charAt(0)==="_"||"ignoreKeys"in A&&A.ignoreKeys.includes(I)}var Z1=class{constructor(g){this._equals=g,this._proxyCache=new WeakMap,this._pathCache=new WeakMap,this.isUnsubscribed=!1}_getDescriptorCache(){return this._descriptorCache===void 0&&(this._descriptorCache=new WeakMap),this._descriptorCache}_getProperties(g){let A=this._getDescriptorCache(),I=A.get(g);return I===void 0&&(I={},A.set(g,I)),I}_getOwnPropertyDescriptor(g,A){if(this.isUnsubscribed)return Reflect.getOwnPropertyDescriptor(g,A);let I=this._getProperties(g),e=I[A];return e===void 0&&(e=Reflect.getOwnPropertyDescriptor(g,A),I[A]=e),e}getProxy(g,A,I,e){if(this.isUnsubscribed)return g;let i=g[e],t=i||g;this._pathCache.set(t,A);let C=this._proxyCache.get(t);return C===void 0&&(C=i===void 0?new Proxy(g,I):g,this._proxyCache.set(t,C)),C}getPath(g){return this.isUnsubscribed?void 0:this._pathCache.get(g)}isDetached(g,A){return!Object.is(g,Zt.get(A,this.getPath(g)))}defineProperty(g,A,I){return Reflect.defineProperty(g,A,I)?(this.isUnsubscribed||(this._getProperties(g)[A]=I),!0):!1}setProperty(g,A,I,e,i){if(!this._equals(i,I)||!(A in g)){let t=this._getOwnPropertyDescriptor(g,A);return t!==void 0&&"set"in t?Reflect.set(g,A,I,e):Reflect.set(g,A,I)}return!0}deleteProperty(g,A,I){if(Reflect.deleteProperty(g,A)){if(!this.isUnsubscribed){let e=this._getDescriptorCache().get(g);e&&(delete e[A],this._pathCache.delete(I))}return!0}return!1}isSameDescriptor(g,A,I){let e=this._getOwnPropertyDescriptor(A,I);return g!==void 0&&e!==void 0&&Object.is(g.value,e.value)&&(g.writable||!1)===(e.writable||!1)&&(g.enumerable||!1)===(e.enumerable||!1)&&(g.configurable||!1)===(e.configurable||!1)&&g.get===e.get&&g.set===e.set}isGetInvariant(g,A){let I=this._getOwnPropertyDescriptor(g,A);return I!==void 0&&I.configurable!==!0&&I.writable!==!0}unsubscribe(){this._descriptorCache=null,this._pathCache=null,this._proxyCache=null,this.isUnsubscribed=!0}};function Xp(g){return toString.call(g)==="[object Object]"}function $h(){return!0}function Gs(g,A){return g.length!==A.length||g.some((I,e)=>A[e]!==I)}var nF=new Set(["hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]),V1=new Set(["concat","includes","indexOf","join","keys","lastIndexOf"]),hF={push:$h,pop:$h,shift:$h,unshift:$h,copyWithin:Gs,reverse:Gs,sort:Gs,splice:Gs,flat:Gs,fill:Gs},z1=new Set([...nF,...V1,...Object.keys(hF)]);function Al(g,A){if(g.size!==A.size)return!0;for(let I of g)if(!A.has(I))return!0;return!1}var lF=["keys","values","entries"],cF=new Set(["has","toString"]),DF={add:Al,clear:Al,delete:Al,forEach:Al},X1=new Set([...cF,...Object.keys(DF),...lF]);function gl(g,A){if(g.size!==A.size)return!0;let I;for(let[e,i]of g)if(I=A.get(e),I!==i||I===void 0&&!A.has(e))return!0;return!1}var $1=new Set([...cF,"get"]),dF={set:gl,clear:gl,delete:gl,forEach:gl},AT=new Set([...$1,...Object.keys(dF),...lF]),Ga=class{constructor(A,I,e,i){this._path=I,this._isChanged=!1,this._clonedCache=new Set,this._hasOnValidate=i,this._changes=i?[]:null,this.clone=I===void 0?A:this._shallowClone(A)}static isHandledMethod(A){return nF.has(A)}_shallowClone(A){let I=A;if(Xp(A))I={...A};else if(ho(A))I=[...A];else if(A instanceof Date)I=new Date(A);else if(A instanceof Set)I=new Set([...A].map(e=>this._shallowClone(e)));else if(A instanceof Map){I=new Map;for(let[e,i]of A.entries())I.set(e,this._shallowClone(i))}return this._clonedCache.add(I),I}preferredThisArg(A,I,e,i){return A?(ho(i)?this._onIsChanged=hF[I]:i instanceof Set?this._onIsChanged=DF[I]:i instanceof Map&&(this._onIsChanged=dF[I]),i):e}update(A,I,e){let i=Zt.after(A,this._path);if(I!=="length"){let t=this.clone;Zt.walk(i,C=>{t&&t[C]&&(this._clonedCache.has(t[C])||(t[C]=this._shallowClone(t[C])),t=t[C])}),this._hasOnValidate&&this._changes.push({path:i,property:I,previous:e}),t&&t[I]&&(t[I]=e)}this._isChanged=!0}undo(A){let I;for(let e=this._changes.length-1;e!==-1;e--)I=this._changes[e],Zt.get(A,I.path)[I.property]=I.previous}isChanged(A){return this._onIsChanged===void 0?this._isChanged:this._onIsChanged(this.clone,A)}},bG=class extends Ga{static isHandledMethod(g){return z1.has(g)}},gT=class extends Ga{undo(g){g.setTime(this.clone.getTime())}isChanged(g,A){return!A(this.clone.valueOf(),g.valueOf())}},YG=class extends Ga{static isHandledMethod(g){return X1.has(g)}undo(g){for(let A of this.clone)g.add(A);for(let A of g)this.clone.has(A)||g.delete(A)}},xG=class extends Ga{static isHandledMethod(g){return AT.has(g)}undo(g){for(let[A,I]of this.clone.entries())g.set(A,I);for(let A of g.keys())this.clone.has(A)||g.delete(A)}},IT=class extends Ga{constructor(g,A,I,e){super(void 0,A,I,e),this._arg1=I[0],this._weakValue=g.has(this._arg1)}isChanged(g){return this._weakValue!==g.has(this._arg1)}undo(g){this._weakValue&&!g.has(this._arg1)?g.add(this._arg1):g.delete(this._arg1)}},eT=class extends Ga{constructor(g,A,I,e){super(void 0,A,I,e),this._weakKey=I[0],this._weakHas=g.has(this._weakKey),this._weakValue=g.get(this._weakKey)}isChanged(g){return this._weakValue!==g.get(this._weakKey)}undo(g){let A=g.has(this._weakKey);this._weakHas&&!A?g.set(this._weakKey,this._weakValue):!this._weakHas&&A?g.delete(this._weakKey):this._weakValue!==g.get(this._weakKey)&&g.set(this._weakKey,this._weakValue)}},js=class{constructor(A){this._stack=[],this._hasOnValidate=A}static isHandledType(A){return Xp(A)||ho(A)||zp(A)}static isHandledMethod(A,I){return Xp(A)?Ga.isHandledMethod(I):ho(A)?bG.isHandledMethod(I):A instanceof Set?YG.isHandledMethod(I):A instanceof Map?xG.isHandledMethod(I):zp(A)}get isCloning(){return this._stack.length>0}start(A,I,e){let i=Ga;ho(A)?i=bG:A instanceof Date?i=gT:A instanceof Set?i=YG:A instanceof Map?i=xG:A instanceof WeakSet?i=IT:A instanceof WeakMap&&(i=eT),this._stack.push(new i(A,I,e,this._hasOnValidate))}update(A,I,e){this._stack[this._stack.length-1].update(A,I,e)}preferredThisArg(A,I,e){let{name:i}=A,t=js.isHandledMethod(e,i);return this._stack[this._stack.length-1].preferredThisArg(t,i,I,e)}isChanged(A,I,e){return this._stack[this._stack.length-1].isChanged(A,I,e)}undo(A){this._previousClone!==void 0&&this._previousClone.undo(A)}stop(){return this._previousClone=this._stack.pop(),this._previousClone.clone}},iT={equals:Object.is,isShallow:!1,pathAsArray:!1,ignoreSymbols:!1,ignoreUnderscores:!1,ignoreDetached:!1,details:!1},I0=(g,A,I={})=>{I={...iT,...I};let e=Symbol("ProxyTarget"),{equals:i,isShallow:t,ignoreDetached:C,details:o}=I,B=new Z1(i),a=typeof I.onValidate=="function",s=new js(a),r=(d,u,y,f,k)=>!a||s.isCloning||I.onValidate(Zt.concat(B.getPath(d),u),y,f,k)===!0,Q=(d,u,y,f)=>{!LG(B,I,u)&&!(C&&B.isDetached(d,g))&&E(B.getPath(d),u,y,f)},E=(d,u,y,f,k)=>{s.isCloning?s.update(d,u,f):A(Zt.concat(d,u),y,f,k)},n=d=>d&&(d[e]||d),h=(d,u,y,f)=>_1(d)||y==="constructor"||t&&!js.isHandledMethod(u,y)||LG(B,I,y)||B.isGetInvariant(u,y)||C&&B.isDetached(u,g)?d:(f===void 0&&(f=B.getPath(u)),B.getProxy(d,Zt.concat(f,y),l,e)),l={get(d,u,y){if(g0(u)){if(u===e||u===A0)return d;if(u===EF&&!B.isUnsubscribed&&B.getPath(d).length===0)return B.unsubscribe(),d}let f=zp(d)?Reflect.get(d,u):Reflect.get(d,u,y);return h(f,d,u)},set(d,u,y,f){y=n(y);let k=d[e]||d,M=k[u];if(i(M,y)&&u in d)return!0;let G=r(d,u,y,M);return G&&B.setProperty(k,u,y,f,M)?(Q(d,u,d[u],M),!0):!G},defineProperty(d,u,y){if(!B.isSameDescriptor(y,d,u)){let f=d[u];r(d,u,y.value,f)&&B.defineProperty(d,u,y,f)&&Q(d,u,y.value,f)}return!0},deleteProperty(d,u){if(!Reflect.has(d,u))return!0;let y=Reflect.get(d,u),f=r(d,u,void 0,y);return f&&B.deleteProperty(d,u,y)?(Q(d,u,void 0,y),!0):!f},apply(d,u,y){let f=u[e]||u;if(B.isUnsubscribed)return Reflect.apply(d,f,y);if((o===!1||o!==!0&&!o.includes(d.name))&&js.isHandledType(f)){let k=Zt.initial(B.getPath(d)),M=js.isHandledMethod(f,d.name);s.start(f,k,y);let G=Reflect.apply(d,s.preferredThisArg(d,u,f),M?y.map(b=>n(b)):y),v=s.isChanged(f,i),N=s.stop();if(js.isHandledType(G)&&M&&(u instanceof Map&&d.name==="get"&&(k=Zt.concat(k,y[0])),G=B.getProxy(G,k,l)),v){let b={name:d.name,args:y,result:G},O=s.isCloning?Zt.initial(k):k,H=s.isCloning?Zt.last(k):"";r(Zt.get(g,O),H,f,N,b)?E(O,H,f,N,b):s.undo(f)}return(u instanceof Map||u instanceof Set)&&j1(G)?W1(G,d,u,k,h):G}return Reflect.apply(d,u,y)}},c=B.getProxy(g,I.pathAsArray?[]:"",l);return A=A.bind(c),a&&(I.onValidate=I.onValidate.bind(c)),c};I0.target=g=>g&&g[A0]||g;I0.unsubscribe=g=>g[EF]||g;var HG=I0,tT=typeof global=="object"&&global&&global.Object===Object&&global,uF=tT,CT=typeof self=="object"&&self&&self.Object===Object&&self,oT=uF||CT||Function("return this")(),LC=oT,BT=LC.Symbol,tC=BT,pF=Object.prototype,aT=pF.hasOwnProperty,rT=pF.toString,kE=tC?tC.toStringTag:void 0;function sT(g){var A=aT.call(g,kE),I=g[kE];try{g[kE]=void 0;var e=!0}catch{}var i=rT.call(g);return e&&(A?g[kE]=I:delete g[kE]),i}var QT=sT,ET=Object.prototype,nT=ET.toString;function hT(g){return nT.call(g)}var lT=hT,cT="[object Null]",DT="[object Undefined]",TG=tC?tC.toStringTag:void 0;function dT(g){return g==null?g===void 0?DT:cT:TG&&TG in Object(g)?QT(g):lT(g)}var xr=dT;function uT(g){return g!=null&&typeof g=="object"}var wB=uT,pT="[object Symbol]";function yT(g){return typeof g=="symbol"||wB(g)&&xr(g)==pT}var qD=yT;function wT(g,A){for(var I=-1,e=g==null?0:g.length,i=Array(e);++I0){if(++A>=cO)return arguments[0]}else A=0;return g.apply(void 0,arguments)}}var pO=uO;function yO(g){return function(){return g}}var wO=yO,SO=function(){try{var g=Tr(Object,"defineProperty");return g({},"",{}),g}catch{}}(),kc=SO,fO=kc?function(g,A){return kc(g,"toString",{configurable:!0,enumerable:!1,value:wO(A),writable:!0})}:YT,GO=fO,kO=pO(GO),MO=kO;function mO(g,A){for(var I=-1,e=g==null?0:g.length;++I-1&&g%1==0&&g-1&&g%1==0&&g<=HO}var C0=TO;function OO(g){return g!=null&&C0(g.length)&&!SF(g)}var GF=OO,_O=Object.prototype;function PO(g){var A=g&&g.constructor,I=typeof A=="function"&&A.prototype||_O;return g===I}var o0=PO;function jO(g,A){for(var I=-1,e=Array(g);++I-1}var U3=m3;function N3(g,A){var I=this.__data__,e=LD(I,g);return e<0?(++this.size,I.push([g,A])):I[e][1]=A,this}var F3=N3;function AE(g){var A=-1,I=g==null?0:g.length;for(this.clear();++A0&&I(o)?A>1?KF(o,A-1,I,e,i):E0(i,o):e||(i[i.length]=o)}return i}var s4=KF;function Q4(g){var A=g==null?0:g.length;return A?s4(g,1):[]}var E4=Q4;function n4(g){return MO(xO(g,void 0,E4),g+"")}var JF=n4,h4=FF(Object.getPrototypeOf,Object),n0=h4,l4="[object Object]",c4=Function.prototype,D4=Object.prototype,vF=c4.toString,d4=D4.hasOwnProperty,u4=vF.call(Object);function p4(g){if(!wB(g)||xr(g)!=l4)return!1;var A=n0(g);if(A===null)return!0;var I=d4.call(A,"constructor")&&A.constructor;return typeof I=="function"&&I instanceof I&&vF.call(I)==u4}var y4=p4;function w4(g,A,I){var e=-1,i=g.length;A<0&&(A=-A>i?0:i+A),I=I>i?i:I,I<0&&(I+=i),i=A>I?0:I-A>>>0,A>>>=0;for(var t=Array(i);++eo))return!1;var a=t.get(g),s=t.get(A);if(a&&s)return a==A&&s==g;var r=-1,Q=!0,E=I&jj?new xj:void 0;for(t.set(g,A),t.set(A,g);++r=A||M<0||r&&G>=t}function c(){var k=lu();if(l(k))return d(k);o=setTimeout(c,h(k))}function d(k){return o=void 0,Q&&e?E(k):(e=i=void 0,C)}function u(){o!==void 0&&clearTimeout(o),a=0,e=B=i=o=void 0}function y(){return o===void 0?C:d(lu())}function f(){var k=lu(),M=l(k);if(e=arguments,i=this,B=k,M){if(o===void 0)return n(B);if(r)return clearTimeout(o),o=setTimeout(c,A),E(B)}return o===void 0&&(o=setTimeout(c,A)),C}return f.cancel=u,f.flush=y,f}var c0=K8;function J8(g){var A=g==null?0:g.length;return A?g[A-1]:void 0}var v8=J8;function q8(g,A){return A.length<2?g:RF(g,S4(A,0,-1))}var L8=q8;function b8(g,A){return w8(g,A)}var WF=b8;function Y8(g,A){return A=IE(A,g),g=L8(g,A),g==null||delete g[HD(v8(A))]}var x8=Y8;function H8(g){return y4(g)?void 0:g}var T8=H8,O8=1,_8=2,P8=4,j8=JF(function(g,A){var I={};if(g==null)return I;var e=!1;A=yF(A,function(t){return t=IE(t,g),e||(e=t.length>1),t}),Ih(g,xF(g),I),e&&(I=_F(I,O8|_8|P8,T8));for(var i=A.length;i--;)x8(I,A[i]);return I}),iy=j8;function W8(g,A,I,e){if(!KC(g))return g;A=IE(A,g);for(var i=-1,t=A.length,C=t-1,o=g;o!=null&&++itypeof window>"u"?!1:window.navigator.userAgent.toLowerCase().includes(" electron/"),CW=()=>typeof window>"u"?!1:window.navigator.platform.toUpperCase().includes("MAC"),oW=()=>typeof window>"u"?!1:/iPad|iPhone|iPod/.test(window.navigator.userAgent)||OD&&"ontouchend"in document,BW=()=>typeof window>"u"?!1:window.navigator.userAgent.toLowerCase().indexOf("firefox")>-1,aW=()=>typeof window>"u"?!1:"ontouchstart"in window||navigator.maxTouchPoints>0,rW=()=>{if(typeof window>"u")return!1;let g=navigator.userAgent,A=navigator.vendor;return/Safari/i.test(g)&&/Apple Computer/.test(A)},sW=()=>{if(typeof window>"u")return null;let g=navigator.userAgent.match(/Version\/(\d+\.\d)/);return g&&g[1]},QW=()=>{if(typeof window>"u")return;let g=new URLSearchParams(window.location.search).get("desktop-app-version");return g?(window.localStorage.setItem("desktop-app-version",g),g):window.localStorage.getItem("desktop-app-version")??"0.0.6"},EW=tW();EW&&QW();var OD=CW(),ZF=oW(),nW=BW(),Kt=aW(),uk=rW(),pk=Number(sW());function VF(g){return Array.isArray(g)?g:[g]}function hW(g,A){let I=0;for(;IA[I])return 1;I+=1}return I!==A.length?-1:I!==g.length?1:0}function el(g){return OD?g.metaKey:g.ctrlKey}var Pg=[],Nc={},VE={},$l={};function zF(g){Pg.includes(g)||Pg.push(g)}function aQ(g){delete Nc[g.pointerId];for(let A=0;A{AR=g}),il;function uW(){if(il)return il;async function g(){let A="https://unpkg.com/@splinetool/navmesh-wasm@0.9.483/build",I=Zn(()=>Promise.resolve().then(()=>_gA),void 0,import.meta.url),[e,i]=await Promise.all([I,fetch(`${A}/navmesh.wasm`).then(o=>o.arrayBuffer())]),t=e.default,C=await t({wasmBinary:i});AR(C)}return il=g(),il}var gR,pW=new Promise(g=>{gR=g}),tl;function yW(){if(tl)return tl;async function g(){let A=await Zn(()=>Promise.resolve().then(()=>$gA),void 0,import.meta.url);await A.init(),gR(A)}return tl=g(),tl}var lI=class{modifyById(A,I){let e=this;if(e[A]===void 0)throw new Error("not expected");{let i={...e,[A]:I};return Object.setPrototypeOf(i,lI.prototype),i}}add(A,I){var e;return((e=this.runOp({type:1,id:A,data:I}))==null?void 0:e.data)??this}runOp(A){let I=this;if(A.type===1){let e=I[A.id],i;e===void 0?i={type:2,id:A.id}:i={type:1,id:A.id,data:e};let{id:t,data:C}=A,o={...I,[t]:C};return Object.setPrototypeOf(o,lI.prototype),{data:o,actual:A,reverse:i}}else if(A.type===2){let{id:e}=A,i=I[e];if(i===void 0)return null;{let t={...I};return Object.setPrototypeOf(t,lI.prototype),delete t[e],{data:t,actual:A,reverse:{type:1,id:e,data:i}}}}return null}};function D0(g){if(g.deepFreeze!==void 0){g.deepFreeze(g);return}let A=Object.getOwnPropertyNames(g);for(let I of A){let e=g[I];e&&typeof e=="object"&&D0(e)}return Object.freeze(g)}function wW(g,A){let I=0;for(;IA[I])return 1;I+=1}return I!==A.length?-1:I!==g.length?1:0}var IR=class extends Error{};function Du(g){let A={...g};return Object.setPrototypeOf(A,Object.getPrototypeOf(g)),A}function Ba(g,A,I){if(g===void 0?A===void 0?(g=0,A=10):g=A-10:A===void 0&&(A=g+10),g>A){let t=g;g=A,A=t}let e=[],i=1/(I+1);for(let t=0;to.id===A);if(t<0)throw new Error("not expected");let C=i[t];return i=[...i],i[t]={...C,data:I},this.modifyArrayBy(e,i)}}modifyArrayBy(A,I){let e=A,i=I;for(;e!==null;){let C=i,o=e;if(e=this.parent(e),e===void 0)throw new Error;i=this.childrenArray(e);let B=i.findIndex(a=>a.id===o);if(B<0)throw new Error;i=[...i],i[B]={...i[B],children:C}}Object.setPrototypeOf(i,ht.prototype);let t=i;return t.fillCaches(),t}runOp(A){switch(A.type){case 7:return this.addOp(A);case 8:return this.deleteOp(A);case 9:return this.moveOp(A)}return null}checkDuplicatedIdRec({id:A,children:I}){if(this.get(A)!==void 0)return!0;for(let e of I)if(this.checkDuplicatedIdRec(e))return!0;return!1}addOp(A){let{parent:I,fi:e,id:i,data:t,children:C}=A;if(I!==null&&this.get(I)===void 0||this.checkDuplicatedIdRec(A))return null;{let o=I,B=this.childrenArray(o),a={fi:e,id:i,data:t,children:C};return B=[...B,a],B.sort((s,r)=>s.fi-r.fi),A.localIndex=B.indexOf(a),{data:this.modifyArrayBy(o,B),actual:A,reverse:{type:8,id:i}}}}deleteOp(A){let{id:I}=A;if(this.get(I)===null)return null;{let e=this.parent(I);if(e===void 0)return null;let i=this.childrenArray(e),t=i.findIndex(o=>o.id===I);A.localIndex=t,i=[...i];let C=i.splice(t,1)[0];return{data:this.modifyArrayBy(e,i),actual:A,reverse:{type:7,...C,parent:e}}}}moveOp(A){let{parent:I,fi:e,id:i}=A;if(I!==null&&this.get(I)===void 0)return this.deleteOp({type:8,id:i});if(I!==null){let Q=I;for(;Q!==null;){if(Q===void 0)throw new Error;if(Q===i)throw new IR("cyclic tree");Q=this.parent(Q)}}let t=this.parent(i);if(t===void 0)return null;let C=t,o=this.childrenArray(t),B=o.findIndex(Q=>Q.id===i);o=[...o];let a=o.splice(B,1)[0],s=this.modifyArrayBy(t,o);t=I,o=s.childrenArray(t);let r=a.fi;return a={...a,fi:e},o=[...o,a],o.sort((Q,E)=>Q.fi-E.fi),A.localIndex=o.indexOf(a),s=s.modifyArrayBy(t,o),{data:s,actual:A,reverse:{type:9,parent:C,fi:r,id:i}}}previous(A,I){if(I===null){let i=this.childrenArray(A);return i.length===0?null:i[i.length-1].id}let e=null;for(let i of this.childrenArray(A)){if(i.id===I)return e;e=i.id}return null}traverseSortNext(A){let I=this.parent(A);if(I!==void 0){let e=this.childrenArray(I),i=e.findIndex(t=>t.id===A)+1;if(i0?I[0].id:this.traverseSortNext(A)}traverseSortPrevious(A){let I=this.childrenArray(A);return I.length>0?this.traverseSortPrevious(I[I.length-1].id):A}sortPrevious(A){let I=this.parent(A);if(I!==void 0){let e=this.childrenArray(I),i=e.findIndex(t=>t.id===A)-1;return i>=0?this.traverseSortPrevious(e[i].id):I}}getAllSorted(A){let I=[];for(let e of A){let i=this.getWithSortKey(e.id);i!==void 0&&I.push({...e,...i})}I.sort((e,i)=>wW(e.sortKey,i.sortKey));for(let e of I)delete e.sortKey;return I}getWithSortKey(A){var I=A;let e=[],i=this.get(I),t=i;if(i!==void 0){for(;I;)e.splice(0,0,i.fi),I=this.parent(I),I!==null&&(i=this.get(I));return{...t,sortKey:e}}}insertBeforeHelper(A,I,e){return this.insertAfterHelper(A,this.previous(A,I),e)}insertAfterHelper(A,I,e){let i=this.childrenArray(A);if(I===null){if(i.length===0)return Ba(0,e,e);{let t=i[0].fi;return Ba(t-e,t,e)}}else{let t=this.get(I);if(t===void 0||this.parent(I)!==A)throw new Error("illegal args");let C=i.find(o=>o.fi>t.fi);if(C===void 0){let o=i[i.length-1].fi;return Ba(o,o+e,e)}else return Ba(t.fi,C.fi,e)}}},Rc;(g=>{function A(I,e){if(e.type!==0)return null;if(Array.isArray(I)){let i=e.props,t={},C=[...I],o=!1;if(i)for(let B of Object.keys(i)){let a=parseInt(B);if(isNaN(a))throw new Error("wrong index");t[B]=C[a],C[a]=i[B],o=!0}return o?{data:C,actual:e,reverse:{type:0,props:t}}:null}else{let i=e.props,t={},C={...I},o=!1;if(i)for(let B of Object.keys(i)){t[B]=C[B];let a=i[B];a===void 0?delete C[B]:C[B]=a,o=!0}return o?{data:C,actual:e,reverse:{type:0,props:t}}:null}}g.runOp=A})(Rc||(Rc={}));var _g=class extends Array{constructor(...A){super(...A),Object.setPrototypeOf(this,_g.prototype)}deepFreeze(){let A=0;for(;AC.id===A);if(i<0)throw new Error("not expected");let t=e[i];return e=[...e],e[i]={...t,data:I},this.modifyArrayBy(e)}}modifyArrayBy(A){Object.setPrototypeOf(A,_g.prototype);let I=A;return SW()||I.fillCaches(),I}runOp(A){switch(A.type){case 4:return this.addOp(A);case 5:return this.deleteOp(A);case 6:return this.moveOp(A)}return null}addOp(A){let{fi:I,id:e,data:i}=A,t=this,C={fi:I,id:e,data:i};return t=[...t,C],t.sort((o,B)=>o.fi-B.fi),A.localIndex=t.indexOf(C),{data:this.modifyArrayBy(t),actual:A,reverse:{type:5,id:e}}}deleteOp(A){let{id:I}=A,e=this,i=e.findIndex(C=>C.id===I);if(i===-1)return null;A.localIndex=i,e=[...e];let t=e.splice(i,1)[0];return{data:this.modifyArrayBy(e),actual:A,reverse:{type:4,...t}}}moveOp(A){let{fi:I,id:e}=A,i=this;i=[...i];let t=i.findIndex(B=>B.id===e);if(t===-1)return null;let C=i[t].fi,o={...i[t],fi:I};return i[t]=o,i.sort((B,a)=>B.fi-a.fi),A.localIndex=i.indexOf(o),{data:this.modifyArrayBy(i),actual:A,reverse:{type:6,fi:C,id:e}}}previous(A){if(A===null)return this.length===0?null:this[this.length-1].id;let I=null;for(let e of this){if(e.id===A)return I;I=e.id}return null}insertBeforeHelper(A,I){return this.insertAfterHelper(this.previous(A),I)}insertAfterHelper(A,I){let e=this;if(A===null){if(e.length===0)return Ba(0,I,I);{let i=e[0].fi;return Ba(i-I,i,I)}}else{let i=this.get(A);if(i===void 0)throw new Error("illegal args");let t=e.find(C=>C.fi>i.fi);if(t===void 0){let C=e[e.length-1].fi;return Ba(C,C+I,I)}else return Ba(i.fi,t.fi,I)}}};function mQ(g){return g&&typeof g=="object"&&g instanceof Ci}var Ci=class{unusedFunOverridesTable(A){}runOp(A){let I=[],e=this,i=0,t={};for(;i0;){if(Object.keys(e).length===0){let B=I[i-1];B&&(e=Du(B),delete e[A.path[i-1]])}else{let B=I[i-1];if(B){let a=Du(B);a[A.path[i-1]]=e,e=a}else{let a=new Ci;a[A.path[i-1]]=e,e=a}}i-=1}let C=Object.setPrototypeOf(e,Ci.prototype),o={...A,props:t};return{data:C,actual:A,reverse:o}}},Da;(g=>{function A(i,t){return Gn(i,t)??i}g.apply=A;function I(i,t){return p0(i,t)}g.merge=I;function e(i,t){let C=0,o=t.path,B=i;for(;C{let t=i.id,C=Gn(i.data,A[t]);if(I=I||C!==void 0,C===void 0&&(C=i.data),i.children){let o=u0(i.children,A);return o!==void 0?I=!0:o=i.children,{...i,id:t,data:C,children:o}}else return{...i,id:t,data:C}});if(I)return e}function fW(g,A){if(A===void 0)return;let I=!1,e=g.map(i=>{let t=i.id,C=Gn(i.data,A[t]);return I=I||C!==void 0,C===void 0&&(C=i.data),{...i,id:t,data:C}});if(I)return Object.setPrototypeOf(e,Object.getPrototypeOf(g)),e}function Gn(g,A){if(!mQ(A))return A;if(g instanceof ht){let I=u0(g,A);return I!==void 0&&Object.setPrototypeOf(I,Object.getPrototypeOf(g)),I}else{if(g instanceof _g)return fW(g,A);if(Array.isArray(g)){let I=!1,e=g.map((i,t)=>{let C=Gn(i,A[t]);return I=I||C!==void 0,C===void 0&&(C=i),C});return I?(Object.setPrototypeOf(e,Object.getPrototypeOf(g)),e):void 0}else{if(g instanceof Ci)return p0(g,A);if(g&&typeof g=="object"){let I={},e=!1;for(let[i,t]of Object.entries(g)){let C=Gn(t,A[i]);e=e||C!==void 0,C===void 0&&(C=t),I[i]=C}return e?(Object.setPrototypeOf(I,Object.getPrototypeOf(g)),I):void 0}}}}function p0(g,A){if(g===void 0)return A;if(A===void 0)return g;if(!mQ(A))return A;if(!mQ(g))return Da.apply(g,A);let I=new Set;for(let i of Object.keys(g))I.add(i);for(let i of Object.keys(A))I.add(i);let e=new Ci;for(let i of I){let t=p0(g===void 0?void 0:g[i],A===void 0?void 0:A[i]);e[i]=t}return e}function GW(g,A){let I={cur:[],result:[],len:0};return g=kn(g,A,I)??g,[g,I.result]}function Kc(g,A){return g===null?null:(g.cur[g.len]=A,g.len+=1,g)}function Jc(g){g&&(g.len-=1)}function kW(g){if(g===null)return null;g.result.push(g.cur.slice(0,g.len))}function tR(g,A,I){let e=!1,i=g.map(t=>{let C=t.id,o=A[C];if(o!==void 0&&typeof o=="string"&&(e=!0,C=o,I!==null))throw new Error("not supported");let B=kn(t.data,A,Kc(I,C));Jc(I),e=e||B!==void 0,B===void 0&&(B=t.data);let a=tR(t.children,A,I);return a!==void 0?e=!0:a=t.children,{...t,id:C,data:B,children:a}});if(e)return i}function MW(g,A,I){let e=!1,i=g.map(t=>{let C=t.id,o=A[C];if(o!==void 0&&typeof o=="string"&&(e=!0,C=o,I!==null))throw new Error("not supported");let B=kn(t.data,A,Kc(I,C));return Jc(I),e=e||B!==void 0,B===void 0&&(B=t.data),{...t,id:C,data:B}});if(e)return Object.setPrototypeOf(i,Object.getPrototypeOf(g)),i}function kn(g,A,I){if(g instanceof ht){let e=tR(g,A,I);return e!==void 0&&Object.setPrototypeOf(e,Object.getPrototypeOf(g)),e}else{if(g instanceof _g)return MW(g,A,I);if(Array.isArray(g)){let e=!1,i=g.map((t,C)=>{let o=kn(t,A,Kc(I,C));return Jc(I),e=e||o!==void 0,o===void 0&&(o=t),o});return e?(Object.setPrototypeOf(i,Object.getPrototypeOf(g)),i):void 0}else if(g&&typeof g=="object"&&!d0(g)){let e={},i=!1;for(let[t,C]of Object.entries(g))if(t!=="name"){let o=A[t];if(typeof o=="string"){if(I!==null)throw new Error("not supported");i=!0,t=o}let B=kn(C,A,Kc(I,t));Jc(I),i=i||B!==void 0,B===void 0&&(B=C),e[t]=B}else e[t]=C;return i?(Object.setPrototypeOf(e,Object.getPrototypeOf(g)),e):void 0}else if(typeof g=="string"){let e=A[g];return e!==void 0&&kW(I),e}else return}}var ty;(g=>{function A(I,e){let i=ji.zoom(e,I.path);if(typeof i=="object"){let t={};for(let C of Object.keys(I.props))t[C]=i[C];return{...I,props:t}}else return{...I,props:{}}}g.replaceProps=A})(ty||(ty={}));var Fi;(g=>{function A(B,a){return{...B,path:B.path.slice(a)}}g.drop=A;function I(B,a){var s;return((s=e(B,a))==null?void 0:s.data)??B}g.applySimple=I;function e(B,a){var Q,E;let s=a.path;for(var r=[];;){let n;if(B instanceof Ci&&a.type===0&&(n=B.runOp({...a,path:s.slice(r.length)}),n===null&&(n=void 0)),n===void 0&&r.length===s.length&&(B instanceof ht||B instanceof _g||B instanceof lI?n=B.runOp(a):n=Rc.runOp(B,a)),n!==void 0)if(n!==null){let c=n.data;for(let d=r.length-1;d>=0;d--){let u=s[d],y=r[d];if(y instanceof ht){if(typeof u=="number")throw new Error("illegal arg");c=y.modifyById(u,c)}else if(y instanceof _g){if(typeof u=="number")throw new Error("illegal arg");c=y.modifyById(u,c)}else if(y instanceof lI){if(typeof u=="number")throw new Error("illegal arg");c=y.modifyById(u,c)}else if(y instanceof Ci){let f={...y,[u]:c};c=Object.setPrototypeOf(f,Ci.prototype)}else if(typeof y=="object")if(Array.isArray(y)){if(typeof u=="string"&&(u=parseInt(u),isNaN(u)))throw new Error("Invalid path");let f=c;c=[...y],c[u]=f}else c={...y,[u]:c};else return null}return{data:c,actual:{...n.actual,path:s},reverse:{...n.reverse,path:s}}}else return null;let h=s[r.length],l;if(B instanceof ht){if(typeof h=="number")throw new Error("");l=(Q=B.get(h))==null?void 0:Q.data}else if(B instanceof _g){if(typeof h=="number")throw new Error("");l=(E=B.get(h))==null?void 0:E.data}else B!==null&&(l=B[h]);if(l!==void 0)r.push(B),B=l;else return null}}g.apply=e;function i(B,a){for(let s=0;sa.props[s]!==void 0):!1}g.subsumed=o})(Fi||(Fi={}));var Cy;(g=>{function A(){return[]}g.empty=A;function I(a,s){let r=[];for(let Q of a){let[E,...n]=Q.path;E===s&&r.push({...Q,path:n})}return r}g.removePrefix=I;function e(a,s){return a.map(r=>({...r,path:[s,...r.path]}))}g.addPrefix=e;function i(a,s){return[...a,...s]}g.concat=i;function t(a,s){return[...a.filter(r=>!s.some(Q=>Fi.subsumed(r,Q))),...s]}g.compress=t;function C(a,s){return a.every(r=>s.every(Q=>Fi.commutative(r,Q)))}g.commutative=C;function o(a,s){for(let r of s){let Q=B(a,r);Q!==null&&(a=Q.data)}return a}g.applyAll=o;function B(a,s){var r=a;let Q=[],E=[];for(let n of s)try{if(n.type===3||n.type===5&&n.path[n.path.length-1]==="variables"){let h,l,c;if(n.type===3?(h=ji.zoom(r,[...n.path,n.id]),c=Fi.apply(r,{...n,type:2})):(h=ji.zoom(r,[...n.path,n.id,"value"]),c=Fi.apply(r,n)),c!==null){r=c.data;let[d,u]=GW(r,{[n.id]:h});r=d;for(let y=0;yM.includes(N)?n.id:v),h=G,k=f.pop()}else{if(k==="alphaOverride"||k==="alpha"){h/=100;let M=h,G=ji.zoom(r,f.slice(0,f.length-2)),v=G.layers.map(N=>N.id===f[f.length-1]?{...N,data:{...N.data,[k]:M}}:N);Object.setPrototypeOf(v,Object.getPrototypeOf(G.layers)),G.layers=v}l=n.id}Q.push({type:0,path:f,props:{[k]:h}}),E.push({type:0,path:f,props:{[k]:l}})}E.push(c.reverse),Q.push(c.actual)}}else{let h=Fi.apply(r,n);h!==null&&(Q.push(h.actual),r=h.data,E.push(h.reverse))}}catch(h){if(h instanceof IR)return null;throw h}return{data:r,actual:Q,reverse:E.reverse()}}g.apply=B})(Cy||(Cy={}));var CR=Symbol(),mW=Symbol(),_D=Symbol(),eh=class{reportOp(g,A,I=[]){let e=this;if(A===null)return;e._current=A.data;let i=I;for(;!(e instanceof BR);){let t=e._path,C=e._current;if(t!==""&&i.splice(0,0,t),e=e._parent,e===null)return;e.update(t,C)}e.push(i,g,A.actual,A.reverse)}deleteChildren(g){if(this._children){let A=this._children[g];if(A){let I=A[_D];I&&I(),delete this._children[g]}}}},UW=class extends eh{constructor(g,A,I){super(),this._parent=g,this._path=A,this._current=I}update(g,A){if(Array.isArray(this._current)){if(typeof g=="string"&&(g=parseInt(g),isNaN(g)))throw new Error("Invalid path");this._current=[...this._current],this._current[g]=A}else this._current={...this._current,[g]:A}}runOp(g){this.reportOp(g,Rc.runOp(this._current,g),g.path)}},NW=class extends eh{constructor(g,A,I){super(),this._parent=g,this._path=A,this._current=I}update(g,A){this._current={...this._current,[g]:A},Object.setPrototypeOf(this._current,lI.prototype)}runOp(g){this.reportOp(g,this._current.runOp(g))}},oR={get(g,A){if(A===_D)return()=>{g._parent=null};if(A===CR)return g._current;if(A===mW)return g;let{_current:I,_children:e}=g;if(A==="push"&&Array.isArray(I))throw new Error("not supported to expand array");let i=e===void 0?void 0:e[A];if(i!==void 0)return i;let t=I[A],C=PD(g,A,t);return C!==t?(e===void 0&&(e={},g._children=e),e[A]=C,C):t},has(g,A){return A in g._current},ownKeys(g){return Reflect.ownKeys(g._current)},defineProperty(){throw Error("not supported")},getPrototypeOf(g){return Object.getPrototypeOf(g._current)},setPrototypeOf(){throw Error("not supported")},getOwnPropertyDescriptor(g,A){let I=g._current,e=Reflect.getOwnPropertyDescriptor(I,A);return e&&{writable:!0,configurable:!0,enumerable:e.enumerable,value:I[A]}}},FW={...oR,set(g,A,I){let e={type:0,props:{[A]:We(I)??I}};return g.deleteChildren(A),g.runOp(e),!0},deleteProperty(g,A){let I={type:0,props:{[A]:void 0}};return g.deleteChildren(A),g.runOp(I),!0}},RW={...oR,set(g,A,I){return I===void 0?this.deleteProperty(g,A):(g.deleteChildren(A),g.runOp({type:1,id:A,data:I})),!0},deleteProperty(g,A){return g.runOp({type:2,id:A}),!0}},y0=class extends eh{constructor(g,A,I){super(),this._children={},this._parent=g,this._path=A,this._current=I,this[_D]=()=>{this._parent=null}}unproxy(){return this._current}update(g,A){this._current=this._current.modifyById(g,A)}runOp(g){this.reportOp(g,this._current.runOp(g))}randomId(){return this._current.randomId()}isDescendantOf(g,A){return this._current.isDescendantOf(g,A)}childrenOf(g){return this._current.childrenOf(g)}traverse(g){return this._current.traverse(g)}get(g){return this._current.get(g)}parent(g){return this._current.parent(g)}traverse(g){this._current.traverse((A,I)=>{g(A,this.data(A))})}data(g){var C;let{_current:A,_children:I}=this,e=I===void 0?void 0:I[g];if(e!==void 0)return e;let i=(C=A.get(g))==null?void 0:C.data,t=PD(this,g,i);return t!==i?(I===void 0&&(I={},this._children=I),I[g]=t,t):i}add(g,A,I,e,i){this.runOp({type:7,parent:g,fi:A,id:I,data:e,children:i})}move(g,A,I){this.runOp({type:9,parent:g,fi:A,id:I})}insertAfter(g,A,I){let e=this._current.insertAfterHelper(g,A,I.length);for(let i=0;i{this._parent=null}}unproxy(){return this._current}get length(){return this._current.length}forEach(g){let A=this.length;for(let I=0;I0){let e=g[g.length-1];if(e.type===0&&A.type===0&&ji.equal(e.path,I)){Object.assign(e.props,A.props);return}}g.push({...A,path:I})}var BR=class extends eh{constructor(g){super(),this.ts=[],this.actual=[],this.reverse=[],this._current=g}update(g,A){if(g!=="")throw new Error("");this._current=A}push(g,A,I,e){du(this.ts,A,g),du(this.actual,I,g),du(this.reverse,e,g)}result(){return{data:this._current,ts:this.ts,actual:this.actual,reverse:this.reverse.reverse()}}};function PD(g,A,I){return I instanceof ht?new y0(g,A,I):I instanceof _g?new w0(g,A,I):I instanceof lI?new Proxy(new NW(g,A,I),RW):I!==null&&typeof I=="object"?d0(I)?I:new Proxy(new UW(g,A,I),FW):I}function aR(g){let A=new BR(g);return[PD(A,"",g),A]}function Mn(g,A){let[I,e]=aR(g);return A(I),e.result()}function We(g){return g instanceof y0||g instanceof w0?g._current:g!==null&&typeof g=="object"?g[CR]:g}var ji;(g=>{function A(t,C){if(C.length===t.length)for(var o=0;o{delete a[s]}),a}else return C}g.removeOverridden=I;function e(t,C){if((t instanceof ht||t instanceof y0)&&typeof C=="string"||(t instanceof _g||t instanceof w0)&&typeof C=="string")return t.data(C);if(typeof C=="number"&&Array.isArray(t)||typeof C=="string"&&typeof t=="object"&&t!==null)return t[C]}g.zoomOnce=e;function i(t,C,o=0){for(;o(ay(),this?this.unpack(A,I):vc.prototype.unpack.call(Sk,A,I)));da=I>-1?I:A.length,kA=0,lo=0,aa=null,Ut=null,wg=A;try{TI=A.dataView||(A.dataView=new DataView(A.buffer,A.byteOffset,A.byteLength))}catch(e){throw wg=null,A instanceof Uint8Array?e:new Error("Source must be a Uint8Array or Buffer but was a "+(A&&typeof A=="object"?A.constructor.name:typeof A))}if(this instanceof vc){if(rt=this,this.structures)return LI=this.structures,Cl();(!LI||LI.length>0)&&(LI=[])}else rt=Sk,(!LI||LI.length>0)&&(LI=[]);return Cl()}unpackMultiple(A,I){let e,i=0;try{UQ=!0;let t=A.length,C=this?this.unpack(A,t):WD.unpack(A,t);if(I){for(I(C);kA=32&&(t.highByte=e-32>>5))}A.sharedLength=A.length;for(let e in I||[])if(e>=0){let i=A[e],t=I[e];t&&(i&&((A.restoreStructures||(A.restoreStructures=[]))[e]=i),A[e]=t)}return this.structures=A}decode(A,I){return this.unpack(A,I)}};function Cl(){try{if(!rt.trusted&&!UQ){let A=LI.sharedLength||0;Ada){let A=new Error("Unexpected end of MessagePack data");throw A.incomplete=!0,A}else if(!UQ)throw new Error("Data read, but end of buffer not reached");return g}catch(g){throw LI.restoreStructures&&fk(),ay(),(g instanceof RangeError||g.message.startsWith("Unexpected end of buffer"))&&(g.incomplete=!0),g}}function fk(){for(let g in LI.restoreStructures)LI[g]=LI.restoreStructures[g];LI.restoreStructures=null}function Se(){let g=wg[kA++];if(g<160)if(g<128){if(g<64)return g;{let A=LI[g&63]||rt.getStructures&&ER()[g&63];return A?(A.read||(A.read=S0(A,g&63)),A.read()):g}}else if(g<144)if(g-=128,rt.mapsAsObjects){let A={};for(let I=0;I=kA)return aa.slice(kA-Vt,(kA+=A)-Vt);if(lo==0&&da<140){let I=A<16?f0(A):nR(A);if(I!=null)return I}return By(A)}else{let A;switch(g){case 192:return null;case 193:return Ut?(A=Se(),A>0?Ut[1].slice(Ut.position1,Ut.position1+=A):Ut[0].slice(Ut.position0,Ut.position0-=A)):QR;case 194:return!1;case 195:return!0;case 196:return uu(wg[kA++]);case 197:return A=TI.getUint16(kA),kA+=2,uu(A);case 198:return A=TI.getUint32(kA),kA+=4,uu(A);case 199:return $a(wg[kA++]);case 200:return A=TI.getUint16(kA),kA+=2,$a(A);case 201:return A=TI.getUint32(kA),kA+=4,$a(A);case 202:if(A=TI.getFloat32(kA),rt.useFloat32>2){let I=G0[(wg[kA]&127)<<1|wg[kA+1]>>7];return kA+=4,(I*A+(A>0?.5:-.5)>>0)/I}return kA+=4,A;case 203:return A=TI.getFloat64(kA),kA+=8,A;case 204:return wg[kA++];case 205:return A=TI.getUint16(kA),kA+=2,A;case 206:return A=TI.getUint32(kA),kA+=4,A;case 207:return rt.int64AsNumber?(A=TI.getUint32(kA)*4294967296,A+=TI.getUint32(kA+4)):A=TI.getBigUint64(kA),kA+=8,A;case 208:return TI.getInt8(kA++);case 209:return A=TI.getInt16(kA),kA+=2,A;case 210:return A=TI.getInt32(kA),kA+=4,A;case 211:return rt.int64AsNumber?(A=TI.getInt32(kA)*4294967296,A+=TI.getUint32(kA+4)):A=TI.getBigInt64(kA),kA+=8,A;case 212:if(A=wg[kA++],A==114)return Uk(wg[kA++]&63);{let I=$i[A];if(I)return I.read?(kA++,I.read(Se())):I.noBuffer?(kA++,I()):I(wg.subarray(kA,++kA));throw new Error("Unknown extension "+A)}case 213:return A=wg[kA],A==114?(kA++,Uk(wg[kA++]&63,wg[kA++])):$a(2);case 214:return $a(4);case 215:return $a(8);case 216:return $a(16);case 217:return A=wg[kA++],lo>=kA?aa.slice(kA-Vt,(kA+=A)-Vt):vW(A);case 218:return A=TI.getUint16(kA),kA+=2,lo>=kA?aa.slice(kA-Vt,(kA+=A)-Vt):qW(A);case 219:return A=TI.getUint32(kA),kA+=4,lo>=kA?aa.slice(kA-Vt,(kA+=A)-Vt):LW(A);case 220:return A=TI.getUint16(kA),kA+=2,kk(A);case 221:return A=TI.getUint32(kA),kA+=4,kk(A);case 222:return A=TI.getUint16(kA),kA+=2,Mk(A);case 223:return A=TI.getUint32(kA),kA+=4,Mk(A);default:if(g>=224)return g-256;if(g===void 0){let I=new Error("Unexpected end of MessagePack data");throw I.incomplete=!0,I}throw new Error("Unknown MessagePack token "+g)}}}var JW=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function S0(g,A){function I(){if(I.count++>2){let i=g.read=new Function("r","return function(){return {"+g.map(t=>JW.test(t)?t+":r()":"["+JSON.stringify(t)+"]:r()").join(",")+"}}")(Se);return g.highByte===0&&(g.read=Gk(A,g.read)),i()}let e={};for(let i=0,t=g.length;ifunction(){let I=wg[kA++];if(I===0)return A();let e=g<32?-(g+(I<<5)):g+(I<<5),i=LI[e]||ER()[e];if(!i)throw new Error("Record id is not defined for "+e);return i.read||(i.read=S0(i,g)),i.read()};function ER(){let g=DR(()=>(wg=null,rt.getStructures()));return LI=rt._mergeStructures(g,LI)}var By=jD,vW=jD,qW=jD,LW=jD;function jD(g){let A;if(g<16&&(A=f0(g)))return A;if(g>64&&oy)return oy.decode(wg.subarray(kA,kA+=g));let I=kA+g,e=[];for(A="";kA65535&&(B-=65536,e.push(B>>>10&1023|55296),B=56320|B&1023),e.push(B)}else e.push(i);e.length>=4096&&(A+=Qi.apply(String,e),e.length=0)}return e.length>0&&(A+=Qi.apply(String,e)),A}function kk(g){let A=new Array(g);for(let I=0;I0){kA=A;return}I[e]=i}return Qi.apply(String,I)}function f0(g){if(g<4)if(g<2){if(g===0)return"";{let A=wg[kA++];if((A&128)>1){kA-=1;return}return Qi(A)}}else{let A=wg[kA++],I=wg[kA++];if((A&128)>0||(I&128)>0){kA-=2;return}if(g<3)return Qi(A,I);let e=wg[kA++];if((e&128)>0){kA-=3;return}return Qi(A,I,e)}else{let A=wg[kA++],I=wg[kA++],e=wg[kA++],i=wg[kA++];if((A&128)>0||(I&128)>0||(e&128)>0||(i&128)>0){kA-=4;return}if(g<6){if(g===4)return Qi(A,I,e,i);{let t=wg[kA++];if((t&128)>0){kA-=5;return}return Qi(A,I,e,i,t)}}else if(g<8){let t=wg[kA++],C=wg[kA++];if((t&128)>0||(C&128)>0){kA-=6;return}if(g<7)return Qi(A,I,e,i,t,C);let o=wg[kA++];if((o&128)>0){kA-=7;return}return Qi(A,I,e,i,t,C,o)}else{let t=wg[kA++],C=wg[kA++],o=wg[kA++],B=wg[kA++];if((t&128)>0||(C&128)>0||(o&128)>0||(B&128)>0){kA-=8;return}if(g<10){if(g===8)return Qi(A,I,e,i,t,C,o,B);{let a=wg[kA++];if((a&128)>0){kA-=9;return}return Qi(A,I,e,i,t,C,o,B,a)}}else if(g<12){let a=wg[kA++],s=wg[kA++];if((a&128)>0||(s&128)>0){kA-=10;return}if(g<11)return Qi(A,I,e,i,t,C,o,B,a,s);let r=wg[kA++];if((r&128)>0){kA-=11;return}return Qi(A,I,e,i,t,C,o,B,a,s,r)}else{let a=wg[kA++],s=wg[kA++],r=wg[kA++],Q=wg[kA++];if((a&128)>0||(s&128)>0||(r&128)>0||(Q&128)>0){kA-=12;return}if(g<14){if(g===12)return Qi(A,I,e,i,t,C,o,B,a,s,r,Q);{let E=wg[kA++];if((E&128)>0){kA-=13;return}return Qi(A,I,e,i,t,C,o,B,a,s,r,Q,E)}}else{let E=wg[kA++],n=wg[kA++];if((E&128)>0||(n&128)>0){kA-=14;return}if(g<15)return Qi(A,I,e,i,t,C,o,B,a,s,r,Q,E,n);let h=wg[kA++];if((h&128)>0){kA-=15;return}return Qi(A,I,e,i,t,C,o,B,a,s,r,Q,E,n,h)}}}}}function uu(g){return rt.copyBuffers?Uint8Array.prototype.slice.call(wg,kA,kA+=g):wg.subarray(kA,kA+=g)}function $a(g){let A=wg[kA++];if($i[A])return $i[A](wg.subarray(kA,kA+=g));throw new Error("Unknown extension type "+A)}var mk=new Array(4096);function hR(){let g=wg[kA++];if(g>=160&&g<192){if(g=g-160,lo>=kA)return aa.slice(kA-Vt,(kA+=g)-Vt);if(!(lo==0&&da<180))return By(g)}else return kA--,Se();let A=(g<<5^(g>1?TI.getUint16(kA):g>0?wg[kA]:0))&4095,I=mk[A],e=kA,i=kA+g-3,t,C=0;if(I&&I.bytes==g){for(;e{var I=Se();let e=g;A!==void 0&&(g=g<32?-((A<<5)+g):(A<<5)+g,I.highByte=A);let i=LI[g];return i&&i.isShared&&((LI.restoreStructures||(LI.restoreStructures=[]))[g]=i),LI[g]=I,I.read=S0(I,e),I.read()},lR=typeof self=="object"?self:global;$i[0]=()=>{};$i[0].noBuffer=!0;$i[101]=()=>{let g=Se();return(lR[g[0]]||Error)(g[1])};$i[105]=g=>{let A=TI.getUint32(kA-4);uB||(uB=new Map);let I=wg[kA],e;I>=144&&I<160||I==220||I==221?e=[]:e={};let i={target:e};uB.set(A,i);let t=Se();return i.used?Object.assign(e,t):(i.target=t,t)};$i[112]=g=>{let A=TI.getUint32(kA-4),I=uB.get(A);return I.used=!0,I.target};$i[115]=()=>new Set(Se());var cR=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(g=>g+"Array");$i[116]=g=>{let A=g[0],I=cR[A];if(!I)throw new Error("Could not find typed array for code "+A);return new lR[I](Uint8Array.prototype.slice.call(g,1).buffer)};$i[120]=()=>{let g=Se();return new RegExp(g[0],g[1])};$i[98]=g=>{let A=(g[0]<<24)+(g[1]<<16)+(g[2]<<8)+g[3],I=kA;kA+=A-4,Ut=[Se(),Se()],Ut.position0=0,Ut.position1=0;let e=kA;kA=I;try{return Se()}finally{kA=e}};$i[255]=g=>g.length==4?new Date((g[0]*16777216+(g[1]<<16)+(g[2]<<8)+g[3])*1e3):g.length==8?new Date(((g[0]<<22)+(g[1]<<14)+(g[2]<<6)+(g[3]>>2))/1e6+((g[3]&3)*4294967296+g[4]*16777216+(g[5]<<16)+(g[6]<<8)+g[7])*1e3):g.length==12?new Date(((g[0]<<24)+(g[1]<<16)+(g[2]<<8)+g[3])/1e6+((g[4]&128?-281474976710656:0)+g[6]*1099511627776+g[7]*4294967296+g[8]*16777216+(g[9]<<16)+(g[10]<<8)+g[11])*1e3):new Date("invalid");function DR(g){let A=da,I=kA,e=Vt,i=lo,t=aa,C=uB,o=Ut,B=new Uint8Array(wg.slice(0,da)),a=LI,s=LI.slice(0,LI.length),r=rt,Q=UQ,E=g();return da=A,kA=I,Vt=e,lo=i,aa=t,uB=C,Ut=o,wg=B,UQ=Q,LI=a,LI.splice(0,LI.length,...s),rt=r,TI=new DataView(wg.buffer,wg.byteOffset,wg.byteLength),E}function ay(){wg=null,uB=null,LI=null}function bW(g){g.unpack?$i[g.type]=g.unpack:$i[g.type]=g}var G0=new Array(147);for(let g=0;g<256;g++)G0[g]=+("1e"+Math.floor(45.15-g*.30103));var WD=new vc({useRecords:!1});WD.unpack;WD.unpackMultiple;WD.unpack;var YW=new Float32Array(1);new Uint8Array(YW.buffer,0,4);var Ac;try{Ac=new TextEncoder}catch{}var qc,k0,ZD=typeof Buffer<"u",pu=ZD?Buffer.allocUnsafeSlow:Uint8Array,dR=ZD?Buffer:Uint8Array,Nk=ZD?4294967296:2144337920,PA,Ue,FA=0,VC,zC=null,xW=/[\u0080-\uFFFF]/,ME=Symbol("record-id"),uR=class extends vc{constructor(g){super(g),this.offset=0;let A,I,e,i,t,C=0,o=dR.prototype.utf8Write?function(k,M,G){return PA.utf8Write(k,M,G)}:Ac&&Ac.encodeInto?function(k,M){return Ac.encodeInto(k,PA.subarray(M)).written}:!1,B=this;g||(g={});let a=g&&g.sequential,s=g.structures||g.saveStructures,r=g.maxSharedStructures;if(r==null&&(r=s?32:0),r>8160)throw new Error("Maximum maxSharedStructure is 8160");let Q=g.maxOwnStructures;Q==null&&(Q=s?32:64),a&&!g.saveStructures&&(this.structures=[]);let E=r>32||Q+r>64,n=r+64,h=r+Q+64;if(h>8256)throw new Error("Maximum maxSharedStructure + maxOwnStructure is 8192");let l=[],c=0,d=0;this.pack=this.encode=function(k,M){if(PA||(PA=new pu(8192),Ue=new DataView(PA.buffer,0,8192),FA=0),VC=PA.length-10,VC-FA<2048?(PA=new pu(PA.length),Ue=new DataView(PA.buffer,0,PA.length),VC=PA.length-10,FA=0):FA=FA+7&2147483640,A=FA,t=B.structuredClone?new Map:null,B.bundleStrings?(zC=["",""],PA[FA++]=214,PA[FA++]=98,zC.position=FA-A,FA+=4):zC=null,I=B.structures,I){I.uninitialized&&(I=B._mergeStructures(B.getStructures()));let G=I.sharedLength||0;if(G>r)throw new Error("Shared structures is larger than maximum shared structures, try increasing maxSharedStructures to "+I.sharedLength);if(!I.transitions){I.transitions=Object.create(null);for(let v=0;vVC&&f(FA),B.offset=FA;let G=TW(PA.subarray(A,FA),t.idsToInsert);return t=null,G}return M&OW?(PA.start=A,PA.end=FA,PA):PA.subarray(A,FA)}finally{if(I){if(d<10&&d++,c>1e4)I.transitions=null,d=0,c=0,l.length>0&&(l=[]);else if(l.length>0&&!a){for(let G=0,v=l.length;GG&&(I=I.slice(0,G));let v=PA.subarray(A,FA);return B.saveStructures(I,C)===!1?(B._mergeStructures(B.getStructures()),B.pack(k)):(C=G,v)}}M&_W&&(FA=A)}};let u=k=>{FA>VC&&(PA=f(FA));var M=typeof k,G;if(M==="string"){let v=k.length;if(zC&&v>=8&&v<4096){let O=xW.test(k);zC[O?0:1]+=k,PA[FA++]=193,u(O?-v:v);return}let N;v<32?N=1:v<256?N=2:v<65536?N=3:N=5;let b=v*3;if(FA+b>VC&&(PA=f(FA+b)),v<64||!o){let O,H,_,gA=FA+N;for(O=0;O>6|192,PA[gA++]=H&63|128):(H&64512)===55296&&((_=k.charCodeAt(O+1))&64512)===56320?(H=65536+((H&1023)<<10)+(_&1023),O++,PA[gA++]=H>>18|240,PA[gA++]=H>>12&63|128,PA[gA++]=H>>6&63|128,PA[gA++]=H&63|128):(PA[gA++]=H>>12|224,PA[gA++]=H>>6&63|128,PA[gA++]=H&63|128);G=gA-FA-N}else G=o(k,FA+N,b);G<32?PA[FA++]=160|G:G<256?(N<2&&PA.copyWithin(FA+2,FA+1,FA+1+G),PA[FA++]=217,PA[FA++]=G):G<65536?(N<3&&PA.copyWithin(FA+3,FA+2,FA+2+G),PA[FA++]=218,PA[FA++]=G>>8,PA[FA++]=G&255):(N<5&&PA.copyWithin(FA+5,FA+3,FA+3+G),PA[FA++]=219,Ue.setUint32(FA,G),FA+=4),FA+=G}else if(M==="number")if(k>>>0===k)k<64?PA[FA++]=k:k<256?(PA[FA++]=204,PA[FA++]=k):k<65536?(PA[FA++]=205,PA[FA++]=k>>8,PA[FA++]=k&255):(PA[FA++]=206,Ue.setUint32(FA,k),FA+=4);else if(k>>0===k)k>=-32?PA[FA++]=256+k:k>=-128?(PA[FA++]=208,PA[FA++]=k+256):k>=-32768?(PA[FA++]=209,Ue.setInt16(FA,k),FA+=2):(PA[FA++]=210,Ue.setInt32(FA,k),FA+=4);else{let v;if((v=this.useFloat32)>0&&k<4294967296&&k>=-2147483648){PA[FA++]=202,Ue.setFloat32(FA,k);let N;if(v<4||(N=k*G0[(PA[FA]&127)<<1|PA[FA+1]>>7])>>0===N){FA+=4;return}else FA--}PA[FA++]=203,Ue.setFloat64(FA,k),FA+=8}else if(M==="object")if(!k)PA[FA++]=192;else{if(t){let N=t.get(k);if(N){if(!N.id){let b=t.idsToInsert||(t.idsToInsert=[]);N.id=b.push(N)}PA[FA++]=214,PA[FA++]=112,Ue.setUint32(FA,N.id),FA+=4;return}else t.set(k,{offset:FA-A})}let v=k.constructor;if(v===Object)y(k,!0);else if(v===Array){G=k.length,G<16?PA[FA++]=144|G:G<65536?(PA[FA++]=220,PA[FA++]=G>>8,PA[FA++]=G&255):(PA[FA++]=221,Ue.setUint32(FA,G),FA+=4);for(let N=0;N>8,PA[FA++]=G&255):(PA[FA++]=223,Ue.setUint32(FA,G),FA+=4);for(let[N,b]of k)u(N),u(b)}else{for(let N=0,b=qc.length;N(PA=_,_=null,FA+=BA,FA>VC&&f(FA),{target:PA,targetView:Ue,position:FA-BA}),u)}finally{_&&(PA=_,Ue=gA,FA=CA,VC=PA.length-10)}AA&&(AA.length+FA>VC&&f(AA.length+FA),FA=HW(AA,PA,FA,H.type));return}}y(k,!k.hasOwnProperty)}}else if(M==="boolean")PA[FA++]=k?195:194;else if(M==="bigint"){if(k=-(BigInt(1)<0)PA[FA++]=207,Ue.setBigUint64(FA,k);else if(this.largeBigIntToFloat)PA[FA++]=203,Ue.setFloat64(FA,Number(k));else throw new RangeError(k+" was too large to fit in MessagePack 64-bit integer format, set largeBigIntToFloat to convert to float-64");FA+=8}else if(M==="undefined")this.encodeUndefinedAsNil?PA[FA++]=192:(PA[FA++]=212,PA[FA++]=0,PA[FA++]=0);else if(M==="function")u(this.writeFunction&&this.writeFunction());else throw new Error("Unknown type: "+M)},y=this.useRecords===!1?this.variableMapSize?k=>{let M=Object.keys(k),G=M.length;G<16?PA[FA++]=128|G:G<65536?(PA[FA++]=222,PA[FA++]=G>>8,PA[FA++]=G&255):(PA[FA++]=223,Ue.setUint32(FA,G),FA+=4);let v;for(let N=0;N{PA[FA++]=222;let G=FA-A;FA+=2;let v=0;for(let N in k)(M||k.hasOwnProperty(N))&&(u(N),u(k[N]),v++);PA[G+++A]=v>>8,PA[G+A]=v&255}:k=>{let M=Object.keys(k),G,v=i.transitions||(i.transitions=Object.create(null)),N=0;for(let O=0,H=M.length;O=96&&E?(PA[FA++]=((b-=96)&31)+96,PA[FA++]=b>>5):PA[FA++]=b;else{b=i.nextId,b||(b=64),b=h&&(b=n),i.nextId=b+1);let O=M.highByte=b>=96&&E?b-96>>5:-1;v[ME]=b,i[b-64]=M,b=0?(PA[FA++]=(b&31)+96,PA[FA++]=O):PA[FA++]=b):(O>=0?(PA[FA++]=213,PA[FA++]=114,PA[FA++]=(b&31)+96,PA[FA++]=O):(PA[FA++]=212,PA[FA++]=114,PA[FA++]=b),N&&(c+=d*N),l.length>=Q&&(l.shift()[ME]=0),l.push(v),u(M))}for(let O=0,H=M.length;O{let M;if(k>16777216){if(k-A>Nk)throw new Error("Packed buffer would be larger than maximum buffer size");M=Math.min(Nk,Math.round(Math.max((k-A)*(k>67108864?1.25:2),4194304)/4096)*4096)}else M=(Math.max(k-A<<2,PA.length-1)>>12)+1<<12;let G=new pu(M);return Ue=new DataView(G.buffer,0,M),PA.copy?PA.copy(G,0,A,k):G.set(PA.slice(A,k)),FA-=A,A=0,VC=G.length-10,PA=G}}useBuffer(g){PA=g,Ue=new DataView(PA.buffer,PA.byteOffset,PA.byteLength),FA=0}};k0=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,sR];qc=[{pack(g,A,I){let e=g.getTime()/1e3;if((this.useTimestamp32||g.getMilliseconds()===0)&&e>=0&&e<4294967296){let{target:i,targetView:t,position:C}=A(6);i[C++]=214,i[C++]=255,t.setUint32(C,e)}else if(e>0&&e<17179869184){let{target:i,targetView:t,position:C}=A(10);i[C++]=215,i[C++]=255,t.setUint32(C,g.getMilliseconds()*4e6+(e/1e3/4294967296>>0)),t.setUint32(C+4,e)}else if(isNaN(e)){if(this.onInvalidDate)return A(0),I(this.onInvalidDate());let{target:i,targetView:t,position:C}=A(3);i[C++]=212,i[C++]=255,i[C++]=255}else{let{target:i,targetView:t,position:C}=A(15);i[C++]=199,i[C++]=12,i[C++]=255,t.setUint32(C,g.getMilliseconds()*1e6),t.setBigInt64(C+4,BigInt(Math.floor(e)))}}},{pack(g,A,I){let e=Array.from(g),{target:i,position:t}=A(this.structuredClone?3:0);this.structuredClone&&(i[t++]=212,i[t++]=115,i[t++]=0),I(e)}},{pack(g,A,I){let{target:e,position:i}=A(this.structuredClone?3:0);this.structuredClone&&(e[i++]=212,e[i++]=101,e[i++]=0),I([g.name,g.message])}},{pack(g,A,I){let{target:e,position:i}=A(this.structuredClone?3:0);this.structuredClone&&(e[i++]=212,e[i++]=120,e[i++]=0),I([g.source,g.flags])}},{pack(g,A){this.structuredClone?Fk(g,16,A):Rk(ZD?Buffer.from(g):new Uint8Array(g),A)}},{pack(g,A){let I=g.constructor;I!==dR&&this.structuredClone?Fk(g,cR.indexOf(I.name),A):Rk(g,A)}},{pack(g,A){let{target:I,position:e}=A(1);I[e]=193}}];function Fk(g,A,I,e){let i=g.byteLength;if(i+1<256){var{target:t,position:C}=I(4+i);t[C++]=199,t[C++]=i+1}else if(i+1<65536){var{target:t,position:C}=I(5+i);t[C++]=200,t[C++]=i+1>>8,t[C++]=i+1&255}else{var{target:t,position:C,targetView:o}=I(7+i);t[C++]=201,o.setUint32(C,i+1),C+=4}t[C++]=116,t[C++]=A,t.set(new Uint8Array(g.buffer,g.byteOffset,g.byteLength),C)}function Rk(g,A){let I=g.byteLength;var e,i;if(I<256){var{target:e,position:i}=A(I+2);e[i++]=196,e[i++]=I}else if(I<65536){var{target:e,position:i}=A(I+3);e[i++]=197,e[i++]=I>>8,e[i++]=I&255}else{var{target:e,position:i,targetView:t}=A(I+5);e[i++]=198,t.setUint32(i,I),i+=4}e.set(g,i)}function HW(g,A,I,e){let i=g.length;switch(i){case 1:A[I++]=212;break;case 2:A[I++]=213;break;case 4:A[I++]=214;break;case 8:A[I++]=215;break;case 16:A[I++]=216;break;default:i<256?(A[I++]=199,A[I++]=i):i<65536?(A[I++]=200,A[I++]=i>>8,A[I++]=i&255):(A[I++]=201,A[I++]=i>>24,A[I++]=i>>16&255,A[I++]=i>>8&255,A[I++]=i&255)}return A[I++]=e,A.set(g,I),I+=i,I}function TW(g,A){let I,e=A.length*6,i=g.length-e;for(A.sort((t,C)=>t.offset>C.offset?1:-1);I=A.pop();){let t=I.offset,C=I.id;g.copyWithin(t+e,t,i),e-=6;let o=t+e;g[o++]=214,g[o++]=105,g[o++]=C>>24,g[o++]=C>>16&255,g[o++]=C>>8&255,g[o++]=C&255,i=t}return g}function iE(g){if(g.Class){if(!g.pack&&!g.write)throw new Error("Extension has no pack or write function");if(g.pack&&!g.type)throw new Error("Extension has no type (numeric code to identify the extension)");k0.unshift(g.Class),qc.unshift(g)}bW(g)}var pR=new uR({useRecords:!1});pR.pack;pR.pack;var OW=512,_W=1024,Kk=new uR({structuredClone:!0});iE({Class:lI.prototype.constructor,type:1,write(g){return{...g}},read(g){return Object.setPrototypeOf(g,lI.prototype),g}});iE({Class:_g.prototype.constructor,type:2,write(g){return[...g]},read(g){return Object.setPrototypeOf(g,_g.prototype),g}});iE({Class:ht.prototype.constructor,type:3,write(g){return[...g]},read(g){return Object.setPrototypeOf(g,ht.prototype),g}});iE({Class:yk.prototype.constructor,type:4,write(g){return g.id},read(g){return new yk(g)}});iE({Class:wk.prototype.constructor,type:5,write(g){return g.data},read(g){return new wk(g)}});iE({Class:Ci.prototype.constructor,type:6,write(g){return{...g}},read(g){return Object.setPrototypeOf(g,Ci.prototype),g}});function PW(g){var A=0;if(g.length===0)return A;for(let I=0;I{function A(i){return Kk.pack(i)}g.serialize=A;function I(i){return Kk.unpack(i)}g.deserialize=I;function e(i){return PW(A(ry(i))).toString()}g.checksum=e})(sy||(sy={}));var Jk;(g=>{function A(e){return e.type==="Conditional"?e.condition.type==="Distance"?"Distance":"StateChange":e.type}g.toEventUIType=A;function I(e){return e==="Distance"||e==="StateChange"?"Conditional":e}g.fromEventUIType=I})(Jk||(Jk={}));var Mt={LookAt:[],Follow:["Create"],DragDrop:["Transition","Animation","Audio","Create","SetVariable","DynamicVariablePlay","Conditional"],MouseHover:["Transition","Animation","Create","Destroy","SwitchCamera","SceneTransition","SetVariable","DynamicVariablePlay","Conditional"],Scroll:["Transition","Animation","Create","SetVariable","DynamicVariablePlay","Conditional"],Start:["Transition","Animation","Audio","Video","Create","Destroy","SwitchCamera","SceneTransition","SetVariable","DynamicVariablePlay","Conditional"],Conditional:["Transition","Animation","Audio","Video","Link","Create","Destroy","SwitchCamera","SceneTransition","Reset","SetVariable","DynamicVariablePlay","Conditional"],MouseDown:["Transition","Animation","Audio","Video","Link","Create","Destroy","SwitchCamera","SceneTransition","Reset","SetVariable","DynamicVariablePlay","Conditional"],MouseUp:["Transition","Animation","Audio","Video","Link","Create","Destroy","SwitchCamera","SceneTransition","Reset","SetVariable","DynamicVariablePlay","Conditional"],MousePress:["Transition","Animation","Audio","Video","Link","Create","SwitchCamera","SceneTransition","Reset","SetVariable","DynamicVariablePlay","Conditional"],KeyDown:["Transition","Animation","Audio","Video","Link","Create","Destroy","SwitchCamera","SceneTransition","Reset","SetVariable","DynamicVariablePlay","Conditional"],KeyUp:["Transition","Animation","Audio","Video","Link","Create","Destroy","SwitchCamera","SceneTransition","Reset","SetVariable","DynamicVariablePlay","Conditional"],KeyPress:["Transition","Animation","Audio","Video","Link","Create","SwitchCamera","Reset","SetVariable","DynamicVariablePlay","Conditional"],GameControl:["Transition","Animation","Audio","Create","Conditional"],Collision:["Transition","Animation","Audio","Video","Create","Destroy","Reset","SetVariable","DynamicVariablePlay","Conditional"],Trigger:["Transition","Audio","Video","Link","Create","Destroy","SwitchCamera","SceneTransition","Reset","SetVariable","DynamicVariablePlay","Conditional"],Resize:["Transition","Animation","Audio","Video","Create","Destroy","SwitchCamera","SceneTransition","Reset","SetVariable","DynamicVariablePlay","Conditional"],VariableChange:["Transition","Animation","Audio","Video","Link","Create","Destroy","SwitchCamera","SceneTransition","Reset","SetVariable","DynamicVariablePlay","Conditional"]},vk;(g=>{function A(e){return e.type==="MouseDown"||e.type==="MouseUp"||e.type==="MousePress"||e.type==="KeyDown"||e.type==="KeyUp"||e.type==="KeyPress"}g.is=A;function I(e){return e==="MouseDown"||e==="MouseUp"||e==="MousePress"?{type:e,mode:"Object",disabled:!1,runMode:"Once",actions:new _g}:{type:e,disabled:!1,key:void 0,runMode:"Once",actions:new _g}}g.defaultData=I})(vk||(vk={}));var Lc;(g=>{function A(I){return{type:"Property",value:[I??null,"position","x"]}}g.propertyDefaultData=A,g.valueDefaultData={type:"Literal",value:0}})(Lc||(Lc={}));var Qy;(g=>{function A(i){return{type:"Comparison",operator:"==",lOperand:Lc.propertyDefaultData(i),rOperand:{...Lc.valueDefaultData}}}g.comparisonDefaultData=A;function I(i){return{type:"Distance",toObject:i??null,fromObject:i??null,distance:200}}g.distanceDefaultData=I;function e(i,t){return{type:"State",object:i??null,state:t??null}}g.stateDefaultData=e})(Qy||(Qy={}));var qk;(g=>{function A(e){return e.type==="Conditional"}g.is=A;function I(e){return{type:"Conditional",disabled:!1,inActions:new _g,outActions:new _g,condition:Qy.distanceDefaultData(e)}}g.defaultData=I})(qk||(qk={}));var Lk;(g=>g.defaultData={type:"DragDrop",cursor:"hand",disabled:!1,dampingFactor:1,objects:[],snapTo:"center",snapSurfaceMode:"bbox",snapSurfaceOffset:0,dropOn:"all",autoOrient:!0,dropDestinations:[],plane:"adaptive",planeMode:"locked",referenceFrame:"global",limits:[-1/0,1/0,-1/0,1/0,-1/0,1/0],drop:!1,resetOnSnapFail:!1,snapSpeed:20,resetSpeed:20,dragDropActions:{drag:new _g,drop:new _g}})(Lk||(Lk={}));var Ey;(g=>g.defaultData={type:"Follow",disabled:!1,maxDelta:0,dampingFactor:1,target:"cursor",plane:"custom",resetOnPointerLeave:!0,resetAfterDistanceLimit:!0,enabledTranslation:[!0,!0,!0],limitDistanceEnabled:!1,limitDistance:1e3,snapDelay:0,resetSpeed:5,actions:new _g})(Ey||(Ey={}));var ny;(g=>g.defaultData={type:"LookAt",disabled:!1,distance:1e3,dampingFactor:1,target:"cursor",tilt:"up",axis:"z",plane:"custom",resetOnPointerLeave:!0,resetAfterDistanceLimit:!0,enabledRotation:[!0,!0,!0],limitDistanceEnabled:!1,limitDistance:1e3,snapDelay:0,resetSpeed:5})(ny||(ny={}));var bk;(g=>{function A(e){return e.type==="MouseHover"}g.is=A;function I(){return{type:"MouseHover",disabled:!1,actions:new _g}}g.defaultData=I})(bk||(bk={}));var Yk;(g=>{function A(e){return e.type==="Scroll"}g.is=A;function I(){return{type:"Scroll",disabled:!1,steps:100,trigger:"load",startFrom:"enter",enterAnchor:"top",startOffset:0,endAfter:400,actions:new _g}}g.defaultData=I})(Yk||(Yk={}));var xk;(g=>{function A(e){return e.type==="Start"}g.is=A;function I(){return{type:"Start",disabled:!1,actions:new _g}}g.defaultData=I})(xk||(xk={}));var Hk;(g=>{function A(e){return e.type==="Collision"}g.is=A;function I(){return{type:"Collision",disabled:!1,runMode:"Once",target:"character",actions:new _g}}g.defaultData=I})(Hk||(Hk={}));var Tk;(g=>{function A(e){return e.type==="Trigger"}g.is=A;function I(e,i){return{type:"Trigger",disabled:!1,runMode:"Once",target:"all",triggeringObjects:[],actions:new _g,triggerZone:"box",position:i.toArray(),rotation:[0,0,0],size:e.toArray(),radius:e.length()/2,helperVisible:!0}}g.defaultData=I})(Tk||(Tk={}));var hy;(g=>{g.defaultSizes={mobile:[480,480],tablet:[768,768],desktop:[1200,1200],custom:[769,1200]};function A(C){return C.type==="Resize"}g.is=A;function I(C){return typeof C=="string"?C:"custom"}g.sizeToDevice=I;function e(C){return typeof C=="string"?[...g.defaultSizes[C]]:[...C]}g.deviceToSize=e;function i(){let C={size:"mobile",operator:"<",actions:new _g},o={size:"tablet",operator:"<",actions:new _g},B={size:[...g.defaultSizes.custom],operator:"<>",actions:new _g},a=new _g;return a.push({id:vg.generateUUID(),fi:0,data:C},{id:vg.generateUUID(),fi:1,data:o},{id:vg.generateUUID(),fi:2,data:B}),{type:"Resize",disabled:!1,orientation:"horizontal",breakpoints:a}}g.defaultData=i;function t(){return{size:[...g.defaultSizes.custom],operator:"<>",actions:new _g}}g.defaultBreakpointData=t})(hy||(hy={}));var ly;(g=>{g.propertyPaths={Position:["position"],"Position X":["position","x"],"Position Y":["position","y"],"Position Z":["position","z"],Rotation:["rotation"],"Rotation X":["rotation","x"],"Rotation Y":["rotation","y"],"Rotation Z":["rotation","z"],Scale:["scale"],"Scale X":["scale","x"],"Scale Y":["scale","y"],"Scale Z":["scale","z"],Width:["width"],Height:["height"],Depth:["depth"],"Mouse Position X":["mouse","x"],"Mouse Position Y":["mouse","y"],"Mouse Pressed":["mouse","pressed"],"Screen Width":["mouse","width"],"Screen Height":["mouse","height"],"Hit Position X":["raycast","x"],"Hit Position Y":["raycast","y"],"Hit Position Z":["raycast","z"],"Hit Object Position X":["raycast","objX"],"Hit Object Position Y":["raycast","objY"],"Hit Object Position Z":["raycast","objZ"]};function A(e){return e.type==="VariableChange"}g.is=A;function I(){return{disabled:!1,type:"VariableChange",actions:new _g,variableId:"",objectId:null,property:"Position X"}}g.defaultData=I})(ly||(ly={}));var tE="personal camera",an="a218fcc3-276b-49b9-b485-49037fd14f5f",jW=2960946,CC=5526619,eQ;(g=>{function A(e,i){return e[0]===i[0]&&e[1]===i[1]}g.isEqual=A;function I(e,i,t){return[e[0]+(i[0]-e[0])*t,e[1]+(i[1]-e[1])*t]}g.lerp=I})(eQ||(eQ={}));var Gr;(g=>{function A(B,a){return B[0]===a[0]&&B[1]===a[1]&&B[2]===a[2]}g.isEqual=A;function I(B,a){return[B[0]+a[0],B[1]+a[1],B[2]+a[2]]}g.add=I;function e(B,a){return[B[0]-a[0],B[1]-a[1],B[2]-a[2]]}g.sub=e;function i(B,a){return[B[0]/a[0],B[1]/a[1],B[2]/a[2]]}g.div=i;function t(B,a){return[B[0]*a[0],B[1]*a[1],B[2]*a[2]]}g.mul=t;function C(B,a){return Math.hypot(B[0]-a[0],B[1]-a[1],B[2]-a[2])}g.dist=C;function o(B,a,s){return[B[0]+(a[0]-B[0])*s,B[1]+(a[1]-B[1])*s,B[2]+(a[2]-B[2])*s]}g.lerp=o})(Gr||(Gr={}));var bc;(g=>{function A(e,i){return e[0]===i[0]&&e[1]===i[1]&&e[2]===i[2]&&e[3]===i[3]}g.isEqual=A;function I(e,i,t){return[e[0]+(i[0]-e[0])*t,e[1]+(i[1]-e[1])*t,e[2]+(i[2]-e[2])*t,e[3]+(i[3]-e[3])*t]}g.lerp=I})(bc||(bc={}));var NQ;(g=>{g.identity=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function A(i,t){for(let C=0;C<16;C++)if(i[C]!==t[C])return!1;return!0}g.isEqual=A;function I(i){return i??g.identity}g.simplify=I;function e(i,t){let C=t.slice(0);for(var o=0,B=t.length;o{function A(B){return typeof B=="object"&&typeof B.r=="number"&&typeof B.g=="number"&&typeof B.b=="number"}g.isRGB=A,g.white={r:1,g:1,b:1},g.red={r:1,g:0,b:0},g.black={r:0,g:0,b:0};function I(B){return{r:Math.round(B.r*255),g:Math.round(B.g*255),b:Math.round(B.b*255),a:1}}g.toRgb255a1=I;function e(B){return{r:B.r,g:B.g,b:B.b}}g.clone=e;function i(B){return B=Math.floor(B),{r:(B>>16&255)/255,g:(B>>8&255)/255,b:(B&255)/255}}g.fromHex=i;function t(B){return Math.round(B.r*255)*65536+Math.round(B.g*255)*256+Math.round(B.b*255)}g.toHex=t;function C(B,a){return B.r===a.r&&B.g===a.g&&B.b===a.b}g.equals=C;function o(B,a,s){return{r:B.r+(a.r-B.r)*s,g:B.g+(a.g-B.g)*s,b:B.b+(a.b-B.b)*s}}g.lerp=o})(_i||(_i={}));var MC;(g=>{g.white={..._i.white,a:1},g.transparent={..._i.white,a:0};function A(C){return{r:C[0],g:C[1],b:C[2],a:C[3]}}g.from0to1=A;function I(C,o){return{..._i.fromHex(C),a:o}}g.fromHexAndA=I;function e(C){return{r:Math.round(C.r*255),g:Math.round(C.g*255),b:Math.round(C.b*255),a:C.a}}g.toRgb255a1=e;function i(C,o){return _i.equals(C,o)&&C.a===o.a}g.equals=i;function t(C,o,B){return{r:C.r+(o.r-C.r)*B,g:C.g+(o.g-C.g)*B,b:C.b+(o.b-C.b)*B,a:C.a+(o.a-C.a)*B}}g.lerp=t})(MC||(MC={}));var cy;(g=>g.identity={position:[0,0,0],rotation:[0,0,0],scale:[1,1,1]})(cy||(cy={}));var Ok;(g=>g.defaultData={mass:1,stiffness:80,damping:10,velocity:0})(Ok||(Ok={}));var _k;(g=>g.defaultData={control1:[.5,0],control2:[.5,1]})(_k||(_k={}));var Ia;(g=>(g.linear=[0,0,1,1],g.ease=[.25,.1,.25,1],g.easeIn=[.42,0,1,1],g.easeOut=[0,0,.58,1],g.easeInOut=[.42,0,.58,1]))(Ia||(Ia={}));function WW(g){return typeof g=="string"&&g.length===36?/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(g):!1}var Kr;(g=>{g.all=["PerspectiveCamera","OrthographicCamera"];function A(I){return g.all.includes(I)}g.is=A})(Kr||(Kr={}));var FQ;(g=>{g.DefaultUp=[0,1,0],g.DefaultTargetOffset=1e3,g.defaultData={far:1e5,type:"OrthographicCamera",perspective:{near:70,fov:45,zoom:1},orthographic:{near:-1e5,zoom:1},up:g.DefaultUp,isUpVectorFlipped:!1,targetOffset:g.DefaultTargetOffset};function A(I){return I.type==="PerspectiveCamera"?I.perspective.zoom:I.orthographic.zoom}g.getZoom=A})(FQ||(FQ={}));var ra;(g=>{function A(e,i=.1){return{disabled:!1,type:"linear",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]},toObject:{object:"",spreadType:"random",scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],axis:"x",seed:0,count:99,align:"normal"},linear:{scale:[1,1,1],rotation:[0,0,0],position:[e[0]+e[0]*i,0,0]},grid:{count:[2,2,2],size:e.map(t=>t*(1+i)),useCenter:!0},randomness:!1,randomnessObject:{strength:100,scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],movement:1,seed:0,freqScale:10,noiseType:"perlin"}}}g.defaultData=A;function I(e,i){let t={...e};if(yR.forEach(C=>{Object.assign(t,{[C]:i[C]??e[C]})}),t.radial={...e.radial},i.radial){let C=e.radial,o=i.radial;wR.forEach(B=>{Object.assign(t.radial,{[B]:o[B]??C[B]})})}if(t.linear={...e.linear},i.linear){let C=e.linear,o=i.linear;SR.forEach(B=>{Object.assign(t.linear,{[B]:o[B]??C[B]})})}if(t.grid={...e.grid},i.grid){let C=e.grid,o=i.grid;fR.forEach(B=>{Object.assign(t.grid,{[B]:o[B]??C[B]})})}if(t.toObject={...e.toObject},i.toObject){let C=e.toObject,o=i.toObject;GR.forEach(B=>{Object.assign(t.toObject,{[B]:o[B]??C[B]})})}if(t.randomnessObject={...e.randomnessObject},i.randomnessObject){let C=e.randomnessObject,o=i.randomnessObject;kR.forEach(B=>{Object.assign(t.randomnessObject,{[B]:o[B]??C[B]})})}return t}g.merge=I})(ra||(ra={}));var Dy;(g=>{g.defaultData={radial:{},linear:{},grid:{},toObject:{},randomnessObject:{}};let A=["radial","linear","grid","toObject","randomnessObject"];function I(e,i){let t=[];e.count!==void 0&&t.push({type:0,path:i,props:{count:e.count}});for(let C of A){let o=e[C];o&&Object.keys(o).length>0&&t.push({type:0,path:[...i,C],props:o})}return t}g.toOps=I})(Dy||(Dy={}));var yR=["count"],wR=["radius","start","end","position","scale","rotation"],SR=["position","scale","rotation"],fR=["count","size"],GR=["count","position","scale","rotation"],kR=["strength","scale","rotation","position","movement","seed","freqScale"],dy;(g=>{g.all=["PointLight","SpotLight","DirectionalLight","HemisphereLight"];function A(I){return g.all.includes(I)}g.is=A})(dy||(dy={}));var uy;(g=>{function A(e){return I(e)}g.defaultData=A;function I(e){if(e==="PointLight")return{type:e,color:MC.white,intensity:1,distance:2e3,decay:1,shadows:!0,shadowResolution:1024,shadowRadius:1,penumbraSize:.5,depth:1e5};if(e==="SpotLight")return{type:e,color:MC.white,intensity:1,distance:2e3,decay:1,shadows:!0,penumbra:0,angle:30/180*Math.PI,depth:1e5,penumbraSize:.5,shadowResolution:1024,shadowRadius:1};if(e==="DirectionalLight")return{type:e,color:MC.white,intensity:1,shadows:!0,size:2e3,depth:1e5,penumbraSize:.5,shadowResolution:1024,shadowRadius:1};throw new Error("not implemented")}})(uy||(uy={}));var RQ;(g=>g.defaultData={enabled:"visibility",fusedBody:!0,rigidBody:"positioned",density:1,pointMass:0,gravityScale:1,friction:.5,damping:0,restitution:.2,colliderType:"convex",enabledRotation:[!0,!0,!0],enabledTranslation:[!0,!0,!0]})(RQ||(RQ={}));var py;(g=>{g.defaultData={castShadow:!0,receiveShadow:!0};function A(I,e){return I.castShadow===e.castShadow&&I.receiveShadow===e.receiveShadow}g.equals=A})(py||(py={}));var yy;(g=>{g.defaultData={flatShading:!1,wireframe:!1,side:0};function A(I,e){return I.flatShading===e.flatShading&&I.side===e.side&&I.wireframe===e.wireframe}g.equals=A})(yy||(yy={}));var wy;(g=>g.defaultData={...yy.defaultData,...py.defaultData})(wy||(wy={}));var Pk;(g=>{function A(I,e){var t,C;let i=[];if("material"in I){let o=typeof I.material=="string"?e.materials[I.material]??((t=e.lib.materials[I.material])==null?void 0:t.asset):I.material;o&&i.push(o)}else if("materials"in I)for(let o of I.materials){let B=typeof o=="string"?e.materials[o]??((C=e.lib.materials[o])==null?void 0:C.asset):o;B&&i.push(B)}return i}g.getMaterialData=A})(Pk||(Pk={}));var Yc;(g=>(g.defaultVideo={data:"",thumb:"/_assets/_videos/catThumb.png",type:"video",name:"Cat video"},g.maxSize=3e7))(Yc||(Yc={}));var jk;(g=>{function A(I){return I==="texture"||I==="video"||I==="color"||I==="depth"||I==="normal"||I==="gradient"||I==="noise"||I==="fresnel"||I==="rainbow"||I==="toon"||I==="outline"||I==="transmission"||I==="matcap"||I==="displace"||I==="pattern"||I==="light"}g.is=A})(jk||(jk={}));function ZW(g){return g.type!=="displace"}var Wk;(g=>{function A(I){return I==="phong"||I==="toon"||I==="lambert"||I==="physical"}g.is=A})(Wk||(Wk={}));var MR=["mode","gradientType","noiseType","displacementType","projection","cnormal","crop","axis","side"],VW=["wrapping","image","video","name"],Bt;(g=>{function A(t,C){let{texture:o,...B}=C;if(Object.assign(t,B),o){let a=t.texture;a&&Object.assign(a,o)}}g.patch=A;function I(t,C){return t==="light"&&C?e(C):i(t)}g.defaultData=I;function e(t){let C={mode:0,isMask:!1,visible:!0,bumpMap:void 0,bumpMapIntensity:5,roughnessMap:void 0,alphaOverride:1};switch(t){case"phong":return{...C,category:"phong",specular:{r:.2,g:.2,b:.2},shininess:5,type:"light",visible:!0,mode:0,occlusion:!0,alpha:.6};case"toon":return{...C,category:"toon",specular:{r:.2,g:.2,b:.2},shininess:10,type:"light",alpha:1};case"lambert":return{...C,category:"lambert",emissive:{r:0,g:0,b:0},type:"light",alpha:1,visible:!0,mode:0,occlusion:!0};case"physical":return{...C,category:"physical",roughness:.2,metalness:.2,reflectivity:.2,type:"light",alpha:1,visible:!0,mode:0,occlusion:!0}}}function i(t){let C={alpha:1,mode:0,isMask:!1,visible:!0};switch(t){case"texture":return{...C,type:"texture",size:[128,128],blending:0,axis:"x",side:2,projection:0,texture:{image:"image_0",wrapping:1e3,repeat:[1,1],offset:[0,0]},crop:!1};case"video":return{...C,type:"video",size:[128,128],blending:0,axis:"x",side:2,projection:0,texture:{video:Yc.defaultVideo,wrapping:1001,repeat:[1,1],offset:[0,0]},crop:!1};case"color":return{...C,type:"color",color:_i.fromHex(CC)};case"depth":return{...C,type:"depth",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{...C,type:"normal",cnormal:[1,1,1]};case"gradient":return{...C,type:"gradient",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{...C,type:"noise",size:[100,100,100],noiseType:0,scale:1,move:1,colorA:{..._i.fromHex(6710886),a:1},colorB:{..._i.fromHex(6710886),a:1},colorC:{..._i.fromHex(16777215),a:1},colorD:{..._i.fromHex(16777215),a:1},distortion:[1,1],fA:[1.7,9.2],fB:[8.3,2.8],voronoiStyle:0,highCut:1,lowCut:0,smoothness:.3,seed:0,quality:1};case"fresnel":return{...C,type:"fresnel",color:MC.fromHexAndA(16777215,1),bias:.1,scale:1,intensity:2,factor:1};case"rainbow":return{...C,type:"rainbow",filmThickness:30,movement:0,wavelengths:[0,0,0],noiseStrength:0,noiseScale:1,offset:[0,0,0]};case"toon":return{...C,type:"toon",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:MC.fromHexAndA(0,0),offset:[0,0,0]};case"outline":return{...C,type:"outline",outlineColor:MC.fromHexAndA(0,1),contourColor:MC.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{...C,type:"matcap",texture:{image:"matcap_0",wrapping:1001,repeat:[1,1],offset:[0,0]}};case"transmission":return{...C,type:"transmission",thickness:10,ior:1.5,roughness:1};case"displace":return{visible:!0,type:"displace",displacementType:"noise",noiseType:0,scale:10,movement:1,offset:[0,0,0],intensity:8,voronoiStyle:0,smoothness:.3,seed:0,highCut:1,lowCut:0,quality:1};case"pattern":return{...C,type:"pattern",style:0,projection:0,axis:"y",blending:0,offset:[0,0],colorA:{..._i.fromHex(0),a:1},colorB:{..._i.fromHex(16777215),a:1},frequency:[10,10],size:.5,variation:0,smoothness:.5,zigzag:0,rotation:0,vertical:[0,1],horizontal:[0,1],sides:6}}}})(Bt||(Bt={}));var Ki;(g=>{function A(a){return!a.layers.some(s=>s.data.type==="texture"&&s.data.projection!==0||s.data.type==="depth"&&!s.data.isWorldSpace||s.data.type==="noise"||s.data.type==="displace")}g.isMergable=A;function I(a){let s="";return a.layers.forEach(r=>{Object.entries(r.data).forEach(([Q,E])=>{s+=`${Q}${E}`,Array.isArray(E)?E.forEach(n=>s+=`${n}`):typeof E=="object"?Object.values(E).forEach(n=>{typeof n=="number"?s+=`${n.toFixed(4)}`:s+=`${n}`}):s+=`${E}`})}),s}g.getHash=I;function e(){return{layers:new _g}}g.defaultEmptyData=e;function i(a="layer1",s="layer2"){return C("phong",a,s)}g.defaultData=i;function t(a,s){return{...a,name:s}}g.withName=t;function C(a,s="layer1",r="layer2"){let Q=new _g;return Q.push({fi:0,data:Bt.defaultData("light",a),id:s}),Q.push({fi:1,data:Bt.defaultData("color"),id:r}),{layers:Q}}g.defaultTwoLayerData=C;function o(a,s="phong",r="layer1",Q="layer2"){let E=Bt.defaultData("texture");Object.assign(E.texture,{image:a});let n=new _g;return n.push({fi:0,data:E,id:r}),n.push({fi:1,data:Bt.defaultData("light",s),id:Q}),{layers:n}}g.defaultTwoLayerTextureData=o;function B(a,s="phong",r="layer1",Q="layer2"){let E=Bt.defaultData("video");Object.assign(E.texture,{video:a});let n=new _g;return n.push({fi:0,data:E,id:r}),n.push({fi:1,data:Bt.defaultData("light",s),id:Q}),{layers:n}}g.defaultTwoLayerVideoTextureData=B})(Ki||(Ki={}));var xc;(g=>{function A(){return{points:new _g,roundness:0,shapeHoles:[],isClosed:!1}}g.defaultData=A})(xc||(xc={}));var Hc;(g=>{function A(){return{points:new _g,lastInsertionPlane:null,subdivisions:12,isClosed:!1}}g.defaultData=A})(Hc||(Hc={}));var mR={type:"Ellipse",width:50,height:50,spikes:16,angle:360,innerRadius:0},Sy;(g=>{function A(I,e){let i={...I};return NR.forEach(t=>{Object.assign(i,{[t]:e[t]??I[t]})}),i}g.merge=A})(Sy||(Sy={}));var UR={shape:mR,depth:1,offset:0,bevel:50,bevelSides:6,angle:0,twist:0,startScale:1,endScale:1,capType:"flat"},NR=["depth","offset","angle","twist","startScale","endScale"],Tc;(g=>{function A(e){return e==="PolygonGeometry"||e==="RectangleGeometry"||e==="StarGeometry"||e==="TriangleGeometry"||e==="EllipseGeometry"}g.is2DParametricMesh=A;function I(e){return e==="PolygonGeometry"||e==="PolygonGeometry"||e==="RectangleGeometry"||e==="StarGeometry"||e==="TriangleGeometry"||e==="EllipseGeometry"||e==="PathGeometry"||e==="VectorGeometry"||e==="ConeGeometry"||e==="CubeGeometry"||e==="CylinderGeometry"||e==="DodecahedronGeometry"||e==="HelixGeometry"||e==="IcosahedronGeometry"||e==="LatheGeometry"||e==="PyramidGeometry"||e==="SphereGeometry"||e==="PlaneGeometry"||e==="BackdropGeometry"||e==="TorusGeometry"||e==="TorusKnotGeometry"||e==="BooleanGeometry"||e==="TextGeometry"}g.isParametricMesh=I})(Tc||(Tc={}));var fy;(g=>{function A(I,e){let i={...I};return Object.assign(i,e),i.type==="PathGeometry"&&"extrusion"in e&&e.extrusion&&(i.extrusion={...I.extrusion},Object.assign(i.extrusion,Sy.merge(i.extrusion,e.extrusion))),i}g.merge=A})(fy||(fy={}));var rQ;(g=>{function A(I){if(I==="RectangleGeometry")return{width:320,height:320,type:I,cornerRadius:[0,0,0,0],cornerType:0,depth:0,extrudeBevelSize:0,extrudeBevelSegments:1};if(I==="PathGeometry")return{type:I,width:1,height:1,depth:1,path:Hc.defaultData(),extrusion:UR};if(I==="VectorGeometry")return{width:1,height:1,type:I,subdivisions:12,shape:xc.defaultData(),depth:0,extrudeBevelSize:0,extrudeBevelSegments:1};if(I==="BooleanGeometry")return{type:I,operation:2,width:0,height:0,depth:0,phongAngle:35};if(I==="TextGeometry")return{type:I,width:100,height:100,depth:0,horizontalAlign:1,verticalAlign:1,fontSize:16,lineHeight:1.2,letterSpacing:0,text:{textValue:""},textTransform:1,font:"Roboto_regular",extrudeBevelSize:0,extrudeBevelSegments:1};if(I==="SphereGeometry")return{type:"SphereGeometry",width:100,height:100,depth:100,widthSegments:64,heightSegments:64,phiStart:0,phiLength:2*Math.PI,thetaStart:0,thetaLength:180};throw new Error("not implemented")}g.defaultData=A})(rQ||(rQ={}));var Zk=["width","height","depth"],Gy;(g=>g.defaultData={enabled:!1,useBackgroundColor:!1,color:_i.white,near:.1,far:2e3})(Gy||(Gy={}));var Oc;(g=>{let A={opacity:1,blendFunction:13,enabled:!1};g.defaultData={enabled:!1,pixelation:{...A,blendFunction:16,granularity:15},bloom:{...A,blendFunction:16,intensity:1,blurScale:1,luminanceThreshold:.25,luminanceSmoothing:.025,kernelSize:3},chromaticAberration:{...A,offset:[2,2]},vignette:{...A,darkness:1,offset:0},hueSaturation:{...A,hue:3,saturation:0},brightnessContrast:{...A,brightness:.25,contrast:0},depthOfField:{...A,focalLength:2,focusDistance:2,bokehScale:2},noise:{...A,blendFunction:16}}})(Oc||(Oc={}));var ky;(g=>g.defaultData={softShadowQuality:"low"})(ky||(ky={}));var My;(g=>g.defaultData={enabled:!0,color:{r:.8274509803921568,g:.8274509803921568,b:.8274509803921568},intensity:.75})(My||(My={}));var my;(g=>g.defaultData={occlusion:!1,aoFullRes:!1,radius:256,bias:.5,aoColor:{r:.19607843137254902,g:.19607843137254902,b:.19607843137254902}})(my||(my={}));var KQ;(g=>g.defaultData={usePhysics:!1,gravity:-10})(KQ||(KQ={}));var Uy;(g=>g.defaultData={playCamera:tE,gameControlObject:null})(Uy||(Uy={}));var Ny;(g=>g.defaultData={backgroundColor:MC.fromHexAndA(jW,1),postprocessing:Oc.defaultData,fog:Gy.defaultData,globalPhysics:KQ.defaultData,ambient:My.defaultData,ao:my.defaultData,shadow:ky.defaultData,publish:Uy.defaultData})(Ny||(Ny={}));var Vk;(g=>{function A(e){return e==="Component"||e==="Instance"}g.isComponentRelated=A;function I(e){return e==="Empty"||e==="Instance"}g.isEmptyOrComponent=I})(Vk||(Vk={}));var JQ;(g=>{g.identity={...cy.identity,hiddenMatrix:NQ.identity};function A(i){return{position:i.position,rotation:i.rotation,scale:i.scale,hiddenMatrix:i.hiddenMatrix}}g.fromObject=A;function I(i,t){return{position:(t==null?void 0:t.position)||i.position,rotation:(t==null?void 0:t.rotation)||i.rotation,scale:(t==null?void 0:t.scale)||i.scale,hiddenMatrix:(t==null?void 0:t.hiddenMatrix)||i.hiddenMatrix}}g.merge=I;function e(i,t){return iW({position:Gr.isEqual(i.position,t.position)?void 0:t.position,rotation:Gr.isEqual(i.rotation,t.rotation)?void 0:t.rotation,scale:Gr.isEqual(i.scale,t.scale)?null:t.scale,hiddenMatrix:NQ.isEqual(i.hiddenMatrix,t.hiddenMatrix)?void 0:t.hiddenMatrix})}g.diff=e})(JQ||(JQ={}));var Xi;(g=>g.defaultData={states:new _g,events:new _g,visible:!0,raycastLock:!1,physics:RQ.defaultData,pathSnapping:{pathId:null,slide:0,offset:0,orientation:"tangential"},...JQ.identity,cloner:null})(Xi||(Xi={}));var Fy;(g=>g.defaultData={type:"Empty",...Xi.defaultData})(Fy||(Fy={}));var zk;(g=>g.defaultData={type:"Component",...Xi.defaultData})(zk||(zk={}));var sQ;(g=>g.defaultData={type:"Mesh",...Xi.defaultData,...wy.defaultData})(sQ||(sQ={}));var mn;(g=>g.defaultData={...Xi.defaultData,...JQ.identity,position:[0,0,FQ.DefaultTargetOffset],...FQ.defaultData})(mn||(mn={}));var Ry;(g=>{function A(I){return{...Xi.defaultData,...uy.defaultData(I)}}g.defaultData=A,g.defaultDirectionalLightData={...g.defaultData("DirectionalLight"),position:[200,300,300],name:"Directional Light",intensity:.7}})(Ry||(Ry={}));var _c;(g=>{function A(e,i,t=0){for(;t{g.rootOverrideProps=["physics","events"],g.compositeNonOptionalOverrideProps=["geometry"],g.compositeEntireOverrideOverrideProps=["material"];function A(e,i){return{...Xi.defaultData,...i,component:e,overrides:new Ci,physics:void 0,events:void 0,type:"Instance"}}g.ofComponent=A;function I(e){let i=JQ.fromObject(e.data);return A(e.id,i)}g.fromComponentData=I})(sa||(sa={}));var vQ;(g=>g.defaultData={type:"Page",...Xi.defaultData,physics:{...RQ.defaultData,fusedBody:!1},...Ny.defaultData,camera:mn.defaultData})(vQ||(vQ={}));var Ky;(g=>(g.defaultCamera={position:[0,0,1e3],scale:[1,1,1],rotation:[0,0,0],hiddenMatrix:NQ.identity,name:"Play Camera",visible:!0,raycastLock:!1,physics:RQ.defaultData,states:new _g,events:new _g,cloner:null,pathSnapping:{pathId:null,orientation:"tangential",slide:0,offset:0},...FQ.defaultData},g.KeysByResetCategory={States:["states"],Events:["events"],Material:["material","materials"],Geometry:["geometry"],Position:["position"],Rotation:["rotation"],Scale:["scale"],Transform:["position","scale","rotation","hiddenMatrix"],Name:["name"],Visibility:["visible","raycastLock","flatShading","wireframe","side"],Shadows:["castShadow","receiveShadow"],Cloner:["cloner"],Physics:["physics"]},g.defaultMeshObject={name:"Rectangle",...Xi.defaultData,...sQ.defaultData,geometry:rQ.defaultData("RectangleGeometry"),material:Ki.defaultTwoLayerData("phong","layer1","layer2")},g.defaultBooleanObject={name:"Boolean",...Xi.defaultData,...sQ.defaultData,geometry:rQ.defaultData("BooleanGeometry"),material:Ki.defaultTwoLayerData("phong","layer1","layer2")},g.defaultTextObject={name:"Text",...Xi.defaultData,...sQ.defaultData,geometry:rQ.defaultData("TextGeometry"),material:Ki.defaultTwoLayerData("phong","layer1","layer2")}))(Ky||(Ky={}));var cr;(g=>{function A(t,C){let o={name:C};return t.type==="Mesh"?(o.geometry={},"material"in t&&(o.material={layers:new Ci}),"materials"in t&&(o.materials=t.materials.map(B=>({layers:new Ci})))):Kr.is(t.type)&&(o.perspective={},o.orthographic={}),o}g.newEmpty=A;function I(t,C){if(C===void 0)return t;let o={...t};return"material"in o&&"material"in C&&C.material&&(o.material=Mn(o.material,B=>{if(typeof B!="string")for(let[a,s]of Object.entries(C.material.layers)){let r=B.layers.data(a);r&&Bt.patch(r,s)}}).data),o.materials&&C.materials&&(o.materials=Mn(o.materials,B=>{var a,s;for(let r=0;r0){let c={path:[...r,"layers",E,"texture"],props:h,type:0};B.push(c)}if(Object.keys(l).length>0){let c={path:[...r,"layers",E],props:l,type:0};B.push(c)}}}for(let[r,Q]of Object.entries(C))if(r!=="name")if(r==="cloner")B.push(...Dy.toOps(Q,["cloner"]));else if(r==="pathSnapping")B.push({path:[r],props:{slide:Q.slide,offset:Q.offset},type:0});else if(r==="material")s(["material"],Q);else if(r==="materials")for(let[E,n]of Object.entries(Q))s(["materials",E],n);else if(a[r]===0){if(r==="geometry"&&Q.extrusion!==void 0){let E={path:[r,"extrusion"],props:Q.extrusion,type:0};B.push(E),Q={...Q},delete Q.extrusion}if(Object.keys(Q).length>0){let E={path:[r],props:Q,type:0};B.push(E)}}else o===void 0&&(o={path:[],props:{},type:0},B.push(o)),o.props[r]=Q;return B}g.toOps=e;function i(t,C){var B,a,s,r,Q,E;if(C===void 0)return t;let o={...t};if(Object.assign(o,JQ.merge(o,C)),Object.assign(o,{pathSnapping:Object.assign({},o.pathSnapping,{slide:((B=C.pathSnapping)==null?void 0:B.slide)??((a=o.pathSnapping)==null?void 0:a.slide)??0,offset:((s=C.pathSnapping)==null?void 0:s.offset)??((r=o.pathSnapping)==null?void 0:r.offset)??0})}),Kr.is(t.type)){o.orthographic={...o.orthographic},o.perspective={...o.perspective};let n=C;((Q=n.orthographic)==null?void 0:Q.zoom)!==void 0&&(o.orthographic.zoom=n.orthographic.zoom),((E=n.perspective)==null?void 0:E.zoom)!==void 0&&(o.perspective.zoom=n.perspective.zoom),n.isUpVectorFlipped!==void 0&&(o.isUpVectorFlipped=n.isUpVectorFlipped),n.targetOffset!==void 0&&(o.targetOffset=n.targetOffset)}else if(t.type==="Mesh")"geometry"in C&&Object.assign(o,{geometry:fy.merge(o.geometry,C.geometry)}),(C.material||C.materials)&&(o=I(o,C)),o.cloner&&"cloner"in C&&Object.assign(o,{cloner:ra.merge(o.cloner,C.cloner)});else if(t.type==="Empty")o.cloner&&"cloner"in C&&Object.assign(o,{cloner:ra.merge(o.cloner,C.cloner)});else if(dy.is(t.type)){let n=C;n.intensity!==void 0&&(o.intensity=n.intensity),n.color!==void 0&&(typeof n.color=="string"?o.color=n.color:o.color=_i.clone(n.color))}return o}g.patch=i})(cr||(cr={}));var Pc;(g=>g.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,hoverRotateDamping:.125,isTouchZoom:!0,orbitTouches:2,panTouches:3,resetHoverEffectOnPointerLeave:!0})(Pc||(Pc={}));var kr;(g=>g.defaultData={orbitControls:Pc.defaultData,playPage:an,withBackground:!0,preventScroll:!1,preventTouchScroll:!1,hideCursor:!1,mouseEventTarget:"canvas",joystickSizeAndXYOffset:Array(12).fill(0).map((A,I)=>{let e=0,i=0;return I<5?i=-30:I<10&&(i=30),I===0||I===10||I===5?e=30:(I===4||I===11||I===9)&&(e=-30),[120,[e,i],"show"]}),settings:{image:{format:"jpg",ratio:1},video:{format:"mp4",imageFormat:"jpg",fps:30,mbps:80,ratio:Math.max(1,typeof window<"u"?Math.floor(window.devicePixelRatio):1),stopMode:"manual",duration:5e3},web:{logo:!0,compress:!0,preset:1,preload:!0,hint:!1}},stopRaycast:!0,hdTransmission:!1})(kr||(kr={}));var Jy;(g=>g.defaultData={id:"basic",label:"Basic",style:"None",prompt:""})(Jy||(Jy={}));var vy;(g=>g.defaultData={weather:0,shadows:0,lightOrigin:0,temperature:0,sun:0,camera:0,environment:0,particles:0,nature:0,floor:0})(vy||(vy={}));var QQ;(g=>(g.defaultData=()=>({mode:"line-art-both",prompt:"",negativePrompt:"",style:{...Jy.defaultData},isRandomSeed:!0,seed:g.generateSeed(),guessMode:!1,advanced:!1,steps:20,guidanceScale:7.5,controlNetScale:1,modifiers:vy.defaultData}),g.generateSeed=()=>Math.round(Math.random()*1e5)))(QQ||(QQ={}));var Un;(g=>{function A(e){return e.find(i=>i.data.type==="Page"&&i.data.globalPhysics.usePhysics)!==void 0}g.physicsEnabled=A;function I(e,i,t){e.scene.objects.traverseFrom(i,(C,o)=>{var B;if(o.type==="Instance"){let a=(B=Vc.getComponentData(e,o.component))==null?void 0:B.data;a&&t(C,o,a.events)}else t(C,o,o.events)})}g.traverseModuleInstances=I})(Un||(Un={}));var EQ;(g=>{g.TRASH_CAN_ID="830a2708-8ed9-49cf-a68e-085299892222";function A(i={withLight:!0,withSquare:!0}){let t=[],C=Ky.defaultMeshObject;i.withLight===!0&&t.push({fi:-1,data:Ry.defaultDirectionalLightData,id:"830a2708-8ed9-49cf-a68e-085299899103",children:[]}),i.withSquare===!0&&t.push({fi:1,id:"7ba78968-2a55-48f2-b14c-5191da3e075e",data:C,children:[]});let o=new ht;return o.push({fi:1,id:an,data:{...vQ.defaultData,name:"Scene 1"},children:t}),o}g.defaultData={objects:A(),publish:kr.defaultData,styles:QQ.defaultData()},g.emptyDataWithoutPage=function(){return{objects:new ht,publish:kr.defaultData,styles:QQ.defaultData()}},g.emptyDataWithPage=function(i){return{objects:A(i),publish:kr.defaultData,styles:QQ.defaultData()}};function I(i){return{...g.defaultData,objects:SB(i,ht.prototype)}}g.withObjs=I;function e(i,t){return I([{id:i,data:t,children:[],fi:0}])}g.withObj=e})(EQ||(EQ={}));var rn;(g=>g.defaultData={preset:"fullscreen",allowResponsive:!1,size:[512,512],coords:[0,0],sceneScale:1,color:{r:0,g:0,b:0,a:.5}})(rn||(rn={}));var jc;(g=>g.emptyImage={data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVQYV2NgYAAAAAMAAWgmWQ0AAAAASUVORK5CYII=",name:"empty"})(jc||(jc={}));var Jt;(g=>{function A(C){return C.textValue!==void 0}g.isTextValue=A;function I(C){return typeof C=="number"}g.isNumber=I;function e(C){return typeof C=="boolean"}g.isBoolean=e;function i(C){return A(C)?"string":e(C)?"boolean":"number"}g.typeOfVariable=i;function t(C){return g.isTextValue(C)?Array.isArray(C.textValue)?C.textValue.map(o=>o.toString().padStart(C.padding??2,"0")).join(C.deliminator??":")+(C.suffix!==void 0?" "+C.suffix:""):C.textValue.toString():g.isBoolean(C)?C?"True":"False":g.isNumber(C)?parseFloat(C.toFixed(3)).toString():C.toString()}g.getDisplayedValue=t})(Jt||(Jt={}));var qy;(g=>g.all=["images","videos","colors","audios","fonts","materials","variables"])(qy||(qy={}));var Xk;(g=>g.all=[...qy.all,"components"])(Xk||(Xk={}));var $k;(g=>{function A(){return{images:new lI,videos:new lI,colors:new lI,audios:new lI,fonts:new lI,materials:new lI,components:new lI,variables:new lI}}g.defaultData=A})($k||($k={}));var qQ;(g=>{function A(){return{images:new lI,videos:new lI,colors:new lI,audios:new lI,fonts:new lI,materials:new lI,components:new lI,variables:new lI}}g.defaultData=A})(qQ||(qQ={}));var fC;(g=>{function A(){let C={};return C["89b10010-844c-11ec-a8a3-0242ac120002"]={r:.5,g:.5,b:.5,a:1,name:"Default Color"},SB(C,lI.prototype)}g.defaultColors=A;function I(C){let o={};return C!=null&&C.withAITexture&&(o["a1b10010-844c-a8a3-11ec-0242ac2011ec"]={...jc.emptyImage,name:"AI generated image"}),SB(o,lI.prototype)}g.defaultImages=I;function e(){return{catelogs:new lI,materials:new lI,images:new lI,videos:new lI,colors:new lI,audios:new lI,fonts:new lI,variables:new _g,lib:qQ.defaultData()}}g.emptyData=e;function i(C){switch(C){case"number":return{value:0,name:"Number"};case"boolean":return{value:!1,name:"Boolean"};case"string":return{value:{textValue:"String value"},name:"String"};case"time":let o=[0,0,0];return{name:"Time",value:{textValue:o,deliminator:":",padding:2,suffix:"AM"},dynamicVariableType:"time",format:"HH:mm:ss",format12h24h:"12ampm",timeZone:null,hasEnd:!1,endValue:{textValue:o,deliminator:":",padding:2,suffix:"AM"},autoStart:!0,repeat:!1};case"counter":return{name:"Counter",value:0,dynamicVariableType:"counter",updateInterval:1e3,increment:1,autoStart:!0,hasEnd:!0,endValue:60,repeat:!0,randomStart:!1,range:[0,100],decimals:0};case"random":return{name:"Random",value:0,dynamicVariableType:"random",updateInterval:1e3,increment:1,autoStart:!0,isStatic:!1,hasEnd:!0,endValue:60,repeat:!0,min:0,max:100,decimals:0};default:console.error("Unknown variable type",C)}}g.defaultVariables=i;function t(C,o){if(o.format==="HH:mm:ss"){let B=Math.floor(C/3600),a=Math.floor((C-B*3600)/60),s=Math.round(C-B*3600-a*60);return{textValue:[B,a,s]}}else if(o.format==="mm:ss"){let B=Math.floor(C/60),a=Math.round(C-B*60);return{textValue:[B,a]}}else return o.format==="number"?C=Math.round(C):C=Math.round(C*1e3)/1e3,C}g.getFormattedTimerTime=t})(fC||(fC={}));var Wc;(g=>g.list=["idle","move","jump","run"])(Wc||(Wc={}));var Zc;(g=>(g.defaultColliderData={type:"capsule",height:200,radius:50,position:[0,0,0],rotation:[0,0,0]},g.defaultDataThirdPerson={moveMode:"walk",forwardDirection:"+z",speedTranslate:1e3,speedRotate:100,runMultiplier:2,rotationMode:"normal",rotBy:"keys",rotByTouch:"drag",delayPos:[.3,.3],delayRot:[.3,.3],keyAssignments:[["moveNegZ","W"],["moveNegX","A"],["movePosZ","S"],["movePosX","D"],["rotPosX","▲"],["rotPosY","◀"],["rotNegX","▼"],["rotNegY","▶"],["jump","Space"],["run","⇧"],["none","Ctrl"]],touchControl:!0,joystickPosLoc:5,joystickRotLoc:11,jumpTouchButtonLoc:9,collider:g.defaultColliderData,colliderHelperVisible:!0,collisionEnabled:!0,jumpPower:100,resetYPosition:3e3,alignToGround:!1,autoOrientMove:!0,orientWith:"camera",orientMode:"radial",delayPosCamera:.3,delayRotCamera:.3,camera:"",cameraXAxis:"Limit",cameraYAxis:"Free",cameraRotXLimits:[0,Math.PI/2],cameraRotYLimits:[-Math.PI/2,Math.PI/2],gameActions:{idle:new _g,move:new _g,jump:new _g,run:new _g},navmesh:{enabled:!1,ch:6,cs:6,walkableClimb:5,walkableHeight:1,walkableRadius:0,zones:"all",objects:[],helperVisible:!0,destinationHelperRadius:0,destinationHelperColor:MC.fromHexAndA(3728051,1)}}))(Zc||(Zc={}));function AM(g){g.layers.forEach(A=>{if(A.type==="depth"&&A.colorA!==void 0){let I=A.colorA,e=A.colorB,i=[[I.r,I.g,I.b,I.a],[e.r,e.g,e.b,e.a]],t=[0,1];for(let o=2;o<10;o++)i.push(i[1]),t.push(1);let C={...dB(We(A),"type","visible","isVector","isWorldSpace","origin","alpha","mode"),near:Math.max(0,A.near),far:Math.max(0,A.far),colors:i,steps:t,num:2,direction:[1,0,0],smooth:!1,gradientType:1};Object.assign(A,C)}else if(A.type==="depth"&&A.gradientType===1&&(A.near<0||A.far<0)){let I={...We(A),near:Math.max(A.near,0),far:Math.max(A.far,0)};Object.assign(A,I)}})}function ea(g,A){Object.values(g.shared.materials).forEach(I=>A(I))}function ia(g,A){g.scene.objects.traverse((I,e)=>{"materials"in e?e.materials.forEach((i,t)=>{i===void 0&&(e.materials[t]=Ki.defaultData(),i=e.materials[t]),typeof i!="string"&&A(i)}):"material"in e?typeof e.material!="string"&&(e.material===void 0&&(e.material=Ki.defaultData()),A(e.material)):e.type==="Mesh"&&(e.material===void 0&&(e.material=Ki.defaultData()),A(e.material)),"overrides"in e&&Object.values(e.overrides).forEach(i=>{i.material&&typeof i.material!="string"&&A(i.material)})})}function zW(g){Object.assign(g.scene.publish,{orbitControls:{...Pc.defaultData,...We(g.scene.publish.orbitControls)}})}function XW(g){Object.assign(g.scene.publish.settings,{video:{...kr.defaultData.settings.video,...We(g.scene.publish.settings.video)}})}function $W(g){function A(I){if(I.layers){for(let e of Object.values(I.layers))if(e){for(let[i,t]of Object.entries(e))if((MR.includes(i)||typeof t=="boolean")&&delete e[i],i==="texture")for(let[C,o]of Object.entries(t))(VW.includes(C)||typeof o=="boolean")&&delete t[C]}}}g.scene.objects.traverse((I,e)=>{e.states.forEach(i=>{let t=i;t.material?A(t.material):t.materials&&t.materials.forEach(C=>{A(C)})})})}function A5(g){g.scene.publish.withBackground=!0}function g5(g){g.scene.publish.settings.web={compress:!0,preload:!0,preset:1,logo:!0,hint:!1}}function I5(g){g.scene.objects.traverse((A,I)=>{let e=I.cloner;e&&(e.radial.scale=e.radial.scale.map(i=>i+1),e.linear.scale=e.linear.scale.map(i=>i+1))})}function e5(g){g.scene.objects.traverse((A,I)=>{let e=I.geometry;e&&(e.type==="DodecahedronGeometry"||e.type==="IcosahedronGeometry")&&(e.detail=Math.round(e.detail))})}function i5(g){g.scene.objects.traverse((A,I)=>{let e=g.scene.objects.unproxy().parent(A);if(e){let i=We(g.scene.objects.data(e));i&&i.type==="Mesh"&&i.geometry.type==="BooleanGeometry"&&I.type==="Mesh"&&(I.visible=We(I).booleanExclude!==!0)}})}function t5(g){g.scene.objects.traverse((A,I)=>{if(I.type==="Mesh"){let e=I;I.geometry.type==="NonParametricGeometry"?e.material!==void 0&&delete e.material:e.materials!==void 0&&delete e.materials}})}function C5(g){function A(e){Object.setPrototypeOf(e,Ci.prototype),e.texture&&Object.setPrototypeOf(e.texture,Ci.prototype)}function I(e){Object.setPrototypeOf(e,Ci.prototype);for(let i in e)A(e[i])}g.scene.objects.traverse((e,i)=>{i.states.forEach(t=>{let C=t;if(C.material){let o=We(C.material).layers;I(o),C.material.layers=o}if(C.materials)for(let o=0;o{if(A.type==="depth"&&A.colors.length===10){let I=[...A.colors];I.push(A.colors[9]);let e=[...A.steps];e.push(A.steps[9]);let i={...We(A),colors:I,steps:e};Object.assign(A,i)}})}function o5(g){g.scene.objects.traverse((A,I)=>{I.type==="Mesh"&&(I.geometry.type==="BooleanGeometry"||I.geometry.type==="SubdivGeometry")&&(I.geometry.phongAngle=35)})}function IM(g){g.scene.objects.traverse((A,I)=>{"materials"in I?I.materials.forEach(e=>{typeof e!="string"&&yu(e)}):"material"in I&&typeof I.material!="string"&&yu(I.material)}),Object.values(g.shared.materials).forEach(A=>yu(A))}function B5(g){g.scene.environment.ambientLight.softShadows=!1,g.scene.environment.ambientLight.softShadowQuality="low",g.scene.objects.traverse((A,I)=>{(I.type==="DirectionalLight"||I.type==="SpotLight")&&(I.shadowResolution=1024,I.shadowRadius=1,I.depth=1e5)}),g.shared.penumbraSize=new Array(5).fill(.5)}function a5(g){g.shared.audios=SB({},lI.prototype)}function r5(g){g.shared.videos=SB({},lI.prototype)}function s5(g){let A=g.shared.materials;Object.entries(A).forEach(([I,e])=>{if(!e.layers){let i={name:"Untitled Material",layers:[{fi:0,data:{type:"light",category:"phong",alpha:.6,visible:!0,mode:0,specular:{r:.2,g:.2,b:.2},shininess:5},id:"layer1"},{fi:1,data:{type:"color",alpha:1,visible:!0,mode:0,color:{r:.2823529411764706,g:.2823529411764706,b:.30196078431372547}},id:"layer2"}]};Object.assign(A,{[I]:i})}})}function Q5(g){Object.entries(We(g.shared.images)).filter(A=>A[1].asset===!1).map(A=>A[0]).forEach(A=>{delete g.shared.images[A]}),Object.entries(We(g.shared.audios)).filter(A=>A[1].asset===!1).map(A=>A[0]).forEach(A=>{delete g.shared.audios[A]})}function E5(g){g.scene.publish.settings.web.preload=!1}function eM(g){g.layers&&g.layers.forEach(A=>{A.type==="depth"&&A.num!==void 0&&(A.colors=A.colors.slice(0,A.num),A.steps=A.steps.slice(0,A.num),delete A.num)})}function iM(g){g.layers&&g.layers.forEach(A=>{ZW(A)&&A.isMask===void 0&&(A.isMask=!1),(A.type==="texture"||A.type==="video")&&A.blending===void 0&&(A.blending=0),(A.type==="noise"||A.type==="displace"&&A.displacementType==="noise")&&(A.voronoiStyle===void 0&&(A.voronoiStyle=0),A.highCut===void 0&&(A.highCut=1),A.lowCut===void 0&&(A.lowCut=0),A.smoothness===void 0&&(A.smoothness=.3),A.seed===void 0&&(A.seed=0),A.quality===void 0&&(A.quality=1))})}function n5(g){g.shared.fonts=SB({},lI.prototype)}function h5(g){return g.replace(".typeface","").replace(/optimer/gi,"open sans").replace("space_mono","space mono").replace(/alma_mono/gi,"varela round").replace(/droid_sans_mono/gi,"noto sans mono").replace(/droid_sans|gentilis|gnomon_(simple|foreground)|helvetiker/gi,"roboto").replace(/droid_serif/gi,"roboto slab").replace("_sans"," sans").replace("crimson_text","crimson text").replace("medium_medium","medium").replace("fatface_fatface","fatface").replace("100hairline","thin").replace("200thin","extralight").replace("300light","light").replace("500medium","medium").replace("600semi","semibold").replace("800heavy","extrabold").replace("900black","black").replace(/bodoni_(11|16|24|36|48|72|96)([^_])/gi,"bodoni_$1_$2").replace(/bodoni_(11|16|24|36|48|72|96)/gi,"bodoni moda").replace(/(thin|hairline)(_regular)?/gi,"100").replace(/(extra|ultra)light(_regular)?/gi,"200").replace(/light(_regular)?/gi,"300").replace(/_book|_normal|_roman/gi,"_regular").replace(/medium(_regular)?/gi,"500").replace(/(semi|demi)bold(_regular)?/gi,"600").replace(/(extra|ultra)bold(_regular)?/gi,"800").replace(/bold(_regular)?/gi,"700").replace(/(black|heavy|fatface)(_regular)?/gi,"900").replace(/([1-9]00)_italic/gi,"$1italic").replace(/regularitalic/gi,"italic").replace(/regularitalic/gi,"italic").split(" ").map(A=>A.charAt(0).toUpperCase()+A.slice(1)).join(" ")}function l5(g){let A=[];g.scene.objects.traverse((I,e)=>{let i=e;if(i.type==="TextFrame"){let t=Ki.defaultTwoLayerData("phong"),C=typeof i.color=="string"?g.shared.colors[i.color]:i.color;t.layers[1].data.color={r:C.r,g:C.g,b:C.b},t.layers[1].data.alpha=i.alpha;let o=h5(i.font);g.shared.fonts[o]===void 0&&(g.shared.fonts[o]={name:o});let B={name:i.name,...Xi.defaultData,...sQ.defaultData,flatShading:!1,wireframe:!1,geometry:{...rQ.defaultData("TextGeometry"),width:i.width,height:i.height,font:o,depth:0,horizontalAlign:i.horizontalAlign,verticalAlign:i.verticalAlign,fontSize:i.fontSize*1.40625,lineHeight:i.lineHeight/1.40625,letterSpacing:i.letterSpacing-1,text:i.text,textTransform:i.textTransform,extrudeBevelSize:0,extrudeBevelSegments:1},material:t,states:We(i.states),events:We(i.events),visible:i.visible,raycastLock:i.raycastLock,position:i.position,rotation:i.rotation,scale:i.scale,hiddenMatrix:i.hiddenMatrix},a=We(g.scene.objects).parent(I);g.scene.objects.insertAfter(a??null,I,[{id:I+"new",data:B,children:[]}]),A.push(I)}}),A.forEach(I=>{g.scene.objects.delete(I)})}function c5(g){let A={0:"MouseDown",1:"MouseUp",2:"MouseHover",5:"KeyDown",6:"KeyUp",7:"Start",9:"LookAt",10:"Follow",11:"Scroll",12:"Audio",13:"GameControl"};g.scene.objects.traverse((I,e)=>{e.events.forEach(i=>{if(A[Number(i.type)])if(Object.assign(i,{type:A[Number(i.type)]}),i.type==="Audio"&&"audioEvent"in i&&(Object.assign(i,{playAudio:i.audioEvent}),delete i.audioEvent),i.type==="GameControl")Object.assign(i,{gameActions:{idle:new _g,move:new _g,jump:new _g}});else{let t=new _g;Object.assign(i,{actions:t}),(i.type==="MouseDown"||i.type==="MouseUp"||i.type==="KeyDown"||i.type==="KeyUp")&&"url"in i&&t.push({fi:0,id:vg.generateUUID(),data:{type:"Link",url:i.url,delay:0}}),"targets"in i&&(i.targets.forEach((C,o,B)=>{let a={state:void 0,repeat:0,delay:0,delayDirection:void 0,direction:"normal",duration:0,easing:4},s={easing:C.easing,duration:C.duration};C.easing===6?Object.assign(s,dB(C,"mass","stiffness","damping","velocity")):C.easing===5&&Object.assign(s,{control1:{...C.control1},control2:{...C.control2}});let r={repeat:C.repeat?-1:0,delay:C.delay,delayDirection:C.delayDirection,direction:C.cycle&&C.rewind?"pingpong-rewind":C.cycle?"pingpong":"normal"},Q={state:C.state,...r,...s},E={allowSlerp:!0,type:"Transition",object:C.object,repeat:0,delay:0,delayDirection:void 0,direction:"normal",tweens:new _g({fi:0,id:vg.generateUUID(),data:a},{fi:1,id:vg.generateUUID(),data:Q})};t.push({fi:B,id:o,data:E})}),delete i.targets)}})})}function D5(g){g.scene.objects.traverse((A,I)=>{function e(i,t){var B;let C=new _g,o=[];if(I.events.forEach((a,s,r)=>{if(a.type==="Audio"&&a.trigger===t){let Q;o.push(s),a.interaction==="play"?Q={...dB(a,"interaction","audio","delay","volume","loop"),triggerAfter:"after"in a?a.after:void 0,toggle:"after"in a?a.toggle:void 0,type:"Audio"}:(a.interaction==="pause"||a.interaction==="stop")&&(Q={...dB(a,"interaction","delay","object","playAudio"),type:"Audio"}),Q&&C.push({fi:r,id:s,data:Q})}}),o.forEach(a=>I.events.delete(a)),C.length){let a=(B=I.events.find(s=>s.type===i))==null?void 0:B.data;a?"actions"in a&&a.actions.insertBefore(null,C):I.events.insertBefore(null,[{id:vg.generateUUID(),data:{type:i,actions:C}}])}}e("Start","start"),e("MouseDown","mouseDown"),e("MouseUp","mouseUp"),e("KeyDown","keyDown"),e("KeyUp","keyUp")})}function tM(g){var I;let A=(I=g.layers.find(e=>e.type==="light"))==null?void 0:I.data;if((A==null?void 0:A.category)==="basic"){let e=Bt.defaultData("light","phong"),i=A;Object.assign(i,e),i.visible=!1}}function CM(g){ea(g,tM),ia(g,tM)}function d5(g){g.scene.objects.traverse((A,I)=>{I.type==="Mesh"&&I.geometry.type==="SubdivGeometry"&&(I.geometry.scaleBaked||(I.geometry.scaleBaked=[1,1,1]))})}function u5(g){g.scene.objects.traverse((A,I)=>{(I.type==="Empty"||I.type==="Mesh")&&I.cloner&&!I.cloner.randomnessObject&&!I.cloner.toObject&&!I.cloner.randomness&&(I.cloner={...I.cloner,toObject:{object:"",spreadType:"random",scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],axis:"x",seed:0,count:99,align:"normal"},randomness:!1,randomnessObject:{strength:100,scale:[0,0,0],rotation:[0,0,0],position:[0,0,0],movement:1,seed:0,freqScale:10,noiseType:"perlin"}})})}function p5(g){g.scene.objects.traverse((A,I)=>{I.type==="Mesh"&&I.geometry.type==="NonParametricGeometry"&&!("material"in I)&&!("materials"in I)&&(I.material=Ki.defaultTwoLayerData("phong"))})}function y5(g){g.scene.publish.orbitControls.autoZoom===void 0&&(g.scene.publish.orbitControls.autoZoom=!1),g.scene.objects.traverse((A,I)=>{(I.type==="OrthographicCamera"||I.type==="PerspectiveCamera")&&(I.orthographic.autoZoom===void 0&&(I.orthographic.autoZoom=!1),I.orthographic.autoZoomFrustumSize===void 0&&(I.orthographic.autoZoomFrustumSize=790))})}function w5(g){g.scene.objects.traverse((A,I)=>{I.pathSnapping===void 0&&(I.pathSnapping={pathId:null,slide:0,offset:0,orientation:"tangential"}),I.pathSnapping.offset===void 0&&(I.pathSnapping.offset=0)})}function S5(g){g.scene.publish.mouseEventTarget===void 0&&(g.scene.publish.mouseEventTarget="canvas"),g.scene.publish.settings.web.hint===void 0&&(g.scene.publish.settings.web.hint=!1)}function f5(g){let{video:A}=g.scene.publish.settings;A.format==="gif"&&A.fps>48&&(A.fps=15)}function G5(g){g.scene.objects.traverse((A,I)=>{I.events.forEach(e=>{e.type==="GameControl"&&(e.resetYPosition=Math.abs(e.resetYPosition-I.position[1]))})})}function k5(g){let A=g.scene.environment.usePhysics;g.scene.objects.traverse((I,e)=>{A&&e.physics===null?e.collision=!1:e.collision="visibility"})}function M5(g){g.scene.objects.traverse((A,I)=>{I.events.forEach(e=>{e.type==="GameControl"&&(e.navmesh=Zc.defaultDataThirdPerson.navmesh)})})}function m5(g){g.scene.styles||(g.scene.styles=QQ.defaultData())}function oM(g){g.layers.forEach(A=>{A.type==="light"&&A.category!=="toon"&&A.occlusion===void 0&&(A.occlusion=!0)})}function U5(g){g.scene.environment.ambientLight.occlusion===void 0&&(g.scene.environment.ambientLight.occlusion=!1),g.scene.environment.ambientLight.aoFullRes===void 0&&(g.scene.environment.ambientLight.aoFullRes=!1),g.scene.environment.ambientLight.radius===void 0&&(g.scene.environment.ambientLight.radius=256),g.scene.environment.ambientLight.bias===void 0&&(g.scene.environment.ambientLight.bias=.5),g.scene.environment.ambientLight.aoColor===void 0&&(g.scene.environment.ambientLight.aoColor={r:.19607843137254902,g:.19607843137254902,b:.19607843137254902}),ia(g,oM),ea(g,oM)}function N5(g){g.scene.objects.traverse((A,I)=>{I.events.forEach(e=>{e.type==="GameControl"&&Object.assign(e.gameActions,{run:new _g})})})}function F5(g){g.scene.objects.traverse((A,I)=>{I.events.forEach(e=>{e.type==="GameControl"&&(e.keyAssignments=[...e.keyAssignments,["run","⇧"],["none","Ctrl"]])})})}function BM(g){g.layers&&g.layers.forEach(A=>{A.type==="light"&&A.bumpMapIntensity===void 0&&(A.bumpMapIntensity=5)})}function R5(g,A){if(A<1&&(ia(g,AM),ea(g,AM),g.schema=1),A<2&&(zW(g),g.schema=2),A<3&&($W(g),g.schema=3),A<4&&(A5(g),g.schema=4),A<5&&(g5(g),g.schema=5),A<6&&(I5(g),g.schema=6),A<7&&(e5(g),g.schema=7),A<8&&(g.schema=8),A<9&&(IM(g),g.schema=9),A<10&&(o5(g),g.schema=10),A<11&&(B5(g),g.schema=11),A<12&&(IM(g),g.schema=12),A<13&&(a5(g),g.schema=13),A<14&&(s5(g),g.schema=14),A<15&&(Q5(g),g.schema=15),A<16&&(E5(g),g.schema=16),A<17&&(ia(g,eM),ea(g,eM),g.schema=17),A<18&&(ia(g,gM),ea(g,gM),g.schema=18),A<19&&(XW(g),g.schema=19),A<20&&(n5(g),l5(g),g.schema=20),A<21&&(c5(g),D5(g),g.schema=21),A<22&&(CM(g),g.schema=22),A<23&&(d5(g),g.schema=23),A<24&&(u5(g),g.schema=24),(A<25||g.shared.videos===void 0)&&(r5(g),A<25&&(g.schema=25)),A<26&&(i5(g),g.schema=26),A<27&&(t5(g),g.schema=27),A<28&&(CM(g),g.schema=28),A<29&&(C5(g),g.schema=29),A<30&&(p5(g),g.schema=30),A<31&&(y5(g),g.schema=31),A<33&&(w5(g),g.schema=33),A<34&&(S5(g),g.schema=34),A<35&&(f5(g),g.schema=35),A<36&&(G5(g),g.schema=36),A<37&&(k5(g),g.schema=37),A<38&&(ia(g,iM),ea(g,iM),g.schema=38),A<39&&(M5(g),g.schema=39),A<40&&(m5(g),g.schema=40),A<41&&(U5(g),g.schema=41),A<42&&(N5(g),g.schema=42),A<43&&(F5(g),g.schema=43),A<99){ia(g,BM),ea(g,BM),g.scene.publish.playCamera===null&&(g.scene.publish.playCamera=tE);let I=We(g.scene.objects),e=g.scene.objects;g.scene.publish.playPage=an,e.insertBefore(null,null,[{id:an,data:{...vQ.defaultData,backgroundColor:g.scene.backgroundColor,fog:g.scene.fog,postprocessing:g.scene.postprocessing,ao:dB(g.scene.environment.ambientLight,"occlusion","aoFullRes","radius","bias","aoColor"),publish:{playCamera:g.scene.publish.playCamera,gameControlObject:g.scene.publish.gameControlObject},shadow:dB(g.scene.environment.ambientLight,"softShadowQuality"),globalPhysics:{...KQ.defaultData,...dB(g.scene.environment,"usePhysics","gravity")},camera:We(g.scene.ownerCamera)??vQ.defaultData.camera,name:"Scene"},children:[]}]);for(let C of I)C.id!==EQ.TRASH_CAN_ID&&e.move(an,C.fi,C.id);let i=0,t=0;g.shared.penumbraSize&&g.scene.objects.traverse((C,o)=>{o.type==="DirectionalLight"?(o.penumbraSize=g.shared.penumbraSize[Math.min(i,2)],i+=1):o.type==="SpotLight"&&(o.penumbraSize=g.shared.penumbraSize[3+Math.min(t,1)],t+=1),(o.physics===void 0||o.physics===null)&&o.type!=="Instance"&&(o.physics={},Object.assign(o.physics,RQ.defaultData)),o.physics!==void 0&&o.physics!==null&&(o.physics.enabled=o.collision??"visibility",delete o.collision)}),g.schema=99}}function aM(g){g.layers&&g.layers.forEach(A=>{A.type==="light"&&A.alphaOverride===void 0&&(A.alphaOverride=1)})}function K5(g){g.scene.objects.traverse((A,I)=>{let e=I.geometry;e&&e.type==="PathGeometry"&&(e.extrusion.capType="flat",e.extrusion.bevel=50,e.extrusion.bevelSides=6,e.extrusion.shape.type==="Custom"&&(e.extrusion.shape.shapeQuality="low"))})}var Ws=180/Math.PI;function rM(g){g.rotation=g.rotation.slice(0,3).map(A=>A*Ws)}function FR(g){var I,e;rM(g),g.type==="Page"&&rM(g.camera),(I=g.states)==null||I.forEach(i=>{i.rotation===void 0||i.rotation===null||(i.rotation=i.rotation.slice(0,3).map(t=>t*Ws))});let A=g.geometry;A&&A.type==="SphereGeometry"&&(A.thetaLength=A.thetaLength*Ws),A&&A.type==="TorusGeometry"&&(A.arc=A.arc*Ws),A&&A.type==="PathGeometry"&&(A.extrusion.angle*=Ws,A.extrusion.twist*=Ws),g.type==="Mesh"&&g.geometry.type==="TextGeometry"&&(g.geometry.text={textValue:g.geometry.text}),Array.isArray(We(g.events))&&((e=g.events)==null||e.forEach(i=>{(i.type==="MouseDown"||i.type==="MouseUp"||i.type==="MousePress"||i.type==="KeyDown"||i.type==="KeyUp"||i.type==="KeyPress"||i.type==="Collision"||i.type==="Trigger")&&(i.runMode=i.toggle?"Toggle":"Once")}))}function J5(g){g.shared.variables=SB({},lI.prototype)}function v5(g){let A=We(g.shared.variables);g.shared.variables=SB(Object.entries(A??{}).map(([I,e],i)=>({fi:i,id:I,data:e})),_g.prototype)}var ta=107;function RR(g,A){A(g.data);for(let I of g.children)RR(I,A)}function q5(g){let A=g.schema??104;A!==ta&&A<105&&(RR(g.asset,FR),g.schema=105)}function KR(g){let A=g.schema??0;if(A!==ta){console.warn("updating from ",A,"to ",ta),R5(g,A),A<100&&(g.scene.publish.joystickSizeAndXYOffset===void 0&&(g.scene.publish.joystickSizeAndXYOffset=kr.defaultData.joystickSizeAndXYOffset),g.schema=100),A<101&&(ia(g,aM),ea(g,aM),g.schema=101),A<102&&(K5(g),g.schema=102),A<104&&(g.shared.catelogs=new lI,g.shared.lib=qQ.defaultData(),g.schema=104),A<105&&(J5(g),g.scene.objects.traverse((I,e)=>{FR(e)}),g.schema=105);for(let I of Object.values(g.shared.lib.components))q5(I);A<106&&(v5(g),g.schema=106),A<107&&(g.shared.lib.variables=qQ.defaultData().variables,g.schema=107)}}var Vc;(g=>{g.defaultData={schema:ta,scene:EQ.defaultData,frames:new lI().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",rn.defaultData),shared:{...fC.emptyData(),colors:fC.defaultColors()}},g.emptyDataForImports=function(i){let t=EQ.emptyDataWithPage(i);return{schema:ta,scene:t,frames:new lI().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",rn.defaultData),shared:{...fC.emptyData(),colors:fC.defaultColors(),images:fC.defaultImages(i)}}},g.emptyData=function(){return{schema:ta,scene:EQ.emptyDataWithPage(),frames:new lI().add("72fc2993-2da3-4b6b-96ac-2879db3a28bd",rn.defaultData),shared:fC.emptyData()}},g.collabHelper={...Cy,updateSchema(i){return(i.schema??0)I&&(I=i,A=e)}return A}function EM(g,A){A.set(g)}function nM(g,A,I){let e,i;for(let t=0;t<3;t++){let C=t+3;e=g[t],i=A[t],I[t]=ei?e:i}}function Bl(g,A,I){for(let e=0;e<3;e++){let i=A[g+2*e],t=A[g+2*e+1],C=i-t,o=i+t;CI[e+3]&&(I[e+3]=o)}}function mE(g){let A=g[3]-g[0],I=g[4]-g[1],e=g[5]-g[2];return 2*(A*I+I*e+e*A)}function b5(g,A){if(!g.index){let I=g.attributes.position.count,e=A.useSharedArrayBuffer?SharedArrayBuffer:ArrayBuffer,i;I>65535?i=new Uint32Array(new e(4*I)):i=new Uint16Array(new e(2*I)),g.setIndex(new zg(i,1));for(let t=0;ti-t);for(let i=0;iB&&(B=M),c&&yn&&(n=y);let G=g[d+2],v=g[d+3],N=G-v,b=G+v;Na&&(a=b),c&&Gh&&(h=G);let O=g[d+4],H=g[d+5],_=O-H,gA=O+H;_s&&(s=gA),c&&Ol&&(l=O)}e[0]=t,e[1]=C,e[2]=o,e[3]=B,e[4]=a,e[5]=s,c&&(i[0]=r,i[1]=Q,i[2]=E,i[3]=n,i[4]=h,i[5]=l)}function x5(g,A,I,e){let i=1/0,t=1/0,C=1/0,o=-1/0,B=-1/0,a=-1/0;for(let s=A*6,r=(A+I)*6;so&&(o=Q);let E=g[s+2];EB&&(B=E);let n=g[s+4];na&&(a=n)}e[0]=i,e[1]=t,e[2]=C,e[3]=o,e[4]=B,e[5]=a}function H5(g,A,I,e,i){let t=I,C=I+e-1,o=i.pos,B=i.axis*2;for(;;){for(;t<=C&&A[t*6+B]=o;)C--;if(tg.candidate-A.candidate,OB=new Array(CB).fill().map(()=>({count:0,bounds:new Float32Array(6),rightCacheBounds:new Float32Array(6),leftCacheBounds:new Float32Array(6),candidate:0})),al=new Float32Array(6);function O5(g,A,I,e,i,t){let C=-1,o=0;if(t===0)C=QM(A),C!==-1&&(o=(A[C]+A[C+3])/2);else if(t===1)C=QM(g),C!==-1&&(o=_5(I,e,i,C));else if(t===2){let B=mE(g),a=1.25*i,s=e*6,r=(e+i)*6;for(let Q=0;Q<3;Q++){let E=A[Q],n=(A[Q+3]-E)/CB;if(i=f.candidate?Bl(d,I,f.rightCacheBounds):(Bl(d,I,f.leftCacheBounds),f.count++)}}for(let d=0;d=CB&&(d=CB-1);let u=OB[d];u.count++,Bl(c,I,u.bounds)}let h=OB[CB-1];EM(h.bounds,h.rightCacheBounds);for(let c=CB-2;c>=0;c--){let d=OB[c],u=OB[c+1];nM(d.bounds,u.rightCacheBounds,d.rightCacheBounds)}let l=0;for(let c=0;ck&&(k=u),y>k&&(k=y);let M=(k-f)/2,G=c*2;t[E+G+0]=f+M,t[E+G+1]=M+(Math.abs(f)+M)*L5,fA[c+3]&&(A[c+3]=k)}}return t}function j5(g,A){function I(c){Q&&Q(c/E)}function e(c,d,u,y=null,f=0){if(!n&&f>=B&&(n=!0,a&&(console.warn(`MeshBVH: Max depth of ${B} reached when generating BVH. Consider increasing maxDepth.`),console.warn(g))),u<=s||f>=B)return I(d+u),c.offset=d,c.count=u,c;let k=O5(c.boundingData,y,C,d,u,r);if(k.axis===-1)return I(d+u),c.offset=d,c.count=u,c;let M=H5(o,C,d,u,k);if(M===d||M===d+u)I(d+u),c.offset=d,c.count=u;else{c.splitAxis=k.axis;let G=new ol,v=d,N=M-d;c.left=G,G.boundingData=new Float32Array(6),wu(C,v,N,G.boundingData,t),e(G,v,N,t,f+1);let b=new ol,O=M,H=u-N;c.right=b,b.boundingData=new Float32Array(6),wu(C,O,H,b.boundingData,t),e(b,O,H,t,f+1)}return c}b5(g,A);let i=new Float32Array(6),t=new Float32Array(6),C=P5(g,i),o=g.index.array,B=A.maxDepth,a=A.verbose,s=A.maxLeafTris,r=A.strategy,Q=A.onProgress,E=g.index.count/3,n=!1,h=[],l=Y5(g);if(l.length===1){let c=l[0],d=new ol;d.boundingData=i,x5(C,c.offset,c.count,t),e(d,c.offset,c.count,t),h.push(d)}else for(let c of l){let d=new ol;d.boundingData=new Float32Array(6),wu(C,c.offset,c.count,d.boundingData,t),e(d,c.offset,c.count,t),h.push(d)}return h}function W5(g,A){let I=j5(g,A),e,i,t,C=[],o=A.useSharedArrayBuffer?SharedArrayBuffer:ArrayBuffer;for(let s=0;sMath.pow(2,32))throw new Error("MeshBVH: Cannot store child pointer greater than 32 bits.");return i[Q+6]=u/4,u=a(u,c),i[Q+7]=d,u}}}var fB=class{constructor(){this.min=1/0,this.max=-1/0}setFromPointsField(A,I){let e=1/0,i=-1/0;for(let t=0,C=A.length;ti?o:i}this.min=e,this.max=i}setFromPoints(A,I){let e=1/0,i=-1/0;for(let t=0,C=I.length;ti?B:i}this.min=e,this.max=i}isSeparated(A){return this.min>A.max||A.min>this.max}};fB.prototype.setFromBox=function(){let g=new J;return function(A,I){let e=I.min,i=I.max,t=1/0,C=-1/0;for(let o=0;o<=1;o++)for(let B=0;B<=1;B++)for(let a=0;a<=1;a++){g.x=e.x*o+i.x*(1-o),g.y=e.y*B+i.y*(1-B),g.z=e.z*a+i.z*(1-a);let s=A.dot(g);t=Math.min(s,t),C=Math.max(s,C)}this.min=t,this.max=C}}();var Z5=function(){let g=new J,A=new J,I=new J;return function(e,i,t){let C=e.start,o=g,B=i.start,a=A;I.subVectors(C,B),g.subVectors(e.end,e.start),A.subVectors(i.end,i.start);let s=I.dot(a),r=a.dot(o),Q=a.dot(a),E=I.dot(o),n=o.dot(o)*Q-r*r,h,l;n!==0?h=(s*r-E*Q)/n:h=0,l=(s+h*r)/Q,t.x=h,t.y=l}}(),M0=function(){let g=new sA,A=new J,I=new J;return function(e,i,t,C){Z5(e,i,g);let o=g.x,B=g.y;if(o>=0&&o<=1&&B>=0&&B<=1){e.at(o,t),i.at(B,C);return}else if(o>=0&&o<=1){B<0?i.at(0,C):i.at(1,C),e.closestPointToPoint(C,!0,t);return}else if(B>=0&&B<=1){o<0?e.at(0,t):e.at(1,t),i.closestPointToPoint(t,!0,C);return}else{let a;o<0?a=e.start:a=e.end;let s;B<0?s=i.start:s=i.end;let r=A,Q=I;if(e.closestPointToPoint(s,!0,A),i.closestPointToPoint(a,!0,I),r.distanceToSquared(s)<=Q.distanceToSquared(a)){t.copy(r),C.copy(s);return}else{t.copy(a),C.copy(Q);return}}}}(),V5=function(){let g=new J,A=new J,I=new Nt,e=new eC;return function(i,t){let{radius:C,center:o}=i,{a:B,b:a,c:s}=t;if(e.start=B,e.end=a,e.closestPointToPoint(o,!0,g).distanceTo(o)<=C||(e.start=B,e.end=s,e.closestPointToPoint(o,!0,g).distanceTo(o)<=C)||(e.start=a,e.end=s,e.closestPointToPoint(o,!0,g).distanceTo(o)<=C))return!0;let r=t.getPlane(I);if(Math.abs(r.distanceToPoint(o))<=C){let Q=r.projectPoint(o,A);if(t.containsPoint(Q))return!0}return!1}}(),z5=1e-15;function ks(g){return Math.abs(g)new J),this.satBounds=new Array(4).fill().map(()=>new fB),this.points=[this.a,this.b,this.c],this.sphere=new ct,this.plane=new Nt,this.needsUpdate=!0}intersectsSphere(A){return V5(A,this)}update(){let A=this.a,I=this.b,e=this.c,i=this.points,t=this.satAxes,C=this.satBounds,o=t[0],B=C[0];this.getNormal(o),B.setFromPoints(o,i);let a=t[1],s=C[1];a.subVectors(A,I),s.setFromPoints(a,i);let r=t[2],Q=C[2];r.subVectors(I,e),Q.setFromPoints(r,i);let E=t[3],n=C[3];E.subVectors(e,A),n.setFromPoints(E,i),this.sphere.setFromPoints(this.points),this.plane.setFromNormalAndCoplanarPoint(o,A),this.needsUpdate=!1}};GB.prototype.closestPointToSegment=function(){let g=new J,A=new J,I=new eC;return function(e,i=null,t=null){let{start:C,end:o}=e,B=this.points,a,s=1/0;for(let r=0;r<3;r++){let Q=(r+1)%3;I.start.copy(B[r]),I.end.copy(B[Q]),M0(I,e,g,A),a=g.distanceToSquared(A),a1-1e-10){let c=this.satBounds,d=this.satAxes;I[0]=Q.a,I[1]=Q.b,I[2]=Q.c;for(let f=0;f<4;f++){let k=c[f],M=d[f];if(e.setFromPoints(M,I),k.isSeparated(e))return!1}let u=Q.satBounds,y=Q.satAxes;A[0]=this.a,A[1]=this.b,A[2]=this.c;for(let f=0;f<4;f++){let k=u[f],M=y[f];if(e.setFromPoints(M,A),k.isSeparated(e))return!1}for(let f=0;f<4;f++){let k=d[f];for(let M=0;M<4;M++){let G=y[M];if(t.crossVectors(k,G),e.setFromPoints(t,A),i.setFromPoints(t,I),e.isSeparated(i))return!1}}return E&&(n||console.warn("ExtendedTriangle.intersectsTriangle: Triangles are coplanar which does not support an output edge. Setting edge to 0, 0, 0."),E.start.set(0,0,0),E.end.set(0,0,0)),!0}else{let c=this.points,d=!1,u=0;for(let H=0;H<3;H++){let _=c[H],gA=c[(H+1)%3];a.start.copy(_),a.end.copy(gA),a.delta(C);let CA=d?s.start:s.end,AA=ks(l.distanceToPoint(_));if(ks(l.normal.dot(C))&&AA){s.copy(a),u=2;break}if((l.intersectLine(a,CA)||AA)&&!ks(CA.distanceTo(gA))){if(u++,d)break;d=!0}}if(u===1&&Q.containsPoint(s.end))return E&&(E.start.copy(s.end),E.end.copy(s.end)),!0;if(u!==2)return!1;let y=Q.points,f=!1,k=0;for(let H=0;H<3;H++){let _=y[H],gA=y[(H+1)%3];a.start.copy(_),a.end.copy(gA),a.delta(o);let CA=f?r.start:r.end,AA=ks(h.distanceToPoint(_));if(ks(h.normal.dot(o))&&AA){r.copy(a),k=2;break}if((h.intersectLine(a,CA)||AA)&&!ks(CA.distanceTo(gA))){if(k++,f)break;f=!0}}if(k===1&&this.containsPoint(r.end))return E&&(E.start.copy(r.end),E.end.copy(r.end)),!0;if(k!==2)return!1;if(s.delta(C),r.delta(o),C.dot(o)<0){let H=r.start;r.start=r.end,r.end=H}let M=s.start.dot(C),G=s.end.dot(C),v=r.start.dot(C),N=r.end.dot(C),b=G0?E.start.copy(s.start):E.start.copy(r.start),B.subVectors(s.end,r.end),B.dot(C)<0?E.end.copy(s.end):E.end.copy(r.end)),!0)}}}();GB.prototype.distanceToPoint=function(){let g=new J;return function(A){return this.closestPointToPoint(A,g),A.distanceTo(g)}}();GB.prototype.distanceToTriangle=function(){let g=new J,A=new J,I=["a","b","c"],e=new eC,i=new eC;return function(t,C=null,o=null){let B=C||o?e:null;if(this.intersectsTriangle(t,B))return(C||o)&&(C&&B.getCenter(C),o&&B.getCenter(o)),0;let a=1/0;for(let s=0;s<3;s++){let r,Q=I[s],E=t[Q];this.closestPointToPoint(E,g),r=E.distanceToSquared(g),rnew J),this.satAxes=new Array(3).fill().map(()=>new J),this.satBounds=new Array(3).fill().map(()=>new fB),this.alignedSatBounds=new Array(3).fill().map(()=>new fB),this.needsUpdate=!1,A&&this.min.copy(A),I&&this.max.copy(I),e&&this.matrix.copy(e)}set(A,I,e){this.min.copy(A),this.max.copy(I),this.matrix.copy(e),this.needsUpdate=!0}copy(A){this.min.copy(A.min),this.max.copy(A.max),this.matrix.copy(A.matrix),this.needsUpdate=!0}};Mo.prototype.update=function(){return function(){let g=this.matrix,A=this.min,I=this.max,e=this.points;for(let B=0;B<=1;B++)for(let a=0;a<=1;a++)for(let s=0;s<=1;s++){let r=1*B|2*a|4*s,Q=e[r];Q.x=B?I.x:A.x,Q.y=a?I.y:A.y,Q.z=s?I.z:A.z,Q.applyMatrix4(g)}let i=this.satBounds,t=this.satAxes,C=e[0];for(let B=0;B<3;B++){let a=t[B],s=i[B],r=1<new eC),I=new Array(12).fill().map(()=>new eC),e=new J,i=new J;return function(t,C=0,o=null,B=null){if(this.needsUpdate&&this.update(),this.intersectsBox(t))return(o||B)&&(t.getCenter(i),this.closestPointToPoint(i,e),t.closestPointToPoint(e,i),o&&o.copy(e),B&&B.copy(i)),0;let a=C*C,s=t.min,r=t.max,Q=this.points,E=1/0;for(let h=0;h<8;h++){let l=Q[h];i.copy(l).clamp(s,r);let c=l.distanceToSquared(i);if(c0&&a.normal.multiplyScalar(-1));let s={a:t,b:C,c:o,normal:new J,materialIndex:0};Ni.getNormal(Ms,ms,Us,s.normal),a.face=s,a.faceIndex=t}return a}function JR(g,A,I,e,i){let t=e*3,C=g.index.getX(t),o=g.index.getX(t+1),B=g.index.getX(t+2),{position:a,normal:s,uv:r,uv1:Q}=g.attributes,E=$5(I,a,s,r,Q,C,o,B,A);return E?(E.faceIndex=e,i&&i.push(E),E):null}function AZ(g,A,I,e,i,t){for(let C=e,o=e+i;C=0,r,Q;s?(r=Fn(g),Q=Rn(g,o)):(r=Rn(g,o),Q=Fn(g));let E=Xc(r,t,e,zc)?by(r,A,I,e):null;if(E){let h=E.point[a];if(s?h<=t[Q+B]:h>=t[Q+B+3])return E}let n=Xc(Q,t,e,zc)?by(Q,A,I,e):null;return E&&n?E.distance<=n.distance?E:n:E||n||null}}var iZ=function(){let g,A,I=[],e=new vR(()=>new ve);return function(...t){g=e.getPrimitive(),A=e.getPrimitive(),I.push(g,A);let C=i(...t);e.releasePrimitive(g),e.releasePrimitive(A),I.pop(),I.pop();let o=I.length;return o>0&&(A=I[o-1],g=I[o-2]),C};function i(t,C,o,B,a=null,s=0,r=0){function Q(d){let u=d*2,y=ua,f=pa;for(;!Ca(u,y);)d=Fn(d),u=d*2;return nQ(d,f)}function E(d){let u=d*2,y=ua,f=pa;for(;!Ca(u,y);)d=Rn(d,f),u=d*2;return nQ(d,f)+Nn(u,y)}let n=t*2,h=CE,l=ua,c=pa;if(Ca(n,l)){let d=nQ(t,c),u=Nn(n,l);return co(t,h,g),B(d,u,!1,r,s+t,g)}else{let d=Fn(t),u=Rn(t,c),y=d,f=u,k,M,G,v;if(a&&(G=g,v=A,co(y,h,G),co(f,h,v),k=a(G),M=a(v),Mi.intersectsBox(k),intersectsTriangle:k=>{k.a.applyMatrix4(a),k.b.applyMatrix4(a),k.c.applyMatrix4(a),k.needsUpdate=!0;for(let M=y*3,G=(f+y)*3;Mnew GB),sn=class{static serialize(A,I={}){if(I.isBufferGeometry)return console.warn("MeshBVH.serialize: The arguments for the function have changed. See documentation for new signature."),sn.serialize(arguments[0],{cloneBuffers:arguments[2]===void 0?!0:arguments[2]});I={cloneBuffers:!0,...I};let e=A.geometry,i=A._roots,t=e.getIndex(),C;return I.cloneBuffers?C={roots:i.map(o=>o.slice()),index:t.array.slice()}:C={roots:i,index:t.array},C}static deserialize(A,I,e={}){if(typeof e=="boolean")return console.warn("MeshBVH.deserialize: The arguments for the function have changed. See documentation for new signature."),sn.deserialize(arguments[0],arguments[1],{setIndex:arguments[2]===void 0?!0:arguments[2]});e={setIndex:!0,...e};let{index:i,roots:t}=A,C=new sn(I,{...e,[Su]:!0});if(C._roots=t,e.setIndex){let o=I.getIndex();if(o===null){let B=new zg(A.index,1,!1);I.setIndex(B)}else o.array!==i&&(o.array.set(i),o.needsUpdate=!0)}return C}constructor(A,I={}){if(A.isBufferGeometry){if(A.index&&A.index.isInterleavedBufferAttribute)throw new Error("MeshBVH: InterleavedBufferAttribute is not supported for the index attribute.")}else throw new Error("MeshBVH: Only BufferGeometries are supported.");if(I=Object.assign({strategy:0,maxDepth:40,maxLeafTris:10,verbose:!0,useSharedArrayBuffer:!1,setBoundingBox:!0,onProgress:null,[Su]:!1},I),I.useSharedArrayBuffer&&typeof SharedArrayBuffer>"u")throw new Error("MeshBVH: SharedArrayBuffer is not available.");this._roots=null,I[Su]||(this._roots=W5(A,I),!A.boundingBox&&I.setBoundingBox&&(A.boundingBox=this.getBoundingBox(new ve))),this.geometry=A}refit(A=null){A&&Array.isArray(A)&&(A=new Set(A));let I=this.geometry,e=I.index.array,i=I.attributes.position,t,C,o,B,a=0,s=this._roots;for(let Q=0,E=s.length;Qf&&(f=b),Ok&&(k=O),HM&&(M=H)}return B[Q+0]!==d||B[Q+1]!==u||B[Q+2]!==y||B[Q+3]!==f||B[Q+4]!==k||B[Q+5]!==M?(B[Q+0]=d,B[Q+1]=u,B[Q+2]=y,B[Q+3]=f,B[Q+4]=k,B[Q+5]=M,!0):!1}else{let l=Q+8,c=C[Q+6],d=l+E,u=c+E,y=n,f=!1,k=!1;A?y||(f=A.has(d),k=A.has(u),y=!f&&!k):(f=!0,k=!0);let M=y||f,G=y||k,v=!1;M&&(v=r(l,E,y));let N=!1;G&&(N=r(c,E,y));let b=v||N;if(b)for(let O=0;O<3;O++){let H=l+O,_=c+O,gA=B[H],CA=B[H+3],AA=B[_],BA=B[_+3];B[Q+O]=gABA?CA:BA}return b}}}traverse(A,I=0){let e=this._roots[I],i=new Uint32Array(e),t=new Uint16Array(e);C(0);function C(o,B=0){let a=o*2,s=t[a+15]===65535;if(s){let r=i[o+6],Q=t[a+14];A(B,s,new Float32Array(e,o*4,6),r,Q)}else{let r=o+8,Q=i[o+6],E=i[o+7];A(B,s,new Float32Array(e,o*4,6),E)||(C(r,B+1),C(Q,B+1))}}}raycast(A,I=RC){let e=this._roots,i=this.geometry,t=[],C=I.isMaterial,o=Array.isArray(I),B=i.groups,a=C?I.side:I;for(let s=0,r=e.length;s{let c=n*3;return Q(E,c,c+1,c+2,h,l)}}A={boundsTraverseOrder:e,intersectsBounds:A,intersectsTriangle:I,intersectsRange:null},console.warn("MeshBVH: Shapecast function signature has changed and now takes an object of callbacks as a second argument. See docs for new signature.")}let t=XC.getPrimitive(),{boundsTraverseOrder:C,intersectsBounds:o,intersectsRange:B,intersectsTriangle:a}=A;if(B&&a){let Q=B;B=(E,n,h,l,c)=>Q(E,n,h,l,c)?!0:DM(E,n,i,a,h,l,t)}else B||(a?B=(Q,E,n,h)=>DM(Q,E,i,a,n,h,t):B=(Q,E,n)=>n);let s=!1,r=0;for(let Q of this._roots){if(zE(Q),s=iZ(0,i,o,B,C,r),nl(),s)break;r+=Q.byteLength}return XC.releasePrimitive(t),s}bvhcast(A,I,e){let{intersectsRanges:i,intersectsTriangles:t}=e,C=this.geometry.index,o=this.geometry.attributes.position,B=A.geometry.index,a=A.geometry.attributes.position;Ns.copy(I).invert();let s=XC.getPrimitive(),r=XC.getPrimitive();if(t){let E=function(n,h,l,c,d,u,y,f){for(let k=l,M=l+c;kGu.intersectsBox(E),intersectsRange:(E,n,h,l,c,d)=>(fu.copy(d),fu.applyMatrix4(Ns),A.shapecast({intersectsBounds:u=>fu.intersectsBox(u),intersectsRange:(u,y,f,k,M)=>i(E,n,u,y,l,c,k,M)}))});return XC.releasePrimitive(s),XC.releasePrimitive(r),Q}intersectsBox(A,I){return Ar.set(A.min,A.max,I),Ar.needsUpdate=!0,this.shapecast({intersectsBounds:e=>Ar.intersectsBox(e),intersectsTriangle:e=>Ar.intersectsTriangle(e)})}intersectsSphere(A){return this.shapecast({intersectsBounds:I=>A.intersectsBox(I),intersectsTriangle:I=>I.intersectsSphere(A)})}closestPointToGeometry(A,I,e={},i={},t=0,C=1/0){A.boundingBox||A.computeBoundingBox(),Ar.set(A.boundingBox.min,A.boundingBox.max,I),Ar.needsUpdate=!0;let o=this.geometry,B=o.attributes.position,a=o.index,s=A.attributes.position,r=A.index,Q=XC.getPrimitive(),E=XC.getPrimitive(),n=hl,h=CZ,l=null,c=null;i&&(l=oZ,c=BZ);let d=1/0,u=null,y=null;return Ns.copy(I).invert(),UE.matrix.copy(Ns),this.shapecast({boundsTraverseOrder:f=>Ar.distanceToBox(f),intersectsBounds:(f,k,M)=>M{if(A.boundsTree)return A.boundsTree.shapecast({boundsTraverseOrder:M=>UE.distanceToBox(M),intersectsBounds:(M,G,v)=>v{for(let v=M*3,N=(M+G)*3;v(NE.copy(A).clamp(s.min,s.max),NE.distanceToSquared(A)),intersectsBounds:(s,r,Q)=>Q{s.closestPointToPoint(A,NE);let Q=A.distanceToSquared(NE);return Q{co(0,new Float32Array(I),dM),A.union(dM)}),A}},FE=Fa(pq()),aZ=.5*(Math.sqrt(3)-1),RE=(3-Math.sqrt(3))/6,rZ=1/3,$C=1/6,Qn=g=>Math.floor(g)|0,uM=new Float64Array([1,1,-1,1,1,-1,-1,-1,1,0,-1,0,1,0,-1,0,0,1,0,-1,0,1,0,-1]),ku=new Float64Array([1,1,0,-1,1,0,1,-1,0,-1,-1,0,1,0,1,-1,0,1,1,0,-1,-1,0,-1,0,1,1,0,-1,1,0,1,-1,0,-1,-1]);function Mu(g=Math.random){let A=qR(g),I=new Float64Array(A).map(i=>uM[i%12*2]),e=new Float64Array(A).map(i=>uM[i%12*2+1]);return function(i,t){let C=0,o=0,B=0,a=(i+t)*aZ,s=Qn(i+a),r=Qn(t+a),Q=(s+r)*RE,E=s-Q,n=r-Q,h=i-E,l=t-n,c,d;h>l?(c=1,d=0):(c=0,d=1);let u=h-c+RE,y=l-d+RE,f=h-1+2*RE,k=l-1+2*RE,M=s&255,G=r&255,v=.5-h*h-l*l;if(v>=0){let O=M+A[G],H=I[O],_=e[O];v*=v,C=v*v*(H*h+_*l)}let N=.5-u*u-y*y;if(N>=0){let O=M+c+A[G+d],H=I[O],_=e[O];N*=N,o=N*N*(H*u+_*y)}let b=.5-f*f-k*k;if(b>=0){let O=M+1+A[G+1],H=I[O],_=e[O];b*=b,B=b*b*(H*f+_*k)}return 70*(C+o+B)}}function sZ(g=Math.random){let A=qR(g),I=new Float64Array(A).map(t=>ku[t%12*3]),e=new Float64Array(A).map(t=>ku[t%12*3+1]),i=new Float64Array(A).map(t=>ku[t%12*3+2]);return function(t,C,o){let B,a,s,r,Q=(t+C+o)*rZ,E=Qn(t+Q),n=Qn(C+Q),h=Qn(o+Q),l=(E+n+h)*$C,c=E-l,d=n-l,u=h-l,y=t-c,f=C-d,k=o-u,M,G,v,N,b,O;y>=f?f>=k?(M=1,G=0,v=0,N=1,b=1,O=0):y>=k?(M=1,G=0,v=0,N=1,b=0,O=1):(M=0,G=0,v=1,N=1,b=0,O=1):fg){i=t;break}else g1&&(e=1-e,i=1-i),cC.a.fromBufferAttribute(this.positionAttribute,g*3),cC.b.fromBufferAttribute(this.positionAttribute,g*3+1),cC.c.fromBufferAttribute(this.positionAttribute,g*3+2),A.set(0,0,0).addScaledVector(cC.a,e).addScaledVector(cC.b,i).addScaledVector(cC.c,1-(e+i)),cC.getNormal(I),this}},EZ=Fa(pN()),nZ=new zA,hZ=new zA,lZ=new zA,Kn;(g=>{function A(I){return I&&I.__isSPEObject}g.is=A})(Kn||(Kn={}));var m0=g=>class extends g{constructor(){super(...arguments),this.previousModelViewMatrix=new zA,this.copyPreviousMatrix=!0,this.hiddenMatrix=new zA,this.matrixWorldRigid=new zA,this.shearScale=new zA,this.shearScaleInv=new zA}get __isSPEObject(){return!0}isDescendantOf(A){A instanceof ZI&&(A=A.uuid);let I=this;for(;I.parent;){if(I.parent.uuid===A)return!0;I=I.parent}return!1}updateMatrixWorld(A){this.matrixAutoUpdate&&this.updateMatrix(),(this.matrixWorldNeedsUpdate||A)&&(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,A=!0);for(let I of this.children)I.updateMatrixWorld(A)}updateWorldMatrix(A,I){let e=this.parent;if(A&&e!==null&&e.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)),I)for(let i of this.children)i.updateWorldMatrix(!1,!0)}traverseChildren(A,I=0){for(let e of this.children)Kn.is(e)&&e.traverseObject(A,I+1)}traverseObject(A,I=0){if(A(this,I)!==!0)for(let e of this.children)Kn.is(e)&&e.traverseObject(A,I+1)}updateMatrixWorldSVD(){let A=this.matrixWorld.elements,I=[[A[0],A[4],A[8]],[A[1],A[5],A[9]],[A[2],A[6],A[10]]],{u:e,v:i,q:t}=(0,EZ.SVD)(I),C=nZ.set(e[0][0],e[0][1],e[0][2],0,e[1][0],e[1][1],e[1][2],0,e[2][0],e[2][1],e[2][2],0,0,0,0,1),o=hZ.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),B=lZ.copy(o).transpose();this.shearScale.makeScale(t[0],t[1],t[2]).multiply(B).premultiply(o),this.shearScaleInv.copy(this.shearScale).invert(),this.matrixWorldRigid.multiplyMatrices(C,B).copyPosition(this.matrixWorld),t.every(a=>Math.abs(t[0]-a)<.01)?this.hasNonUniformScale=!1:this.hasNonUniformScale=!0}attach(A,I){this.updateWorldMatrix(!0,!1);let e=new zA().copy(this.matrixWorld).invert();return A.parent!==null&&(A.parent.updateWorldMatrix(!0,!1),e.multiply(A.parent.matrixWorld)),"hiddenMatrix"in A&&A.hiddenMatrix instanceof zA?A.hiddenMatrix.premultiply(e):A.applyMatrix4(e),A.updateWorldMatrix(!1,!1),this.add(A),I!==void 0&&(this.children.pop(),this.children.splice(I,0,A)),this}copy(A,I=!1){return super.copy(A,I),this.hasNonUniformScale=A.hasNonUniformScale,this}onAfterRender(A,I,e,i,t,C){this.copyPreviousMatrix&&this.previousModelViewMatrix.copy(this.modelViewMatrix)}},cZ=class extends m0(ZI){},DZ=g=>g.type==="Mesh",Ri=class extends cZ{constructor(A){super(),this.object=A,this.matrixAutoUpdate=!1,this.hasNonUniformScale=A.hasNonUniformScale}raycast(A,I){}expand(){let A=0,I=this.object.entityChildren(A);for(;I;){let e=this.children[A];(e==null?void 0:e.object)!==I&&(e&&this.remove(e),e=new Ri(I),this.add(e),this.children.splice(A,0,this.children.pop()),e.matrixWorldNeedsUpdate=!0,e.matrixAutoUpdate=!1,e.matrix=I.matrix,e.hiddenMatrix=I.hiddenMatrix),e.expand(),A+=1,I=this.object.entityChildren(A)}for(;this.children.length>A;)this.remove(this.children[A])}get visible(){var A;return this.playModeVisible!==void 0?this.playModeVisible:this.object.visible||this.object.dataPatched.visible&&((A=this.object.dataPatched.cloner)==null?void 0:A.hideBase)===!0}set visible(A){}get castShadow(){return this.object.castShadow}set castShadow(A){}get receiveShadow(){return this.object.receiveShadow}set receiveShadow(A){}get isMesh(){return DZ(this.object)}get isLight(){return this.object.isLight}get layers(){return this.object.layers}set layers(A){}get isCamera(){return!1}get geometry(){if(this.object.geometry)return this.object.geometry}get material(){if(this.object.material)return this.object.material}},sr=new J,Qr=new J,hQ=new zA,LR=[new J(-1,1,1),new J(-1,-1,1),new J(1,-1,1),new J(1,1,1),new J(-1,1,-1),new J(-1,-1,-1),new J(1,-1,-1),new J(1,1,-1)],dZ=[[0,3],[1,2],[5,6],[4,7],[0,1],[3,2],[7,6],[4,5],[0,4],[1,5],[2,6],[3,7]],uZ=[[0,2],[7,5],[4,1],[3,6],[4,3],[1,6]],pM=(g,A,I)=>{g.updateEntityBoxSize(sr,Qr),hQ.copy(A).multiply(g.matrixWorld),Qr.x===0&&Qr.y===0&&Qr.z===0?I.push(new J(sr.x,sr.y,sr.z).applyMatrix4(hQ)):LR.forEach(e=>{I.push(e.clone().multiply(Qr).add(sr).applyMatrix4(hQ))})},yM=class extends ve{constructor(){super(...arguments),this.matrix=new zA,this.vertices=[],this.faces=[],this.edges=[],this.centerEdges=[]}copy(g){return super.copy(g),this.matrix.copy(g.matrix),this.vertices=g.vertices.map(A=>A.clone()),this.faces=g.faces.map(A=>A.clone()),this.edges=g.edges.map(A=>A.clone()),this.centerEdges=g.centerEdges.map(A=>A.clone()),this}setFromObjectSize(g,A=!1){g.updateWorldMatrix(!1,A),this.makeEmpty(),this.matrix.copy(g.matrixWorld);let I=new zA().copy(g.matrixWorld).invert();return this.expandByObjectSize(g,I,A)}expandByObjectSize(g,A,I=!1){let e=[];return I===!0?g.traverseEntity(i=>{if(i.visible||i.cloner&&i.data.visible){if(!("geometry"in i)){e.push(new J);return}pM(i,A,e)}}):pM(g,A,e),this.setFromPoints(e)}getCenter(g){return g=super.getCenter(g),g.applyMatrix4(this.matrix),g}getPositionToCenter(g){return g=super.getCenter(g),g.applyMatrix4(hQ.copy(this.matrix).setPosition(0,0,0)),g}computeVertices(){this.getSize(Qr).multiplyScalar(.5),this.getCenter(sr),hQ.copy(this.matrix).setPosition(sr),this.vertices=LR.map(g=>g.clone().multiply(Qr).applyMatrix4(hQ))}computeEdges(){this.vertices.length>0&&this.computeVertices(),this.edges=dZ.map(([g,A])=>new eC(this.vertices[g],this.vertices[A])),this.centerEdges=this.edges.map(g=>g.getCenter(new J))}computeFaces(){this.vertices.length>0&&this.computeVertices(),this.faces=uZ.map(([g,A])=>this.vertices[g].clone().add(this.vertices[A]).multiplyScalar(.5))}},Qa={Cloner:()=>{},changeEntityProptotype:()=>{},createEntity:()=>{}},pZ=class extends ZN{constructor(){super()}getPoints(g=12){let A=[],I,e=this.getCurveLengths(),i=e[e.length-1]/e.length;for(let t=0,C=this.curves;t1&&!A[A.length-1].equals(A[0])&&A.push(A[0]),A}},xy=.001;function Hy(g,A,I){return A.clone().sub(g).cross(A.clone().sub(I)).length()<=xy}function mu(g,A){let I=new J(...g.position),e=new J(...g.controlNext.position),i=new J(...A.controlPrevious.position),t=new J(...A.position);return Hy(I,e,t)&&Hy(I,i,t)}function bR(g){let A=g.points.map(s=>new J(...s.data.position)),I=[g.points[0]],e=new J(...I[0].data.position);for(let s=0;sxy&&(h=new Vl(E.position,E.controlNext,n.controlPrevious,n.position));else{let l=E.position.clone(),c=n.position.clone();(E.removedLength!==0||n.removedLength!==0)&&(E.nextDir&&l.add(E.nextDir.clone().setLength(E.removedLength)),n.prevDir&&c.add(n.prevDir.clone().setLength(n.removedLength))),l.distanceTo(c)>xy&&(h=new Vl(l,l.clone().lerp(c,.3),c.clone().lerp(l,.3),c))}B[2*s+1]=h}for(let s=0;s{s&&a.add(s)}),a}var MI;(g=>{function A(I){return I&&I.__isEntity}g.is=A})(MI||(MI={}));var QB=g=>MI.is(g),yZ={type:"completeState",isfromEntity:!0},wZ=["x","y","z"],Uu=new J,SZ=new J().set(0,1,0),U0=g=>class extends m0(g){constructor(){super(...arguments),this.raycastLock=!1,this.scaleLock=!1,this.disposed=!1,this.stateSelection=null,this.destroyedInAction=!1,this.instances=[],this.prevState=null,this.currentState=null,this.reversibleToState=null,this.currentTransitionEvent=null,this.previousAction=null,this._singleBBox=new yM,this._recursiveBBox=new yM,this.singleBBoxNeedsUpdate=!0,this.recursiveBBoxNeedsUpdate=!0,this._needApplyPathSnapping=!0,this.attachedPaths=new Set}get __isEntity(){return!0}entityChildren(A){let I=this.children[A];if(MI.is(I))return I}entityChildrenCount(){let A=this.children.length;for(;A--;)if(MI.is(this.children[A]))return A+1;return 0}get isConcreteEntity(){return typeof this.identity=="string"}get isVirtualEntity(){return typeof this.identity!="string"}get isInstanceRoot(){return this.isConcreteEntity&&this.data.type==="Instance"}nearestInstanceSelfOrParent(){let A=this;for(;A.data.type!=="Instance";){let I=A.parent;if(MI.is(I))A=I;else return}return A}forInstancesRec(A){this.instances.forEach(I=>{I.disposed||A(I),I.forInstancesRec(A)})}super_Entity(A,I){typeof A=="string"&&(this.uuid=A),this.identity=A,this.data=I,this.matrixAutoUpdate=!1,this.dataPatched=this.data}changeSelectedState(A,I,e=!1){if(!(this.data.states.length===0&&!e)){for(let i of this.data.states)cr.toOps(this.data,i.data).forEach(t=>{let C=ty.replaceProps(t,this.data);this.dataPatched=this.data,this.updateByPatchedOp(C,this.data,I)});if(A!==null){let i=this.data.states.data(A);i&&(this.dataPatched=cr.patch(this.data,i),cr.toOps(this.data,i).forEach(t=>{this.updateByPatchedOp(t,this.dataPatched,I)}))}e&&this.updateTransformState(this.dataPatched,I),this.stateSelection=A,this.updatePathSnapping(this.dataPatched.pathSnapping)}}get singleBBox(){return this.singleBBoxNeedsUpdate&&(this.singleBBoxNeedsUpdate=!1,this._singleBBox.setFromObjectSize(this,!1),this._singleBBox.computeVertices(),this._singleBBox.computeEdges(),this._singleBBox.computeFaces()),this._singleBBox}get recursiveBBox(){return this.recursiveBBoxNeedsUpdate&&(this.recursiveBBoxNeedsUpdate=!1,this._recursiveBBox.setFromObjectSize(this,!0),this._recursiveBBox.computeVertices(),this._recursiveBBox.computeEdges(),this._recursiveBBox.computeFaces()),this._recursiveBBox}updateEntityBoxSize(A,I){A.setScalar(0),I.setScalar(0)}resetBBoxNeedsUpdateSelf(){this.singleBBoxNeedsUpdate=!0,this.recursiveBBoxNeedsUpdate=!0}resetBBoxNeedsUpdate(){this.resetBBoxNeedsUpdateSelf(),this.traverseAncestors(A=>{QB(A)&&A.resetBBoxNeedsUpdateSelf()}),this.traverseEntity(A=>{A.resetBBoxNeedsUpdateSelf()})}find(A){let I;return this.traverseEntity(e=>{e.uuid===A&&(I=e)}),I}traverseSortNextHelper(){let A=this.parent;if(A){let I=A.children,e=I.indexOf(this)+1;if(MI.is(I[e]))return I[e];if(MI.is(A))return A.traverseSortNextHelper()}}sortNext(){let A=this.children;return this.children.length>0&&MI.is(this.children[0])?A[0]:this.traverseSortNextHelper()}goUp(A){let I=this;for(;A>0&&I!==null;)I=I.parent,A-=1;return I}hasAnccestorOrSelf(A){return this===A||this.hasAnccestor(A)}hasAnccestor(A){let I=this.parent;for(;I;){if(A===I)return!0;I=I.parent}return!1}countToAccestor(A){let I=0,e=this;for(;e!==A;){if(e===null)return-1;e=e.parent,I+=1}return I}forEachEntity(A){for(let I of this.children)QB(I)&&A(I)}traverseEntityAncestors(A){this.traverseAncestors(I=>{MI.is(I)&&A(I)})}traverseConcreteEntity(A,I=0){if(A(this,I)!==!0)for(let e of this.children)QB(e)&&e.isConcreteEntity&&e.traverseEntity(A,I+1)}traverseEntity(A,I=0){if(A(this,I)!==!0)for(let e of this.children)QB(e)&&e.traverseEntity(A,I+1)}traverseVisibleEntity(A){A(this);for(let I of this.children)QB(I)&&I.visible&&I.traverseVisibleEntity(A)}updateMatrix(){super.updateMatrix(),this.cloner&&this.cloner.onObjUpdateMatrix(),this.dispatchEvent({type:"updateMatrix"})}updateMatrixWorld(A){super.updateMatrixWorld(A),this.dispatchEvent({type:"updateMatrixWorld"})}copy(A,I=!1){return super.copy(A,I),this.dataPatched=A.dataPatched,this.raycastLock=A.raycastLock,this.scaleLock=A.scaleLock,this.hiddenMatrix.copy(A.hiddenMatrix),this}hasEntityChild(){return this.children.some(A=>QB(A))}isAncestorOf(A){if(this.uuid===A)return!1;let I=!1;return this.traverseEntity(e=>{e.uuid===A&&(I=!0)}),I}toObjectTransformState(A=[]){this.updateWorldMatrix(!0,!1);let I={position:this.position.toArray(),rotation:[this.rotation.x*vg.RAD2DEG,this.rotation.y*vg.RAD2DEG,this.rotation.z*vg.RAD2DEG],scale:this.scale.toArray(),hiddenMatrix:this.hiddenMatrix.toArray()};return iy(I,A)}getTransformValues(A,I,e){return I[A].map((i,t)=>(e==null?void 0:e.shared.getVariable(i,[this.uuid,A,wZ[t]]))??i)}updateTransformState(A,I){let e=!1;return A.position&&(this.position.fromArray(this.getTransformValues("position",A,I)),e=!0),A.rotation&&(Uu.fromArray(this.getTransformValues("rotation",A,I)).multiplyScalar(vg.DEG2RAD),this.rotation.setFromVector3(Uu),e=!0),A.scale&&(this.scale.fromArray(this.getTransformValues("scale",A,I)),e=!0),A.hiddenMatrix!==void 0&&(e=!0,this.hiddenMatrix.fromArray(A.hiddenMatrix??NQ.identity)),e&&(this.updateMatrix(),this.resetBBoxNeedsUpdate(),this.invalidateClonerTransform(this),this.traverseEntityAncestors(i=>{i.invalidateClonerTransform(this)})),A.position&&A.rotation&&A.scale&&A.hiddenMatrix!==void 0&&this.updateWorldMatrix(!1,!0),e}onVariableUpdate(A=!1){if(A){this.resetBBoxNeedsUpdate();return}this.updateMatrix(),this.resetBBoxNeedsUpdate(),this.invalidateClonerTransform(this),this.traverseEntityAncestors(I=>{I.invalidateClonerTransform(this)})}dispose(){this.disposed=!0,this.cloner&&(this.cloner.removeFromParent(),this.cloner=void 0)}disposeChildrenRecursively(){for(let A of this.children)MI.is(A)&&A.disposeRecursively()}disposeRecursively(){this.dispose(),this.children.forEach(A=>{MI.is(A)&&A.disposeRecursively()})}toState(A=[]){let I={name:this.name,visible:this.visible,raycastLock:this.raycastLock,...this.toObjectTransformState(A)};return iy(I,A)}updateByObjUpdateOp(A,I){A!==void 0&&this.updateByOp({type:0,props:A,path:[]},{...this.data,...A},I,!1)}updateByOp(A,I,e,i){let t=this.data;this.data=I;let C=A,o=AC(A.path,["states","*"]);if(o!==null){if(A.type===0){let[B]=o;if((this==null?void 0:this.stateSelection)===B){let a={...A.props};if(delete a.name,Object.values(A.props).some(s=>s===void 0)){let s=this.data;if(s!==void 0){let r=ji.zoom(s,A.path.slice(2));if(r)for(let Q in A.props)A.props[Q]===void 0&&Q in r&&(a[Q]=r[Q])}}C={...A,props:a,path:A.path.slice(2)}}}}else if(A.type===0){let B=this.stateSelection?this.data.states.data(this.stateSelection):void 0;if(B!==void 0){if(A.props.name!==void 0&&B.name){let{name:s,...r}=B;B=r}if(A.props.material!==void 0&&"material"in B){let{material:s,...r}=B;B=r}let a=ji.removeOverridden(A.path,A.props,B);C={...A,props:a}}}if(this.updateByPatchedOpBase(C,cr.patch(this.data,this.stateSelection?this.data.states.data(this.stateSelection):void 0),e),AC(A.path,["overrides"])){let B=[],a=[...A.path];for(B.push(a[1]),a.splice(0,2);a.length>0&&a[0]==="descendants";)B.push(a[1]),a.splice(0,2);if(B[B.length-1]===void 0){if(A.type===0)for(let s of Object.keys(A.props)){B[B.length-1]=s;let r=e.scene.findInstance([this.uuid,...B]);r&&(r.overrideData=A.props[s],r.updateState(Da.apply(r.component.data,r.overrideData),e))}}else{let s=e.scene.findInstance([this.uuid,...B]);if(s){let r=ji.zoom(s.component.data,a);if(A={...A,path:a},A.type===0){let Q=A.props;if(r)for(let[E,n]of Object.entries(A.props))n===void 0&&(Q===A.props&&(Q={...A.props}),Q[E]=r[E]);A={...A,props:Q}}s.overrideData=_c.resolve(I.overrides,B),s.updateByOp(A,Fi.applySimple(s.data,A),e,!1)}}}else if(this.instances.length>0){let B;if(A.path.length===0&&A.type===0){let a;for(let s of sa.rootOverrideProps)s in A.props&&(a===void 0&&(a={}),a[s]=A.props[s]);a&&(B={...A,props:a})}else for(let a of sa.rootOverrideProps)if(AC(A.path,[a])){B=A;break}B!==void 0&&this.instances.forEach(a=>{if(a.isInstanceRoot){let s=Da.filterOp(a.overrideData,B);s&&a.updateByOp(s,Fi.applySimple(a.data,s),e,!0)}}),this.instances.forEach(a=>{if(!a.isInstanceRoot){let s=Da.filterOp(a.overrideData,A);if(s){let r;t===a.data&&A===s?r=I:r=Fi.applySimple(a.data,s),a.updateByOp(s,r,e,!0)}}})}}updateByPatchedOpBase(A,I,e){if(this.dataPatched=I,A.path.length===0&&A.type===0)A.props.type!==void 0&&!Kr.is(A.props.type)&&Qa.changeEntityProptotype(this,I,e);else if(A.path.length===1&&A.path[0]==="geometry"&&A.type===0&&"type"in A.props){Qa.changeEntityProptotype(this,I,e);for(let i of this.children)MI.is(i)&&i.updateVisible()}this.updateByPatchedOp(A,I,e)}updateByPatchedOp(A,I,e){if(A.path.length===0&&A.type===0&&this.updateState(A.props,e),AC(A.path,["pathSnapping"])!==null&&this.updatePathSnapping(I.pathSnapping),AC(A.path,["cloner"])!==null){let i=Fi.drop(A,1);i.path.length===0&&i.type===0&&i.props.disabled===!0?this.setFromClonerState(null,e):this.cloner?this.cloner.updateState(I.cloner,e.scene):(this.setFromClonerState(I.cloner,e),this.expandCloner(e.scene)),this.updateVisible()}}updatePathSnapping(A){this._updatedPathSnapping=A,this._needApplyPathSnapping=!0}get updatedPathSnapping(){return this._updatedPathSnapping}applyPathSnapping(A){var n,h,l,c,d;let I=((n=this._updatedPathSnapping)==null?void 0:n.pathId)??this.dataPatched.pathSnapping.pathId,e=((h=this._updatedPathSnapping)==null?void 0:h.slide)??this.dataPatched.pathSnapping.slide??0,i=((l=this._updatedPathSnapping)==null?void 0:l.offset)??this.dataPatched.pathSnapping.offset,t=((c=this._updatedPathSnapping)==null?void 0:c.orientation)??this.dataPatched.pathSnapping.orientation;if(I===null)return;let C=A.find(I);if(!C||this._needApplyPathSnapping===!1)return;this._needApplyPathSnapping=!1;let o=C.data;if(o.geometry.path.points.length<=1)return;let B=bR(o.geometry.path),a=(e+i)%1;e+i===1&&a===0&&(a=1);let s=B.getPointAt(a),r=this.parent?(d=this.parent)==null?void 0:d.matrixWorld:new zA;C.updateMatrixWorld();let Q=new zA().multiplyMatrices(r.clone().invert(),C.matrixWorld);s.applyMatrix4(Q);let E={position:s.toArray(),rotation:o.rotation};if(t==="tangential"){let u=new zA().extractRotation(C.matrixWorld),y=B.getTangentAt(a).applyMatrix4(u).add(s),f=new zA().lookAt(s,y,SZ),k=Uu.setFromEuler(new Ei().setFromRotationMatrix(f)).multiplyScalar(vg.RAD2DEG);E={...E,rotation:k.toArray()}}this.updateTransformState(E),this.traverseEntity(u=>{u._cameraType&&u.dispatchEvent(yZ)})}updateVisible(){var A;this.visible=this.dataPatched.visible&&(!this.dataPatched.cloner||(this.dataPatched.cloner.disabled??!1)||((A=this.dataPatched.cloner)==null?void 0:A.hideBase)!==!0)}updateState_Entity(A,I){A.name!==void 0&&(this.name=A.name),A.raycastLock!==void 0&&(this.raycastLock=A.raycastLock),A.visible!==void 0&&(this.updateVisible(),this.resetBBoxNeedsUpdate()),I&&"cloner"in A&&A.cloner!==void 0&&(this.setFromClonerState(A.cloner,I),this.updateVisible()),this.updateTransformState(A,I)}get attachedSurfaceCloners(){return this.children.filter(A=>A instanceof Qa.Cloner&&A.parameters.type==="toObject")}setFromClonerState(A,I){this.disposed||(A===null||A.disabled?(this.cloner&&this.cloner.removeFromParent(),this.cloner=void 0):this.cloner===void 0?(this.cloner=new Qa.Cloner(this,A),I.scene.addPendingExpandCloner(this)):this.cloner.updateState(A,I.scene))}expandCloner(A){!this.disposed&&this.cloner&&this.cloner.expandClones(A)}invalidateClonerTransform(A){this.cloner&&this.cloner.invalidateTransform(A)}},YR=class{static create(g){return this.build(this.normalizeInputs(g))}static normalizeInputs(g,A){let I=Object.assign({},(A==null?void 0:A.parameters)??{width:100,radialSegments:64,heightSegments:1,openEnded:!1,thetaStart:0,thetaLength:360,cornerRadius:8,cornerSegments:8,hollow:0},g.parameters);I.thetaLength=vg.clamp(I.thetaLength,0,360);let e=I.width/2,i=I.radiusTop??e,t=I.radiusBottom??e;return i===t?(i=e,t=e):i>t?(i=e,t=t*e/i):(i=i*e/t,t=e),{parameters:Object.assign(I,{width:Math.abs(I.width),height:Math.abs(I.height??I.width),depth:Math.abs(I.depth??I.width),radiusTop:i,radiusBottom:t})}}static build(g){let{width:A,depth:I,height:e,radialSegments:i,heightSegments:t,openEnded:C,thetaStart:o,thetaLength:B,radiusTop:a,radiusBottom:s,cornerRadius:r,cornerSegments:Q,hollow:E}=g.parameters,n;return B===0?(n=new bg,n.setAttribute("position",new pg([],3))):r||E?n=new xR(a,s,e,i,t,C,o,B*Math.PI/180,r,r,Q,E):n=new jw(a,s,e,i,t,C,o,B*Math.PI/180),n.scale(1,1,I/A),Object.assign(n,{userData:{...g,type:"CylinderGeometry"}})}};function _B(g,A,I){I.x=g.x*A.x,I.y=g.y,I.z=g.x*A.y}function wM(g){return new sA(g.y,-g.x)}var xR=class extends bg{constructor(g,A,I,e,i,t,C,o,B,a,s,r,Q=!1){super(),this.type="RoundedCylinderBufferGeometry",g=g!==void 0?g:1,A=A!==void 0?A:1,I=I||1,e=Math.floor(e)||8,i=Math.floor(i)||1,t=t!==void 0?t:!1,C=C!==void 0?C:0,o=o!==void 0?o:Math.PI*2,t&&(B=0,a=0);let E=[],n=[],h=[],l=[],c=0,d=I/2,u=new J,y=new J;Q&&g==0&&(g=B),Q&&A==0&&(A=a);let f=new sA(g,d),k=new sA(A,-d),M=null,G=null,v=null,N=null,b=f.clone().sub(k),O=0,H=0,_=0;r>0&&(O=Math.min(g,A)*(1-r),H=g-O,_=A-O);let gA=f.clone();gA.x-=O;let CA=Math.PI-b.angle(),AA=b.angle(),BA=Math.tan(AA/2),iA=Math.tan(CA/2),rA=BA+iA,$=r?rA:iA,IA=r?rA:BA;if(B=Math.min(B,(g-H)/$,b.length()/rA),a=Math.min(a,(A-_)/IA,b.length()/rA),B>0){let nA=B/BA;M=f.clone().sub(new sA(nA,B)),r&&(v=M.clone(),v.x-=O-rA*B),f.sub(b.clone().setLength(nA))}if(a>0){let nA=a/iA;G=k.clone().sub(new sA(nA,-a)),k.add(b.clone().setLength(nA)),r&&(N=G.clone(),N.x-=O-rA*a,gA.sub(b.clone().setLength(nA)))}b=f.clone().sub(k);let hA=b.length()<.5,QA=[];for(let nA=0;nA<=e;nA++){let fA=[],uA=nA/e,VA=uA*o+C,yA=new sA(Math.sin(VA),Math.cos(VA));N&&G?(DA(fA,uA,yA,CA,a,N,-1,!0),DA(fA,uA,yA,AA,a,G,-1,!1)):G?(eA(fA,yA,G.x,0,-1),DA(fA,uA,yA,AA,a,G,-1,!1)):t||eA(fA,yA,A,_,-1);let LA=wM(b).normalize();if(_B(LA,yA,u),!hA)for(let HA=0;HA<=i;HA++){let Ag=HA/i,gg=b.clone().multiplyScalar(Ag).add(k);_B(gg,yA,y),n.push(y.x,y.y,y.z),h.push(u.x,u.y,u.z),l.push(uA,.5+y.y/I),fA.push(c++)}if(v&&M?(DA(fA,uA,yA,CA,B,M,1,!1),DA(fA,uA,yA,AA,B,v,1,!0)):M?(DA(fA,uA,yA,CA,B,M,1,!1),eA(fA,yA,M.x,0,1)):t||eA(fA,yA,g,H,1),r&&!hA){let HA=wM(b).multiplyScalar(-1).normalize();_B(HA,yA,u);for(let Ag=0;Ag<=i;Ag++){let gg=Ag/i,Dg=b.clone().multiplyScalar(-gg).add(gA);_B(Dg,yA,y),n.push(y.x,y.y,y.z),h.push(u.x,u.y,u.z),l.push(uA,.5+y.y/I),fA.push(c++)}}r&&!t&&fA.push(fA[0]),QA.push(fA)}for(let nA=0;nAE.push(Dg,Eg,$A):(Dg,Eg,$A)=>E.push(Dg,$A,Eg),Ag=new sA((g+A+H+_)/4,0);_B(Ag,VA,LA),n.push(LA.x,LA.y,LA.z),h.push(yA.x,0,yA.y),l.push(.5,.5);let gg=c++;for(let Dg of fA){let Eg=n.slice(Dg*3,Dg*3+3);n.push(...Eg),h.push(yA.x,0,yA.y);let $A=l.slice(Dg*2,Dg*2+2);l.push(...$A),c++}for(let Dg=gg+1;Dg0||s>0||B<360?Q=new xR(0,A/2,e,i,t,C,o,B*Math.PI/180,a,s,r,0,!0):Q=new zN(A/2,e,i,t,C),Q.scale(1,1,I/A),Object.assign(Q,{userData:{...g,type:"ConeGeometry"}})}},GZ=class{static create(g){return this.build(this.normalizeInputs(g))}static normalizeInputs(g,A){let I=Object.assign({},(A==null?void 0:A.parameters)??{width:100,widthSegments:1,heightSegments:1,depthSegments:1,cornerRadius:8,cornerSegments:8},g.parameters);return{parameters:Object.assign(I,{width:Math.abs(I.width),height:Math.abs(I.height??I.width),depth:Math.abs(I.depth??I.width)})}}static build(g){let{width:A,height:I,depth:e,widthSegments:i,heightSegments:t,depthSegments:C,cornerRadius:o,cornerSegments:B}=g.parameters,a;return o==0?a=new Go(A,I,e,i,t,C):a=new kZ(A,I,e,i,t,C,o,B),Object.assign(a,{userData:{...g,type:"CubeGeometry"}})}},Nu=Math.PI/2,kZ=class extends bg{constructor(g=1,A=1,I=1,e=1,i=1,t=1,C=0,o=4){super(),this.type="BoxGeometry";let B=this;e=Math.floor(e),i=Math.floor(i),t=Math.floor(t),o=Math.floor(o),C=Math.min(C,g/2,A/2,I/2);let a=[],s=[],r=[],Q=[],E=0,n=0;h("z","y","x",-1,-1,I,A,g,t,i,0),h("z","y","x",1,-1,I,A,-g,t,i,1),h("x","z","y",1,1,g,I,A,e,t,2),h("x","z","y",1,-1,g,I,-A,e,t,3),h("x","y","z",1,-1,g,A,I,e,i,4),h("x","y","z",-1,-1,g,A,-I,e,i,5),C>0&&(l("z","y","x",-1,-1,1,I,A,g,t,0),l("z","y","x",1,-1,-1,I,A,g,t,1),l("z","y","x",-1,1,-1,I,A,g,t,1),l("z","y","x",1,1,1,I,A,g,t,0),l("x","y","z",-1,-1,-1,g,A,I,e,0),l("x","y","z",1,-1,1,g,A,I,e,1),l("x","y","z",-1,1,1,g,A,I,e,0),l("x","y","z",1,1,-1,g,A,I,e,1),l("y","x","z",-1,-1,1,A,g,I,i,0),l("y","x","z",1,-1,-1,A,g,I,i,1),l("y","x","z",1,1,1,A,g,I,i,1),l("y","x","z",-1,1,-1,A,g,I,i,0),c(1,1,1),c(-1,1,1),c(1,-1,1),c(-1,-1,1),c(1,1,-1),c(-1,1,-1),c(1,-1,-1),c(-1,-1,-1)),this.setIndex(a),this.setAttribute("position",new pg(s,3)),this.setAttribute("normal",new pg(r,3)),this.setAttribute("uv",new pg(Q,2));function h(d,u,y,f,k,M,G,v,N,b,O){let H=(M-2*C)/N,_=(G-2*C)/b,gA=M/2-C,CA=G/2-C,AA=v/2,BA=N+1,iA=b+1,rA=0,$=0,IA=new J;for(let hA=0;hA0?1:-1,r.push(IA.x,IA.y,IA.z),Q.push(DA/N),Q.push(1-hA/b),rA+=1}}for(let hA=0;hA0?(N,b,O)=>a.push(N,b,O):(N,b,O)=>a.push(N,O,b);for(let N=0;N<=o;N++){let b=[],O=Nu*(1-N/o),H=Math.cos(O),_=Math.sin(O),gA=0;for(let CA=0;CA<=N;CA++){let AA=Math.cos(gA),BA=Math.sin(gA);f.x=H*AA,f.y=_,f.z=H*BA;let iA=k.clone().addScaledVector(f,C);s.push(d*iA.x,u*iA.y,y*iA.z),r.push(d*f.x,u*f.y,y*f.z),Q.push(0,0),b.push(E++),gA+=Nu/N}M.push(b)}let v=M.length-1;for(let N=0;Nu.subVectors(iA,rA).normalize(),f=(iA,rA)=>Array(iA).fill(void 0).map(rA),k=f(A.length/3,(iA,rA)=>new J().fromArray(A,rA*3).setLength(i)),M=[],G=1e6;for(let iA=0;iAyA[0]==hA)}M.push(aA)}let v=[];{let iA=0,rA=0,$,IA,hA=Q==3;for(let QA=0;QA<=C;QA++){$=QA*(QA+1)/2,IA=(QA+1)*(QA+2)/2;for(let DA=0;DAf(Q,()=>E.clone()));for(let iA=0;iAaA.add(nA),QA).multiplyScalar(1/Q);for(let aA=0;aAuA[yA]);o.push(...VA.map(yA=>[yA.x,yA.y,yA.z]).flat()),a.push(...VA.map(yA=>(y(yA,N),[u.x,u.y,u.z])).flat())}}let AA=[];for(let iA=0;iADA%G==iA),hA=gA[iA][rA],QA=gA[$][IA];for(let DA=0;DA{o.push(uA[0].x,uA[0].y,uA[0].z),a.push(uA[1].x,uA[1].y,uA[1].z)})}AA.push(hA[0][0],QA[d][0],hA[d][0],QA[0][0])}}for(;AA.length;){let iA,rA,$,IA;[iA,rA]=AA.splice(0,2);let hA=[iA];for(;iA!=rA;)hA.push(rA),$=AA.indexOf(rA),IA=$%2,rA=AA.splice($-IA,2)[1-IA];u.subVectors(hA[0],hA[1]).cross(E.subVectors(hA[0],hA[2])).normalize();let QA=u.dot(hA[0])<0;QA&&u.negate();for(let DA=1;DA<=hA.length-2;DA++)[hA[DA+ +QA],hA[DA+1-+QA],hA[0]].forEach(eA=>{o.push(eA.x,eA.y,eA.z),a.push(u.x,u.y,u.z)})}}function r(){let Q=new J;for(let M=0;M{N<0&&M.x===1&&(B[G]=M.x-1),v.x===0&&v.z===0&&(B[G]=N/2/Math.PI+.5)};for(let M=0,G=0;M.9&&O<.1&&(G<.2&&(B[M+0]+=1),v<.2&&(B[M+2]+=1),N<.2&&(B[M+4]+=1))}function f(M){return Math.atan2(M.z,-M.x)}function k(M){return Math.atan2(-M.y,Math.sqrt(M.x*M.x+M.z*M.z))}}}static fromJSON(A){return new N0(A.vertices,A.indices,A.radius,A.corner,A.cornerSides)}},MZ=class{static create(g){return this.build(this.normalizeInputs(g))}static normalizeInputs(g,A){let I=Object.assign({},(A==null?void 0:A.parameters)??{width:100,detail:0,corner:0,cornerSides:4},g.parameters);return{parameters:Object.assign(I,{width:Math.abs(I.width),height:Math.abs(I.height??I.width),depth:Math.abs(I.depth??I.width)})}}static build(g){let{width:A,height:I,depth:e,detail:i,corner:t,cornerSides:C}=g.parameters,o=i===0&&t!==0?new HR(A*.5,t,C):new XN(A*.5,i);return o.scale(1,I/A,e/A),Object.assign(o,{userData:{...g,type:"DodecahedronGeometry"}})}},HR=class extends N0{constructor(g=1,A=.2,I=4){let e=(1+Math.sqrt(5))/2,i=1/e,t=[-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,-e,0,-i,e,0,i,-e,0,i,e,-i,-e,0,-i,e,0,i,-e,0,i,e,0,-e,0,-i,e,0,-i,-e,0,i,e,0,i],C=[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],o="DodecahedronGeometry";super(t,C,o,g,A,I),this.type=o}static fromJSON(g){return new HR(g.radius,g.corner,g.cornerSides)}},KE=1e-12,F0=class{constructor(g){this.position=new sA,this.startPosition=new sA,this.uuid=vg.generateUUID(),this.position=g.clone()}start(){this.reset()}reset(){this.startPosition.copy(this.position)}applyOffset(g){this.position.copy(this.startPosition).add(g)}copy(g){return this.position.copy(g.position),this.startPosition.copy(g.startPosition),this}clone(){return new F0(this.position).copy(this)}toJSON(){return[this.position.x,this.position.y]}},Ty=class extends F0{constructor(g){super(g.position),this.parent=g}copy(g){return super.copy(g),this}clone(){return new Ty(this.parent).copy(this)}},lQ=class extends F0{constructor(A,I){super(I),this.controls=[],this.roundness=0,this.areControlsDirectionsMirrored=!0,this.uuid=A,this.controls.push(new Ty(this),new Ty(this))}static create(A,I){let e=new lQ(A,new sA(...I.position));return e.controls[0].position.set(...I.controlPrevious.position),e.controls[1].position.set(...I.controlNext.position),e.roundness=I.roundness,e.areControlsDirectionsMirrored=I.areControlsDirectionsMirrored,e}getOppositeControl(A){let I=this.controls.indexOf(A);return I===0?this.controls[1]:I===1?this.controls[0]:null}applyOffsetToControls(A,I=1){for(let e=0,i=this.controls.length;eg,oE=new sA,VD=new sA,mZ=new sA,UZ=new sA,NZ=new sA,FZ=new sA,TR=new J,OR=new J;function RZ(g){let A=new sA;A.addVectors(g.v0,oE.subVectors(g.v1,g.v0).multiplyScalar(2/3));let I=new sA;return I.addVectors(g.v2,VD.subVectors(g.v1,g.v2).multiplyScalar(2/3)),new kC(g.v0,A,I,g.v2)}function XE(g,A,I=Number.EPSILON){return Math.abs(g-A)Math.PI&&(s*=-1),XE(a,o)?r=(o+a)*(e/s-.5)*8/3/(C-B):r=(C+B)*(e/s-.5)*8/3/(a-o),i.set(A.x-r*o,A.y+r*C),t.set(I.x+r*a,I.y-r*B),[i,t]}function fM(g,A){return g.position.equals(g.controls[1].position)&&A.position.equals(A.controls[0].position)}function GM(g,A){return Oy(g.position,g.controls[1].position,A.position)&&Oy(g.position,A.controls[0].position,A.position)}function YZ(g,A,I,e,i=.5){let t=oE.subVectors(A,g).multiplyScalar(i).add(g),C=VD.subVectors(I,A).multiplyScalar(i).add(A),o=mZ.subVectors(e,I).multiplyScalar(i).add(I),B=t,a=UZ.subVectors(C,t).multiplyScalar(i).add(t),s=NZ.subVectors(o,C).multiplyScalar(i).add(C),r=o,Q=FZ.subVectors(s,a).multiplyScalar(i).add(a);return[g.x,g.y,B.x,B.y,a.x,a.y,Q.x,Q.y,s.x,s.y,r.x,r.y,e.x,e.y]}function xZ(g,A,I=12,e=!0){let i=OR.set(0,0,0),t,C=0;for(let o=0;o1&&!(g.getX(C-1)===g.getX(0)&&g.getY(C-1)===g.getY(0)&&g.getZ(C-1)===g.getZ(0))&&(g.setXYZ(C,g.getX(0),g.getY(0),g.getZ(0)),C++),g}function HZ(g,A,I,e=12,i=!0){let t=OR.set(0,0,0),C=0,o=[];for(let B=0;B1&&!(g.getX(C-1)===g.getX(0)&&g.getY(C-1)===g.getY(0)&&g.getZ(C-1)===g.getZ(0))&&(g.setXYZ(C,g.getX(0),g.getY(0),g.getZ(0)),C++),o}function kM(g,A=12,I=!1){let e=[];for(let i=0,t=g.length;i0&&(e[i-1]+=B),o+=B}C.curveAfter!==void 0&&(o+=Mr(C.curveAfter,A)),e.push(o)}return g.length>0&&I&&g[0].roundedCurveCorner!==void 0&&(e[g.length-1]+=Mr(g[0].roundedCurveCorner,A)*.5),e}function Mr(g,A=12){return g&&g instanceof KD?A*2:g&&(g instanceof FC||g instanceof WN)?1:g&&g instanceof Pw?A*g.points.length:A}function TZ(g,A,I=12,e=!0){let i,t=0;for(let C=0;C1&&!(XE(g[t-1],g[1],KE)&&XE(g[t-2],g[0],KE))&&(g.push(g[0],g[1]),t++),g}var Fu=new sA,OZ=new sA,_Z=new sA,PZ=new sA,jZ=new sA,WZ=new sA,fe=class extends yc{constructor(A=100,I=100){super(),this.points=[],this.shapeHoles=[],this.plane=new Nt(new J(0,0,-1)),this.subdivision=0,this.controlSnapDistance=4,this.pointIDs=0,this.isMesh2D=!1,this.isText=!1,this._roundness=0,this.isClosed=!1,this.useCubicForRoundedCorners=!0,this.uuid=vg.generateUUID(),this.needsUpdate=!1,this.roundedCurves=[],this._width=A,this._height=I}static createFromState(A,I,e){let i=new fe;return i.isClosed=A.isClosed,i.points=A.points.map(t=>lQ.create(t.id,t.data)),typeof A.roundness=="number"&&(i.roundness=A.roundness),i.shapeHoles=A.shapeHoles.map(t=>fe.createFromState(t)),I!==void 0&&e!==void 0&&i.applySize(I,e),i.update(),i}get width(){return this._width}get height(){return this._height}get roundness(){return this._roundness}set roundness(A){if(this._roundness!==A){this._roundness=A;for(let I=0,e=this.points.length;Ithis.getPointIndexById(I)).filter(I=>I>=0)}getPointIndexById(A){let I=this.points.length,e=this.points.findIndex(i=>i.uuid===A);if(e<0){let i=I;for(let t=0,C=this.shapeHoles.length;t0){let I=this.points.length;for(let e=0,i=this.shapeHoles.length;e=0)return I;if(I=this.points.length,this.shapeHoles.length>0)for(let e=0,i=this.shapeHoles.length;e=0)return I+C;I+=t.points.length}return-1}getAllPoints(){let A=[].concat(...this.shapeHoles.map(I=>I.points));return[...this.points,...A]}applySize(A,I){A===0&&(A=.001),I===0&&(I=.001),this._width=A,this._height=I}applyScale(A,I){let e=Fu.set(A,I);for(let i=0,t=this.points.length;i=0&&this.points.splice(I,1),this.needsUpdate=!0}removePointById(A){let I=this.points.find(e=>e.uuid===A);I&&this.removePoint(I)}update(){for(let A=0,I=this.shapeHoles.length;At+C,0)+1}computeCurveDivisions(A=12){return this.curveDivisions=kM(this.points,A,!1),this.roundedCurveDivisions=kM(this.points,A,!0),this.curveDivisions}extractFilteredShapePointsToBuffer(A,I,e=12){return HZ(A,this.curves,I,e,this.autoClose).reduce((i,t)=>i+t,0)*2}extractShapePointsToFlatArray(A,I=12){return this.subdivision=I,this.curveDivisions===void 0&&this.computeCurveDivisions(I),TZ(A,this.roundedCurves,I,this.autoClose)}getCurveIndexFromVertexId(A,I=!1){let e=0;this.curveDivisions===void 0&&this.computeCurveDivisions(this.subdivision);let i=I?this.roundedCurveDivisions:this.curveDivisions,t=0;I&&this.points[0].roundedCurveCorner!==void 0&&(t=Mr(this.points[0].roundedCurveCorner,this.subdivision)*.5);let C=A-t;C<0&&(C+=i.reduce((o,B)=>o+B,0));for(let o=0,B=i.length;o=this.points.length-1?0:A+1],C=this.curveDivisions,o=C[A];if(fM(i,t)){let a=i.position.distanceTo(t.position);return i.position.distanceTo(Fu.set(e.x,e.y))/a}let B=0;for(let a=0;a2){let I=0;for(let e=0,i=this.points.length;e0&&!a){let s=t.curveBefore,r=t.curveAfter;if(s===void 0||r===void 0)continue;let Q=t.roundedCurveBefore,E=t.roundedCurveAfter,n=s.getLength(),h=r.getLength(),l=Math.min(B,n*.499),c=Math.min(B,h*.499),d=Math.min(l,c),u=1-d/n,y=d/h,f=s.getPointAt(u,Fu),k=r.getPointAt(y,OZ);this._subSplitCurve(s,Q,u,f,void 0),this._subSplitCurve(r,E,y,void 0,k);let M;if(this.useCubicForRoundedCorners){let G=_R(f,t.position,k)/2,v=Math.tan(G)*f.distanceTo(t.position),[N,b]=qZ(f,k,v,_Z,PZ),O=LZ(N,b,t.position),[H,_]=bZ(O,f,k,v,jZ,WZ);M=new kC(f.clone(),H.clone(),_.clone(),k.clone())}else M=new fa(f.clone(),t.position.clone(),k.clone());t.roundedCurveCorner=M,this.roundedCurves.splice(e+I,0,M),I++}}}}_subSplitCurve(A,I,e,i,t){if(A instanceof FC)i!==void 0&&I.v2.copy(i),t!==void 0&&I.v1.copy(t);else{let C=A,o=I,B=C.getUtoTmapping(e,0),a=YZ(C.v0,C.v1,C.v2,C.v3,B);return i!==void 0&&(o.v0.set(a[0],a[1]),o.v1.set(a[2],a[3]),o.v2.set(a[4],a[5]),o.v3.set(a[6],a[7])),t!==void 0&&(o.v0.set(a[6],a[7]),o.v1.set(a[8],a[9]),o.v2.set(a[10],a[11]),o.v3.set(a[12],a[13])),o}return I}clone(){let A=new fe(this._width,this._height);return A.points=this.points.map(I=>I.clone()),A.isClosed=this.isClosed,A.roundness=this.roundness,A.isMesh2D=this.isMesh2D,A.shapeHoles=this.shapeHoles.map(I=>I.clone()),A}toJSON(){return{points:this.points.reduce((A,I)=>A.concat(I.toJSON()),[]),shapeHoles:this.shapeHoles.map(A=>A.toJSON()),isClosed:this.isClosed,roundness:this.roundness}}fromJSON(A){var e;this.points=[],this.pointIDs=0;let I=A.points.length/7;for(let i=0;i{let t=new fe;return t.fromJSON(i),t}):[],this.isClosed=A.isClosed,this._roundness=A.roundness,this._update(),this}fromShape(A,I=!1){this.isText=I;let e=(t,C)=>{C instanceof kC&&C.v3.equals(t.position)&&t.controls[0].position.copy(C.v2)},i=t=>{let C=[],o,B;for(o=0,B=t.length;o0?t[o-1]:null,E;r instanceof kC?(E=this.createPoint(r.v0),E.controls[1].position.copy(r.v1)):r instanceof FC&&(E=this.createPoint(r.v1)),E!==void 0&&(Q!==null&&e(E,Q),C.push(E))}let a=t[t.length-1],s=!1;return a instanceof kC?a.v3.equals(C[0].position)&&(C[0].controls[0].position.copy(a.v2),s=!0):a instanceof FC&&a.v2.equals(C[0].position)&&(s=!0),this.isClosed=s,C};return this.points=i(A.curves),A instanceof yc&&(this.shapeHoles=A.holes.map(t=>{let C=new fe;return C.fromShape(t),C})),this.update(),this}updatePoint(A,I){let e=this.getPointByUuid(A);e&&(I.position!==void 0&&e.position.fromArray(I.position),I.roundness!==void 0&&(e.roundness=I.roundness),I.areControlsDirectionsMirrored!==void 0&&(e.areControlsDirectionsMirrored=I.areControlsDirectionsMirrored),this.needsUpdate=!0)}updatePreviousControl(A,I){var i;let e=(i=this.getPointByUuid(A))==null?void 0:i.controls[0];e&&(I.position&&e.position.fromArray(I.position),this.needsUpdate=!0)}updateNextControl(A,I){var i;let e=(i=this.getPointByUuid(A))==null?void 0:i.controls[1];e&&(I.position&&e.position.fromArray(I.position),this.needsUpdate=!0)}},_y=Math.PI*2;function Ru({x:g,y:A},I,e,i,t){return{x:g*I+i,y:A*e+t}}function ZZ(g,A){let I=A===1.5707963267948966?.551915024494:A===-1.5707963267948966?-.551915024494:1.3333333333333333*Math.tan(A/4),e=Math.cos(g),i=Math.sin(g),t=Math.cos(g+A),C=Math.sin(g+A);return[{x:e-i*I,y:i+e*I},{x:t+C*I,y:C-t*I},{x:t,y:C}]}function MM(g,A,I,e){let i=g*e-A*I<0?-1:1,t=Math.min(1,Math.max(-1,g*I+A*e));return i*Math.acos(t)}function VZ(g,A,I,e,i,t,C,o,B,a){let s=Math.pow(i,2),r=Math.pow(t,2),Q=Math.pow(C,2),E=Math.pow(o,2),n=s*r-s*E-r*Q;n<0&&(n=0),n/=s*E+r*Q,n=Math.sqrt(n)*(B===a?-1:1);let h=n*i/t*o,l=n*-t/i*C,c=h+(g+I)/2,d=l+(A+e)/2,u=(C-h)/i,y=(o-l)/t,f=(-C-h)/i,k=(-o-l)/t,M=MM(1,0,u,y),G=MM(u,y,f,k);return!a&&G>0&&(G-=_y),a&&G<0&&(G+=_y),{centerx:c,centery:d,ang1:M,ang2:G}}function zZ({px:g,py:A,cx:I,cy:e,rx:i,ry:t,largeArcFlag:C,sweepFlag:o}){let B=[];if(i===0||t===0)return[];let a=(g-I)/2,s=(A-e)/2;if(a===0&&s===0)return[];i=Math.abs(i),t=Math.abs(t);let r=Math.pow(a,2)/Math.pow(i,2)+Math.pow(s,2)/Math.pow(t,2);r>1&&(i*=Math.sqrt(r),t*=Math.sqrt(r));let Q=VZ(g,A,I,e,i,t,a,s,C,o),{ang1:E,ang2:n}=Q,{centerx:h,centery:l}=Q,c=Math.abs(n)/(_y/4);Math.abs(1-c)<1e-7&&(c=1);let d=Math.max(Math.ceil(c),1);n/=d;for(let u=0;u{let{x:y,y:f}=Ru(u[0],i,t,h,l),{x:k,y:M}=Ru(u[1],i,t,h,l),{x:G,y:v}=Ru(u[2],i,t,h,l);return{x1:y,y1:f,x2:k,y2:M,x:G,y:v}})}var jI;(function(g){g[g.ODD=0]="ODD",g[g.NONZERO=1]="NONZERO",g[g.POSITIVE=2]="POSITIVE",g[g.NEGATIVE=3]="NEGATIVE",g[g.ABS_GEQ_TWO=4]="ABS_GEQ_TWO"})(jI||(jI={}));var Pe;(function(g){g[g.POLYGONS=0]="POLYGONS",g[g.CONNECTED_POLYGONS=1]="CONNECTED_POLYGONS",g[g.BOUNDARY_CONTOURS=2]="BOUNDARY_CONTOURS"})(Pe||(Pe={}));function jg(g,A){if(!g)throw A||"Assertion Failed!"}var Yg=function(){function g(){}return g.vertEq=function(A,I){return A.s===I.s&&A.t===I.t},g.vertLeq=function(A,I){return A.s0?i0?(I.t-e.t)*i+(I.t-A.t)*t:0},g.transEval=function(A,I,e){jg(g.transLeq(A,I)&&g.transLeq(I,e));var i=I.t-A.t,t=e.t-I.t;return i+t>0?i0?(I.s-e.s)*i+(I.s-A.s)*t:0},g.vertCCW=function(A,I,e){return A.s*(I.t-e.t)+I.s*(e.t-A.t)+e.s*(A.t-I.t)>=0},g.interpolate=function(A,I,e,i){return A=A<0?0:A,e=e<0?0:e,A<=e?e===0?(I+i)/2:I+(i-I)*(A/(A+e)):i+(I-i)*(e/(A+e))},g.intersect=function(A,I,e,i,t){var C,o,B;g.vertLeq(A,I)||(B=A,A=I,I=B),g.vertLeq(e,i)||(B=e,e=i,i=B),g.vertLeq(A,e)||(B=A,A=e,e=B,B=I,I=i,i=B),g.vertLeq(e,I)?g.vertLeq(I,i)?(C=g.edgeEval(A,e,I),o=g.edgeEval(e,I,i),C+o<0&&(C=-C,o=-o),t.s=g.interpolate(C,e.s,o,I.s)):(C=g.edgeSign(A,e,I),o=-g.edgeSign(A,i,I),C+o<0&&(C=-C,o=-o),t.s=g.interpolate(C,e.s,o,i.s)):t.s=(e.s+I.s)/2,g.transLeq(A,I)||(B=A,A=I,I=B),g.transLeq(e,i)||(B=e,e=i,i=B),g.transLeq(A,e)||(B=A,A=e,e=B,B=I,I=i,i=B),g.transLeq(e,I)?g.transLeq(I,i)?(C=g.transEval(A,e,I),o=g.transEval(e,I,i),C+o<0&&(C=-C,o=-o),t.t=g.interpolate(C,e.t,o,I.t)):(C=g.transSign(A,e,I),o=-g.transSign(A,i,I),C+o<0&&(C=-C,o=-o),t.t=g.interpolate(C,e.t,o,i.t)):t.t=(e.t+I.t)/2},g}(),JE=function(){function g(){this.next=null,this.prev=null,this.anEdge=null,this.trail=null,this.n=0,this.marked=!1,this.inside=!1}return g}(),ll=function(){function g(A){this.side=A,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(g.prototype,"Rface",{get:function(){return this.Sym.Lface},set:function(A){this.Sym.Lface=A},enumerable:!0,configurable:!0}),Object.defineProperty(g.prototype,"Dst",{get:function(){return this.Sym.Org},set:function(A){this.Sym.Org=A},enumerable:!0,configurable:!0}),Object.defineProperty(g.prototype,"Oprev",{get:function(){return this.Sym.Lnext},set:function(A){this.Sym.Lnext=A},enumerable:!0,configurable:!0}),Object.defineProperty(g.prototype,"Lprev",{get:function(){return this.Onext.Sym},set:function(A){this.Onext.Sym=A},enumerable:!0,configurable:!0}),Object.defineProperty(g.prototype,"Dprev",{get:function(){return this.Lnext.Sym},set:function(A){this.Lnext.Sym=A},enumerable:!0,configurable:!0}),Object.defineProperty(g.prototype,"Rprev",{get:function(){return this.Sym.Onext},set:function(A){this.Sym.Onext=A},enumerable:!0,configurable:!0}),Object.defineProperty(g.prototype,"Dnext",{get:function(){return this.Sym.Onext.Sym},set:function(A){this.Sym.Onext.Sym=A},enumerable:!0,configurable:!0}),Object.defineProperty(g.prototype,"Rnext",{get:function(){return this.Sym.Lnext.Sym},set:function(A){this.Sym.Lnext.Sym=A},enumerable:!0,configurable:!0}),g}(),Zs=function(){function g(){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 g}(),mM=function(){function g(){var A=new Zs,I=new JE,e=new ll(0),i=new ll(1);A.next=A.prev=A,A.anEdge=null,I.next=I.prev=I,e.next=e,e.Sym=i,i.next=i,i.Sym=e,this.vHead=A,this.fHead=I,this.eHead=e,this.eHeadSym=i}return g.prototype.makeEdge_=function(A){var I=new ll(0),e=new ll(1);A.Sym.sidethis.size||this.leq(e[i].key,e[t].key)){I[A].handle=i,e[i].node=A;break}I[A].handle=t,e[t].node=A,A=C}},g.prototype.floatUp_=function(A){var I=this.nodes,e=this.handles,i,t,C;for(i=I[A].handle;;){if(C=A>>1,t=I[C].handle,C===0||this.leq(e[t].key,e[i].key)){I[A].handle=i,e[i].node=A;break}I[A].handle=t,e[t].node=A,A=C}},g.prototype.init=function(){for(var A=this.size;A>=1;--A)this.floatDown_(A);this.initialized=!0},g.prototype.min=function(){return this.handles[this.nodes[1].handle].key},g.prototype.insert=function(A){var I,e;if(I=++this.size,I*2>this.max){this.max*=2;var i,t;for(t=this.nodes.length,this.nodes.length=this.max+1,i=t;i0&&(A[1].handle=A[this.size].handle,I[A[1].handle].node=1,I[e].key=null,I[e].node=this.freeList,this.freeList=e,--this.size,this.size>0&&this.floatDown_(1)),i},g.prototype.delete=function(A){var I=this.nodes,e=this.handles,i;jg(A>=1&&A<=this.max&&e[A].key!==null),i=e[A].node,I[i].handle=I[this.size].handle,e[I[i].handle].node=i,--this.size,i<=this.size&&(i<=1||this.leq(e[I[i>>1].handle].key,e[I[i].handle].key)?this.floatDown_(i):this.floatUp_(i)),e[A].key=null,e[A].node=this.freeList,this.freeList=A},g}(),Ku=function(){function g(){this.eUp=null,this.nodeUp=null,this.windingNumber=0,this.inside=!1,this.sentinel=!1,this.dirty=!1,this.fixUpperEdge=!1}return g}(),FM=function(){function g(){this.key=null,this.next=null,this.prev=null}return g}(),$Z=function(){function g(A,I){this.frame=A,this.leq=I,this.head=new FM,this.head.next=this.head,this.head.prev=this.head}return g.prototype.min=function(){return this.head.next},g.prototype.max=function(){return this.head.prev},g.prototype.insert=function(A){return this.insertBefore(this.head,A)},g.prototype.search=function(A){var I=this.head;do I=I.next;while(I.key!==null&&!this.leq(this.frame,A,I.key));return I},g.prototype.insertBefore=function(A,I){do A=A.prev;while(A.key!==null&&!this.leq(this.frame,A.key,I));var e=new FM;return e.key=I,e.next=A.next,A.next.prev=e,e.prev=A,A.next=e,e},g.prototype.delete=function(A){A.next.prev=A.prev,A.prev.next=A.next},g}(),AV=function(){function g(){}return g.regionBelow=function(A){return A.nodeUp.prev.key},g.regionAbove=function(A){return A.nodeUp.next.key},g.debugEvent=function(A){},g.addWinding=function(A,I){A.winding+=I.winding,A.Sym.winding+=I.Sym.winding},g.edgeLeq=function(A,I,e){var i=A.event,t=I.eUp,C=e.eUp;if(t.Dst===i)return C.Dst===i?Yg.vertLeq(t.Org,C.Org)?Yg.edgeSign(C.Dst,t.Org,C.Org)<=0:Yg.edgeSign(t.Dst,C.Org,t.Org)>=0:Yg.edgeSign(C.Dst,i,C.Org)<=0;if(C.Dst===i)return Yg.edgeSign(t.Dst,i,t.Org)>=0;var o=Yg.edgeEval(t.Dst,i,t.Org),B=Yg.edgeEval(C.Dst,i,C.Org);return o>=B},g.deleteRegion=function(A,I){I.fixUpperEdge&&jg(I.eUp.winding===0),I.eUp.activeRegion=null,A.dict.delete(I.nodeUp)},g.fixUpperEdge=function(A,I,e){jg(I.fixUpperEdge),A.mesh.delete(I.eUp),I.fixUpperEdge=!1,I.eUp=e,e.activeRegion=I},g.topLeftRegion=function(A,I){var e=I.eUp.Org,i;do I=g.regionAbove(I);while(I.eUp.Org===e);if(I.fixUpperEdge){if(i=A.mesh.connect(g.regionBelow(I).eUp.Sym,I.eUp.Lnext),i===null)return null;g.fixUpperEdge(A,I,i),I=g.regionAbove(I)}return I},g.topRightRegion=function(A){var I=A.eUp.Dst;do A=g.regionAbove(A);while(A.eUp.Dst===I);return A},g.addRegionBelow=function(A,I,e){var i=new Ku;return i.eUp=e,i.nodeUp=A.dict.insertBefore(I.nodeUp,i),i.fixUpperEdge=!1,i.sentinel=!1,i.dirty=!1,e.activeRegion=i,i},g.isWindingInside=function(A,I){switch(A.windingRule){case jI.ODD:return(I&1)!==0;case jI.NONZERO:return I!==0;case jI.POSITIVE:return I>0;case jI.NEGATIVE:return I<0;case jI.ABS_GEQ_TWO:return I>=2||I<=-2}throw new Error("Invalid winding rulle")},g.computeWinding=function(A,I){I.windingNumber=g.regionAbove(I).windingNumber+I.eUp.winding,I.inside=g.isWindingInside(A,I.windingNumber)},g.finishRegion=function(A,I){var e=I.eUp,i=e.Lface;i.inside=I.inside,i.anEdge=e,g.deleteRegion(A,I)},g.finishLeftRegions=function(A,I,e){for(var i,t=null,C=I,o=I.eUp;C!==e;){if(C.fixUpperEdge=!1,t=g.regionBelow(C),i=t.eUp,i.Org!=o.Org){if(!t.fixUpperEdge){g.finishRegion(A,C);break}i=A.mesh.connect(o.Lprev,i.Sym),g.fixUpperEdge(A,t,i)}o.Onext!==i&&(A.mesh.splice(i.Oprev,i),A.mesh.splice(o,i)),g.finishRegion(A,C),o=t.eUp,C=t}return o},g.addRightEdges=function(A,I,e,i,t,C){var o,B,a,s,r=!0;a=e;do jg(Yg.vertLeq(a.Org,a.Dst)),g.addRegionBelow(A,I,a.Sym),a=a.Onext;while(a!==i);for(t===null&&(t=g.regionBelow(I).eUp.Rprev),B=I,s=t;o=g.regionBelow(B),a=o.eUp.Sym,a.Org===s.Org;)a.Onext!==s&&(A.mesh.splice(a.Oprev,a),A.mesh.splice(s.Oprev,a)),o.windingNumber=B.windingNumber-a.winding,o.inside=g.isWindingInside(A,o.windingNumber),B.dirty=!0,!r&&g.checkForRightSplice(A,B)&&(g.addWinding(a,s),g.deleteRegion(A,B),A.mesh.delete(s)),r=!1,B=o,s=a;B.dirty=!0,jg(B.windingNumber-a.winding===o.windingNumber),C&&g.walkDirtyRegions(A,B)},g.spliceMergeVertices=function(A,I,e){A.mesh.splice(I,e)},g.vertexWeights=function(A,I,e){var i=Yg.vertL1dist(I,A),t=Yg.vertL1dist(e,A),C=.5*t/(i+t),o=.5*i/(i+t);A.coords[0]+=C*I.coords[0]+o*e.coords[0],A.coords[1]+=C*I.coords[1]+o*e.coords[1],A.coords[2]+=C*I.coords[2]+o*e.coords[2]},g.getIntersectData=function(A,I,e,i,t,C){I.coords[0]=I.coords[1]=I.coords[2]=0,I.idx=-1,g.vertexWeights(I,e,i),g.vertexWeights(I,t,C)},g.checkForRightSplice=function(A,I){var e=g.regionBelow(I),i=I.eUp,t=e.eUp;if(Yg.vertLeq(i.Org,t.Org)){if(Yg.edgeSign(t.Dst,i.Org,t.Org)>0)return!1;Yg.vertEq(i.Org,t.Org)?i.Org!==t.Org&&(A.pq.delete(i.Org.pqHandle),g.spliceMergeVertices(A,t.Oprev,i)):(A.mesh.splitEdge(t.Sym),A.mesh.splice(i,t.Oprev),I.dirty=e.dirty=!0)}else{if(Yg.edgeSign(i.Dst,t.Org,i.Org)<0)return!1;g.regionAbove(I).dirty=I.dirty=!0,A.mesh.splitEdge(i.Sym),A.mesh.splice(t.Oprev,i)}return!0},g.checkForLeftSplice=function(A,I){var e=g.regionBelow(I),i=I.eUp,t=e.eUp,C;if(jg(!Yg.vertEq(i.Dst,t.Dst)),Yg.vertLeq(i.Dst,t.Dst)){if(Yg.edgeSign(i.Dst,t.Dst,i.Org)<0)return!1;g.regionAbove(I).dirty=I.dirty=!0,C=A.mesh.splitEdge(i),A.mesh.splice(t.Sym,C),C.Lface.inside=I.inside}else{if(Yg.edgeSign(t.Dst,i.Dst,t.Org)>0)return!1;I.dirty=e.dirty=!0,C=A.mesh.splitEdge(t),A.mesh.splice(i.Lnext,t.Sym),C.Rface.inside=I.inside}return!0},g.checkForIntersect=function(A,I){var e=g.regionBelow(I),i=I.eUp,t=e.eUp,C=i.Org,o=t.Org,B=i.Dst,a=t.Dst,s,r,Q=new Zs,E,n;if(jg(!Yg.vertEq(a,B)),jg(Yg.edgeSign(B,A.event,C)<=0),jg(Yg.edgeSign(a,A.event,o)>=0),jg(C!==A.event&&o!==A.event),jg(!I.fixUpperEdge&&!e.fixUpperEdge),C===o||(s=Math.min(C.t,B.t),r=Math.max(o.t,a.t),s>r))return!1;if(Yg.vertLeq(C,o)){if(Yg.edgeSign(a,C,o)>0)return!1}else if(Yg.edgeSign(B,o,C)<0)return!1;return g.debugEvent(A),Yg.intersect(B,C,a,o,Q),jg(Math.min(C.t,B.t)<=Q.t),jg(Q.t<=Math.max(o.t,a.t)),jg(Math.min(a.s,B.s)<=Q.s),jg(Q.s<=Math.max(o.s,C.s)),Yg.vertLeq(Q,A.event)&&(Q.s=A.event.s,Q.t=A.event.t),E=Yg.vertLeq(C,o)?C:o,Yg.vertLeq(E,Q)&&(Q.s=E.s,Q.t=E.t),Yg.vertEq(Q,C)||Yg.vertEq(Q,o)?(g.checkForRightSplice(A,I),!1):!Yg.vertEq(B,A.event)&&Yg.edgeSign(B,A.event,Q)>=0||!Yg.vertEq(a,A.event)&&Yg.edgeSign(a,A.event,Q)<=0?a===A.event?(A.mesh.splitEdge(i.Sym),A.mesh.splice(t.Sym,i),I=g.topLeftRegion(A,I),i=g.regionBelow(I).eUp,g.finishLeftRegions(A,g.regionBelow(I),e),g.addRightEdges(A,I,i.Oprev,i,i,!0),!0):B===A.event?(A.mesh.splitEdge(t.Sym),A.mesh.splice(i.Lnext,t.Oprev),e=I,I=g.topRightRegion(I),n=g.regionBelow(I).eUp.Rprev,e.eUp=t.Oprev,t=g.finishLeftRegions(A,e,null),g.addRightEdges(A,I,t.Onext,i.Rprev,n,!0),!0):(Yg.edgeSign(B,A.event,Q)>=0&&(g.regionAbove(I).dirty=I.dirty=!0,A.mesh.splitEdge(i.Sym),i.Org.s=A.event.s,i.Org.t=A.event.t),Yg.edgeSign(a,A.event,Q)<=0&&(I.dirty=e.dirty=!0,A.mesh.splitEdge(t.Sym),t.Org.s=A.event.s,t.Org.t=A.event.t),!1):(A.mesh.splitEdge(i.Sym),A.mesh.splitEdge(t.Sym),A.mesh.splice(t.Oprev,i),i.Org.s=Q.s,i.Org.t=Q.t,i.Org.pqHandle=A.pq.insert(i.Org),g.getIntersectData(A,i.Org,C,B,o,a),g.regionAbove(I).dirty=I.dirty=e.dirty=!0,!1)},g.walkDirtyRegions=function(A,I){for(var e=g.regionBelow(I),i,t;;){for(;e.dirty;)I=e,e=g.regionBelow(e);if(!I.dirty&&(e=I,I=g.regionAbove(I),I===null||!I.dirty))return;if(I.dirty=!1,i=I.eUp,t=e.eUp,i.Dst!==t.Dst&&g.checkForLeftSplice(A,I)&&(e.fixUpperEdge?(g.deleteRegion(A,e),A.mesh.delete(t),e=g.regionBelow(I),t=e.eUp):I.fixUpperEdge&&(g.deleteRegion(A,I),A.mesh.delete(i),I=g.regionAbove(e),i=I.eUp)),i.Org!==t.Org)if(i.Dst!==t.Dst&&!I.fixUpperEdge&&!e.fixUpperEdge&&(i.Dst===A.event||t.Dst===A.event)){if(g.checkForIntersect(A,I))return}else g.checkForRightSplice(A,I);i.Org===t.Org&&i.Dst===t.Dst&&(g.addWinding(t,i),g.deleteRegion(A,I),A.mesh.delete(i),I=g.regionAbove(e))}},g.connectRightVertex=function(A,I,e){var i,t=e.Onext,C=g.regionBelow(I),o=I.eUp,B=C.eUp,a=!1;if(o.Dst!==B.Dst&&g.checkForIntersect(A,I),Yg.vertEq(o.Org,A.event)&&(A.mesh.splice(t.Oprev,o),I=g.topLeftRegion(A,I),t=g.regionBelow(I).eUp,g.finishLeftRegions(A,g.regionBelow(I),C),a=!0),Yg.vertEq(B.Org,A.event)&&(A.mesh.splice(e,B.Oprev),e=g.finishLeftRegions(A,C,null),a=!0),a){g.addRightEdges(A,I,e.Onext,t,t,!0);return}Yg.vertLeq(B.Org,o.Org)?i=B.Oprev:i=o,i=A.mesh.connect(e.Lprev,i),g.addRightEdges(A,I,i,i.Onext,i.Onext,!1),i.Sym.activeRegion.fixUpperEdge=!0,g.walkDirtyRegions(A,I)},g.connectLeftDegenerate=function(A,I,e){var i,t,C,o,B;if(i=I.eUp,Yg.vertEq(i.Org,e)){jg(!1),g.spliceMergeVertices(A,i,e.anEdge);return}if(!Yg.vertEq(i.Dst,e)){A.mesh.splitEdge(i.Sym),I.fixUpperEdge&&(A.mesh.delete(i.Onext),I.fixUpperEdge=!1),A.mesh.splice(e.anEdge,i),g.sweepEvent(A,e);return}jg(!1),I=g.topRightRegion(I),B=g.regionBelow(I),C=B.eUp.Sym,t=o=C.Onext,B.fixUpperEdge&&(jg(t!==C),g.deleteRegion(A,B),A.mesh.delete(C),C=t.Oprev),A.mesh.splice(e.anEdge,C),Yg.edgeGoesLeft(t)||(t=null),g.addRightEdges(A,I,C.Onext,o,t,!0)},g.connectLeftVertex=function(A,I){var e,i,t,C,o,B,a=new Ku;if(a.eUp=I.anEdge.Sym,e=A.dict.search(a).key,i=g.regionBelow(e),!!i){if(C=e.eUp,o=i.eUp,Yg.edgeSign(C.Dst,I,C.Org)===0){g.connectLeftDegenerate(A,e,I);return}if(t=Yg.vertLeq(o.Dst,C.Dst)?e:i,e.inside||t.fixUpperEdge){if(t===e)B=A.mesh.connect(I.anEdge.Sym,C.Lnext);else{var s=A.mesh.connect(o.Dnext,I.anEdge);B=s.Sym}t.fixUpperEdge?g.fixUpperEdge(A,t,B):g.computeWinding(A,g.addRegionBelow(A,e,B)),g.sweepEvent(A,I)}else g.addRightEdges(A,e,I.anEdge,I.anEdge,null,!0)}},g.sweepEvent=function(A,I){A.event=I,g.debugEvent(A);for(var e=I.anEdge;e.activeRegion===null;)if(e=e.Onext,e===I.anEdge){g.connectLeftVertex(A,I);return}var i=g.topLeftRegion(A,e.activeRegion);jg(i!==null);var t=g.regionBelow(i),C=t.eUp,o=g.finishLeftRegions(A,t,null);o.Onext===C?g.connectRightVertex(A,i,o):g.addRightEdges(A,i,o.Onext,C,C,!0)},g.addSentinel=function(A,I,e,i){var t=new Ku,C=A.mesh.makeEdge();C.Org.s=e,C.Org.t=i,C.Dst.s=I,C.Dst.t=i,A.event=C.Dst,t.eUp=C,t.windingNumber=0,t.inside=!1,t.fixUpperEdge=!1,t.sentinel=!0,t.dirty=!1,t.nodeUp=A.dict.insert(t)},g.initEdgeDict=function(A){A.dict=new $Z(A,g.edgeLeq);var I=A.bmax[0]-A.bmin[0],e=A.bmax[1]-A.bmin[1],i=A.bmin[0]-I,t=A.bmax[0]+I,C=A.bmin[1]-e,o=A.bmax[1]+e;g.addSentinel(A,i,t,C),g.addSentinel(A,i,t,o)},g.doneEdgeDict=function(A){for(var I,e=0;(I=A.dict.min().key)!==null;)I.sentinel||(jg(I.fixUpperEdge),jg(++e===1)),jg(I.windingNumber===0),g.deleteRegion(A,I)},g.removeDegenerateEdges=function(A){var I,e,i,t=A.mesh.eHead;for(I=t.next;I!==t;I=e)e=I.next,i=I.Lnext,Yg.vertEq(I.Org,I.Dst)&&I.Lnext.Lnext!==I&&(g.spliceMergeVertices(A,i,I),A.mesh.delete(I),I=i,i=I.Lnext),i.Lnext===I&&(i!==I&&((i===e||i===e.Sym)&&(e=e.next),A.mesh.delete(i)),(I===e||I===e.Sym)&&(e=e.next),A.mesh.delete(I))},g.initPriorityQ=function(A){var I,e,i,t=0;for(i=A.mesh.vHead,e=i.next;e!==i;e=e.next)t++;for(t+=8,I=A.pq=new XZ(t,Yg.vertLeq),i=A.mesh.vHead,e=i.next;e!==i;e=e.next)e.pqHandle=I.insert(e);return e!==i?!1:(I.init(),!0)},g.donePriorityQ=function(A){A.pq=null},g.removeDegenerateFaces=function(A,I){var e,i,t;for(e=I.fHead.next;e!==I.fHead;e=i)i=e.next,t=e.anEdge,jg(t.Lnext!==t),t.Lnext.Lnext===t&&(g.addWinding(t.Onext,t),A.mesh.delete(t));return!0},g.computeInterior=function(A,I){I===void 0&&(I=!0);var e,i;if(g.removeDegenerateEdges(A),!g.initPriorityQ(A))return!1;for(g.initEdgeDict(A);(e=A.pq.extractMin())!==null;){for(;i=A.pq.min(),!(i===null||!Yg.vertEq(i,e));)i=A.pq.extractMin(),g.spliceMergeVertices(A,e.anEdge,i.anEdge);g.sweepEvent(A,e)}return A.event=A.dict.min().key.eUp.Org,g.debugEvent(A),g.doneEdgeDict(A),g.donePriorityQ(A),g.removeDegenerateFaces(A,A.mesh)?(I&&A.mesh.check(),!0):!1},g}(),gV=function(){function g(){this.mesh=new mM,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=jI.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 g.prototype.dot_=function(A,I){return A[0]*I[0]+A[1]*I[1]+A[2]*I[2]},g.prototype.normalize_=function(A){var I=A[0]*A[0]+A[1]*A[1]+A[2]*A[2];if(!I)throw"Zero-size vector!";I=Math.sqrt(I),A[0]/=I,A[1]/=I,A[2]/=I},g.prototype.longAxis_=function(A){var I=0;return Math.abs(A[1])>Math.abs(A[0])&&(I=1),Math.abs(A[2])>Math.abs(A[I])&&(I=2),I},g.prototype.computeNormal_=function(A){var I,e,i,t,C,o,B=[0,0,0],a=[0,0,0],s=[0,0,0],r=[0,0,0],Q=[0,0,0],E=[null,null,null],n=[null,null,null],h=this.mesh.vHead;I=h.next;for(var l=0;l<3;++l)t=I.coords[l],a[l]=t,n[l]=I,B[l]=t,E[l]=I;for(I=h.next;I!==h;I=I.next)for(var c=0;c<3;++c)t=I.coords[c],tB[c]&&(B[c]=t,E[c]=I);var d=0;if(B[1]-a[1]>B[0]-a[0]&&(d=1),B[2]-a[2]>B[d]-a[d]&&(d=2),a[d]>=B[d]){A[0]=0,A[1]=0,A[2]=1;return}for(o=0,e=n[d],i=E[d],s[0]=e.coords[0]-i.coords[0],s[1]=e.coords[1]-i.coords[1],s[2]=e.coords[2]-i.coords[2],I=h.next;I!==h;I=I.next)r[0]=I.coords[0]-i.coords[0],r[1]=I.coords[1]-i.coords[1],r[2]=I.coords[2]-i.coords[2],Q[0]=s[1]*r[2]-s[2]*r[1],Q[1]=s[2]*r[0]-s[0]*r[2],Q[2]=s[0]*r[1]-s[1]*r[0],C=Q[0]*Q[0]+Q[1]*Q[1]+Q[2]*Q[2],C>o&&(o=C,A[0]=Q[0],A[1]=Q[1],A[2]=Q[2]);o<=0&&(A[0]=A[1]=A[2]=0,A[this.longAxis_(s)]=1)},g.prototype.checkOrientation_=function(){for(var A=this.mesh.fHead,I,e=this.mesh.vHead,i,t=0,C=A.next;C!==A;C=C.next)if(i=C.anEdge,!(i.winding<=0))do t+=(i.Org.s-i.Dst.s)*(i.Org.t+i.Dst.t),i=i.Lnext;while(i!==C.anEdge);if(t<0){for(I=e.next;I!==e;I=I.next)I.t=-I.t;this.tUnit[0]=-this.tUnit[0],this.tUnit[1]=-this.tUnit[1],this.tUnit[2]=-this.tUnit[2]}},g.prototype.projectPolygon_=function(){var A=this.mesh.vHead,I=[0,0,0],e,i,t=!1;I[0]=this.normal[0],I[1]=this.normal[1],I[2]=this.normal[2],!I[0]&&!I[1]&&!I[2]&&(this.computeNormal_(I),t=!0),e=this.sUnit,i=this.tUnit;var C=this.longAxis_(I);e[C]=0,e[(C+1)%3]=1,e[(C+2)%3]=0,i[C]=0,i[(C+1)%3]=0,i[(C+2)%3]=I[C]>0?1:-1;for(var o=A.next;o!==A;o=o.next)o.s=this.dot_(o.coords,e),o.t=this.dot_(o.coords,i);t&&this.checkOrientation_();for(var B=!0,a=A.next;a!==A;a=a.next)B?(this.bmin[0]=this.bmax[0]=a.s,this.bmin[1]=this.bmax[1]=a.t,B=!1):(a.sthis.bmax[0]&&(this.bmax[0]=a.s),a.tthis.bmax[1]&&(this.bmax[1]=a.t))},g.prototype.addWinding_=function(A,I){A.winding+=I.winding,A.Sym.winding+=I.Sym.winding},g.prototype.tessellateMonoRegion_=function(A,I){var e,i;if(e=I.anEdge,!(e.Lnext!==e&&e.Lnext.Lnext!==e))throw"Mono region invalid";for(;Yg.vertLeq(e.Dst,e.Org);e=e.Lprev);for(;Yg.vertLeq(e.Org,e.Dst);e=e.Lnext);i=e.Lprev;for(var t=void 0;e.Lnext!==i;)if(Yg.vertLeq(e.Dst,i.Org)){for(;i.Lnext!==e&&(Yg.edgeGoesLeft(i.Lnext)||Yg.edgeSign(i.Org,i.Dst,i.Lnext.Dst)<=0);)t=A.connect(i.Lnext,i),i=t.Sym;i=i.Lprev}else{for(;i.Lnext!==e&&(Yg.edgeGoesRight(e.Lprev)||Yg.edgeSign(e.Dst,e.Org,e.Lprev.Org)>=0);)t=A.connect(e,e.Lprev),e=t.Sym;e=e.Lnext}if(i.Lnext===e)throw"Mono region invalid";for(;i.Lnext.Lnext!==e;)t=A.connect(i.Lnext,i),i=t.Sym;return!0},g.prototype.tessellateInterior_=function(A){for(var I,e=A.fHead.next;e!==A.fHead;e=I)if(I=e.next,e.inside&&!this.tessellateMonoRegion_(A,e))return!1;return!0},g.prototype.discardExterior_=function(A){for(var I,e=A.fHead.next;e!==A.fHead;e=I)I=e.next,e.inside||A.zapFace(e)},g.prototype.setWindingNumber_=function(A,I,e){for(var i,t=A.eHead.next;t!==A.eHead;t=i)i=t.next,t.Rface.inside!==t.Lface.inside?t.winding=t.Lface.inside?I:-I:e?A.delete(t):t.winding=0},g.prototype.getNeighbourFace_=function(A){return!A.Rface||!A.Rface.inside?-1:A.Rface.n},g.prototype.outputPolymesh_=function(A,I,e,i){var t,C=0,o=0,B;e>3&&A.mergeConvexFaces(e);for(var a=A.vHead.next;a!==A.vHead;a=a.next)a.n=-1;for(var s=A.fHead.next;s!==A.fHead;s=s.next)if(s.n=-1,!!s.inside){t=s.anEdge,B=0;do{var a=t.Org;a.n===-1&&(a.n=o,o++),B++,t=t.Lnext}while(t!==s.anEdge);if(B>e)throw"Face vertex greater that support polygon";s.n=C,++C}this.elementCount=C,I===Pe.CONNECTED_POLYGONS&&(C*=2),this.elements=[],this.elements.length=C*e,this.vertexCount=o,this.vertices=[],this.vertices.length=o*i,this.vertexIndices=[],this.vertexIndices.length=o;for(var a=A.vHead.next;a!==A.vHead;a=a.next)if(a.n!==-1){var r=a.n*i;this.vertices[r+0]=a.coords[0],this.vertices[r+1]=a.coords[1],i>2&&(this.vertices[r+2]=a.coords[2]),this.vertexIndices[a.n]=a.idx}for(var Q=0,s=A.fHead.next;s!==A.fHead;s=s.next)if(s.inside){t=s.anEdge,B=0;do{var a=t.Org;this.elements[Q++]=a.n,B++,t=t.Lnext}while(t!==s.anEdge);for(var E=B;E2&&(this.vertices[B++]=e.Org.coords[2]),this.vertexIndices[a++]=this.vertexIdCallback?this.vertexIdCallback(e):e.Org.idx,C++,e=e.Lnext;while(e!==i);this.elements[s++]=t,this.elements[s++]=C,t+=C}},g.prototype.addContour=function(A,I){this.mesh===null&&(this.mesh=new mM),A<2&&(A=2),A>3&&(A=3);for(var e=null,i=0;i2?e.Org.coords[2]=I[i+2]:e.Org.coords[2]=0,e.Org.idx=this.vertexIndexCounter++,this.edgeCreateCallback&&this.edgeCreateCallback(e),e.winding=1,e.Sym.winding=-1},g.prototype.tesselate=function(A,I,e,i,t,C){if(A===void 0&&(A=jI.ODD),I===void 0&&(I=Pe.POLYGONS),C===void 0&&(C=!0),this.vertices=[],this.elements=[],this.vertexIndices=[],this.vertexIndexCounter=0,t&&(this.normal[0]=t[0],this.normal[1]=t[1],this.normal[2]=t[2]),this.windingRule=A,i<2&&(i=2),i>3&&(i=3),!this.mesh)return!1;this.projectPolygon_(),AV.computeInterior(this,C);var o=this.mesh;return I===Pe.BOUNDARY_CONTOURS?this.setWindingNumber_(o,1,!0):this.tessellateInterior_(o),C&&o.check(),I===Pe.BOUNDARY_CONTOURS?this.outputContours_(o,i):this.outputPolymesh_(o,I,e,i),!0},g}();function Ea(g){var A=g.windingRule,I=A===void 0?jI.ODD:A,e=g.elementType,i=e===void 0?Pe.POLYGONS:e,t=g.polySize,C=t===void 0?3:t,o=g.vertexSize,B=o===void 0?2:o,a=g.normal,s=a===void 0?[0,0,1]:a,r=g.contours,Q=r===void 0?[]:r,E=g.strict,n=E===void 0?!0:E,h=g.debug,l=h===void 0?!1:h;if(!Q&&n)throw new Error("Contours can't be empty");if(Q){var c=new gV;g.edgeCreateCallback&&(c.edgeCreateCallback=g.edgeCreateCallback),g.vertexIdCallback&&(c.vertexIdCallback=g.vertexIdCallback);for(var d=0;dthis.capacity){let e=this.capacity;for(;A>e;)e*=2;this.realloc(e)}let I=this.size;return this.size=A,I}reserve(g){let A=this.size+g;A>this.capacity&&this.realloc(A)}shrink(){this.debug&&console.log(`shrinking ${this.capacity} → ${this.size}`),this.realloc(this.size,!0)}},PR=Py;PR.eSize=(3+3+2)*Float32Array.BYTES_PER_ELEMENT;var IV=Fa(wq()),K0={vertices:[160,160,-160,160,-160,-160,160,-160],vertexIndices:[1,0,3,2],vertexCount:4,elements:[0,4],elementCount:1,mesh:void 0},jR={vertices:[],vertexIndices:[],vertexCount:0,elements:[],elementCount:0,mesh:void 0},WR={vertices:[-160,160,160,-160,160,160,-160,-160],vertexIndices:[1,3,0,2],vertexCount:4,elements:[0,1,2,1,0,3],elementCount:2,mesh:void 0},Ju=(g,A)=>([I,e])=>(e=I?g:g+A)<=e),J0=class extends bg{constructor(A,I,e=0,i=12,t=3,C=jI.ODD,o=!1){super(),this.forPathBevel=o,this.type="ShapeGeometry",this.vertexCache={},this._shape=A,this._depth=I,this._curveSegments=i,this._bevelSegmentsInput=t;let B=this._shape.extractShapePointsToFlatArray([],i),a=this._shape.shapeHoles.map(N=>{let b=N.extractShapePointsToFlatArray([],i),O=[];for(let H=b.length-1;H>=1;H-=2){let _=b[H-1],gA=b[H-0];O.push(_,gA)}return O}),s=[],r=[];for(let N=0;NN.position)).getSize(new sA).length()*.1:s[0].length===0?Q=e:Q=(0,IV.default)(s).distance,e<=0?(this._bevel=0,this._bevelSegments=0):(this._bevel=Math.min(e,Q,I/2),this._bevelSegments=Math.floor(t));let E;try{E=Ea({windingRule:C,elementType:Pe.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[B]})}catch{E=K0}let n;try{n=Ea({windingRule:jI.ODD,elementType:Pe.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...a]})}catch{n=jR}if(!E)throw new Error("error generating geometry");let h=E.elementCount;if(n){E.elementCount+=n.elementCount;for(let N=0;Nc&&(c=H),_u&&(u=_)}this._minX=l,this._minY=d,this._width=c-l,this._height=u-d,this._buffer=new PR(this._computeBufferEstimatedSize(E));let y=[],f=[];for(let N=E.elementCount-1;N>=0;N--){let b=N>=h,O=N*2,H=E.elements[O+0],_=E.elements[O+1],gA=H+_,CA={start:H,count:_,normals:[],continuous:[],concave:[]},AA=H,BA=gA-1,iA=H+1,rA=this._shape.roundedCurves.length;do{let DA=AA-H,eA=E.vertices[BA*2+0],aA=E.vertices[BA*2+1],nA=E.vertices[AA*2+0],fA=E.vertices[AA*2+1],uA=E.vertices[iA*2+0],VA=E.vertices[iA*2+1],yA=nA-eA,LA=fA-aA,HA=Math.sqrt(yA*yA+LA*LA);yA/=HA,LA/=HA;let Ag=nA-uA,gg=fA-VA,Dg=Math.sqrt(Ag*Ag+gg*gg);Ag/=Dg,gg/=Dg,CA.normals[DA*2+0]=-gg,CA.normals[DA*2+1]=Ag,CA.concave[DA]=yA*gg-LA*Ag>0;let Eg=E.vertexIndices[AA];if(Array.isArray(Eg))CA.continuous[DA]=!1;else{let[$A,mg]=this._shape.getCurveIndexFromVertexId(Eg-1,!0);if(mg>0&&mg<1)CA.continuous[DA]=!0;else{let hg=mg===1?$A+1:$A-1;hg=(hg+rA)%rA;let V=mg===1?0:1,W=this._shape.roundedCurves[$A].getTangent(mg),wA=this._shape.roundedCurves[hg].getTangent(V);CA.continuous[DA]=W.dot(wA)>.95}}b&&(CA.normals[DA*2+0]*=-1,CA.normals[DA*2+1]*=-1),[BA,AA,iA]=[AA,iA,iA+1],iA>=gA&&(iA-=_)}while(iA!==H+1);let $=[];$.push({bevelI:0,angle:0,size:0,boundary:{vertices:E.vertices.slice(H*2,gA*2),vertexCount:_,vertexIndices:new Array(_).fill(!0).map((DA,eA)=>[eA,eA]),elements:[0,_],elementCount:1,mesh:null},reverseMap:[],insetPoints:E.vertices.slice(H*2,gA*2)});let IA=0;for(let DA=1;DA<=this._bevelSegments;DA++){let eA=DA/this._bevelSegments*Math.PI/2,aA=(1-Math.cos(eA))*this._bevel,nA=[],fA=[],uA=0;for(let yA=0;yA<_;yA++){let LA=yA*2,HA=(yA-1+_)%_*2,Ag=E.vertices[CA.start*2+LA+0],gg=E.vertices[CA.start*2+LA+1],Dg=-CA.normals[HA+0]*aA,Eg=-CA.normals[HA+1]*aA,$A=-CA.normals[LA+0]*aA,mg=-CA.normals[LA+1]*aA;if(CA.concave[yA]||!CA.concave[yA]&&b){let hg=Math.atan2(Eg,Dg),V=Math.atan2(mg,$A);V>hg&&(V-=Math.PI*2);let W=V-hg;if(CA.continuous[yA]||b){let wA=hg+W/2,qA=Math.cos(wA)*aA,Ig=Math.sin(wA)*aA;nA[2*uA+0]=Ag+qA*(b?-1:1),nA[2*uA+1]=gg+Ig*(b?-1:1),fA[uA]=yA,uA++}else{let wA=Math.max(1,Math.floor(i/4*Math.abs(W)/Math.PI));for(let qA=0;qA<=wA;qA++){let Ig=hg+W*(qA/wA),jA=Math.cos(Ig)*aA,dg=Math.sin(Ig)*aA;nA[2*uA+0]=Ag+jA,nA[2*uA+1]=gg+dg,fA[uA]=yA,uA++}}}else nA[2*uA+0]=Ag+Dg,nA[2*uA+1]=gg+Eg,fA[uA]=yA,uA++,nA[2*uA+0]=Ag,nA[2*uA+1]=gg,fA[uA]=yA,uA++,nA[2*uA+0]=Ag+$A,nA[2*uA+1]=gg+mg,fA[uA]=yA,uA++}let VA=Ea({windingRule:jI.POSITIVE,elementType:Pe.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[nA],edgeCreateCallback:yA=>{let LA=yA.Org.idx,HA=fA[LA],Ag=fA[(LA+1)%fA.length];yA.idx=[HA,Ag],yA.Sym.idx=[Ag,HA]},vertexIdCallback:yA=>{let LA=yA.Lprev.idx;return[LA?LA[1]:0,yA.idx?yA.idx[0]:0]}});if(!VA)throw console.log("Error"),new Error(`error generating bevel geometry for ${DA}'th loop`);if(!VA.vertexCount){let yA=(DA-1)/this._bevelSegments*Math.PI/2;IA=(1-Math.sin(yA))*this._bevel;break}for(let yA=0;yA{let nA=0,fA=DA.boundary.vertexIndices.length;for(;nAqA){let jA=wA/qA,dg=0;for(let Cg=1;Cg(dg+1)*jA&&(dg++,V=this._buildBevelVert(CA,aA,(HA+dg)%fA,dg/(qA-1),gg),y.push(mg.topN,hg.topP,V.topP),o===!1&&y.push(hg.bottomP,mg.bottomN,V.bottomP),mg=V)}else{let jA=qA/wA,dg=0;for(let Cg=1;Cg(dg+1)*jA&&(dg++,hg=this._buildBevelVert(CA,eA,(LA+dg)%nA,dg/(wA-1),gg),y.push($A.topN,hg.topP,mg.topN),o===!1&&y.push(hg.bottomP,$A.bottomN,mg.bottomN),$A=hg)}LA=(LA+wA)%nA,HA=(HA+qA)%fA,VA=(VA+1)%uA}while(VA!==Ag)}if(o===!1&&this._depth>this._bevel*2&&this._buildWall($,CA,y),b){let DA=[];for(let eA=y.length-1;eA>=QA+2;eA-=3){let aA=y[eA-2],nA=y[eA-1],fA=y[eA-0];DA.push(fA,nA,aA)}y.splice(QA,y.length-QA,...DA)}if(b){let DA=[];for(let eA=$[$.length-1].boundary.vertices.length-1;eA>=1;eA-=2){let aA=$[$.length-1].boundary.vertices[eA-1],nA=$[$.length-1].boundary.vertices[eA-0];DA.push(aA,nA)}f.push(DA)}if(!b){let DA=$[$.length-1],eA;try{eA=Ea({windingRule:$.length>1?jI.POSITIVE:jI.ODD,elementType:Pe.POLYGONS,vertexSize:2,strict:!0,contours:[DA.insetPoints,...f]})}catch{eA=WR}if(!eA)throw new Error("Error generating geometry for surface");a.length===0&&this._bevel0,r=A.continuous[a]||Q);let E=Math.cos(I.angle),n=Math.sin(I.angle),h=e*2,l=a*2,c=s*2,d=I.boundary.vertices[h+0],u=I.boundary.vertices[h+1],y=(1-n)*this._bevel,f=(d-this._minX)/this._width,k=(u-this._minY)/this._height;this.forPathBevel&&(t!==void 0&&(f=t),k=1);let M=A.normals[l+0],G=A.normals[l+1],v=A.normals[c+0],N=A.normals[c+1];if(Q){let gA=v-M,CA=N-G;M=M+gA*(1-i),G=G+CA*(1-i);let AA=Math.sqrt(M*M+G*G);M/=AA,G/=AA}let b=this.forPathBevel?this._buffer.get(r?1:2):this._buffer.get(r?2:4),O=b*3,H=b*2,_={i:e,fi:a,topP:b+0,topN:b+0,bottomP:b+1,bottomN:b+1,pathBevelUCoord:t};return this._buffer.positions[O+0]=d,this._buffer.positions[O+1]=u,this._buffer.positions[O+2]=(this.forPathBevel?this._bevel:this._depth)-y,this._buffer.normals[O+0]=M*E,this._buffer.normals[O+1]=G*E,this._buffer.normals[O+2]=n,this._buffer.uvs[H+0]=f,this._buffer.uvs[H+1]=k,this.forPathBevel===!1&&(this._buffer.positions[O+3]=d,this._buffer.positions[O+4]=u,this._buffer.positions[O+5]=y,this._buffer.normals[O+3]=M*E,this._buffer.normals[O+4]=G*E,this._buffer.normals[O+5]=-n,this._buffer.uvs[H+2]=k,this._buffer.uvs[H+3]=f),r||(this.forPathBevel?(b+=1,O+=3,H+=2):(b+=2,O+=6,H+=4),_.topP=b+0,_.bottomP=b+1,this._buffer.positions[O+0]=d,this._buffer.positions[O+1]=u,this._buffer.positions[O+2]=(this.forPathBevel?this._bevel:this._depth)-y,this._buffer.normals[O+0]=v*E,this._buffer.normals[O+1]=N*E,this._buffer.normals[O+2]=n,this._buffer.uvs[H+0]=f,this._buffer.uvs[H+1]=k,this.forPathBevel===!1&&(this._buffer.positions[O+3]=d,this._buffer.positions[O+4]=u,this._buffer.positions[O+5]=y,this._buffer.normals[O+3]=v*E,this._buffer.normals[O+4]=N*E,this._buffer.normals[O+5]=-n,this._buffer.uvs[H+2]=k,this._buffer.uvs[H+3]=f)),this.vertexCache[C]=_,_}clone(){let A=new J0(this._shape,this._depth,this._bevel,this._curveSegments,this._bevelSegmentsInput);return A.userData=TD(this.userData),A}},ZR=class extends bg{constructor(g,A=12,I={}){super(),this.type="ShapeGeometry",this.windingRule=jI.ODD,this.elementType=Pe.POLYGONS,this.polySize=3,this.vertexSize=2,this.strict=!0,this._shape=g,this._curveSegments=A,this._triangulationOptions=Object.assign({windingRule:jI.ODD,elementType:Pe.POLYGONS,polySize:3,vertexSize:2,strict:!0},I);let e=this._shape.extractShapePointsToFlatArray([],this._curveSegments),i=this._shape.shapeHoles.map(Q=>Q.extractShapePointsToFlatArray([],this._curveSegments)),t,C=!0,o=!0,B,a;for(let Q=0,E=e.length/2;QE&&(E=f),kh&&(h=k)}let l=E-Q,c=h-n;for(let d=0,u=s;d0&&o.update());let a=o??new fe(i,t);return{parameters:Object.assign(e,{width:i,height:t,depth:C,roundness:B}),shape:a}}static build(A){let{depth:I,extrudeBevelSize:e,extrudeBevelSegments:i,subdivisions:t,roundness:C,windingRule:o}=A.parameters;A.shape.roundness=C;let B;return I<=0?B=new ZR(A.shape,t,{windingRule:o}):B=new VR(A.shape,I,e,t,i,o),Object.assign(B,{userData:{...A,type:"VectorGeometry"}})}},zR=Math.PI*2,v0=class{static create(g){return this.build(this.normalizeInputs(g))}static normalizeInputs(g,A){let I=Object.assign({},(A==null?void 0:A.parameters)??{width:100,depth:0,spikes:64,angle:360,innerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:1},g.parameters);return I.angle=vg.clamp(I.angle,0,360),{shape:g.shape&&g.shape instanceof fe?g.shape:new fe,parameters:Object.assign(I,{width:Math.abs(I.width),height:Math.abs(I.height??I.width),depth:Math.abs(I.depth??0)})}}static build(g){let{width:A,height:I,spikes:e,angle:i,innerRadius:t,depth:C,extrudeBevelSize:o,extrudeBevelSegments:B}=g.parameters,a=g.shape,s=A*.5,r=I*.5,Q=eV(a,s,r,i*Math.PI/180,e,t);a.isClosed=!0,a.update();let E;return i===0?(E=new bg,E.setAttribute("position",new pg([],3))):E=Or.create({shape:a,parameters:{subdivisions:Q,depth:C,extrudeBevelSize:o,extrudeBevelSegments:B}}),Object.assign(E,{userData:{...g,type:"EllipseGeometry"}})}};function eV(g,A,I,e,i,t){if(e>=zR)return i>30||i%4===0?(tV(g,A,I,t),Math.round(i/4)):RM(g,e,i,A,I,t);e=Math.max(e,.001);let C={x:0,y:I},o=e+Math.PI*.5,B={x:Math.cos(o)*A,y:Math.sin(o)*I},a=zZ({px:C.x,py:C.y,cx:B.x,cy:B.y,rx:A,ry:I,largeArcFlag:e>Math.PI,sweepFlag:!0});return i>30||i%a.length===0?iV(g,C.x,C.y,a,i,A,I,t):RM(g,e,i,A,I,t)}function iV(g,A,I,e,i,t,C,o){let B=Math.round(i/e.length);g.addPoint(cQ(A,I));for(let a=0,s=e.length;a0?XR(g,t,C,o):g.addPoint(cQ(0,0)),B}function RM(g,A,I,e,i,t){let C=-A/I;for(let o=0;o<=I;o++){let B=C*o,a=Math.sin(B)*e,s=Math.cos(B)*i;g.addPoint(cQ(a,s))}return A0?XR(g,e,i,t):g.addPoint(cQ(0,0)):(g.removePoint(g.points[g.points.length-1]),t>0&&$R(g,e,i,t)),1}function tV(g,A,I,e=0,i=0,t=0){let C=.5522847498,o=A*C,B=I*C;g.addPoint(cl(i-A,t,i-A,t-B,i-A,t+B)),g.addPoint(cl(i,t+I,i-o,t+I,i+o,t+I)),g.addPoint(cl(i+A,t,i+A,t+B,i+A,t-B)),g.addPoint(cl(i,t-I,i+o,t-I,i-o,t-I)),e>0&&$R(g,A,I,e)}function cQ(g,A){return new lQ(vg.generateUUID(),new sA(g,A))}function cl(g,A,I,e,i,t){let C=cQ(g,A);return C.controls[0].position.set(I,e),C.controls[1].position.set(i,t),C}function XR(g,A,I,e){AK(g,A,I,e).forEach(i=>g.addPoint(i))}function $R(g,A,I,e){let i=AK(g,A,I,e),t=new fe;i.forEach(C=>t.addPoint(C)),t.isClosed=!0,g.shapeHoles.push(t)}function AK(g,A,I,e){let i=e*A/100,t=i*(Math.abs(I)/Math.abs(A)),C=new sA(i/A,t/I),o=g.points.map(B=>{let a=B.clone();return a.uuid=vg.generateUUID(),a}).reverse();return o.forEach(B=>{B.position.multiply(C);let a=B.controls[0].position.clone().multiply(C),s=B.controls[1].position.clone().multiply(C);B.controls[0].position.copy(s),B.controls[1].position.copy(a)}),o}var CV=class{static create(g){return this.build(this.normalizeInputs(g))}static normalizeInputs(g,A){let I=Object.assign({},(A==null?void 0:A.parameters)??{width:100,revolutions:2,segments:40,pathRadius:10,pathType:0,pathSegments:30,cornerRadius:30,cornerSegments:4},g.parameters),e=Math.abs(I.width),i=Math.abs(I.height??e),t=Math.abs(I.depth??e),C=Math.abs(Math.min(e,t))/2;return{parameters:Object.assign(I,{width:e,height:i,depth:t,radius:C,segments:Math.round(I.segments),pathSegments:Math.round(I.pathSegments),cornerSegments:Math.round(I.cornerSegments)})}}static build(g){let{width:A,height:I,depth:e,radius:i,revolutions:t,segments:C,pathRadius:o,pathType:B,pathSegments:a,cornerRadius:s,cornerSegments:r}=g.parameters,Q=new gK(!1,A,I,e,i,t,C,o,B,a,s,r);return Object.assign(Q,{userData:{...g,type:"HelixGeometry"}})}},vu=new BQ([0,0,0],1),gK=class extends bg{constructor(g=!0,A=1,I=1,e=1,i=1,t=1,C=1,o=1,B=1,a=1,s=1,r=1){if(super(),t===0)return;let Q=g&&t===1;Q&&(r=0),s>100&&(s=100),s===0&&(r=0);let E=()=>new J,n=new J,h=E(),l=E(),c=E(),d,u,y,f,k,M,G,v,N=E(),b=E(),O=E(),H=E(),_=E(),gA=E(),CA=E(),AA=E(),BA=I-2*o+.001,iA=BA/t,rA=Math.ceil(C*t),$=rA+1,IA=BA/rA,hA=-BA/2,QA=a+1,DA=2*Math.PI/a,eA=Math.PI/2/r,aA=.01,nA=Math.min((1-s/100)*o,o-aA),fA=o-nA,uA=0,VA=2,yA=r*VA+VA,LA=QA*yA/VA,HA=LA+QA*$,Ag=Math.max(0,QA*($+yA)),[gg,Dg,Eg]=[3,3,2].map(UA=>Array(Ag*UA).fill(0)),$A=[],mg=i-o;function hg(UA,fg){let Rg=Math.PI/2;M=fg*IA,v=2*Math.PI*(M%iA)/iA+Rg,M+=hA,G=Math.sin(v)*mg,k=Math.cos(v)*mg,g?UA.set(k,G,M):UA.set(k,M,G)}hg(n,-1e-10),hg(h,0),N.copy(n),hg(n,1);let V=n.distanceTo(h),W=Q?0:fA+nA,wA=V*rA+2*W,qA=nA,Ig=wA-W;for(let UA=0;UA<=rA;UA++){hg(l,UA),AA.subVectors(l,N).normalize(),N.copy(l),gA.copy(l).setComponent(+g+1,0).normalize(),CA.crossVectors(AA,gA).normalize();let fg=UA===0,Rg=UA===rA,Ug=fg?3*Math.PI/2:eA,ng=fg?qA:Ig,og=fg?QA:HA,Zg=fg?0:Ag-QA,cg=AA.clone().multiplyScalar(fg?-fA:fA).add(l),OI=AA.clone().multiplyScalar(fg?-1:1).normalize();for(let lA=0;lA{gg[uA*3+WA]=cg.getComponent(WA),Dg[uA*3+WA]=OI.getComponent(WA)}),Eg[uA*2]=+Rg,Eg[uA*2+1]=lA/a),h.copy(O).multiplyScalar(nA),c.addVectors(l,h);for(let WA=0;WA{gg[uA*3+$g]=h.getComponent($g),Dg[uA*3+$g]=_.getComponent($g)});let Lg=+fg+Math.sin(Qg);Eg[uA*2]=(ng+fA*Lg)/wA,Eg[uA*2+1]=lA/a}}h.addVectors(l,b),uA=LA+UA*QA+lA,[0,1,2].forEach(WA=>{gg[uA*3+WA]=h.getComponent(WA),Dg[uA*3+WA]=O.getComponent(WA)}),Eg[uA*2]=(W+UA*V)/wA,Eg[uA*2+1]=lA/a}}let jA=$+2*r+VA,[dg,Cg]=[+Q,jA-1];for(let UA=dg;UA<=Cg-1;UA++){let fg=Q&&UA===Cg-1;for(let Rg=0;Rg{Array.isArray(i)&&(i.x=i[0],i.y=i[1])});let I=Object.assign({},(A==null?void 0:A.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}]},g.parameters);return{parameters:Object.assign(I,{width:Math.abs(I.width),height:Math.abs(I.height??I.width),depth:Math.abs(I.depth??I.width)})}}static build(g){let{points:A,segments:I,verticalSegments:e}=g.parameters,i=new yc;i.moveTo(A[0].x,A[0].y),i.bezierCurveTo(A[1].x,A[1].y,A[2].x,A[2].y,A[3].x,A[3].y);let t=new VN(i.extractPoints(e).shape,I);return t.rotateZ(Math.PI),Object.assign(t,{userData:{...g,type:"LatheGeometry"}})}},Ao=new zA,qu=new ZI,Dl=new J,$c=class extends Si{constructor(){super(),this.uuid=vg.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(A){let I=new hi().getNormalMatrix(A);for(let e=0,i=this.vertices.length;e0)for(let Q=0;Q0&&(this.normalsNeedUpdate=!0)}computeFlatVertexNormals(){this.computeFaceNormals();for(let A=0,I=this.faces.length;A0&&(this.normalsNeedUpdate=!0)}computeMorphNormals(){for(let I=0,e=this.faces.length;I=0;B--){let a=C[B];this.faces.splice(a,1);for(let s=0,r=this.faceVertexUvs.length;s0,y=h.vertexNormals.length>0,f=h.color.r!==1||h.color.g!==1||h.color.b!==1,k=h.vertexColors.length>0,M=0;if(M=s(M,0,0),M=s(M,1,l),M=s(M,2,c),M=s(M,3,d),M=s(M,4,u),M=s(M,5,y),M=s(M,6,f),M=s(M,7,k),e.push(M),e.push(h.a,h.b,h.c),e.push(h.materialIndex),d){let G=this.faceVertexUvs[0][n];e.push(E(G[0]),E(G[1]),E(G[2]))}if(u&&e.push(r(h.normal)),y){let G=h.vertexNormals;e.push(r(G[0]),r(G[1]),r(G[2]))}if(f&&e.push(Q(h.color)),k){let G=h.vertexColors;e.push(Q(G[0]),Q(G[1]),Q(G[2]))}}function s(n,h,l){return l?n|1<0&&(A.data.colors=C),B.length>0&&(A.data.uvs=[B]),A.data.faces=e,A}clone(){return new $c().copy(this)}copy(A){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=A.name;let I=A.vertices;for(let Q=0,E=I.length;Q0){let i=new Float32Array(A.normals.length*3);I.setAttribute("normal",dl.call(new zg(i,3),A.normals))}if(A.colors.length>0){let i=new Float32Array(A.colors.length*3);I.setAttribute("color",KM.call(new zg(i,3),A.colors))}if(A.uvs.length>0){let i=new Float32Array(A.uvs.length*2);I.setAttribute("uv",JM.call(new zg(i,2),A.uvs))}if(A.uvs2.length>0){let i=new Float32Array(A.uvs2.length*2);I.setAttribute("uv2",JM.call(new zg(i,2),A.uvs2))}I.groups=A.groups;for(let i in A.morphTargets){let t=[],C=A.morphTargets[i];for(let o=0,B=C.length;o0){let i=new pg(A.skinIndices.length*4,4);I.setAttribute("skinIndex",vM.call(i,A.skinIndices))}if(A.skinWeights.length>0){let i=new pg(A.skinWeights.length*4,4);I.setAttribute("skinWeight",vM.call(i,A.skinWeights))}return A.boundingSphere!==null&&(I.boundingSphere=A.boundingSphere.clone()),A.boundingBox!==null&&(I.boundingBox=A.boundingBox.clone()),I}computeTangents(){console.error("THREE.Geometry: .computeTangents() has been removed.")}computeLineDistances(){console.error("THREE.Geometry: .computeLineDistances() has been removed. Use THREE.Line.computeLineDistances() instead.")}applyMatrix(A){return console.warn("THREE.Geometry: .applyMatrix() has been renamed to .applyMatrix4()."),this.applyMatrix4(A)}dispose(){this.dispatchEvent({type:"dispose"})}static createBufferGeometryFromObject(A){let I=new bg,e=A.geometry;if(A.isPoints||A.isLine){let i=new pg(e.vertices.length*3,3),t=new pg(e.colors.length*3,3);if(I.setAttribute("position",dl.call(i,e.vertices)),I.setAttribute("color",KM.call(t,e.colors)),e.lineDistances&&e.lineDistances.length===e.vertices.length){let C=new pg(e.lineDistances.length,1);I.setAttribute("lineDistance",rV.call(C,e.lineDistances))}e.boundingSphere!==null&&(I.boundingSphere=e.boundingSphere.clone()),e.boundingBox!==null&&(I.boundingBox=e.boundingBox.clone())}else A.isMesh&&(I=e.toBufferGeometry());return I}};$c.prototype.isGeometry=!0;var aV=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(g){let A=[],I,e,i,t=g.faces;for(e=0;e0,t=e[1]&&e[1].length>0,C=g.morphTargets,o=C.length,B;if(o>0){B=[];for(let l=0;l0){r=[];for(let l=0;l0&&A.length===0&&console.error("THREE.DirectGeometry: Faceless geometries are not supported.");for(let l=0;l0;)this._smooth(g);return g.computeFaceNormals(),g.computeVertexNormals(),g}_smooth(g){let A=new J,I,e,i,t,C,o=g.vertices,B=g.faces,a=g.faceVertexUvs[0],s=a!==void 0&&a.length>0,r=[],Q=new Map;EV(o,B,r,Q);let E=[],n,h,l,c,d,u,y;for(let aA of Array.from(Q.keys())){for(h=Q.get(aA),l=new J,d=3/8,u=1/8,y=h.faces.length,y!=2&&(d=.5,u=0,y!=1),l.addVectors(h.a,h.b).multiplyScalar(d),A.set(0,0,0),t=0;t3&&(f=3/(8*I)),k=1-I*Number(f),M=f,I<=2&&(I==2?(k=3/4,M=1/8):I==1||I==0),b=N.clone().multiplyScalar(k),A.set(0,0,0),t=0;t0?(o===void 0||(C==null?void 0:C.subdivisions)!==i)&&(o===void 0&&(o=t),t=new nV(i).modify(o).toBufferGeometry()):(o!==void 0&&(t=o),o=void 0,t.getAttribute("normal")===void 0&&t.computeVertexNormals())}catch{o!==void 0&&(t=o),o=void 0,t.getAttribute("normal")===void 0&&t.computeVertexNormals()}return o!==void 0&&Object.assign(t,{originalGeometry:o}),delete g.geometry,Object.assign(t,{userData:{...g,type:"NonParametricGeometry"}})}static loadFromUrl(g,A,I){new rF(I).load(g,e=>{let i=this.normalizeInputs({geometry:e});e.boundingBox.getSize(Ai);let t=100/Ai.x;Object.assign(i.parameters,{width:100,height:Ai.y*t,depth:Ai.z*t}),A(this.build(i))})}},eK=class{static create(g){return this.build(this.normalizeInputs(g))}static normalizeInputs(g,A){let I=Object.assign({},(A==null?void 0:A.parameters)??{width:100,depth:0,spikes:5,cornerRadius:0,extrudeBevelSize:0,extrudeBevelSegments:3},g.parameters);return{shape:g.shape&&g.shape instanceof fe?g.shape:new fe,parameters:Object.assign(I,{width:Math.abs(I.width),height:Math.abs(I.height??I.width),depth:Math.abs(I.depth??0)})}}static build(g){let{width:A,height:I,spikes:e,cornerRadius:i,depth:t,extrudeBevelSize:C,extrudeBevelSegments:o}=g.parameters,B=g.shape,a=A*.5,s=I*.5,r=0,Q=0,E=2*Math.PI/e;for(let h=0;h0){{let Ag=BA.clone().add(iA).multiplyScalar(.5),gg=u.clone().sub(Ag).normalize(),Dg=d.clone().sub(Ag).normalize().add(gg).normalize().multiplyScalar(-1),Eg=IA.clone().sub($);gA(Ag,Eg,Dg,k.angle())}let LA,HA;{let Ag=new J;vE(v,fA,Ag);let gg=IA.clone().add(rA).multiplyScalar(.5);gg=cV(gg,iA,u);let Dg=IA.clone().sub(rA);[LA,HA]=gA(gg,Dg,Ag,b,rA.y)}{let Ag=LA,gg=Ag.clone().setY(0).normalize(),Dg=new J(0,-1,0),Eg=gg.clone().cross(Dg);CA(Ag,gg,Dg,Eg)}{let Ag=k.angle(),gg=Math.PI-Ag,Dg=u.clone();Dg.y-=t/Math.sin(Ag-Math.PI/2);let Eg=new J,$A=[];for(let hg=0;hgI&&k>e?Math.min(y*I/f,y*e/k):f>I?y*I/f:k>e?y*e/k:y}let E=[];E[0]=i[0]===0?0:Q(i[0],i[0]+i[3],i[0]+i[1]),E[1]=i[1]===0?0:Q(i[1],i[1]+i[2],i[1]+i[0]),E[2]=i[2]===0?0:Q(i[2],i[2]+i[1],i[2]+i[3]),E[3]=i[3]===0?0:Q(i[3],i[3]+i[0],i[3]+i[2]);let n=s.x,h=r.x,l=r.y,c=s.y;A.addPoint(A.createPoint(n,l)),A.addPoint(A.createPoint(h,l)),A.addPoint(A.createPoint(h,c)),A.addPoint(A.createPoint(n,c)),A.isClosed=!0;let d=!0;for(let y=0,f=A.points.length;y0&&E[y]!==E[y-1]&&(d=!1);d&&(A.roundness=E[0]),A.useCubicForRoundedCorners=t!==1,A.update();let u=Or.create({shape:A,parameters:{depth:C,extrudeBevelSize:o,extrudeBevelSegments:B}});return Object.assign(u,{userData:{...g,type:"RectangleGeometry"}})}},dV=class{static create(g){return this.build(this.normalizeInputs(g))}static normalizeInputs(g,A){let I=Object.assign({},(A==null?void 0:A.parameters)??{width:100,widthSegments:64,heightSegments:64,phiStart:0,phiLength:2*Math.PI,thetaStart:0,thetaLength:180},g.parameters);return I.thetaLength=vg.clamp(I.thetaLength,0,180),{parameters:Object.assign(I,{width:Math.abs(I.width),height:Math.abs(I.height??I.width),depth:Math.abs(I.depth??I.width)})}}static build(g){let{width:A=100,height:I=A,depth:e=A,widthSegments:i=64,heightSegments:t=64,phiStart:C,phiLength:o,thetaStart:B,thetaLength:a}=g.parameters,s;return a===0?(s=new bg,s.setAttribute("position",new pg([],3))):s=new Zw(.5*A,i,t,C,o,B,a*vg.DEG2RAD),s.scale(1,I/A,e/A),Object.assign(s,{userData:{...g,type:"SphereGeometry"}})}},uV=class{static create(g){return this.build(this.normalizeInputs(g))}static normalizeInputs(g,A){let I=Object.assign({},(A==null?void 0:A.parameters)??{width:100,depth:0,widthSegments:8,heightSegments:8},g.parameters);return{parameters:Object.assign(I,{width:Math.abs(I.width),height:Math.abs(I.height??I.width),depth:0})}}static build(g){let{width:A=100,height:I=A,widthSegments:e=8,heightSegments:i=8}=g.parameters,t=new FD(A,I,e,i);return t.scale(1,1,1),Object.assign(t,{userData:{...g,type:"PlaneGeometry"}})}},pV=class{static create(g){return this.build(this.normalizeInputs(g))}static normalizeInputs(g,A){let I=Object.assign({},(A==null?void 0:A.parameters)??{width:100,angle:90,cornerRadius:24,cornerSegments:8},g.parameters);return{parameters:Object.assign(I,{width:Math.abs(I.width),height:Math.abs(I.height??I.width),depth:Math.abs(I.depth??I.width)})}}static build(g){let{width:A,height:I,depth:e,angle:i,cornerRadius:t,cornerSegments:C}=g.parameters,o=new yV(A,I,e,i,t,C);return Object.assign(o,{userData:{...g,type:"BackdropGeometry"}})}},yV=class extends bg{constructor(g=1,A=1,I=1,e=90,i=10,t=24){super(),this.type="BackdropGeometry";let C=[],o=[],B=[],a=.001;i==0&&(t=1),t=Math.max(1,Math.floor(t)),i=Math.min(i,100),e=Math.min(180-a,e),e*=Math.PI/180;let s=[],r=Math.PI/2,Q=(aA=0,nA=0,fA=0)=>new J(aA,nA,fA),E=Q(),n=Q(),[h,l,c]=[A/2,g/2,I/2],d=-l,u=+l,[y,f,k]=[Q(d,-h,+c),Q(d,-h,-c),Q(d,+h,-c)],M=(aA,nA=!1)=>Math.sin(aA-Math.PI/(1+ +nA)),G=(aA,nA=!1)=>Math.cos(aA-Math.PI/(1+ +nA));k.y=Math.sin(e)*A-h;let v=Math.cos(e)*A-c,N=y.z-a;e<=r?(k.z=Math.min(v,N),k.z==N&&(k.y-=(v-N)/Math.tan(r-e))):f.z=Math.min(f.z-v-c,y.z-a),E.subVectors(y,f),n.subVectors(k,f);let b=Math.min(E.length(),n.length())*i/100,O=b*Math.tan(e/2),H=b/Math.cos(e/2),_=E.clone().normalize().add(n.normalize()).setLength(H).add(f);E.set(0,M(e,!0),G(e,!0)),s.push([k,E.clone()]);let gA=(Math.PI-e)/t;for(let aA=0;aA<=t;aA++){let nA=r+e+aA*gA;E.set(0,Math.sin(nA)*O,Math.cos(nA)*O),E.add(_),n.set(0,M(nA),G(nA)),s.push([E.clone(),n.clone()])}s.push([y,Q(0,1,0)]);let CA=Math.sin(gA/2)*O*2,AA=s.length-1,BA=s[0][0].distanceTo(s[1][0]),iA=s[AA-1][0].distanceTo(s[AA][0]),rA=BA+CA*t+iA;s[0].push(1);for(let aA=0;aA<=t;aA++)s[aA+1].push(1-(BA+aA*CA)/rA);s[AA].push(0);let[$,IA,hA]=s[0],QA,DA,eA;for(let aA=1;aA{if(typeof A!="object"||!A.name||!A.init)throw new Error("Invalid JSEP plugin format");this.registered[A.name]||(A.init(this.jsep),this.registered[A.name]=A)})}},JA=class{static get version(){return"1.3.8"}static toString(){return"JavaScript Expression Parser (JSEP) v"+JA.version}static addUnaryOp(A){return JA.max_unop_len=Math.max(A.length,JA.max_unop_len),JA.unary_ops[A]=1,JA}static addBinaryOp(A,I,e){return JA.max_binop_len=Math.max(A.length,JA.max_binop_len),JA.binary_ops[A]=I,e?JA.right_associative.add(A):JA.right_associative.delete(A),JA}static addIdentifierChar(A){return JA.additional_identifier_chars.add(A),JA}static addLiteral(A,I){return JA.literals[A]=I,JA}static removeUnaryOp(A){return delete JA.unary_ops[A],A.length===JA.max_unop_len&&(JA.max_unop_len=JA.getMaxKeyLen(JA.unary_ops)),JA}static removeAllUnaryOps(){return JA.unary_ops={},JA.max_unop_len=0,JA}static removeIdentifierChar(A){return JA.additional_identifier_chars.delete(A),JA}static removeBinaryOp(A){return delete JA.binary_ops[A],A.length===JA.max_binop_len&&(JA.max_binop_len=JA.getMaxKeyLen(JA.binary_ops)),JA.right_associative.delete(A),JA}static removeAllBinaryOps(){return JA.binary_ops={},JA.max_binop_len=0,JA}static removeLiteral(A){return delete JA.literals[A],JA}static removeAllLiterals(){return JA.literals={},JA}get char(){return this.expr.charAt(this.index)}get code(){return this.expr.charCodeAt(this.index)}constructor(A){this.expr=A,this.index=0}static parse(A){return new JA(A).parse()}static getMaxKeyLen(A){return Math.max(0,...Object.keys(A).map(I=>I.length))}static isDecimalDigit(A){return A>=48&&A<=57}static binaryPrecedence(A){return JA.binary_ops[A]||0}static isIdentifierStart(A){return A>=65&&A<=90||A>=97&&A<=122||A>=128&&!JA.binary_ops[String.fromCharCode(A)]||JA.additional_identifier_chars.has(String.fromCharCode(A))}static isIdentifierPart(A){return JA.isIdentifierStart(A)||JA.isDecimalDigit(A)}throwError(A){let I=new Error(A+" at character "+this.index);throw I.index=this.index,I.description=A,I}runHook(A,I){if(JA.hooks[A]){let e={context:this,node:I};return JA.hooks.run(A,e),e.node}return I}searchHook(A){if(JA.hooks[A]){let I={context:this};return JA.hooks[A].find(function(e){return e.call(I.context,I),I.node}),I.node}}gobbleSpaces(){let A=this.code;for(;A===JA.SPACE_CODE||A===JA.TAB_CODE||A===JA.LF_CODE||A===JA.CR_CODE;)A=this.expr.charCodeAt(++this.index);this.runHook("gobble-spaces")}parse(){this.runHook("before-all");let A=this.gobbleExpressions(),I=A.length===1?A[0]:{type:JA.COMPOUND,body:A};return this.runHook("after-all",I)}gobbleExpressions(A){let I=[],e,i;for(;this.index0;){if(JA.binary_ops.hasOwnProperty(A)&&(!JA.isIdentifierStart(this.code)||this.index+A.lengtht.right_a&&r.right_a?e>r.prec:e<=r.prec;for(;i.length>2&&s(i[i.length-2]);)o=i.pop(),I=i.pop().value,C=i.pop(),A={type:JA.BINARY_EXP,operator:I,left:C,right:o},i.push(A);A=this.gobbleToken(),A||this.throwError("Expected expression after "+a),i.push(t,A)}for(B=i.length-1,A=i[B];B>1;)A={type:JA.BINARY_EXP,operator:i[B-1].value,left:i[B-2],right:A},B-=2;return A}gobbleToken(){let A,I,e,i;if(this.gobbleSpaces(),i=this.searchHook("gobble-token"),i)return this.runHook("after-token",i);if(A=this.code,JA.isDecimalDigit(A)||A===JA.PERIOD_CODE)return this.gobbleNumericLiteral();if(A===JA.SQUOTE_CODE||A===JA.DQUOTE_CODE)i=this.gobbleStringLiteral();else if(A===JA.OBRACK_CODE)i=this.gobbleArray();else{for(I=this.expr.substr(this.index,JA.max_unop_len),e=I.length;e>0;){if(JA.unary_ops.hasOwnProperty(I)&&(!JA.isIdentifierStart(this.code)||this.index+I.length=I.length&&this.throwError("Unexpected token "+String.fromCharCode(A));break}else if(t===JA.COMMA_CODE){if(this.index++,i++,i!==I.length){if(A===JA.CPAREN_CODE)this.throwError("Unexpected token ,");else if(A===JA.CBRACK_CODE)for(let C=I.length;C":7,"<=":7,">=":7,"<<":8,">>":8,">>>":8,"+":9,"-":9,"*":10,"/":10,"%":10},right_associative:new Set,additional_identifier_chars:new Set(["$","_"]),literals:{true:!0,false:!1,null:null},this_str:"this"});JA.max_unop_len=JA.getMaxKeyLen(JA.unary_ops);JA.max_binop_len=JA.getMaxKeyLen(JA.binary_ops);var LQ=g=>new JA(g).parse(),FV=Object.getOwnPropertyNames(JA);FV.forEach(g=>{LQ[g]===void 0&&g!=="prototype"&&(LQ[g]=JA[g])});LQ.Jsep=JA;var RV="ConditionalExpression",KV={name:"ternary",init(g){g.hooks.add("after-expression",function(A){if(A.node&&this.code===g.QUMARK_CODE){this.index++;let I=A.node,e=this.gobbleExpression();if(e||this.throwError("Expected expression"),this.gobbleSpaces(),this.code===g.COLON_CODE){this.index++;let i=this.gobbleExpression();if(i||this.throwError("Expected expression"),A.node={type:RV,test:I,consequent:e,alternate:i},I.operator&&g.binary_ops[I.operator]<=.9){let t=I;for(;t.right.operator&&g.binary_ops[t.right.operator]<=.9;)t=t.right;A.node.test=t.right,t.right=A.node,A.node=I}}else this.throwError("Expected :")}})}};LQ.plugins.register(KV);var JV=["+","-","*","/","(",")","==","!=",">","<",">=","<=","and","or","!","%","^",","],vV=["0","1","2","3","4","5","6","7","8","9","."],qV=["sin","cos","tan","asin","acos","atan","atan2","sqrt","abs","log","exp","floor","ceil","round","min","max","random"];function LV(g){return typeof g!="string"?!1:!isNaN(g)&&!isNaN(parseFloat(g))}LQ.addBinaryOp("^",11,!0);function CK(g,A,I="number"){let e="";for(let C=0;C0&&"id"in B){console.error("Two variables in a row",g);return}let a=A.getVariable(o.id),s=Jt.getDisplayedValue(a);I==="number"&&Jt.isTextValue(a)&&Array.isArray(a.textValue)&&a.textValue.length===1?s=parseFloat(s).toString():I==="boolean"&&Jt.isBoolean(a)?s=a?"true":"false":I==="boolean"&&Jt.isTextValue(a)&&!Array.isArray(a.textValue)&&(s='"'+s+'"'),e+=s;continue}else if(I==="string"){o.name!=='"'&&o.name!=="+"&&(e+=o.name),o.name==="+"&&e[e.length-1]==="\\"&&(e=e.slice(0,-1)+o.name);continue}if(o.name==="and"){e+="&&";continue}if(o.name==="or"){e+="||";continue}if(o.name==="True"){e+="true";continue}if(o.name==="False"){e+="false";continue}if(I==="boolean"&&!LV(o.name)&&!vV.includes(o.name)&&!JV.includes(o.name)&&!qV.includes(o.name.replace(/\($/g,""))){e+='"'+o.name+'"';continue}e+=o.name}if(I==="string")return e;if(g.length===0){if(I==="number")return 0;if(I==="boolean")return!1}let i;try{i=LQ(e)}catch(C){console.error(e,C);return}let t;try{t=KI(i)}catch(C){console.error(e,i,C)}return t}function KI(g){switch(g.type){case"BinaryExpression":switch(g.operator){case"==":return+(KI(g.left)===KI(g.right));case"!=":return+(KI(g.left)!==KI(g.right));case">":return+(KI(g.left)>KI(g.right));case">=":return+(KI(g.left)>=KI(g.right));case"<":return+(KI(g.left)=1)try{A=KI(g.arguments[0])}catch(e){console.warn(e)}if(g.arguments.length>=2)try{I=KI(g.arguments[1])}catch(e){console.warn(e)}return A=Math.min(I,A),I=Math.max(I,A),A+Math.random()*(I-A)}return Math[g.callee.name].apply(null,g.arguments.map(KI))}else throw new Error("Unknown node");default:throw new Error("Unknown node type: "+g.type)}}var bV=new zA,YV=new zA;function xV(g,A,I){let e=[new J,new J,new J],i=[new J,new J,new J];return g.extractBasis(e[0],e[1],e[2]),A.extractBasis(i[0],i[1],i[2]),e.forEach((t,C)=>{let o=i[C],B=vg.lerp(t.length(),o.length(),I);t.lerp(o,I).setLength(B)}),new zA().makeBasis(e[0],e[1],e[2])}var HV=class{static create(g){return this.build(this.normalizeInputs(g))}static normalizeInputs(g,A){let I=Object.assign({},(A==null?void 0:A.parameters)??{width:100,height:100,depth:1,subdivisions:12,roundness:0,extrudeBevelSize:0,extrudeBevelSegments:3},g.parameters),e=Math.abs(I.width),i=Math.abs(I.height??I.width),t=Math.abs(I.depth??0),C=(A==null?void 0:A.shapeData)??v0.create({parameters:mR}).userData.shape;return{path:g.path??Hc.defaultData(),parameters:Object.assign(I,{width:e,height:i,depth:t,extrusion:{...UR,...I.extrusion}}),shapeData:C}}static build(g){if(g.path.points.length>=2){let A=new TV(g);return Object.assign(A,{userData:{...g,type:"PathGeometry"}})}else return Object.assign(new bg,{userData:{...g,type:"PathGeometry"}})}},TV=class extends bg{constructor(g){super(),this.type="PathExtrusionGeometry",this.inputs=g,this.build()}_isGeometryClosed(){return this.inputs.path.isClosed&&this.inputs.parameters.extrusion.depth===1}_isOpenEnded(){let g=this.inputs.parameters.extrusion;return!(this.inputs.path.isClosed&&g.depth===1)||!MV(g.twist,0)||g.startScale!==g.endScale}build(){let g=this._extractPathPoints();if(g.length<2)return;let A=this._computeBasisMatrices(g),{depth:I,offset:e}=this.inputs.parameters.extrusion,i=this.inputs.path.isClosed?g.length:g.length-1,t=Math.floor(e*i),C=this.inputs.path.isClosed?Math.ceil((I+e)*i):Math.ceil(Math.min(1,I+e)*i),o=Math.min(Math.max(2,C-t+1),i+2),B=[],a=[];for(let AA=0;AA{B[AA]=B[AA].clone().lerp(B[BA],iA),a[AA]=xV(a[AA],a[BA],iA)},r=0,Q=e*i%1;(!this.inputs.path.isClosed||I<=1)&&(Q||e===0)&&(r=Q,s(0,1,r));let E=0,n=(e+I)*i%1;if((this.inputs.path.isClosed&&I<=1||!this.inputs.path.isClosed&&e+I<1)&&n&&(E=n,s(B.length-1,B.length-2,1-E)),I===0){let AA=B.length-1;B[AA].copy(B[0]),a[AA].copy(a[0])}this._applyPathModifiers(a,r,E);let{bevel:h,bevelSides:l}=this.inputs.parameters.extrusion,c=h>0?this.inputs.parameters.extrusion.capType:"flat",d=5;this.inputs.parameters.extrusion.shape.type==="Custom"&&(d=this.inputs.parameters.extrusion.shape.shapeQuality==="low"?5:12);let{regions:u,infos:y,vertices:f}=this._computeShapePoints(d),k=0,M;c==="round"&&(M=new J0(this.inputs.shapeData,2*h,h,d,l,void 0,!0),k=M.getAttribute("position").count);let G=0,v=0;y.sort((AA,BA)=>AA.start-BA.start),y.forEach(AA=>{AA.verticesStart=G,AA.verticesCount=AA.continuous.reduce((BA,iA,rA)=>BA+(rA===0||!iA?2:1),0),v+=AA.verticesCount,G=v});let N=v*o,b,O=0;if(this._isOpenEnded()&&c==="flat"){try{b=Ea({windingRule:jI.ODD,elementType:Pe.POLYGONS,polySize:3,vertexSize:2,strict:!0,contours:u})}catch{b=WR}O=b.vertexCount}let H=N+2*O+k*2,_=N+2*O,gA={positions:new Float32Array(H*3),normals:new Float32Array(H*3),uvs:new Float32Array(H*2)},CA=[];if(y.forEach(AA=>{this._extrudeRegion(AA,f,a,B,gA,CA,this._isGeometryClosed()&&!this._isOpenEnded())}),b&&(this._closeEnd(b,N,CA,gA,a[0],B[0],!1),this._closeEnd(b,N+O,CA,gA,a[a.length-1],B[B.length-1],!0)),M){gA.positions.set(M.getAttribute("position").array,_*3),gA.normals.set(M.getAttribute("normal").array,_*3),gA.uvs.set(M.getAttribute("uv").array,_*2);let AA=CA.length;CA.push(...M.getIndex().array.map(rA=>rA+_)),_+=k,gA.positions.set(M.getAttribute("position").array,_*3),gA.normals.set(M.getAttribute("normal").array,_*3),gA.uvs.set(M.getAttribute("uv").array,_*2);let BA=CA.length;CA.push(...M.getIndex().array.map(rA=>rA+_)),this.setAttribute("position",new zg(gA.positions,3)),this.setAttribute("normal",new zg(gA.normals,3)),this.setAttribute("uv",new zg(gA.uvs,2)),this.setIndex(CA);let iA=bV;iA.copy(a[a.length-1]).setPosition(B[B.length-1]),this.applyMatrix4OnRange(iA,_,H),iA.copy(a[0]).setPosition(B[0]).multiply(YV.makeScale(1,1,-1)),this.applyMatrix4OnRange(iA,_-k,_),this.reverseIndicesOnRange(AA,BA)}else this.setAttribute("position",new zg(gA.positions,3)),this.setAttribute("normal",new zg(gA.normals,3)),this.setAttribute("uv",new zg(gA.uvs,2)),this.setIndex(CA)}_extractPathPoints(){let g=bR(this.inputs.path).getPoints(this.inputs.path.subdivisions);if(g.length<2)return[];let A=[g[0]];return g.forEach(I=>{A[A.length-1].distanceToSquared(I)>.001&&A.push(I)}),this.inputs.path.isClosed&&A[A.length-1].distanceTo(A[0])<.001&&A.pop(),A}_computeBasisMatrices(g){let A=[],I=g.length,e=this.inputs.path.isClosed,i=new J,t=new J,C=new J,o=new J,B=new J(0,1,0);for(let n=0;n0&&(Q*=-1);for(let n=1;n{let Q=r===0?0:r===e-1?1:(r-A)/(e-(I===0?0:1)-(A+(1-I)));B.makeRotationZ(vg.lerp(i,i+t,Q)*vg.DEG2RAD);let E=vg.lerp(C,o,Q);a.makeScale(E,E,E),s.multiply(B).multiply(a)}),g}_computeShapePoints(g=12,A=jI.ODD){let I=this.inputs.shapeData,e=I.extractShapePointsToFlatArray([],g),i=I.shapeHoles.map(a=>{let s=a.extractShapePointsToFlatArray([],g),r=[];for(let Q=s.length-1;Q>=1;Q-=2){let E=s[Q-1],n=s[Q-0];r.push(E,n)}return r}),t;try{t=Ea({windingRule:A,elementType:Pe.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[e]})}catch{t=K0}let C;try{C=Ea({windingRule:jI.ODD,elementType:Pe.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...i]})}catch{C=jR}if(!t)throw new Error("error generating geometry");let o=t.elementCount;if(C){t.elementCount+=C.elementCount;for(let a=0;a=0;a--){let s=a>=o,r=a*2,Q=t.elements[r+0],E=t.elements[r+1],n=Q+E,h={start:Q,count:E,normals:[],isHole:s,continuous:[],verticesStart:0,verticesCount:0};B.push(h);let l=Q,c=n-1,d=Q+1,u=I.roundedCurves.length;do{let y=l-Q;t.vertices[c*2+0],t.vertices[c*2+1];let f=t.vertices[l*2+0],k=t.vertices[l*2+1],M=t.vertices[d*2+0],G=t.vertices[d*2+1],v=f-M,N=k-G,b=Math.sqrt(v*v+N*N);v/=b,N/=b,h.normals[y*2+0]=-N,h.normals[y*2+1]=v;let O=t.vertexIndices[l];if(Array.isArray(O))h.continuous[y]=!1;else{let[H,_]=I.getCurveIndexFromVertexId(O-1,!0);if(_>0&&_<1)h.continuous[y]=!0;else{let gA=_===1?H+1:H-1;gA=(gA+u)%u;let CA=_===1?0:1,AA=I.roundedCurves[H].getTangent(_),BA=I.roundedCurves[gA].getTangent(CA);h.continuous[y]=AA.dot(BA)>.95}}s&&(h.normals[y*2+0]*=-1,h.normals[y*2+1]*=-1),[c,l,d]=[l,d,d+1],d>=n&&(d-=E)}while(d!==Q+1)}return{regions:[e,...i],infos:B,vertices:t.vertices}}_insertVertex(g,A,I,e,i){let t=A*2,C=A*3;g.positions[C+0]=I.x,g.positions[C+1]=I.y,g.positions[C+2]=I.z,g.normals[C+0]=e.x,g.normals[C+1]=e.y,g.normals[C+2]=e.z,g.uvs[t+0]=i.x,g.uvs[t+1]=i.y}_extrudeRegion(g,A,I,e,i,t,C){let o=new J,B=new J,a=new J,s=new J,r=new sA;I.forEach((E,n)=>{let h=e[n],l=g.verticesStart*I.length+g.verticesCount*n;for(let c=0;c{this.update(g),A==null||A.requestRender()})}async updateFont(g,A){let I=A.getFont(g);I&&(this.font=I,await I.loadingPromise)}update(g){let A=this.font;if(this.userData={parameters:g,type:"TextGeometry"},!(A!=null&&A.isLoaded)){console.warn("Cannot update text because its font is not loaded");return}let{width:I,height:e,depth:i,extrudeBevelSize:t,extrudeBevelSegments:C,text:o,textTransform:B}=g,a=Jt.getDisplayedValue(o),s=B===2?a.toUpperCase():B===3?a.toLowerCase():a,r=jV(g,A,s),{shapes:Q,charWidths:E,charCoords:n}=A.generateShapes(r,g),h=(typeof I=="number"?I:1)*.5,l=(typeof e=="number"?e:1)*.5,c=Q.map(y=>new fe().fromShape(y,!0));this.vectorShapes=c;let d=c.map(y=>Or.create({shape:y,parameters:{depth:i,extrudeBevelSegments:C,extrudeBevelSize:t,windingRule:i<=0?jI.NONZERO:jI.ODD,subdivisions:this.isLowResolution&&i>0?PV:_V}})),u=d.length?Dr(d):oK();u.translate(-h,l,0),this.dispose(),this.wrappedText=r,this.charCoords=n,this.charWidths=E,this.deleteAttribute("extrudeNormal"),Object.entries(u.attributes).forEach(([y,f])=>{this.setAttribute(y,f)}),this.setIndex(u.index),this.computeBoundingSphere()}clone(){let g=SB(new bg,BK.prototype);return g.copy(this),console.log("CloneGeometry",this,g),g}copy(g){return Object.entries(g.attributes).forEach(([A,I])=>{this.setAttribute(A,I)}),this.setIndex(g.index),this.userData={parameters:{...g.userData.parameters},type:"TextGeometry"},this}async setText(g){this.font&&await this.font.loadingPromise,await this.update({...this.userData.parameters,text:g})}get text(){return this.userData.parameters.text??""}};function jV(g,A,I){let e=[""],i="";for(let t of I)i+=t,t===" "||t===` `?(e[e.length-1]+=i,i="",t===` -`&&e.push("")):A.getTextWidth(e[e.length-1]+i,g)>g.width&&(e[e.length-1].length&&e.push(""),A.getTextWidth(e[e.length-1]+i,g)>g.width&&(i.length===1?(e[e.length-1]+=i,i=""):(e[e.length-1]+=i.slice(0,-1),i=i[i.length-1],e.push(""))));return e[e.length-1]+=i,e}var aK,q0=new Promise(g=>{aK=g}),qM=!1,yl;function WV(){if(qM)return;if(yl)return yl;async function g(){let A="https://unpkg.com/@splinetool/modelling-wasm@0.9.483/build",I=Zn(()=>Promise.resolve().then(()=>gIA),void 0),[e,i]=await Promise.all([I,fetch(`${A}/process.wasm`).then(o=>o.arrayBuffer())]),t=e.default,C=await t({wasmBinary:i});aK(C),qM=!0}return yl=g(),yl}function AD(g,A,I,e){var a;let i,t,C;g.type==="PathGeometry"?(t=JSON.parse(JSON.stringify(g)),C=[[],["extrusion"]]):(t={...g},C=[[]]);for(let s of C){let r=t;for(let Q of s)r=r[Q];for(i in r){let Q=r[i];WW(Q)&&(r[i]=A.getVariable(Q,[e.uuid,"geometry",...s,i]))}}let o={parameters:t,type:t.type};if(t.type==="PathGeometry")o.path=t.path;else if(t.type==="VectorGeometry"){let s=fe.createFromState(t.shape,t.width,t.height);o.shape=s}else if(t.type==="NonParametricGeometry")t.data.groups&&((a=t.data.groups)==null||a.forEach(s=>s.materialIndex=Math.max(s.materialIndex??0,0))),o.geometry=new rF().parse(t);else if(t.type==="SubdivGeometry"){let s=new Pi(t,I);return s.data=g,s}else if(t.type==="TextGeometry")return new BK(t,A);let B;try{B=HM(o)}catch(s){console.error(s)}if(!B){let s=fe.createFromState(xc.defaultData(),100,100);o.shape=s,B=HM(o)}return B}var ZV=new zA;function Wy(g,A,I,e){let i=g.position.array,t=g.normal.array,C=ZV.makeScale(A,I,e).invert().elements,o,B,a;for(var s=0,r=i.length;s{Hg=g});var LM=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),bM=new Uint32Array([0,1,2,3]),YM=new Uint8Array([4]),Pi=class extends bg{constructor(A,I){super(),this.data=A,this.flatShading=I,this.subdivPointer=0,this.rebuild(),this.freeSubdivPointer()}mutateDirectlyScaleBaked(A,I){this.freeSubdivPointer();let e=this.data.scaleBaked,i=Gr.div(I,e);this.subdividedGeometry&&Wy(this.subdividedGeometry.attributes,...i),this.originalGeometry&&Wy(this.originalGeometry.attributes,...i),this.data=A;let t=this.userData.parameters;this.userData.parameters={width:t.width*i[0],height:t.height*i[1],depth:t.depth*i[2]},this.originalGeometry.boundingSphere.center.multiply(Rs.fromArray(i));let C=Rs.set(t.width,t.height,t.depth).length();this.originalGeometry.boundingSphere.radius=C/2}ensureSubdivPointer(){return this.subdivPointer===0&&this.rebuild(),this.subdivPointer}rebuild(){let A,I,e;try{({originalGeometry:A,subdividedGeometry:I,subdivPointer:e}=Pi.build(this.data,void 0,!this.flatShading,void 0))}catch{A=new Go(100,100,100),e=0}this.subdivPointer=e,this.originalGeometry=A,this.subdividedGeometry=I??void 0;let i=this.subdividedGeometry??this.originalGeometry;Object.assign(this,i),this.calcBoundingBox()}freeSubdivPointer(){this.subdivPointer&&(Pi.freeSubdivPointer(this.subdivPointer),this.subdivPointer=0)}dispose(){super.dispose(),this.freeSubdivPointer()}calcBoundingBox(){let A=this.originalGeometry;A.boundingSphere===null&&(A.boundingSphere=new ct,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=A.boundingSphere));let I=A.attributes.position,e=A.boundingSphere.center;wl.setFromBufferAttribute(I),wl.getCenter(e),A.boundingSphere.radius=e.distanceTo(wl.max),isNaN(A.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),wl.getSize(Rs);let i={width:Rs.x,height:Rs.y,depth:Rs.z};return this.userData.parameters=i,i}static build(A,I,e,i){let t,C,o,B=(A==null?void 0:A.phongAngle)??35;e===!1&&(B=-1),I&&(Hg.free_bvh(I),Hg.free_subdivision_surface(I));try{t=Pi.allocate(A,i)}catch(a){console.error(a,A),t=Pi.allocate({positionWASM:LM,indexWASM:bM,verticesPerFaceWASM:YM},i)}if(Hg.set_destination_refinement_level(t,0),C=Pi.buildLevel(t,!0,B),A.subdivisions>0)try{Hg.set_destination_refinement_level(t,A.subdivisions),o=Pi.buildLevel(t,!1,B)}catch{try{Hg.set_destination_refinement_level(t,A.subdivisions-1),o=Pi.buildLevel(t,!1,B)}catch{o=null}}else o=null;return{subdivPointer:t,originalGeometry:C,subdividedGeometry:o}}static primitiveToQuads(A,I,e){A.widthSegments>16&&(A.widthSegments=16),A.heightSegments>16&&(A.heightSegments=16),A.depthSegments>16&&(A.depthSegments=16),A.radialSegments>16&&(A.radialSegments=16),A.type==="DodecahedronGeometry"&&(A.detail=0);let i=A.shape!==void 0||A.path!==void 0?I.geometry:AD(A,e,!1),t;A.type==="TorusGeometry"&&A.arc===Math.PI*2?t=i.getClosedTorusIndicesForBooleanOrSubdiv():t=i.getIndex();let C,o,B,a;({positions:C,triIndices:a}=zD(i.getAttribute("position"),t));let s;if(A.type==="CylinderGeometry"&&A.cornerRadius===0&&A.hollow===0&&A.openEnded===!1){let r=A.radialSegments*A.heightSegments*3*2,Q=r+A.radialSegments*3;s=[r,Q]}return{indices:o,verticesPerFace:B}=rK(C,a,i,s),{positions:C,indices:o,verticesPerFace:B}}static allocate(A,I){var y;let e,i,t,C=[],o=[];A.positionWASM&&A.positionWASM.length>0?(e=A.positionWASM,i=A.indexWASM,t=A.verticesPerFaceWASM):(e=LM,i=bM,t=YM);let B=e.length,a=i.length,s=t.length,r=e.length+C.length+o.length,Q=i.length+t.length,E=r*Float32Array.BYTES_PER_ELEMENT+Q*Uint32Array.BYTES_PER_ELEMENT,n=r*Float32Array.BYTES_PER_ELEMENT,h=Hg._malloc(E),l=new Float32Array(Hg.HEAPF32.buffer,h,r),c=new Uint32Array(Hg.HEAPU32.buffer,h+n,Q);l.set(e,0),l.set(C,e.length),l.set(o,e.length+C.length),c.set(i,0),c.set(t,i.length);let d;(y=A==null?void 0:A.scaleBaked)!=null&&y.some(f=>f!==1)&&(d=new zA().makeScale(...A.scaleBaked)),I&&(d?d.premultiply(I):d=I);let u=d?Hg.alloc_subdivision_surface2(h,B,h+n,a,h+n+i.length*Uint32Array.BYTES_PER_ELEMENT,s,d.elements):Hg.alloc_subdivision_surface(h,B,h+n,a,h+n+i.length*Uint32Array.BYTES_PER_ELEMENT,s);return Hg._free(h),u}static buildLevel(A,I,e,i,t){let C=t?Hg.get_mesh_data2(A,I?Hg.Level.CONTROL:Hg.Level.REFINED,e,t.elements):Hg.get_mesh_data(A,I?Hg.Level.CONTROL:Hg.Level.REFINED,e),o=8,B=Hg.HEAPU32.subarray(C>>2,(C>>2)+o),a=B.subarray(4,4+4),s=0,r=Hg.HEAPU32[B[s]>>2],Q=Hg.HEAPF32.subarray(r>>2,(r>>2)+a[s]);s++;let E=Hg.HEAPU32[B[s]>>2],n=Hg.HEAPF32.subarray(E>>2,(E>>2)+a[s]);s++;let h=Hg.HEAPU32[B[s]>>2],l=Hg.HEAPU32.subarray(h>>2,(h>>2)+a[s]);s++;let c=Hg.HEAPU32[B[s]>>2],d=Hg.HEAPU32.subarray(c>>2,(c>>2)+a[s]);if(s++,i===void 0){let u=new bg;if(u.setIndex(new BQ(d,1)),u.setAttribute("position",new pg(Q,3)),u.setAttribute("normal",new pg(n,3)),I){u.setAttribute("faceMap",new BQ(l,1));let y=new Float32Array(n.length/3*4).fill(0);u.setAttribute("color",new zg(y,4))}return Hg.free_mesh_data(C),u.userData.type="SubdivGeometry",u}i.getAttribute("position").copyArray(Q),i.getAttribute("normal").copyArray(n),i.attributes.position.needsUpdate=!0,i.attributes.normal.needsUpdate=!0,Hg.free_mesh_data(C)}static freeSubdivPointer(A){Hg.free_bvh(A),Hg.free_subdivision_surface(A)}static buildControlCageWireframe(A,I,e){let i=Hg.get_wireframe_data_for_base_level(A),t=4,C=Hg.HEAPU32.subarray(i>>2,(i>>2)+t),o=C.subarray(2,2+2),B=0,a=Hg.HEAPU32[C[B]>>2],s=Hg.HEAPF32.subarray(a>>2,(a>>2)+o[B]);B++;let r=Hg.HEAPU32[C[B]>>2],Q=Hg.HEAPU32.subarray(r>>2,(r>>2)+o[B]);if(I===void 0){let E=new bg;E.setAttribute("position",new pg(s,3));let n=new Float32Array(s.length);for(let h=0,l=s.length;h>2,(t>>2)+C),B=o.subarray(3,3+3),a=0,s=Hg.HEAPU32[o[a]>>2],r=new Float32Array(Hg.HEAPF32.subarray(s>>2,(s>>2)+B[a]));a++;let Q=Hg.HEAPU32[o[a]>>2],E=new Uint32Array(Hg.HEAPU32.subarray(Q>>2,(Q>>2)+B[a]));a++;let n=Hg.HEAPU32[o[a]>>2],h=new Uint8Array(Hg.HEAPU32.subarray(n>>2,(n>>2)+B[a]));return Hg.free_topological_data(t),{positions:r,indices:E,verticesPerFace:h}}},xM=["getX","getY","getZ"];function zD(g,A){let I={},e=A?A.count:g.count,i=0,t=[],C=[],o=1e4;for(let a=0;a=360){let Q=B.length/2/a;B=B.filter((E,n)=>Math.floor(n/2)%Q===0)}let s=0;for(let Q=0;Q=0;Q-=2)g.push(B[Q],B[Q+1],0),i.push(r++);return t.push(r),{indices:i,verticesPerFace:t}}let C=new Float32Array([I.userData.parameters.depth])[0],o=0;for(;o.005||e&&e.some((a,s)=>s%2===1?!1:o>=e[s]&&oAz,calcBooleanTopological:()=>$V,freeMeshSet:()=>iz,getMeshSet:()=>gz,hasOpenEdges:()=>Iz,transformMeshSet:()=>ez});var sK,VV=new Promise(g=>{sK=g}),fl;function zV(){if(fl)return fl;async function g(){let A="https://unpkg.com/@splinetool/boolean-wasm@0.9.483/build",I=Zn(()=>Promise.resolve().then(()=>eIA),void 0),[e,i]=await Promise.all([I,fetch(`${A}/boolean.wasm`).then(o=>o.arrayBuffer())]),t=e.default,C=await t({wasmBinary:i});sK(C)}return fl=g(),fl}var yI,DQ;VV.then(g=>yI=g);function XV(g,A,I){let e,i;g.userData.parameters.type==="TorusGeometry"&&g.userData.parameters.arc===Math.PI*2?i=g.getClosedTorusIndicesForBooleanOrSubdiv():i=g.getIndex();let{positions:t,triIndices:C}=zD(g.getAttribute("position"),i),o;if(A&&I){let{indices:B,verticesPerFace:a}=rK(t,C,g);o=a.length,e=[];for(let s=0,r=0;s>2,(e>>2)+i),C=t.subarray(3,3+3),o=0,B=yI.HEAPU32[t[o]>>2],a=new Float32Array(yI.HEAPF32.subarray(B>>2,(B>>2)+C[o]));o++;let s=yI.HEAPU32[t[o]>>2],r=new Uint32Array(yI.HEAPU32.subarray(s>>2,(s>>2)+C[o]));o++;let Q=yI.HEAPU32[t[o]>>2],E=new Uint8Array(yI.HEAPU32.subarray(Q>>2,(Q>>2)+C[o]));return yI.free_mesh_data(e),{positions:a,indices:r,verticesPerFace:E}}function Az(g,A,I,e){DQ===void 0&&(DQ=yI.init_csg());let i=QK(g),t=yI.csg_calc(DQ,i,g.length,e,EK(A));yI._free(i);let C=5,o=yI.HEAPU32.subarray(t>>2,(t>>2)+C),B=o.subarray(2,2+3),a=0,s=yI.HEAPU32[o[a]>>2],r=yI.HEAPF32.subarray(s>>2,(s>>2)+B[a]);a++;let Q=yI.HEAPU32[o[a]>>2],E=yI.HEAPF32.subarray(Q>>2,(Q>>2)+B[a]);a++;let n=B[a];I.setAttribute("position",new pg(r,3)),I.setAttribute("normal",new pg(E,3));let h=yI.HEAPF32.subarray((t>>2)+5,(t>>2)+5+6);return I.boundingSphere===null&&(I.boundingSphere=new ct),I.boundingSphere.radius=-1,I.userData.parameters={width:h[3]*2,height:h[4]*2,depth:h[5]*2},yI.free_mesh_data(t),n}function gz(g,A,I){if(yI===void 0)return-1;let e,i,t;if(A&&g.userData.positions!==void 0){let h=g.userData;t=h.verticesPerFace.length,e=h.positions,i=Array(h.verticesPerFace.reduce((l,c)=>l+c,0)+t);for(let l=0,c=0,d=0;ltz[g.type].create(g);function Ks(g){return g!==null&&"booleanOp"in g}var nK=class extends U0(Qt){constructor(){super(...arguments),this.booleanMeshSetAddress=-1,this.booleanWasTransformed=!1,this.booleanMatrixInvOld=new zA}updateVisible(){super.updateVisible(),this.visible=!Ks(this.parent)&&this.visible,Ks(this.parent)&&this.parent.invalidateDownstreamBooleanData()}freeBooleanPointer(){this.booleanMeshSetAddress!==-1&&(aB.freeMeshSet(this.booleanMeshSetAddress),this.booleanMeshSetAddress=-1)}invalidateDownstreamBooleanData(g=!1){return g?this.booleanWasTransformed=!0:this.freeBooleanPointer(),Ks(this.parent)?this.parent.invalidateDownstreamBooleanData():this}invalidateUpstreamBooleanData(){this.freeBooleanPointer();for(let g of this.children)g instanceof nK&&(g.freeBooleanPointer(),Ks(g)&&g.invalidateUpstreamBooleanData())}updateTransformState(g,A){let I=super.updateTransformState(g,A);return I&&Ks(this.parent)&&this.invalidateDownstreamBooleanData(!0),I}onVariableUpdate(g=!1){super.onVariableUpdate(g),Ks(this.parent)&&this.invalidateDownstreamBooleanData(!0)}},Gl=new ve;function L0(g,A=0,I=g.count,e,i){let t=1/0,C=1/0,o=1/0,B=-1/0,a=-1/0,s=-1/0;for(let r=A;rB&&(B=Q),E>a&&(a=E),n>s&&(s=n)}Gl.min.set(t,C,o),Gl.max.set(B,a,s),Gl.getCenter(e),Gl.getSize(i).multiplyScalar(.5)}var Cz=new bg,oz=new Xn,Dt=class extends nK{constructor(A,I){super(Cz,oz),this.super_Entity(A,I)}updateState(A,I){this.updateState_Entity(A,I)}updateEntityBoxSize(A,I){let e=this.geometry.getAttribute("position");e!==void 0?L0(e,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:e.count,A,I):super.updateEntityBoxSize(A,I)}},TM=class{constructor(g){g=g??{},this.name=g.name,this.type=g.type,this.node=g.node,this.size=g.size,this.needsUpdate=g.needsUpdate}get value(){return this.node.value}set value(g){this.node.value=g}},Ka=class{constructor(A){this.hashProperties=void 0,this.isNode=!0,this.shortcuts={},this.uuid=vg.generateUUID(),this.type=A,this.name=""}analyze(A,I){I=I??{},A.analyzing=!0,this.build(A.addFlow(I.slot,I.cache,I.context),"v4"),A.clearVertexNodeCode(),A.clearFragmentNodeCode(),A.removeFlow(),A.analyzing=!1}analyzeAndFlow(A,I,e){return e=e??{},this.analyze(A,e),this.flow(A,I,e)}flow(A,I,e){e=e??{},A.addFlow(e.slot,e.cache,e.context);let i={result:this.build(A,I),code:A.clearNodeCode(),extra:A.context.extra};return A.removeFlow(),i}build(A,I,e){I=I??this.getType(A,I);let i=A.getNodeData(e??this);return A.analyzing&&this.appendDepsNode(A,i,I),A.nodes.indexOf(this)===-1&&A.nodes.push(this),this.updateFrame!==void 0&&A.updaters.indexOf(this)===-1&&A.updaters.push(this),this.generate(A,I,e)}updateFrame(A){}generateReadonly(A,I,e,i,t,C){return""}generate(A,I,e,i,t){return""}parse(A,I,e,i){}appendDepsNode(A,I,e){I.deps=(I.deps||0)+1;let i=A.getTypeLength(e);(i>(I.outputMax||0)||this.getType(A,e))&&(I.outputMax=i,I.output=e)}setName(A){this.name=A}getName(){return this.name}getType(A,I){return I==="sampler2D"||I==="samplerCube"?I:this.type}getHash(){let A="{",I,e;for(I in this)e=this[I],e instanceof Ka&&(A+='"'+I+'":'+e.getHash()+",");if(this.hashProperties)for(let i=0;i0||this.getLabel()?(this.appendDepsNode(A,C,I),this.generate(A,I,e)):super.build(A,I,e);if(t)return C.name=C.name||super.build(A,I,e),C.name;if(!this.getLabel()&&(!this.getShared(A,o)||A.context.ignoreCache||C.deps===1))return super.build(A,I,e);e=this.getUUID(!1);let B=this.getTemp(A,e);if(B)return A.format(B,o,I);{B=super.generate(A,I,e,C.output,i);let a=this.generate(A,o,e);return A.addNodeCode(B+" = "+a+";"),A.format(B,o,I)}}return super.build(A,I,e)}getShared(A,I){return I!=="sampler2D"&&I!=="samplerCube"&&this.shared}getUnique(A,I){return this.unique}setLabel(A){return this.label=A,this}getLabel(){return this.label}getUUID(A){let I=this.uuid;return typeof this.scope=="string"&&(I=this.scope+"-"+I),I}getTemp(A,I){I=I||this.uuid;let e=A.getVars()[I];return e?e.name:void 0}generate(A,I,e,i,t){return this.getShared(A,I)||console.error("TempNode is not shared"),e=e??this.uuid,A.getTempVar(e,i??this.getType(A),t,this.getLabel()).name}},dt=class extends VI{constructor(A,I){I=I??{},I.shared=I.shared!==void 0?I.shared:!1,super(A,I),this.readonly=!1}setReadonly(A){return this.readonly=A,this.hashProperties=this.readonly?["value"]:void 0,this}getReadonly(){return this.readonly}generate(A,I,e,i,t,C){e=A.getUUID(e??this.getUUID()),i=i??this.getType(A);let o=A.getNodeData(e);return this.getReadonly()&&this.generateReadonly!==void 0?this.generateReadonly(A,I,e,i,t,C):A.isShader("vertex")?(o.vertex||(o.vertex=A.createVertexUniform(i,this,t,C,this.getLabel())),A.format(o.vertex.name,i,I)):(o.fragment||(o.fragment=A.createFragmentUniform(i,this,t,C,this.getLabel())),A.format(o.fragment.name,i,I))}},wi=class extends dt{constructor(A=0,I){super("v2"),this.nodeType="Vector2",this.value=A instanceof sA?A:new sA(A,I)}get x(){return this.value.x}set x(A){this.value.x=A}get y(){return this.value.y}set y(A){this.value.y=A}generateReadonly(A,I,e,i,t,C){return A.format("vec2("+this.value.x+", "+this.value.y+")",i,I)}},Wt=class extends dt{constructor(A=0,I,e){super("v3"),this.nodeType="Vector3",this.value=A instanceof J?A:new J(A,I,e)}get x(){return this.value.x}set x(A){this.value.x=A}get y(){return this.value.y}set y(A){this.value.y=A}get z(){return this.value.z}set z(A){this.value.z=A}generateReadonly(A,I,e,i,t,C){return A.format("vec3("+this.value.x+", "+this.value.y+", "+this.value.z+")",i,I)}},lt=class extends Og{constructor(A,I,e,i){super(A,I,e),this.isColorA=!0,this.a=i}setRGBA(A,I,e,i){super.setRGB(A,I,e),this.a=i}copy(A){return super.copy(A),this.a="a"in A?A.a:1,this}clone(){return new this.constructor(this.r,this.g,this.b,this.a)}setStyle(A,I="srgb"){let e;if(A==="transparent")return this.setRGBA(0,0,0,0),this;if(e=/^((?:rgb|hsl)a?)\(([^)]*)\)/.exec(A)){let i,t=e[1],C=e[2];switch(t){case"rgb":case"rgba":if(i=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(C))return this.a=t==="rgba"?parseFloat(i[4]):1,super.setStyle(A,I);break;case"hsl":case"hsla":if(i=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)%\s*,\s*(\d*\.?\d+)%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(C))return this.a=t==="hsla"?parseFloat(i[4]):1,super.setStyle(A,I);break}}return super.setStyle(A,I)}get x(){return this.r}get y(){return this.g}get z(){return this.b}get w(){return this.a}set x(A){this.r=A}set y(A){this.g=A}set z(A){this.b=A}set w(A){this.a=A}},rB=class extends dt{constructor(A){super("v4"),this.nodeType="Vector4",this.value=A instanceof lt?A:new lt(A.r,A.g,A.b,A.a)}generateReadonly(A,I,e,i,t,C){return A.format("vec4("+this.value.r+", "+this.value.g+", "+this.value.b+", "+this.value.a+")",i,I)}},az=/^\s*([a-z_0-9]+)\s([a-z_0-9]+)\s*\((.*?)\)/i,OM=/[a-z_0-9]+/gi,rg=class extends VI{constructor(A,I,e,i,t){super(t),this.src="",this.nodeType="Function",this.useKeywords=!0,this.includes=[],this.extensions={},this.keywords={},this.isMethod=t===void 0,this.isInterface=!1,this.parse(A,I,e,i)}getShared(A,I){return!this.isMethod}getType(A){return A.getTypeByFormat(this.type)}getInputByName(A){if(this.inputs){let I=this.inputs.length;for(;I--;)if(this.inputs[I].name===A)return this.inputs[I]}}getIncludeByName(A){if(this.includes){let I=this.includes.length;for(;I--;)if(this.includes[I].name===A)return this.includes[I]}}generate(A,I,e,i,t){let C,o=0,B=this.src;if(this.includes)for(let s=0;s1?(C=B[1],t=B[2],o=B[3]):(t=this.src,C="f"),this.name=t,this.type=C,this.value=o}build(g,A){if(A==="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 g.include(this),g.format(this.name,this.getType(g),A)}generate(g,A,I,e,i){return g.format(this.name,this.getType(g),A)}},PI=hK;PI.PI="PI",PI.PI2="PI2",PI.RECIPROCAL_PI="RECIPROCAL_PI",PI.RECIPROCAL_PI2="RECIPROCAL_PI2",PI.LOG2="LOG2",PI.EPSILON="EPSILON";var sz=new RegExp(`^structs*([a-z_0-9]+)s*{s*((.| +`&&e.push("")):A.getTextWidth(e[e.length-1]+i,g)>g.width&&(e[e.length-1].length&&e.push(""),A.getTextWidth(e[e.length-1]+i,g)>g.width&&(i.length===1?(e[e.length-1]+=i,i=""):(e[e.length-1]+=i.slice(0,-1),i=i[i.length-1],e.push(""))));return e[e.length-1]+=i,e}var aK,q0=new Promise(g=>{aK=g}),qM=!1,yl;function WV(){if(qM)return;if(yl)return yl;async function g(){let A="https://unpkg.com/@splinetool/modelling-wasm@0.9.483/build",I=Zn(()=>Promise.resolve().then(()=>gIA),void 0,import.meta.url),[e,i]=await Promise.all([I,fetch(`${A}/process.wasm`).then(o=>o.arrayBuffer())]),t=e.default,C=await t({wasmBinary:i});aK(C),qM=!0}return yl=g(),yl}function AD(g,A,I,e){var a;let i,t,C;g.type==="PathGeometry"?(t=JSON.parse(JSON.stringify(g)),C=[[],["extrusion"]]):(t={...g},C=[[]]);for(let s of C){let r=t;for(let Q of s)r=r[Q];for(i in r){let Q=r[i];WW(Q)&&(r[i]=A.getVariable(Q,[e.uuid,"geometry",...s,i]))}}let o={parameters:t,type:t.type};if(t.type==="PathGeometry")o.path=t.path;else if(t.type==="VectorGeometry"){let s=fe.createFromState(t.shape,t.width,t.height);o.shape=s}else if(t.type==="NonParametricGeometry")t.data.groups&&((a=t.data.groups)==null||a.forEach(s=>s.materialIndex=Math.max(s.materialIndex??0,0))),o.geometry=new rF().parse(t);else if(t.type==="SubdivGeometry"){let s=new Pi(t,I);return s.data=g,s}else if(t.type==="TextGeometry")return new BK(t,A);let B;try{B=HM(o)}catch(s){console.error(s)}if(!B){let s=fe.createFromState(xc.defaultData(),100,100);o.shape=s,B=HM(o)}return B}var ZV=new zA;function Wy(g,A,I,e){let i=g.position.array,t=g.normal.array,C=ZV.makeScale(A,I,e).invert().elements,o,B,a;for(var s=0,r=i.length;s{Hg=g});var LM=new Float32Array([10,10,0,-10,10,0,-10,-10,0,10,-10,0]),bM=new Uint32Array([0,1,2,3]),YM=new Uint8Array([4]),Pi=class extends bg{constructor(A,I){super(),this.data=A,this.flatShading=I,this.subdivPointer=0,this.rebuild(),this.freeSubdivPointer()}mutateDirectlyScaleBaked(A,I){this.freeSubdivPointer();let e=this.data.scaleBaked,i=Gr.div(I,e);this.subdividedGeometry&&Wy(this.subdividedGeometry.attributes,...i),this.originalGeometry&&Wy(this.originalGeometry.attributes,...i),this.data=A;let t=this.userData.parameters;this.userData.parameters={width:t.width*i[0],height:t.height*i[1],depth:t.depth*i[2]},this.originalGeometry.boundingSphere.center.multiply(Rs.fromArray(i));let C=Rs.set(t.width,t.height,t.depth).length();this.originalGeometry.boundingSphere.radius=C/2}ensureSubdivPointer(){return this.subdivPointer===0&&this.rebuild(),this.subdivPointer}rebuild(){let A,I,e;try{({originalGeometry:A,subdividedGeometry:I,subdivPointer:e}=Pi.build(this.data,void 0,!this.flatShading,void 0))}catch{A=new Go(100,100,100),e=0}this.subdivPointer=e,this.originalGeometry=A,this.subdividedGeometry=I??void 0;let i=this.subdividedGeometry??this.originalGeometry;Object.assign(this,i),this.calcBoundingBox()}freeSubdivPointer(){this.subdivPointer&&(Pi.freeSubdivPointer(this.subdivPointer),this.subdivPointer=0)}dispose(){super.dispose(),this.freeSubdivPointer()}calcBoundingBox(){let A=this.originalGeometry;A.boundingSphere===null&&(A.boundingSphere=new ct,this.subdividedGeometry&&(this.subdividedGeometry.boundingSphere=A.boundingSphere));let I=A.attributes.position,e=A.boundingSphere.center;wl.setFromBufferAttribute(I),wl.getCenter(e),A.boundingSphere.radius=e.distanceTo(wl.max),isNaN(A.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this),wl.getSize(Rs);let i={width:Rs.x,height:Rs.y,depth:Rs.z};return this.userData.parameters=i,i}static build(A,I,e,i){let t,C,o,B=(A==null?void 0:A.phongAngle)??35;e===!1&&(B=-1),I&&(Hg.free_bvh(I),Hg.free_subdivision_surface(I));try{t=Pi.allocate(A,i)}catch(a){console.error(a,A),t=Pi.allocate({positionWASM:LM,indexWASM:bM,verticesPerFaceWASM:YM},i)}if(Hg.set_destination_refinement_level(t,0),C=Pi.buildLevel(t,!0,B),A.subdivisions>0)try{Hg.set_destination_refinement_level(t,A.subdivisions),o=Pi.buildLevel(t,!1,B)}catch{try{Hg.set_destination_refinement_level(t,A.subdivisions-1),o=Pi.buildLevel(t,!1,B)}catch{o=null}}else o=null;return{subdivPointer:t,originalGeometry:C,subdividedGeometry:o}}static primitiveToQuads(A,I,e){A.widthSegments>16&&(A.widthSegments=16),A.heightSegments>16&&(A.heightSegments=16),A.depthSegments>16&&(A.depthSegments=16),A.radialSegments>16&&(A.radialSegments=16),A.type==="DodecahedronGeometry"&&(A.detail=0);let i=A.shape!==void 0||A.path!==void 0?I.geometry:AD(A,e,!1),t;A.type==="TorusGeometry"&&A.arc===Math.PI*2?t=i.getClosedTorusIndicesForBooleanOrSubdiv():t=i.getIndex();let C,o,B,a;({positions:C,triIndices:a}=zD(i.getAttribute("position"),t));let s;if(A.type==="CylinderGeometry"&&A.cornerRadius===0&&A.hollow===0&&A.openEnded===!1){let r=A.radialSegments*A.heightSegments*3*2,Q=r+A.radialSegments*3;s=[r,Q]}return{indices:o,verticesPerFace:B}=rK(C,a,i,s),{positions:C,indices:o,verticesPerFace:B}}static allocate(A,I){var y;let e,i,t,C=[],o=[];A.positionWASM&&A.positionWASM.length>0?(e=A.positionWASM,i=A.indexWASM,t=A.verticesPerFaceWASM):(e=LM,i=bM,t=YM);let B=e.length,a=i.length,s=t.length,r=e.length+C.length+o.length,Q=i.length+t.length,E=r*Float32Array.BYTES_PER_ELEMENT+Q*Uint32Array.BYTES_PER_ELEMENT,n=r*Float32Array.BYTES_PER_ELEMENT,h=Hg._malloc(E),l=new Float32Array(Hg.HEAPF32.buffer,h,r),c=new Uint32Array(Hg.HEAPU32.buffer,h+n,Q);l.set(e,0),l.set(C,e.length),l.set(o,e.length+C.length),c.set(i,0),c.set(t,i.length);let d;(y=A==null?void 0:A.scaleBaked)!=null&&y.some(f=>f!==1)&&(d=new zA().makeScale(...A.scaleBaked)),I&&(d?d.premultiply(I):d=I);let u=d?Hg.alloc_subdivision_surface2(h,B,h+n,a,h+n+i.length*Uint32Array.BYTES_PER_ELEMENT,s,d.elements):Hg.alloc_subdivision_surface(h,B,h+n,a,h+n+i.length*Uint32Array.BYTES_PER_ELEMENT,s);return Hg._free(h),u}static buildLevel(A,I,e,i,t){let C=t?Hg.get_mesh_data2(A,I?Hg.Level.CONTROL:Hg.Level.REFINED,e,t.elements):Hg.get_mesh_data(A,I?Hg.Level.CONTROL:Hg.Level.REFINED,e),o=8,B=Hg.HEAPU32.subarray(C>>2,(C>>2)+o),a=B.subarray(4,4+4),s=0,r=Hg.HEAPU32[B[s]>>2],Q=Hg.HEAPF32.subarray(r>>2,(r>>2)+a[s]);s++;let E=Hg.HEAPU32[B[s]>>2],n=Hg.HEAPF32.subarray(E>>2,(E>>2)+a[s]);s++;let h=Hg.HEAPU32[B[s]>>2],l=Hg.HEAPU32.subarray(h>>2,(h>>2)+a[s]);s++;let c=Hg.HEAPU32[B[s]>>2],d=Hg.HEAPU32.subarray(c>>2,(c>>2)+a[s]);if(s++,i===void 0){let u=new bg;if(u.setIndex(new BQ(d,1)),u.setAttribute("position",new pg(Q,3)),u.setAttribute("normal",new pg(n,3)),I){u.setAttribute("faceMap",new BQ(l,1));let y=new Float32Array(n.length/3*4).fill(0);u.setAttribute("color",new zg(y,4))}return Hg.free_mesh_data(C),u.userData.type="SubdivGeometry",u}i.getAttribute("position").copyArray(Q),i.getAttribute("normal").copyArray(n),i.attributes.position.needsUpdate=!0,i.attributes.normal.needsUpdate=!0,Hg.free_mesh_data(C)}static freeSubdivPointer(A){Hg.free_bvh(A),Hg.free_subdivision_surface(A)}static buildControlCageWireframe(A,I,e){let i=Hg.get_wireframe_data_for_base_level(A),t=4,C=Hg.HEAPU32.subarray(i>>2,(i>>2)+t),o=C.subarray(2,2+2),B=0,a=Hg.HEAPU32[C[B]>>2],s=Hg.HEAPF32.subarray(a>>2,(a>>2)+o[B]);B++;let r=Hg.HEAPU32[C[B]>>2],Q=Hg.HEAPU32.subarray(r>>2,(r>>2)+o[B]);if(I===void 0){let E=new bg;E.setAttribute("position",new pg(s,3));let n=new Float32Array(s.length);for(let h=0,l=s.length;h>2,(t>>2)+C),B=o.subarray(3,3+3),a=0,s=Hg.HEAPU32[o[a]>>2],r=new Float32Array(Hg.HEAPF32.subarray(s>>2,(s>>2)+B[a]));a++;let Q=Hg.HEAPU32[o[a]>>2],E=new Uint32Array(Hg.HEAPU32.subarray(Q>>2,(Q>>2)+B[a]));a++;let n=Hg.HEAPU32[o[a]>>2],h=new Uint8Array(Hg.HEAPU32.subarray(n>>2,(n>>2)+B[a]));return Hg.free_topological_data(t),{positions:r,indices:E,verticesPerFace:h}}},xM=["getX","getY","getZ"];function zD(g,A){let I={},e=A?A.count:g.count,i=0,t=[],C=[],o=1e4;for(let a=0;a=360){let Q=B.length/2/a;B=B.filter((E,n)=>Math.floor(n/2)%Q===0)}let s=0;for(let Q=0;Q=0;Q-=2)g.push(B[Q],B[Q+1],0),i.push(r++);return t.push(r),{indices:i,verticesPerFace:t}}let C=new Float32Array([I.userData.parameters.depth])[0],o=0;for(;o.005||e&&e.some((a,s)=>s%2===1?!1:o>=e[s]&&oAz,calcBooleanTopological:()=>$V,freeMeshSet:()=>iz,getMeshSet:()=>gz,hasOpenEdges:()=>Iz,transformMeshSet:()=>ez});var sK,VV=new Promise(g=>{sK=g}),fl;function zV(){if(fl)return fl;async function g(){let A="https://unpkg.com/@splinetool/boolean-wasm@0.9.483/build",I=Zn(()=>Promise.resolve().then(()=>eIA),void 0,import.meta.url),[e,i]=await Promise.all([I,fetch(`${A}/boolean.wasm`).then(o=>o.arrayBuffer())]),t=e.default,C=await t({wasmBinary:i});sK(C)}return fl=g(),fl}var yI,DQ;VV.then(g=>yI=g);function XV(g,A,I){let e,i;g.userData.parameters.type==="TorusGeometry"&&g.userData.parameters.arc===Math.PI*2?i=g.getClosedTorusIndicesForBooleanOrSubdiv():i=g.getIndex();let{positions:t,triIndices:C}=zD(g.getAttribute("position"),i),o;if(A&&I){let{indices:B,verticesPerFace:a}=rK(t,C,g);o=a.length,e=[];for(let s=0,r=0;s>2,(e>>2)+i),C=t.subarray(3,3+3),o=0,B=yI.HEAPU32[t[o]>>2],a=new Float32Array(yI.HEAPF32.subarray(B>>2,(B>>2)+C[o]));o++;let s=yI.HEAPU32[t[o]>>2],r=new Uint32Array(yI.HEAPU32.subarray(s>>2,(s>>2)+C[o]));o++;let Q=yI.HEAPU32[t[o]>>2],E=new Uint8Array(yI.HEAPU32.subarray(Q>>2,(Q>>2)+C[o]));return yI.free_mesh_data(e),{positions:a,indices:r,verticesPerFace:E}}function Az(g,A,I,e){DQ===void 0&&(DQ=yI.init_csg());let i=QK(g),t=yI.csg_calc(DQ,i,g.length,e,EK(A));yI._free(i);let C=5,o=yI.HEAPU32.subarray(t>>2,(t>>2)+C),B=o.subarray(2,2+3),a=0,s=yI.HEAPU32[o[a]>>2],r=yI.HEAPF32.subarray(s>>2,(s>>2)+B[a]);a++;let Q=yI.HEAPU32[o[a]>>2],E=yI.HEAPF32.subarray(Q>>2,(Q>>2)+B[a]);a++;let n=B[a];I.setAttribute("position",new pg(r,3)),I.setAttribute("normal",new pg(E,3));let h=yI.HEAPF32.subarray((t>>2)+5,(t>>2)+5+6);return I.boundingSphere===null&&(I.boundingSphere=new ct),I.boundingSphere.radius=-1,I.userData.parameters={width:h[3]*2,height:h[4]*2,depth:h[5]*2},yI.free_mesh_data(t),n}function gz(g,A,I){if(yI===void 0)return-1;let e,i,t;if(A&&g.userData.positions!==void 0){let h=g.userData;t=h.verticesPerFace.length,e=h.positions,i=Array(h.verticesPerFace.reduce((l,c)=>l+c,0)+t);for(let l=0,c=0,d=0;ltz[g.type].create(g);function Ks(g){return g!==null&&"booleanOp"in g}var nK=class extends U0(Qt){constructor(){super(...arguments),this.booleanMeshSetAddress=-1,this.booleanWasTransformed=!1,this.booleanMatrixInvOld=new zA}updateVisible(){super.updateVisible(),this.visible=!Ks(this.parent)&&this.visible,Ks(this.parent)&&this.parent.invalidateDownstreamBooleanData()}freeBooleanPointer(){this.booleanMeshSetAddress!==-1&&(aB.freeMeshSet(this.booleanMeshSetAddress),this.booleanMeshSetAddress=-1)}invalidateDownstreamBooleanData(g=!1){return g?this.booleanWasTransformed=!0:this.freeBooleanPointer(),Ks(this.parent)?this.parent.invalidateDownstreamBooleanData():this}invalidateUpstreamBooleanData(){this.freeBooleanPointer();for(let g of this.children)g instanceof nK&&(g.freeBooleanPointer(),Ks(g)&&g.invalidateUpstreamBooleanData())}updateTransformState(g,A){let I=super.updateTransformState(g,A);return I&&Ks(this.parent)&&this.invalidateDownstreamBooleanData(!0),I}onVariableUpdate(g=!1){super.onVariableUpdate(g),Ks(this.parent)&&this.invalidateDownstreamBooleanData(!0)}},Gl=new ve;function L0(g,A=0,I=g.count,e,i){let t=1/0,C=1/0,o=1/0,B=-1/0,a=-1/0,s=-1/0;for(let r=A;rB&&(B=Q),E>a&&(a=E),n>s&&(s=n)}Gl.min.set(t,C,o),Gl.max.set(B,a,s),Gl.getCenter(e),Gl.getSize(i).multiplyScalar(.5)}var Cz=new bg,oz=new Xn,Dt=class extends nK{constructor(A,I){super(Cz,oz),this.super_Entity(A,I)}updateState(A,I){this.updateState_Entity(A,I)}updateEntityBoxSize(A,I){let e=this.geometry.getAttribute("position");e!==void 0?L0(e,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:e.count,A,I):super.updateEntityBoxSize(A,I)}},TM=class{constructor(g){g=g??{},this.name=g.name,this.type=g.type,this.node=g.node,this.size=g.size,this.needsUpdate=g.needsUpdate}get value(){return this.node.value}set value(g){this.node.value=g}},Ka=class{constructor(A){this.hashProperties=void 0,this.isNode=!0,this.shortcuts={},this.uuid=vg.generateUUID(),this.type=A,this.name=""}analyze(A,I){I=I??{},A.analyzing=!0,this.build(A.addFlow(I.slot,I.cache,I.context),"v4"),A.clearVertexNodeCode(),A.clearFragmentNodeCode(),A.removeFlow(),A.analyzing=!1}analyzeAndFlow(A,I,e){return e=e??{},this.analyze(A,e),this.flow(A,I,e)}flow(A,I,e){e=e??{},A.addFlow(e.slot,e.cache,e.context);let i={result:this.build(A,I),code:A.clearNodeCode(),extra:A.context.extra};return A.removeFlow(),i}build(A,I,e){I=I??this.getType(A,I);let i=A.getNodeData(e??this);return A.analyzing&&this.appendDepsNode(A,i,I),A.nodes.indexOf(this)===-1&&A.nodes.push(this),this.updateFrame!==void 0&&A.updaters.indexOf(this)===-1&&A.updaters.push(this),this.generate(A,I,e)}updateFrame(A){}generateReadonly(A,I,e,i,t,C){return""}generate(A,I,e,i,t){return""}parse(A,I,e,i){}appendDepsNode(A,I,e){I.deps=(I.deps||0)+1;let i=A.getTypeLength(e);(i>(I.outputMax||0)||this.getType(A,e))&&(I.outputMax=i,I.output=e)}setName(A){this.name=A}getName(){return this.name}getType(A,I){return I==="sampler2D"||I==="samplerCube"?I:this.type}getHash(){let A="{",I,e;for(I in this)e=this[I],e instanceof Ka&&(A+='"'+I+'":'+e.getHash()+",");if(this.hashProperties)for(let i=0;i0||this.getLabel()?(this.appendDepsNode(A,C,I),this.generate(A,I,e)):super.build(A,I,e);if(t)return C.name=C.name||super.build(A,I,e),C.name;if(!this.getLabel()&&(!this.getShared(A,o)||A.context.ignoreCache||C.deps===1))return super.build(A,I,e);e=this.getUUID(!1);let B=this.getTemp(A,e);if(B)return A.format(B,o,I);{B=super.generate(A,I,e,C.output,i);let a=this.generate(A,o,e);return A.addNodeCode(B+" = "+a+";"),A.format(B,o,I)}}return super.build(A,I,e)}getShared(A,I){return I!=="sampler2D"&&I!=="samplerCube"&&this.shared}getUnique(A,I){return this.unique}setLabel(A){return this.label=A,this}getLabel(){return this.label}getUUID(A){let I=this.uuid;return typeof this.scope=="string"&&(I=this.scope+"-"+I),I}getTemp(A,I){I=I||this.uuid;let e=A.getVars()[I];return e?e.name:void 0}generate(A,I,e,i,t){return this.getShared(A,I)||console.error("TempNode is not shared"),e=e??this.uuid,A.getTempVar(e,i??this.getType(A),t,this.getLabel()).name}},dt=class extends VI{constructor(A,I){I=I??{},I.shared=I.shared!==void 0?I.shared:!1,super(A,I),this.readonly=!1}setReadonly(A){return this.readonly=A,this.hashProperties=this.readonly?["value"]:void 0,this}getReadonly(){return this.readonly}generate(A,I,e,i,t,C){e=A.getUUID(e??this.getUUID()),i=i??this.getType(A);let o=A.getNodeData(e);return this.getReadonly()&&this.generateReadonly!==void 0?this.generateReadonly(A,I,e,i,t,C):A.isShader("vertex")?(o.vertex||(o.vertex=A.createVertexUniform(i,this,t,C,this.getLabel())),A.format(o.vertex.name,i,I)):(o.fragment||(o.fragment=A.createFragmentUniform(i,this,t,C,this.getLabel())),A.format(o.fragment.name,i,I))}},wi=class extends dt{constructor(A=0,I){super("v2"),this.nodeType="Vector2",this.value=A instanceof sA?A:new sA(A,I)}get x(){return this.value.x}set x(A){this.value.x=A}get y(){return this.value.y}set y(A){this.value.y=A}generateReadonly(A,I,e,i,t,C){return A.format("vec2("+this.value.x+", "+this.value.y+")",i,I)}},Wt=class extends dt{constructor(A=0,I,e){super("v3"),this.nodeType="Vector3",this.value=A instanceof J?A:new J(A,I,e)}get x(){return this.value.x}set x(A){this.value.x=A}get y(){return this.value.y}set y(A){this.value.y=A}get z(){return this.value.z}set z(A){this.value.z=A}generateReadonly(A,I,e,i,t,C){return A.format("vec3("+this.value.x+", "+this.value.y+", "+this.value.z+")",i,I)}},lt=class extends Og{constructor(A,I,e,i){super(A,I,e),this.isColorA=!0,this.a=i}setRGBA(A,I,e,i){super.setRGB(A,I,e),this.a=i}copy(A){return super.copy(A),this.a="a"in A?A.a:1,this}clone(){return new this.constructor(this.r,this.g,this.b,this.a)}setStyle(A,I="srgb"){let e;if(A==="transparent")return this.setRGBA(0,0,0,0),this;if(e=/^((?:rgb|hsl)a?)\(([^)]*)\)/.exec(A)){let i,t=e[1],C=e[2];switch(t){case"rgb":case"rgba":if(i=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(C))return this.a=t==="rgba"?parseFloat(i[4]):1,super.setStyle(A,I);break;case"hsl":case"hsla":if(i=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)%\s*,\s*(\d*\.?\d+)%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(C))return this.a=t==="hsla"?parseFloat(i[4]):1,super.setStyle(A,I);break}}return super.setStyle(A,I)}get x(){return this.r}get y(){return this.g}get z(){return this.b}get w(){return this.a}set x(A){this.r=A}set y(A){this.g=A}set z(A){this.b=A}set w(A){this.a=A}},rB=class extends dt{constructor(A){super("v4"),this.nodeType="Vector4",this.value=A instanceof lt?A:new lt(A.r,A.g,A.b,A.a)}generateReadonly(A,I,e,i,t,C){return A.format("vec4("+this.value.r+", "+this.value.g+", "+this.value.b+", "+this.value.a+")",i,I)}},az=/^\s*([a-z_0-9]+)\s([a-z_0-9]+)\s*\((.*?)\)/i,OM=/[a-z_0-9]+/gi,rg=class extends VI{constructor(A,I,e,i,t){super(t),this.src="",this.nodeType="Function",this.useKeywords=!0,this.includes=[],this.extensions={},this.keywords={},this.isMethod=t===void 0,this.isInterface=!1,this.parse(A,I,e,i)}getShared(A,I){return!this.isMethod}getType(A){return A.getTypeByFormat(this.type)}getInputByName(A){if(this.inputs){let I=this.inputs.length;for(;I--;)if(this.inputs[I].name===A)return this.inputs[I]}}getIncludeByName(A){if(this.includes){let I=this.includes.length;for(;I--;)if(this.includes[I].name===A)return this.includes[I]}}generate(A,I,e,i,t){let C,o=0,B=this.src;if(this.includes)for(let s=0;s1?(C=B[1],t=B[2],o=B[3]):(t=this.src,C="f"),this.name=t,this.type=C,this.value=o}build(g,A){if(A==="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 g.include(this),g.format(this.name,this.getType(g),A)}generate(g,A,I,e,i){return g.format(this.name,this.getType(g),A)}},PI=hK;PI.PI="PI",PI.PI2="PI2",PI.RECIPROCAL_PI="RECIPROCAL_PI",PI.RECIPROCAL_PI2="RECIPROCAL_PI2",PI.LOG2="LOG2",PI.EPSILON="EPSILON";var sz=new RegExp(`^structs*([a-z_0-9]+)s*{s*((.| )*?)}`,"gim"),Qz=new RegExp("s*(w*?)s*(w*?)(=|;)","gim"),lK=class extends VI{constructor(g=""){super(),this.inputs=[],this.src="",this.nodeType="Struct",this.parse(g)}getType(g){return g.getTypeByFormat(this.name)}getInputByName(g){let A=this.inputs.length;for(;A--;)if(this.inputs[A].name===g)return this.inputs[A]}generate(g,A,I,e,i){return A==="source"?this.src+";":g.format("( "+this.src+" )",this.getType(g),A)}parse(g=""){this.src=g,this.inputs=[];let A=sz.exec(g);if(A){let I=A[2],e;for(;e=Qz.exec(I);)this.inputs.push({type:e[1],name:e[2]});this.name=A[1]}else this.name="";this.type=this.name}},b0=class extends VI{constructor(g){super("v2",{shared:!1}),this.nodeType="UV",this.index=g??0}generate(g,A){g.requires.uv[this.index]=!0;let I=this.index>0?this.index+1:"",e=g.isShader("vertex")?"uv"+I:"vUv"+I;return g.format(e,this.getType(g),A)}};st.addKeyword("uv",function(){return new b0});st.addKeyword("uv2",function(){return new b0(1)});var Vs=class extends VI{constructor(g,A){super("v4"),this.nodeType="ColorSpace",this.input=g,this.method=A??Vs.LINEAR_TO_LINEAR,this.hashProperties=["method"]}static getEncodingComponents(g){switch(g){case fo:return["Linear"];case sI:return["sRGB"];default:return[]}}generate(g,A){var C;let I=this.input.build(g,"v4"),e=this.getType(g),i=Vs.Nodes[this.method],t=g.include(i);if(t===Vs.LINEAR_TO_LINEAR)return g.format(I,e,A);if(((C=i.inputs)==null?void 0:C.length)===2){let o=this.factor.build(g,"f");return g.format(t+"( "+I+", "+o+" )",e,A)}else return g.format(t+"( "+I+" )",e,A)}fromEncoding(g){let A=Vs.getEncodingComponents(g);this.method="LinearTo"+A[0],this.factor=A[1]}fromDecoding(g){let A=Vs.getEncodingComponents(g);this.method=A[0]+"ToLinear",this.factor=A[1]}},uo=Vs;uo.Nodes={LinearToLinear:new rg(["vec4 LinearToLinear( in vec4 value ) {"," return value;","}"].join(` `)),sRGBToLinear:new rg(["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(` `)),LinearTosRGB:new rg(["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(` @@ -5350,7 +5350,7 @@ float sobelSample(sampler2D t, sampler2D d, vec2 uv, vec2 resolution, float outl outgoingLight = spe_blend( diffuseColor, outgoingLight, ${t.result} * ${r}, ${C.result} ); } `),o&&s.push(o.code,`outgoingLight = spe_blend(outgoingLight, ${o.result}, 1.0, SPE_BLENDING_NORMAL);`),B?s.push(`gl_FragColor = vec4( outgoingLight, accumAlpha * ${B.result} );`):s.push("gl_FragColor = vec4( outgoingLight, 1.0 );"),a&&s.push(`gl_FragColor.a *= ${a.result};`),s.push("#include ","#include ","#include "),A=s.join(` -`)}return A}},Fz=class{constructor(g=1e3*10){this.timeout=g,this.cache=new Map,this.head={data:null,time:0,src:null,next:null,prev:null},this.tail={data:null,time:1/0,src:null,next:null,prev:null},this.hasClean=!1,this.head.next=this.tail,this.tail.prev=this.head}log(...g){}remove(g){let A=this.cache.get(g);A&&(this.dispose(g,A.data),this.cache.delete(g),A.prev.next=A.next,A.next.prev=A.prev)}scheduleCleanup(){this.hasClean||(this.log("scheduled cleanup"),this.hasClean=!0,setTimeout(()=>{this.hasClean=!1,this.log("cleaning");let g=Date.now(),A=this.head.next;for(;A.time"u")return;this.disposeTextures(),this.loaded=!1;let A=()=>{this.loaded=!0;let e=[1e3,1001,1002];for(let i of e){let t=this[i];t&&(t.image=this.img,t.needsUpdate=!0)}this.shared.requestRender()};if(this.isVideo){if(this.img=document.createElement("video"),this.img.preload="auto",this.img.playsInline=!0,this.img.currentTime=.01,typeof g!="string"){var I=new FileReader;I.readAsDataURL(new Blob([g],{type:"video/mp4"}));let e;await new Promise(i=>{I.onloadend=t=>{var C;e=(C=t.target)==null?void 0:C.result,i(null)}}),this.img.src=e}else this.img.src=g;this.img.onloadeddata=()=>{A()}}else this.img=new Image,this.img.src=Kz(g),this.img.onload=A}getTexture(g){let A=this[g];if(A)return A;{let I;return this.isVideo?I=new vH(this.img,void 0,g,g):I=new ti(this.img,void 0,g,g),this.loaded&&(I.needsUpdate=!0),this[g]=I,I}}disposeTextures(){var g,A,I;(g=this[1e3])==null||g.dispose(),this[1e3]=void 0,(A=this[1001])==null||A.dispose(),this[1001]=void 0,(I=this[1002])==null||I.dispose(),this[1002]=void 0}dispose(){super.dispose(),this.disposeTextures()}},dr=class extends YK{};function qz(g,A){var I=xz(A);return I.formatToParts?bz(I,g):Yz(I,g)}var Lz={year:0,month:1,day:2,hour:3,minute:4,second:5};function bz(g,A){try{for(var I=g.formatToParts(A),e=[],i=0;i=0&&(e[t]=parseInt(I[i].value,10))}return e}catch(C){if(C instanceof RangeError)return[NaN];throw C}}function Yz(g,A){var I=g.format(A).replace(/\u200E/g,""),e=/(\d+)\/(\d+)\/(\d+),? (\d+):(\d+):(\d+)/.exec(I);return[e[3],e[1],e[2],e[4],e[5],e[6]]}var _u={};function xz(g){if(!_u[g]){var A=new Intl.DateTimeFormat("en-US",{hour12:!1,timeZone:"America/New_York",year:"numeric",month:"numeric",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"}).format(new Date("2014-06-25T04:00:00.123Z")),I=A==="06/25/2014, 00:00:00"||A==="‎06‎/‎25‎/‎2014‎ ‎00‎:‎00‎:‎00";_u[g]=I?new Intl.DateTimeFormat("en-US",{hour12:!1,timeZone:g,year:"numeric",month:"numeric",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"}):new Intl.DateTimeFormat("en-US",{hourCycle:"h23",timeZone:g,year:"numeric",month:"numeric",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"})}return _u[g]}function xK(g,A,I,e,i,t,C){var o=new Date(0);return o.setUTCFullYear(g,A,I),o.setUTCHours(e,i,t,C),o}var ZM=36e5,Hz=6e4,Pu={timezone:/([Z+-].*)$/,timezoneZ:/^(Z)$/,timezoneHH:/^([+-]\d{2})$/,timezoneHHMM:/^([+-]\d{2}):?(\d{2})$/};function HK(g,A,I){var e,i;if(!g||(e=Pu.timezoneZ.exec(g),e))return 0;var t;if(e=Pu.timezoneHH.exec(g),e)return t=parseInt(e[1],10),VM(t)?-(t*ZM):NaN;if(e=Pu.timezoneHHMM.exec(g),e){t=parseInt(e[1],10);var C=parseInt(e[2],10);return VM(t,C)?(i=Math.abs(t)*ZM+C*Hz,t>0?-i:i):NaN}if(_z(g)){A=new Date(A||Date.now());var o=I?A:Tz(A),B=$y(o,g),a=I?B:Oz(A,B,g);return-a}return NaN}function Tz(g){return xK(g.getFullYear(),g.getMonth(),g.getDate(),g.getHours(),g.getMinutes(),g.getSeconds(),g.getMilliseconds())}function $y(g,A){var I=qz(g,A),e=xK(I[0],I[1]-1,I[2],I[3]%24,I[4],I[5],0).getTime(),i=g.getTime(),t=i%1e3;return i-=t>=0?t:1e3+t,e-i}function Oz(g,A,I){var e=g.getTime(),i=e-A,t=$y(new Date(i),I);if(A===t)return A;i-=t-A;var C=$y(new Date(i),I);return t===C?t:Math.max(t,C)}function VM(g,A){return-23<=g&&g<=23&&(A==null||0<=A&&A<=59)}var zM={};function _z(g){if(zM[g])return!0;try{return new Intl.DateTimeFormat(void 0,{timeZone:g}),zM[g]=!0,!0}catch{return!1}}var Pz=Fa(Sq(),1),XM=Fa(fq(),1),jz=/(Z|[+-]\d{2}(?::?\d{2})?| UTC| [a-zA-Z]+\/[a-zA-Z_]+(?:\/[a-zA-Z_]+)?)$/,Wz=jz,ju=36e5,$M=6e4,Zz=2,Zi={dateTimePattern:/^([0-9W+-]+)(T| )(.*)/,datePattern:/^([0-9W+-]+)(.*)/,plainTime:/:/,YY:/^(\d{2})$/,YYY:[/^([+-]\d{2})$/,/^([+-]\d{3})$/,/^([+-]\d{4})$/],YYYY:/^(\d{4})/,YYYYY:[/^([+-]\d{4})/,/^([+-]\d{5})/,/^([+-]\d{6})/],MM:/^-(\d{2})$/,DDD:/^-?(\d{3})$/,MMDD:/^-?(\d{2})-?(\d{2})$/,Www:/^-?W(\d{2})$/,WwwD:/^-?W(\d{2})-?(\d{1})$/,HH:/^(\d{2}([.,]\d*)?)$/,HHMM:/^(\d{2}):?(\d{2}([.,]\d*)?)$/,HHMMSS:/^(\d{2}):?(\d{2}):?(\d{2}([.,]\d*)?)$/,timeZone:Wz};function Vz(g,A){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");if(g===null)return new Date(NaN);var I=A||{},e=I.additionalDigits==null?Zz:(0,Pz.default)(I.additionalDigits);if(e!==2&&e!==1&&e!==0)throw new RangeError("additionalDigits must be 0, 1 or 2");if(g instanceof Date||typeof g=="object"&&Object.prototype.toString.call(g)==="[object Date]")return new Date(g.getTime());if(typeof g=="number"||Object.prototype.toString.call(g)==="[object Number]")return new Date(g);if(!(typeof g=="string"||Object.prototype.toString.call(g)==="[object String]"))return new Date(NaN);var i=zz(g),t=Xz(i.date,e),C=t.year,o=t.restDateString,B=$z(o,C);if(isNaN(B))return new Date(NaN);if(B){var a=B.getTime(),s=0,r;if(i.time&&(s=AX(i.time),isNaN(s)))return new Date(NaN);if(i.timeZone||I.timeZone){if(r=HK(i.timeZone||I.timeZone,new Date(a+s)),isNaN(r))return new Date(NaN)}else r=(0,XM.default)(new Date(a+s)),r=(0,XM.default)(new Date(a+s+r));return new Date(a+s+r)}else return new Date(NaN)}function zz(g){var A={},I=Zi.dateTimePattern.exec(g),e;if(I?(A.date=I[1],e=I[3]):(I=Zi.datePattern.exec(g),I?(A.date=I[1],e=I[2]):(A.date=null,e=g)),e){var i=Zi.timeZone.exec(e);i?(A.time=e.replace(i[1],""),A.timeZone=i[1].trim()):A.time=e}return A}function Xz(g,A){var I=Zi.YYY[A],e=Zi.YYYYY[A],i;if(i=Zi.YYYY.exec(g)||e.exec(g),i){var t=i[1];return{year:parseInt(t,10),restDateString:g.slice(t.length)}}if(i=Zi.YY.exec(g)||I.exec(g),i){var C=i[1];return{year:parseInt(C,10)*100,restDateString:g.slice(C.length)}}return{year:null}}function $z(g,A){if(A===null)return null;var I,e,i,t;if(g.length===0)return e=new Date(0),e.setUTCFullYear(A),e;if(I=Zi.MM.exec(g),I)return e=new Date(0),i=parseInt(I[1],10)-1,gm(A,i)?(e.setUTCFullYear(A,i),e):new Date(NaN);if(I=Zi.DDD.exec(g),I){e=new Date(0);var C=parseInt(I[1],10);return eX(A,C)?(e.setUTCFullYear(A,0,C),e):new Date(NaN)}if(I=Zi.MMDD.exec(g),I){e=new Date(0),i=parseInt(I[1],10)-1;var o=parseInt(I[2],10);return gm(A,i,o)?(e.setUTCFullYear(A,i,o),e):new Date(NaN)}if(I=Zi.Www.exec(g),I)return t=parseInt(I[1],10)-1,Im(A,t)?Am(A,t):new Date(NaN);if(I=Zi.WwwD.exec(g),I){t=parseInt(I[1],10)-1;var B=parseInt(I[2],10)-1;return Im(A,t,B)?Am(A,t,B):new Date(NaN)}return null}function AX(g){var A,I,e;if(A=Zi.HH.exec(g),A)return I=parseFloat(A[1].replace(",",".")),Wu(I)?I%24*ju:NaN;if(A=Zi.HHMM.exec(g),A)return I=parseInt(A[1],10),e=parseFloat(A[2].replace(",",".")),Wu(I,e)?I%24*ju+e*$M:NaN;if(A=Zi.HHMMSS.exec(g),A){I=parseInt(A[1],10),e=parseInt(A[2],10);var i=parseFloat(A[3].replace(",","."));return Wu(I,e,i)?I%24*ju+e*$M+i*1e3:NaN}return null}function Am(g,A,I){A=A||0,I=I||0;var e=new Date(0);e.setUTCFullYear(g,0,4);var i=e.getUTCDay()||7,t=A*7+I+1-i;return e.setUTCDate(e.getUTCDate()+t),e}var gX=[31,28,31,30,31,30,31,31,30,31,30,31],IX=[31,29,31,30,31,30,31,31,30,31,30,31];function TK(g){return g%400===0||g%4===0&&g%100!==0}function gm(g,A,I){if(A<0||A>11)return!1;if(I!=null){if(I<1)return!1;var e=TK(g);if(e&&I>IX[A]||!e&&I>gX[A])return!1}return!0}function eX(g,A){if(A<1)return!1;var I=TK(g);return!(I&&A>366||!I&&A>365)}function Im(g,A,I){return!(A<0||A>52||I!=null&&(I<0||I>6))}function Wu(g,A,I){return!(g!=null&&(g<0||g>=25)||A!=null&&(A<0||A>=60)||I!=null&&(I<0||I>=60))}function iX(g,A,I){var e=Vz(g,I),i=HK(A,e,!0),t=new Date(e.getTime()-i),C=new Date(0);return C.setFullYear(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate()),C.setHours(t.getUTCHours(),t.getUTCMinutes(),t.getUTCSeconds(),t.getUTCMilliseconds()),C}function Vi(g,A){return A.color(g)}function em(g=new Date,A){let I=A.format,e=g.getSeconds(),i=g;A&&A.timeZone!==null&&(i=iX(new Date,A.timeZone));let t=i.getHours(),C=i.getMinutes(),o;A.format12h24h==="12ampm"&&(o=t>=12?"PM":"AM");let B=t;A.format12h24h!=="24"&&(B=t%12,B===0&&(B=12));let a,s;switch(I){case"HH:mm:ss":a=[B,C,e];break;case"HH:mm":a=[B,C];break;case"HH":a=[B],o=void 0;break;case"mm":a=[C],o=void 0;break;case"ss":a=[e],o=void 0;break;case"year":s=i.getFullYear();break;case"month":s=i.getMonth()+1;break;case"dayOfYear":s=Math.floor((i.getTime()-new Date(i.getFullYear(),0,0).getTime())/864e5);break;case"dayOfMonth":s=i.getDate();break;case"secondOfDay":s=t*60*60+C*60+e;break;default:console.error("Unknown time format",I),s=0;break}return a!==void 0?{textValue:a,suffix:o}:s}function tX(g,A){switch(g.type){case"fresnel":return BX(g,A);case"gradient":return aX(g,A);case"depth":return rX(g,A);case"normal":return sX(g,A);case"noise":return QX(g,A);case"rainbow":return EX(g,A);case"toon":return nX(g,A);case"outline":return hX(g,A);case"transmission":return lX(g,A);case"color":return oX(g,A);case"pattern":return cX(g,A)}}function CX(g){return{type:g.type}}function bC(g,A){let{alpha:I,mode:e,isMask:i}=g,t=typeof I=="string"?(Number(A.getVariable(I))??100)/100:I;return{...CX(g),alpha:t,mode:e,isMask:i}}function oX(g,A){return{...bC(g,A),color:Vi(g.color,A)}}function BX(g,A){let{bias:I,scale:e,intensity:i,factor:t,color:C}=g;return{...bC(g,A),color:Vi(C,A),bias:I,scale:e,intensity:i,factor:t}}function aX(g,A){let{gradientType:I,smooth:e,colors:i,steps:t,angle:C,offset:o,morph:B}=g;return{...bC(g,A),gradientType:I,smooth:e,colors:i.map(a=>new EI(a[0],a[1],a[2],a[3])),num:i.length,steps:t,offset:new sA(...o),morph:new sA(...B),angle:C}}function rX(g,A){let{gradientType:I,near:e,far:i,isVector:t,isWorldSpace:C,origin:o,direction:B,colors:a,steps:s,smooth:r}=g;return{...bC(g,A),gradientType:I,near:e,far:i,isVector:t,isWorldSpace:C,origin:new J(...o),direction:B?new J(...B):new J(1,0,0),colors:a.map(Q=>Q!==void 0?new EI(Q[0],Q[1],Q[2],Q[3]):new EI(0,0,0,0)),steps:s.slice(0,a.length),smooth:r}}function sX(g,A){let{cnormal:I}=g;return{...bC(g,A),cnormal:new J(I[0],I[1],I[2])}}function QX(g,A){return{...bC(g,A),scale:g.scale,move:g.move,fA:new sA(...g.fA),fB:new sA(...g.fB),size:new J(...g.size),distortion:new sA(...g.distortion),colorA:Vi(g.colorA,A),colorB:Vi(g.colorB,A),colorC:Vi(g.colorC,A),colorD:Vi(g.colorD,A),noiseType:g.noiseType,voronoiStyle:g.voronoiStyle,highCut:g.highCut,lowCut:g.lowCut,smoothness:g.smoothness,seed:g.seed,quality:g.quality}}function EX(g,A){return{...bC(g,A),filmThickness:g.filmThickness,movement:g.movement,wavelengths:new J(...g.wavelengths),noiseStrength:g.noiseStrength,noiseScale:g.noiseScale,offset:new J(...g.offset)}}function nX(g,A){return{...bC(g,A),positioning:g.positioning,colors:g.colors.map(I=>new EI(I[0],I[1],I[2],I[3])),num:g.colors.length,steps:g.steps,source:new J(...g.source),isWorldSpace:g.isWorldSpace,noiseStrength:g.noiseStrength,noiseScale:g.noiseScale,shadowColor:Vi(g.shadowColor,A),offset:new J(...g.offset)}}function hX(g,A){return{...bC(g,A),outlineColor:Vi(g.outlineColor,A),contourColor:Vi(g.contourColor,A),outlineWidth:g.outlineWidth,contourWidth:g.contourWidth,outlineThreshold:g.outlineThreshold,contourThreshold:g.contourThreshold,outlineSmoothing:g.outlineSmoothing,contourFrequency:g.contourFrequency,contourDirection:new J(...g.contourDirection),positionalLines:g.positionalLines,compensation:g.compensation}}function lX(g,A){return{...bC(g,A),thickness:g.thickness,ior:g.ior,roughness:g.roughness}}function cX(g,A){return{...bC(g,A),style:g.style,projection:g.projection,axis:g.axis,blending:g.blending,offset:new sA(...g.offset),colorA:Vi(g.colorA,A),colorB:Vi(g.colorB,A),frequency:new sA(...g.frequency),size:g.size,variation:g.variation,smoothness:g.smoothness,zigzag:g.zigzag,rotation:g.rotation,vertical:new sA(...g.vertical),horizontal:new sA(...g.horizontal),sides:g.sides}}var gD=class extends lt{},OK={noise:["noiseType"],texture:["projection","axis","side"],video:["projection","axis","side"],displace:["noiseType"],light:["roughnessMap","bumpMap"],depth:["smooth","isWorldSpace","gradientType","isVector"],pattern:["style","projection","axis"]},_K={depth:["colors"]};function DX(g,A,I){var t,C;if(A==="isMask")return!0;let e=OK[g.type],i=_K[g.type];if(i!==void 0){let o=g.color;if(i.includes(A)){let B=(C=(t=o[A])==null?void 0:t.value)==null?void 0:C.length;if(B!==void 0&&B!==I.length)return!0}}return e!==void 0?e.includes(A):!1}function PK(g,A,I){let e=I.uniforms[`f${I.id}_texture`];if(!e)return!1;let i=!1,t=g;if("image"in t){let C=t.image,o=A.image(C),B=e;B.image instanceof dr||B.image.deref(),B.image=o}if("video"in t){let C=t.video,o=A.video(C),B=e;B.image instanceof dr||B.image.deref(),B.image=o}if("wrapping"in t){let C=e;C.wrap=t.wrapping}if("repeat"in t||"offset"in t){let C="mat",o=I.uniforms[`f${I.id}_${C}`];"repeat"in t&&(o.repeat=t.repeat),"offset"in t&&(o.offset=t.offset),o.updateMatrix()}return i}function dX(g,A,I,e){let i=!1;for(let[t,C]of Object.entries(g)){if(t==="bumpMap"||t==="roughnessMap"){i=!0;continue}if(!t||C===void 0)continue;if(WK(t,I,e,A)){t==="visible"&&I.type==="light"&&(i=!0);continue}I.visible=e.visible;let o=I.uniforms[`f${I.id}_${t}`];if(o&&!(o instanceof Y0))switch(i=i||DX(I,t,C),o.constructor){case Ge:if(typeof C=="string"){let B=A.getColor(C);B&&(o.value=B);break}else{let B=C;o.value instanceof gD?o.value=new lt(B.r,B.g,B.b,B.a):o.setRGBA(B);break}case rB:if(typeof C=="string"){let B=A.getColor(C);B&&(o.value=B);break}else{let B=C;o.value instanceof gD?o.value=new lt(B.r,B.g,B.b,B.a):o.value.setRGBA(B.r,B.g,B.b,B.a);break}case wi:{let B=C;o.value.setX(B[0]),o.value.setY(B[1]);break}case Wt:{let B=C;o.value.setX(B[0]),o.value.setY(B[1]),o.value.setZ(B[2]);break}case nB:{PK(C,A,I);break}case ar:{o.value=C.map(B=>new EI(...B));break}default:{o.value=C;break}}}return i}var Jr=(g,A,I)=>Math.max(0,Math.min(1,Number(A.getVariable(typeof g=="number"?g*100:g,I)??100)/100))??1,mr=class{constructor(A,I,e,i,t){this.id=A,this.uuid=I,this.data=e,this.uniforms={};for(let C in i)this.uniforms[`f${this.id}_${C}`]=i[C];for(let C in e)WK(C,this,e,t)}get type(){return this.data.type}static create(A,I,e,i){if(e.type==="light")return sB.createLigherLayer(A,I,e,i);if(e.type==="texture"||e.type==="video"){let t=e.type==="texture"?i.image(e.texture.image):i.video(e.texture.video),C=new Vy(t,e.texture.wrapping),o=new wz(t),B=new Sz(e.texture.repeat,e.texture.offset),a=new yg(e.crop?1:0),s=new ge(e.projection??0),r=new ge(["x","y","z"].indexOf(e.axis)??0),Q=new ge(e.side??0),E=new wi(e.size?new sA(e.size[0],e.size[1]):new sA(100,100)),n=new yg(e.blending??0),h=new yg(Jr(e.alpha,i)),l=new ge(e.mode??0),c=new Wi(e.isMask??!1),d=new x0(C,o,a,s,r,Q,E,n,B,h,l,c),u=new se(d.calpha,"f");return new we(A,I,e,{texture:C,textureSize:o,crop:a,projection:s,axis:r,side:Q,size:E,blending:n,mat:B,alpha:h,mode:l,isMask:c},d,l,u,c,i)}else if(e.type==="matcap"){let t=i.image(e.texture.image),C=new Vy(t,e.texture.wrapping),o=new yg(Jr(e.alpha,i)),B=new ge(e.mode??0),a=new Wi(e.isMask??!1),s=new GK(C,o,B,a),r=new se(s.calpha,"f");return new we(A,I,e,{texture:C,alpha:o,mode:B,isMask:a},s,B,r,a,i)}else if(e.type==="displace")if(e.displacementType==="noise"){let t=new Wt(new J(...e.offset)),C=new yg(e.scale??10),o=new yg(e.intensity??8),B=new yg(e.movement??1),a=new ge(e.noiseType??0),s=new ge(e.voronoiStyle??0),r=new yg(e.smoothness??.5),Q=new yg(e.seed??0),E=new yg(e.highCut??1),n=new yg(e.lowCut??0),h=new ge(e.quality??1),l=new LK(o,B,t,s,r,Q,E,n,h,C,a);return new jK(A,I,e,{offset:t,scale:C,intensity:o,movement:B,noiseType:a,voronoiStyle:s,smoothness:r,seed:Q,highCut:E,lowCut:n,quality:h},l,i)}else throw new Error;else return yX(A,I,e,i)}updateByOp(A,I,e){let i=A;if(i.path[0]===void 0){if(i.type===0)return"type"in i.props||"category"in i.props||"visible"in i.props?(e.scene.markNeedsUpdateRendererDirty(),!0):dX(i.props,e.shared,this,I)}else if(i.path[0]==="texture")return"texture"in I||"video"in I?PK(i.props,e.shared,this):!0;return!1}dispose(){if(uX(this)){let A=this.uniforms[`f${this.id}_texture`];if(!A)return!1;let I=A;I.image instanceof dr||I.image.deref()}}hasValueByKey(A){return this.uniforms[A]!==void 0}hasValue(A){return this.hasValueByKey(`f${this.id}_${A}`)}setValue(A,I){let e=`f${this.id}_${A}`;this.hasValueByKey(e)&&I!==void 0&&(this.uniforms[e].value=I)}getNode(A){let I=`f${this.id}_${A}`;if(this.hasValueByKey(I))return this.uniforms[I]}getValue(A){let I=`f${this.id}_${A}`;if(this.hasValueByKey(I))return this.uniforms[I].value}getName(A){let I=/f\d+_(.*)/.exec(A);if(I&&I.length>1)return I[1];console.log(`Layer.getName: error ${A}`)}getNames(){let A=[];for(let I in this.uniforms){let e=this.getName(I);e&&A.push(e)}return A}},we=class extends mr{constructor(A,I,e,i,t,C,o,B,a){super(A,I,e,i,a),this.params=i,this.color=t,this.mode=C,this.alpha=o,this.isMask=B}},jK=class extends mr{constructor(g,A,I,e,i,t){super(g,A,I,e,t),this.position=i}},sB=class extends mr{constructor(A,I,e,i,t,C){super(A,I,e,t,C),this.node=i}static createLigherLayer(A,I,e,i){let t,C=new yg(Jr(e.alpha,i)),o=new ge(e.mode),B=new yg(e.bumpMapIntensity),a=new yg(Jr(e.alphaOverride,i)),s;if(!e.visible)t=new bK,s={};else if(e.category==="lambert"){t=new Mz;let r=new Ge(i.color(e.emissive)??0),Q=new Wi(e.occlusion??!0);s={emissive:r,occlusion:Q},t.emissive=r,t.occlusion=Q}else if(e.category==="toon"){t=new Nz;let r=new yg(e.shininess??30),Q=new Ge(i.color(e.specular)??1118481);s={shininess:r,specular:Q},t.shininess=r,t.specular=Q}else if(e.category==="physical"){t=new Uz;let r=new yg(e.roughness??.3),Q=new yg(e.metalness??0),E=new yg(e.reflectivity??.5),n=new Wi(e.occlusion??!0);s={roughness:r,metalness:Q,reflectivity:E,occlusion:n},t.roughness=r,t.metalness=Q,t.reflectivity=E,t.occlusion=n}else{t=new mz;let r=new yg(e.shininess??30),Q=new Ge(e.specular!==void 0?i.color(e.specular)??1118481:1118481),E=new Wi(e.occlusion??!0);s={shininess:r,specular:Q,occlusion:E},t.shininess=r,t.specular=Q,t.occlusion=E}return t.alpha=new yg(1),t.shadingAlpha=C,t.shadingBlend=o,t.bumpMapIntensity=B,t.alphaOverride=a,s.alpha=t.shadingAlpha,s.mode=t.shadingBlend,s.bumpMapIntensity=t.bumpMapIntensity,s.alphaOverride=t.alphaOverride,new sB(A,I,e,t,s,i)}get category(){return this.node.category}};function uX(g){let A=g instanceof mr?g.type:g;return A==="texture"||A==="video"||A==="displace_map"||A==="matcap"}function Tt(g){return{alpha:new yg(g.alpha??1),mode:new ge(g.mode??0),isMask:new Wi(g.isMask??!1)}}function pX(g,A,I,e,i){switch(g.type){case"color":{let t=new Ge(e.color??CC),C=Tt(e),o=new zy(t,C.alpha),B=new se(o.calpha,"f");return new we(A,I,g,{color:t,...C},o,C.mode,B,C.isMask,i)}case"fresnel":{let t=new Ge(e.color??16777215),C=new yg(e.bias??.1),o=new yg(e.scale??1),B=new yg(e.intensity??2),a=new yg(e.factor??1),s=Tt(e),r=new fz(t,C,o,B,a,s.alpha,s.mode,s.isMask),Q=new se(r.calpha,"f");return new we(A,I,g,{color:t,bias:C,scale:o,intensity:B,factor:a,...s},r,s.mode,Q,s.isMask,i)}case"rainbow":{let t=new yg(e.filmThickness??30),C=new yg(e.movement??0),o=new Wt(e.wavelengths??new J(0,0,0)),B=new yg(e.noiseStrength??0),a=new yg(e.noiseScale??1),s=new Wt(e.offset??new J(0,0,0)),r=Tt(e),Q=new FK(t,C,o,B,a,s,r.alpha,r.isMask),E=new se(Q.calpha,"f");return new we(A,I,g,{filmThickness:t,movement:C,wavelengths:o,noiseStrength:B,noiseScale:a,offset:s,...r},Q,r.mode,E,r.isMask,i)}case"transmission":{let t=new yg(e.thickness??10),C=new yg(e.ior??1.5),o=new yg(e.roughness??.5),B=Tg.transmissionSize,a=Tg.transmissionRenderTarget,s=Tg.transmissionRenderTargetDepth,r=window.innerWidth,Q=window.innerHeight,E=r>=Q?new wi(Q/r,1):new wi(1,r/Q),n=Tt(e),h=new vK(t,C,o,B,a,s,E,n.alpha),l=new se(h.calpha,"f");return new we(A,I,g,{thickness:t,ior:C,roughness:o,aspectRatio:E,...n},h,n.mode,l,n.isMask,i)}case"toon":{let t=new ge(e.positioning??0),C;e.colors?C=new ar(e.colors.length,e.colors):(C=new ar(10,new EI(0,0,0,1)),C.value[1]=new EI(1,1,1,1));let o;e.steps?o=new Br(e.steps.length,e.steps):(o=new Br(10,1),o.value[0]=0);let B=new Wt(e.source??new J(0,0,0)),a=new Wi(e.isWorldSpace??!0),s=new yg(e.noiseStrength??0),r=new yg(e.noiseScale??1),Q=new rB(e.shadowColor),E=new Wt(e.offset??new J(0,0,0)),n=Tt(e),h=new KK(t,C,o,B,a,s,r,Q,E,n.alpha),l=new se(h.calpha,"f");return new we(A,I,g,{positioning:t,colors:C,steps:o,source:B,isWorldSpace:a,noiseStrength:s,noiseScale:r,shadowColor:Q,offset:E,...n},h,n.mode,l,n.isMask,i)}case"outline":{let t=new Ge(e.outlineColor??16777215),C=new Ge(e.contourColor??16777215),o=new yg(e.outlineWidth??.1),B=new yg(e.contourWidth??.1),a=new yg(e.outlineThreshold??.1),s=new yg(e.contourThreshold??.1),r=new yg(e.outlineSmoothing??.1),Q=new yg(e.contourFrequency??.1),E=new Wt(e.contourDirection??new J(0,1,0)),n=new Wi(e.positionalLines??!1),h=new Wi(e.compensation??!0),l=Tg.normalRenderTarget,c=Tg.normalRenderTargetDepth,d=Tg.pixelRatioNode,u=Tg.resolution,y=Tt(e),f=new mK(t,C,o,B,a,s,r,Q,E,n,h,u,l,c,d,y.alpha),k=new se(f.calpha,"f");return new we(A,I,g,{outlineColor:t,contourColor:C,outlineWidth:o,contourWidth:B,outlineThreshold:a,contourThreshold:s,outlineSmoothing:r,contourFrequency:Q,contourDirection:E,positionalLines:n,compensation:h,...y},f,y.mode,k,y.isMask,i)}case"depth":{let t=new ge(e.gradientType??0),C=new Wi(e.smooth??!1),o=new yg(e.near??50),B=new yg(e.far??200),a=new yg(e.isVector??1),s=new yg(e.isWorldSpace??0),r=new Wt(e.origin??new J),Q=new Wt(e.direction??new J),E;e.colors?E=new ar(e.colors.length,e.colors):(E=new ar(2,new EI(0,0,0,1)),E.value[1]=new EI(1,1,1,1));let n;e.steps?n=new Br(e.steps.length,e.steps):(n=new Br(2,1),n.value[0]=0);let h=Tt(e),l=new yK(t,C,o,B,a,s,r,Q,E,n,h.alpha,h.isMask),c=new se(l.calpha,"f");return new we(A,I,g,{gradientType:t,smooth:C,near:o,far:B,isVector:a,isWorldSpace:s,origin:r,direction:Q,colors:E,steps:n,...h},l,h.mode,c,h.isMask,i)}case"noise":{let t=new yg(e.scale??1),C=new Wt(e.size??new J(100,100,100)),o=new yg(e.move??1),B=new wi(e.fA??new sA(1.7,9.2)),a=new wi(e.fB??new sA(8.3,2.8)),s=new wi(e.distortion??new sA(1,1)),r=new rB(e.colorA),Q=new rB(e.colorB),E=new rB(e.colorC),n=new rB(e.colorD),h=new ge(e.noiseType??0),l=new ge(e.voronoiStyle??0),c=new yg(e.highCut??1),d=new yg(e.lowCut??0),u=new yg(e.smoothness??.5),y=new yg(e.seed??.5),f=new ge(e.quality??1),k=Tt(e),M=new kK(t,C,o,B,a,s,r,Q,E,n,k.alpha,h,k.isMask,l,c,d,u,y,f),G=new se(M.calpha,"f");return new we(A,I,g,{scale:t,size:C,move:o,fA:B,fB:a,distortion:s,colorA:r,colorB:Q,colorC:E,colorD:n,noiseType:h,...k,voronoiStyle:l,highCut:c,lowCut:d,smoothness:u,seed:y,quality:f},M,k.mode,G,k.isMask,i)}case"normal":{let t=new Wt(e.cnormal??new J(1,1,1)),C=Tt(e),o=new pK(t,C.alpha),B=new se(o.calpha,"f");return new we(A,I,g,{cnormal:t,...C},o,C.mode,B,C.isMask,i)}case"gradient":{let t=new ge(e.gradientType??0),C=new Wi(e.smooth??!1),o;e.colors?o=new ar(e.colors.length,e.colors):(o=new ar(10,new EI(0,0,0,1)),o.value[1]=new EI(1,1,1,1));let B;e.steps?B=new Br(e.steps.length,e.steps):(B=new Br(10,1),B.value[0]=0);let a=new wi(e.offset??new sA(0,0)),s=new wi(e.morph??new sA(0,0)),r=new yg(e.angle??0),Q=Tt(e),E=new SK(t,C,o,B,a,s,r,Q.alpha,Q.isMask),n=new se(E.calpha,"f");return new we(A,I,g,{gradientType:t,smooth:C,colors:o,steps:B,offset:a,morph:s,angle:r,...Q},E,Q.mode,n,Q.isMask,i)}case"pattern":{let t=new ge(e.style??0),C=new ge(e.projection??0),o=new ge(["x","y","z"].indexOf(e.axis)??0),B=new yg(e.blending??0),a=new wi(e.offset??new sA(0,0)),s=new rB(e.colorA),r=new rB(e.colorB),Q=new wi(e.frequency??new sA(10,10)),E=new yg(e.size??.5),n=new yg(e.variation??0),h=new yg(e.smoothness??.5),l=new yg(e.zigzag??0),c=new yg(e.rotation??0),d=new wi(e.vertical??new sA(0,1)),u=new wi(e.horizontal??new sA(0,1)),y=new ge(e.sides??6),f=Tt(e),k=new UK(t,C,o,B,a,s,r,Q,E,n,h,l,c,d,u,y,f.alpha,f.isMask),M=new se(k.calpha,"f");return new we(A,I,g,{style:t,projection:C,axis:o,blending:B,offset:a,colorA:s,colorB:r,frequency:Q,size:E,variation:n,smoothness:h,zigzag:l,rotation:c,vertical:d,horizontal:u,sides:y,...f},k,f.mode,M,f.isMask,i)}default:{let t=new Ge(1,0,0,1),C=Tt(e),o=new zy(t,C.alpha),B=new se(o.calpha,"f");return new we(A,I,g,{color:t,...C},o,C.mode,B,C.isMask,i)}}}function yX(g,A,I,e){let i=tX(I,e);return pX(I,g,A,i,e)}function WK(g,A,I,e){if(I.type==="displace"&&(g==="intensity"||g==="visible")){let i=A.uniforms[`f${A.id}_intensity`];return i?(i.value=I.intensity*(I.visible?1:0),i):void 0}if(I.type!=="displace"&&(g==="alpha"||g==="visible")){let i=A.uniforms[`f${A.id}_alpha`];if(!i)return;if(i.value=Jr(I.alpha,e)*(I.visible?1:0),I.type==="outline"&&g==="visible"){let t=A.uniforms[`f${A.id}_compensation`];t&&(t.value=I.compensation&&I.visible)}return i}}function tQ(g,A){let I=0,e=g.layers.find(i=>i.data.type==="light");if(e){let i=e.data,t=Number(A.getVariable(i.alphaOverride));if((typeof i.alphaOverride=="string"?t/100:i.alphaOverride)<1)return!0}for(let i of g.layers){if(i.data.type!=="displace"&&i.data.isMask)return!0;if(i.data.type!=="displace"&&"alpha"in i.data&&i.data.type!=="light"&&i.data.type!=="fresnel"&&i.data.type!=="texture"&&i.data.type!=="matcap"&&i.data.type!=="rainbow"&&i.data.type!=="outline"&&i.data.type!=="pattern"){let t=i.data.visible?i.data.alpha:0;if(typeof t=="string"&&(t=Math.max(0,Math.min(1,Number(A.getVariable(t)??100)/100))),t===1&&i.data.type==="depth"||i.data.type==="gradient"){for(let C of i.data.colors)if(C[3]<1){t=C[3];break}}else if(t===1&&i.data.type==="noise"){let C=A.color(i.data.colorA).a,o=A.color(i.data.colorB).a,B=A.color(i.data.colorC).a,a=A.color(i.data.colorD).a,s=Math.min(C,Math.min(o,Math.min(B,a)));s<1&&(t=s)}I+=(1-I)*t}}return I<1}var ka=class extends te{constructor(){super(void 0),this.flatShading=!1,this.needsJitter=!0,this.cacheKey="",this.fog=!0,this.dithering=!0,this.vertexColors=!0,this.transparent=!0}customProgramCacheKey(){return this.cacheKey}},wX=class extends ka{constructor(g,A,I,e){super(),this.flatShading=g,this.side=A,this.wireframe=I,this.root=e}updateAfterBuild(){let g=this.root;this.lights=g.lights,this.vertexShader=g.vertexShader,this.fragmentShader=g.fragmentShader,this.defines=g.defines,this.uniforms=g.uniforms,this.extensions=g.extensions,this.transparent=g.transparent,this.cacheKey=g.customProgramCacheKey()+"flat"+this.flatShading+this.side}onBeforeCompile(g,A){this.root.onBeforeCompile(g)}get data(){return this.root.data}get category(){return this.root.category}get hasAO(){return this.root.hasAO}getFlavor(g,A,I){return this.root.getFlavor(g,A,I)}get layers(){return this.root.layers}get fragment(){return this.root.fragment}getLayersOfType(g){return this.root.getLayersOfType(g)}getLayerByUuid(g){return this.root.getLayerByUuid(g)}updateByOp(g,A,I){this.root.updateByOp(g,A,I)}nodeMaterialDispose(){this.root.nodeMaterialDispose()}},T0=class extends ka{constructor(g,A,I=!0){super(),this.data=g,this.allowVariableSaves=I,this.layerIdGen=0,this.flavors=[],this.masks={},this.type="NodeMaterial",this.updaters=[],this.reset0(g,A)}get nodeMaterial(){return this}getFlavor(g,A,I){let e=I?6:(g?3:0)+A;if(e===0)return this;this.flavors===void 0&&(this.flavors=[]),e-=1;let i=this.flavors[e];return i===void 0&&(i=new wX(g,A,I,this),this.flavors[e]=i,i.flatShading=g,i.side=A,i.updateAfterBuild()),i}get fragment(){return this.lightLayer.node}get category(){return this.lightLayer.category}get hasAO(){var g;return((g=this.lightLayer.getNode("occlusion"))==null?void 0:g.value)??!1}reset(g,A){this.data!==g&&this.reset0(g,A)}reset0(g,A){this.data=g;let I=g.layers??Ki.defaultTwoLayerData("phong").layers;try{this.layers=I.map(e=>mr.create(this.layerIdGen++,e.id,e.data,A.shared))}catch{this.layers=[]}this.layers.reverse(),this.name=g.name??"Untitled Material",this.onUpdate(A.shared),this.transparent=tQ(g,A.shared),this.saveVariableLocations(A)}onVariableUpdate(g,A,I){if(g[0]==="alphaOverride")this.transparent=tQ(this.data,I.shared),this.lightLayer.setValue("alphaOverride",Math.max(0,Math.min(Number(A)/100,1)));else if(g[0]==="layer"){let e=g[1],i=g[2];if(e&&i){let t=this.layers.find(C=>C.uuid===e);t!=null&&t.hasValue(i)&&(i==="alpha"?(this.transparent=tQ(this.data,I.shared),t.setValue(i,Math.max(0,Math.min(Number(A)/100,1)))):t.setValue(i,A))}}}saveVariableLocations(g){if(!this.allowVariableSaves)return;let A=this.data.layers.find(I=>I.data.type==="light");A&&g.shared.getVariable(A.data.alphaOverride,["material",this.uuid,"alphaOverride"]),this.data.layers.forEach(I=>{"alpha"in I.data&&typeof I.data.alpha=="string"&&g.shared.getVariable(I.data.alpha,["material",this.uuid,"layer",I.id,"alpha"])})}getLayersOfType(g){return this.layers.filter(A=>A.type===g)}getLayerByUuid(g){return this.layers.find(A=>A.uuid===g)}onUpdate(g){this.cacheKey=this.computeCacheKey(),this.lightLayer=this.layers.find(A=>A instanceof sB),this.lightLayer===void 0&&(this.lightLayer=new sB(0,"",{...Bt.defaultData("light","phong"),visible:!1},new bK,{},g)),this.dispose();for(let A of this.flavors)A&&A.dispose();this.applyTextureMaps(),this.applyMasks(),this.blendColors(),this.blendAfterColors(),this.blendPositions()}applyTextureMaps(){let g=this.layers.find(i=>i instanceof sB);if(!g)return;let A=g.data,I=A.bumpMap,e=A.roughnessMap;g.node.bumpMap=void 0,g.node.roughnessMap=void 0;for(let i=0;io.uuid===g.id),C=this.layers[t];this.layers.splice(t,1),this.layers.splice(g.localIndex,0,C),I.scene.markNeedsUpdateRendererDirty()}this.layers.reverse(),this.onUpdate(I.shared)}else{g.type===0&&g.props.occlusion!==void 0&&I.scene.markNeedsUpdateRendererDirty();let t=this.layers.find(C=>C.uuid===i);if(t){let C=A.layers.data(i),o;if(g.type===0&&("alpha"in g.props||"alphaOverride"in g.props)&&("alpha"in g.props?o={...g.props,alpha:Jr(g.props.alpha,e,["material",this.uuid,"layer",i,"alpha"])}:o={...g.props,alphaOverride:Jr(g.props.alphaOverride,e,["material",this.uuid,"alphaOverride"])}),t.updateByOp({...g,...o?{props:o}:{},path:g.path.slice(2)},C,I)){let B=mr.create(this.layerIdGen++,i,C,e);this.layers.splice(this.layers.findIndex(a=>a.uuid===i),1,B),this.onUpdate(I.shared)}}}}else this.reset(A,I)}applyMasks(){for(let g=0;g0){let I=g-1,e=this.layers[I];e instanceof sB?e.node.mask=new ot(A.color,A.alpha,ot.MUL):e instanceof we&&(e.isMask.value||(e.color.mask=new ot(A.color,A.alpha,ot.MUL)))}}}blendColors(){let g=this.layers.findIndex(I=>I instanceof we),A=this.layers.findIndex(I=>I instanceof sB);if(g!==-1&&gI instanceof sB);if(this.layers.length>A+1){for(let I=A+1;IA instanceof jK);if(g.length>0){let A=g[0].position;for(let I=1;IMath.min(Math.max(e,i),t);for(let e of this.layers)if(e.type==="displace"){let i=I(e.uniforms[`f${e.id}_intensity`].value,g,A);e.uniforms[`f${e.id}_intensity`].value=i}}computeCacheKey(){let g="[";for(let{data:A}of this.data.layers)if(A.type==="light")g+=`"${A.visible?A.category.toUpperCase():"Basic"}"`;else{let I=(OK[A.type]??[]).map(o=>A[o]),e=(_K[A.type]??[]).map(o=>{var B;return((B=A[o])==null?void 0:B.length)??0}),i=[...I,...e],t="isMask"in A&&A.isMask,C=`"${A.type}-${A.visible}-${t}"`;i.length?g+=`[${C}, "${i.join('","')}"],`:g+=C}return g=g.slice(0,-1)+"]",g}updateFrame(g){for(let A=0;Ag.dispose()),super.dispose();for(let g of this.flavors)g&&g.dispose()}assetsLoaded(){for(let g of this.layers)if(g instanceof we){let A=g.params.texture;if(A instanceof Vy&&!A.image.loaded)return!1}return!0}getHash(){let g="{";return g+='"fragment":'+this.fragment.getHash(),g+="}",g}};Object.defineProperties(ka.prototype,{properties:{get:function(){return this.fragment.properties}}});var Aw=class extends T0{constructor(g,A,I){super(g,A,!1),this.uuid=I,this.allowVariableSaves=!0,this.saveVariableLocations(A)}},SX=Fa(Gq()),im=new Map;function fX(g){if(typeof g=="string")return g;let A=im.get(g);return A||(A={url:URL.createObjectURL(new Blob([g]))},im.set(g,A)),A.url}var In=class{constructor({src:A,volume:I,delay:e,loop:i}){this._volume=1,this.delay=0,this._loop=1,this.loopsRemaining=0,this._status="stopped",this.onEnd=()=>{this.loopsRemaining===1/0?this.replay():this.loopsRemaining>1?(this.replay(),this.loopsRemaining--):(this._status="stopped",this.loopsRemaining=this._loop)};let t;typeof A=="string"?t={src:A}:t={src:fX(A),format:"wav"},this.sound=new SX.Howl(t),this.sound.on("end",this.onEnd),this.src=A,I!==void 0&&(this.volume=I),e!==void 0&&(this.delay=e),i!==void 0&&(this.loop=i)}get status(){return this._status}get volume(){return this._volume}set volume(A){this._volume=A,this.sound.volume(A)}get loop(){return this._loop}set loop(A){this._loop=A,this.loopsRemaining=A}replay(){this.clearDelay(),this.delayTimerId=window.setTimeout(()=>{this.sound.play(),this.clearDelay()},this.delay)}fade(A,I=1e3){A?(this.sound.volume(this._volume),this.clearFade(),this.fadeTimerId=window.setTimeout(()=>{this.sound.fade(this._volume,0,I),this.clearFade()},A)):this.sound.fade(this._volume,0,I)}on(A,I,e){this.sound.on(A,I,e)}off(A,I,e){this.sound.off(A,I,e)}play(){this._status==="playing"||this.sound.playing()||(this._status==="paused"?(this.sound.seek()===0?this.replay():this.sound.play(),this._status="playing"):this._status==="stopped"&&(this.replay(),this._status="playing"))}pause(){this._status==="playing"&&(this.sound.pause(),this.clearFade(),this.clearDelay(),this._status="paused")}stop(){this.sound.stop(),this.loopsRemaining=this._loop,this.clearFade(),this.clearDelay(),this._status="stopped"}clearFade(){this.fadeTimerId&&(clearTimeout(this.fadeTimerId),delete this.fadeTimerId)}clearDelay(){this.delayTimerId&&(clearTimeout(this.delayTimerId),delete this.delayTimerId)}dispose(A=!1){this.off(),this.stop(),this.clearFade(),this.clearDelay()}},GX=class{constructor(){this.type="ShapePath",this.color=new Og,this.subPaths=[],this.currentPath=null}moveTo(g,A){return this.currentPath=new pc,this.subPaths.push(this.currentPath),this.currentPath.moveTo(g,A),this}lineTo(g,A){var I;return(I=this.currentPath)==null||I.lineTo(g,A),this}quadraticCurveTo(g,A,I,e){var i;return(i=this.currentPath)==null||i.quadraticCurveTo(g,A,I,e),this}bezierCurveTo(g,A,I,e,i,t){var C;return(C=this.currentPath)==null||C.bezierCurveTo(g,A,I,e,i,t),this}splineThru(g){var A;return(A=this.currentPath)==null||A.splineThru(g),this}toShapes(){let g={ORIGIN:0,DESTINATION:1,BETWEEN:2,LEFT:3,RIGHT:4,BEHIND:5,BEYOND:6},A={loc:g.ORIGIN,t:0};function I(E,n,h,l){let c=E.x,d=n.x,u=h.x,y=l.x,f=E.y,k=n.y,M=h.y,G=l.y,v=(y-u)*(f-M)-(G-M)*(c-u),N=(d-c)*(f-M)-(k-f)*(c-u),b=(G-M)*(d-c)-(y-u)*(k-f),O=v/b,H=N/b;if(b===0&&v!==0||O<=0||O>=1||H<0||H>1)return null;if(v===0&&b===0){for(let _=0;_<2;_++)if(e(_===0?h:l,E,n),A.loc===g.ORIGIN){let gA=_===0?h:l;return{x:gA.x,y:gA.y,t:A.t}}else if(A.loc===g.BETWEEN){let gA=+(c+A.t*(d-c)).toPrecision(10),CA=+(f+A.t*(k-f)).toPrecision(10);return{x:gA,y:CA,t:A.t}}return null}else{for(let CA=0;CA<2;CA++)if(e(CA===0?h:l,E,n),A.loc===g.ORIGIN){let AA=CA===0?h:l;return{x:AA.x,y:AA.y,t:A.t}}let _=+(c+O*(d-c)).toPrecision(10),gA=+(f+O*(k-f)).toPrecision(10);return{x:_,y:gA,t:O}}}function e(E,n,h){let l=h.x-n.x,c=h.y-n.y,d=E.x-n.x,u=E.y-n.y,y=l*u-d*c;if(E.x===n.x&&E.y===n.y){A.loc=g.ORIGIN,A.t=0;return}if(E.x===h.x&&E.y===h.y){A.loc=g.DESTINATION,A.t=1;return}if(y<-Number.EPSILON){A.loc=g.LEFT;return}if(y>Number.EPSILON){A.loc=g.RIGHT;return}if(l*d<0||c*u<0){A.loc=g.BEHIND;return}if(Math.sqrt(l*l+c*c)G.t<=M.t+Number.EPSILON&&G.t>=M.t-Number.EPSILON)===void 0&&(h.push(M),l.push(new sA(M.x,M.y)))}}return l}function t(E,n,h){let l=new sA;n.getCenter(l);let c=[];return h.forEach(d=>{d.boundingBox.containsPoint(l)&&i(E,d.points).forEach(u=>{c.push({identifier:d.identifier,isCW:d.isCW,point:u})})}),c.sort((d,u)=>d.point.x-u.point.x),c}function C(E,n,h,l,c){(c==null||c==="")&&(c="nonzero");let d=new sA;E.boundingBox.getCenter(d);let u=[new sA(h,d.y),new sA(l,d.y)],y=t(u,E.boundingBox,n);y.sort((N,b)=>N.point.x-b.point.x);let f=[],k=[];y.forEach(N=>{N.identifier===E.identifier?f.push(N):k.push(N)});let M=f[0].point.x,G=[],v=0;for(;v0&&G[G.length-1]===k[v].identifier?G.pop():G.push(k[v].identifier),v++;if(G.push(E.identifier),c==="evenodd"){let N=G.length%2===0,b=G[G.length-2];return{identifier:E.identifier,isHole:N,for:b}}else if(c==="nonzero"){let N=!0,b=null,O=null;for(let H=0;H{let n=E.getPoints(),h=-999999999,l=999999999,c=-999999999,d=999999999;for(let u=0;uh&&(h=y.y),y.yc&&(c=y.x),y.x=d&&(B=d-1),n.length&&s.push({curves:E.curves,points:n,isCW:IF.isClockWise(n),identifier:o++,boundingBox:new QF(new sA(d,l),new sA(c,h))})});let r=s.map(E=>{var n;return C(E,s,B,a,(n=this.userData)==null?void 0:n.style.fillRule)}),Q=[];return s.forEach(E=>{let n=r[E.identifier];if(n&&!n.isHole){let h=new yc;h.curves=E.curves,r.filter(l=>(l==null?void 0:l.isHole)&&l.for===E.identifier).forEach(l=>{if(l){let c=s[l.identifier],d=new pc;d.curves=c.curves,h.holes.push(d)}}),Q.push(h)}}),Q}},ZK,tm=new Promise(g=>{ZK=g}),Cm=!1,kl;function kX(){if(Cm)return;if(kl)return kl;async function g(){let A=await Zn(()=>Promise.resolve().then(()=>SCA),void 0);ZK(A),Cm=!0}return kl=g(),kl}var MX=class{async load(g,A,I=()=>{}){let{load:e}=await tm;e(g,(i,t)=>{i||!t?I(i??"Something went wrong"):A(t)})}async parse(g){let{parse:A,Bidi:I}=await tm;try{let e=A(g),i=new I,t=C=>e.charToGlyphIndex(C.char);return i.registerModifier("glyphIndex",null,t),i.applyFeatures(e,e.defaultRenderOptions.features),{font:e,bidi:i}}catch(e){console.error(e)}}};async function mX(g){return await(await fetch(g)).arrayBuffer()}var UX=new MX;async function om(g){let A,I,e=!1;if(g.url?(A=await mX(g.url),I=g.url,e=g.url.startsWith("/")):g.data&&(A=g.data.buffer.slice(g.data.byteOffset,g.data.byteOffset+g.data.byteLength)),A){let i=await UX.parse(A);if(i)return{font:i.font,url:I,intercepted:e,arr:A,bidi:i.bidi}}}function NX(g,A){return A.state.glyphIndex===g||A.state.fina===g||A.state.medi===g||A.state.init===g}var FX=class{constructor(g){this._arrayBuffer=new ArrayBuffer(1),this._isLoaded=!1,this._intercepted=!1,this._isUserFont=g.isUserFont??!1,this._loadingPromise=om(g).then(A=>{A&&(this._arrayBuffer=A.arr,this._url=A.url,this.font=A.font,this._intercepted=A.intercepted,this._isLoaded=!0,this._bidi=A.bidi)})}update(g){this._isLoaded=!1,this._isUserFont=g.isUserFont??!1,this._loadingPromise=om(g).then(A=>{A&&(this._arrayBuffer=A.arr,this._url=A.url,this.font=A.font,this._intercepted=A.intercepted,this._isLoaded=!0,this._bidi=A.bidi)})}get url(){return this._url}get intercepted(){return this._intercepted}get isLoaded(){return this._isLoaded}get loadingPromise(){return this._loadingPromise}reverseLigaturesTable(g,A,I){if(!this._bidi)return[];let e=this._bidi;e.getTextGlyphs(A);let i=e.tokenizer.tokens,t=[],C=0,o=I.length===i.length;for(let B=0;BA.length&&(l=!0);t.push({char:s,index:a,replacements:n,replacementChars:Array.from(Q)}),C++}}return t}generateShapes(g,A){if(!this._isLoaded)return;let I=this.font,e=A.fontSize/this.unitsPerEm,i=A.fontSize*A.lineHeight,t=g.map(c=>this.getTextWidth(c,A)),C=A.width,o=this.getCharWidth(` +`)}return A}},Fz=class{constructor(g=1e3*10){this.timeout=g,this.cache=new Map,this.head={data:null,time:0,src:null,next:null,prev:null},this.tail={data:null,time:1/0,src:null,next:null,prev:null},this.hasClean=!1,this.head.next=this.tail,this.tail.prev=this.head}log(...g){}remove(g){let A=this.cache.get(g);A&&(this.dispose(g,A.data),this.cache.delete(g),A.prev.next=A.next,A.next.prev=A.prev)}scheduleCleanup(){this.hasClean||(this.log("scheduled cleanup"),this.hasClean=!0,setTimeout(()=>{this.hasClean=!1,this.log("cleaning");let g=Date.now(),A=this.head.next;for(;A.time"u")return;this.disposeTextures(),this.loaded=!1;let A=()=>{this.loaded=!0;let e=[1e3,1001,1002];for(let i of e){let t=this[i];t&&(t.image=this.img,t.needsUpdate=!0)}this.shared.requestRender()};if(this.isVideo){if(this.img=document.createElement("video"),this.img.preload="auto",this.img.playsInline=!0,this.img.currentTime=.01,typeof g!="string"){var I=new FileReader;I.readAsDataURL(new Blob([g],{type:"video/mp4"}));let e;await new Promise(i=>{I.onloadend=t=>{var C;e=(C=t.target)==null?void 0:C.result,i(null)}}),this.img.src=e}else this.img.src=g;this.img.onloadeddata=()=>{A()}}else this.img=new Image,this.img.src=Kz(g),this.img.onload=A}getTexture(g){let A=this[g];if(A)return A;{let I;return this.isVideo?I=new vH(this.img,void 0,g,g):I=new ti(this.img,void 0,g,g),this.loaded&&(I.needsUpdate=!0),this[g]=I,I}}disposeTextures(){var g,A,I;(g=this[1e3])==null||g.dispose(),this[1e3]=void 0,(A=this[1001])==null||A.dispose(),this[1001]=void 0,(I=this[1002])==null||I.dispose(),this[1002]=void 0}dispose(){super.dispose(),this.disposeTextures()}},dr=class extends YK{};function qz(g,A){var I=xz(A);return I.formatToParts?bz(I,g):Yz(I,g)}var Lz={year:0,month:1,day:2,hour:3,minute:4,second:5};function bz(g,A){try{for(var I=g.formatToParts(A),e=[],i=0;i=0&&(e[t]=parseInt(I[i].value,10))}return e}catch(C){if(C instanceof RangeError)return[NaN];throw C}}function Yz(g,A){var I=g.format(A).replace(/\u200E/g,""),e=/(\d+)\/(\d+)\/(\d+),? (\d+):(\d+):(\d+)/.exec(I);return[e[3],e[1],e[2],e[4],e[5],e[6]]}var _u={};function xz(g){if(!_u[g]){var A=new Intl.DateTimeFormat("en-US",{hour12:!1,timeZone:"America/New_York",year:"numeric",month:"numeric",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"}).format(new Date("2014-06-25T04:00:00.123Z")),I=A==="06/25/2014, 00:00:00"||A==="‎06‎/‎25‎/‎2014‎ ‎00‎:‎00‎:‎00";_u[g]=I?new Intl.DateTimeFormat("en-US",{hour12:!1,timeZone:g,year:"numeric",month:"numeric",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"}):new Intl.DateTimeFormat("en-US",{hourCycle:"h23",timeZone:g,year:"numeric",month:"numeric",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"})}return _u[g]}function xK(g,A,I,e,i,t,C){var o=new Date(0);return o.setUTCFullYear(g,A,I),o.setUTCHours(e,i,t,C),o}var ZM=36e5,Hz=6e4,Pu={timezone:/([Z+-].*)$/,timezoneZ:/^(Z)$/,timezoneHH:/^([+-]\d{2})$/,timezoneHHMM:/^([+-]\d{2}):?(\d{2})$/};function HK(g,A,I){var e,i;if(!g||(e=Pu.timezoneZ.exec(g),e))return 0;var t;if(e=Pu.timezoneHH.exec(g),e)return t=parseInt(e[1],10),VM(t)?-(t*ZM):NaN;if(e=Pu.timezoneHHMM.exec(g),e){t=parseInt(e[1],10);var C=parseInt(e[2],10);return VM(t,C)?(i=Math.abs(t)*ZM+C*Hz,t>0?-i:i):NaN}if(_z(g)){A=new Date(A||Date.now());var o=I?A:Tz(A),B=$y(o,g),a=I?B:Oz(A,B,g);return-a}return NaN}function Tz(g){return xK(g.getFullYear(),g.getMonth(),g.getDate(),g.getHours(),g.getMinutes(),g.getSeconds(),g.getMilliseconds())}function $y(g,A){var I=qz(g,A),e=xK(I[0],I[1]-1,I[2],I[3]%24,I[4],I[5],0).getTime(),i=g.getTime(),t=i%1e3;return i-=t>=0?t:1e3+t,e-i}function Oz(g,A,I){var e=g.getTime(),i=e-A,t=$y(new Date(i),I);if(A===t)return A;i-=t-A;var C=$y(new Date(i),I);return t===C?t:Math.max(t,C)}function VM(g,A){return-23<=g&&g<=23&&(A==null||0<=A&&A<=59)}var zM={};function _z(g){if(zM[g])return!0;try{return new Intl.DateTimeFormat(void 0,{timeZone:g}),zM[g]=!0,!0}catch{return!1}}var Pz=Fa(Sq(),1),XM=Fa(fq(),1),jz=/(Z|[+-]\d{2}(?::?\d{2})?| UTC| [a-zA-Z]+\/[a-zA-Z_]+(?:\/[a-zA-Z_]+)?)$/,Wz=jz,ju=36e5,$M=6e4,Zz=2,Zi={dateTimePattern:/^([0-9W+-]+)(T| )(.*)/,datePattern:/^([0-9W+-]+)(.*)/,plainTime:/:/,YY:/^(\d{2})$/,YYY:[/^([+-]\d{2})$/,/^([+-]\d{3})$/,/^([+-]\d{4})$/],YYYY:/^(\d{4})/,YYYYY:[/^([+-]\d{4})/,/^([+-]\d{5})/,/^([+-]\d{6})/],MM:/^-(\d{2})$/,DDD:/^-?(\d{3})$/,MMDD:/^-?(\d{2})-?(\d{2})$/,Www:/^-?W(\d{2})$/,WwwD:/^-?W(\d{2})-?(\d{1})$/,HH:/^(\d{2}([.,]\d*)?)$/,HHMM:/^(\d{2}):?(\d{2}([.,]\d*)?)$/,HHMMSS:/^(\d{2}):?(\d{2}):?(\d{2}([.,]\d*)?)$/,timeZone:Wz};function Vz(g,A){if(arguments.length<1)throw new TypeError("1 argument required, but only "+arguments.length+" present");if(g===null)return new Date(NaN);var I=A||{},e=I.additionalDigits==null?Zz:(0,Pz.default)(I.additionalDigits);if(e!==2&&e!==1&&e!==0)throw new RangeError("additionalDigits must be 0, 1 or 2");if(g instanceof Date||typeof g=="object"&&Object.prototype.toString.call(g)==="[object Date]")return new Date(g.getTime());if(typeof g=="number"||Object.prototype.toString.call(g)==="[object Number]")return new Date(g);if(!(typeof g=="string"||Object.prototype.toString.call(g)==="[object String]"))return new Date(NaN);var i=zz(g),t=Xz(i.date,e),C=t.year,o=t.restDateString,B=$z(o,C);if(isNaN(B))return new Date(NaN);if(B){var a=B.getTime(),s=0,r;if(i.time&&(s=AX(i.time),isNaN(s)))return new Date(NaN);if(i.timeZone||I.timeZone){if(r=HK(i.timeZone||I.timeZone,new Date(a+s)),isNaN(r))return new Date(NaN)}else r=(0,XM.default)(new Date(a+s)),r=(0,XM.default)(new Date(a+s+r));return new Date(a+s+r)}else return new Date(NaN)}function zz(g){var A={},I=Zi.dateTimePattern.exec(g),e;if(I?(A.date=I[1],e=I[3]):(I=Zi.datePattern.exec(g),I?(A.date=I[1],e=I[2]):(A.date=null,e=g)),e){var i=Zi.timeZone.exec(e);i?(A.time=e.replace(i[1],""),A.timeZone=i[1].trim()):A.time=e}return A}function Xz(g,A){var I=Zi.YYY[A],e=Zi.YYYYY[A],i;if(i=Zi.YYYY.exec(g)||e.exec(g),i){var t=i[1];return{year:parseInt(t,10),restDateString:g.slice(t.length)}}if(i=Zi.YY.exec(g)||I.exec(g),i){var C=i[1];return{year:parseInt(C,10)*100,restDateString:g.slice(C.length)}}return{year:null}}function $z(g,A){if(A===null)return null;var I,e,i,t;if(g.length===0)return e=new Date(0),e.setUTCFullYear(A),e;if(I=Zi.MM.exec(g),I)return e=new Date(0),i=parseInt(I[1],10)-1,gm(A,i)?(e.setUTCFullYear(A,i),e):new Date(NaN);if(I=Zi.DDD.exec(g),I){e=new Date(0);var C=parseInt(I[1],10);return eX(A,C)?(e.setUTCFullYear(A,0,C),e):new Date(NaN)}if(I=Zi.MMDD.exec(g),I){e=new Date(0),i=parseInt(I[1],10)-1;var o=parseInt(I[2],10);return gm(A,i,o)?(e.setUTCFullYear(A,i,o),e):new Date(NaN)}if(I=Zi.Www.exec(g),I)return t=parseInt(I[1],10)-1,Im(A,t)?Am(A,t):new Date(NaN);if(I=Zi.WwwD.exec(g),I){t=parseInt(I[1],10)-1;var B=parseInt(I[2],10)-1;return Im(A,t,B)?Am(A,t,B):new Date(NaN)}return null}function AX(g){var A,I,e;if(A=Zi.HH.exec(g),A)return I=parseFloat(A[1].replace(",",".")),Wu(I)?I%24*ju:NaN;if(A=Zi.HHMM.exec(g),A)return I=parseInt(A[1],10),e=parseFloat(A[2].replace(",",".")),Wu(I,e)?I%24*ju+e*$M:NaN;if(A=Zi.HHMMSS.exec(g),A){I=parseInt(A[1],10),e=parseInt(A[2],10);var i=parseFloat(A[3].replace(",","."));return Wu(I,e,i)?I%24*ju+e*$M+i*1e3:NaN}return null}function Am(g,A,I){A=A||0,I=I||0;var e=new Date(0);e.setUTCFullYear(g,0,4);var i=e.getUTCDay()||7,t=A*7+I+1-i;return e.setUTCDate(e.getUTCDate()+t),e}var gX=[31,28,31,30,31,30,31,31,30,31,30,31],IX=[31,29,31,30,31,30,31,31,30,31,30,31];function TK(g){return g%400===0||g%4===0&&g%100!==0}function gm(g,A,I){if(A<0||A>11)return!1;if(I!=null){if(I<1)return!1;var e=TK(g);if(e&&I>IX[A]||!e&&I>gX[A])return!1}return!0}function eX(g,A){if(A<1)return!1;var I=TK(g);return!(I&&A>366||!I&&A>365)}function Im(g,A,I){return!(A<0||A>52||I!=null&&(I<0||I>6))}function Wu(g,A,I){return!(g!=null&&(g<0||g>=25)||A!=null&&(A<0||A>=60)||I!=null&&(I<0||I>=60))}function iX(g,A,I){var e=Vz(g,I),i=HK(A,e,!0),t=new Date(e.getTime()-i),C=new Date(0);return C.setFullYear(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate()),C.setHours(t.getUTCHours(),t.getUTCMinutes(),t.getUTCSeconds(),t.getUTCMilliseconds()),C}function Vi(g,A){return A.color(g)}function em(g=new Date,A){let I=A.format,e=g.getSeconds(),i=g;A&&A.timeZone!==null&&(i=iX(new Date,A.timeZone));let t=i.getHours(),C=i.getMinutes(),o;A.format12h24h==="12ampm"&&(o=t>=12?"PM":"AM");let B=t;A.format12h24h!=="24"&&(B=t%12,B===0&&(B=12));let a,s;switch(I){case"HH:mm:ss":a=[B,C,e];break;case"HH:mm":a=[B,C];break;case"HH":a=[B],o=void 0;break;case"mm":a=[C],o=void 0;break;case"ss":a=[e],o=void 0;break;case"year":s=i.getFullYear();break;case"month":s=i.getMonth()+1;break;case"dayOfYear":s=Math.floor((i.getTime()-new Date(i.getFullYear(),0,0).getTime())/864e5);break;case"dayOfMonth":s=i.getDate();break;case"secondOfDay":s=t*60*60+C*60+e;break;default:console.error("Unknown time format",I),s=0;break}return a!==void 0?{textValue:a,suffix:o}:s}function tX(g,A){switch(g.type){case"fresnel":return BX(g,A);case"gradient":return aX(g,A);case"depth":return rX(g,A);case"normal":return sX(g,A);case"noise":return QX(g,A);case"rainbow":return EX(g,A);case"toon":return nX(g,A);case"outline":return hX(g,A);case"transmission":return lX(g,A);case"color":return oX(g,A);case"pattern":return cX(g,A)}}function CX(g){return{type:g.type}}function bC(g,A){let{alpha:I,mode:e,isMask:i}=g,t=typeof I=="string"?(Number(A.getVariable(I))??100)/100:I;return{...CX(g),alpha:t,mode:e,isMask:i}}function oX(g,A){return{...bC(g,A),color:Vi(g.color,A)}}function BX(g,A){let{bias:I,scale:e,intensity:i,factor:t,color:C}=g;return{...bC(g,A),color:Vi(C,A),bias:I,scale:e,intensity:i,factor:t}}function aX(g,A){let{gradientType:I,smooth:e,colors:i,steps:t,angle:C,offset:o,morph:B}=g;return{...bC(g,A),gradientType:I,smooth:e,colors:i.map(a=>new EI(a[0],a[1],a[2],a[3])),num:i.length,steps:t,offset:new sA(...o),morph:new sA(...B),angle:C}}function rX(g,A){let{gradientType:I,near:e,far:i,isVector:t,isWorldSpace:C,origin:o,direction:B,colors:a,steps:s,smooth:r}=g;return{...bC(g,A),gradientType:I,near:e,far:i,isVector:t,isWorldSpace:C,origin:new J(...o),direction:B?new J(...B):new J(1,0,0),colors:a.map(Q=>Q!==void 0?new EI(Q[0],Q[1],Q[2],Q[3]):new EI(0,0,0,0)),steps:s.slice(0,a.length),smooth:r}}function sX(g,A){let{cnormal:I}=g;return{...bC(g,A),cnormal:new J(I[0],I[1],I[2])}}function QX(g,A){return{...bC(g,A),scale:g.scale,move:g.move,fA:new sA(...g.fA),fB:new sA(...g.fB),size:new J(...g.size),distortion:new sA(...g.distortion),colorA:Vi(g.colorA,A),colorB:Vi(g.colorB,A),colorC:Vi(g.colorC,A),colorD:Vi(g.colorD,A),noiseType:g.noiseType,voronoiStyle:g.voronoiStyle,highCut:g.highCut,lowCut:g.lowCut,smoothness:g.smoothness,seed:g.seed,quality:g.quality}}function EX(g,A){return{...bC(g,A),filmThickness:g.filmThickness,movement:g.movement,wavelengths:new J(...g.wavelengths),noiseStrength:g.noiseStrength,noiseScale:g.noiseScale,offset:new J(...g.offset)}}function nX(g,A){return{...bC(g,A),positioning:g.positioning,colors:g.colors.map(I=>new EI(I[0],I[1],I[2],I[3])),num:g.colors.length,steps:g.steps,source:new J(...g.source),isWorldSpace:g.isWorldSpace,noiseStrength:g.noiseStrength,noiseScale:g.noiseScale,shadowColor:Vi(g.shadowColor,A),offset:new J(...g.offset)}}function hX(g,A){return{...bC(g,A),outlineColor:Vi(g.outlineColor,A),contourColor:Vi(g.contourColor,A),outlineWidth:g.outlineWidth,contourWidth:g.contourWidth,outlineThreshold:g.outlineThreshold,contourThreshold:g.contourThreshold,outlineSmoothing:g.outlineSmoothing,contourFrequency:g.contourFrequency,contourDirection:new J(...g.contourDirection),positionalLines:g.positionalLines,compensation:g.compensation}}function lX(g,A){return{...bC(g,A),thickness:g.thickness,ior:g.ior,roughness:g.roughness}}function cX(g,A){return{...bC(g,A),style:g.style,projection:g.projection,axis:g.axis,blending:g.blending,offset:new sA(...g.offset),colorA:Vi(g.colorA,A),colorB:Vi(g.colorB,A),frequency:new sA(...g.frequency),size:g.size,variation:g.variation,smoothness:g.smoothness,zigzag:g.zigzag,rotation:g.rotation,vertical:new sA(...g.vertical),horizontal:new sA(...g.horizontal),sides:g.sides}}var gD=class extends lt{},OK={noise:["noiseType"],texture:["projection","axis","side"],video:["projection","axis","side"],displace:["noiseType"],light:["roughnessMap","bumpMap"],depth:["smooth","isWorldSpace","gradientType","isVector"],pattern:["style","projection","axis"]},_K={depth:["colors"]};function DX(g,A,I){var t,C;if(A==="isMask")return!0;let e=OK[g.type],i=_K[g.type];if(i!==void 0){let o=g.color;if(i.includes(A)){let B=(C=(t=o[A])==null?void 0:t.value)==null?void 0:C.length;if(B!==void 0&&B!==I.length)return!0}}return e!==void 0?e.includes(A):!1}function PK(g,A,I){let e=I.uniforms[`f${I.id}_texture`];if(!e)return!1;let i=!1,t=g;if("image"in t){let C=t.image,o=A.image(C),B=e;B.image instanceof dr||B.image.deref(),B.image=o}if("video"in t){let C=t.video,o=A.video(C),B=e;B.image instanceof dr||B.image.deref(),B.image=o}if("wrapping"in t){let C=e;C.wrap=t.wrapping}if("repeat"in t||"offset"in t){let C="mat",o=I.uniforms[`f${I.id}_${C}`];"repeat"in t&&(o.repeat=t.repeat),"offset"in t&&(o.offset=t.offset),o.updateMatrix()}return i}function dX(g,A,I,e){let i=!1;for(let[t,C]of Object.entries(g)){if(t==="bumpMap"||t==="roughnessMap"){i=!0;continue}if(!t||C===void 0)continue;if(WK(t,I,e,A)){t==="visible"&&I.type==="light"&&(i=!0);continue}I.visible=e.visible;let o=I.uniforms[`f${I.id}_${t}`];if(o&&!(o instanceof Y0))switch(i=i||DX(I,t,C),o.constructor){case Ge:if(typeof C=="string"){let B=A.getColor(C);B&&(o.value=B);break}else{let B=C;o.value instanceof gD?o.value=new lt(B.r,B.g,B.b,B.a):o.setRGBA(B);break}case rB:if(typeof C=="string"){let B=A.getColor(C);B&&(o.value=B);break}else{let B=C;o.value instanceof gD?o.value=new lt(B.r,B.g,B.b,B.a):o.value.setRGBA(B.r,B.g,B.b,B.a);break}case wi:{let B=C;o.value.setX(B[0]),o.value.setY(B[1]);break}case Wt:{let B=C;o.value.setX(B[0]),o.value.setY(B[1]),o.value.setZ(B[2]);break}case nB:{PK(C,A,I);break}case ar:{o.value=C.map(B=>new EI(...B));break}default:{o.value=C;break}}}return i}var Jr=(g,A,I)=>Math.max(0,Math.min(1,Number(A.getVariable(typeof g=="number"?g*100:g,I)??100)/100))??1,mr=class{constructor(A,I,e,i,t){this.id=A,this.uuid=I,this.data=e,this.uniforms={};for(let C in i)this.uniforms[`f${this.id}_${C}`]=i[C];for(let C in e)WK(C,this,e,t)}get type(){return this.data.type}static create(A,I,e,i){if(e.type==="light")return sB.createLigherLayer(A,I,e,i);if(e.type==="texture"||e.type==="video"){let t=e.type==="texture"?i.image(e.texture.image):i.video(e.texture.video),C=new Vy(t,e.texture.wrapping),o=new wz(t),B=new Sz(e.texture.repeat,e.texture.offset),a=new yg(e.crop?1:0),s=new ge(e.projection??0),r=new ge(["x","y","z"].indexOf(e.axis)??0),Q=new ge(e.side??0),E=new wi(e.size?new sA(e.size[0],e.size[1]):new sA(100,100)),n=new yg(e.blending??0),h=new yg(Jr(e.alpha,i)),l=new ge(e.mode??0),c=new Wi(e.isMask??!1),d=new x0(C,o,a,s,r,Q,E,n,B,h,l,c),u=new se(d.calpha,"f");return new we(A,I,e,{texture:C,textureSize:o,crop:a,projection:s,axis:r,side:Q,size:E,blending:n,mat:B,alpha:h,mode:l,isMask:c},d,l,u,c,i)}else if(e.type==="matcap"){let t=i.image(e.texture.image),C=new Vy(t,e.texture.wrapping),o=new yg(Jr(e.alpha,i)),B=new ge(e.mode??0),a=new Wi(e.isMask??!1),s=new GK(C,o,B,a),r=new se(s.calpha,"f");return new we(A,I,e,{texture:C,alpha:o,mode:B,isMask:a},s,B,r,a,i)}else if(e.type==="displace")if(e.displacementType==="noise"){let t=new Wt(new J(...e.offset)),C=new yg(e.scale??10),o=new yg(e.intensity??8),B=new yg(e.movement??1),a=new ge(e.noiseType??0),s=new ge(e.voronoiStyle??0),r=new yg(e.smoothness??.5),Q=new yg(e.seed??0),E=new yg(e.highCut??1),n=new yg(e.lowCut??0),h=new ge(e.quality??1),l=new LK(o,B,t,s,r,Q,E,n,h,C,a);return new jK(A,I,e,{offset:t,scale:C,intensity:o,movement:B,noiseType:a,voronoiStyle:s,smoothness:r,seed:Q,highCut:E,lowCut:n,quality:h},l,i)}else throw new Error;else return yX(A,I,e,i)}updateByOp(A,I,e){let i=A;if(i.path[0]===void 0){if(i.type===0)return"type"in i.props||"category"in i.props||"visible"in i.props?(e.scene.markNeedsUpdateRendererDirty(),!0):dX(i.props,e.shared,this,I)}else if(i.path[0]==="texture")return"texture"in I||"video"in I?PK(i.props,e.shared,this):!0;return!1}dispose(){if(uX(this)){let A=this.uniforms[`f${this.id}_texture`];if(!A)return!1;let I=A;I.image instanceof dr||I.image.deref()}}hasValueByKey(A){return this.uniforms[A]!==void 0}hasValue(A){return this.hasValueByKey(`f${this.id}_${A}`)}setValue(A,I){let e=`f${this.id}_${A}`;this.hasValueByKey(e)&&I!==void 0&&(this.uniforms[e].value=I)}getNode(A){let I=`f${this.id}_${A}`;if(this.hasValueByKey(I))return this.uniforms[I]}getValue(A){let I=`f${this.id}_${A}`;if(this.hasValueByKey(I))return this.uniforms[I].value}getName(A){let I=/f\d+_(.*)/.exec(A);if(I&&I.length>1)return I[1];console.log(`Layer.getName: error ${A}`)}getNames(){let A=[];for(let I in this.uniforms){let e=this.getName(I);e&&A.push(e)}return A}},we=class extends mr{constructor(A,I,e,i,t,C,o,B,a){super(A,I,e,i,a),this.params=i,this.color=t,this.mode=C,this.alpha=o,this.isMask=B}},jK=class extends mr{constructor(g,A,I,e,i,t){super(g,A,I,e,t),this.position=i}},sB=class extends mr{constructor(A,I,e,i,t,C){super(A,I,e,t,C),this.node=i}static createLigherLayer(A,I,e,i){let t,C=new yg(Jr(e.alpha,i)),o=new ge(e.mode),B=new yg(e.bumpMapIntensity),a=new yg(Jr(e.alphaOverride,i)),s;if(!e.visible)t=new bK,s={};else if(e.category==="lambert"){t=new Mz;let r=new Ge(i.color(e.emissive)??0),Q=new Wi(e.occlusion??!0);s={emissive:r,occlusion:Q},t.emissive=r,t.occlusion=Q}else if(e.category==="toon"){t=new Nz;let r=new yg(e.shininess??30),Q=new Ge(i.color(e.specular)??1118481);s={shininess:r,specular:Q},t.shininess=r,t.specular=Q}else if(e.category==="physical"){t=new Uz;let r=new yg(e.roughness??.3),Q=new yg(e.metalness??0),E=new yg(e.reflectivity??.5),n=new Wi(e.occlusion??!0);s={roughness:r,metalness:Q,reflectivity:E,occlusion:n},t.roughness=r,t.metalness=Q,t.reflectivity=E,t.occlusion=n}else{t=new mz;let r=new yg(e.shininess??30),Q=new Ge(e.specular!==void 0?i.color(e.specular)??1118481:1118481),E=new Wi(e.occlusion??!0);s={shininess:r,specular:Q,occlusion:E},t.shininess=r,t.specular=Q,t.occlusion=E}return t.alpha=new yg(1),t.shadingAlpha=C,t.shadingBlend=o,t.bumpMapIntensity=B,t.alphaOverride=a,s.alpha=t.shadingAlpha,s.mode=t.shadingBlend,s.bumpMapIntensity=t.bumpMapIntensity,s.alphaOverride=t.alphaOverride,new sB(A,I,e,t,s,i)}get category(){return this.node.category}};function uX(g){let A=g instanceof mr?g.type:g;return A==="texture"||A==="video"||A==="displace_map"||A==="matcap"}function Tt(g){return{alpha:new yg(g.alpha??1),mode:new ge(g.mode??0),isMask:new Wi(g.isMask??!1)}}function pX(g,A,I,e,i){switch(g.type){case"color":{let t=new Ge(e.color??CC),C=Tt(e),o=new zy(t,C.alpha),B=new se(o.calpha,"f");return new we(A,I,g,{color:t,...C},o,C.mode,B,C.isMask,i)}case"fresnel":{let t=new Ge(e.color??16777215),C=new yg(e.bias??.1),o=new yg(e.scale??1),B=new yg(e.intensity??2),a=new yg(e.factor??1),s=Tt(e),r=new fz(t,C,o,B,a,s.alpha,s.mode,s.isMask),Q=new se(r.calpha,"f");return new we(A,I,g,{color:t,bias:C,scale:o,intensity:B,factor:a,...s},r,s.mode,Q,s.isMask,i)}case"rainbow":{let t=new yg(e.filmThickness??30),C=new yg(e.movement??0),o=new Wt(e.wavelengths??new J(0,0,0)),B=new yg(e.noiseStrength??0),a=new yg(e.noiseScale??1),s=new Wt(e.offset??new J(0,0,0)),r=Tt(e),Q=new FK(t,C,o,B,a,s,r.alpha,r.isMask),E=new se(Q.calpha,"f");return new we(A,I,g,{filmThickness:t,movement:C,wavelengths:o,noiseStrength:B,noiseScale:a,offset:s,...r},Q,r.mode,E,r.isMask,i)}case"transmission":{let t=new yg(e.thickness??10),C=new yg(e.ior??1.5),o=new yg(e.roughness??.5),B=Tg.transmissionSize,a=Tg.transmissionRenderTarget,s=Tg.transmissionRenderTargetDepth,r=window.innerWidth,Q=window.innerHeight,E=r>=Q?new wi(Q/r,1):new wi(1,r/Q),n=Tt(e),h=new vK(t,C,o,B,a,s,E,n.alpha),l=new se(h.calpha,"f");return new we(A,I,g,{thickness:t,ior:C,roughness:o,aspectRatio:E,...n},h,n.mode,l,n.isMask,i)}case"toon":{let t=new ge(e.positioning??0),C;e.colors?C=new ar(e.colors.length,e.colors):(C=new ar(10,new EI(0,0,0,1)),C.value[1]=new EI(1,1,1,1));let o;e.steps?o=new Br(e.steps.length,e.steps):(o=new Br(10,1),o.value[0]=0);let B=new Wt(e.source??new J(0,0,0)),a=new Wi(e.isWorldSpace??!0),s=new yg(e.noiseStrength??0),r=new yg(e.noiseScale??1),Q=new rB(e.shadowColor),E=new Wt(e.offset??new J(0,0,0)),n=Tt(e),h=new KK(t,C,o,B,a,s,r,Q,E,n.alpha),l=new se(h.calpha,"f");return new we(A,I,g,{positioning:t,colors:C,steps:o,source:B,isWorldSpace:a,noiseStrength:s,noiseScale:r,shadowColor:Q,offset:E,...n},h,n.mode,l,n.isMask,i)}case"outline":{let t=new Ge(e.outlineColor??16777215),C=new Ge(e.contourColor??16777215),o=new yg(e.outlineWidth??.1),B=new yg(e.contourWidth??.1),a=new yg(e.outlineThreshold??.1),s=new yg(e.contourThreshold??.1),r=new yg(e.outlineSmoothing??.1),Q=new yg(e.contourFrequency??.1),E=new Wt(e.contourDirection??new J(0,1,0)),n=new Wi(e.positionalLines??!1),h=new Wi(e.compensation??!0),l=Tg.normalRenderTarget,c=Tg.normalRenderTargetDepth,d=Tg.pixelRatioNode,u=Tg.resolution,y=Tt(e),f=new mK(t,C,o,B,a,s,r,Q,E,n,h,u,l,c,d,y.alpha),k=new se(f.calpha,"f");return new we(A,I,g,{outlineColor:t,contourColor:C,outlineWidth:o,contourWidth:B,outlineThreshold:a,contourThreshold:s,outlineSmoothing:r,contourFrequency:Q,contourDirection:E,positionalLines:n,compensation:h,...y},f,y.mode,k,y.isMask,i)}case"depth":{let t=new ge(e.gradientType??0),C=new Wi(e.smooth??!1),o=new yg(e.near??50),B=new yg(e.far??200),a=new yg(e.isVector??1),s=new yg(e.isWorldSpace??0),r=new Wt(e.origin??new J),Q=new Wt(e.direction??new J),E;e.colors?E=new ar(e.colors.length,e.colors):(E=new ar(2,new EI(0,0,0,1)),E.value[1]=new EI(1,1,1,1));let n;e.steps?n=new Br(e.steps.length,e.steps):(n=new Br(2,1),n.value[0]=0);let h=Tt(e),l=new yK(t,C,o,B,a,s,r,Q,E,n,h.alpha,h.isMask),c=new se(l.calpha,"f");return new we(A,I,g,{gradientType:t,smooth:C,near:o,far:B,isVector:a,isWorldSpace:s,origin:r,direction:Q,colors:E,steps:n,...h},l,h.mode,c,h.isMask,i)}case"noise":{let t=new yg(e.scale??1),C=new Wt(e.size??new J(100,100,100)),o=new yg(e.move??1),B=new wi(e.fA??new sA(1.7,9.2)),a=new wi(e.fB??new sA(8.3,2.8)),s=new wi(e.distortion??new sA(1,1)),r=new rB(e.colorA),Q=new rB(e.colorB),E=new rB(e.colorC),n=new rB(e.colorD),h=new ge(e.noiseType??0),l=new ge(e.voronoiStyle??0),c=new yg(e.highCut??1),d=new yg(e.lowCut??0),u=new yg(e.smoothness??.5),y=new yg(e.seed??.5),f=new ge(e.quality??1),k=Tt(e),M=new kK(t,C,o,B,a,s,r,Q,E,n,k.alpha,h,k.isMask,l,c,d,u,y,f),G=new se(M.calpha,"f");return new we(A,I,g,{scale:t,size:C,move:o,fA:B,fB:a,distortion:s,colorA:r,colorB:Q,colorC:E,colorD:n,noiseType:h,...k,voronoiStyle:l,highCut:c,lowCut:d,smoothness:u,seed:y,quality:f},M,k.mode,G,k.isMask,i)}case"normal":{let t=new Wt(e.cnormal??new J(1,1,1)),C=Tt(e),o=new pK(t,C.alpha),B=new se(o.calpha,"f");return new we(A,I,g,{cnormal:t,...C},o,C.mode,B,C.isMask,i)}case"gradient":{let t=new ge(e.gradientType??0),C=new Wi(e.smooth??!1),o;e.colors?o=new ar(e.colors.length,e.colors):(o=new ar(10,new EI(0,0,0,1)),o.value[1]=new EI(1,1,1,1));let B;e.steps?B=new Br(e.steps.length,e.steps):(B=new Br(10,1),B.value[0]=0);let a=new wi(e.offset??new sA(0,0)),s=new wi(e.morph??new sA(0,0)),r=new yg(e.angle??0),Q=Tt(e),E=new SK(t,C,o,B,a,s,r,Q.alpha,Q.isMask),n=new se(E.calpha,"f");return new we(A,I,g,{gradientType:t,smooth:C,colors:o,steps:B,offset:a,morph:s,angle:r,...Q},E,Q.mode,n,Q.isMask,i)}case"pattern":{let t=new ge(e.style??0),C=new ge(e.projection??0),o=new ge(["x","y","z"].indexOf(e.axis)??0),B=new yg(e.blending??0),a=new wi(e.offset??new sA(0,0)),s=new rB(e.colorA),r=new rB(e.colorB),Q=new wi(e.frequency??new sA(10,10)),E=new yg(e.size??.5),n=new yg(e.variation??0),h=new yg(e.smoothness??.5),l=new yg(e.zigzag??0),c=new yg(e.rotation??0),d=new wi(e.vertical??new sA(0,1)),u=new wi(e.horizontal??new sA(0,1)),y=new ge(e.sides??6),f=Tt(e),k=new UK(t,C,o,B,a,s,r,Q,E,n,h,l,c,d,u,y,f.alpha,f.isMask),M=new se(k.calpha,"f");return new we(A,I,g,{style:t,projection:C,axis:o,blending:B,offset:a,colorA:s,colorB:r,frequency:Q,size:E,variation:n,smoothness:h,zigzag:l,rotation:c,vertical:d,horizontal:u,sides:y,...f},k,f.mode,M,f.isMask,i)}default:{let t=new Ge(1,0,0,1),C=Tt(e),o=new zy(t,C.alpha),B=new se(o.calpha,"f");return new we(A,I,g,{color:t,...C},o,C.mode,B,C.isMask,i)}}}function yX(g,A,I,e){let i=tX(I,e);return pX(I,g,A,i,e)}function WK(g,A,I,e){if(I.type==="displace"&&(g==="intensity"||g==="visible")){let i=A.uniforms[`f${A.id}_intensity`];return i?(i.value=I.intensity*(I.visible?1:0),i):void 0}if(I.type!=="displace"&&(g==="alpha"||g==="visible")){let i=A.uniforms[`f${A.id}_alpha`];if(!i)return;if(i.value=Jr(I.alpha,e)*(I.visible?1:0),I.type==="outline"&&g==="visible"){let t=A.uniforms[`f${A.id}_compensation`];t&&(t.value=I.compensation&&I.visible)}return i}}function tQ(g,A){let I=0,e=g.layers.find(i=>i.data.type==="light");if(e){let i=e.data,t=Number(A.getVariable(i.alphaOverride));if((typeof i.alphaOverride=="string"?t/100:i.alphaOverride)<1)return!0}for(let i of g.layers){if(i.data.type!=="displace"&&i.data.isMask)return!0;if(i.data.type!=="displace"&&"alpha"in i.data&&i.data.type!=="light"&&i.data.type!=="fresnel"&&i.data.type!=="texture"&&i.data.type!=="matcap"&&i.data.type!=="rainbow"&&i.data.type!=="outline"&&i.data.type!=="pattern"){let t=i.data.visible?i.data.alpha:0;if(typeof t=="string"&&(t=Math.max(0,Math.min(1,Number(A.getVariable(t)??100)/100))),t===1&&i.data.type==="depth"||i.data.type==="gradient"){for(let C of i.data.colors)if(C[3]<1){t=C[3];break}}else if(t===1&&i.data.type==="noise"){let C=A.color(i.data.colorA).a,o=A.color(i.data.colorB).a,B=A.color(i.data.colorC).a,a=A.color(i.data.colorD).a,s=Math.min(C,Math.min(o,Math.min(B,a)));s<1&&(t=s)}I+=(1-I)*t}}return I<1}var ka=class extends te{constructor(){super(void 0),this.flatShading=!1,this.needsJitter=!0,this.cacheKey="",this.fog=!0,this.dithering=!0,this.vertexColors=!0,this.transparent=!0}customProgramCacheKey(){return this.cacheKey}},wX=class extends ka{constructor(g,A,I,e){super(),this.flatShading=g,this.side=A,this.wireframe=I,this.root=e}updateAfterBuild(){let g=this.root;this.lights=g.lights,this.vertexShader=g.vertexShader,this.fragmentShader=g.fragmentShader,this.defines=g.defines,this.uniforms=g.uniforms,this.extensions=g.extensions,this.transparent=g.transparent,this.cacheKey=g.customProgramCacheKey()+"flat"+this.flatShading+this.side}onBeforeCompile(g,A){this.root.onBeforeCompile(g)}get data(){return this.root.data}get category(){return this.root.category}get hasAO(){return this.root.hasAO}getFlavor(g,A,I){return this.root.getFlavor(g,A,I)}get layers(){return this.root.layers}get fragment(){return this.root.fragment}getLayersOfType(g){return this.root.getLayersOfType(g)}getLayerByUuid(g){return this.root.getLayerByUuid(g)}updateByOp(g,A,I){this.root.updateByOp(g,A,I)}nodeMaterialDispose(){this.root.nodeMaterialDispose()}},T0=class extends ka{constructor(g,A,I=!0){super(),this.data=g,this.allowVariableSaves=I,this.layerIdGen=0,this.flavors=[],this.masks={},this.type="NodeMaterial",this.updaters=[],this.reset0(g,A)}get nodeMaterial(){return this}getFlavor(g,A,I){let e=I?6:(g?3:0)+A;if(e===0)return this;this.flavors===void 0&&(this.flavors=[]),e-=1;let i=this.flavors[e];return i===void 0&&(i=new wX(g,A,I,this),this.flavors[e]=i,i.flatShading=g,i.side=A,i.updateAfterBuild()),i}get fragment(){return this.lightLayer.node}get category(){return this.lightLayer.category}get hasAO(){var g;return((g=this.lightLayer.getNode("occlusion"))==null?void 0:g.value)??!1}reset(g,A){this.data!==g&&this.reset0(g,A)}reset0(g,A){this.data=g;let I=g.layers??Ki.defaultTwoLayerData("phong").layers;try{this.layers=I.map(e=>mr.create(this.layerIdGen++,e.id,e.data,A.shared))}catch{this.layers=[]}this.layers.reverse(),this.name=g.name??"Untitled Material",this.onUpdate(A.shared),this.transparent=tQ(g,A.shared),this.saveVariableLocations(A)}onVariableUpdate(g,A,I){if(g[0]==="alphaOverride")this.transparent=tQ(this.data,I.shared),this.lightLayer.setValue("alphaOverride",Math.max(0,Math.min(Number(A)/100,1)));else if(g[0]==="layer"){let e=g[1],i=g[2];if(e&&i){let t=this.layers.find(C=>C.uuid===e);t!=null&&t.hasValue(i)&&(i==="alpha"?(this.transparent=tQ(this.data,I.shared),t.setValue(i,Math.max(0,Math.min(Number(A)/100,1)))):t.setValue(i,A))}}}saveVariableLocations(g){if(!this.allowVariableSaves)return;let A=this.data.layers.find(I=>I.data.type==="light");A&&g.shared.getVariable(A.data.alphaOverride,["material",this.uuid,"alphaOverride"]),this.data.layers.forEach(I=>{"alpha"in I.data&&typeof I.data.alpha=="string"&&g.shared.getVariable(I.data.alpha,["material",this.uuid,"layer",I.id,"alpha"])})}getLayersOfType(g){return this.layers.filter(A=>A.type===g)}getLayerByUuid(g){return this.layers.find(A=>A.uuid===g)}onUpdate(g){this.cacheKey=this.computeCacheKey(),this.lightLayer=this.layers.find(A=>A instanceof sB),this.lightLayer===void 0&&(this.lightLayer=new sB(0,"",{...Bt.defaultData("light","phong"),visible:!1},new bK,{},g)),this.dispose();for(let A of this.flavors)A&&A.dispose();this.applyTextureMaps(),this.applyMasks(),this.blendColors(),this.blendAfterColors(),this.blendPositions()}applyTextureMaps(){let g=this.layers.find(i=>i instanceof sB);if(!g)return;let A=g.data,I=A.bumpMap,e=A.roughnessMap;g.node.bumpMap=void 0,g.node.roughnessMap=void 0;for(let i=0;io.uuid===g.id),C=this.layers[t];this.layers.splice(t,1),this.layers.splice(g.localIndex,0,C),I.scene.markNeedsUpdateRendererDirty()}this.layers.reverse(),this.onUpdate(I.shared)}else{g.type===0&&g.props.occlusion!==void 0&&I.scene.markNeedsUpdateRendererDirty();let t=this.layers.find(C=>C.uuid===i);if(t){let C=A.layers.data(i),o;if(g.type===0&&("alpha"in g.props||"alphaOverride"in g.props)&&("alpha"in g.props?o={...g.props,alpha:Jr(g.props.alpha,e,["material",this.uuid,"layer",i,"alpha"])}:o={...g.props,alphaOverride:Jr(g.props.alphaOverride,e,["material",this.uuid,"alphaOverride"])}),t.updateByOp({...g,...o?{props:o}:{},path:g.path.slice(2)},C,I)){let B=mr.create(this.layerIdGen++,i,C,e);this.layers.splice(this.layers.findIndex(a=>a.uuid===i),1,B),this.onUpdate(I.shared)}}}}else this.reset(A,I)}applyMasks(){for(let g=0;g0){let I=g-1,e=this.layers[I];e instanceof sB?e.node.mask=new ot(A.color,A.alpha,ot.MUL):e instanceof we&&(e.isMask.value||(e.color.mask=new ot(A.color,A.alpha,ot.MUL)))}}}blendColors(){let g=this.layers.findIndex(I=>I instanceof we),A=this.layers.findIndex(I=>I instanceof sB);if(g!==-1&&gI instanceof sB);if(this.layers.length>A+1){for(let I=A+1;IA instanceof jK);if(g.length>0){let A=g[0].position;for(let I=1;IMath.min(Math.max(e,i),t);for(let e of this.layers)if(e.type==="displace"){let i=I(e.uniforms[`f${e.id}_intensity`].value,g,A);e.uniforms[`f${e.id}_intensity`].value=i}}computeCacheKey(){let g="[";for(let{data:A}of this.data.layers)if(A.type==="light")g+=`"${A.visible?A.category.toUpperCase():"Basic"}"`;else{let I=(OK[A.type]??[]).map(o=>A[o]),e=(_K[A.type]??[]).map(o=>{var B;return((B=A[o])==null?void 0:B.length)??0}),i=[...I,...e],t="isMask"in A&&A.isMask,C=`"${A.type}-${A.visible}-${t}"`;i.length?g+=`[${C}, "${i.join('","')}"],`:g+=C}return g=g.slice(0,-1)+"]",g}updateFrame(g){for(let A=0;Ag.dispose()),super.dispose();for(let g of this.flavors)g&&g.dispose()}assetsLoaded(){for(let g of this.layers)if(g instanceof we){let A=g.params.texture;if(A instanceof Vy&&!A.image.loaded)return!1}return!0}getHash(){let g="{";return g+='"fragment":'+this.fragment.getHash(),g+="}",g}};Object.defineProperties(ka.prototype,{properties:{get:function(){return this.fragment.properties}}});var Aw=class extends T0{constructor(g,A,I){super(g,A,!1),this.uuid=I,this.allowVariableSaves=!0,this.saveVariableLocations(A)}},SX=Fa(Gq()),im=new Map;function fX(g){if(typeof g=="string")return g;let A=im.get(g);return A||(A={url:URL.createObjectURL(new Blob([g]))},im.set(g,A)),A.url}var In=class{constructor({src:A,volume:I,delay:e,loop:i}){this._volume=1,this.delay=0,this._loop=1,this.loopsRemaining=0,this._status="stopped",this.onEnd=()=>{this.loopsRemaining===1/0?this.replay():this.loopsRemaining>1?(this.replay(),this.loopsRemaining--):(this._status="stopped",this.loopsRemaining=this._loop)};let t;typeof A=="string"?t={src:A}:t={src:fX(A),format:"wav"},this.sound=new SX.Howl(t),this.sound.on("end",this.onEnd),this.src=A,I!==void 0&&(this.volume=I),e!==void 0&&(this.delay=e),i!==void 0&&(this.loop=i)}get status(){return this._status}get volume(){return this._volume}set volume(A){this._volume=A,this.sound.volume(A)}get loop(){return this._loop}set loop(A){this._loop=A,this.loopsRemaining=A}replay(){this.clearDelay(),this.delayTimerId=window.setTimeout(()=>{this.sound.play(),this.clearDelay()},this.delay)}fade(A,I=1e3){A?(this.sound.volume(this._volume),this.clearFade(),this.fadeTimerId=window.setTimeout(()=>{this.sound.fade(this._volume,0,I),this.clearFade()},A)):this.sound.fade(this._volume,0,I)}on(A,I,e){this.sound.on(A,I,e)}off(A,I,e){this.sound.off(A,I,e)}play(){this._status==="playing"||this.sound.playing()||(this._status==="paused"?(this.sound.seek()===0?this.replay():this.sound.play(),this._status="playing"):this._status==="stopped"&&(this.replay(),this._status="playing"))}pause(){this._status==="playing"&&(this.sound.pause(),this.clearFade(),this.clearDelay(),this._status="paused")}stop(){this.sound.stop(),this.loopsRemaining=this._loop,this.clearFade(),this.clearDelay(),this._status="stopped"}clearFade(){this.fadeTimerId&&(clearTimeout(this.fadeTimerId),delete this.fadeTimerId)}clearDelay(){this.delayTimerId&&(clearTimeout(this.delayTimerId),delete this.delayTimerId)}dispose(A=!1){this.off(),this.stop(),this.clearFade(),this.clearDelay()}},GX=class{constructor(){this.type="ShapePath",this.color=new Og,this.subPaths=[],this.currentPath=null}moveTo(g,A){return this.currentPath=new pc,this.subPaths.push(this.currentPath),this.currentPath.moveTo(g,A),this}lineTo(g,A){var I;return(I=this.currentPath)==null||I.lineTo(g,A),this}quadraticCurveTo(g,A,I,e){var i;return(i=this.currentPath)==null||i.quadraticCurveTo(g,A,I,e),this}bezierCurveTo(g,A,I,e,i,t){var C;return(C=this.currentPath)==null||C.bezierCurveTo(g,A,I,e,i,t),this}splineThru(g){var A;return(A=this.currentPath)==null||A.splineThru(g),this}toShapes(){let g={ORIGIN:0,DESTINATION:1,BETWEEN:2,LEFT:3,RIGHT:4,BEHIND:5,BEYOND:6},A={loc:g.ORIGIN,t:0};function I(E,n,h,l){let c=E.x,d=n.x,u=h.x,y=l.x,f=E.y,k=n.y,M=h.y,G=l.y,v=(y-u)*(f-M)-(G-M)*(c-u),N=(d-c)*(f-M)-(k-f)*(c-u),b=(G-M)*(d-c)-(y-u)*(k-f),O=v/b,H=N/b;if(b===0&&v!==0||O<=0||O>=1||H<0||H>1)return null;if(v===0&&b===0){for(let _=0;_<2;_++)if(e(_===0?h:l,E,n),A.loc===g.ORIGIN){let gA=_===0?h:l;return{x:gA.x,y:gA.y,t:A.t}}else if(A.loc===g.BETWEEN){let gA=+(c+A.t*(d-c)).toPrecision(10),CA=+(f+A.t*(k-f)).toPrecision(10);return{x:gA,y:CA,t:A.t}}return null}else{for(let CA=0;CA<2;CA++)if(e(CA===0?h:l,E,n),A.loc===g.ORIGIN){let AA=CA===0?h:l;return{x:AA.x,y:AA.y,t:A.t}}let _=+(c+O*(d-c)).toPrecision(10),gA=+(f+O*(k-f)).toPrecision(10);return{x:_,y:gA,t:O}}}function e(E,n,h){let l=h.x-n.x,c=h.y-n.y,d=E.x-n.x,u=E.y-n.y,y=l*u-d*c;if(E.x===n.x&&E.y===n.y){A.loc=g.ORIGIN,A.t=0;return}if(E.x===h.x&&E.y===h.y){A.loc=g.DESTINATION,A.t=1;return}if(y<-Number.EPSILON){A.loc=g.LEFT;return}if(y>Number.EPSILON){A.loc=g.RIGHT;return}if(l*d<0||c*u<0){A.loc=g.BEHIND;return}if(Math.sqrt(l*l+c*c)G.t<=M.t+Number.EPSILON&&G.t>=M.t-Number.EPSILON)===void 0&&(h.push(M),l.push(new sA(M.x,M.y)))}}return l}function t(E,n,h){let l=new sA;n.getCenter(l);let c=[];return h.forEach(d=>{d.boundingBox.containsPoint(l)&&i(E,d.points).forEach(u=>{c.push({identifier:d.identifier,isCW:d.isCW,point:u})})}),c.sort((d,u)=>d.point.x-u.point.x),c}function C(E,n,h,l,c){(c==null||c==="")&&(c="nonzero");let d=new sA;E.boundingBox.getCenter(d);let u=[new sA(h,d.y),new sA(l,d.y)],y=t(u,E.boundingBox,n);y.sort((N,b)=>N.point.x-b.point.x);let f=[],k=[];y.forEach(N=>{N.identifier===E.identifier?f.push(N):k.push(N)});let M=f[0].point.x,G=[],v=0;for(;v0&&G[G.length-1]===k[v].identifier?G.pop():G.push(k[v].identifier),v++;if(G.push(E.identifier),c==="evenodd"){let N=G.length%2===0,b=G[G.length-2];return{identifier:E.identifier,isHole:N,for:b}}else if(c==="nonzero"){let N=!0,b=null,O=null;for(let H=0;H{let n=E.getPoints(),h=-999999999,l=999999999,c=-999999999,d=999999999;for(let u=0;uh&&(h=y.y),y.yc&&(c=y.x),y.x=d&&(B=d-1),n.length&&s.push({curves:E.curves,points:n,isCW:IF.isClockWise(n),identifier:o++,boundingBox:new QF(new sA(d,l),new sA(c,h))})});let r=s.map(E=>{var n;return C(E,s,B,a,(n=this.userData)==null?void 0:n.style.fillRule)}),Q=[];return s.forEach(E=>{let n=r[E.identifier];if(n&&!n.isHole){let h=new yc;h.curves=E.curves,r.filter(l=>(l==null?void 0:l.isHole)&&l.for===E.identifier).forEach(l=>{if(l){let c=s[l.identifier],d=new pc;d.curves=c.curves,h.holes.push(d)}}),Q.push(h)}}),Q}},ZK,tm=new Promise(g=>{ZK=g}),Cm=!1,kl;function kX(){if(Cm)return;if(kl)return kl;async function g(){let A=await Zn(()=>Promise.resolve().then(()=>SCA),void 0,import.meta.url);ZK(A),Cm=!0}return kl=g(),kl}var MX=class{async load(g,A,I=()=>{}){let{load:e}=await tm;e(g,(i,t)=>{i||!t?I(i??"Something went wrong"):A(t)})}async parse(g){let{parse:A,Bidi:I}=await tm;try{let e=A(g),i=new I,t=C=>e.charToGlyphIndex(C.char);return i.registerModifier("glyphIndex",null,t),i.applyFeatures(e,e.defaultRenderOptions.features),{font:e,bidi:i}}catch(e){console.error(e)}}};async function mX(g){return await(await fetch(g)).arrayBuffer()}var UX=new MX;async function om(g){let A,I,e=!1;if(g.url?(A=await mX(g.url),I=g.url,e=g.url.startsWith("/")):g.data&&(A=g.data.buffer.slice(g.data.byteOffset,g.data.byteOffset+g.data.byteLength)),A){let i=await UX.parse(A);if(i)return{font:i.font,url:I,intercepted:e,arr:A,bidi:i.bidi}}}function NX(g,A){return A.state.glyphIndex===g||A.state.fina===g||A.state.medi===g||A.state.init===g}var FX=class{constructor(g){this._arrayBuffer=new ArrayBuffer(1),this._isLoaded=!1,this._intercepted=!1,this._isUserFont=g.isUserFont??!1,this._loadingPromise=om(g).then(A=>{A&&(this._arrayBuffer=A.arr,this._url=A.url,this.font=A.font,this._intercepted=A.intercepted,this._isLoaded=!0,this._bidi=A.bidi)})}update(g){this._isLoaded=!1,this._isUserFont=g.isUserFont??!1,this._loadingPromise=om(g).then(A=>{A&&(this._arrayBuffer=A.arr,this._url=A.url,this.font=A.font,this._intercepted=A.intercepted,this._isLoaded=!0,this._bidi=A.bidi)})}get url(){return this._url}get intercepted(){return this._intercepted}get isLoaded(){return this._isLoaded}get loadingPromise(){return this._loadingPromise}reverseLigaturesTable(g,A,I){if(!this._bidi)return[];let e=this._bidi;e.getTextGlyphs(A);let i=e.tokenizer.tokens,t=[],C=0,o=I.length===i.length;for(let B=0;BA.length&&(l=!0);t.push({char:s,index:a,replacements:n,replacementChars:Array.from(Q)}),C++}}return t}generateShapes(g,A){if(!this._isLoaded)return;let I=this.font,e=A.fontSize/this.unitsPerEm,i=A.fontSize*A.lineHeight,t=g.map(c=>this.getTextWidth(c,A)),C=A.width,o=this.getCharWidth(` `,A),B=A.horizontalAlign===1?o:0,a=this.computeSpaceWidthForLine(g,0,A),s=this.getLineInitialOffsetX(t[0],C,A.horizontalAlign,g[0],o),r=this.getLineInitialOffsetY(i,g.length,A.height,e,A.verticalAlign),Q=[],E=g.map(c=>[]),n=g.map(c=>[]),h;for(let c=0;c(I.glyphs.get(AA).advanceWidth??0)*e),_=H.reduce((AA,BA)=>AA+=BA,0),gA=H.map(AA=>AA/_),CA=s;for(let AA=0;AA(k("data-v-7b7b6f6a"),a=a(),x(),a),W={class:"common-layout"},A={class:"page"},C=e(()=>t("br",null,null,-1)),H={class:"image-text-card"},M=e(()=>t("img",{src:B,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),Z=e(()=>t("p",{class:"card-title"},"| Benben Miao (benben-miao)",-1)),z=e(()=>t("p",{class:"card-title"}," - Institution: Xiamen University (PhD Student) ",-1)),V=e(()=>t("p",{class:"card-title"}," - Research: Marine Zoology and Bioinformatics. ",-1)),O=e(()=>t("p",{class:"card-title"},[o(" - GitHub Profile: "),t("a",{href:"https://github.com/benben-miao/",target:"_blank",style:{color:"#008888","font-weight":"bold"}},"https://github.com/benben-miao/")],-1)),T=e(()=>t("p",{class:"card-title"},[o(" - ResearchGate: "),t("a",{href:"https://www.researchgate.net/profile/Benben-Miao/",target:"_blank",style:{color:"#008888","font-weight":"bold"}},"https://www.researchgate.net/profile/Benben-Miao/")],-1)),j=e(()=>t("p",{class:"card-title"},"| Software, Platform, R/Python Package",-1)),F=e(()=>t("p",{class:"card-title"},[o(" - Hiplot Cloud: "),t("a",{href:"https://hiplot.org",target:"_blank",style:{color:"#008888","font-weight":"bold"}},"https://hiplot.org")],-1)),P=e(()=>t("p",{class:"card-title"},[o(" - OmicsSuite Software: "),t("a",{href:"https://omicssuite.github.io",target:"_blank",style:{color:"#008888","font-weight":"bold"}},"https://omicssuite.github.io")],-1)),X=e(()=>t("p",{class:"card-title"},[o(" - TOmicsVis RPackage: "),t("a",{href:"https://benben-miao.github.io/TOmicsVis/",target:"_blank",style:{color:"#008888","font-weight":"bold"}},"https://benben-miao.github.io/TOmicsVis/")],-1)),G=e(()=>t("br",null,null,-1)),N=e(()=>t("p",{style:{"font-size":"1.2em","font-weight":"bold","text-align":"justify"}},[o(" Ben-ben Miao, Wei Dong, Yi-xin Gu, Zhao-fang Han, Xuan Luo, Cai-huan Ke, Wei-wei You, OmicsSuite: a customized and pipelined suite for analysis and visualization of multi-omics big data, "),t("i",null,"Horticulture Research"),o(", 2023;, uhad195, "),t("a",{href:"https://doi.org/10.1093/hr/uhad195",target:"_blank",style:{color:"#008888"}},"https://doi.org/10.1093/hr/uhad195"),o(". ")],-1)),I=e(()=>t("br",null,null,-1)),L=e(()=>t("p",{style:{"font-size":"1.2em","font-weight":"bold","text-align":"justify"}},[o(" Miao, Ben-Ben, Wei Dong, Zhao-Fang Han, Xuan Luo, Cai-Huan Ke, and Wei-Wei You. 2023. “TOmicsVis: An all-in-one transcriptomic analysis and visualization R package with Shinyapp interface.” "),t("i",null,"iMeta"),o(" e137. "),t("a",{href:"https://doi.org/10.1002/imt2.137",target:"_blank",style:{color:"#008888"}},"https://doi.org/10.1002/imt2.137")],-1)),Y=e(()=>t("br",null,null,-1)),D=e(()=>t("p",{style:{"font-size":"1.2em","font-weight":"bold","text-align":"justify"}},[o(" Jianfeng Li, Benben Miao, Shixiang Wang, Wei Dong, Houshi Xu, Chenchen Si, Wei Wang, Songqi Duan, Jiacheng Lou, Zhiwei Bao, Hailuan Zeng, Zengzeng Yang, Wenyan Cheng, Fei Zhao, Jianming Zeng, Xue-Song Liu, Renxie Wu, Yang Shen, Zhu Chen, Saijuan Chen, Mingjie Wang, Hiplot Consortium, Hiplot: a comprehensive and easy-to-use web service for boosting publication-ready biomedical data visualization, "),t("i",null,"Briefings in Bioinformatics"),o(", Volume 23, Issue 4, July 2022, bbac261, "),t("a",{href:"https://doi.org/10.1093/bib/bbac261",target:"_blank",style:{color:"#008888"}},"https://doi.org/10.1093/bib/bbac261")],-1)),J=e(()=>t("br",null,null,-1)),$=e(()=>t("p",{style:{"font-size":"1.2em","font-weight":"bold","text-align":"justify"}},[o(" Miao, B. Ben, Niu, S.F., Wu, R.X., Liang, Z.B., Zhai, Y., 2022. The MicroRNAs-Transcription Factors-mRNA Regulatory Network Plays an Important Role in Resistance to Cold Stress in the Pearl Gentian Grouper. "),t("i",null,"Front. Mar. Sci."),o(" 8, 1-19. "),t("a",{href:"https://doi.org/10.3389/fmars.2021.824533",target:"_blank",style:{color:"#008888"}},"https://doi.org/10.3389/fmars.2021.824533"),o(". ")],-1)),q=e(()=>t("br",null,null,-1)),K=e(()=>t("p",{style:{"font-size":"1.2em","font-weight":"bold","text-align":"justify"}},[o(" Miao, B. Ben, Niu, S.F., Wu, R.X., Liang, Z.B., Tang, B.G., Zhai, Y., Xu, X.Q., 2021. Gene expression profile and co-expression network of pearl gentian grouper under cold stress by integrating illumina and pacbio sequences. "),t("i",null,"Animals"),o(" 11, 1-25. "),t("a",{href:"https://doi.org/10.3390/ani11061745",target:"_blank",style:{color:"#008888"}},"https://doi.org/10.3390/ani11061745"),o(". ")],-1)),E=e(()=>t("br",null,null,-1)),Q={class:"image-text-card"},U=e(()=>t("img",{src:v,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),tt=e(()=>t("br",null,null,-1)),et=e(()=>t("p",{class:"card-title"},"OmicsSuite用户交流群",-1)),ot=e(()=>t("br",null,null,-1)),it=e(()=>t("br",null,null,-1)),nt=e(()=>t("p",{class:"card-content"}," OmicsSuite (https://omicssuite.github.io, https://github.com/OmicsSuite/), original name BioSciTools, a desktop program developed based on Java 11, aims to make new exploration and contribution to bioinformatics, and realize data analysis and visualization in the fields of sequence analysis, multimomics (transcriptomics, genomics, protein omics, metabonomics, single cell), microbiology, clinical, etc. ",-1));function st(a,at,lt,rt,ct,dt){const d=s("AppHeader"),p=s("el-header"),l=s("el-col"),r=s("el-row"),c=s("el-alert"),u=s("el-main"),_=s("AppFooter"),h=s("el-footer"),m=s("el-container"),g=s("el-backtop");return w(),S("div",W,[i(m,null,{default:n(()=>[i(p,null,{default:n(()=>[i(d)]),_:1}),i(u,null,{default:n(()=>[t("div",A,[C,t("div",H,[i(r,{gutter:20},{default:n(()=>[i(l,{span:24,sm:6,lg:6},{default:n(()=>[M]),_:1}),i(l,{span:24,sm:18,lg:18},{default:n(()=>[Z,z,V,O,T,j,F,P,X]),_:1})]),_:1})]),G,i(c,{title:"Citation: Software",type:"error",closable:!1},{default:n(()=>[N,I,L,Y,D]),_:1}),J,i(c,{title:"Citation: Study",type:"success",closable:!1},{default:n(()=>[$,q,K]),_:1}),E,t("div",Q,[i(r,{gutter:20},{default:n(()=>[i(l,{span:24,sm:8,lg:8},{default:n(()=>[U]),_:1}),i(l,{span:24,sm:16,lg:16},{default:n(()=>[tt,et,ot,it,nt]),_:1})]),_:1})])])]),_:1}),i(h,null,{default:n(()=>[i(_)]),_:1})]),_:1}),i(g,{right:50,bottom:100})])}const Ct=b(R,[["render",st],["__scopeId","data-v-7b7b6f6a"]]);export{Ct as default}; diff --git a/assets/AboutView-3a1c8fc9.js b/assets/AboutView-3a1c8fc9.js deleted file mode 100644 index 3705c2f..0000000 --- a/assets/AboutView-3a1c8fc9.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as b,A as f,a as y}from"./index-3ef5d3f0.js";import{ah as n,o as w,c as S,V as i,P as a,a as t,ax as B,ay as k,T as o}from"./@vue-248d724b.js";import"./vue-router-401d444e.js";import"./element-plus-ab7336d6.js";import"./lodash-es-21c98b27.js";import"./@vueuse-89fc2c2e.js";import"./@element-plus-0de4ac96.js";import"./@popperjs-c75af06c.js";import"./@ctrl-f8748455.js";import"./dayjs-5c34775c.js";import"./async-validator-dee29e8b.js";import"./memoize-one-297ddbcb.js";import"./escape-html-64fe8e16.js";import"./normalize-wheel-es-ed76fb12.js";import"./@floating-ui-72671fae.js";import"./echarts-9ae96183.js";import"./zrender-e9104294.js";const x="/assets/avatar-circle-633db0c8.png";const v={components:{AppHeader:f,AppFooter:y},data(){return{}},mounted(){},methods:{downloadOmicsSuite(){const s="https://sourceforge.net/projects/omicssuite-github-io/files/latest/download";window.open(s,"_blank")}}},e=s=>(B("data-v-92423be5"),s=s(),k(),s),R={class:"common-layout"},W=e(()=>t("br",null,null,-1)),A={class:"image-text-card"},C=e(()=>t("img",{src:x,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),H=e(()=>t("p",{class:"card-title"},"| Benben Miao (benben-miao)",-1)),M=e(()=>t("p",{class:"card-title"}," - Institution: Xiamen University (PhD Student) ",-1)),Z=e(()=>t("p",{class:"card-title"}," - Research: Marine Zoology and Bioinformatics. ",-1)),V=e(()=>t("p",{class:"card-title"},[o(" - GitHub Profile: "),t("a",{href:"https://github.com/benben-miao/",target:"_blank",style:{color:"#008888","font-weight":"bold"}},"https://github.com/benben-miao/")],-1)),z=e(()=>t("p",{class:"card-title"},[o(" - ResearchGate: "),t("a",{href:"https://www.researchgate.net/profile/Benben-Miao/",target:"_blank",style:{color:"#008888","font-weight":"bold"}},"https://www.researchgate.net/profile/Benben-Miao/")],-1)),F=e(()=>t("p",{class:"card-title"},"| Software, Platform, R/Python Package",-1)),P=e(()=>t("p",{class:"card-title"},[o(" - Hiplot Cloud: "),t("a",{href:"https://hiplot.org",target:"_blank",style:{color:"#008888","font-weight":"bold"}},"https://hiplot.org")],-1)),T=e(()=>t("p",{class:"card-title"},[o(" - OmicsSuite Software: "),t("a",{href:"https://omicssuite.github.io",target:"_blank",style:{color:"#008888","font-weight":"bold"}},"https://omicssuite.github.io")],-1)),X=e(()=>t("p",{class:"card-title"},[o(" - TOmicsVis RPackage: "),t("a",{href:"https://benben-miao.github.io/TOmicsVis/",target:"_blank",style:{color:"#008888","font-weight":"bold"}},"https://benben-miao.github.io/TOmicsVis/")],-1)),j=e(()=>t("br",null,null,-1)),N=e(()=>t("p",{style:{"font-size":"1.2em","font-weight":"bold","text-align":"justify"}},[o(" Ben-ben Miao, Wei Dong, Yi-xin Gu, Zhao-fang Han, Xuan Luo, Cai-huan Ke, Wei-wei You, OmicsSuite: a customized and pipelined suite for analysis and visualization of multi-omics big data, "),t("i",null,"Horticulture Research"),o(", 2023;, uhad195, "),t("a",{href:"https://doi.org/10.1093/hr/uhad195",target:"_blank",style:{color:"#008888"}},"https://doi.org/10.1093/hr/uhad195"),o(". ")],-1)),G=e(()=>t("br",null,null,-1)),I=e(()=>t("p",{style:{"font-size":"1.2em","font-weight":"bold","text-align":"justify"}},[o(" Miao, Ben-Ben, Wei Dong, Zhao-Fang Han, Xuan Luo, Cai-Huan Ke, and Wei-Wei You. 2023. “TOmicsVis: An all-in-one transcriptomic analysis and visualization R package with Shinyapp interface.” "),t("i",null,"iMeta"),o(" e137. "),t("a",{href:"https://doi.org/10.1002/imt2.137",target:"_blank",style:{color:"#008888"}},"https://doi.org/10.1002/imt2.137")],-1)),L=e(()=>t("br",null,null,-1)),O=e(()=>t("p",{style:{"font-size":"1.2em","font-weight":"bold","text-align":"justify"}},[o(" Jianfeng Li, Benben Miao, Shixiang Wang, Wei Dong, Houshi Xu, Chenchen Si, Wei Wang, Songqi Duan, Jiacheng Lou, Zhiwei Bao, Hailuan Zeng, Zengzeng Yang, Wenyan Cheng, Fei Zhao, Jianming Zeng, Xue-Song Liu, Renxie Wu, Yang Shen, Zhu Chen, Saijuan Chen, Mingjie Wang, Hiplot Consortium, Hiplot: a comprehensive and easy-to-use web service for boosting publication-ready biomedical data visualization, "),t("i",null,"Briefings in Bioinformatics"),o(", Volume 23, Issue 4, July 2022, bbac261, "),t("a",{href:"https://doi.org/10.1093/bib/bbac261",target:"_blank",style:{color:"#008888"}},"https://doi.org/10.1093/bib/bbac261")],-1)),Y=e(()=>t("br",null,null,-1)),D=e(()=>t("p",{style:{"font-size":"1.2em","font-weight":"bold","text-align":"justify"}},[o(" Miao, B. Ben, Niu, S.F., Wu, R.X., Liang, Z.B., Zhai, Y., 2022. The MicroRNAs-Transcription Factors-mRNA Regulatory Network Plays an Important Role in Resistance to Cold Stress in the Pearl Gentian Grouper. "),t("i",null,"Front. Mar. Sci."),o(" 8, 1-19. "),t("a",{href:"https://doi.org/10.3389/fmars.2021.824533",target:"_blank",style:{color:"#008888"}},"https://doi.org/10.3389/fmars.2021.824533"),o(". ")],-1)),J=e(()=>t("br",null,null,-1)),$=e(()=>t("p",{style:{"font-size":"1.2em","font-weight":"bold","text-align":"justify"}},[o(" Miao, B. Ben, Niu, S.F., Wu, R.X., Liang, Z.B., Tang, B.G., Zhai, Y., Xu, X.Q., 2021. Gene expression profile and co-expression network of pearl gentian grouper under cold stress by integrating illumina and pacbio sequences. "),t("i",null,"Animals"),o(" 11, 1-25. "),t("a",{href:"https://doi.org/10.3390/ani11061745",target:"_blank",style:{color:"#008888"}},"https://doi.org/10.3390/ani11061745"),o(". ")],-1)),q=e(()=>t("br",null,null,-1));function K(s,E,Q,U,tt,et){const c=n("AppHeader"),p=n("el-header"),l=n("el-col"),d=n("el-row"),r=n("el-alert"),u=n("el-main"),_=n("AppFooter"),h=n("el-footer"),g=n("el-container"),m=n("el-backtop");return w(),S("div",R,[i(g,null,{default:a(()=>[i(p,null,{default:a(()=>[i(c)]),_:1}),i(u,null,{default:a(()=>[t("div",null,[W,t("div",A,[i(d,{gutter:20},{default:a(()=>[i(l,{span:24,sm:6,lg:6},{default:a(()=>[C]),_:1}),i(l,{span:24,sm:18,lg:18},{default:a(()=>[H,M,Z,V,z,F,P,T,X]),_:1})]),_:1})]),j,i(r,{title:"Citation: Software",type:"error",closable:!1},{default:a(()=>[N,G,I,L,O]),_:1}),Y,i(r,{title:"Citation: Study",type:"success",closable:!1},{default:a(()=>[D,J,$]),_:1}),q])]),_:1}),i(h,null,{default:a(()=>[i(_)]),_:1})]),_:1}),i(m,{right:50,bottom:100})])}const yt=b(v,[["render",K],["__scopeId","data-v-92423be5"]]);export{yt as default}; diff --git a/assets/AboutView-9bebf3c4.js b/assets/AboutView-9bebf3c4.js deleted file mode 100644 index da64ac7..0000000 --- a/assets/AboutView-9bebf3c4.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as b,A as f,a as y}from"./index-25c25b6f.js";import{ah as n,o as w,c as S,V as i,P as a,a as t,ax as B,ay as k,T as o}from"./@vue-248d724b.js";import"./vue-router-401d444e.js";import"./element-plus-ab7336d6.js";import"./lodash-es-21c98b27.js";import"./@vueuse-89fc2c2e.js";import"./@element-plus-0de4ac96.js";import"./@popperjs-c75af06c.js";import"./@ctrl-f8748455.js";import"./dayjs-5c34775c.js";import"./async-validator-dee29e8b.js";import"./memoize-one-297ddbcb.js";import"./escape-html-64fe8e16.js";import"./normalize-wheel-es-ed76fb12.js";import"./@floating-ui-72671fae.js";import"./echarts-9ae96183.js";import"./zrender-e9104294.js";const x="/assets/avatar-circle-633db0c8.png";const v={components:{AppHeader:f,AppFooter:y},data(){return{}},mounted(){},methods:{downloadOmicsSuite(){const s="https://sourceforge.net/projects/omicssuite-github-io/files/latest/download";window.open(s,"_blank")}}},e=s=>(B("data-v-92423be5"),s=s(),k(),s),R={class:"common-layout"},W=e(()=>t("br",null,null,-1)),A={class:"image-text-card"},C=e(()=>t("img",{src:x,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),H=e(()=>t("p",{class:"card-title"},"| Benben Miao (benben-miao)",-1)),M=e(()=>t("p",{class:"card-title"}," - Institution: Xiamen University (PhD Student) ",-1)),Z=e(()=>t("p",{class:"card-title"}," - Research: Marine Zoology and Bioinformatics. ",-1)),V=e(()=>t("p",{class:"card-title"},[o(" - GitHub Profile: "),t("a",{href:"https://github.com/benben-miao/",target:"_blank",style:{color:"#008888","font-weight":"bold"}},"https://github.com/benben-miao/")],-1)),z=e(()=>t("p",{class:"card-title"},[o(" - ResearchGate: "),t("a",{href:"https://www.researchgate.net/profile/Benben-Miao/",target:"_blank",style:{color:"#008888","font-weight":"bold"}},"https://www.researchgate.net/profile/Benben-Miao/")],-1)),F=e(()=>t("p",{class:"card-title"},"| Software, Platform, R/Python Package",-1)),P=e(()=>t("p",{class:"card-title"},[o(" - Hiplot Cloud: "),t("a",{href:"https://hiplot.org",target:"_blank",style:{color:"#008888","font-weight":"bold"}},"https://hiplot.org")],-1)),T=e(()=>t("p",{class:"card-title"},[o(" - OmicsSuite Software: "),t("a",{href:"https://omicssuite.github.io",target:"_blank",style:{color:"#008888","font-weight":"bold"}},"https://omicssuite.github.io")],-1)),X=e(()=>t("p",{class:"card-title"},[o(" - TOmicsVis RPackage: "),t("a",{href:"https://benben-miao.github.io/TOmicsVis/",target:"_blank",style:{color:"#008888","font-weight":"bold"}},"https://benben-miao.github.io/TOmicsVis/")],-1)),j=e(()=>t("br",null,null,-1)),N=e(()=>t("p",{style:{"font-size":"1.2em","font-weight":"bold","text-align":"justify"}},[o(" Ben-ben Miao, Wei Dong, Yi-xin Gu, Zhao-fang Han, Xuan Luo, Cai-huan Ke, Wei-wei You, OmicsSuite: a customized and pipelined suite for analysis and visualization of multi-omics big data, "),t("i",null,"Horticulture Research"),o(", 2023;, uhad195, "),t("a",{href:"https://doi.org/10.1093/hr/uhad195",target:"_blank",style:{color:"#008888"}},"https://doi.org/10.1093/hr/uhad195"),o(". ")],-1)),G=e(()=>t("br",null,null,-1)),I=e(()=>t("p",{style:{"font-size":"1.2em","font-weight":"bold","text-align":"justify"}},[o(" Miao, Ben-Ben, Wei Dong, Zhao-Fang Han, Xuan Luo, Cai-Huan Ke, and Wei-Wei You. 2023. “TOmicsVis: An all-in-one transcriptomic analysis and visualization R package with Shinyapp interface.” "),t("i",null,"iMeta"),o(" e137. "),t("a",{href:"https://doi.org/10.1002/imt2.137",target:"_blank",style:{color:"#008888"}},"https://doi.org/10.1002/imt2.137")],-1)),L=e(()=>t("br",null,null,-1)),O=e(()=>t("p",{style:{"font-size":"1.2em","font-weight":"bold","text-align":"justify"}},[o(" Jianfeng Li, Benben Miao, Shixiang Wang, Wei Dong, Houshi Xu, Chenchen Si, Wei Wang, Songqi Duan, Jiacheng Lou, Zhiwei Bao, Hailuan Zeng, Zengzeng Yang, Wenyan Cheng, Fei Zhao, Jianming Zeng, Xue-Song Liu, Renxie Wu, Yang Shen, Zhu Chen, Saijuan Chen, Mingjie Wang, Hiplot Consortium, Hiplot: a comprehensive and easy-to-use web service for boosting publication-ready biomedical data visualization, "),t("i",null,"Briefings in Bioinformatics"),o(", Volume 23, Issue 4, July 2022, bbac261, "),t("a",{href:"https://doi.org/10.1093/bib/bbac261",target:"_blank",style:{color:"#008888"}},"https://doi.org/10.1093/bib/bbac261")],-1)),Y=e(()=>t("br",null,null,-1)),D=e(()=>t("p",{style:{"font-size":"1.2em","font-weight":"bold","text-align":"justify"}},[o(" Miao, B. Ben, Niu, S.F., Wu, R.X., Liang, Z.B., Zhai, Y., 2022. The MicroRNAs-Transcription Factors-mRNA Regulatory Network Plays an Important Role in Resistance to Cold Stress in the Pearl Gentian Grouper. "),t("i",null,"Front. Mar. Sci."),o(" 8, 1-19. "),t("a",{href:"https://doi.org/10.3389/fmars.2021.824533",target:"_blank",style:{color:"#008888"}},"https://doi.org/10.3389/fmars.2021.824533"),o(". ")],-1)),J=e(()=>t("br",null,null,-1)),$=e(()=>t("p",{style:{"font-size":"1.2em","font-weight":"bold","text-align":"justify"}},[o(" Miao, B. Ben, Niu, S.F., Wu, R.X., Liang, Z.B., Tang, B.G., Zhai, Y., Xu, X.Q., 2021. Gene expression profile and co-expression network of pearl gentian grouper under cold stress by integrating illumina and pacbio sequences. "),t("i",null,"Animals"),o(" 11, 1-25. "),t("a",{href:"https://doi.org/10.3390/ani11061745",target:"_blank",style:{color:"#008888"}},"https://doi.org/10.3390/ani11061745"),o(". ")],-1)),q=e(()=>t("br",null,null,-1));function K(s,E,Q,U,tt,et){const c=n("AppHeader"),p=n("el-header"),l=n("el-col"),d=n("el-row"),r=n("el-alert"),u=n("el-main"),_=n("AppFooter"),h=n("el-footer"),g=n("el-container"),m=n("el-backtop");return w(),S("div",R,[i(g,null,{default:a(()=>[i(p,null,{default:a(()=>[i(c)]),_:1}),i(u,null,{default:a(()=>[t("div",null,[W,t("div",A,[i(d,{gutter:20},{default:a(()=>[i(l,{span:24,sm:6,lg:6},{default:a(()=>[C]),_:1}),i(l,{span:24,sm:18,lg:18},{default:a(()=>[H,M,Z,V,z,F,P,T,X]),_:1})]),_:1})]),j,i(r,{title:"Citation: Software",type:"error",closable:!1},{default:a(()=>[N,G,I,L,O]),_:1}),Y,i(r,{title:"Citation: Study",type:"success",closable:!1},{default:a(()=>[D,J,$]),_:1}),q])]),_:1}),i(h,null,{default:a(()=>[i(_)]),_:1})]),_:1}),i(m,{right:50,bottom:100})])}const yt=b(v,[["render",K],["__scopeId","data-v-92423be5"]]);export{yt as default}; diff --git a/assets/AboutView-e5dc094b.js b/assets/AboutView-e5dc094b.js deleted file mode 100644 index 18c9d19..0000000 --- a/assets/AboutView-e5dc094b.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as b,A as f,a as y}from"./index-82148c11.js";import{ah as n,o as w,c as S,V as i,P as a,a as t,ax as B,ay as k,T as o}from"./@vue-248d724b.js";import"./vue-router-401d444e.js";import"./element-plus-ab7336d6.js";import"./lodash-es-21c98b27.js";import"./@vueuse-89fc2c2e.js";import"./@element-plus-0de4ac96.js";import"./@popperjs-c75af06c.js";import"./@ctrl-f8748455.js";import"./dayjs-5c34775c.js";import"./async-validator-dee29e8b.js";import"./memoize-one-297ddbcb.js";import"./escape-html-64fe8e16.js";import"./normalize-wheel-es-ed76fb12.js";import"./@floating-ui-72671fae.js";import"./echarts-9ae96183.js";import"./zrender-e9104294.js";const x="/assets/avatar-circle-633db0c8.png";const v={components:{AppHeader:f,AppFooter:y},data(){return{}},mounted(){},methods:{downloadOmicsSuite(){const s="https://sourceforge.net/projects/omicssuite-github-io/files/latest/download";window.open(s,"_blank")}}},e=s=>(B("data-v-92423be5"),s=s(),k(),s),R={class:"common-layout"},W=e(()=>t("br",null,null,-1)),A={class:"image-text-card"},C=e(()=>t("img",{src:x,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),H=e(()=>t("p",{class:"card-title"},"| Benben Miao (benben-miao)",-1)),M=e(()=>t("p",{class:"card-title"}," - Institution: Xiamen University (PhD Student) ",-1)),Z=e(()=>t("p",{class:"card-title"}," - Research: Marine Zoology and Bioinformatics. ",-1)),V=e(()=>t("p",{class:"card-title"},[o(" - GitHub Profile: "),t("a",{href:"https://github.com/benben-miao/",target:"_blank",style:{color:"#008888","font-weight":"bold"}},"https://github.com/benben-miao/")],-1)),z=e(()=>t("p",{class:"card-title"},[o(" - ResearchGate: "),t("a",{href:"https://www.researchgate.net/profile/Benben-Miao/",target:"_blank",style:{color:"#008888","font-weight":"bold"}},"https://www.researchgate.net/profile/Benben-Miao/")],-1)),F=e(()=>t("p",{class:"card-title"},"| Software, Platform, R/Python Package",-1)),P=e(()=>t("p",{class:"card-title"},[o(" - Hiplot Cloud: "),t("a",{href:"https://hiplot.org",target:"_blank",style:{color:"#008888","font-weight":"bold"}},"https://hiplot.org")],-1)),T=e(()=>t("p",{class:"card-title"},[o(" - OmicsSuite Software: "),t("a",{href:"https://omicssuite.github.io",target:"_blank",style:{color:"#008888","font-weight":"bold"}},"https://omicssuite.github.io")],-1)),X=e(()=>t("p",{class:"card-title"},[o(" - TOmicsVis RPackage: "),t("a",{href:"https://benben-miao.github.io/TOmicsVis/",target:"_blank",style:{color:"#008888","font-weight":"bold"}},"https://benben-miao.github.io/TOmicsVis/")],-1)),j=e(()=>t("br",null,null,-1)),N=e(()=>t("p",{style:{"font-size":"1.2em","font-weight":"bold","text-align":"justify"}},[o(" Ben-ben Miao, Wei Dong, Yi-xin Gu, Zhao-fang Han, Xuan Luo, Cai-huan Ke, Wei-wei You, OmicsSuite: a customized and pipelined suite for analysis and visualization of multi-omics big data, "),t("i",null,"Horticulture Research"),o(", 2023;, uhad195, "),t("a",{href:"https://doi.org/10.1093/hr/uhad195",target:"_blank",style:{color:"#008888"}},"https://doi.org/10.1093/hr/uhad195"),o(". ")],-1)),G=e(()=>t("br",null,null,-1)),I=e(()=>t("p",{style:{"font-size":"1.2em","font-weight":"bold","text-align":"justify"}},[o(" Miao, Ben-Ben, Wei Dong, Zhao-Fang Han, Xuan Luo, Cai-Huan Ke, and Wei-Wei You. 2023. “TOmicsVis: An all-in-one transcriptomic analysis and visualization R package with Shinyapp interface.” "),t("i",null,"iMeta"),o(" e137. "),t("a",{href:"https://doi.org/10.1002/imt2.137",target:"_blank",style:{color:"#008888"}},"https://doi.org/10.1002/imt2.137")],-1)),L=e(()=>t("br",null,null,-1)),O=e(()=>t("p",{style:{"font-size":"1.2em","font-weight":"bold","text-align":"justify"}},[o(" Jianfeng Li, Benben Miao, Shixiang Wang, Wei Dong, Houshi Xu, Chenchen Si, Wei Wang, Songqi Duan, Jiacheng Lou, Zhiwei Bao, Hailuan Zeng, Zengzeng Yang, Wenyan Cheng, Fei Zhao, Jianming Zeng, Xue-Song Liu, Renxie Wu, Yang Shen, Zhu Chen, Saijuan Chen, Mingjie Wang, Hiplot Consortium, Hiplot: a comprehensive and easy-to-use web service for boosting publication-ready biomedical data visualization, "),t("i",null,"Briefings in Bioinformatics"),o(", Volume 23, Issue 4, July 2022, bbac261, "),t("a",{href:"https://doi.org/10.1093/bib/bbac261",target:"_blank",style:{color:"#008888"}},"https://doi.org/10.1093/bib/bbac261")],-1)),Y=e(()=>t("br",null,null,-1)),D=e(()=>t("p",{style:{"font-size":"1.2em","font-weight":"bold","text-align":"justify"}},[o(" Miao, B. Ben, Niu, S.F., Wu, R.X., Liang, Z.B., Zhai, Y., 2022. The MicroRNAs-Transcription Factors-mRNA Regulatory Network Plays an Important Role in Resistance to Cold Stress in the Pearl Gentian Grouper. "),t("i",null,"Front. Mar. Sci."),o(" 8, 1-19. "),t("a",{href:"https://doi.org/10.3389/fmars.2021.824533",target:"_blank",style:{color:"#008888"}},"https://doi.org/10.3389/fmars.2021.824533"),o(". ")],-1)),J=e(()=>t("br",null,null,-1)),$=e(()=>t("p",{style:{"font-size":"1.2em","font-weight":"bold","text-align":"justify"}},[o(" Miao, B. Ben, Niu, S.F., Wu, R.X., Liang, Z.B., Tang, B.G., Zhai, Y., Xu, X.Q., 2021. Gene expression profile and co-expression network of pearl gentian grouper under cold stress by integrating illumina and pacbio sequences. "),t("i",null,"Animals"),o(" 11, 1-25. "),t("a",{href:"https://doi.org/10.3390/ani11061745",target:"_blank",style:{color:"#008888"}},"https://doi.org/10.3390/ani11061745"),o(". ")],-1)),q=e(()=>t("br",null,null,-1));function K(s,E,Q,U,tt,et){const c=n("AppHeader"),p=n("el-header"),l=n("el-col"),d=n("el-row"),r=n("el-alert"),u=n("el-main"),_=n("AppFooter"),h=n("el-footer"),g=n("el-container"),m=n("el-backtop");return w(),S("div",R,[i(g,null,{default:a(()=>[i(p,null,{default:a(()=>[i(c)]),_:1}),i(u,null,{default:a(()=>[t("div",null,[W,t("div",A,[i(d,{gutter:20},{default:a(()=>[i(l,{span:24,sm:6,lg:6},{default:a(()=>[C]),_:1}),i(l,{span:24,sm:18,lg:18},{default:a(()=>[H,M,Z,V,z,F,P,T,X]),_:1})]),_:1})]),j,i(r,{title:"Citation: Software",type:"error",closable:!1},{default:a(()=>[N,G,I,L,O]),_:1}),Y,i(r,{title:"Citation: Study",type:"success",closable:!1},{default:a(()=>[D,J,$]),_:1}),q])]),_:1}),i(h,null,{default:a(()=>[i(_)]),_:1})]),_:1}),i(m,{right:50,bottom:100})])}const yt=b(v,[["render",K],["__scopeId","data-v-92423be5"]]);export{yt as default}; diff --git a/assets/AboutView-2fe9222f.js b/assets/AboutView-fe9d083c.js similarity index 52% rename from assets/AboutView-2fe9222f.js rename to assets/AboutView-fe9d083c.js index 4798cd4..71771f3 100644 --- a/assets/AboutView-2fe9222f.js +++ b/assets/AboutView-fe9d083c.js @@ -1 +1 @@ -import{_ as f,A as b,a as y}from"./index-d094e413.js";import{ah as n,o as w,c as S,V as i,P as a,a as t,ax as B,ay as k,T as o}from"./@vue-248d724b.js";import"./@splinetool-99227827.js";import"./vue-router-401d444e.js";import"./element-plus-ab7336d6.js";import"./lodash-es-21c98b27.js";import"./@vueuse-89fc2c2e.js";import"./@element-plus-0de4ac96.js";import"./@popperjs-c75af06c.js";import"./@ctrl-f8748455.js";import"./dayjs-5c34775c.js";import"./async-validator-dee29e8b.js";import"./memoize-one-297ddbcb.js";import"./escape-html-64fe8e16.js";import"./normalize-wheel-es-ed76fb12.js";import"./@floating-ui-72671fae.js";import"./echarts-9ae96183.js";import"./zrender-e9104294.js";const x="/assets/avatar-circle-633db0c8.png";const v={components:{AppHeader:b,AppFooter:y},data(){return{}},mounted(){},methods:{downloadOmicsSuite(){const s="https://sourceforge.net/projects/omicssuite-github-io/files/latest/download";window.open(s,"_blank")}}},e=s=>(B("data-v-41f54a0f"),s=s(),k(),s),R={class:"common-layout"},W={class:"page"},A=e(()=>t("br",null,null,-1)),C={class:"image-text-card"},H=e(()=>t("img",{src:x,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),M=e(()=>t("p",{class:"card-title"},"| Benben Miao (benben-miao)",-1)),Z=e(()=>t("p",{class:"card-title"}," - Institution: Xiamen University (PhD Student) ",-1)),V=e(()=>t("p",{class:"card-title"}," - Research: Marine Zoology and Bioinformatics. ",-1)),z=e(()=>t("p",{class:"card-title"},[o(" - GitHub Profile: "),t("a",{href:"https://github.com/benben-miao/",target:"_blank",style:{color:"#008888","font-weight":"bold"}},"https://github.com/benben-miao/")],-1)),F=e(()=>t("p",{class:"card-title"},[o(" - ResearchGate: "),t("a",{href:"https://www.researchgate.net/profile/Benben-Miao/",target:"_blank",style:{color:"#008888","font-weight":"bold"}},"https://www.researchgate.net/profile/Benben-Miao/")],-1)),P=e(()=>t("p",{class:"card-title"},"| Software, Platform, R/Python Package",-1)),T=e(()=>t("p",{class:"card-title"},[o(" - Hiplot Cloud: "),t("a",{href:"https://hiplot.org",target:"_blank",style:{color:"#008888","font-weight":"bold"}},"https://hiplot.org")],-1)),X=e(()=>t("p",{class:"card-title"},[o(" - OmicsSuite Software: "),t("a",{href:"https://omicssuite.github.io",target:"_blank",style:{color:"#008888","font-weight":"bold"}},"https://omicssuite.github.io")],-1)),j=e(()=>t("p",{class:"card-title"},[o(" - TOmicsVis RPackage: "),t("a",{href:"https://benben-miao.github.io/TOmicsVis/",target:"_blank",style:{color:"#008888","font-weight":"bold"}},"https://benben-miao.github.io/TOmicsVis/")],-1)),N=e(()=>t("br",null,null,-1)),G=e(()=>t("p",{style:{"font-size":"1.2em","font-weight":"bold","text-align":"justify"}},[o(" Ben-ben Miao, Wei Dong, Yi-xin Gu, Zhao-fang Han, Xuan Luo, Cai-huan Ke, Wei-wei You, OmicsSuite: a customized and pipelined suite for analysis and visualization of multi-omics big data, "),t("i",null,"Horticulture Research"),o(", 2023;, uhad195, "),t("a",{href:"https://doi.org/10.1093/hr/uhad195",target:"_blank",style:{color:"#008888"}},"https://doi.org/10.1093/hr/uhad195"),o(". ")],-1)),I=e(()=>t("br",null,null,-1)),L=e(()=>t("p",{style:{"font-size":"1.2em","font-weight":"bold","text-align":"justify"}},[o(" Miao, Ben-Ben, Wei Dong, Zhao-Fang Han, Xuan Luo, Cai-Huan Ke, and Wei-Wei You. 2023. “TOmicsVis: An all-in-one transcriptomic analysis and visualization R package with Shinyapp interface.” "),t("i",null,"iMeta"),o(" e137. "),t("a",{href:"https://doi.org/10.1002/imt2.137",target:"_blank",style:{color:"#008888"}},"https://doi.org/10.1002/imt2.137")],-1)),O=e(()=>t("br",null,null,-1)),Y=e(()=>t("p",{style:{"font-size":"1.2em","font-weight":"bold","text-align":"justify"}},[o(" Jianfeng Li, Benben Miao, Shixiang Wang, Wei Dong, Houshi Xu, Chenchen Si, Wei Wang, Songqi Duan, Jiacheng Lou, Zhiwei Bao, Hailuan Zeng, Zengzeng Yang, Wenyan Cheng, Fei Zhao, Jianming Zeng, Xue-Song Liu, Renxie Wu, Yang Shen, Zhu Chen, Saijuan Chen, Mingjie Wang, Hiplot Consortium, Hiplot: a comprehensive and easy-to-use web service for boosting publication-ready biomedical data visualization, "),t("i",null,"Briefings in Bioinformatics"),o(", Volume 23, Issue 4, July 2022, bbac261, "),t("a",{href:"https://doi.org/10.1093/bib/bbac261",target:"_blank",style:{color:"#008888"}},"https://doi.org/10.1093/bib/bbac261")],-1)),D=e(()=>t("br",null,null,-1)),J=e(()=>t("p",{style:{"font-size":"1.2em","font-weight":"bold","text-align":"justify"}},[o(" Miao, B. Ben, Niu, S.F., Wu, R.X., Liang, Z.B., Zhai, Y., 2022. The MicroRNAs-Transcription Factors-mRNA Regulatory Network Plays an Important Role in Resistance to Cold Stress in the Pearl Gentian Grouper. "),t("i",null,"Front. Mar. Sci."),o(" 8, 1-19. "),t("a",{href:"https://doi.org/10.3389/fmars.2021.824533",target:"_blank",style:{color:"#008888"}},"https://doi.org/10.3389/fmars.2021.824533"),o(". ")],-1)),$=e(()=>t("br",null,null,-1)),q=e(()=>t("p",{style:{"font-size":"1.2em","font-weight":"bold","text-align":"justify"}},[o(" Miao, B. Ben, Niu, S.F., Wu, R.X., Liang, Z.B., Tang, B.G., Zhai, Y., Xu, X.Q., 2021. Gene expression profile and co-expression network of pearl gentian grouper under cold stress by integrating illumina and pacbio sequences. "),t("i",null,"Animals"),o(" 11, 1-25. "),t("a",{href:"https://doi.org/10.3390/ani11061745",target:"_blank",style:{color:"#008888"}},"https://doi.org/10.3390/ani11061745"),o(". ")],-1)),K=e(()=>t("br",null,null,-1));function E(s,Q,U,tt,et,ot){const c=n("AppHeader"),p=n("el-header"),l=n("el-col"),d=n("el-row"),r=n("el-alert"),_=n("el-main"),u=n("AppFooter"),h=n("el-footer"),g=n("el-container"),m=n("el-backtop");return w(),S("div",R,[i(g,null,{default:a(()=>[i(p,null,{default:a(()=>[i(c)]),_:1}),i(_,null,{default:a(()=>[t("div",W,[A,t("div",C,[i(d,{gutter:20},{default:a(()=>[i(l,{span:24,sm:6,lg:6},{default:a(()=>[H]),_:1}),i(l,{span:24,sm:18,lg:18},{default:a(()=>[M,Z,V,z,F,P,T,X,j]),_:1})]),_:1})]),N,i(r,{title:"Citation: Software",type:"error",closable:!1},{default:a(()=>[G,I,L,O,Y]),_:1}),D,i(r,{title:"Citation: Study",type:"success",closable:!1},{default:a(()=>[J,$,q]),_:1}),K])]),_:1}),i(h,null,{default:a(()=>[i(u)]),_:1})]),_:1}),i(m,{right:50,bottom:100})])}const St=f(v,[["render",E],["__scopeId","data-v-41f54a0f"]]);export{St as default}; +import{_ as b,A as f,a as y}from"./index-387fbfa5.js";import{ah as a,o as w,c as S,V as i,P as n,a as t,ax as k,ay as x,T as o}from"./@vue-248d724b.js";import"./@splinetool-ead863f8.js";import"./vue-router-401d444e.js";import"./element-plus-bab1278a.js";import"./lodash-es-21c98b27.js";import"./@vueuse-89fc2c2e.js";import"./@element-plus-0de4ac96.js";import"./@popperjs-c75af06c.js";import"./@ctrl-f8748455.js";import"./dayjs-5c34775c.js";import"./async-validator-dee29e8b.js";import"./memoize-one-297ddbcb.js";import"./escape-html-64fe8e16.js";import"./normalize-wheel-es-ed76fb12.js";import"./@floating-ui-72671fae.js";import"./echarts-9ae96183.js";import"./zrender-e9104294.js";const B=""+new URL("avatar-circle.png",import.meta.url).href,v=""+new URL("Group1.jpg",import.meta.url).href;const R={components:{AppHeader:f,AppFooter:y},data(){return{}},mounted(){},methods:{downloadOmicsSuite(){const s="https://sourceforge.net/projects/omicssuite-github-io/files/latest/download";window.open(s,"_blank")}}},e=s=>(k("data-v-7b7b6f6a"),s=s(),x(),s),W={class:"common-layout"},A={class:"page"},C=e(()=>t("br",null,null,-1)),H={class:"image-text-card"},M=e(()=>t("img",{src:B,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),Z=e(()=>t("p",{class:"card-title"},"| Benben Miao (benben-miao)",-1)),z=e(()=>t("p",{class:"card-title"}," - Institution: Xiamen University (PhD Student) ",-1)),V=e(()=>t("p",{class:"card-title"}," - Research: Marine Zoology and Bioinformatics. ",-1)),O=e(()=>t("p",{class:"card-title"},[o(" - GitHub Profile: "),t("a",{href:"https://github.com/benben-miao/",target:"_blank",style:{color:"#008888","font-weight":"bold"}},"https://github.com/benben-miao/")],-1)),T=e(()=>t("p",{class:"card-title"},[o(" - ResearchGate: "),t("a",{href:"https://www.researchgate.net/profile/Benben-Miao/",target:"_blank",style:{color:"#008888","font-weight":"bold"}},"https://www.researchgate.net/profile/Benben-Miao/")],-1)),j=e(()=>t("p",{class:"card-title"},"| Software, Platform, R/Python Package",-1)),F=e(()=>t("p",{class:"card-title"},[o(" - Hiplot Cloud: "),t("a",{href:"https://hiplot.org",target:"_blank",style:{color:"#008888","font-weight":"bold"}},"https://hiplot.org")],-1)),L=e(()=>t("p",{class:"card-title"},[o(" - OmicsSuite Software: "),t("a",{href:"https://omicssuite.github.io",target:"_blank",style:{color:"#008888","font-weight":"bold"}},"https://omicssuite.github.io")],-1)),P=e(()=>t("p",{class:"card-title"},[o(" - TOmicsVis RPackage: "),t("a",{href:"https://benben-miao.github.io/TOmicsVis/",target:"_blank",style:{color:"#008888","font-weight":"bold"}},"https://benben-miao.github.io/TOmicsVis/")],-1)),X=e(()=>t("br",null,null,-1)),G=e(()=>t("p",{style:{"font-size":"1.2em","font-weight":"bold","text-align":"justify"}},[o(" Ben-ben Miao, Wei Dong, Yi-xin Gu, Zhao-fang Han, Xuan Luo, Cai-huan Ke, Wei-wei You, OmicsSuite: a customized and pipelined suite for analysis and visualization of multi-omics big data, "),t("i",null,"Horticulture Research"),o(", 2023;, uhad195, "),t("a",{href:"https://doi.org/10.1093/hr/uhad195",target:"_blank",style:{color:"#008888"}},"https://doi.org/10.1093/hr/uhad195"),o(". ")],-1)),N=e(()=>t("br",null,null,-1)),I=e(()=>t("p",{style:{"font-size":"1.2em","font-weight":"bold","text-align":"justify"}},[o(" Miao, Ben-Ben, Wei Dong, Zhao-Fang Han, Xuan Luo, Cai-Huan Ke, and Wei-Wei You. 2023. “TOmicsVis: An all-in-one transcriptomic analysis and visualization R package with Shinyapp interface.” "),t("i",null,"iMeta"),o(" e137. "),t("a",{href:"https://doi.org/10.1002/imt2.137",target:"_blank",style:{color:"#008888"}},"https://doi.org/10.1002/imt2.137")],-1)),Y=e(()=>t("br",null,null,-1)),D=e(()=>t("p",{style:{"font-size":"1.2em","font-weight":"bold","text-align":"justify"}},[o(" Jianfeng Li, Benben Miao, Shixiang Wang, Wei Dong, Houshi Xu, Chenchen Si, Wei Wang, Songqi Duan, Jiacheng Lou, Zhiwei Bao, Hailuan Zeng, Zengzeng Yang, Wenyan Cheng, Fei Zhao, Jianming Zeng, Xue-Song Liu, Renxie Wu, Yang Shen, Zhu Chen, Saijuan Chen, Mingjie Wang, Hiplot Consortium, Hiplot: a comprehensive and easy-to-use web service for boosting publication-ready biomedical data visualization, "),t("i",null,"Briefings in Bioinformatics"),o(", Volume 23, Issue 4, July 2022, bbac261, "),t("a",{href:"https://doi.org/10.1093/bib/bbac261",target:"_blank",style:{color:"#008888"}},"https://doi.org/10.1093/bib/bbac261")],-1)),J=e(()=>t("br",null,null,-1)),$=e(()=>t("p",{style:{"font-size":"1.2em","font-weight":"bold","text-align":"justify"}},[o(" Miao, B. Ben, Niu, S.F., Wu, R.X., Liang, Z.B., Zhai, Y., 2022. The MicroRNAs-Transcription Factors-mRNA Regulatory Network Plays an Important Role in Resistance to Cold Stress in the Pearl Gentian Grouper. "),t("i",null,"Front. Mar. Sci."),o(" 8, 1-19. "),t("a",{href:"https://doi.org/10.3389/fmars.2021.824533",target:"_blank",style:{color:"#008888"}},"https://doi.org/10.3389/fmars.2021.824533"),o(". ")],-1)),q=e(()=>t("br",null,null,-1)),U=e(()=>t("p",{style:{"font-size":"1.2em","font-weight":"bold","text-align":"justify"}},[o(" Miao, B. Ben, Niu, S.F., Wu, R.X., Liang, Z.B., Tang, B.G., Zhai, Y., Xu, X.Q., 2021. Gene expression profile and co-expression network of pearl gentian grouper under cold stress by integrating illumina and pacbio sequences. "),t("i",null,"Animals"),o(" 11, 1-25. "),t("a",{href:"https://doi.org/10.3390/ani11061745",target:"_blank",style:{color:"#008888"}},"https://doi.org/10.3390/ani11061745"),o(". ")],-1)),K=e(()=>t("br",null,null,-1)),E={class:"image-text-card"},Q=e(()=>t("img",{src:v,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),tt=e(()=>t("br",null,null,-1)),et=e(()=>t("p",{class:"card-title"},"OmicsSuite用户交流群",-1)),ot=e(()=>t("br",null,null,-1)),it=e(()=>t("br",null,null,-1)),nt=e(()=>t("p",{class:"card-content"}," OmicsSuite (https://omicssuite.github.io, https://github.com/OmicsSuite/), original name BioSciTools, a desktop program developed based on Java 11, aims to make new exploration and contribution to bioinformatics, and realize data analysis and visualization in the fields of sequence analysis, multimomics (transcriptomics, genomics, protein omics, metabonomics, single cell), microbiology, clinical, etc. ",-1));function at(s,st,lt,rt,ct,dt){const d=a("AppHeader"),p=a("el-header"),l=a("el-col"),r=a("el-row"),c=a("el-alert"),u=a("el-main"),_=a("AppFooter"),h=a("el-footer"),m=a("el-container"),g=a("el-backtop");return w(),S("div",W,[i(m,null,{default:n(()=>[i(p,null,{default:n(()=>[i(d)]),_:1}),i(u,null,{default:n(()=>[t("div",A,[C,t("div",H,[i(r,{gutter:20},{default:n(()=>[i(l,{span:24,sm:6,lg:6},{default:n(()=>[M]),_:1}),i(l,{span:24,sm:18,lg:18},{default:n(()=>[Z,z,V,O,T,j,F,L,P]),_:1})]),_:1})]),X,i(c,{title:"Citation: Software",type:"error",closable:!1},{default:n(()=>[G,N,I,Y,D]),_:1}),J,i(c,{title:"Citation: Study",type:"success",closable:!1},{default:n(()=>[$,q,U]),_:1}),K,t("div",E,[i(r,{gutter:20},{default:n(()=>[i(l,{span:24,sm:8,lg:8},{default:n(()=>[Q]),_:1}),i(l,{span:24,sm:16,lg:16},{default:n(()=>[tt,et,ot,it,nt]),_:1})]),_:1})])])]),_:1}),i(h,null,{default:n(()=>[i(_)]),_:1})]),_:1}),i(g,{right:50,bottom:100})])}const Ct=b(R,[["render",at],["__scopeId","data-v-7b7b6f6a"]]);export{Ct as default}; diff --git a/assets/AboutView-cad170f7.css b/assets/AboutView.css similarity index 100% rename from assets/AboutView-cad170f7.css rename to assets/AboutView.css diff --git a/assets/DNA-Helix-33f7700d.jpg b/assets/DNA-Helix.jpg similarity index 100% rename from assets/DNA-Helix-33f7700d.jpg rename to assets/DNA-Helix.jpg diff --git a/assets/DesignView-436d4ee3.js b/assets/DesignView-436d4ee3.js deleted file mode 100644 index 4851a50..0000000 --- a/assets/DesignView-436d4ee3.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as g,A as y,a as k}from"./index-25c25b6f.js";import{ah as n,o as w,c as v,V as o,P as s,a as e,ax as x,ay as S}from"./@vue-248d724b.js";import"./vue-router-401d444e.js";import"./element-plus-ab7336d6.js";import"./lodash-es-21c98b27.js";import"./@vueuse-89fc2c2e.js";import"./@element-plus-0de4ac96.js";import"./@popperjs-c75af06c.js";import"./@ctrl-f8748455.js";import"./dayjs-5c34775c.js";import"./async-validator-dee29e8b.js";import"./memoize-one-297ddbcb.js";import"./escape-html-64fe8e16.js";import"./normalize-wheel-es-ed76fb12.js";import"./@floating-ui-72671fae.js";import"./echarts-9ae96183.js";import"./zrender-e9104294.js";const O="/assets/OmicsSuite-UI-3fd3f0a7.png",z="/assets/OmicsSuite-3D-d5ab85b2.png",A="/assets/OmicsSuite-Desktop-c0c08ee7.png",D="/assets/OmicsSuite-Apps-f77d1a25.png";const I={components:{AppHeader:y,AppFooter:k},data(){return{}},mounted(){},methods:{downloadOmicsSuite(){const i="https://sourceforge.net/projects/omicssuite-github-io/files/latest/download";window.open(i,"_blank")}}},t=i=>(x("data-v-aacde1a3"),i=i(),S(),i),T={class:"common-layout"},C=t(()=>e("br",null,null,-1)),V={class:"image-text-card"},F=t(()=>e("iframe",{src:"https://my.spline.design/chineseknot-3348c91bf16823549914fc172d72d7e8/",style:{width:"100%",height:"450px","border-width":"0px","border-radius":"10px"}},null,-1)),$=t(()=>e("br",null,null,-1)),B=t(()=>e("p",{class:"card-title"},"Chinese Knot",-1)),H=t(()=>e("br",null,null,-1)),U=t(()=>e("span",{style:{"font-size":"1.2em","font-weight":"bold"}},"Chinese Knot",-1)),K=t(()=>e("br",null,null,-1)),N=t(()=>e("br",null,null,-1)),j=t(()=>e("p",{class:"card-content"}," The OmicsSuite desktop interface is placed on the desk in the form of a large screen. The notebooks, books, earphones, vases and flowers on the desktop make the office environment very advanced and comfortable. ",-1)),E=t(()=>e("br",null,null,-1)),P={class:"image-text-card"},q=t(()=>e("img",{src:O,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),G=t(()=>e("br",null,null,-1)),J=t(()=>e("p",{class:"card-title"},"OmicsSuite UI",-1)),L=t(()=>e("br",null,null,-1)),M=t(()=>e("span",{style:{"font-size":"1.2em","font-weight":"bold"}},"OmicsSuite UI",-1)),Q=t(()=>e("br",null,null,-1)),R=t(()=>e("br",null,null,-1)),W=t(()=>e("p",{class:"card-content"}," The OmicsSuite desktop interface is placed on the desk in the form of a large screen. The notebooks, books, earphones, vases and flowers on the desktop make the office environment very advanced and comfortable. ",-1)),X=t(()=>e("br",null,null,-1)),Y={class:"image-text-card"},Z=t(()=>e("img",{src:z,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),ee=t(()=>e("br",null,null,-1)),te=t(()=>e("p",{class:"card-title"},"OmicsSuite 3D Title",-1)),oe=t(()=>e("br",null,null,-1)),se=t(()=>e("span",{style:{"font-size":"1.2em","font-weight":"bold"}},"OmicsSuite 3D",-1)),ne=t(()=>e("br",null,null,-1)),le=t(()=>e("br",null,null,-1)),ie=t(()=>e("p",{class:"card-content"}," The OmicsSuite 3D title is directly in front, and simple three-dimensional elements such as spheres, cubes, swimming rings, and cones float around the title, making the picture lively. ",-1)),ae=t(()=>e("br",null,null,-1)),ce={class:"image-text-card"},re=t(()=>e("img",{src:A,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),de=t(()=>e("br",null,null,-1)),_e=t(()=>e("p",{class:"card-title"},"OmicsSuite Desktop",-1)),pe=t(()=>e("br",null,null,-1)),ue=t(()=>e("span",{style:{"font-size":"1.2em","font-weight":"bold"}},"OmicsSuite Desktop",-1)),fe=t(()=>e("br",null,null,-1)),he=t(()=>e("br",null,null,-1)),me=t(()=>e("p",{class:"card-content"}," OmicsSuite software starts from the notebook and displays the user interface. From design to development, it reflects the developer's meticulousness and sufficient energy. ",-1)),be=t(()=>e("br",null,null,-1)),ge={class:"image-text-card"},ye=t(()=>e("img",{src:D,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),ke=t(()=>e("br",null,null,-1)),we=t(()=>e("p",{class:"card-title"},"OmicsSuite Application",-1)),ve=t(()=>e("br",null,null,-1)),xe=t(()=>e("span",{style:{"font-size":"1.2em","font-weight":"bold"}},"OmicsSuite Application",-1)),Se=t(()=>e("br",null,null,-1)),Oe=t(()=>e("br",null,null,-1)),ze=t(()=>e("p",{class:"card-content"}," The OmicsSuite sub-application is used for the logical steps of data analytics, and the startup will switch to a new operation interface, and the data input to the visual results is very smooth. ",-1)),Ae=t(()=>e("br",null,null,-1));function De(i,Ie,Te,Ce,Ve,Fe){const _=n("AppHeader"),p=n("el-header"),l=n("el-col"),a=n("Compass"),c=n("el-icon"),r=n("el-button"),d=n("el-row"),u=n("el-main"),f=n("AppFooter"),h=n("el-footer"),m=n("el-container"),b=n("el-backtop");return w(),v("div",T,[o(m,null,{default:s(()=>[o(p,null,{default:s(()=>[o(_)]),_:1}),o(u,null,{default:s(()=>[e("div",null,[C,e("div",V,[o(d,{gutter:20},{default:s(()=>[o(l,{span:24,sm:16,lg:16},{default:s(()=>[F]),_:1}),o(l,{span:24,sm:8,lg:8},{default:s(()=>[$,B,H,o(r,{tag:"a",href:"https://my.spline.design/chineseknot-3348c91bf16823549914fc172d72d7e8/",target:"_blank",rel:"noopener noreferrer",style:{"background-color":"#ff2040",color:"#ffffff",height:"45px"}},{default:s(()=>[o(c,{style:{"font-size":"1.5em"}},{default:s(()=>[o(a)]),_:1}),U]),_:1}),K,N,j]),_:1})]),_:1})]),E,e("div",P,[o(d,{gutter:20},{default:s(()=>[o(l,{span:24,sm:16,lg:16},{default:s(()=>[q]),_:1}),o(l,{span:24,sm:8,lg:8},{default:s(()=>[G,J,L,o(r,{tag:"a",href:"https://my.spline.design/bioscitoolsui-df7e0cf9cd7e90e07bb40b6e46a3010a/",target:"_blank",rel:"noopener noreferrer",style:{"background-color":"#ff2040",color:"#ffffff",height:"45px"}},{default:s(()=>[o(c,{style:{"font-size":"1.5em"}},{default:s(()=>[o(a)]),_:1}),M]),_:1}),Q,R,W]),_:1})]),_:1})]),X,e("div",Y,[o(d,{gutter:20},{default:s(()=>[o(l,{span:24,sm:16,lg:16},{default:s(()=>[Z]),_:1}),o(l,{span:24,sm:8,lg:8},{default:s(()=>[ee,te,oe,o(r,{tag:"a",href:"https://my.spline.design/benbenmiaocopy-991ffd2823326ce617ef4346945c6b09/",target:"_blank",rel:"noopener noreferrer",style:{"background-color":"#ff2040",color:"#ffffff",height:"45px"}},{default:s(()=>[o(c,{style:{"font-size":"1.5em"}},{default:s(()=>[o(a)]),_:1}),se]),_:1}),ne,le,ie]),_:1})]),_:1})]),ae,e("div",ce,[o(d,{gutter:20},{default:s(()=>[o(l,{span:24,sm:16,lg:16},{default:s(()=>[re]),_:1}),o(l,{span:24,sm:8,lg:8},{default:s(()=>[de,_e,pe,o(r,{tag:"a",href:"https://my.spline.design/macbookprocopy-983bb9afaa57601ef10d4292f1d6c4d2/",target:"_blank",rel:"noopener noreferrer",style:{"background-color":"#ff2040",color:"#ffffff",height:"45px"}},{default:s(()=>[o(c,{style:{"font-size":"1.5em"}},{default:s(()=>[o(a)]),_:1}),ue]),_:1}),fe,he,me]),_:1})]),_:1})]),be,e("div",ge,[o(d,{gutter:20},{default:s(()=>[o(l,{span:24,sm:16,lg:16},{default:s(()=>[ye]),_:1}),o(l,{span:24,sm:8,lg:8},{default:s(()=>[ke,we,ve,o(r,{tag:"a",href:"https://my.spline.design/bioscitoolsapp-754a2c6048667ee6b3c55e3bdd638dc9/",target:"_blank",rel:"noopener noreferrer",style:{"background-color":"#ff2040",color:"#ffffff",height:"45px"}},{default:s(()=>[o(c,{style:{"font-size":"1.5em"}},{default:s(()=>[o(a)]),_:1}),xe]),_:1}),Se,Oe,ze]),_:1})]),_:1})]),Ae])]),_:1}),o(h,null,{default:s(()=>[o(f)]),_:1})]),_:1}),o(b,{right:50,bottom:100})])}const Xe=g(I,[["render",De],["__scopeId","data-v-aacde1a3"]]);export{Xe as default}; diff --git a/assets/DesignView-6052ac0b.js b/assets/DesignView-6052ac0b.js deleted file mode 100644 index 2e159f2..0000000 --- a/assets/DesignView-6052ac0b.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as g,A as y,a as k}from"./index-3ef5d3f0.js";import{ah as n,o as w,c as v,V as o,P as s,a as e,ax as x,ay as S}from"./@vue-248d724b.js";import"./vue-router-401d444e.js";import"./element-plus-ab7336d6.js";import"./lodash-es-21c98b27.js";import"./@vueuse-89fc2c2e.js";import"./@element-plus-0de4ac96.js";import"./@popperjs-c75af06c.js";import"./@ctrl-f8748455.js";import"./dayjs-5c34775c.js";import"./async-validator-dee29e8b.js";import"./memoize-one-297ddbcb.js";import"./escape-html-64fe8e16.js";import"./normalize-wheel-es-ed76fb12.js";import"./@floating-ui-72671fae.js";import"./echarts-9ae96183.js";import"./zrender-e9104294.js";const O="/assets/OmicsSuite-UI-3fd3f0a7.png",z="/assets/OmicsSuite-3D-d5ab85b2.png",A="/assets/OmicsSuite-Desktop-c0c08ee7.png",D="/assets/OmicsSuite-Apps-f77d1a25.png";const I={components:{AppHeader:y,AppFooter:k},data(){return{}},mounted(){},methods:{downloadOmicsSuite(){const i="https://sourceforge.net/projects/omicssuite-github-io/files/latest/download";window.open(i,"_blank")}}},t=i=>(x("data-v-aacde1a3"),i=i(),S(),i),T={class:"common-layout"},C=t(()=>e("br",null,null,-1)),V={class:"image-text-card"},F=t(()=>e("iframe",{src:"https://my.spline.design/chineseknot-3348c91bf16823549914fc172d72d7e8/",style:{width:"100%",height:"450px","border-width":"0px","border-radius":"10px"}},null,-1)),$=t(()=>e("br",null,null,-1)),B=t(()=>e("p",{class:"card-title"},"Chinese Knot",-1)),H=t(()=>e("br",null,null,-1)),U=t(()=>e("span",{style:{"font-size":"1.2em","font-weight":"bold"}},"Chinese Knot",-1)),K=t(()=>e("br",null,null,-1)),N=t(()=>e("br",null,null,-1)),j=t(()=>e("p",{class:"card-content"}," The OmicsSuite desktop interface is placed on the desk in the form of a large screen. The notebooks, books, earphones, vases and flowers on the desktop make the office environment very advanced and comfortable. ",-1)),E=t(()=>e("br",null,null,-1)),P={class:"image-text-card"},q=t(()=>e("img",{src:O,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),G=t(()=>e("br",null,null,-1)),J=t(()=>e("p",{class:"card-title"},"OmicsSuite UI",-1)),L=t(()=>e("br",null,null,-1)),M=t(()=>e("span",{style:{"font-size":"1.2em","font-weight":"bold"}},"OmicsSuite UI",-1)),Q=t(()=>e("br",null,null,-1)),R=t(()=>e("br",null,null,-1)),W=t(()=>e("p",{class:"card-content"}," The OmicsSuite desktop interface is placed on the desk in the form of a large screen. The notebooks, books, earphones, vases and flowers on the desktop make the office environment very advanced and comfortable. ",-1)),X=t(()=>e("br",null,null,-1)),Y={class:"image-text-card"},Z=t(()=>e("img",{src:z,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),ee=t(()=>e("br",null,null,-1)),te=t(()=>e("p",{class:"card-title"},"OmicsSuite 3D Title",-1)),oe=t(()=>e("br",null,null,-1)),se=t(()=>e("span",{style:{"font-size":"1.2em","font-weight":"bold"}},"OmicsSuite 3D",-1)),ne=t(()=>e("br",null,null,-1)),le=t(()=>e("br",null,null,-1)),ie=t(()=>e("p",{class:"card-content"}," The OmicsSuite 3D title is directly in front, and simple three-dimensional elements such as spheres, cubes, swimming rings, and cones float around the title, making the picture lively. ",-1)),ae=t(()=>e("br",null,null,-1)),ce={class:"image-text-card"},re=t(()=>e("img",{src:A,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),de=t(()=>e("br",null,null,-1)),_e=t(()=>e("p",{class:"card-title"},"OmicsSuite Desktop",-1)),pe=t(()=>e("br",null,null,-1)),ue=t(()=>e("span",{style:{"font-size":"1.2em","font-weight":"bold"}},"OmicsSuite Desktop",-1)),fe=t(()=>e("br",null,null,-1)),he=t(()=>e("br",null,null,-1)),me=t(()=>e("p",{class:"card-content"}," OmicsSuite software starts from the notebook and displays the user interface. From design to development, it reflects the developer's meticulousness and sufficient energy. ",-1)),be=t(()=>e("br",null,null,-1)),ge={class:"image-text-card"},ye=t(()=>e("img",{src:D,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),ke=t(()=>e("br",null,null,-1)),we=t(()=>e("p",{class:"card-title"},"OmicsSuite Application",-1)),ve=t(()=>e("br",null,null,-1)),xe=t(()=>e("span",{style:{"font-size":"1.2em","font-weight":"bold"}},"OmicsSuite Application",-1)),Se=t(()=>e("br",null,null,-1)),Oe=t(()=>e("br",null,null,-1)),ze=t(()=>e("p",{class:"card-content"}," The OmicsSuite sub-application is used for the logical steps of data analytics, and the startup will switch to a new operation interface, and the data input to the visual results is very smooth. ",-1)),Ae=t(()=>e("br",null,null,-1));function De(i,Ie,Te,Ce,Ve,Fe){const _=n("AppHeader"),p=n("el-header"),l=n("el-col"),a=n("Compass"),c=n("el-icon"),r=n("el-button"),d=n("el-row"),u=n("el-main"),f=n("AppFooter"),h=n("el-footer"),m=n("el-container"),b=n("el-backtop");return w(),v("div",T,[o(m,null,{default:s(()=>[o(p,null,{default:s(()=>[o(_)]),_:1}),o(u,null,{default:s(()=>[e("div",null,[C,e("div",V,[o(d,{gutter:20},{default:s(()=>[o(l,{span:24,sm:16,lg:16},{default:s(()=>[F]),_:1}),o(l,{span:24,sm:8,lg:8},{default:s(()=>[$,B,H,o(r,{tag:"a",href:"https://my.spline.design/chineseknot-3348c91bf16823549914fc172d72d7e8/",target:"_blank",rel:"noopener noreferrer",style:{"background-color":"#ff2040",color:"#ffffff",height:"45px"}},{default:s(()=>[o(c,{style:{"font-size":"1.5em"}},{default:s(()=>[o(a)]),_:1}),U]),_:1}),K,N,j]),_:1})]),_:1})]),E,e("div",P,[o(d,{gutter:20},{default:s(()=>[o(l,{span:24,sm:16,lg:16},{default:s(()=>[q]),_:1}),o(l,{span:24,sm:8,lg:8},{default:s(()=>[G,J,L,o(r,{tag:"a",href:"https://my.spline.design/bioscitoolsui-df7e0cf9cd7e90e07bb40b6e46a3010a/",target:"_blank",rel:"noopener noreferrer",style:{"background-color":"#ff2040",color:"#ffffff",height:"45px"}},{default:s(()=>[o(c,{style:{"font-size":"1.5em"}},{default:s(()=>[o(a)]),_:1}),M]),_:1}),Q,R,W]),_:1})]),_:1})]),X,e("div",Y,[o(d,{gutter:20},{default:s(()=>[o(l,{span:24,sm:16,lg:16},{default:s(()=>[Z]),_:1}),o(l,{span:24,sm:8,lg:8},{default:s(()=>[ee,te,oe,o(r,{tag:"a",href:"https://my.spline.design/benbenmiaocopy-991ffd2823326ce617ef4346945c6b09/",target:"_blank",rel:"noopener noreferrer",style:{"background-color":"#ff2040",color:"#ffffff",height:"45px"}},{default:s(()=>[o(c,{style:{"font-size":"1.5em"}},{default:s(()=>[o(a)]),_:1}),se]),_:1}),ne,le,ie]),_:1})]),_:1})]),ae,e("div",ce,[o(d,{gutter:20},{default:s(()=>[o(l,{span:24,sm:16,lg:16},{default:s(()=>[re]),_:1}),o(l,{span:24,sm:8,lg:8},{default:s(()=>[de,_e,pe,o(r,{tag:"a",href:"https://my.spline.design/macbookprocopy-983bb9afaa57601ef10d4292f1d6c4d2/",target:"_blank",rel:"noopener noreferrer",style:{"background-color":"#ff2040",color:"#ffffff",height:"45px"}},{default:s(()=>[o(c,{style:{"font-size":"1.5em"}},{default:s(()=>[o(a)]),_:1}),ue]),_:1}),fe,he,me]),_:1})]),_:1})]),be,e("div",ge,[o(d,{gutter:20},{default:s(()=>[o(l,{span:24,sm:16,lg:16},{default:s(()=>[ye]),_:1}),o(l,{span:24,sm:8,lg:8},{default:s(()=>[ke,we,ve,o(r,{tag:"a",href:"https://my.spline.design/bioscitoolsapp-754a2c6048667ee6b3c55e3bdd638dc9/",target:"_blank",rel:"noopener noreferrer",style:{"background-color":"#ff2040",color:"#ffffff",height:"45px"}},{default:s(()=>[o(c,{style:{"font-size":"1.5em"}},{default:s(()=>[o(a)]),_:1}),xe]),_:1}),Se,Oe,ze]),_:1})]),_:1})]),Ae])]),_:1}),o(h,null,{default:s(()=>[o(f)]),_:1})]),_:1}),o(b,{right:50,bottom:100})])}const Xe=g(I,[["render",De],["__scopeId","data-v-aacde1a3"]]);export{Xe as default}; diff --git a/assets/DesignView-9c5f9feb.js b/assets/DesignView-9c5f9feb.js deleted file mode 100644 index aeffb31..0000000 --- a/assets/DesignView-9c5f9feb.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as g,A as y,a as k}from"./index-eab933a6.js";import{ah as n,o as w,c as v,V as o,P as s,a as e,ax as x,ay as S}from"./@vue-248d724b.js";import"./@splinetool-99227827.js";import"./vue-router-401d444e.js";import"./element-plus-ab7336d6.js";import"./lodash-es-21c98b27.js";import"./@vueuse-89fc2c2e.js";import"./@element-plus-0de4ac96.js";import"./@popperjs-c75af06c.js";import"./@ctrl-f8748455.js";import"./dayjs-5c34775c.js";import"./async-validator-dee29e8b.js";import"./memoize-one-297ddbcb.js";import"./escape-html-64fe8e16.js";import"./normalize-wheel-es-ed76fb12.js";import"./@floating-ui-72671fae.js";import"./echarts-9ae96183.js";import"./zrender-e9104294.js";const O="/assets/OmicsSuite-UI-3fd3f0a7.png",z="/assets/OmicsSuite-3D-d5ab85b2.png",A="/assets/OmicsSuite-Desktop-c0c08ee7.png",D="/assets/OmicsSuite-Apps-f77d1a25.png";const I={components:{AppHeader:y,AppFooter:k},data(){return{}},mounted(){},methods:{downloadOmicsSuite(){const i="https://sourceforge.net/projects/omicssuite-github-io/files/latest/download";window.open(i,"_blank")}}},t=i=>(x("data-v-301fca3a"),i=i(),S(),i),T={class:"common-layout"},C={class:"page"},V=t(()=>e("br",null,null,-1)),F={class:"image-text-card"},$=t(()=>e("iframe",{src:"https://my.spline.design/chineseknot-3348c91bf16823549914fc172d72d7e8/",style:{width:"100%",height:"450px","border-width":"0px","border-radius":"10px"}},null,-1)),B=t(()=>e("br",null,null,-1)),H=t(()=>e("p",{class:"card-title"},"Chinese Knot",-1)),U=t(()=>e("br",null,null,-1)),K=t(()=>e("span",{style:{"font-size":"1.2em","font-weight":"bold"}},"Chinese Knot",-1)),N=t(()=>e("br",null,null,-1)),j=t(()=>e("br",null,null,-1)),E=t(()=>e("p",{class:"card-content"}," The OmicsSuite desktop interface is placed on the desk in the form of a large screen. The notebooks, books, earphones, vases and flowers on the desktop make the office environment very advanced and comfortable. ",-1)),P=t(()=>e("br",null,null,-1)),q={class:"image-text-card"},G=t(()=>e("img",{src:O,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),J=t(()=>e("br",null,null,-1)),L=t(()=>e("p",{class:"card-title"},"OmicsSuite UI",-1)),M=t(()=>e("br",null,null,-1)),Q=t(()=>e("span",{style:{"font-size":"1.2em","font-weight":"bold"}},"OmicsSuite UI",-1)),R=t(()=>e("br",null,null,-1)),W=t(()=>e("br",null,null,-1)),X=t(()=>e("p",{class:"card-content"}," The OmicsSuite desktop interface is placed on the desk in the form of a large screen. The notebooks, books, earphones, vases and flowers on the desktop make the office environment very advanced and comfortable. ",-1)),Y=t(()=>e("br",null,null,-1)),Z={class:"image-text-card"},ee=t(()=>e("img",{src:z,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),te=t(()=>e("br",null,null,-1)),oe=t(()=>e("p",{class:"card-title"},"OmicsSuite 3D Title",-1)),se=t(()=>e("br",null,null,-1)),ne=t(()=>e("span",{style:{"font-size":"1.2em","font-weight":"bold"}},"OmicsSuite 3D",-1)),le=t(()=>e("br",null,null,-1)),ie=t(()=>e("br",null,null,-1)),ae=t(()=>e("p",{class:"card-content"}," The OmicsSuite 3D title is directly in front, and simple three-dimensional elements such as spheres, cubes, swimming rings, and cones float around the title, making the picture lively. ",-1)),ce=t(()=>e("br",null,null,-1)),re={class:"image-text-card"},de=t(()=>e("img",{src:A,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),_e=t(()=>e("br",null,null,-1)),pe=t(()=>e("p",{class:"card-title"},"OmicsSuite Desktop",-1)),ue=t(()=>e("br",null,null,-1)),fe=t(()=>e("span",{style:{"font-size":"1.2em","font-weight":"bold"}},"OmicsSuite Desktop",-1)),he=t(()=>e("br",null,null,-1)),me=t(()=>e("br",null,null,-1)),be=t(()=>e("p",{class:"card-content"}," OmicsSuite software starts from the notebook and displays the user interface. From design to development, it reflects the developer's meticulousness and sufficient energy. ",-1)),ge=t(()=>e("br",null,null,-1)),ye={class:"image-text-card"},ke=t(()=>e("img",{src:D,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),we=t(()=>e("br",null,null,-1)),ve=t(()=>e("p",{class:"card-title"},"OmicsSuite Application",-1)),xe=t(()=>e("br",null,null,-1)),Se=t(()=>e("span",{style:{"font-size":"1.2em","font-weight":"bold"}},"OmicsSuite Application",-1)),Oe=t(()=>e("br",null,null,-1)),ze=t(()=>e("br",null,null,-1)),Ae=t(()=>e("p",{class:"card-content"}," The OmicsSuite sub-application is used for the logical steps of data analytics, and the startup will switch to a new operation interface, and the data input to the visual results is very smooth. ",-1)),De=t(()=>e("br",null,null,-1));function Ie(i,Te,Ce,Ve,Fe,$e){const _=n("AppHeader"),p=n("el-header"),l=n("el-col"),a=n("Compass"),c=n("el-icon"),r=n("el-button"),d=n("el-row"),u=n("el-main"),f=n("AppFooter"),h=n("el-footer"),m=n("el-container"),b=n("el-backtop");return w(),v("div",T,[o(m,null,{default:s(()=>[o(p,null,{default:s(()=>[o(_)]),_:1}),o(u,null,{default:s(()=>[e("div",C,[V,e("div",F,[o(d,{gutter:20},{default:s(()=>[o(l,{span:24,sm:16,lg:16},{default:s(()=>[$]),_:1}),o(l,{span:24,sm:8,lg:8},{default:s(()=>[B,H,U,o(r,{tag:"a",href:"https://my.spline.design/chineseknot-3348c91bf16823549914fc172d72d7e8/",target:"_blank",rel:"noopener noreferrer",style:{"background-color":"#ff2040",color:"#ffffff",height:"45px"}},{default:s(()=>[o(c,{style:{"font-size":"1.5em"}},{default:s(()=>[o(a)]),_:1}),K]),_:1}),N,j,E]),_:1})]),_:1})]),P,e("div",q,[o(d,{gutter:20},{default:s(()=>[o(l,{span:24,sm:16,lg:16},{default:s(()=>[G]),_:1}),o(l,{span:24,sm:8,lg:8},{default:s(()=>[J,L,M,o(r,{tag:"a",href:"https://my.spline.design/bioscitoolsui-df7e0cf9cd7e90e07bb40b6e46a3010a/",target:"_blank",rel:"noopener noreferrer",style:{"background-color":"#ff2040",color:"#ffffff",height:"45px"}},{default:s(()=>[o(c,{style:{"font-size":"1.5em"}},{default:s(()=>[o(a)]),_:1}),Q]),_:1}),R,W,X]),_:1})]),_:1})]),Y,e("div",Z,[o(d,{gutter:20},{default:s(()=>[o(l,{span:24,sm:16,lg:16},{default:s(()=>[ee]),_:1}),o(l,{span:24,sm:8,lg:8},{default:s(()=>[te,oe,se,o(r,{tag:"a",href:"https://my.spline.design/benbenmiaocopy-991ffd2823326ce617ef4346945c6b09/",target:"_blank",rel:"noopener noreferrer",style:{"background-color":"#ff2040",color:"#ffffff",height:"45px"}},{default:s(()=>[o(c,{style:{"font-size":"1.5em"}},{default:s(()=>[o(a)]),_:1}),ne]),_:1}),le,ie,ae]),_:1})]),_:1})]),ce,e("div",re,[o(d,{gutter:20},{default:s(()=>[o(l,{span:24,sm:16,lg:16},{default:s(()=>[de]),_:1}),o(l,{span:24,sm:8,lg:8},{default:s(()=>[_e,pe,ue,o(r,{tag:"a",href:"https://my.spline.design/macbookprocopy-983bb9afaa57601ef10d4292f1d6c4d2/",target:"_blank",rel:"noopener noreferrer",style:{"background-color":"#ff2040",color:"#ffffff",height:"45px"}},{default:s(()=>[o(c,{style:{"font-size":"1.5em"}},{default:s(()=>[o(a)]),_:1}),fe]),_:1}),he,me,be]),_:1})]),_:1})]),ge,e("div",ye,[o(d,{gutter:20},{default:s(()=>[o(l,{span:24,sm:16,lg:16},{default:s(()=>[ke]),_:1}),o(l,{span:24,sm:8,lg:8},{default:s(()=>[we,ve,xe,o(r,{tag:"a",href:"https://my.spline.design/bioscitoolsapp-754a2c6048667ee6b3c55e3bdd638dc9/",target:"_blank",rel:"noopener noreferrer",style:{"background-color":"#ff2040",color:"#ffffff",height:"45px"}},{default:s(()=>[o(c,{style:{"font-size":"1.5em"}},{default:s(()=>[o(a)]),_:1}),Se]),_:1}),Oe,ze,Ae]),_:1})]),_:1})]),De])]),_:1}),o(h,null,{default:s(()=>[o(f)]),_:1})]),_:1}),o(b,{right:50,bottom:100})])}const Ze=g(I,[["render",Ie],["__scopeId","data-v-301fca3a"]]);export{Ze as default}; diff --git a/assets/DesignView-b55c72b2.css b/assets/DesignView-b55c72b2.css deleted file mode 100644 index 57c7106..0000000 --- a/assets/DesignView-b55c72b2.css +++ /dev/null @@ -1 +0,0 @@ -.el-header[data-v-aacde1a3]{padding:0;position:fixed;width:100%;z-index:100}.el-main[data-v-aacde1a3]{margin-top:60px;padding:0 20%}.el-footer[data-v-aacde1a3]{top:0;padding:0}.image-text-card[data-v-aacde1a3]{background-color:#fff;border-radius:10px;box-shadow:0 0 10px #cdcdcd;border:1px solid #cdcdcd;padding:10px}.card-title[data-v-aacde1a3]{font-size:1.2em;font-weight:700}.card-content[data-v-aacde1a3]{font-size:1em;text-align:justify;line-height:2em}@media (max-width: 1200px){.el-main[data-v-aacde1a3]{padding:0 10%}}@media (max-width: 800px){.el-main[data-v-aacde1a3]{padding:0 2%}} diff --git a/assets/DesignView-bbb1d48d.js b/assets/DesignView-bbb1d48d.js deleted file mode 100644 index e78691d..0000000 --- a/assets/DesignView-bbb1d48d.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as g,A as y,a as k}from"./index-82148c11.js";import{ah as n,o as w,c as v,V as o,P as s,a as e,ax as x,ay as S}from"./@vue-248d724b.js";import"./vue-router-401d444e.js";import"./element-plus-ab7336d6.js";import"./lodash-es-21c98b27.js";import"./@vueuse-89fc2c2e.js";import"./@element-plus-0de4ac96.js";import"./@popperjs-c75af06c.js";import"./@ctrl-f8748455.js";import"./dayjs-5c34775c.js";import"./async-validator-dee29e8b.js";import"./memoize-one-297ddbcb.js";import"./escape-html-64fe8e16.js";import"./normalize-wheel-es-ed76fb12.js";import"./@floating-ui-72671fae.js";import"./echarts-9ae96183.js";import"./zrender-e9104294.js";const O="/assets/OmicsSuite-UI-3fd3f0a7.png",z="/assets/OmicsSuite-3D-d5ab85b2.png",A="/assets/OmicsSuite-Desktop-c0c08ee7.png",D="/assets/OmicsSuite-Apps-f77d1a25.png";const I={components:{AppHeader:y,AppFooter:k},data(){return{}},mounted(){},methods:{downloadOmicsSuite(){const i="https://sourceforge.net/projects/omicssuite-github-io/files/latest/download";window.open(i,"_blank")}}},t=i=>(x("data-v-aacde1a3"),i=i(),S(),i),T={class:"common-layout"},C=t(()=>e("br",null,null,-1)),V={class:"image-text-card"},F=t(()=>e("iframe",{src:"https://my.spline.design/chineseknot-3348c91bf16823549914fc172d72d7e8/",style:{width:"100%",height:"450px","border-width":"0px","border-radius":"10px"}},null,-1)),$=t(()=>e("br",null,null,-1)),B=t(()=>e("p",{class:"card-title"},"Chinese Knot",-1)),H=t(()=>e("br",null,null,-1)),U=t(()=>e("span",{style:{"font-size":"1.2em","font-weight":"bold"}},"Chinese Knot",-1)),K=t(()=>e("br",null,null,-1)),N=t(()=>e("br",null,null,-1)),j=t(()=>e("p",{class:"card-content"}," The OmicsSuite desktop interface is placed on the desk in the form of a large screen. The notebooks, books, earphones, vases and flowers on the desktop make the office environment very advanced and comfortable. ",-1)),E=t(()=>e("br",null,null,-1)),P={class:"image-text-card"},q=t(()=>e("img",{src:O,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),G=t(()=>e("br",null,null,-1)),J=t(()=>e("p",{class:"card-title"},"OmicsSuite UI",-1)),L=t(()=>e("br",null,null,-1)),M=t(()=>e("span",{style:{"font-size":"1.2em","font-weight":"bold"}},"OmicsSuite UI",-1)),Q=t(()=>e("br",null,null,-1)),R=t(()=>e("br",null,null,-1)),W=t(()=>e("p",{class:"card-content"}," The OmicsSuite desktop interface is placed on the desk in the form of a large screen. The notebooks, books, earphones, vases and flowers on the desktop make the office environment very advanced and comfortable. ",-1)),X=t(()=>e("br",null,null,-1)),Y={class:"image-text-card"},Z=t(()=>e("img",{src:z,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),ee=t(()=>e("br",null,null,-1)),te=t(()=>e("p",{class:"card-title"},"OmicsSuite 3D Title",-1)),oe=t(()=>e("br",null,null,-1)),se=t(()=>e("span",{style:{"font-size":"1.2em","font-weight":"bold"}},"OmicsSuite 3D",-1)),ne=t(()=>e("br",null,null,-1)),le=t(()=>e("br",null,null,-1)),ie=t(()=>e("p",{class:"card-content"}," The OmicsSuite 3D title is directly in front, and simple three-dimensional elements such as spheres, cubes, swimming rings, and cones float around the title, making the picture lively. ",-1)),ae=t(()=>e("br",null,null,-1)),ce={class:"image-text-card"},re=t(()=>e("img",{src:A,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),de=t(()=>e("br",null,null,-1)),_e=t(()=>e("p",{class:"card-title"},"OmicsSuite Desktop",-1)),pe=t(()=>e("br",null,null,-1)),ue=t(()=>e("span",{style:{"font-size":"1.2em","font-weight":"bold"}},"OmicsSuite Desktop",-1)),fe=t(()=>e("br",null,null,-1)),he=t(()=>e("br",null,null,-1)),me=t(()=>e("p",{class:"card-content"}," OmicsSuite software starts from the notebook and displays the user interface. From design to development, it reflects the developer's meticulousness and sufficient energy. ",-1)),be=t(()=>e("br",null,null,-1)),ge={class:"image-text-card"},ye=t(()=>e("img",{src:D,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),ke=t(()=>e("br",null,null,-1)),we=t(()=>e("p",{class:"card-title"},"OmicsSuite Application",-1)),ve=t(()=>e("br",null,null,-1)),xe=t(()=>e("span",{style:{"font-size":"1.2em","font-weight":"bold"}},"OmicsSuite Application",-1)),Se=t(()=>e("br",null,null,-1)),Oe=t(()=>e("br",null,null,-1)),ze=t(()=>e("p",{class:"card-content"}," The OmicsSuite sub-application is used for the logical steps of data analytics, and the startup will switch to a new operation interface, and the data input to the visual results is very smooth. ",-1)),Ae=t(()=>e("br",null,null,-1));function De(i,Ie,Te,Ce,Ve,Fe){const _=n("AppHeader"),p=n("el-header"),l=n("el-col"),a=n("Compass"),c=n("el-icon"),r=n("el-button"),d=n("el-row"),u=n("el-main"),f=n("AppFooter"),h=n("el-footer"),m=n("el-container"),b=n("el-backtop");return w(),v("div",T,[o(m,null,{default:s(()=>[o(p,null,{default:s(()=>[o(_)]),_:1}),o(u,null,{default:s(()=>[e("div",null,[C,e("div",V,[o(d,{gutter:20},{default:s(()=>[o(l,{span:24,sm:16,lg:16},{default:s(()=>[F]),_:1}),o(l,{span:24,sm:8,lg:8},{default:s(()=>[$,B,H,o(r,{tag:"a",href:"https://my.spline.design/chineseknot-3348c91bf16823549914fc172d72d7e8/",target:"_blank",rel:"noopener noreferrer",style:{"background-color":"#ff2040",color:"#ffffff",height:"45px"}},{default:s(()=>[o(c,{style:{"font-size":"1.5em"}},{default:s(()=>[o(a)]),_:1}),U]),_:1}),K,N,j]),_:1})]),_:1})]),E,e("div",P,[o(d,{gutter:20},{default:s(()=>[o(l,{span:24,sm:16,lg:16},{default:s(()=>[q]),_:1}),o(l,{span:24,sm:8,lg:8},{default:s(()=>[G,J,L,o(r,{tag:"a",href:"https://my.spline.design/bioscitoolsui-df7e0cf9cd7e90e07bb40b6e46a3010a/",target:"_blank",rel:"noopener noreferrer",style:{"background-color":"#ff2040",color:"#ffffff",height:"45px"}},{default:s(()=>[o(c,{style:{"font-size":"1.5em"}},{default:s(()=>[o(a)]),_:1}),M]),_:1}),Q,R,W]),_:1})]),_:1})]),X,e("div",Y,[o(d,{gutter:20},{default:s(()=>[o(l,{span:24,sm:16,lg:16},{default:s(()=>[Z]),_:1}),o(l,{span:24,sm:8,lg:8},{default:s(()=>[ee,te,oe,o(r,{tag:"a",href:"https://my.spline.design/benbenmiaocopy-991ffd2823326ce617ef4346945c6b09/",target:"_blank",rel:"noopener noreferrer",style:{"background-color":"#ff2040",color:"#ffffff",height:"45px"}},{default:s(()=>[o(c,{style:{"font-size":"1.5em"}},{default:s(()=>[o(a)]),_:1}),se]),_:1}),ne,le,ie]),_:1})]),_:1})]),ae,e("div",ce,[o(d,{gutter:20},{default:s(()=>[o(l,{span:24,sm:16,lg:16},{default:s(()=>[re]),_:1}),o(l,{span:24,sm:8,lg:8},{default:s(()=>[de,_e,pe,o(r,{tag:"a",href:"https://my.spline.design/macbookprocopy-983bb9afaa57601ef10d4292f1d6c4d2/",target:"_blank",rel:"noopener noreferrer",style:{"background-color":"#ff2040",color:"#ffffff",height:"45px"}},{default:s(()=>[o(c,{style:{"font-size":"1.5em"}},{default:s(()=>[o(a)]),_:1}),ue]),_:1}),fe,he,me]),_:1})]),_:1})]),be,e("div",ge,[o(d,{gutter:20},{default:s(()=>[o(l,{span:24,sm:16,lg:16},{default:s(()=>[ye]),_:1}),o(l,{span:24,sm:8,lg:8},{default:s(()=>[ke,we,ve,o(r,{tag:"a",href:"https://my.spline.design/bioscitoolsapp-754a2c6048667ee6b3c55e3bdd638dc9/",target:"_blank",rel:"noopener noreferrer",style:{"background-color":"#ff2040",color:"#ffffff",height:"45px"}},{default:s(()=>[o(c,{style:{"font-size":"1.5em"}},{default:s(()=>[o(a)]),_:1}),xe]),_:1}),Se,Oe,ze]),_:1})]),_:1})]),Ae])]),_:1}),o(h,null,{default:s(()=>[o(f)]),_:1})]),_:1}),o(b,{right:50,bottom:100})])}const Xe=g(I,[["render",De],["__scopeId","data-v-aacde1a3"]]);export{Xe as default}; diff --git a/assets/DesignView-0cf80983.js b/assets/DesignView-e2626b83.js similarity index 73% rename from assets/DesignView-0cf80983.js rename to assets/DesignView-e2626b83.js index d7b0d65..afa5e34 100644 --- a/assets/DesignView-0cf80983.js +++ b/assets/DesignView-e2626b83.js @@ -1 +1 @@ -import{_ as g,A as y,a as k}from"./index-d094e413.js";import{ah as n,o as w,c as v,V as o,P as s,a as e,ax as x,ay as S}from"./@vue-248d724b.js";import"./@splinetool-99227827.js";import"./vue-router-401d444e.js";import"./element-plus-ab7336d6.js";import"./lodash-es-21c98b27.js";import"./@vueuse-89fc2c2e.js";import"./@element-plus-0de4ac96.js";import"./@popperjs-c75af06c.js";import"./@ctrl-f8748455.js";import"./dayjs-5c34775c.js";import"./async-validator-dee29e8b.js";import"./memoize-one-297ddbcb.js";import"./escape-html-64fe8e16.js";import"./normalize-wheel-es-ed76fb12.js";import"./@floating-ui-72671fae.js";import"./echarts-9ae96183.js";import"./zrender-e9104294.js";const O="/assets/OmicsSuite-UI-3fd3f0a7.png",z="/assets/OmicsSuite-3D-d5ab85b2.png",A="/assets/OmicsSuite-Desktop-c0c08ee7.png",D="/assets/OmicsSuite-Apps-f77d1a25.png";const I={components:{AppHeader:y,AppFooter:k},data(){return{}},mounted(){},methods:{downloadOmicsSuite(){const i="https://sourceforge.net/projects/omicssuite-github-io/files/latest/download";window.open(i,"_blank")}}},t=i=>(x("data-v-301fca3a"),i=i(),S(),i),T={class:"common-layout"},C={class:"page"},V=t(()=>e("br",null,null,-1)),F={class:"image-text-card"},$=t(()=>e("iframe",{src:"https://my.spline.design/chineseknot-3348c91bf16823549914fc172d72d7e8/",style:{width:"100%",height:"450px","border-width":"0px","border-radius":"10px"}},null,-1)),B=t(()=>e("br",null,null,-1)),H=t(()=>e("p",{class:"card-title"},"Chinese Knot",-1)),U=t(()=>e("br",null,null,-1)),K=t(()=>e("span",{style:{"font-size":"1.2em","font-weight":"bold"}},"Chinese Knot",-1)),N=t(()=>e("br",null,null,-1)),j=t(()=>e("br",null,null,-1)),E=t(()=>e("p",{class:"card-content"}," The OmicsSuite desktop interface is placed on the desk in the form of a large screen. The notebooks, books, earphones, vases and flowers on the desktop make the office environment very advanced and comfortable. ",-1)),P=t(()=>e("br",null,null,-1)),q={class:"image-text-card"},G=t(()=>e("img",{src:O,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),J=t(()=>e("br",null,null,-1)),L=t(()=>e("p",{class:"card-title"},"OmicsSuite UI",-1)),M=t(()=>e("br",null,null,-1)),Q=t(()=>e("span",{style:{"font-size":"1.2em","font-weight":"bold"}},"OmicsSuite UI",-1)),R=t(()=>e("br",null,null,-1)),W=t(()=>e("br",null,null,-1)),X=t(()=>e("p",{class:"card-content"}," The OmicsSuite desktop interface is placed on the desk in the form of a large screen. The notebooks, books, earphones, vases and flowers on the desktop make the office environment very advanced and comfortable. ",-1)),Y=t(()=>e("br",null,null,-1)),Z={class:"image-text-card"},ee=t(()=>e("img",{src:z,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),te=t(()=>e("br",null,null,-1)),oe=t(()=>e("p",{class:"card-title"},"OmicsSuite 3D Title",-1)),se=t(()=>e("br",null,null,-1)),ne=t(()=>e("span",{style:{"font-size":"1.2em","font-weight":"bold"}},"OmicsSuite 3D",-1)),le=t(()=>e("br",null,null,-1)),ie=t(()=>e("br",null,null,-1)),ae=t(()=>e("p",{class:"card-content"}," The OmicsSuite 3D title is directly in front, and simple three-dimensional elements such as spheres, cubes, swimming rings, and cones float around the title, making the picture lively. ",-1)),ce=t(()=>e("br",null,null,-1)),re={class:"image-text-card"},de=t(()=>e("img",{src:A,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),_e=t(()=>e("br",null,null,-1)),pe=t(()=>e("p",{class:"card-title"},"OmicsSuite Desktop",-1)),ue=t(()=>e("br",null,null,-1)),fe=t(()=>e("span",{style:{"font-size":"1.2em","font-weight":"bold"}},"OmicsSuite Desktop",-1)),he=t(()=>e("br",null,null,-1)),me=t(()=>e("br",null,null,-1)),be=t(()=>e("p",{class:"card-content"}," OmicsSuite software starts from the notebook and displays the user interface. From design to development, it reflects the developer's meticulousness and sufficient energy. ",-1)),ge=t(()=>e("br",null,null,-1)),ye={class:"image-text-card"},ke=t(()=>e("img",{src:D,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),we=t(()=>e("br",null,null,-1)),ve=t(()=>e("p",{class:"card-title"},"OmicsSuite Application",-1)),xe=t(()=>e("br",null,null,-1)),Se=t(()=>e("span",{style:{"font-size":"1.2em","font-weight":"bold"}},"OmicsSuite Application",-1)),Oe=t(()=>e("br",null,null,-1)),ze=t(()=>e("br",null,null,-1)),Ae=t(()=>e("p",{class:"card-content"}," The OmicsSuite sub-application is used for the logical steps of data analytics, and the startup will switch to a new operation interface, and the data input to the visual results is very smooth. ",-1)),De=t(()=>e("br",null,null,-1));function Ie(i,Te,Ce,Ve,Fe,$e){const _=n("AppHeader"),p=n("el-header"),l=n("el-col"),a=n("Compass"),c=n("el-icon"),r=n("el-button"),d=n("el-row"),u=n("el-main"),f=n("AppFooter"),h=n("el-footer"),m=n("el-container"),b=n("el-backtop");return w(),v("div",T,[o(m,null,{default:s(()=>[o(p,null,{default:s(()=>[o(_)]),_:1}),o(u,null,{default:s(()=>[e("div",C,[V,e("div",F,[o(d,{gutter:20},{default:s(()=>[o(l,{span:24,sm:16,lg:16},{default:s(()=>[$]),_:1}),o(l,{span:24,sm:8,lg:8},{default:s(()=>[B,H,U,o(r,{tag:"a",href:"https://my.spline.design/chineseknot-3348c91bf16823549914fc172d72d7e8/",target:"_blank",rel:"noopener noreferrer",style:{"background-color":"#ff2040",color:"#ffffff",height:"45px"}},{default:s(()=>[o(c,{style:{"font-size":"1.5em"}},{default:s(()=>[o(a)]),_:1}),K]),_:1}),N,j,E]),_:1})]),_:1})]),P,e("div",q,[o(d,{gutter:20},{default:s(()=>[o(l,{span:24,sm:16,lg:16},{default:s(()=>[G]),_:1}),o(l,{span:24,sm:8,lg:8},{default:s(()=>[J,L,M,o(r,{tag:"a",href:"https://my.spline.design/bioscitoolsui-df7e0cf9cd7e90e07bb40b6e46a3010a/",target:"_blank",rel:"noopener noreferrer",style:{"background-color":"#ff2040",color:"#ffffff",height:"45px"}},{default:s(()=>[o(c,{style:{"font-size":"1.5em"}},{default:s(()=>[o(a)]),_:1}),Q]),_:1}),R,W,X]),_:1})]),_:1})]),Y,e("div",Z,[o(d,{gutter:20},{default:s(()=>[o(l,{span:24,sm:16,lg:16},{default:s(()=>[ee]),_:1}),o(l,{span:24,sm:8,lg:8},{default:s(()=>[te,oe,se,o(r,{tag:"a",href:"https://my.spline.design/benbenmiaocopy-991ffd2823326ce617ef4346945c6b09/",target:"_blank",rel:"noopener noreferrer",style:{"background-color":"#ff2040",color:"#ffffff",height:"45px"}},{default:s(()=>[o(c,{style:{"font-size":"1.5em"}},{default:s(()=>[o(a)]),_:1}),ne]),_:1}),le,ie,ae]),_:1})]),_:1})]),ce,e("div",re,[o(d,{gutter:20},{default:s(()=>[o(l,{span:24,sm:16,lg:16},{default:s(()=>[de]),_:1}),o(l,{span:24,sm:8,lg:8},{default:s(()=>[_e,pe,ue,o(r,{tag:"a",href:"https://my.spline.design/macbookprocopy-983bb9afaa57601ef10d4292f1d6c4d2/",target:"_blank",rel:"noopener noreferrer",style:{"background-color":"#ff2040",color:"#ffffff",height:"45px"}},{default:s(()=>[o(c,{style:{"font-size":"1.5em"}},{default:s(()=>[o(a)]),_:1}),fe]),_:1}),he,me,be]),_:1})]),_:1})]),ge,e("div",ye,[o(d,{gutter:20},{default:s(()=>[o(l,{span:24,sm:16,lg:16},{default:s(()=>[ke]),_:1}),o(l,{span:24,sm:8,lg:8},{default:s(()=>[we,ve,xe,o(r,{tag:"a",href:"https://my.spline.design/bioscitoolsapp-754a2c6048667ee6b3c55e3bdd638dc9/",target:"_blank",rel:"noopener noreferrer",style:{"background-color":"#ff2040",color:"#ffffff",height:"45px"}},{default:s(()=>[o(c,{style:{"font-size":"1.5em"}},{default:s(()=>[o(a)]),_:1}),Se]),_:1}),Oe,ze,Ae]),_:1})]),_:1})]),De])]),_:1}),o(h,null,{default:s(()=>[o(f)]),_:1})]),_:1}),o(b,{right:50,bottom:100})])}const Ze=g(I,[["render",Ie],["__scopeId","data-v-301fca3a"]]);export{Ze as default}; +import{_ as g,A as y,a as k}from"./index-387fbfa5.js";import{ah as n,o as w,c as v,V as o,P as s,a as e,ax as x,ay as S}from"./@vue-248d724b.js";import"./@splinetool-ead863f8.js";import"./vue-router-401d444e.js";import"./element-plus-bab1278a.js";import"./lodash-es-21c98b27.js";import"./@vueuse-89fc2c2e.js";import"./@element-plus-0de4ac96.js";import"./@popperjs-c75af06c.js";import"./@ctrl-f8748455.js";import"./dayjs-5c34775c.js";import"./async-validator-dee29e8b.js";import"./memoize-one-297ddbcb.js";import"./escape-html-64fe8e16.js";import"./normalize-wheel-es-ed76fb12.js";import"./@floating-ui-72671fae.js";import"./echarts-9ae96183.js";import"./zrender-e9104294.js";const O=""+new URL("OmicsSuite-UI.png",import.meta.url).href,z=""+new URL("OmicsSuite-3D.png",import.meta.url).href,A=""+new URL("OmicsSuite-Desktop.png",import.meta.url).href,D=""+new URL("OmicsSuite-Apps.png",import.meta.url).href;const I={components:{AppHeader:y,AppFooter:k},data(){return{}},mounted(){},methods:{downloadOmicsSuite(){const i="https://sourceforge.net/projects/omicssuite-github-io/files/latest/download";window.open(i,"_blank")}}},t=i=>(x("data-v-301fca3a"),i=i(),S(),i),T={class:"common-layout"},U={class:"page"},C=t(()=>e("br",null,null,-1)),V={class:"image-text-card"},F=t(()=>e("iframe",{src:"https://my.spline.design/chineseknot-3348c91bf16823549914fc172d72d7e8/",style:{width:"100%",height:"450px","border-width":"0px","border-radius":"10px"}},null,-1)),L=t(()=>e("br",null,null,-1)),R=t(()=>e("p",{class:"card-title"},"Chinese Knot",-1)),$=t(()=>e("br",null,null,-1)),B=t(()=>e("span",{style:{"font-size":"1.2em","font-weight":"bold"}},"Chinese Knot",-1)),H=t(()=>e("br",null,null,-1)),K=t(()=>e("br",null,null,-1)),N=t(()=>e("p",{class:"card-content"}," The OmicsSuite desktop interface is placed on the desk in the form of a large screen. The notebooks, books, earphones, vases and flowers on the desktop make the office environment very advanced and comfortable. ",-1)),j=t(()=>e("br",null,null,-1)),E={class:"image-text-card"},P=t(()=>e("img",{src:O,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),q=t(()=>e("br",null,null,-1)),G=t(()=>e("p",{class:"card-title"},"OmicsSuite UI",-1)),J=t(()=>e("br",null,null,-1)),M=t(()=>e("span",{style:{"font-size":"1.2em","font-weight":"bold"}},"OmicsSuite UI",-1)),Q=t(()=>e("br",null,null,-1)),W=t(()=>e("br",null,null,-1)),X=t(()=>e("p",{class:"card-content"}," The OmicsSuite desktop interface is placed on the desk in the form of a large screen. The notebooks, books, earphones, vases and flowers on the desktop make the office environment very advanced and comfortable. ",-1)),Y=t(()=>e("br",null,null,-1)),Z={class:"image-text-card"},ee=t(()=>e("img",{src:z,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),te=t(()=>e("br",null,null,-1)),oe=t(()=>e("p",{class:"card-title"},"OmicsSuite 3D Title",-1)),se=t(()=>e("br",null,null,-1)),ne=t(()=>e("span",{style:{"font-size":"1.2em","font-weight":"bold"}},"OmicsSuite 3D",-1)),le=t(()=>e("br",null,null,-1)),ie=t(()=>e("br",null,null,-1)),ae=t(()=>e("p",{class:"card-content"}," The OmicsSuite 3D title is directly in front, and simple three-dimensional elements such as spheres, cubes, swimming rings, and cones float around the title, making the picture lively. ",-1)),ce=t(()=>e("br",null,null,-1)),re={class:"image-text-card"},de=t(()=>e("img",{src:A,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),_e=t(()=>e("br",null,null,-1)),pe=t(()=>e("p",{class:"card-title"},"OmicsSuite Desktop",-1)),ue=t(()=>e("br",null,null,-1)),fe=t(()=>e("span",{style:{"font-size":"1.2em","font-weight":"bold"}},"OmicsSuite Desktop",-1)),he=t(()=>e("br",null,null,-1)),me=t(()=>e("br",null,null,-1)),be=t(()=>e("p",{class:"card-content"}," OmicsSuite software starts from the notebook and displays the user interface. From design to development, it reflects the developer's meticulousness and sufficient energy. ",-1)),ge=t(()=>e("br",null,null,-1)),ye={class:"image-text-card"},ke=t(()=>e("img",{src:D,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),we=t(()=>e("br",null,null,-1)),ve=t(()=>e("p",{class:"card-title"},"OmicsSuite Application",-1)),xe=t(()=>e("br",null,null,-1)),Se=t(()=>e("span",{style:{"font-size":"1.2em","font-weight":"bold"}},"OmicsSuite Application",-1)),Oe=t(()=>e("br",null,null,-1)),ze=t(()=>e("br",null,null,-1)),Ae=t(()=>e("p",{class:"card-content"}," The OmicsSuite sub-application is used for the logical steps of data analytics, and the startup will switch to a new operation interface, and the data input to the visual results is very smooth. ",-1)),De=t(()=>e("br",null,null,-1));function Ie(i,Te,Ue,Ce,Ve,Fe){const _=n("AppHeader"),p=n("el-header"),l=n("el-col"),a=n("Compass"),c=n("el-icon"),r=n("el-button"),d=n("el-row"),u=n("el-main"),f=n("AppFooter"),h=n("el-footer"),m=n("el-container"),b=n("el-backtop");return w(),v("div",T,[o(m,null,{default:s(()=>[o(p,null,{default:s(()=>[o(_)]),_:1}),o(u,null,{default:s(()=>[e("div",U,[C,e("div",V,[o(d,{gutter:20},{default:s(()=>[o(l,{span:24,sm:16,lg:16},{default:s(()=>[F]),_:1}),o(l,{span:24,sm:8,lg:8},{default:s(()=>[L,R,$,o(r,{tag:"a",href:"https://my.spline.design/chineseknot-3348c91bf16823549914fc172d72d7e8/",target:"_blank",rel:"noopener noreferrer",style:{"background-color":"#ff2040",color:"#ffffff",height:"45px"}},{default:s(()=>[o(c,{style:{"font-size":"1.5em"}},{default:s(()=>[o(a)]),_:1}),B]),_:1}),H,K,N]),_:1})]),_:1})]),j,e("div",E,[o(d,{gutter:20},{default:s(()=>[o(l,{span:24,sm:16,lg:16},{default:s(()=>[P]),_:1}),o(l,{span:24,sm:8,lg:8},{default:s(()=>[q,G,J,o(r,{tag:"a",href:"https://my.spline.design/bioscitoolsui-df7e0cf9cd7e90e07bb40b6e46a3010a/",target:"_blank",rel:"noopener noreferrer",style:{"background-color":"#ff2040",color:"#ffffff",height:"45px"}},{default:s(()=>[o(c,{style:{"font-size":"1.5em"}},{default:s(()=>[o(a)]),_:1}),M]),_:1}),Q,W,X]),_:1})]),_:1})]),Y,e("div",Z,[o(d,{gutter:20},{default:s(()=>[o(l,{span:24,sm:16,lg:16},{default:s(()=>[ee]),_:1}),o(l,{span:24,sm:8,lg:8},{default:s(()=>[te,oe,se,o(r,{tag:"a",href:"https://my.spline.design/benbenmiaocopy-991ffd2823326ce617ef4346945c6b09/",target:"_blank",rel:"noopener noreferrer",style:{"background-color":"#ff2040",color:"#ffffff",height:"45px"}},{default:s(()=>[o(c,{style:{"font-size":"1.5em"}},{default:s(()=>[o(a)]),_:1}),ne]),_:1}),le,ie,ae]),_:1})]),_:1})]),ce,e("div",re,[o(d,{gutter:20},{default:s(()=>[o(l,{span:24,sm:16,lg:16},{default:s(()=>[de]),_:1}),o(l,{span:24,sm:8,lg:8},{default:s(()=>[_e,pe,ue,o(r,{tag:"a",href:"https://my.spline.design/macbookprocopy-983bb9afaa57601ef10d4292f1d6c4d2/",target:"_blank",rel:"noopener noreferrer",style:{"background-color":"#ff2040",color:"#ffffff",height:"45px"}},{default:s(()=>[o(c,{style:{"font-size":"1.5em"}},{default:s(()=>[o(a)]),_:1}),fe]),_:1}),he,me,be]),_:1})]),_:1})]),ge,e("div",ye,[o(d,{gutter:20},{default:s(()=>[o(l,{span:24,sm:16,lg:16},{default:s(()=>[ke]),_:1}),o(l,{span:24,sm:8,lg:8},{default:s(()=>[we,ve,xe,o(r,{tag:"a",href:"https://my.spline.design/bioscitoolsapp-754a2c6048667ee6b3c55e3bdd638dc9/",target:"_blank",rel:"noopener noreferrer",style:{"background-color":"#ff2040",color:"#ffffff",height:"45px"}},{default:s(()=>[o(c,{style:{"font-size":"1.5em"}},{default:s(()=>[o(a)]),_:1}),Se]),_:1}),Oe,ze,Ae]),_:1})]),_:1})]),De])]),_:1}),o(h,null,{default:s(()=>[o(f)]),_:1})]),_:1}),o(b,{right:50,bottom:100})])}const Ze=g(I,[["render",Ie],["__scopeId","data-v-301fca3a"]]);export{Ze as default}; diff --git a/assets/DesignView-9614fae7.css b/assets/DesignView.css similarity index 100% rename from assets/DesignView-9614fae7.css rename to assets/DesignView.css diff --git a/assets/DownloadView-0f74b4c5.js b/assets/DownloadView-0f74b4c5.js deleted file mode 100644 index 3d0a184..0000000 --- a/assets/DownloadView-0f74b4c5.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as h,A as b,a as g,b as f,c as x}from"./index-82148c11.js";import{ah as i,o as w,c as y,V as l,P as a,ax as S,ay as v,a as e,T as t}from"./@vue-248d724b.js";import"./vue-router-401d444e.js";import"./element-plus-ab7336d6.js";import"./lodash-es-21c98b27.js";import"./@vueuse-89fc2c2e.js";import"./@element-plus-0de4ac96.js";import"./@popperjs-c75af06c.js";import"./@ctrl-f8748455.js";import"./dayjs-5c34775c.js";import"./async-validator-dee29e8b.js";import"./memoize-one-297ddbcb.js";import"./escape-html-64fe8e16.js";import"./normalize-wheel-es-ed76fb12.js";import"./@floating-ui-72671fae.js";import"./echarts-9ae96183.js";import"./zrender-e9104294.js";const A={components:{AppHeader:b,AppFooter:g},data(){return{}},mounted(){}},o=n=>(S("data-v-821e49a2"),n=n(),v(),n),q={class:"common-layout"},N=o(()=>e("div",null,[e("img",{src:f,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}}),e("div",{class:"image-text-card"},[e("p",{class:"card-title"},"SourceForge Download (Default):"),e("a",{href:"https://sourceforge.net/projects/omicssuite-github-io/",target:"_blank",style:{color:"#008888","font-weight":"bold"}},"https://sourceforge.net/projects/omicssuite-github-io/"),e("br"),e("br"),e("p",{class:"card-title"},"GitHub Download:"),e("a",{href:"https://github.com/OmicsSuite/OmicsSuite.github.io/releases/",target:"_blank",style:{color:"#008888","font-weight":"bold"}},"https://github.com/OmicsSuite/OmicsSuite.github.io/releases/"),e("br"),e("br"),e("p",{class:"card-title"},"Aliyun Download:"),e("a",{href:"https://www.aliyundrive.com/s/Defuhf7FVGw",target:"_blank",style:{color:"#008888","font-weight":"bold"}},"https://www.aliyundrive.com/s/Defuhf7FVGw")])],-1)),O=o(()=>e("div",null,[e("br"),e("p",{style:{"font-size":"2em","font-weight":"bold",color:"#000000"}}," Versions History "),e("div",{class:"image-text-card"},[e("div",{style:{width:"100%",height:"auto",background:"radial-gradient(#00808088 0, #00808055 100%)","border-radius":"10px",padding:"5px","text-align":"center"}},[e("img",{src:x,alt:"OmicsSuite",style:{height:"200px",margin:"auto","border-radius":"20%"}})]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808055 100%)",padding:"20px","line-height":"30px"}},[e("h3",null,"OmicsSuite-v1.3.9"),e("b",null,"Github:"),t(),e("a",{href:"https://github.com/OmicsSuite/OmicsSuite.github.io",style:{color:"#ffffff"}},"https://github.com/OmicsSuite/OmicsSuite.github.io"),t(),e("br"),e("b",null,"Website:"),t(),e("a",{href:"https://OmicsSuite.github.io",style:{color:"#ffffff"}},"https://OmicsSuite.github.io"),t(),e("br"),e("b",null,"SourceForge:"),t(),e("a",{href:"https://sourceforge.net/projects/OmicsSuite-github-io/",style:{color:"#ffffff"}},"https://sourceforge.net/projects/OmicsSuite-github-io/"),t(),e("br"),e("br"),e("b",null,"Download1 (Github Release):"),t(),e("a",{href:"https://github.com/OmicsSuite/OmicsSuite.github.io/releases/download/v1.3.9/OmicsSuite-v1.3.9.exe",style:{color:"#ffffff"}},"OmicsSuite-v1.3.9 [Windows]"),t(),e("br"),e("b",null,"Download2 (SourceForge):"),t(),e("a",{href:"https://sourceforge.net/projects/OmicsSuite-github-io/files/latest/download",style:{color:"#ffffff"}},"OmicsSuite-v1.3.9 [Windows]"),t(),e("br"),e("b",null,"Download3 (AliyunDrive):"),t(),e("a",{href:"https://www.aliyundrive.com/s/Defuhf7FVGw",style:{color:"#ffffff"}},"OmicsSuite-v1.3.9 [Windows]"),t(),e("br"),e("hr"),e("b",null,"Author: Benben Miao"),t(),e("br"),e("b",null,"Email:"),t(" benben.miao@outlook.com "),e("br")]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite-v1.3.9"),e("b",null,"Date: 2023-09-07"),t(),e("br"),e("p",null,[e("b",null,"New Feature:"),t(" 1.1 Added ShinySEM application to Algorithm category for building structural equation models and visualization (在Algorithm分类中新增ShinySEM应用,用于构建结构方程模型和可视化).")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 2.1 Fix links in OmicsSuite to provide CDN support (修复OmicsSuite中的链接,提供CDN支持).")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite-v1.3.8"),e("b",null,"Date: 2023-08-02"),t(),e("br"),e("p",null,[e("b",null,"New Feature:"),t(" 1.1 BioSciTools has been renamed OmicsSuite, and the corresponding github repository, website, and download links have been updated synchronously (BioSciTools更名为OmicsSuite,对应的GitHub仓库、网站、下载链接同步更新).")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 2.1 Fix the issue of some apps failing to run (修复部分app运行失败的问题).")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite-v1.3.6"),e("b",null,"Date: 2023-05-15"),t(),e("br"),e("b",null,[t("Update: "),e("a",{href:"https://mp.weixin.qq.com/s/IVu9EAxeV58VZzhW7nu90g",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/IVu9EAxeV58VZzhW7nu90g"),t(),e("br")]),e("p",null,[e("b",null,"New Feature:"),t(" 1.1 ① redesigned Logo based on the original logo; ② New website: https://OmicsSuite.podia.com; ③ promotional video: OmicsSuite Video. (①基于原版Logo重新设计的Logo;②新的网站:https://OmicsSuite.podia.com;③宣传视频:OmicsSuite Video。).")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 2.1 ① Update some application codes and parameters, such as CorPlot, PCAPlot, TSNEPlot, etc. ② Fix the running problems of some applications caused by the database. (①更新部分应用的代码和参数,如CorPlot, PCAPlot, TSNEPlot等;②修复部分应用由于数据库导致的运行问题。).")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite-v1.3.5"),e("b",null,"Date: 2023-03-20"),t(),e("br"),e("b",null,[t("Update: "),e("a",{href:"https://mp.weixin.qq.com/s/D72wOFkjTfWJAwWd9vkWlw",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/D72wOFkjTfWJAwWd9vkWlw"),t(),e("br")]),e("p",null,[e("b",null,"New Feature:"),t(" 1.1 ① Reduce the color, tone and transparency of all UI interfaces of the program; (2) optimize the description of parameters, especially the input file type and upload mode, such as the sequence input is mainly in Fasta format, which supports pasting sequence and uploading sequence files, the table data is mainly in Txt text tab format, which supports button upload and drag, and the single-cell Cellrange/Visium large data file mainly uses the specified file path. ③ Add references to all programs (published articles or R citation) (①降低程序所有UI界面的颜色色调和透明度;②优化参数说明,尤其是输入文件类型和上传方式,如序列输入主要以Fasta格式,支持粘贴序列和上传序列文件,表格数据主要以Txt文本制表符格式,支持按钮上传和拖拽方式,单细胞Cellrange/Visium大型数据文件主要以指定文件路径即可等;③所有程序添加参考文献(发表文章或R引用方式)).")]),e("p",null,[e("b",null,"New App:"),t(" 2.1 Introduce the 30+Shiny framework program I developed and optimized before through Java encryption code (通过Java加密代码方式引入我之前开发并优化的30+Shiny框架程序).")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.1 Solve the adaptation problem of some users due to the screen resolution of notebook or desktop computer (解决部分用户由于笔记本或台式电脑屏幕分辨率的适配问题).")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite-v1.3.4"),e("b",null,"Date: 2023-03-04"),t(),e("br"),e("b",null,[t("Update: "),e("a",{href:"https://mp.weixin.qq.com/s/mvkuJv95T8wsFcxK6_NDxg",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/mvkuJv95T8wsFcxK6_NDxg"),t(),e("br")]),e("p",null,[e("b",null,"UI Design:"),t(" 1.1 Add the OpenExample button at the bottom of the table window for all programs, which is convenient for users to find the program sample data and prepare the data structure suitable for the program according to the sample data (为所有程序在表格窗口下方添加OpenExample按钮,方便用户找到程序示例数据,并根据示例数据准备适合程序的数据结构).")]),e("p",null,[e("b",null,"New App:"),t(" 2.1 There are three new procedures for genome gene density and two/three genome collinearity analysis in Genomics genome classification, including genome density, digenomesynty and trigenomesynty.")]),e("p",null,[e("b",null,"New App:"),t(" 2.2 Six programs related to differentially expressed genes and KEGG Pathway visualization (`mversusa (maplot), upset, PathwayNativeSinglesmaple, PathwayNativeMultisample, PathwayGraphvizsingle, PathwayGraphvizmulti') in the Transcriptomics classification.")]),e("p",null,[e("b",null,"New App:"),t(" 2.3 Eight Metabolomics programs based on the original analysis of LC-MS mass spectrometry data mzML have been added to the metabolomics metabolomics classification, including metabomZML, metabomHeatmap, metaboroi, metabobasepeakion, metabotaliochrom, metabopeakintensity, metabopeakrt and metabopeakanno.")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.1 Solve the analysis process interruption and task failure caused by Chinese user names of some users. This update will be suitable for most Windows computer environments (解决部分用户由于中文用户名导致的分析进程中断及任务失败,此次更新将适合于大多数Windows电脑环境).")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite-v1.3.3"),e("b",null,"Date: 2023-02-26"),t(),e("br"),e("b",null,[t("Update: "),e("a",{href:"https://mp.weixin.qq.com/s/dYfH83mEccsLyeCoMLzoRw",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/dYfH83mEccsLyeCoMLzoRw"),t(),e("br")]),e("p",null,[e("b",null,"UI Design:"),t(' 1.1 This update beautifies the startup interface and the "OmicsSuite" on the Home page, classifies and counts Echarts (此次更新美化启动界面和Home页面的`OmicsSuite`所有程序分类和统计Echarts).')]),e("p",null,[e("b",null,"New App:"),t(" 2.1 SingleCell classification of' Singlecell' is related to single cell differentiation trajectory ('monocle umap, monocle marker, monocle trajectories') and single cell spatial transcriptome ('spatial feature, spatial gene, spatial umap, spatialtsne, SpatialAirClusterMaker, SpatialAllClusterMaker, Spatial Slice`) a total of 10 programs.")]),e("p",null,[e("b",null,"New App:"),t(" 2.2 Six programs related to differentially expressed genes and KEGG Pathway visualization (`mversusa (maplot), upset, PathwayNativeSinglesmaple, PathwayNativeMultisample, PathwayGraphvizsingle, PathwayGraphvizmulti') in the Transcriptomics classification.")]),e("p",null,[e("b",null,"New App:"),t(" 2.3 Seven programs related to the operation of `sequences` nucleotide sequence or amino acid sequence (`seqslength, seqsheartail, seqsslice, seqsgc, seqstranslate, seqpalindrome, pairwise alignment').")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.1 Fix the problem of slow loading of CDN when accessing the right sidebar page (修复右侧边栏页面访问时CDN加载缓慢的问题).")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite-v1.3.2"),e("b",null,"Date: 2023-02-19"),t(),e("br"),e("b",null,[t("Update: "),e("a",{href:"https://mp.weixin.qq.com/s/quZ2bNI6ZUYu8_Gjrua4RQ",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/quZ2bNI6ZUYu8_Gjrua4RQ"),t(),e("br")]),e("p",null,[e("b",null,"UI Design:"),t(" 1.1 Fixed slow loading of animation in startup interface (修复启动界面的动画加载缓慢).")]),e("p",null,[e("b",null,"New App:"),t(" 2.1 Update the data analysis program of single cell conventional transcriptome (SingleCell RNA-Seq) based on the output of 10X Genomics sequencing CellRange. Many programs mainly refer to 10X Genomics data format and Seurat data analysis flow, allowing users to perform data QC, cell filtering, mitochondrial gene proportion statistics, Feature filtering, hypervariable Feature identification, PCA analysis and JackStraw's selection of PCA, cell UMAP/TSNE clustering, Marker gene selection of all Cluster, and output visual results and corresponding tabular data in all analyses. The update procedures are as follows: update Heatmap and CircosHeatmap in Algorithm classification, update feature QC, feature filter, feature variable, feature PCA, PCA Jack Straw, Cell Umap, Celtsne in SingleCell classification, MarkerViolin, MarkerUMAP, MarkerHeatmap, CellAnnotation (更新带来基于10X Genomics测序CellRange输出结果的单细胞常规转录组(SingleCell RNA-Seq)数据分析程序。多个程序主要参考10X Genomics数据格式和Seurat数据分析流程,允许用户执行数据QC、细胞过滤、线粒体基因占比统计、Feature过滤、高变Feature鉴定、PCA分析及JackStraw对PCA的选择、细胞UMAP/TSNE聚类、所有Cluster的Marker基因选择,所有分析中输出可视化结果和对应的表格数据。更新程序如下:Algorithm分类中更新Heatmap、CircosHeatmap,SingleCell分类中更新FeatureQC, FeatureFilter, FeatureVariable, FeaturePCA, PCAJackStraw, CellUMAP, CellTSNE, MarkerViolin, MarkerUMAP, MarkerHeatmap, CellAnnotation).")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.1 Fixed slow loading of animation in startup interface (修复启动界面的动画加载缓慢).")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite-v1.3.1"),e("b",null,"Date: 2023-01-07"),t(),e("br"),e("b",null,[t("Update: "),e("a",{href:"https://mp.weixin.qq.com/s/j12ysJWhZYpXruF1r50rKA",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/j12ysJWhZYpXruF1r50rKA"),t(),e("br")]),e("p",null,[e("b",null,"UI Design:"),t(" 1.1 Optimize and update tool drawer category columns and icons (优化和更新工具抽屉分类栏目和图标).")]),e("p",null,[e("b",null,"New App:"),t(" 2.1 Add nearly 30 omics-related programs such as HG 19 Gene EXP, HG 19 Gene Marker, Chloroplast Genome, Mito Genome, Maftitv, Mafachange, Mafomatic Interaction, etc (新增HG19GeneExp, HG19GeneMarker, ChloroplastGenome, MitoGenome, MafTiTv, MafAAChange, MafSomaticInteraction等近30个组学相关的程序).")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.1 Fix the flashing of the main page to make the program load more smoothly (修复主页面画面闪动,使得程序加载更加流畅).")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite-v1.3.0"),e("b",null,"Date: 2022-12-07"),t(),e("br"),e("b",null,[t("Update: "),e("a",{href:"https://mp.weixin.qq.com/s/eHK8ILEzsjTWQCQyIYCMMQ",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/eHK8ILEzsjTWQCQyIYCMMQ"),t(),e("br")]),e("p",null,[e("b",null,"UI Design:"),t(" 1.1 The main purpose of updating the interface of OmicsSuiteUI is to make the program simpler, more comfortable and more modern. I also examined my own aesthetic standards through continuous exploration, and finally found that a good interface needs clear logic, simple and comfortable interface (更新OmicsSuiteUI界面主要为了使得程序更加简约、舒服、现代化,我也是在不断探索中审视自己的审美观,最终发现好的界面需要逻辑清晰、界面简约舒适).")]),e("p",null,[e("b",null,"New App:"),t(" 2.1 The newly added Apps mainly include barstat, scatterplot, groupline, quantile q (QQ), density normal, boxstat, violinstat, piestat, dounstat, and Seq Motif in Sequence category (新增Apps主要包括Statistics分类中的BarStat, ScatterPlot, GroupLine, QuantileQ(QQ), DensityNormal, BoxStat, ViolinStat, PieStat, DountStat,以及Sequence分类中的Seq Motif程序).")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.1 Temporarily shut down the use of Shiny Apps program, and the code logic and security problems are still being solved (暂时关闭Shiny Apps程序的使用,代码逻辑和安全问题仍然在解决).")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite-v1.2.5"),e("b",null,"Date: 2022-10-30"),t(),e("br"),e("b",null,[t("Update: "),e("a",{href:"https://mp.weixin.qq.com/s/38rDWcsIxTIRgbPNCudhaw",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/38rDWcsIxTIRgbPNCudhaw"),t(),e("br")]),e("p",null,[e("b",null,"New Features:"),t(" 1.1 New courses and feedback section (新增课程与反馈板块).")]),e("p",null,[e("b",null,"New Features:"),t(" 1.2 New Shiny programs, such as Network Shiny, WGCNA Shiny and Community Shiny (新增Shiny程序,如Network Shiny、WGCNA Shiny、Community Shiny).")]),e("p",null,[e("b",null,"New Features:"),t(" 1.3 Re-adjust the layout and beautification of the program interface (重新调整程序界面布局和美化).")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite-v1.2.4"),e("b",null,"Date: 2022-10-30"),t(),e("br"),e("b",null,[t("Update: "),e("a",{href:"https://mp.weixin.qq.com/s/YeYZ-M-QCwr18Vc6Quytzg",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/YeYZ-M-QCwr18Vc6Quytzg"),t(),e("br")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 1.0 This update is an emergency update, which mainly solves the fatal problem that many researchers can't start after installing OmicsSuite recently. ① This problem is not caused by Java and R environment. The program comes with a compressed version of JDK-11 environment, so users don't need to install any version of Java themselves. ② This problem is mainly due to the regional shielding of specific domain names in https://api.github.com. Therefore, this update mainly solves the problem that the API in the function is automatically requested to be updated when the program is started, and the program can be started and run under any circumstances of networking or disconnection after the update (此次更新属于紧急更新,主要解决近期以来不少科研者遇到安装OmicsSuite后无法启动的致命问题。①该问题不是由于Java和R环境导致,程序自带压缩版本的JDK-11环境,用户无须自己安装任何版本的Java。②该问题主要由于区域对https://api.github.com特定域名的屏蔽,因此此次更新主要解决由于程序启动时自动请求更新函数中的API,更新后可在联网或断网的任何情况下启动并运行程序).")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite-v1.2.3"),e("b",null,"Date: 2022-09-30"),t(),e("br"),e("b",null,[t("Update: "),e("a",{href:"https://mp.weixin.qq.com/s/yNleCDhdfmmFiv97LrRWlA",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/yNleCDhdfmmFiv97LrRWlA"),t(),e("br")]),e("p",null,[e("b",null,"New Feature:"),t(" 1.0 The color of the beautified menu bar after expansion is light blue with a little bit of technological style, and the transparency with shadows is set to be similar to the ground glass effect. The drop position of the menu bar is designed to be 5px, and all submenu bars are designed to be rounded rectangles (美化菜单栏展开后的颜色为淡蓝色带有些许科技风,并设置带有阴影的透明度类似毛玻璃效果,设计菜单栏下落位置为5px以及设计所有子菜单栏为圆角矩形).")]),e("p",null,[e("b",null,"New Feature:"),t(" 2.0 The native Choicebox selection box is designed as a rounded rectangle, and the drop-down selection box is designed as transparent light blue (将原生自带的Choicebox选择框设计为圆角矩形,及将下拉选择框设计为透明淡蓝色).")]),e("p",null,[e("b",null,"New Feature:"),t(" 3.0 Each category of the toolbox is added with a corresponding color icon, and the number of programs label is added (工具箱每个分类增加对应的彩色图标,并增加程序数量标签).")]),e("p",null,[e("b",null,"New Feature:"),t(" 4.0 Light blue glow is added to all tool cards on the home page to show the scientific trend and add a light red background to the labels of tool cards (首页所有Tool Cards添加淡蓝色辉光,展示科技风,为工具卡片的标签添加淡红色背景).")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: v1.2.2"),e("b",null,"Date: 2022-09-28"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/LIjTmbgKWQJe9nSfX2wi0w",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/LIjTmbgKWQJe9nSfX2wi0w"),t(),e("br"),e("p",null,[e("b",null,"New App:"),t(" 1.0 Ribosome 16S DNA Mindmap (微生物原核核糖体16S DNA即扩增子测序流程的思维导图).")]),e("p",null,[e("b",null,"New App:"),t(" 2.0 Metagenome Illumina Mindmap (微生物基于Illumina平台宏基因组测序及分析流程的思维导图).")]),e("p",null,[e("b",null,"New App:"),t(" 3.0 Metagenome PacBio Mindmap (微生物基于PacBio平台宏基因组测序及分析流程的思维导图).")]),e("p",null,[e("b",null,"New App:"),t(" 4.0 Glycometabolism Mindmap (糖代谢的复杂过程网络的思维导图).")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.2.1"),e("b",null,"Date: 2022-09-27"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/ulDSHmqwGC30eP8EXqh5yA",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/ulDSHmqwGC30eP8EXqh5yA"),t(),e("br"),e("p",null,[e("b",null,"New Features:"),t(" 1.0 Complete the window and content of "),e("b",null,"Help -> HelpDoc"),t(". ")]),e("p",null,[e("b",null,"New Features:"),t(" 2.0 Complete the window and content of "),e("b",null,"Help -> About"),t(". ")]),e("p",null,[e("b",null,"New Features:"),t(" 3.0 Complete the window and content of "),e("b",null,"Help -> Source"),t(". ")]),e("p",null,[e("b",null,"New Features:"),t(" 4.0 Complete the window and content of "),e("b",null,"Help -> Version"),t(". ")]),e("p",null,[e("b",null,"New Features:"),t(" 5.0 Complete the window and content of "),e("b",null,"Help -> Update"),t(". ")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.2.0"),e("b",null,"Date: 2022-09-25"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/NIua7cNeOGINfvmq9YgcZw",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/NIua7cNeOGINfvmq9YgcZw"),t(),e("br"),e("p",null,[e("b",null,"New Features:"),t(" 1.0 This update of OmicsSuite adds automatic detection of new stable versions when starting programs. The official address for releasing new versions is: https://github.com/OmicsSuite/OmicsSuite.github.io/releases At the same time, this update is version 1.2.0, which means that important functions are new and new.(OmicsSuite此次更新增加了启动程序时自动检测新的稳定版本,新版本释放官方地址为:https://github.com/OmicsSuite/OmicsSuite.github.io/releases,同时此次更新为1.2.0版本,意味着重要功能跟新和新的开始。) ")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.1.3"),e("b",null,"Date: 2022-06-25"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/Q1Dhy6_vyh4u0pHhTCGI2w",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/Q1Dhy6_vyh4u0pHhTCGI2w"),t(),e("br"),e("p",null,[e("b",null,"New Apps:"),t(" 1.0 ChordPlot (弦图可视化复杂配对关系). ")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.1.2"),e("b",null,"Date: 2022-06-09"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/GoAxeMZeo7okmW5KxErtWw",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/GoAxeMZeo7okmW5KxErtWw"),t(),e("br"),e("p",null,[e("b",null,"New Apps:"),t(" 1.0 SurvivalAnalysis (临床医学生存分析). ")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.0 WGCNA Results Download. ")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.1.1"),e("b",null,"Date: 2022-06-07"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/WU6-WclLa8X6JQi1z9XISg",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/WU6-WclLa8X6JQi1z9XISg"),t(),e("br"),e("p",null,[e("b",null,"New Apps:"),t(" 1.0 WGCNA (WGCNA 加权基因共表达网络分析). ")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.1.0"),e("b",null,"Date: 2022-05-31"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/gSPEJ4-KXJtsg9P8rc84LQ",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/gSPEJ4-KXJtsg9P8rc84LQ"),t(),e("br"),e("p",null,[e("b",null,"New Apps:"),t(" 1.0 ClusterPlot (聚类分析多算法散点多边形可视化). ")]),e("p",null,[e("b",null,"New Apps:"),t(" 1.1 ClusterTree (聚类分析多算法多类型树状可视化). ")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.0 Fixed home page categories list (修复首页程序分类列表). ")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.0.9"),e("b",null,"Date: 2022-05-10"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/AtQpM6-7cPcFercaHCb9tw",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/AtQpM6-7cPcFercaHCb9tw"),t(),e("br"),e("p",null,[e("b",null,"New Features:"),t(" 2.0 OmicsSuite provides an analysis result Table Download interface for all algorithms on which data analysis programs are based, such as PCA, TSNE, GO enrichment, KEGG enrichment, etc. Users can download data analysis result files by running the result [Table Download] button (OmicsSuite 为所有数据分析程序基于的算法如PCA、TSNE、GO enrichment、KEGG enrichment等提供分析结果表格下载接口,用户可以通过运行结果【Table Download】按钮下载数据分析结果文件). ")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.0 Fix the sample data of GO and KEGG format error (修复GO和KEGG示例数据格式错误问题). ")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.0.8"),e("b",null,"Date: 2022-05-10"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/Y7-FoaTt7CeMS0ymPvMzfA",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/Y7-FoaTt7CeMS0ymPvMzfA"),t(),e("br"),e("p",null,[e("b",null,"New Features:"),t(" 2.0 Browser buttons and table boxes of all programs support dragging and uploading data files (所有程序的Browser按钮和表格框支持拖拽上传数据文件). ")]),e("p",null,[e("b",null,"New Features:"),t(" 2.1 All programs add a progress bar display to show the progress of background tasks (所有程序添加进度条展示器用于显示后台任务的执行进度). ")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.0 None. ")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.0.7"),e("b",null,"Date: 2022-05-09"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/EJLthBZggalhs_z0nC6xmQ",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/EJLthBZggalhs_z0nC6xmQ"),t(),e("br"),e("p",null,[e("b",null,"New Apps:"),t(" 1.0 GOenrichStat, GOenrichBar, GOenrichBubble, GOenrichNet, GOenrichTree, GOenrichMap (新增 GO 富集分析 6 个Apps). ")]),e("p",null,[e("b",null,"New Apps:"),t(" 1.1 KEGGenrichBar, KEGGenrichBubble, KEGGenrichNet, KEGGenrichTree, KEGGenrichMap (新增 KEGG 富集分析 5 个Apps). ")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.0 None. ")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.0.6"),e("b",null,"Date: 2022-05-06"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/5AUKxQCConxOJHcn2PmNpw",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/5AUKxQCConxOJHcn2PmNpw"),t(),e("br"),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.0 Emergency repair (紧急修复组件安全及更新).")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.1 Repair the operation logic of the Clear button of all apps, including resetting data and all parameters (修复所有App的Clear按钮的操作逻辑,包括重置数据及所有参数).")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.2 Clear the buffer data and results when closing App Tab button, and reset all variables and parameters (修复关闭App Tab按钮时清理缓冲数据及结果,并重置所有变量及参数).")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.3 Optimize the aesthetics of App Tab button (优化App Tab按钮的美观度).")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.0.5"),e("b",null,"Date: 2022-05-06"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/5AUKxQCConxOJHcn2PmNpw",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/5AUKxQCConxOJHcn2PmNpw"),t(),e("br"),e("p",null,[e("b",null,"New Apps:"),t(" 1.0 SinCosTan (三角函数表达式与可视化)")]),e("p",null,[e("b",null,"New Apps:"),t(" 1.1 FourierFormula (傅里叶级数与变换可视化)")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.0 Fixed option of Clear button (修复 Clear 按钮的操作逻辑,避免数据交叉).")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.0.4"),e("b",null,"Date: 2022-05-03"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/yj_-f98Vu_Uzczt2IB1SYw",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/yj_-f98Vu_Uzczt2IB1SYw"),t(),e("br"),e("p",null,[e("b",null,"New Apps:"),t(" 1.0 NetworkPlot (Regulatory Network Plot) (新增 Network Plot App!)")]),e("p",null,[e("b",null,"New Apps:"),t(" 1.1 CommunityPlot (Regulatory Network Plot) (新增 Community Plot App!)")]),e("p",null,[e("b",null,"New Features:"),t(" 2.0 The regulatory network plays a significant advantage in exploring the analysis of complex biological regulatory relationships. Based on the regulatory pairing data between two types of nodes (it is suggested that the regulatory relationship pairs meet the significance), this program constructs the regulatory relationship network by calculating the connectivity or simply counting the number of nodes, and visualizes it. Is suitable for that regulation relationship of protein-protein, gene-gene, microRNA-mrna, TF-gene, microRNA-circrna, microRNA-lncrna and other molecular pair. (调控网络在探索生物学复杂的调控关系分析中发挥着显著的优势,本程序基于两类节点间的调控配对数据(建议是符合显著性的调控关系对)通过计算连接度或单纯计算节点数进行构建调控关系网络并可视化。适用于Protein - Protein, Gene - Gene, MicroRNA - mRNA, TF - Gene, MicroRNA - CircRNA, MicroRNA - LncRNA等分子对调控关系。)")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.0 Fixed options icon from dynamic to static.")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.0.3"),e("b",null,"Date: 2022-05-03"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/f0SF7EtGwKy47y6JDaP0JQ",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/f0SF7EtGwKy47y6JDaP0JQ"),t(),e("br"),e("p",null,[e("b",null,"New Apps:"),t(" 1.0 TSNEPlot (TSNE analysis and Plot) (新增 TSNE Plot App!)")]),e("p",null,[e("b",null,"New Apps:"),t(" 1.1 VolcanoPlot (Volcano and Plot) (新增 Volcano Plot App!)")]),e("p",null,[e("b",null,"New Features:"),t(" 2.0 Add OmicsSuite clock and dynamic painting in the right drawer of the Home page. (Home 页面右抽屉添加OmicsSuite时钟和动态花绘。)")]),e("p",null,[e("b",null,"New Features:"),t(" 2.1 At the bottom of the program, add an access window related to OmicsSuite, and you need to connect to the network. (程序页面底部添加OmicsSuite相关的访问窗口,需要连接网络访问。)")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.0 None.")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.0.2"),e("b",null,"Date: 2022-05-01"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/QNLV8dLrXz1kRDeiaLqc9w",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/QNLV8dLrXz1kRDeiaLqc9w"),t(),e("br"),e("p",null,[e("b",null,"New Apps:"),t(" 1.0 Venn Plot (Venn Diagram Plot up to 7 sets) (新增 VennPlot App!)")]),e("p",null,[e("b",null,"New Features:"),t(" 2.0 The right drawer of the Home page supports small screen access to Bioscience Tools official website and access to version update information. (Home 页面右抽屉支持小屏幕访问 OmicsSuite 官网和访问版本更新信息。)")]),e("p",null,[e("b",null,"New Features:"),t(" 2.1 The left drawer of the Home page crosses the mouse over the program button to support the preview function of the program interface. (Home 页面左抽屉在程序按钮上划过鼠标支持程序界面预览功能。)")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.0 None.")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.0.1"),e("b",null,"Date: 2022-04-30"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/SxNTbKUw-lJhxgJppjUqxA",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/SxNTbKUw-lJhxgJppjUqxA"),t(),e("br"),e("p",null,[e("b",null,"New Apps:"),t(" 1.0 PCAPlot (Principal Component Analysis and Plot). (新增 PCAPlot 进行 PCA 降维分析及可视化 App!)")]),e("p",null,[e("b",null,"New Features:"),t(" 2.0 Add the Slider component for the first time. (首次添加数值滑动组件。)")]),e("p",null,[e("b",null,"New Features:"),t(" 2.1 Added official website information and version update section to the Home page for the first time. (首次在 Home 页面增加官网信息及版本更新板块。)")]),e("p",null,[e("b",null,"New Features:"),t(" 2.2 Add the Clear button to reset the data. (为了方便用户清除当前的数据进行后续分析,添加 Clear 按钮作为 Trash回收。)")]),e("p",null,[e("b",null,"Bug Fixed:"),t("3.0 Reduce the installer file. (减小 OmicsSuite 安装程序文件。)")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.0.0"),e("b",null,"Date: 2022-04-28"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/DM5j4PDnBExwBu5o9VTr7g",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/DM5j4PDnBExwBu5o9VTr7g"),t(),e("br"),e("p",null,[e("b",null,"New Apps:"),t(" 1.1 RevCom (Reverse Complete) (新增 RevCom DNA序列反向互补操作 App!)")]),e("p",null,[e("b",null,"New Apps:"),t(" 1.2 CorPlot (Correlation Analysis and Plot) (新增 CorPlot 样品 Pearson 相关性分析及可视化 App。)")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 2.1 Package JRE 11 Java environment in OmicsSuite, so the Java 8 or later version don't need on user's computer.")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.0.0-Alpha"),e("b",null,"Date: 2022-04-26"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/cGxWvXsDHoHwVE04NIzuOw",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/cGxWvXsDHoHwVE04NIzuOw"),t(),e("br"),e("p",null,[e("b",null,"New Apps:"),t(" OmicsSuite project assumption -> JavaFX project was developed based on Java 11 -> OmicsSuite framework was preliminarily completed -> OmicsSuite (UI) user interface prototype design was completed. ")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" Compile for the first time and support the installation of Windows platform.")])])])],-1)),C=o(()=>e("br",null,null,-1));function F(n,k,P,D,G,H){const s=i("AppHeader"),r=i("el-header"),p=i("el-main"),u=i("AppFooter"),d=i("el-footer"),c=i("el-container"),m=i("el-backtop");return w(),y("div",q,[l(c,null,{default:a(()=>[l(r,null,{default:a(()=>[l(s)]),_:1}),l(p,null,{default:a(()=>[N,O,C]),_:1}),l(d,null,{default:a(()=>[l(u)]),_:1})]),_:1}),l(m,{right:50,bottom:100})])}const Y=h(A,[["render",F],["__scopeId","data-v-821e49a2"]]);export{Y as default}; diff --git a/assets/DownloadView-1722a7ac.js b/assets/DownloadView-1722a7ac.js deleted file mode 100644 index 410fc13..0000000 --- a/assets/DownloadView-1722a7ac.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as h,A as b,a as g,b as f,c as x}from"./index-25c25b6f.js";import{ah as i,o as w,c as y,V as l,P as a,ax as S,ay as v,a as e,T as t}from"./@vue-248d724b.js";import"./vue-router-401d444e.js";import"./element-plus-ab7336d6.js";import"./lodash-es-21c98b27.js";import"./@vueuse-89fc2c2e.js";import"./@element-plus-0de4ac96.js";import"./@popperjs-c75af06c.js";import"./@ctrl-f8748455.js";import"./dayjs-5c34775c.js";import"./async-validator-dee29e8b.js";import"./memoize-one-297ddbcb.js";import"./escape-html-64fe8e16.js";import"./normalize-wheel-es-ed76fb12.js";import"./@floating-ui-72671fae.js";import"./echarts-9ae96183.js";import"./zrender-e9104294.js";const A={components:{AppHeader:b,AppFooter:g},data(){return{}},mounted(){}},o=n=>(S("data-v-821e49a2"),n=n(),v(),n),q={class:"common-layout"},N=o(()=>e("div",null,[e("img",{src:f,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}}),e("div",{class:"image-text-card"},[e("p",{class:"card-title"},"SourceForge Download (Default):"),e("a",{href:"https://sourceforge.net/projects/omicssuite-github-io/",target:"_blank",style:{color:"#008888","font-weight":"bold"}},"https://sourceforge.net/projects/omicssuite-github-io/"),e("br"),e("br"),e("p",{class:"card-title"},"GitHub Download:"),e("a",{href:"https://github.com/OmicsSuite/OmicsSuite.github.io/releases/",target:"_blank",style:{color:"#008888","font-weight":"bold"}},"https://github.com/OmicsSuite/OmicsSuite.github.io/releases/"),e("br"),e("br"),e("p",{class:"card-title"},"Aliyun Download:"),e("a",{href:"https://www.aliyundrive.com/s/Defuhf7FVGw",target:"_blank",style:{color:"#008888","font-weight":"bold"}},"https://www.aliyundrive.com/s/Defuhf7FVGw")])],-1)),O=o(()=>e("div",null,[e("br"),e("p",{style:{"font-size":"2em","font-weight":"bold",color:"#000000"}}," Versions History "),e("div",{class:"image-text-card"},[e("div",{style:{width:"100%",height:"auto",background:"radial-gradient(#00808088 0, #00808055 100%)","border-radius":"10px",padding:"5px","text-align":"center"}},[e("img",{src:x,alt:"OmicsSuite",style:{height:"200px",margin:"auto","border-radius":"20%"}})]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808055 100%)",padding:"20px","line-height":"30px"}},[e("h3",null,"OmicsSuite-v1.3.9"),e("b",null,"Github:"),t(),e("a",{href:"https://github.com/OmicsSuite/OmicsSuite.github.io",style:{color:"#ffffff"}},"https://github.com/OmicsSuite/OmicsSuite.github.io"),t(),e("br"),e("b",null,"Website:"),t(),e("a",{href:"https://OmicsSuite.github.io",style:{color:"#ffffff"}},"https://OmicsSuite.github.io"),t(),e("br"),e("b",null,"SourceForge:"),t(),e("a",{href:"https://sourceforge.net/projects/OmicsSuite-github-io/",style:{color:"#ffffff"}},"https://sourceforge.net/projects/OmicsSuite-github-io/"),t(),e("br"),e("br"),e("b",null,"Download1 (Github Release):"),t(),e("a",{href:"https://github.com/OmicsSuite/OmicsSuite.github.io/releases/download/v1.3.9/OmicsSuite-v1.3.9.exe",style:{color:"#ffffff"}},"OmicsSuite-v1.3.9 [Windows]"),t(),e("br"),e("b",null,"Download2 (SourceForge):"),t(),e("a",{href:"https://sourceforge.net/projects/OmicsSuite-github-io/files/latest/download",style:{color:"#ffffff"}},"OmicsSuite-v1.3.9 [Windows]"),t(),e("br"),e("b",null,"Download3 (AliyunDrive):"),t(),e("a",{href:"https://www.aliyundrive.com/s/Defuhf7FVGw",style:{color:"#ffffff"}},"OmicsSuite-v1.3.9 [Windows]"),t(),e("br"),e("hr"),e("b",null,"Author: Benben Miao"),t(),e("br"),e("b",null,"Email:"),t(" benben.miao@outlook.com "),e("br")]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite-v1.3.9"),e("b",null,"Date: 2023-09-07"),t(),e("br"),e("p",null,[e("b",null,"New Feature:"),t(" 1.1 Added ShinySEM application to Algorithm category for building structural equation models and visualization (在Algorithm分类中新增ShinySEM应用,用于构建结构方程模型和可视化).")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 2.1 Fix links in OmicsSuite to provide CDN support (修复OmicsSuite中的链接,提供CDN支持).")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite-v1.3.8"),e("b",null,"Date: 2023-08-02"),t(),e("br"),e("p",null,[e("b",null,"New Feature:"),t(" 1.1 BioSciTools has been renamed OmicsSuite, and the corresponding github repository, website, and download links have been updated synchronously (BioSciTools更名为OmicsSuite,对应的GitHub仓库、网站、下载链接同步更新).")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 2.1 Fix the issue of some apps failing to run (修复部分app运行失败的问题).")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite-v1.3.6"),e("b",null,"Date: 2023-05-15"),t(),e("br"),e("b",null,[t("Update: "),e("a",{href:"https://mp.weixin.qq.com/s/IVu9EAxeV58VZzhW7nu90g",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/IVu9EAxeV58VZzhW7nu90g"),t(),e("br")]),e("p",null,[e("b",null,"New Feature:"),t(" 1.1 ① redesigned Logo based on the original logo; ② New website: https://OmicsSuite.podia.com; ③ promotional video: OmicsSuite Video. (①基于原版Logo重新设计的Logo;②新的网站:https://OmicsSuite.podia.com;③宣传视频:OmicsSuite Video。).")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 2.1 ① Update some application codes and parameters, such as CorPlot, PCAPlot, TSNEPlot, etc. ② Fix the running problems of some applications caused by the database. (①更新部分应用的代码和参数,如CorPlot, PCAPlot, TSNEPlot等;②修复部分应用由于数据库导致的运行问题。).")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite-v1.3.5"),e("b",null,"Date: 2023-03-20"),t(),e("br"),e("b",null,[t("Update: "),e("a",{href:"https://mp.weixin.qq.com/s/D72wOFkjTfWJAwWd9vkWlw",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/D72wOFkjTfWJAwWd9vkWlw"),t(),e("br")]),e("p",null,[e("b",null,"New Feature:"),t(" 1.1 ① Reduce the color, tone and transparency of all UI interfaces of the program; (2) optimize the description of parameters, especially the input file type and upload mode, such as the sequence input is mainly in Fasta format, which supports pasting sequence and uploading sequence files, the table data is mainly in Txt text tab format, which supports button upload and drag, and the single-cell Cellrange/Visium large data file mainly uses the specified file path. ③ Add references to all programs (published articles or R citation) (①降低程序所有UI界面的颜色色调和透明度;②优化参数说明,尤其是输入文件类型和上传方式,如序列输入主要以Fasta格式,支持粘贴序列和上传序列文件,表格数据主要以Txt文本制表符格式,支持按钮上传和拖拽方式,单细胞Cellrange/Visium大型数据文件主要以指定文件路径即可等;③所有程序添加参考文献(发表文章或R引用方式)).")]),e("p",null,[e("b",null,"New App:"),t(" 2.1 Introduce the 30+Shiny framework program I developed and optimized before through Java encryption code (通过Java加密代码方式引入我之前开发并优化的30+Shiny框架程序).")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.1 Solve the adaptation problem of some users due to the screen resolution of notebook or desktop computer (解决部分用户由于笔记本或台式电脑屏幕分辨率的适配问题).")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite-v1.3.4"),e("b",null,"Date: 2023-03-04"),t(),e("br"),e("b",null,[t("Update: "),e("a",{href:"https://mp.weixin.qq.com/s/mvkuJv95T8wsFcxK6_NDxg",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/mvkuJv95T8wsFcxK6_NDxg"),t(),e("br")]),e("p",null,[e("b",null,"UI Design:"),t(" 1.1 Add the OpenExample button at the bottom of the table window for all programs, which is convenient for users to find the program sample data and prepare the data structure suitable for the program according to the sample data (为所有程序在表格窗口下方添加OpenExample按钮,方便用户找到程序示例数据,并根据示例数据准备适合程序的数据结构).")]),e("p",null,[e("b",null,"New App:"),t(" 2.1 There are three new procedures for genome gene density and two/three genome collinearity analysis in Genomics genome classification, including genome density, digenomesynty and trigenomesynty.")]),e("p",null,[e("b",null,"New App:"),t(" 2.2 Six programs related to differentially expressed genes and KEGG Pathway visualization (`mversusa (maplot), upset, PathwayNativeSinglesmaple, PathwayNativeMultisample, PathwayGraphvizsingle, PathwayGraphvizmulti') in the Transcriptomics classification.")]),e("p",null,[e("b",null,"New App:"),t(" 2.3 Eight Metabolomics programs based on the original analysis of LC-MS mass spectrometry data mzML have been added to the metabolomics metabolomics classification, including metabomZML, metabomHeatmap, metaboroi, metabobasepeakion, metabotaliochrom, metabopeakintensity, metabopeakrt and metabopeakanno.")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.1 Solve the analysis process interruption and task failure caused by Chinese user names of some users. This update will be suitable for most Windows computer environments (解决部分用户由于中文用户名导致的分析进程中断及任务失败,此次更新将适合于大多数Windows电脑环境).")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite-v1.3.3"),e("b",null,"Date: 2023-02-26"),t(),e("br"),e("b",null,[t("Update: "),e("a",{href:"https://mp.weixin.qq.com/s/dYfH83mEccsLyeCoMLzoRw",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/dYfH83mEccsLyeCoMLzoRw"),t(),e("br")]),e("p",null,[e("b",null,"UI Design:"),t(' 1.1 This update beautifies the startup interface and the "OmicsSuite" on the Home page, classifies and counts Echarts (此次更新美化启动界面和Home页面的`OmicsSuite`所有程序分类和统计Echarts).')]),e("p",null,[e("b",null,"New App:"),t(" 2.1 SingleCell classification of' Singlecell' is related to single cell differentiation trajectory ('monocle umap, monocle marker, monocle trajectories') and single cell spatial transcriptome ('spatial feature, spatial gene, spatial umap, spatialtsne, SpatialAirClusterMaker, SpatialAllClusterMaker, Spatial Slice`) a total of 10 programs.")]),e("p",null,[e("b",null,"New App:"),t(" 2.2 Six programs related to differentially expressed genes and KEGG Pathway visualization (`mversusa (maplot), upset, PathwayNativeSinglesmaple, PathwayNativeMultisample, PathwayGraphvizsingle, PathwayGraphvizmulti') in the Transcriptomics classification.")]),e("p",null,[e("b",null,"New App:"),t(" 2.3 Seven programs related to the operation of `sequences` nucleotide sequence or amino acid sequence (`seqslength, seqsheartail, seqsslice, seqsgc, seqstranslate, seqpalindrome, pairwise alignment').")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.1 Fix the problem of slow loading of CDN when accessing the right sidebar page (修复右侧边栏页面访问时CDN加载缓慢的问题).")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite-v1.3.2"),e("b",null,"Date: 2023-02-19"),t(),e("br"),e("b",null,[t("Update: "),e("a",{href:"https://mp.weixin.qq.com/s/quZ2bNI6ZUYu8_Gjrua4RQ",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/quZ2bNI6ZUYu8_Gjrua4RQ"),t(),e("br")]),e("p",null,[e("b",null,"UI Design:"),t(" 1.1 Fixed slow loading of animation in startup interface (修复启动界面的动画加载缓慢).")]),e("p",null,[e("b",null,"New App:"),t(" 2.1 Update the data analysis program of single cell conventional transcriptome (SingleCell RNA-Seq) based on the output of 10X Genomics sequencing CellRange. Many programs mainly refer to 10X Genomics data format and Seurat data analysis flow, allowing users to perform data QC, cell filtering, mitochondrial gene proportion statistics, Feature filtering, hypervariable Feature identification, PCA analysis and JackStraw's selection of PCA, cell UMAP/TSNE clustering, Marker gene selection of all Cluster, and output visual results and corresponding tabular data in all analyses. The update procedures are as follows: update Heatmap and CircosHeatmap in Algorithm classification, update feature QC, feature filter, feature variable, feature PCA, PCA Jack Straw, Cell Umap, Celtsne in SingleCell classification, MarkerViolin, MarkerUMAP, MarkerHeatmap, CellAnnotation (更新带来基于10X Genomics测序CellRange输出结果的单细胞常规转录组(SingleCell RNA-Seq)数据分析程序。多个程序主要参考10X Genomics数据格式和Seurat数据分析流程,允许用户执行数据QC、细胞过滤、线粒体基因占比统计、Feature过滤、高变Feature鉴定、PCA分析及JackStraw对PCA的选择、细胞UMAP/TSNE聚类、所有Cluster的Marker基因选择,所有分析中输出可视化结果和对应的表格数据。更新程序如下:Algorithm分类中更新Heatmap、CircosHeatmap,SingleCell分类中更新FeatureQC, FeatureFilter, FeatureVariable, FeaturePCA, PCAJackStraw, CellUMAP, CellTSNE, MarkerViolin, MarkerUMAP, MarkerHeatmap, CellAnnotation).")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.1 Fixed slow loading of animation in startup interface (修复启动界面的动画加载缓慢).")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite-v1.3.1"),e("b",null,"Date: 2023-01-07"),t(),e("br"),e("b",null,[t("Update: "),e("a",{href:"https://mp.weixin.qq.com/s/j12ysJWhZYpXruF1r50rKA",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/j12ysJWhZYpXruF1r50rKA"),t(),e("br")]),e("p",null,[e("b",null,"UI Design:"),t(" 1.1 Optimize and update tool drawer category columns and icons (优化和更新工具抽屉分类栏目和图标).")]),e("p",null,[e("b",null,"New App:"),t(" 2.1 Add nearly 30 omics-related programs such as HG 19 Gene EXP, HG 19 Gene Marker, Chloroplast Genome, Mito Genome, Maftitv, Mafachange, Mafomatic Interaction, etc (新增HG19GeneExp, HG19GeneMarker, ChloroplastGenome, MitoGenome, MafTiTv, MafAAChange, MafSomaticInteraction等近30个组学相关的程序).")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.1 Fix the flashing of the main page to make the program load more smoothly (修复主页面画面闪动,使得程序加载更加流畅).")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite-v1.3.0"),e("b",null,"Date: 2022-12-07"),t(),e("br"),e("b",null,[t("Update: "),e("a",{href:"https://mp.weixin.qq.com/s/eHK8ILEzsjTWQCQyIYCMMQ",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/eHK8ILEzsjTWQCQyIYCMMQ"),t(),e("br")]),e("p",null,[e("b",null,"UI Design:"),t(" 1.1 The main purpose of updating the interface of OmicsSuiteUI is to make the program simpler, more comfortable and more modern. I also examined my own aesthetic standards through continuous exploration, and finally found that a good interface needs clear logic, simple and comfortable interface (更新OmicsSuiteUI界面主要为了使得程序更加简约、舒服、现代化,我也是在不断探索中审视自己的审美观,最终发现好的界面需要逻辑清晰、界面简约舒适).")]),e("p",null,[e("b",null,"New App:"),t(" 2.1 The newly added Apps mainly include barstat, scatterplot, groupline, quantile q (QQ), density normal, boxstat, violinstat, piestat, dounstat, and Seq Motif in Sequence category (新增Apps主要包括Statistics分类中的BarStat, ScatterPlot, GroupLine, QuantileQ(QQ), DensityNormal, BoxStat, ViolinStat, PieStat, DountStat,以及Sequence分类中的Seq Motif程序).")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.1 Temporarily shut down the use of Shiny Apps program, and the code logic and security problems are still being solved (暂时关闭Shiny Apps程序的使用,代码逻辑和安全问题仍然在解决).")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite-v1.2.5"),e("b",null,"Date: 2022-10-30"),t(),e("br"),e("b",null,[t("Update: "),e("a",{href:"https://mp.weixin.qq.com/s/38rDWcsIxTIRgbPNCudhaw",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/38rDWcsIxTIRgbPNCudhaw"),t(),e("br")]),e("p",null,[e("b",null,"New Features:"),t(" 1.1 New courses and feedback section (新增课程与反馈板块).")]),e("p",null,[e("b",null,"New Features:"),t(" 1.2 New Shiny programs, such as Network Shiny, WGCNA Shiny and Community Shiny (新增Shiny程序,如Network Shiny、WGCNA Shiny、Community Shiny).")]),e("p",null,[e("b",null,"New Features:"),t(" 1.3 Re-adjust the layout and beautification of the program interface (重新调整程序界面布局和美化).")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite-v1.2.4"),e("b",null,"Date: 2022-10-30"),t(),e("br"),e("b",null,[t("Update: "),e("a",{href:"https://mp.weixin.qq.com/s/YeYZ-M-QCwr18Vc6Quytzg",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/YeYZ-M-QCwr18Vc6Quytzg"),t(),e("br")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 1.0 This update is an emergency update, which mainly solves the fatal problem that many researchers can't start after installing OmicsSuite recently. ① This problem is not caused by Java and R environment. The program comes with a compressed version of JDK-11 environment, so users don't need to install any version of Java themselves. ② This problem is mainly due to the regional shielding of specific domain names in https://api.github.com. Therefore, this update mainly solves the problem that the API in the function is automatically requested to be updated when the program is started, and the program can be started and run under any circumstances of networking or disconnection after the update (此次更新属于紧急更新,主要解决近期以来不少科研者遇到安装OmicsSuite后无法启动的致命问题。①该问题不是由于Java和R环境导致,程序自带压缩版本的JDK-11环境,用户无须自己安装任何版本的Java。②该问题主要由于区域对https://api.github.com特定域名的屏蔽,因此此次更新主要解决由于程序启动时自动请求更新函数中的API,更新后可在联网或断网的任何情况下启动并运行程序).")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite-v1.2.3"),e("b",null,"Date: 2022-09-30"),t(),e("br"),e("b",null,[t("Update: "),e("a",{href:"https://mp.weixin.qq.com/s/yNleCDhdfmmFiv97LrRWlA",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/yNleCDhdfmmFiv97LrRWlA"),t(),e("br")]),e("p",null,[e("b",null,"New Feature:"),t(" 1.0 The color of the beautified menu bar after expansion is light blue with a little bit of technological style, and the transparency with shadows is set to be similar to the ground glass effect. The drop position of the menu bar is designed to be 5px, and all submenu bars are designed to be rounded rectangles (美化菜单栏展开后的颜色为淡蓝色带有些许科技风,并设置带有阴影的透明度类似毛玻璃效果,设计菜单栏下落位置为5px以及设计所有子菜单栏为圆角矩形).")]),e("p",null,[e("b",null,"New Feature:"),t(" 2.0 The native Choicebox selection box is designed as a rounded rectangle, and the drop-down selection box is designed as transparent light blue (将原生自带的Choicebox选择框设计为圆角矩形,及将下拉选择框设计为透明淡蓝色).")]),e("p",null,[e("b",null,"New Feature:"),t(" 3.0 Each category of the toolbox is added with a corresponding color icon, and the number of programs label is added (工具箱每个分类增加对应的彩色图标,并增加程序数量标签).")]),e("p",null,[e("b",null,"New Feature:"),t(" 4.0 Light blue glow is added to all tool cards on the home page to show the scientific trend and add a light red background to the labels of tool cards (首页所有Tool Cards添加淡蓝色辉光,展示科技风,为工具卡片的标签添加淡红色背景).")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: v1.2.2"),e("b",null,"Date: 2022-09-28"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/LIjTmbgKWQJe9nSfX2wi0w",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/LIjTmbgKWQJe9nSfX2wi0w"),t(),e("br"),e("p",null,[e("b",null,"New App:"),t(" 1.0 Ribosome 16S DNA Mindmap (微生物原核核糖体16S DNA即扩增子测序流程的思维导图).")]),e("p",null,[e("b",null,"New App:"),t(" 2.0 Metagenome Illumina Mindmap (微生物基于Illumina平台宏基因组测序及分析流程的思维导图).")]),e("p",null,[e("b",null,"New App:"),t(" 3.0 Metagenome PacBio Mindmap (微生物基于PacBio平台宏基因组测序及分析流程的思维导图).")]),e("p",null,[e("b",null,"New App:"),t(" 4.0 Glycometabolism Mindmap (糖代谢的复杂过程网络的思维导图).")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.2.1"),e("b",null,"Date: 2022-09-27"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/ulDSHmqwGC30eP8EXqh5yA",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/ulDSHmqwGC30eP8EXqh5yA"),t(),e("br"),e("p",null,[e("b",null,"New Features:"),t(" 1.0 Complete the window and content of "),e("b",null,"Help -> HelpDoc"),t(". ")]),e("p",null,[e("b",null,"New Features:"),t(" 2.0 Complete the window and content of "),e("b",null,"Help -> About"),t(". ")]),e("p",null,[e("b",null,"New Features:"),t(" 3.0 Complete the window and content of "),e("b",null,"Help -> Source"),t(". ")]),e("p",null,[e("b",null,"New Features:"),t(" 4.0 Complete the window and content of "),e("b",null,"Help -> Version"),t(". ")]),e("p",null,[e("b",null,"New Features:"),t(" 5.0 Complete the window and content of "),e("b",null,"Help -> Update"),t(". ")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.2.0"),e("b",null,"Date: 2022-09-25"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/NIua7cNeOGINfvmq9YgcZw",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/NIua7cNeOGINfvmq9YgcZw"),t(),e("br"),e("p",null,[e("b",null,"New Features:"),t(" 1.0 This update of OmicsSuite adds automatic detection of new stable versions when starting programs. The official address for releasing new versions is: https://github.com/OmicsSuite/OmicsSuite.github.io/releases At the same time, this update is version 1.2.0, which means that important functions are new and new.(OmicsSuite此次更新增加了启动程序时自动检测新的稳定版本,新版本释放官方地址为:https://github.com/OmicsSuite/OmicsSuite.github.io/releases,同时此次更新为1.2.0版本,意味着重要功能跟新和新的开始。) ")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.1.3"),e("b",null,"Date: 2022-06-25"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/Q1Dhy6_vyh4u0pHhTCGI2w",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/Q1Dhy6_vyh4u0pHhTCGI2w"),t(),e("br"),e("p",null,[e("b",null,"New Apps:"),t(" 1.0 ChordPlot (弦图可视化复杂配对关系). ")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.1.2"),e("b",null,"Date: 2022-06-09"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/GoAxeMZeo7okmW5KxErtWw",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/GoAxeMZeo7okmW5KxErtWw"),t(),e("br"),e("p",null,[e("b",null,"New Apps:"),t(" 1.0 SurvivalAnalysis (临床医学生存分析). ")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.0 WGCNA Results Download. ")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.1.1"),e("b",null,"Date: 2022-06-07"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/WU6-WclLa8X6JQi1z9XISg",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/WU6-WclLa8X6JQi1z9XISg"),t(),e("br"),e("p",null,[e("b",null,"New Apps:"),t(" 1.0 WGCNA (WGCNA 加权基因共表达网络分析). ")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.1.0"),e("b",null,"Date: 2022-05-31"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/gSPEJ4-KXJtsg9P8rc84LQ",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/gSPEJ4-KXJtsg9P8rc84LQ"),t(),e("br"),e("p",null,[e("b",null,"New Apps:"),t(" 1.0 ClusterPlot (聚类分析多算法散点多边形可视化). ")]),e("p",null,[e("b",null,"New Apps:"),t(" 1.1 ClusterTree (聚类分析多算法多类型树状可视化). ")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.0 Fixed home page categories list (修复首页程序分类列表). ")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.0.9"),e("b",null,"Date: 2022-05-10"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/AtQpM6-7cPcFercaHCb9tw",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/AtQpM6-7cPcFercaHCb9tw"),t(),e("br"),e("p",null,[e("b",null,"New Features:"),t(" 2.0 OmicsSuite provides an analysis result Table Download interface for all algorithms on which data analysis programs are based, such as PCA, TSNE, GO enrichment, KEGG enrichment, etc. Users can download data analysis result files by running the result [Table Download] button (OmicsSuite 为所有数据分析程序基于的算法如PCA、TSNE、GO enrichment、KEGG enrichment等提供分析结果表格下载接口,用户可以通过运行结果【Table Download】按钮下载数据分析结果文件). ")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.0 Fix the sample data of GO and KEGG format error (修复GO和KEGG示例数据格式错误问题). ")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.0.8"),e("b",null,"Date: 2022-05-10"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/Y7-FoaTt7CeMS0ymPvMzfA",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/Y7-FoaTt7CeMS0ymPvMzfA"),t(),e("br"),e("p",null,[e("b",null,"New Features:"),t(" 2.0 Browser buttons and table boxes of all programs support dragging and uploading data files (所有程序的Browser按钮和表格框支持拖拽上传数据文件). ")]),e("p",null,[e("b",null,"New Features:"),t(" 2.1 All programs add a progress bar display to show the progress of background tasks (所有程序添加进度条展示器用于显示后台任务的执行进度). ")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.0 None. ")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.0.7"),e("b",null,"Date: 2022-05-09"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/EJLthBZggalhs_z0nC6xmQ",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/EJLthBZggalhs_z0nC6xmQ"),t(),e("br"),e("p",null,[e("b",null,"New Apps:"),t(" 1.0 GOenrichStat, GOenrichBar, GOenrichBubble, GOenrichNet, GOenrichTree, GOenrichMap (新增 GO 富集分析 6 个Apps). ")]),e("p",null,[e("b",null,"New Apps:"),t(" 1.1 KEGGenrichBar, KEGGenrichBubble, KEGGenrichNet, KEGGenrichTree, KEGGenrichMap (新增 KEGG 富集分析 5 个Apps). ")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.0 None. ")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.0.6"),e("b",null,"Date: 2022-05-06"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/5AUKxQCConxOJHcn2PmNpw",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/5AUKxQCConxOJHcn2PmNpw"),t(),e("br"),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.0 Emergency repair (紧急修复组件安全及更新).")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.1 Repair the operation logic of the Clear button of all apps, including resetting data and all parameters (修复所有App的Clear按钮的操作逻辑,包括重置数据及所有参数).")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.2 Clear the buffer data and results when closing App Tab button, and reset all variables and parameters (修复关闭App Tab按钮时清理缓冲数据及结果,并重置所有变量及参数).")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.3 Optimize the aesthetics of App Tab button (优化App Tab按钮的美观度).")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.0.5"),e("b",null,"Date: 2022-05-06"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/5AUKxQCConxOJHcn2PmNpw",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/5AUKxQCConxOJHcn2PmNpw"),t(),e("br"),e("p",null,[e("b",null,"New Apps:"),t(" 1.0 SinCosTan (三角函数表达式与可视化)")]),e("p",null,[e("b",null,"New Apps:"),t(" 1.1 FourierFormula (傅里叶级数与变换可视化)")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.0 Fixed option of Clear button (修复 Clear 按钮的操作逻辑,避免数据交叉).")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.0.4"),e("b",null,"Date: 2022-05-03"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/yj_-f98Vu_Uzczt2IB1SYw",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/yj_-f98Vu_Uzczt2IB1SYw"),t(),e("br"),e("p",null,[e("b",null,"New Apps:"),t(" 1.0 NetworkPlot (Regulatory Network Plot) (新增 Network Plot App!)")]),e("p",null,[e("b",null,"New Apps:"),t(" 1.1 CommunityPlot (Regulatory Network Plot) (新增 Community Plot App!)")]),e("p",null,[e("b",null,"New Features:"),t(" 2.0 The regulatory network plays a significant advantage in exploring the analysis of complex biological regulatory relationships. Based on the regulatory pairing data between two types of nodes (it is suggested that the regulatory relationship pairs meet the significance), this program constructs the regulatory relationship network by calculating the connectivity or simply counting the number of nodes, and visualizes it. Is suitable for that regulation relationship of protein-protein, gene-gene, microRNA-mrna, TF-gene, microRNA-circrna, microRNA-lncrna and other molecular pair. (调控网络在探索生物学复杂的调控关系分析中发挥着显著的优势,本程序基于两类节点间的调控配对数据(建议是符合显著性的调控关系对)通过计算连接度或单纯计算节点数进行构建调控关系网络并可视化。适用于Protein - Protein, Gene - Gene, MicroRNA - mRNA, TF - Gene, MicroRNA - CircRNA, MicroRNA - LncRNA等分子对调控关系。)")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.0 Fixed options icon from dynamic to static.")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.0.3"),e("b",null,"Date: 2022-05-03"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/f0SF7EtGwKy47y6JDaP0JQ",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/f0SF7EtGwKy47y6JDaP0JQ"),t(),e("br"),e("p",null,[e("b",null,"New Apps:"),t(" 1.0 TSNEPlot (TSNE analysis and Plot) (新增 TSNE Plot App!)")]),e("p",null,[e("b",null,"New Apps:"),t(" 1.1 VolcanoPlot (Volcano and Plot) (新增 Volcano Plot App!)")]),e("p",null,[e("b",null,"New Features:"),t(" 2.0 Add OmicsSuite clock and dynamic painting in the right drawer of the Home page. (Home 页面右抽屉添加OmicsSuite时钟和动态花绘。)")]),e("p",null,[e("b",null,"New Features:"),t(" 2.1 At the bottom of the program, add an access window related to OmicsSuite, and you need to connect to the network. (程序页面底部添加OmicsSuite相关的访问窗口,需要连接网络访问。)")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.0 None.")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.0.2"),e("b",null,"Date: 2022-05-01"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/QNLV8dLrXz1kRDeiaLqc9w",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/QNLV8dLrXz1kRDeiaLqc9w"),t(),e("br"),e("p",null,[e("b",null,"New Apps:"),t(" 1.0 Venn Plot (Venn Diagram Plot up to 7 sets) (新增 VennPlot App!)")]),e("p",null,[e("b",null,"New Features:"),t(" 2.0 The right drawer of the Home page supports small screen access to Bioscience Tools official website and access to version update information. (Home 页面右抽屉支持小屏幕访问 OmicsSuite 官网和访问版本更新信息。)")]),e("p",null,[e("b",null,"New Features:"),t(" 2.1 The left drawer of the Home page crosses the mouse over the program button to support the preview function of the program interface. (Home 页面左抽屉在程序按钮上划过鼠标支持程序界面预览功能。)")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.0 None.")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.0.1"),e("b",null,"Date: 2022-04-30"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/SxNTbKUw-lJhxgJppjUqxA",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/SxNTbKUw-lJhxgJppjUqxA"),t(),e("br"),e("p",null,[e("b",null,"New Apps:"),t(" 1.0 PCAPlot (Principal Component Analysis and Plot). (新增 PCAPlot 进行 PCA 降维分析及可视化 App!)")]),e("p",null,[e("b",null,"New Features:"),t(" 2.0 Add the Slider component for the first time. (首次添加数值滑动组件。)")]),e("p",null,[e("b",null,"New Features:"),t(" 2.1 Added official website information and version update section to the Home page for the first time. (首次在 Home 页面增加官网信息及版本更新板块。)")]),e("p",null,[e("b",null,"New Features:"),t(" 2.2 Add the Clear button to reset the data. (为了方便用户清除当前的数据进行后续分析,添加 Clear 按钮作为 Trash回收。)")]),e("p",null,[e("b",null,"Bug Fixed:"),t("3.0 Reduce the installer file. (减小 OmicsSuite 安装程序文件。)")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.0.0"),e("b",null,"Date: 2022-04-28"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/DM5j4PDnBExwBu5o9VTr7g",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/DM5j4PDnBExwBu5o9VTr7g"),t(),e("br"),e("p",null,[e("b",null,"New Apps:"),t(" 1.1 RevCom (Reverse Complete) (新增 RevCom DNA序列反向互补操作 App!)")]),e("p",null,[e("b",null,"New Apps:"),t(" 1.2 CorPlot (Correlation Analysis and Plot) (新增 CorPlot 样品 Pearson 相关性分析及可视化 App。)")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 2.1 Package JRE 11 Java environment in OmicsSuite, so the Java 8 or later version don't need on user's computer.")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.0.0-Alpha"),e("b",null,"Date: 2022-04-26"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/cGxWvXsDHoHwVE04NIzuOw",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/cGxWvXsDHoHwVE04NIzuOw"),t(),e("br"),e("p",null,[e("b",null,"New Apps:"),t(" OmicsSuite project assumption -> JavaFX project was developed based on Java 11 -> OmicsSuite framework was preliminarily completed -> OmicsSuite (UI) user interface prototype design was completed. ")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" Compile for the first time and support the installation of Windows platform.")])])])],-1)),C=o(()=>e("br",null,null,-1));function F(n,k,P,D,G,H){const s=i("AppHeader"),r=i("el-header"),p=i("el-main"),u=i("AppFooter"),d=i("el-footer"),c=i("el-container"),m=i("el-backtop");return w(),y("div",q,[l(c,null,{default:a(()=>[l(r,null,{default:a(()=>[l(s)]),_:1}),l(p,null,{default:a(()=>[N,O,C]),_:1}),l(d,null,{default:a(()=>[l(u)]),_:1})]),_:1}),l(m,{right:50,bottom:100})])}const Y=h(A,[["render",F],["__scopeId","data-v-821e49a2"]]);export{Y as default}; diff --git a/assets/DownloadView-763f5719.js b/assets/DownloadView-763f5719.js deleted file mode 100644 index 460f981..0000000 --- a/assets/DownloadView-763f5719.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as h,A as b,a as g,b as f,c as x}from"./index-3ef5d3f0.js";import{ah as i,o as w,c as y,V as l,P as a,ax as S,ay as v,a as e,T as t}from"./@vue-248d724b.js";import"./vue-router-401d444e.js";import"./element-plus-ab7336d6.js";import"./lodash-es-21c98b27.js";import"./@vueuse-89fc2c2e.js";import"./@element-plus-0de4ac96.js";import"./@popperjs-c75af06c.js";import"./@ctrl-f8748455.js";import"./dayjs-5c34775c.js";import"./async-validator-dee29e8b.js";import"./memoize-one-297ddbcb.js";import"./escape-html-64fe8e16.js";import"./normalize-wheel-es-ed76fb12.js";import"./@floating-ui-72671fae.js";import"./echarts-9ae96183.js";import"./zrender-e9104294.js";const A={components:{AppHeader:b,AppFooter:g},data(){return{}},mounted(){}},o=n=>(S("data-v-821e49a2"),n=n(),v(),n),q={class:"common-layout"},N=o(()=>e("div",null,[e("img",{src:f,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}}),e("div",{class:"image-text-card"},[e("p",{class:"card-title"},"SourceForge Download (Default):"),e("a",{href:"https://sourceforge.net/projects/omicssuite-github-io/",target:"_blank",style:{color:"#008888","font-weight":"bold"}},"https://sourceforge.net/projects/omicssuite-github-io/"),e("br"),e("br"),e("p",{class:"card-title"},"GitHub Download:"),e("a",{href:"https://github.com/OmicsSuite/OmicsSuite.github.io/releases/",target:"_blank",style:{color:"#008888","font-weight":"bold"}},"https://github.com/OmicsSuite/OmicsSuite.github.io/releases/"),e("br"),e("br"),e("p",{class:"card-title"},"Aliyun Download:"),e("a",{href:"https://www.aliyundrive.com/s/Defuhf7FVGw",target:"_blank",style:{color:"#008888","font-weight":"bold"}},"https://www.aliyundrive.com/s/Defuhf7FVGw")])],-1)),O=o(()=>e("div",null,[e("br"),e("p",{style:{"font-size":"2em","font-weight":"bold",color:"#000000"}}," Versions History "),e("div",{class:"image-text-card"},[e("div",{style:{width:"100%",height:"auto",background:"radial-gradient(#00808088 0, #00808055 100%)","border-radius":"10px",padding:"5px","text-align":"center"}},[e("img",{src:x,alt:"OmicsSuite",style:{height:"200px",margin:"auto","border-radius":"20%"}})]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808055 100%)",padding:"20px","line-height":"30px"}},[e("h3",null,"OmicsSuite-v1.3.9"),e("b",null,"Github:"),t(),e("a",{href:"https://github.com/OmicsSuite/OmicsSuite.github.io",style:{color:"#ffffff"}},"https://github.com/OmicsSuite/OmicsSuite.github.io"),t(),e("br"),e("b",null,"Website:"),t(),e("a",{href:"https://OmicsSuite.github.io",style:{color:"#ffffff"}},"https://OmicsSuite.github.io"),t(),e("br"),e("b",null,"SourceForge:"),t(),e("a",{href:"https://sourceforge.net/projects/OmicsSuite-github-io/",style:{color:"#ffffff"}},"https://sourceforge.net/projects/OmicsSuite-github-io/"),t(),e("br"),e("br"),e("b",null,"Download1 (Github Release):"),t(),e("a",{href:"https://github.com/OmicsSuite/OmicsSuite.github.io/releases/download/v1.3.9/OmicsSuite-v1.3.9.exe",style:{color:"#ffffff"}},"OmicsSuite-v1.3.9 [Windows]"),t(),e("br"),e("b",null,"Download2 (SourceForge):"),t(),e("a",{href:"https://sourceforge.net/projects/OmicsSuite-github-io/files/latest/download",style:{color:"#ffffff"}},"OmicsSuite-v1.3.9 [Windows]"),t(),e("br"),e("b",null,"Download3 (AliyunDrive):"),t(),e("a",{href:"https://www.aliyundrive.com/s/Defuhf7FVGw",style:{color:"#ffffff"}},"OmicsSuite-v1.3.9 [Windows]"),t(),e("br"),e("hr"),e("b",null,"Author: Benben Miao"),t(),e("br"),e("b",null,"Email:"),t(" benben.miao@outlook.com "),e("br")]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite-v1.3.9"),e("b",null,"Date: 2023-09-07"),t(),e("br"),e("p",null,[e("b",null,"New Feature:"),t(" 1.1 Added ShinySEM application to Algorithm category for building structural equation models and visualization (在Algorithm分类中新增ShinySEM应用,用于构建结构方程模型和可视化).")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 2.1 Fix links in OmicsSuite to provide CDN support (修复OmicsSuite中的链接,提供CDN支持).")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite-v1.3.8"),e("b",null,"Date: 2023-08-02"),t(),e("br"),e("p",null,[e("b",null,"New Feature:"),t(" 1.1 BioSciTools has been renamed OmicsSuite, and the corresponding github repository, website, and download links have been updated synchronously (BioSciTools更名为OmicsSuite,对应的GitHub仓库、网站、下载链接同步更新).")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 2.1 Fix the issue of some apps failing to run (修复部分app运行失败的问题).")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite-v1.3.6"),e("b",null,"Date: 2023-05-15"),t(),e("br"),e("b",null,[t("Update: "),e("a",{href:"https://mp.weixin.qq.com/s/IVu9EAxeV58VZzhW7nu90g",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/IVu9EAxeV58VZzhW7nu90g"),t(),e("br")]),e("p",null,[e("b",null,"New Feature:"),t(" 1.1 ① redesigned Logo based on the original logo; ② New website: https://OmicsSuite.podia.com; ③ promotional video: OmicsSuite Video. (①基于原版Logo重新设计的Logo;②新的网站:https://OmicsSuite.podia.com;③宣传视频:OmicsSuite Video。).")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 2.1 ① Update some application codes and parameters, such as CorPlot, PCAPlot, TSNEPlot, etc. ② Fix the running problems of some applications caused by the database. (①更新部分应用的代码和参数,如CorPlot, PCAPlot, TSNEPlot等;②修复部分应用由于数据库导致的运行问题。).")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite-v1.3.5"),e("b",null,"Date: 2023-03-20"),t(),e("br"),e("b",null,[t("Update: "),e("a",{href:"https://mp.weixin.qq.com/s/D72wOFkjTfWJAwWd9vkWlw",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/D72wOFkjTfWJAwWd9vkWlw"),t(),e("br")]),e("p",null,[e("b",null,"New Feature:"),t(" 1.1 ① Reduce the color, tone and transparency of all UI interfaces of the program; (2) optimize the description of parameters, especially the input file type and upload mode, such as the sequence input is mainly in Fasta format, which supports pasting sequence and uploading sequence files, the table data is mainly in Txt text tab format, which supports button upload and drag, and the single-cell Cellrange/Visium large data file mainly uses the specified file path. ③ Add references to all programs (published articles or R citation) (①降低程序所有UI界面的颜色色调和透明度;②优化参数说明,尤其是输入文件类型和上传方式,如序列输入主要以Fasta格式,支持粘贴序列和上传序列文件,表格数据主要以Txt文本制表符格式,支持按钮上传和拖拽方式,单细胞Cellrange/Visium大型数据文件主要以指定文件路径即可等;③所有程序添加参考文献(发表文章或R引用方式)).")]),e("p",null,[e("b",null,"New App:"),t(" 2.1 Introduce the 30+Shiny framework program I developed and optimized before through Java encryption code (通过Java加密代码方式引入我之前开发并优化的30+Shiny框架程序).")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.1 Solve the adaptation problem of some users due to the screen resolution of notebook or desktop computer (解决部分用户由于笔记本或台式电脑屏幕分辨率的适配问题).")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite-v1.3.4"),e("b",null,"Date: 2023-03-04"),t(),e("br"),e("b",null,[t("Update: "),e("a",{href:"https://mp.weixin.qq.com/s/mvkuJv95T8wsFcxK6_NDxg",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/mvkuJv95T8wsFcxK6_NDxg"),t(),e("br")]),e("p",null,[e("b",null,"UI Design:"),t(" 1.1 Add the OpenExample button at the bottom of the table window for all programs, which is convenient for users to find the program sample data and prepare the data structure suitable for the program according to the sample data (为所有程序在表格窗口下方添加OpenExample按钮,方便用户找到程序示例数据,并根据示例数据准备适合程序的数据结构).")]),e("p",null,[e("b",null,"New App:"),t(" 2.1 There are three new procedures for genome gene density and two/three genome collinearity analysis in Genomics genome classification, including genome density, digenomesynty and trigenomesynty.")]),e("p",null,[e("b",null,"New App:"),t(" 2.2 Six programs related to differentially expressed genes and KEGG Pathway visualization (`mversusa (maplot), upset, PathwayNativeSinglesmaple, PathwayNativeMultisample, PathwayGraphvizsingle, PathwayGraphvizmulti') in the Transcriptomics classification.")]),e("p",null,[e("b",null,"New App:"),t(" 2.3 Eight Metabolomics programs based on the original analysis of LC-MS mass spectrometry data mzML have been added to the metabolomics metabolomics classification, including metabomZML, metabomHeatmap, metaboroi, metabobasepeakion, metabotaliochrom, metabopeakintensity, metabopeakrt and metabopeakanno.")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.1 Solve the analysis process interruption and task failure caused by Chinese user names of some users. This update will be suitable for most Windows computer environments (解决部分用户由于中文用户名导致的分析进程中断及任务失败,此次更新将适合于大多数Windows电脑环境).")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite-v1.3.3"),e("b",null,"Date: 2023-02-26"),t(),e("br"),e("b",null,[t("Update: "),e("a",{href:"https://mp.weixin.qq.com/s/dYfH83mEccsLyeCoMLzoRw",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/dYfH83mEccsLyeCoMLzoRw"),t(),e("br")]),e("p",null,[e("b",null,"UI Design:"),t(' 1.1 This update beautifies the startup interface and the "OmicsSuite" on the Home page, classifies and counts Echarts (此次更新美化启动界面和Home页面的`OmicsSuite`所有程序分类和统计Echarts).')]),e("p",null,[e("b",null,"New App:"),t(" 2.1 SingleCell classification of' Singlecell' is related to single cell differentiation trajectory ('monocle umap, monocle marker, monocle trajectories') and single cell spatial transcriptome ('spatial feature, spatial gene, spatial umap, spatialtsne, SpatialAirClusterMaker, SpatialAllClusterMaker, Spatial Slice`) a total of 10 programs.")]),e("p",null,[e("b",null,"New App:"),t(" 2.2 Six programs related to differentially expressed genes and KEGG Pathway visualization (`mversusa (maplot), upset, PathwayNativeSinglesmaple, PathwayNativeMultisample, PathwayGraphvizsingle, PathwayGraphvizmulti') in the Transcriptomics classification.")]),e("p",null,[e("b",null,"New App:"),t(" 2.3 Seven programs related to the operation of `sequences` nucleotide sequence or amino acid sequence (`seqslength, seqsheartail, seqsslice, seqsgc, seqstranslate, seqpalindrome, pairwise alignment').")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.1 Fix the problem of slow loading of CDN when accessing the right sidebar page (修复右侧边栏页面访问时CDN加载缓慢的问题).")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite-v1.3.2"),e("b",null,"Date: 2023-02-19"),t(),e("br"),e("b",null,[t("Update: "),e("a",{href:"https://mp.weixin.qq.com/s/quZ2bNI6ZUYu8_Gjrua4RQ",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/quZ2bNI6ZUYu8_Gjrua4RQ"),t(),e("br")]),e("p",null,[e("b",null,"UI Design:"),t(" 1.1 Fixed slow loading of animation in startup interface (修复启动界面的动画加载缓慢).")]),e("p",null,[e("b",null,"New App:"),t(" 2.1 Update the data analysis program of single cell conventional transcriptome (SingleCell RNA-Seq) based on the output of 10X Genomics sequencing CellRange. Many programs mainly refer to 10X Genomics data format and Seurat data analysis flow, allowing users to perform data QC, cell filtering, mitochondrial gene proportion statistics, Feature filtering, hypervariable Feature identification, PCA analysis and JackStraw's selection of PCA, cell UMAP/TSNE clustering, Marker gene selection of all Cluster, and output visual results and corresponding tabular data in all analyses. The update procedures are as follows: update Heatmap and CircosHeatmap in Algorithm classification, update feature QC, feature filter, feature variable, feature PCA, PCA Jack Straw, Cell Umap, Celtsne in SingleCell classification, MarkerViolin, MarkerUMAP, MarkerHeatmap, CellAnnotation (更新带来基于10X Genomics测序CellRange输出结果的单细胞常规转录组(SingleCell RNA-Seq)数据分析程序。多个程序主要参考10X Genomics数据格式和Seurat数据分析流程,允许用户执行数据QC、细胞过滤、线粒体基因占比统计、Feature过滤、高变Feature鉴定、PCA分析及JackStraw对PCA的选择、细胞UMAP/TSNE聚类、所有Cluster的Marker基因选择,所有分析中输出可视化结果和对应的表格数据。更新程序如下:Algorithm分类中更新Heatmap、CircosHeatmap,SingleCell分类中更新FeatureQC, FeatureFilter, FeatureVariable, FeaturePCA, PCAJackStraw, CellUMAP, CellTSNE, MarkerViolin, MarkerUMAP, MarkerHeatmap, CellAnnotation).")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.1 Fixed slow loading of animation in startup interface (修复启动界面的动画加载缓慢).")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite-v1.3.1"),e("b",null,"Date: 2023-01-07"),t(),e("br"),e("b",null,[t("Update: "),e("a",{href:"https://mp.weixin.qq.com/s/j12ysJWhZYpXruF1r50rKA",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/j12ysJWhZYpXruF1r50rKA"),t(),e("br")]),e("p",null,[e("b",null,"UI Design:"),t(" 1.1 Optimize and update tool drawer category columns and icons (优化和更新工具抽屉分类栏目和图标).")]),e("p",null,[e("b",null,"New App:"),t(" 2.1 Add nearly 30 omics-related programs such as HG 19 Gene EXP, HG 19 Gene Marker, Chloroplast Genome, Mito Genome, Maftitv, Mafachange, Mafomatic Interaction, etc (新增HG19GeneExp, HG19GeneMarker, ChloroplastGenome, MitoGenome, MafTiTv, MafAAChange, MafSomaticInteraction等近30个组学相关的程序).")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.1 Fix the flashing of the main page to make the program load more smoothly (修复主页面画面闪动,使得程序加载更加流畅).")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite-v1.3.0"),e("b",null,"Date: 2022-12-07"),t(),e("br"),e("b",null,[t("Update: "),e("a",{href:"https://mp.weixin.qq.com/s/eHK8ILEzsjTWQCQyIYCMMQ",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/eHK8ILEzsjTWQCQyIYCMMQ"),t(),e("br")]),e("p",null,[e("b",null,"UI Design:"),t(" 1.1 The main purpose of updating the interface of OmicsSuiteUI is to make the program simpler, more comfortable and more modern. I also examined my own aesthetic standards through continuous exploration, and finally found that a good interface needs clear logic, simple and comfortable interface (更新OmicsSuiteUI界面主要为了使得程序更加简约、舒服、现代化,我也是在不断探索中审视自己的审美观,最终发现好的界面需要逻辑清晰、界面简约舒适).")]),e("p",null,[e("b",null,"New App:"),t(" 2.1 The newly added Apps mainly include barstat, scatterplot, groupline, quantile q (QQ), density normal, boxstat, violinstat, piestat, dounstat, and Seq Motif in Sequence category (新增Apps主要包括Statistics分类中的BarStat, ScatterPlot, GroupLine, QuantileQ(QQ), DensityNormal, BoxStat, ViolinStat, PieStat, DountStat,以及Sequence分类中的Seq Motif程序).")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.1 Temporarily shut down the use of Shiny Apps program, and the code logic and security problems are still being solved (暂时关闭Shiny Apps程序的使用,代码逻辑和安全问题仍然在解决).")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite-v1.2.5"),e("b",null,"Date: 2022-10-30"),t(),e("br"),e("b",null,[t("Update: "),e("a",{href:"https://mp.weixin.qq.com/s/38rDWcsIxTIRgbPNCudhaw",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/38rDWcsIxTIRgbPNCudhaw"),t(),e("br")]),e("p",null,[e("b",null,"New Features:"),t(" 1.1 New courses and feedback section (新增课程与反馈板块).")]),e("p",null,[e("b",null,"New Features:"),t(" 1.2 New Shiny programs, such as Network Shiny, WGCNA Shiny and Community Shiny (新增Shiny程序,如Network Shiny、WGCNA Shiny、Community Shiny).")]),e("p",null,[e("b",null,"New Features:"),t(" 1.3 Re-adjust the layout and beautification of the program interface (重新调整程序界面布局和美化).")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite-v1.2.4"),e("b",null,"Date: 2022-10-30"),t(),e("br"),e("b",null,[t("Update: "),e("a",{href:"https://mp.weixin.qq.com/s/YeYZ-M-QCwr18Vc6Quytzg",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/YeYZ-M-QCwr18Vc6Quytzg"),t(),e("br")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 1.0 This update is an emergency update, which mainly solves the fatal problem that many researchers can't start after installing OmicsSuite recently. ① This problem is not caused by Java and R environment. The program comes with a compressed version of JDK-11 environment, so users don't need to install any version of Java themselves. ② This problem is mainly due to the regional shielding of specific domain names in https://api.github.com. Therefore, this update mainly solves the problem that the API in the function is automatically requested to be updated when the program is started, and the program can be started and run under any circumstances of networking or disconnection after the update (此次更新属于紧急更新,主要解决近期以来不少科研者遇到安装OmicsSuite后无法启动的致命问题。①该问题不是由于Java和R环境导致,程序自带压缩版本的JDK-11环境,用户无须自己安装任何版本的Java。②该问题主要由于区域对https://api.github.com特定域名的屏蔽,因此此次更新主要解决由于程序启动时自动请求更新函数中的API,更新后可在联网或断网的任何情况下启动并运行程序).")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite-v1.2.3"),e("b",null,"Date: 2022-09-30"),t(),e("br"),e("b",null,[t("Update: "),e("a",{href:"https://mp.weixin.qq.com/s/yNleCDhdfmmFiv97LrRWlA",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/yNleCDhdfmmFiv97LrRWlA"),t(),e("br")]),e("p",null,[e("b",null,"New Feature:"),t(" 1.0 The color of the beautified menu bar after expansion is light blue with a little bit of technological style, and the transparency with shadows is set to be similar to the ground glass effect. The drop position of the menu bar is designed to be 5px, and all submenu bars are designed to be rounded rectangles (美化菜单栏展开后的颜色为淡蓝色带有些许科技风,并设置带有阴影的透明度类似毛玻璃效果,设计菜单栏下落位置为5px以及设计所有子菜单栏为圆角矩形).")]),e("p",null,[e("b",null,"New Feature:"),t(" 2.0 The native Choicebox selection box is designed as a rounded rectangle, and the drop-down selection box is designed as transparent light blue (将原生自带的Choicebox选择框设计为圆角矩形,及将下拉选择框设计为透明淡蓝色).")]),e("p",null,[e("b",null,"New Feature:"),t(" 3.0 Each category of the toolbox is added with a corresponding color icon, and the number of programs label is added (工具箱每个分类增加对应的彩色图标,并增加程序数量标签).")]),e("p",null,[e("b",null,"New Feature:"),t(" 4.0 Light blue glow is added to all tool cards on the home page to show the scientific trend and add a light red background to the labels of tool cards (首页所有Tool Cards添加淡蓝色辉光,展示科技风,为工具卡片的标签添加淡红色背景).")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: v1.2.2"),e("b",null,"Date: 2022-09-28"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/LIjTmbgKWQJe9nSfX2wi0w",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/LIjTmbgKWQJe9nSfX2wi0w"),t(),e("br"),e("p",null,[e("b",null,"New App:"),t(" 1.0 Ribosome 16S DNA Mindmap (微生物原核核糖体16S DNA即扩增子测序流程的思维导图).")]),e("p",null,[e("b",null,"New App:"),t(" 2.0 Metagenome Illumina Mindmap (微生物基于Illumina平台宏基因组测序及分析流程的思维导图).")]),e("p",null,[e("b",null,"New App:"),t(" 3.0 Metagenome PacBio Mindmap (微生物基于PacBio平台宏基因组测序及分析流程的思维导图).")]),e("p",null,[e("b",null,"New App:"),t(" 4.0 Glycometabolism Mindmap (糖代谢的复杂过程网络的思维导图).")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.2.1"),e("b",null,"Date: 2022-09-27"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/ulDSHmqwGC30eP8EXqh5yA",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/ulDSHmqwGC30eP8EXqh5yA"),t(),e("br"),e("p",null,[e("b",null,"New Features:"),t(" 1.0 Complete the window and content of "),e("b",null,"Help -> HelpDoc"),t(". ")]),e("p",null,[e("b",null,"New Features:"),t(" 2.0 Complete the window and content of "),e("b",null,"Help -> About"),t(". ")]),e("p",null,[e("b",null,"New Features:"),t(" 3.0 Complete the window and content of "),e("b",null,"Help -> Source"),t(". ")]),e("p",null,[e("b",null,"New Features:"),t(" 4.0 Complete the window and content of "),e("b",null,"Help -> Version"),t(". ")]),e("p",null,[e("b",null,"New Features:"),t(" 5.0 Complete the window and content of "),e("b",null,"Help -> Update"),t(". ")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.2.0"),e("b",null,"Date: 2022-09-25"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/NIua7cNeOGINfvmq9YgcZw",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/NIua7cNeOGINfvmq9YgcZw"),t(),e("br"),e("p",null,[e("b",null,"New Features:"),t(" 1.0 This update of OmicsSuite adds automatic detection of new stable versions when starting programs. The official address for releasing new versions is: https://github.com/OmicsSuite/OmicsSuite.github.io/releases At the same time, this update is version 1.2.0, which means that important functions are new and new.(OmicsSuite此次更新增加了启动程序时自动检测新的稳定版本,新版本释放官方地址为:https://github.com/OmicsSuite/OmicsSuite.github.io/releases,同时此次更新为1.2.0版本,意味着重要功能跟新和新的开始。) ")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.1.3"),e("b",null,"Date: 2022-06-25"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/Q1Dhy6_vyh4u0pHhTCGI2w",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/Q1Dhy6_vyh4u0pHhTCGI2w"),t(),e("br"),e("p",null,[e("b",null,"New Apps:"),t(" 1.0 ChordPlot (弦图可视化复杂配对关系). ")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.1.2"),e("b",null,"Date: 2022-06-09"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/GoAxeMZeo7okmW5KxErtWw",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/GoAxeMZeo7okmW5KxErtWw"),t(),e("br"),e("p",null,[e("b",null,"New Apps:"),t(" 1.0 SurvivalAnalysis (临床医学生存分析). ")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.0 WGCNA Results Download. ")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.1.1"),e("b",null,"Date: 2022-06-07"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/WU6-WclLa8X6JQi1z9XISg",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/WU6-WclLa8X6JQi1z9XISg"),t(),e("br"),e("p",null,[e("b",null,"New Apps:"),t(" 1.0 WGCNA (WGCNA 加权基因共表达网络分析). ")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.1.0"),e("b",null,"Date: 2022-05-31"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/gSPEJ4-KXJtsg9P8rc84LQ",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/gSPEJ4-KXJtsg9P8rc84LQ"),t(),e("br"),e("p",null,[e("b",null,"New Apps:"),t(" 1.0 ClusterPlot (聚类分析多算法散点多边形可视化). ")]),e("p",null,[e("b",null,"New Apps:"),t(" 1.1 ClusterTree (聚类分析多算法多类型树状可视化). ")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.0 Fixed home page categories list (修复首页程序分类列表). ")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.0.9"),e("b",null,"Date: 2022-05-10"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/AtQpM6-7cPcFercaHCb9tw",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/AtQpM6-7cPcFercaHCb9tw"),t(),e("br"),e("p",null,[e("b",null,"New Features:"),t(" 2.0 OmicsSuite provides an analysis result Table Download interface for all algorithms on which data analysis programs are based, such as PCA, TSNE, GO enrichment, KEGG enrichment, etc. Users can download data analysis result files by running the result [Table Download] button (OmicsSuite 为所有数据分析程序基于的算法如PCA、TSNE、GO enrichment、KEGG enrichment等提供分析结果表格下载接口,用户可以通过运行结果【Table Download】按钮下载数据分析结果文件). ")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.0 Fix the sample data of GO and KEGG format error (修复GO和KEGG示例数据格式错误问题). ")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.0.8"),e("b",null,"Date: 2022-05-10"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/Y7-FoaTt7CeMS0ymPvMzfA",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/Y7-FoaTt7CeMS0ymPvMzfA"),t(),e("br"),e("p",null,[e("b",null,"New Features:"),t(" 2.0 Browser buttons and table boxes of all programs support dragging and uploading data files (所有程序的Browser按钮和表格框支持拖拽上传数据文件). ")]),e("p",null,[e("b",null,"New Features:"),t(" 2.1 All programs add a progress bar display to show the progress of background tasks (所有程序添加进度条展示器用于显示后台任务的执行进度). ")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.0 None. ")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.0.7"),e("b",null,"Date: 2022-05-09"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/EJLthBZggalhs_z0nC6xmQ",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/EJLthBZggalhs_z0nC6xmQ"),t(),e("br"),e("p",null,[e("b",null,"New Apps:"),t(" 1.0 GOenrichStat, GOenrichBar, GOenrichBubble, GOenrichNet, GOenrichTree, GOenrichMap (新增 GO 富集分析 6 个Apps). ")]),e("p",null,[e("b",null,"New Apps:"),t(" 1.1 KEGGenrichBar, KEGGenrichBubble, KEGGenrichNet, KEGGenrichTree, KEGGenrichMap (新增 KEGG 富集分析 5 个Apps). ")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.0 None. ")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.0.6"),e("b",null,"Date: 2022-05-06"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/5AUKxQCConxOJHcn2PmNpw",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/5AUKxQCConxOJHcn2PmNpw"),t(),e("br"),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.0 Emergency repair (紧急修复组件安全及更新).")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.1 Repair the operation logic of the Clear button of all apps, including resetting data and all parameters (修复所有App的Clear按钮的操作逻辑,包括重置数据及所有参数).")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.2 Clear the buffer data and results when closing App Tab button, and reset all variables and parameters (修复关闭App Tab按钮时清理缓冲数据及结果,并重置所有变量及参数).")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.3 Optimize the aesthetics of App Tab button (优化App Tab按钮的美观度).")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.0.5"),e("b",null,"Date: 2022-05-06"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/5AUKxQCConxOJHcn2PmNpw",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/5AUKxQCConxOJHcn2PmNpw"),t(),e("br"),e("p",null,[e("b",null,"New Apps:"),t(" 1.0 SinCosTan (三角函数表达式与可视化)")]),e("p",null,[e("b",null,"New Apps:"),t(" 1.1 FourierFormula (傅里叶级数与变换可视化)")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.0 Fixed option of Clear button (修复 Clear 按钮的操作逻辑,避免数据交叉).")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.0.4"),e("b",null,"Date: 2022-05-03"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/yj_-f98Vu_Uzczt2IB1SYw",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/yj_-f98Vu_Uzczt2IB1SYw"),t(),e("br"),e("p",null,[e("b",null,"New Apps:"),t(" 1.0 NetworkPlot (Regulatory Network Plot) (新增 Network Plot App!)")]),e("p",null,[e("b",null,"New Apps:"),t(" 1.1 CommunityPlot (Regulatory Network Plot) (新增 Community Plot App!)")]),e("p",null,[e("b",null,"New Features:"),t(" 2.0 The regulatory network plays a significant advantage in exploring the analysis of complex biological regulatory relationships. Based on the regulatory pairing data between two types of nodes (it is suggested that the regulatory relationship pairs meet the significance), this program constructs the regulatory relationship network by calculating the connectivity or simply counting the number of nodes, and visualizes it. Is suitable for that regulation relationship of protein-protein, gene-gene, microRNA-mrna, TF-gene, microRNA-circrna, microRNA-lncrna and other molecular pair. (调控网络在探索生物学复杂的调控关系分析中发挥着显著的优势,本程序基于两类节点间的调控配对数据(建议是符合显著性的调控关系对)通过计算连接度或单纯计算节点数进行构建调控关系网络并可视化。适用于Protein - Protein, Gene - Gene, MicroRNA - mRNA, TF - Gene, MicroRNA - CircRNA, MicroRNA - LncRNA等分子对调控关系。)")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.0 Fixed options icon from dynamic to static.")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.0.3"),e("b",null,"Date: 2022-05-03"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/f0SF7EtGwKy47y6JDaP0JQ",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/f0SF7EtGwKy47y6JDaP0JQ"),t(),e("br"),e("p",null,[e("b",null,"New Apps:"),t(" 1.0 TSNEPlot (TSNE analysis and Plot) (新增 TSNE Plot App!)")]),e("p",null,[e("b",null,"New Apps:"),t(" 1.1 VolcanoPlot (Volcano and Plot) (新增 Volcano Plot App!)")]),e("p",null,[e("b",null,"New Features:"),t(" 2.0 Add OmicsSuite clock and dynamic painting in the right drawer of the Home page. (Home 页面右抽屉添加OmicsSuite时钟和动态花绘。)")]),e("p",null,[e("b",null,"New Features:"),t(" 2.1 At the bottom of the program, add an access window related to OmicsSuite, and you need to connect to the network. (程序页面底部添加OmicsSuite相关的访问窗口,需要连接网络访问。)")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.0 None.")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.0.2"),e("b",null,"Date: 2022-05-01"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/QNLV8dLrXz1kRDeiaLqc9w",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/QNLV8dLrXz1kRDeiaLqc9w"),t(),e("br"),e("p",null,[e("b",null,"New Apps:"),t(" 1.0 Venn Plot (Venn Diagram Plot up to 7 sets) (新增 VennPlot App!)")]),e("p",null,[e("b",null,"New Features:"),t(" 2.0 The right drawer of the Home page supports small screen access to Bioscience Tools official website and access to version update information. (Home 页面右抽屉支持小屏幕访问 OmicsSuite 官网和访问版本更新信息。)")]),e("p",null,[e("b",null,"New Features:"),t(" 2.1 The left drawer of the Home page crosses the mouse over the program button to support the preview function of the program interface. (Home 页面左抽屉在程序按钮上划过鼠标支持程序界面预览功能。)")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.0 None.")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.0.1"),e("b",null,"Date: 2022-04-30"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/SxNTbKUw-lJhxgJppjUqxA",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/SxNTbKUw-lJhxgJppjUqxA"),t(),e("br"),e("p",null,[e("b",null,"New Apps:"),t(" 1.0 PCAPlot (Principal Component Analysis and Plot). (新增 PCAPlot 进行 PCA 降维分析及可视化 App!)")]),e("p",null,[e("b",null,"New Features:"),t(" 2.0 Add the Slider component for the first time. (首次添加数值滑动组件。)")]),e("p",null,[e("b",null,"New Features:"),t(" 2.1 Added official website information and version update section to the Home page for the first time. (首次在 Home 页面增加官网信息及版本更新板块。)")]),e("p",null,[e("b",null,"New Features:"),t(" 2.2 Add the Clear button to reset the data. (为了方便用户清除当前的数据进行后续分析,添加 Clear 按钮作为 Trash回收。)")]),e("p",null,[e("b",null,"Bug Fixed:"),t("3.0 Reduce the installer file. (减小 OmicsSuite 安装程序文件。)")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.0.0"),e("b",null,"Date: 2022-04-28"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/DM5j4PDnBExwBu5o9VTr7g",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/DM5j4PDnBExwBu5o9VTr7g"),t(),e("br"),e("p",null,[e("b",null,"New Apps:"),t(" 1.1 RevCom (Reverse Complete) (新增 RevCom DNA序列反向互补操作 App!)")]),e("p",null,[e("b",null,"New Apps:"),t(" 1.2 CorPlot (Correlation Analysis and Plot) (新增 CorPlot 样品 Pearson 相关性分析及可视化 App。)")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 2.1 Package JRE 11 Java environment in OmicsSuite, so the Java 8 or later version don't need on user's computer.")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.0.0-Alpha"),e("b",null,"Date: 2022-04-26"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/cGxWvXsDHoHwVE04NIzuOw",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/cGxWvXsDHoHwVE04NIzuOw"),t(),e("br"),e("p",null,[e("b",null,"New Apps:"),t(" OmicsSuite project assumption -> JavaFX project was developed based on Java 11 -> OmicsSuite framework was preliminarily completed -> OmicsSuite (UI) user interface prototype design was completed. ")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" Compile for the first time and support the installation of Windows platform.")])])])],-1)),C=o(()=>e("br",null,null,-1));function F(n,k,P,D,G,H){const s=i("AppHeader"),r=i("el-header"),p=i("el-main"),u=i("AppFooter"),d=i("el-footer"),c=i("el-container"),m=i("el-backtop");return w(),y("div",q,[l(c,null,{default:a(()=>[l(r,null,{default:a(()=>[l(s)]),_:1}),l(p,null,{default:a(()=>[N,O,C]),_:1}),l(d,null,{default:a(()=>[l(u)]),_:1})]),_:1}),l(m,{right:50,bottom:100})])}const Y=h(A,[["render",F],["__scopeId","data-v-821e49a2"]]);export{Y as default}; diff --git a/assets/DownloadView-c7c9ef09.js b/assets/DownloadView-c7c9ef09.js deleted file mode 100644 index afd671b..0000000 --- a/assets/DownloadView-c7c9ef09.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as m,A as h,a as b,b as g,c as f}from"./index-eab933a6.js";import{ah as i,o as x,c as w,V as l,P as a,ax as y,ay as S,a as e,T as t}from"./@vue-248d724b.js";import"./@splinetool-99227827.js";import"./vue-router-401d444e.js";import"./element-plus-ab7336d6.js";import"./lodash-es-21c98b27.js";import"./@vueuse-89fc2c2e.js";import"./@element-plus-0de4ac96.js";import"./@popperjs-c75af06c.js";import"./@ctrl-f8748455.js";import"./dayjs-5c34775c.js";import"./async-validator-dee29e8b.js";import"./memoize-one-297ddbcb.js";import"./escape-html-64fe8e16.js";import"./normalize-wheel-es-ed76fb12.js";import"./@floating-ui-72671fae.js";import"./echarts-9ae96183.js";import"./zrender-e9104294.js";const v={components:{AppHeader:h,AppFooter:b},data(){return{}},mounted(){}},A=n=>(y("data-v-c9919c89"),n=n(),S(),n),q={class:"common-layout"},N=A(()=>e("div",{class:"page"},[e("div",null,[e("img",{src:g,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}}),e("div",{class:"image-text-card"},[e("p",{class:"card-title"},"SourceForge Download (Default):"),e("a",{href:"https://sourceforge.net/projects/omicssuite-github-io/",target:"_blank",style:{color:"#008888","font-weight":"bold"}},"https://sourceforge.net/projects/omicssuite-github-io/"),e("br"),e("br"),e("p",{class:"card-title"},"GitHub Download:"),e("a",{href:"https://github.com/OmicsSuite/OmicsSuite.github.io/releases/",target:"_blank",style:{color:"#008888","font-weight":"bold"}},"https://github.com/OmicsSuite/OmicsSuite.github.io/releases/"),e("br"),e("br"),e("p",{class:"card-title"},"Aliyun Download:"),e("a",{href:"https://www.aliyundrive.com/s/Defuhf7FVGw",target:"_blank",style:{color:"#008888","font-weight":"bold"}},"https://www.aliyundrive.com/s/Defuhf7FVGw")])]),e("div",null,[e("br"),e("p",{style:{"font-size":"2em","font-weight":"bold",color:"#000000"}}," Versions History "),e("div",{class:"image-text-card"},[e("div",{style:{width:"100%",height:"auto",background:"radial-gradient(#00808088 0, #00808055 100%)","border-radius":"10px",padding:"5px","text-align":"center"}},[e("img",{src:f,alt:"OmicsSuite",style:{height:"200px",margin:"auto","border-radius":"20%"}})]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808055 100%)",padding:"20px","line-height":"30px"}},[e("h3",null,"OmicsSuite-v1.3.9"),e("b",null,"Github:"),t(),e("a",{href:"https://github.com/OmicsSuite/OmicsSuite.github.io",style:{color:"#ffffff"}},"https://github.com/OmicsSuite/OmicsSuite.github.io"),t(),e("br"),e("b",null,"Website:"),t(),e("a",{href:"https://OmicsSuite.github.io",style:{color:"#ffffff"}},"https://OmicsSuite.github.io"),t(),e("br"),e("b",null,"SourceForge:"),t(),e("a",{href:"https://sourceforge.net/projects/OmicsSuite-github-io/",style:{color:"#ffffff"}},"https://sourceforge.net/projects/OmicsSuite-github-io/"),t(),e("br"),e("br"),e("b",null,"Download1 (Github Release):"),t(),e("a",{href:"https://github.com/OmicsSuite/OmicsSuite.github.io/releases/download/v1.3.9/OmicsSuite-v1.3.9.exe",style:{color:"#ffffff"}},"OmicsSuite-v1.3.9 [Windows]"),t(),e("br"),e("b",null,"Download2 (SourceForge):"),t(),e("a",{href:"https://sourceforge.net/projects/OmicsSuite-github-io/files/latest/download",style:{color:"#ffffff"}},"OmicsSuite-v1.3.9 [Windows]"),t(),e("br"),e("b",null,"Download3 (AliyunDrive):"),t(),e("a",{href:"https://www.aliyundrive.com/s/Defuhf7FVGw",style:{color:"#ffffff"}},"OmicsSuite-v1.3.9 [Windows]"),t(),e("br"),e("hr"),e("b",null,"Author: Benben Miao"),t(),e("br"),e("b",null,"Email:"),t(" benben.miao@outlook.com "),e("br")]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite-v1.3.9"),e("b",null,"Date: 2023-09-07"),t(),e("br"),e("p",null,[e("b",null,"New Feature:"),t(" 1.1 Added ShinySEM application to Algorithm category for building structural equation models and visualization (在Algorithm分类中新增ShinySEM应用,用于构建结构方程模型和可视化).")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 2.1 Fix links in OmicsSuite to provide CDN support (修复OmicsSuite中的链接,提供CDN支持).")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite-v1.3.8"),e("b",null,"Date: 2023-08-02"),t(),e("br"),e("p",null,[e("b",null,"New Feature:"),t(" 1.1 BioSciTools has been renamed OmicsSuite, and the corresponding github repository, website, and download links have been updated synchronously (BioSciTools更名为OmicsSuite,对应的GitHub仓库、网站、下载链接同步更新).")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 2.1 Fix the issue of some apps failing to run (修复部分app运行失败的问题).")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite-v1.3.6"),e("b",null,"Date: 2023-05-15"),t(),e("br"),e("b",null,[t("Update: "),e("a",{href:"https://mp.weixin.qq.com/s/IVu9EAxeV58VZzhW7nu90g",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/IVu9EAxeV58VZzhW7nu90g"),t(),e("br")]),e("p",null,[e("b",null,"New Feature:"),t(" 1.1 ① redesigned Logo based on the original logo; ② New website: https://OmicsSuite.podia.com; ③ promotional video: OmicsSuite Video. (①基于原版Logo重新设计的Logo;②新的网站:https://OmicsSuite.podia.com;③宣传视频:OmicsSuite Video。).")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 2.1 ① Update some application codes and parameters, such as CorPlot, PCAPlot, TSNEPlot, etc. ② Fix the running problems of some applications caused by the database. (①更新部分应用的代码和参数,如CorPlot, PCAPlot, TSNEPlot等;②修复部分应用由于数据库导致的运行问题。).")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite-v1.3.5"),e("b",null,"Date: 2023-03-20"),t(),e("br"),e("b",null,[t("Update: "),e("a",{href:"https://mp.weixin.qq.com/s/D72wOFkjTfWJAwWd9vkWlw",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/D72wOFkjTfWJAwWd9vkWlw"),t(),e("br")]),e("p",null,[e("b",null,"New Feature:"),t(" 1.1 ① Reduce the color, tone and transparency of all UI interfaces of the program; (2) optimize the description of parameters, especially the input file type and upload mode, such as the sequence input is mainly in Fasta format, which supports pasting sequence and uploading sequence files, the table data is mainly in Txt text tab format, which supports button upload and drag, and the single-cell Cellrange/Visium large data file mainly uses the specified file path. ③ Add references to all programs (published articles or R citation) (①降低程序所有UI界面的颜色色调和透明度;②优化参数说明,尤其是输入文件类型和上传方式,如序列输入主要以Fasta格式,支持粘贴序列和上传序列文件,表格数据主要以Txt文本制表符格式,支持按钮上传和拖拽方式,单细胞Cellrange/Visium大型数据文件主要以指定文件路径即可等;③所有程序添加参考文献(发表文章或R引用方式)).")]),e("p",null,[e("b",null,"New App:"),t(" 2.1 Introduce the 30+Shiny framework program I developed and optimized before through Java encryption code (通过Java加密代码方式引入我之前开发并优化的30+Shiny框架程序).")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.1 Solve the adaptation problem of some users due to the screen resolution of notebook or desktop computer (解决部分用户由于笔记本或台式电脑屏幕分辨率的适配问题).")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite-v1.3.4"),e("b",null,"Date: 2023-03-04"),t(),e("br"),e("b",null,[t("Update: "),e("a",{href:"https://mp.weixin.qq.com/s/mvkuJv95T8wsFcxK6_NDxg",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/mvkuJv95T8wsFcxK6_NDxg"),t(),e("br")]),e("p",null,[e("b",null,"UI Design:"),t(" 1.1 Add the OpenExample button at the bottom of the table window for all programs, which is convenient for users to find the program sample data and prepare the data structure suitable for the program according to the sample data (为所有程序在表格窗口下方添加OpenExample按钮,方便用户找到程序示例数据,并根据示例数据准备适合程序的数据结构).")]),e("p",null,[e("b",null,"New App:"),t(" 2.1 There are three new procedures for genome gene density and two/three genome collinearity analysis in Genomics genome classification, including genome density, digenomesynty and trigenomesynty.")]),e("p",null,[e("b",null,"New App:"),t(" 2.2 Six programs related to differentially expressed genes and KEGG Pathway visualization (`mversusa (maplot), upset, PathwayNativeSinglesmaple, PathwayNativeMultisample, PathwayGraphvizsingle, PathwayGraphvizmulti') in the Transcriptomics classification.")]),e("p",null,[e("b",null,"New App:"),t(" 2.3 Eight Metabolomics programs based on the original analysis of LC-MS mass spectrometry data mzML have been added to the metabolomics metabolomics classification, including metabomZML, metabomHeatmap, metaboroi, metabobasepeakion, metabotaliochrom, metabopeakintensity, metabopeakrt and metabopeakanno.")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.1 Solve the analysis process interruption and task failure caused by Chinese user names of some users. This update will be suitable for most Windows computer environments (解决部分用户由于中文用户名导致的分析进程中断及任务失败,此次更新将适合于大多数Windows电脑环境).")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite-v1.3.3"),e("b",null,"Date: 2023-02-26"),t(),e("br"),e("b",null,[t("Update: "),e("a",{href:"https://mp.weixin.qq.com/s/dYfH83mEccsLyeCoMLzoRw",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/dYfH83mEccsLyeCoMLzoRw"),t(),e("br")]),e("p",null,[e("b",null,"UI Design:"),t(' 1.1 This update beautifies the startup interface and the "OmicsSuite" on the Home page, classifies and counts Echarts (此次更新美化启动界面和Home页面的`OmicsSuite`所有程序分类和统计Echarts).')]),e("p",null,[e("b",null,"New App:"),t(" 2.1 SingleCell classification of' Singlecell' is related to single cell differentiation trajectory ('monocle umap, monocle marker, monocle trajectories') and single cell spatial transcriptome ('spatial feature, spatial gene, spatial umap, spatialtsne, SpatialAirClusterMaker, SpatialAllClusterMaker, Spatial Slice`) a total of 10 programs.")]),e("p",null,[e("b",null,"New App:"),t(" 2.2 Six programs related to differentially expressed genes and KEGG Pathway visualization (`mversusa (maplot), upset, PathwayNativeSinglesmaple, PathwayNativeMultisample, PathwayGraphvizsingle, PathwayGraphvizmulti') in the Transcriptomics classification.")]),e("p",null,[e("b",null,"New App:"),t(" 2.3 Seven programs related to the operation of `sequences` nucleotide sequence or amino acid sequence (`seqslength, seqsheartail, seqsslice, seqsgc, seqstranslate, seqpalindrome, pairwise alignment').")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.1 Fix the problem of slow loading of CDN when accessing the right sidebar page (修复右侧边栏页面访问时CDN加载缓慢的问题).")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite-v1.3.2"),e("b",null,"Date: 2023-02-19"),t(),e("br"),e("b",null,[t("Update: "),e("a",{href:"https://mp.weixin.qq.com/s/quZ2bNI6ZUYu8_Gjrua4RQ",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/quZ2bNI6ZUYu8_Gjrua4RQ"),t(),e("br")]),e("p",null,[e("b",null,"UI Design:"),t(" 1.1 Fixed slow loading of animation in startup interface (修复启动界面的动画加载缓慢).")]),e("p",null,[e("b",null,"New App:"),t(" 2.1 Update the data analysis program of single cell conventional transcriptome (SingleCell RNA-Seq) based on the output of 10X Genomics sequencing CellRange. Many programs mainly refer to 10X Genomics data format and Seurat data analysis flow, allowing users to perform data QC, cell filtering, mitochondrial gene proportion statistics, Feature filtering, hypervariable Feature identification, PCA analysis and JackStraw's selection of PCA, cell UMAP/TSNE clustering, Marker gene selection of all Cluster, and output visual results and corresponding tabular data in all analyses. The update procedures are as follows: update Heatmap and CircosHeatmap in Algorithm classification, update feature QC, feature filter, feature variable, feature PCA, PCA Jack Straw, Cell Umap, Celtsne in SingleCell classification, MarkerViolin, MarkerUMAP, MarkerHeatmap, CellAnnotation (更新带来基于10X Genomics测序CellRange输出结果的单细胞常规转录组(SingleCell RNA-Seq)数据分析程序。多个程序主要参考10X Genomics数据格式和Seurat数据分析流程,允许用户执行数据QC、细胞过滤、线粒体基因占比统计、Feature过滤、高变Feature鉴定、PCA分析及JackStraw对PCA的选择、细胞UMAP/TSNE聚类、所有Cluster的Marker基因选择,所有分析中输出可视化结果和对应的表格数据。更新程序如下:Algorithm分类中更新Heatmap、CircosHeatmap,SingleCell分类中更新FeatureQC, FeatureFilter, FeatureVariable, FeaturePCA, PCAJackStraw, CellUMAP, CellTSNE, MarkerViolin, MarkerUMAP, MarkerHeatmap, CellAnnotation).")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.1 Fixed slow loading of animation in startup interface (修复启动界面的动画加载缓慢).")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite-v1.3.1"),e("b",null,"Date: 2023-01-07"),t(),e("br"),e("b",null,[t("Update: "),e("a",{href:"https://mp.weixin.qq.com/s/j12ysJWhZYpXruF1r50rKA",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/j12ysJWhZYpXruF1r50rKA"),t(),e("br")]),e("p",null,[e("b",null,"UI Design:"),t(" 1.1 Optimize and update tool drawer category columns and icons (优化和更新工具抽屉分类栏目和图标).")]),e("p",null,[e("b",null,"New App:"),t(" 2.1 Add nearly 30 omics-related programs such as HG 19 Gene EXP, HG 19 Gene Marker, Chloroplast Genome, Mito Genome, Maftitv, Mafachange, Mafomatic Interaction, etc (新增HG19GeneExp, HG19GeneMarker, ChloroplastGenome, MitoGenome, MafTiTv, MafAAChange, MafSomaticInteraction等近30个组学相关的程序).")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.1 Fix the flashing of the main page to make the program load more smoothly (修复主页面画面闪动,使得程序加载更加流畅).")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite-v1.3.0"),e("b",null,"Date: 2022-12-07"),t(),e("br"),e("b",null,[t("Update: "),e("a",{href:"https://mp.weixin.qq.com/s/eHK8ILEzsjTWQCQyIYCMMQ",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/eHK8ILEzsjTWQCQyIYCMMQ"),t(),e("br")]),e("p",null,[e("b",null,"UI Design:"),t(" 1.1 The main purpose of updating the interface of OmicsSuiteUI is to make the program simpler, more comfortable and more modern. I also examined my own aesthetic standards through continuous exploration, and finally found that a good interface needs clear logic, simple and comfortable interface (更新OmicsSuiteUI界面主要为了使得程序更加简约、舒服、现代化,我也是在不断探索中审视自己的审美观,最终发现好的界面需要逻辑清晰、界面简约舒适).")]),e("p",null,[e("b",null,"New App:"),t(" 2.1 The newly added Apps mainly include barstat, scatterplot, groupline, quantile q (QQ), density normal, boxstat, violinstat, piestat, dounstat, and Seq Motif in Sequence category (新增Apps主要包括Statistics分类中的BarStat, ScatterPlot, GroupLine, QuantileQ(QQ), DensityNormal, BoxStat, ViolinStat, PieStat, DountStat,以及Sequence分类中的Seq Motif程序).")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.1 Temporarily shut down the use of Shiny Apps program, and the code logic and security problems are still being solved (暂时关闭Shiny Apps程序的使用,代码逻辑和安全问题仍然在解决).")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite-v1.2.5"),e("b",null,"Date: 2022-10-30"),t(),e("br"),e("b",null,[t("Update: "),e("a",{href:"https://mp.weixin.qq.com/s/38rDWcsIxTIRgbPNCudhaw",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/38rDWcsIxTIRgbPNCudhaw"),t(),e("br")]),e("p",null,[e("b",null,"New Features:"),t(" 1.1 New courses and feedback section (新增课程与反馈板块).")]),e("p",null,[e("b",null,"New Features:"),t(" 1.2 New Shiny programs, such as Network Shiny, WGCNA Shiny and Community Shiny (新增Shiny程序,如Network Shiny、WGCNA Shiny、Community Shiny).")]),e("p",null,[e("b",null,"New Features:"),t(" 1.3 Re-adjust the layout and beautification of the program interface (重新调整程序界面布局和美化).")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite-v1.2.4"),e("b",null,"Date: 2022-10-30"),t(),e("br"),e("b",null,[t("Update: "),e("a",{href:"https://mp.weixin.qq.com/s/YeYZ-M-QCwr18Vc6Quytzg",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/YeYZ-M-QCwr18Vc6Quytzg"),t(),e("br")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 1.0 This update is an emergency update, which mainly solves the fatal problem that many researchers can't start after installing OmicsSuite recently. ① This problem is not caused by Java and R environment. The program comes with a compressed version of JDK-11 environment, so users don't need to install any version of Java themselves. ② This problem is mainly due to the regional shielding of specific domain names in https://api.github.com. Therefore, this update mainly solves the problem that the API in the function is automatically requested to be updated when the program is started, and the program can be started and run under any circumstances of networking or disconnection after the update (此次更新属于紧急更新,主要解决近期以来不少科研者遇到安装OmicsSuite后无法启动的致命问题。①该问题不是由于Java和R环境导致,程序自带压缩版本的JDK-11环境,用户无须自己安装任何版本的Java。②该问题主要由于区域对https://api.github.com特定域名的屏蔽,因此此次更新主要解决由于程序启动时自动请求更新函数中的API,更新后可在联网或断网的任何情况下启动并运行程序).")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite-v1.2.3"),e("b",null,"Date: 2022-09-30"),t(),e("br"),e("b",null,[t("Update: "),e("a",{href:"https://mp.weixin.qq.com/s/yNleCDhdfmmFiv97LrRWlA",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/yNleCDhdfmmFiv97LrRWlA"),t(),e("br")]),e("p",null,[e("b",null,"New Feature:"),t(" 1.0 The color of the beautified menu bar after expansion is light blue with a little bit of technological style, and the transparency with shadows is set to be similar to the ground glass effect. The drop position of the menu bar is designed to be 5px, and all submenu bars are designed to be rounded rectangles (美化菜单栏展开后的颜色为淡蓝色带有些许科技风,并设置带有阴影的透明度类似毛玻璃效果,设计菜单栏下落位置为5px以及设计所有子菜单栏为圆角矩形).")]),e("p",null,[e("b",null,"New Feature:"),t(" 2.0 The native Choicebox selection box is designed as a rounded rectangle, and the drop-down selection box is designed as transparent light blue (将原生自带的Choicebox选择框设计为圆角矩形,及将下拉选择框设计为透明淡蓝色).")]),e("p",null,[e("b",null,"New Feature:"),t(" 3.0 Each category of the toolbox is added with a corresponding color icon, and the number of programs label is added (工具箱每个分类增加对应的彩色图标,并增加程序数量标签).")]),e("p",null,[e("b",null,"New Feature:"),t(" 4.0 Light blue glow is added to all tool cards on the home page to show the scientific trend and add a light red background to the labels of tool cards (首页所有Tool Cards添加淡蓝色辉光,展示科技风,为工具卡片的标签添加淡红色背景).")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: v1.2.2"),e("b",null,"Date: 2022-09-28"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/LIjTmbgKWQJe9nSfX2wi0w",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/LIjTmbgKWQJe9nSfX2wi0w"),t(),e("br"),e("p",null,[e("b",null,"New App:"),t(" 1.0 Ribosome 16S DNA Mindmap (微生物原核核糖体16S DNA即扩增子测序流程的思维导图).")]),e("p",null,[e("b",null,"New App:"),t(" 2.0 Metagenome Illumina Mindmap (微生物基于Illumina平台宏基因组测序及分析流程的思维导图).")]),e("p",null,[e("b",null,"New App:"),t(" 3.0 Metagenome PacBio Mindmap (微生物基于PacBio平台宏基因组测序及分析流程的思维导图).")]),e("p",null,[e("b",null,"New App:"),t(" 4.0 Glycometabolism Mindmap (糖代谢的复杂过程网络的思维导图).")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.2.1"),e("b",null,"Date: 2022-09-27"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/ulDSHmqwGC30eP8EXqh5yA",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/ulDSHmqwGC30eP8EXqh5yA"),t(),e("br"),e("p",null,[e("b",null,"New Features:"),t(" 1.0 Complete the window and content of "),e("b",null,"Help -> HelpDoc"),t(". ")]),e("p",null,[e("b",null,"New Features:"),t(" 2.0 Complete the window and content of "),e("b",null,"Help -> About"),t(". ")]),e("p",null,[e("b",null,"New Features:"),t(" 3.0 Complete the window and content of "),e("b",null,"Help -> Source"),t(". ")]),e("p",null,[e("b",null,"New Features:"),t(" 4.0 Complete the window and content of "),e("b",null,"Help -> Version"),t(". ")]),e("p",null,[e("b",null,"New Features:"),t(" 5.0 Complete the window and content of "),e("b",null,"Help -> Update"),t(". ")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.2.0"),e("b",null,"Date: 2022-09-25"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/NIua7cNeOGINfvmq9YgcZw",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/NIua7cNeOGINfvmq9YgcZw"),t(),e("br"),e("p",null,[e("b",null,"New Features:"),t(" 1.0 This update of OmicsSuite adds automatic detection of new stable versions when starting programs. The official address for releasing new versions is: https://github.com/OmicsSuite/OmicsSuite.github.io/releases At the same time, this update is version 1.2.0, which means that important functions are new and new.(OmicsSuite此次更新增加了启动程序时自动检测新的稳定版本,新版本释放官方地址为:https://github.com/OmicsSuite/OmicsSuite.github.io/releases,同时此次更新为1.2.0版本,意味着重要功能跟新和新的开始。) ")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.1.3"),e("b",null,"Date: 2022-06-25"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/Q1Dhy6_vyh4u0pHhTCGI2w",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/Q1Dhy6_vyh4u0pHhTCGI2w"),t(),e("br"),e("p",null,[e("b",null,"New Apps:"),t(" 1.0 ChordPlot (弦图可视化复杂配对关系). ")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.1.2"),e("b",null,"Date: 2022-06-09"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/GoAxeMZeo7okmW5KxErtWw",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/GoAxeMZeo7okmW5KxErtWw"),t(),e("br"),e("p",null,[e("b",null,"New Apps:"),t(" 1.0 SurvivalAnalysis (临床医学生存分析). ")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.0 WGCNA Results Download. ")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.1.1"),e("b",null,"Date: 2022-06-07"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/WU6-WclLa8X6JQi1z9XISg",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/WU6-WclLa8X6JQi1z9XISg"),t(),e("br"),e("p",null,[e("b",null,"New Apps:"),t(" 1.0 WGCNA (WGCNA 加权基因共表达网络分析). ")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.1.0"),e("b",null,"Date: 2022-05-31"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/gSPEJ4-KXJtsg9P8rc84LQ",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/gSPEJ4-KXJtsg9P8rc84LQ"),t(),e("br"),e("p",null,[e("b",null,"New Apps:"),t(" 1.0 ClusterPlot (聚类分析多算法散点多边形可视化). ")]),e("p",null,[e("b",null,"New Apps:"),t(" 1.1 ClusterTree (聚类分析多算法多类型树状可视化). ")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.0 Fixed home page categories list (修复首页程序分类列表). ")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.0.9"),e("b",null,"Date: 2022-05-10"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/AtQpM6-7cPcFercaHCb9tw",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/AtQpM6-7cPcFercaHCb9tw"),t(),e("br"),e("p",null,[e("b",null,"New Features:"),t(" 2.0 OmicsSuite provides an analysis result Table Download interface for all algorithms on which data analysis programs are based, such as PCA, TSNE, GO enrichment, KEGG enrichment, etc. Users can download data analysis result files by running the result [Table Download] button (OmicsSuite 为所有数据分析程序基于的算法如PCA、TSNE、GO enrichment、KEGG enrichment等提供分析结果表格下载接口,用户可以通过运行结果【Table Download】按钮下载数据分析结果文件). ")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.0 Fix the sample data of GO and KEGG format error (修复GO和KEGG示例数据格式错误问题). ")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.0.8"),e("b",null,"Date: 2022-05-10"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/Y7-FoaTt7CeMS0ymPvMzfA",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/Y7-FoaTt7CeMS0ymPvMzfA"),t(),e("br"),e("p",null,[e("b",null,"New Features:"),t(" 2.0 Browser buttons and table boxes of all programs support dragging and uploading data files (所有程序的Browser按钮和表格框支持拖拽上传数据文件). ")]),e("p",null,[e("b",null,"New Features:"),t(" 2.1 All programs add a progress bar display to show the progress of background tasks (所有程序添加进度条展示器用于显示后台任务的执行进度). ")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.0 None. ")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.0.7"),e("b",null,"Date: 2022-05-09"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/EJLthBZggalhs_z0nC6xmQ",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/EJLthBZggalhs_z0nC6xmQ"),t(),e("br"),e("p",null,[e("b",null,"New Apps:"),t(" 1.0 GOenrichStat, GOenrichBar, GOenrichBubble, GOenrichNet, GOenrichTree, GOenrichMap (新增 GO 富集分析 6 个Apps). ")]),e("p",null,[e("b",null,"New Apps:"),t(" 1.1 KEGGenrichBar, KEGGenrichBubble, KEGGenrichNet, KEGGenrichTree, KEGGenrichMap (新增 KEGG 富集分析 5 个Apps). ")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.0 None. ")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.0.6"),e("b",null,"Date: 2022-05-06"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/5AUKxQCConxOJHcn2PmNpw",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/5AUKxQCConxOJHcn2PmNpw"),t(),e("br"),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.0 Emergency repair (紧急修复组件安全及更新).")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.1 Repair the operation logic of the Clear button of all apps, including resetting data and all parameters (修复所有App的Clear按钮的操作逻辑,包括重置数据及所有参数).")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.2 Clear the buffer data and results when closing App Tab button, and reset all variables and parameters (修复关闭App Tab按钮时清理缓冲数据及结果,并重置所有变量及参数).")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.3 Optimize the aesthetics of App Tab button (优化App Tab按钮的美观度).")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.0.5"),e("b",null,"Date: 2022-05-06"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/5AUKxQCConxOJHcn2PmNpw",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/5AUKxQCConxOJHcn2PmNpw"),t(),e("br"),e("p",null,[e("b",null,"New Apps:"),t(" 1.0 SinCosTan (三角函数表达式与可视化)")]),e("p",null,[e("b",null,"New Apps:"),t(" 1.1 FourierFormula (傅里叶级数与变换可视化)")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.0 Fixed option of Clear button (修复 Clear 按钮的操作逻辑,避免数据交叉).")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.0.4"),e("b",null,"Date: 2022-05-03"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/yj_-f98Vu_Uzczt2IB1SYw",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/yj_-f98Vu_Uzczt2IB1SYw"),t(),e("br"),e("p",null,[e("b",null,"New Apps:"),t(" 1.0 NetworkPlot (Regulatory Network Plot) (新增 Network Plot App!)")]),e("p",null,[e("b",null,"New Apps:"),t(" 1.1 CommunityPlot (Regulatory Network Plot) (新增 Community Plot App!)")]),e("p",null,[e("b",null,"New Features:"),t(" 2.0 The regulatory network plays a significant advantage in exploring the analysis of complex biological regulatory relationships. Based on the regulatory pairing data between two types of nodes (it is suggested that the regulatory relationship pairs meet the significance), this program constructs the regulatory relationship network by calculating the connectivity or simply counting the number of nodes, and visualizes it. Is suitable for that regulation relationship of protein-protein, gene-gene, microRNA-mrna, TF-gene, microRNA-circrna, microRNA-lncrna and other molecular pair. (调控网络在探索生物学复杂的调控关系分析中发挥着显著的优势,本程序基于两类节点间的调控配对数据(建议是符合显著性的调控关系对)通过计算连接度或单纯计算节点数进行构建调控关系网络并可视化。适用于Protein - Protein, Gene - Gene, MicroRNA - mRNA, TF - Gene, MicroRNA - CircRNA, MicroRNA - LncRNA等分子对调控关系。)")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.0 Fixed options icon from dynamic to static.")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.0.3"),e("b",null,"Date: 2022-05-03"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/f0SF7EtGwKy47y6JDaP0JQ",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/f0SF7EtGwKy47y6JDaP0JQ"),t(),e("br"),e("p",null,[e("b",null,"New Apps:"),t(" 1.0 TSNEPlot (TSNE analysis and Plot) (新增 TSNE Plot App!)")]),e("p",null,[e("b",null,"New Apps:"),t(" 1.1 VolcanoPlot (Volcano and Plot) (新增 Volcano Plot App!)")]),e("p",null,[e("b",null,"New Features:"),t(" 2.0 Add OmicsSuite clock and dynamic painting in the right drawer of the Home page. (Home 页面右抽屉添加OmicsSuite时钟和动态花绘。)")]),e("p",null,[e("b",null,"New Features:"),t(" 2.1 At the bottom of the program, add an access window related to OmicsSuite, and you need to connect to the network. (程序页面底部添加OmicsSuite相关的访问窗口,需要连接网络访问。)")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.0 None.")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.0.2"),e("b",null,"Date: 2022-05-01"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/QNLV8dLrXz1kRDeiaLqc9w",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/QNLV8dLrXz1kRDeiaLqc9w"),t(),e("br"),e("p",null,[e("b",null,"New Apps:"),t(" 1.0 Venn Plot (Venn Diagram Plot up to 7 sets) (新增 VennPlot App!)")]),e("p",null,[e("b",null,"New Features:"),t(" 2.0 The right drawer of the Home page supports small screen access to Bioscience Tools official website and access to version update information. (Home 页面右抽屉支持小屏幕访问 OmicsSuite 官网和访问版本更新信息。)")]),e("p",null,[e("b",null,"New Features:"),t(" 2.1 The left drawer of the Home page crosses the mouse over the program button to support the preview function of the program interface. (Home 页面左抽屉在程序按钮上划过鼠标支持程序界面预览功能。)")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.0 None.")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.0.1"),e("b",null,"Date: 2022-04-30"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/SxNTbKUw-lJhxgJppjUqxA",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/SxNTbKUw-lJhxgJppjUqxA"),t(),e("br"),e("p",null,[e("b",null,"New Apps:"),t(" 1.0 PCAPlot (Principal Component Analysis and Plot). (新增 PCAPlot 进行 PCA 降维分析及可视化 App!)")]),e("p",null,[e("b",null,"New Features:"),t(" 2.0 Add the Slider component for the first time. (首次添加数值滑动组件。)")]),e("p",null,[e("b",null,"New Features:"),t(" 2.1 Added official website information and version update section to the Home page for the first time. (首次在 Home 页面增加官网信息及版本更新板块。)")]),e("p",null,[e("b",null,"New Features:"),t(" 2.2 Add the Clear button to reset the data. (为了方便用户清除当前的数据进行后续分析,添加 Clear 按钮作为 Trash回收。)")]),e("p",null,[e("b",null,"Bug Fixed:"),t("3.0 Reduce the installer file. (减小 OmicsSuite 安装程序文件。)")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.0.0"),e("b",null,"Date: 2022-04-28"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/DM5j4PDnBExwBu5o9VTr7g",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/DM5j4PDnBExwBu5o9VTr7g"),t(),e("br"),e("p",null,[e("b",null,"New Apps:"),t(" 1.1 RevCom (Reverse Complete) (新增 RevCom DNA序列反向互补操作 App!)")]),e("p",null,[e("b",null,"New Apps:"),t(" 1.2 CorPlot (Correlation Analysis and Plot) (新增 CorPlot 样品 Pearson 相关性分析及可视化 App。)")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 2.1 Package JRE 11 Java environment in OmicsSuite, so the Java 8 or later version don't need on user's computer.")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.0.0-Alpha"),e("b",null,"Date: 2022-04-26"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/cGxWvXsDHoHwVE04NIzuOw",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/cGxWvXsDHoHwVE04NIzuOw"),t(),e("br"),e("p",null,[e("b",null,"New Apps:"),t(" OmicsSuite project assumption -> JavaFX project was developed based on Java 11 -> OmicsSuite framework was preliminarily completed -> OmicsSuite (UI) user interface prototype design was completed. ")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" Compile for the first time and support the installation of Windows platform.")])])])]),e("br")],-1));function O(n,C,F,k,P,D){const o=i("AppHeader"),s=i("el-header"),r=i("el-main"),p=i("AppFooter"),u=i("el-footer"),d=i("el-container"),c=i("el-backtop");return x(),w("div",q,[l(d,null,{default:a(()=>[l(s,null,{default:a(()=>[l(o)]),_:1}),l(r,null,{default:a(()=>[N]),_:1}),l(u,null,{default:a(()=>[l(p)]),_:1})]),_:1}),l(c,{right:50,bottom:100})])}const X=m(v,[["render",O],["__scopeId","data-v-c9919c89"]]);export{X as default}; diff --git a/assets/DownloadView-fcaad34b.css b/assets/DownloadView-fcaad34b.css deleted file mode 100644 index 1aeb5d3..0000000 --- a/assets/DownloadView-fcaad34b.css +++ /dev/null @@ -1 +0,0 @@ -.el-header[data-v-821e49a2]{padding:0;position:fixed;width:100%;z-index:100}.el-main[data-v-821e49a2]{margin-top:60px;padding:0 20%}.el-footer[data-v-821e49a2]{top:0;padding:0}.image-text-card[data-v-821e49a2]{background-color:#fff;border-radius:10px;box-shadow:0 0 10px #cdcdcd;border:1px solid #cdcdcd;padding:10px}.card-title[data-v-821e49a2]{font-size:1.2em;font-weight:700}.card-content[data-v-821e49a2]{font-size:1em;text-align:justify;line-height:2em}@media (max-width: 1200px){.el-main[data-v-821e49a2]{padding:0 10%}}@media (max-width: 800px){.el-main[data-v-821e49a2]{padding:0 2%}} diff --git a/assets/DownloadView-ecc01907.js b/assets/DownloadView-fcb192e7.js similarity index 99% rename from assets/DownloadView-ecc01907.js rename to assets/DownloadView-fcb192e7.js index 777a2ac..41ebc93 100644 --- a/assets/DownloadView-ecc01907.js +++ b/assets/DownloadView-fcb192e7.js @@ -1 +1 @@ -import{_ as m,A as h,a as b,b as g,c as f}from"./index-d094e413.js";import{ah as i,o as x,c as w,V as l,P as a,ax as y,ay as S,a as e,T as t}from"./@vue-248d724b.js";import"./@splinetool-99227827.js";import"./vue-router-401d444e.js";import"./element-plus-ab7336d6.js";import"./lodash-es-21c98b27.js";import"./@vueuse-89fc2c2e.js";import"./@element-plus-0de4ac96.js";import"./@popperjs-c75af06c.js";import"./@ctrl-f8748455.js";import"./dayjs-5c34775c.js";import"./async-validator-dee29e8b.js";import"./memoize-one-297ddbcb.js";import"./escape-html-64fe8e16.js";import"./normalize-wheel-es-ed76fb12.js";import"./@floating-ui-72671fae.js";import"./echarts-9ae96183.js";import"./zrender-e9104294.js";const v={components:{AppHeader:h,AppFooter:b},data(){return{}},mounted(){}},A=n=>(y("data-v-c9919c89"),n=n(),S(),n),q={class:"common-layout"},N=A(()=>e("div",{class:"page"},[e("div",null,[e("img",{src:g,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}}),e("div",{class:"image-text-card"},[e("p",{class:"card-title"},"SourceForge Download (Default):"),e("a",{href:"https://sourceforge.net/projects/omicssuite-github-io/",target:"_blank",style:{color:"#008888","font-weight":"bold"}},"https://sourceforge.net/projects/omicssuite-github-io/"),e("br"),e("br"),e("p",{class:"card-title"},"GitHub Download:"),e("a",{href:"https://github.com/OmicsSuite/OmicsSuite.github.io/releases/",target:"_blank",style:{color:"#008888","font-weight":"bold"}},"https://github.com/OmicsSuite/OmicsSuite.github.io/releases/"),e("br"),e("br"),e("p",{class:"card-title"},"Aliyun Download:"),e("a",{href:"https://www.aliyundrive.com/s/Defuhf7FVGw",target:"_blank",style:{color:"#008888","font-weight":"bold"}},"https://www.aliyundrive.com/s/Defuhf7FVGw")])]),e("div",null,[e("br"),e("p",{style:{"font-size":"2em","font-weight":"bold",color:"#000000"}}," Versions History "),e("div",{class:"image-text-card"},[e("div",{style:{width:"100%",height:"auto",background:"radial-gradient(#00808088 0, #00808055 100%)","border-radius":"10px",padding:"5px","text-align":"center"}},[e("img",{src:f,alt:"OmicsSuite",style:{height:"200px",margin:"auto","border-radius":"20%"}})]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808055 100%)",padding:"20px","line-height":"30px"}},[e("h3",null,"OmicsSuite-v1.3.9"),e("b",null,"Github:"),t(),e("a",{href:"https://github.com/OmicsSuite/OmicsSuite.github.io",style:{color:"#ffffff"}},"https://github.com/OmicsSuite/OmicsSuite.github.io"),t(),e("br"),e("b",null,"Website:"),t(),e("a",{href:"https://OmicsSuite.github.io",style:{color:"#ffffff"}},"https://OmicsSuite.github.io"),t(),e("br"),e("b",null,"SourceForge:"),t(),e("a",{href:"https://sourceforge.net/projects/OmicsSuite-github-io/",style:{color:"#ffffff"}},"https://sourceforge.net/projects/OmicsSuite-github-io/"),t(),e("br"),e("br"),e("b",null,"Download1 (Github Release):"),t(),e("a",{href:"https://github.com/OmicsSuite/OmicsSuite.github.io/releases/download/v1.3.9/OmicsSuite-v1.3.9.exe",style:{color:"#ffffff"}},"OmicsSuite-v1.3.9 [Windows]"),t(),e("br"),e("b",null,"Download2 (SourceForge):"),t(),e("a",{href:"https://sourceforge.net/projects/OmicsSuite-github-io/files/latest/download",style:{color:"#ffffff"}},"OmicsSuite-v1.3.9 [Windows]"),t(),e("br"),e("b",null,"Download3 (AliyunDrive):"),t(),e("a",{href:"https://www.aliyundrive.com/s/Defuhf7FVGw",style:{color:"#ffffff"}},"OmicsSuite-v1.3.9 [Windows]"),t(),e("br"),e("hr"),e("b",null,"Author: Benben Miao"),t(),e("br"),e("b",null,"Email:"),t(" benben.miao@outlook.com "),e("br")]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite-v1.3.9"),e("b",null,"Date: 2023-09-07"),t(),e("br"),e("p",null,[e("b",null,"New Feature:"),t(" 1.1 Added ShinySEM application to Algorithm category for building structural equation models and visualization (在Algorithm分类中新增ShinySEM应用,用于构建结构方程模型和可视化).")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 2.1 Fix links in OmicsSuite to provide CDN support (修复OmicsSuite中的链接,提供CDN支持).")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite-v1.3.8"),e("b",null,"Date: 2023-08-02"),t(),e("br"),e("p",null,[e("b",null,"New Feature:"),t(" 1.1 BioSciTools has been renamed OmicsSuite, and the corresponding github repository, website, and download links have been updated synchronously (BioSciTools更名为OmicsSuite,对应的GitHub仓库、网站、下载链接同步更新).")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 2.1 Fix the issue of some apps failing to run (修复部分app运行失败的问题).")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite-v1.3.6"),e("b",null,"Date: 2023-05-15"),t(),e("br"),e("b",null,[t("Update: "),e("a",{href:"https://mp.weixin.qq.com/s/IVu9EAxeV58VZzhW7nu90g",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/IVu9EAxeV58VZzhW7nu90g"),t(),e("br")]),e("p",null,[e("b",null,"New Feature:"),t(" 1.1 ① redesigned Logo based on the original logo; ② New website: https://OmicsSuite.podia.com; ③ promotional video: OmicsSuite Video. (①基于原版Logo重新设计的Logo;②新的网站:https://OmicsSuite.podia.com;③宣传视频:OmicsSuite Video。).")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 2.1 ① Update some application codes and parameters, such as CorPlot, PCAPlot, TSNEPlot, etc. ② Fix the running problems of some applications caused by the database. (①更新部分应用的代码和参数,如CorPlot, PCAPlot, TSNEPlot等;②修复部分应用由于数据库导致的运行问题。).")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite-v1.3.5"),e("b",null,"Date: 2023-03-20"),t(),e("br"),e("b",null,[t("Update: "),e("a",{href:"https://mp.weixin.qq.com/s/D72wOFkjTfWJAwWd9vkWlw",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/D72wOFkjTfWJAwWd9vkWlw"),t(),e("br")]),e("p",null,[e("b",null,"New Feature:"),t(" 1.1 ① Reduce the color, tone and transparency of all UI interfaces of the program; (2) optimize the description of parameters, especially the input file type and upload mode, such as the sequence input is mainly in Fasta format, which supports pasting sequence and uploading sequence files, the table data is mainly in Txt text tab format, which supports button upload and drag, and the single-cell Cellrange/Visium large data file mainly uses the specified file path. ③ Add references to all programs (published articles or R citation) (①降低程序所有UI界面的颜色色调和透明度;②优化参数说明,尤其是输入文件类型和上传方式,如序列输入主要以Fasta格式,支持粘贴序列和上传序列文件,表格数据主要以Txt文本制表符格式,支持按钮上传和拖拽方式,单细胞Cellrange/Visium大型数据文件主要以指定文件路径即可等;③所有程序添加参考文献(发表文章或R引用方式)).")]),e("p",null,[e("b",null,"New App:"),t(" 2.1 Introduce the 30+Shiny framework program I developed and optimized before through Java encryption code (通过Java加密代码方式引入我之前开发并优化的30+Shiny框架程序).")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.1 Solve the adaptation problem of some users due to the screen resolution of notebook or desktop computer (解决部分用户由于笔记本或台式电脑屏幕分辨率的适配问题).")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite-v1.3.4"),e("b",null,"Date: 2023-03-04"),t(),e("br"),e("b",null,[t("Update: "),e("a",{href:"https://mp.weixin.qq.com/s/mvkuJv95T8wsFcxK6_NDxg",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/mvkuJv95T8wsFcxK6_NDxg"),t(),e("br")]),e("p",null,[e("b",null,"UI Design:"),t(" 1.1 Add the OpenExample button at the bottom of the table window for all programs, which is convenient for users to find the program sample data and prepare the data structure suitable for the program according to the sample data (为所有程序在表格窗口下方添加OpenExample按钮,方便用户找到程序示例数据,并根据示例数据准备适合程序的数据结构).")]),e("p",null,[e("b",null,"New App:"),t(" 2.1 There are three new procedures for genome gene density and two/three genome collinearity analysis in Genomics genome classification, including genome density, digenomesynty and trigenomesynty.")]),e("p",null,[e("b",null,"New App:"),t(" 2.2 Six programs related to differentially expressed genes and KEGG Pathway visualization (`mversusa (maplot), upset, PathwayNativeSinglesmaple, PathwayNativeMultisample, PathwayGraphvizsingle, PathwayGraphvizmulti') in the Transcriptomics classification.")]),e("p",null,[e("b",null,"New App:"),t(" 2.3 Eight Metabolomics programs based on the original analysis of LC-MS mass spectrometry data mzML have been added to the metabolomics metabolomics classification, including metabomZML, metabomHeatmap, metaboroi, metabobasepeakion, metabotaliochrom, metabopeakintensity, metabopeakrt and metabopeakanno.")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.1 Solve the analysis process interruption and task failure caused by Chinese user names of some users. This update will be suitable for most Windows computer environments (解决部分用户由于中文用户名导致的分析进程中断及任务失败,此次更新将适合于大多数Windows电脑环境).")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite-v1.3.3"),e("b",null,"Date: 2023-02-26"),t(),e("br"),e("b",null,[t("Update: "),e("a",{href:"https://mp.weixin.qq.com/s/dYfH83mEccsLyeCoMLzoRw",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/dYfH83mEccsLyeCoMLzoRw"),t(),e("br")]),e("p",null,[e("b",null,"UI Design:"),t(' 1.1 This update beautifies the startup interface and the "OmicsSuite" on the Home page, classifies and counts Echarts (此次更新美化启动界面和Home页面的`OmicsSuite`所有程序分类和统计Echarts).')]),e("p",null,[e("b",null,"New App:"),t(" 2.1 SingleCell classification of' Singlecell' is related to single cell differentiation trajectory ('monocle umap, monocle marker, monocle trajectories') and single cell spatial transcriptome ('spatial feature, spatial gene, spatial umap, spatialtsne, SpatialAirClusterMaker, SpatialAllClusterMaker, Spatial Slice`) a total of 10 programs.")]),e("p",null,[e("b",null,"New App:"),t(" 2.2 Six programs related to differentially expressed genes and KEGG Pathway visualization (`mversusa (maplot), upset, PathwayNativeSinglesmaple, PathwayNativeMultisample, PathwayGraphvizsingle, PathwayGraphvizmulti') in the Transcriptomics classification.")]),e("p",null,[e("b",null,"New App:"),t(" 2.3 Seven programs related to the operation of `sequences` nucleotide sequence or amino acid sequence (`seqslength, seqsheartail, seqsslice, seqsgc, seqstranslate, seqpalindrome, pairwise alignment').")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.1 Fix the problem of slow loading of CDN when accessing the right sidebar page (修复右侧边栏页面访问时CDN加载缓慢的问题).")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite-v1.3.2"),e("b",null,"Date: 2023-02-19"),t(),e("br"),e("b",null,[t("Update: "),e("a",{href:"https://mp.weixin.qq.com/s/quZ2bNI6ZUYu8_Gjrua4RQ",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/quZ2bNI6ZUYu8_Gjrua4RQ"),t(),e("br")]),e("p",null,[e("b",null,"UI Design:"),t(" 1.1 Fixed slow loading of animation in startup interface (修复启动界面的动画加载缓慢).")]),e("p",null,[e("b",null,"New App:"),t(" 2.1 Update the data analysis program of single cell conventional transcriptome (SingleCell RNA-Seq) based on the output of 10X Genomics sequencing CellRange. Many programs mainly refer to 10X Genomics data format and Seurat data analysis flow, allowing users to perform data QC, cell filtering, mitochondrial gene proportion statistics, Feature filtering, hypervariable Feature identification, PCA analysis and JackStraw's selection of PCA, cell UMAP/TSNE clustering, Marker gene selection of all Cluster, and output visual results and corresponding tabular data in all analyses. The update procedures are as follows: update Heatmap and CircosHeatmap in Algorithm classification, update feature QC, feature filter, feature variable, feature PCA, PCA Jack Straw, Cell Umap, Celtsne in SingleCell classification, MarkerViolin, MarkerUMAP, MarkerHeatmap, CellAnnotation (更新带来基于10X Genomics测序CellRange输出结果的单细胞常规转录组(SingleCell RNA-Seq)数据分析程序。多个程序主要参考10X Genomics数据格式和Seurat数据分析流程,允许用户执行数据QC、细胞过滤、线粒体基因占比统计、Feature过滤、高变Feature鉴定、PCA分析及JackStraw对PCA的选择、细胞UMAP/TSNE聚类、所有Cluster的Marker基因选择,所有分析中输出可视化结果和对应的表格数据。更新程序如下:Algorithm分类中更新Heatmap、CircosHeatmap,SingleCell分类中更新FeatureQC, FeatureFilter, FeatureVariable, FeaturePCA, PCAJackStraw, CellUMAP, CellTSNE, MarkerViolin, MarkerUMAP, MarkerHeatmap, CellAnnotation).")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.1 Fixed slow loading of animation in startup interface (修复启动界面的动画加载缓慢).")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite-v1.3.1"),e("b",null,"Date: 2023-01-07"),t(),e("br"),e("b",null,[t("Update: "),e("a",{href:"https://mp.weixin.qq.com/s/j12ysJWhZYpXruF1r50rKA",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/j12ysJWhZYpXruF1r50rKA"),t(),e("br")]),e("p",null,[e("b",null,"UI Design:"),t(" 1.1 Optimize and update tool drawer category columns and icons (优化和更新工具抽屉分类栏目和图标).")]),e("p",null,[e("b",null,"New App:"),t(" 2.1 Add nearly 30 omics-related programs such as HG 19 Gene EXP, HG 19 Gene Marker, Chloroplast Genome, Mito Genome, Maftitv, Mafachange, Mafomatic Interaction, etc (新增HG19GeneExp, HG19GeneMarker, ChloroplastGenome, MitoGenome, MafTiTv, MafAAChange, MafSomaticInteraction等近30个组学相关的程序).")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.1 Fix the flashing of the main page to make the program load more smoothly (修复主页面画面闪动,使得程序加载更加流畅).")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite-v1.3.0"),e("b",null,"Date: 2022-12-07"),t(),e("br"),e("b",null,[t("Update: "),e("a",{href:"https://mp.weixin.qq.com/s/eHK8ILEzsjTWQCQyIYCMMQ",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/eHK8ILEzsjTWQCQyIYCMMQ"),t(),e("br")]),e("p",null,[e("b",null,"UI Design:"),t(" 1.1 The main purpose of updating the interface of OmicsSuiteUI is to make the program simpler, more comfortable and more modern. I also examined my own aesthetic standards through continuous exploration, and finally found that a good interface needs clear logic, simple and comfortable interface (更新OmicsSuiteUI界面主要为了使得程序更加简约、舒服、现代化,我也是在不断探索中审视自己的审美观,最终发现好的界面需要逻辑清晰、界面简约舒适).")]),e("p",null,[e("b",null,"New App:"),t(" 2.1 The newly added Apps mainly include barstat, scatterplot, groupline, quantile q (QQ), density normal, boxstat, violinstat, piestat, dounstat, and Seq Motif in Sequence category (新增Apps主要包括Statistics分类中的BarStat, ScatterPlot, GroupLine, QuantileQ(QQ), DensityNormal, BoxStat, ViolinStat, PieStat, DountStat,以及Sequence分类中的Seq Motif程序).")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.1 Temporarily shut down the use of Shiny Apps program, and the code logic and security problems are still being solved (暂时关闭Shiny Apps程序的使用,代码逻辑和安全问题仍然在解决).")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite-v1.2.5"),e("b",null,"Date: 2022-10-30"),t(),e("br"),e("b",null,[t("Update: "),e("a",{href:"https://mp.weixin.qq.com/s/38rDWcsIxTIRgbPNCudhaw",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/38rDWcsIxTIRgbPNCudhaw"),t(),e("br")]),e("p",null,[e("b",null,"New Features:"),t(" 1.1 New courses and feedback section (新增课程与反馈板块).")]),e("p",null,[e("b",null,"New Features:"),t(" 1.2 New Shiny programs, such as Network Shiny, WGCNA Shiny and Community Shiny (新增Shiny程序,如Network Shiny、WGCNA Shiny、Community Shiny).")]),e("p",null,[e("b",null,"New Features:"),t(" 1.3 Re-adjust the layout and beautification of the program interface (重新调整程序界面布局和美化).")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite-v1.2.4"),e("b",null,"Date: 2022-10-30"),t(),e("br"),e("b",null,[t("Update: "),e("a",{href:"https://mp.weixin.qq.com/s/YeYZ-M-QCwr18Vc6Quytzg",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/YeYZ-M-QCwr18Vc6Quytzg"),t(),e("br")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 1.0 This update is an emergency update, which mainly solves the fatal problem that many researchers can't start after installing OmicsSuite recently. ① This problem is not caused by Java and R environment. The program comes with a compressed version of JDK-11 environment, so users don't need to install any version of Java themselves. ② This problem is mainly due to the regional shielding of specific domain names in https://api.github.com. Therefore, this update mainly solves the problem that the API in the function is automatically requested to be updated when the program is started, and the program can be started and run under any circumstances of networking or disconnection after the update (此次更新属于紧急更新,主要解决近期以来不少科研者遇到安装OmicsSuite后无法启动的致命问题。①该问题不是由于Java和R环境导致,程序自带压缩版本的JDK-11环境,用户无须自己安装任何版本的Java。②该问题主要由于区域对https://api.github.com特定域名的屏蔽,因此此次更新主要解决由于程序启动时自动请求更新函数中的API,更新后可在联网或断网的任何情况下启动并运行程序).")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite-v1.2.3"),e("b",null,"Date: 2022-09-30"),t(),e("br"),e("b",null,[t("Update: "),e("a",{href:"https://mp.weixin.qq.com/s/yNleCDhdfmmFiv97LrRWlA",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/yNleCDhdfmmFiv97LrRWlA"),t(),e("br")]),e("p",null,[e("b",null,"New Feature:"),t(" 1.0 The color of the beautified menu bar after expansion is light blue with a little bit of technological style, and the transparency with shadows is set to be similar to the ground glass effect. The drop position of the menu bar is designed to be 5px, and all submenu bars are designed to be rounded rectangles (美化菜单栏展开后的颜色为淡蓝色带有些许科技风,并设置带有阴影的透明度类似毛玻璃效果,设计菜单栏下落位置为5px以及设计所有子菜单栏为圆角矩形).")]),e("p",null,[e("b",null,"New Feature:"),t(" 2.0 The native Choicebox selection box is designed as a rounded rectangle, and the drop-down selection box is designed as transparent light blue (将原生自带的Choicebox选择框设计为圆角矩形,及将下拉选择框设计为透明淡蓝色).")]),e("p",null,[e("b",null,"New Feature:"),t(" 3.0 Each category of the toolbox is added with a corresponding color icon, and the number of programs label is added (工具箱每个分类增加对应的彩色图标,并增加程序数量标签).")]),e("p",null,[e("b",null,"New Feature:"),t(" 4.0 Light blue glow is added to all tool cards on the home page to show the scientific trend and add a light red background to the labels of tool cards (首页所有Tool Cards添加淡蓝色辉光,展示科技风,为工具卡片的标签添加淡红色背景).")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: v1.2.2"),e("b",null,"Date: 2022-09-28"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/LIjTmbgKWQJe9nSfX2wi0w",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/LIjTmbgKWQJe9nSfX2wi0w"),t(),e("br"),e("p",null,[e("b",null,"New App:"),t(" 1.0 Ribosome 16S DNA Mindmap (微生物原核核糖体16S DNA即扩增子测序流程的思维导图).")]),e("p",null,[e("b",null,"New App:"),t(" 2.0 Metagenome Illumina Mindmap (微生物基于Illumina平台宏基因组测序及分析流程的思维导图).")]),e("p",null,[e("b",null,"New App:"),t(" 3.0 Metagenome PacBio Mindmap (微生物基于PacBio平台宏基因组测序及分析流程的思维导图).")]),e("p",null,[e("b",null,"New App:"),t(" 4.0 Glycometabolism Mindmap (糖代谢的复杂过程网络的思维导图).")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.2.1"),e("b",null,"Date: 2022-09-27"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/ulDSHmqwGC30eP8EXqh5yA",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/ulDSHmqwGC30eP8EXqh5yA"),t(),e("br"),e("p",null,[e("b",null,"New Features:"),t(" 1.0 Complete the window and content of "),e("b",null,"Help -> HelpDoc"),t(". ")]),e("p",null,[e("b",null,"New Features:"),t(" 2.0 Complete the window and content of "),e("b",null,"Help -> About"),t(". ")]),e("p",null,[e("b",null,"New Features:"),t(" 3.0 Complete the window and content of "),e("b",null,"Help -> Source"),t(". ")]),e("p",null,[e("b",null,"New Features:"),t(" 4.0 Complete the window and content of "),e("b",null,"Help -> Version"),t(". ")]),e("p",null,[e("b",null,"New Features:"),t(" 5.0 Complete the window and content of "),e("b",null,"Help -> Update"),t(". ")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.2.0"),e("b",null,"Date: 2022-09-25"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/NIua7cNeOGINfvmq9YgcZw",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/NIua7cNeOGINfvmq9YgcZw"),t(),e("br"),e("p",null,[e("b",null,"New Features:"),t(" 1.0 This update of OmicsSuite adds automatic detection of new stable versions when starting programs. The official address for releasing new versions is: https://github.com/OmicsSuite/OmicsSuite.github.io/releases At the same time, this update is version 1.2.0, which means that important functions are new and new.(OmicsSuite此次更新增加了启动程序时自动检测新的稳定版本,新版本释放官方地址为:https://github.com/OmicsSuite/OmicsSuite.github.io/releases,同时此次更新为1.2.0版本,意味着重要功能跟新和新的开始。) ")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.1.3"),e("b",null,"Date: 2022-06-25"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/Q1Dhy6_vyh4u0pHhTCGI2w",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/Q1Dhy6_vyh4u0pHhTCGI2w"),t(),e("br"),e("p",null,[e("b",null,"New Apps:"),t(" 1.0 ChordPlot (弦图可视化复杂配对关系). ")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.1.2"),e("b",null,"Date: 2022-06-09"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/GoAxeMZeo7okmW5KxErtWw",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/GoAxeMZeo7okmW5KxErtWw"),t(),e("br"),e("p",null,[e("b",null,"New Apps:"),t(" 1.0 SurvivalAnalysis (临床医学生存分析). ")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.0 WGCNA Results Download. ")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.1.1"),e("b",null,"Date: 2022-06-07"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/WU6-WclLa8X6JQi1z9XISg",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/WU6-WclLa8X6JQi1z9XISg"),t(),e("br"),e("p",null,[e("b",null,"New Apps:"),t(" 1.0 WGCNA (WGCNA 加权基因共表达网络分析). ")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.1.0"),e("b",null,"Date: 2022-05-31"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/gSPEJ4-KXJtsg9P8rc84LQ",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/gSPEJ4-KXJtsg9P8rc84LQ"),t(),e("br"),e("p",null,[e("b",null,"New Apps:"),t(" 1.0 ClusterPlot (聚类分析多算法散点多边形可视化). ")]),e("p",null,[e("b",null,"New Apps:"),t(" 1.1 ClusterTree (聚类分析多算法多类型树状可视化). ")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.0 Fixed home page categories list (修复首页程序分类列表). ")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.0.9"),e("b",null,"Date: 2022-05-10"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/AtQpM6-7cPcFercaHCb9tw",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/AtQpM6-7cPcFercaHCb9tw"),t(),e("br"),e("p",null,[e("b",null,"New Features:"),t(" 2.0 OmicsSuite provides an analysis result Table Download interface for all algorithms on which data analysis programs are based, such as PCA, TSNE, GO enrichment, KEGG enrichment, etc. Users can download data analysis result files by running the result [Table Download] button (OmicsSuite 为所有数据分析程序基于的算法如PCA、TSNE、GO enrichment、KEGG enrichment等提供分析结果表格下载接口,用户可以通过运行结果【Table Download】按钮下载数据分析结果文件). ")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.0 Fix the sample data of GO and KEGG format error (修复GO和KEGG示例数据格式错误问题). ")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.0.8"),e("b",null,"Date: 2022-05-10"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/Y7-FoaTt7CeMS0ymPvMzfA",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/Y7-FoaTt7CeMS0ymPvMzfA"),t(),e("br"),e("p",null,[e("b",null,"New Features:"),t(" 2.0 Browser buttons and table boxes of all programs support dragging and uploading data files (所有程序的Browser按钮和表格框支持拖拽上传数据文件). ")]),e("p",null,[e("b",null,"New Features:"),t(" 2.1 All programs add a progress bar display to show the progress of background tasks (所有程序添加进度条展示器用于显示后台任务的执行进度). ")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.0 None. ")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.0.7"),e("b",null,"Date: 2022-05-09"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/EJLthBZggalhs_z0nC6xmQ",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/EJLthBZggalhs_z0nC6xmQ"),t(),e("br"),e("p",null,[e("b",null,"New Apps:"),t(" 1.0 GOenrichStat, GOenrichBar, GOenrichBubble, GOenrichNet, GOenrichTree, GOenrichMap (新增 GO 富集分析 6 个Apps). ")]),e("p",null,[e("b",null,"New Apps:"),t(" 1.1 KEGGenrichBar, KEGGenrichBubble, KEGGenrichNet, KEGGenrichTree, KEGGenrichMap (新增 KEGG 富集分析 5 个Apps). ")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.0 None. ")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.0.6"),e("b",null,"Date: 2022-05-06"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/5AUKxQCConxOJHcn2PmNpw",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/5AUKxQCConxOJHcn2PmNpw"),t(),e("br"),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.0 Emergency repair (紧急修复组件安全及更新).")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.1 Repair the operation logic of the Clear button of all apps, including resetting data and all parameters (修复所有App的Clear按钮的操作逻辑,包括重置数据及所有参数).")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.2 Clear the buffer data and results when closing App Tab button, and reset all variables and parameters (修复关闭App Tab按钮时清理缓冲数据及结果,并重置所有变量及参数).")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.3 Optimize the aesthetics of App Tab button (优化App Tab按钮的美观度).")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.0.5"),e("b",null,"Date: 2022-05-06"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/5AUKxQCConxOJHcn2PmNpw",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/5AUKxQCConxOJHcn2PmNpw"),t(),e("br"),e("p",null,[e("b",null,"New Apps:"),t(" 1.0 SinCosTan (三角函数表达式与可视化)")]),e("p",null,[e("b",null,"New Apps:"),t(" 1.1 FourierFormula (傅里叶级数与变换可视化)")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.0 Fixed option of Clear button (修复 Clear 按钮的操作逻辑,避免数据交叉).")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.0.4"),e("b",null,"Date: 2022-05-03"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/yj_-f98Vu_Uzczt2IB1SYw",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/yj_-f98Vu_Uzczt2IB1SYw"),t(),e("br"),e("p",null,[e("b",null,"New Apps:"),t(" 1.0 NetworkPlot (Regulatory Network Plot) (新增 Network Plot App!)")]),e("p",null,[e("b",null,"New Apps:"),t(" 1.1 CommunityPlot (Regulatory Network Plot) (新增 Community Plot App!)")]),e("p",null,[e("b",null,"New Features:"),t(" 2.0 The regulatory network plays a significant advantage in exploring the analysis of complex biological regulatory relationships. Based on the regulatory pairing data between two types of nodes (it is suggested that the regulatory relationship pairs meet the significance), this program constructs the regulatory relationship network by calculating the connectivity or simply counting the number of nodes, and visualizes it. Is suitable for that regulation relationship of protein-protein, gene-gene, microRNA-mrna, TF-gene, microRNA-circrna, microRNA-lncrna and other molecular pair. (调控网络在探索生物学复杂的调控关系分析中发挥着显著的优势,本程序基于两类节点间的调控配对数据(建议是符合显著性的调控关系对)通过计算连接度或单纯计算节点数进行构建调控关系网络并可视化。适用于Protein - Protein, Gene - Gene, MicroRNA - mRNA, TF - Gene, MicroRNA - CircRNA, MicroRNA - LncRNA等分子对调控关系。)")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.0 Fixed options icon from dynamic to static.")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.0.3"),e("b",null,"Date: 2022-05-03"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/f0SF7EtGwKy47y6JDaP0JQ",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/f0SF7EtGwKy47y6JDaP0JQ"),t(),e("br"),e("p",null,[e("b",null,"New Apps:"),t(" 1.0 TSNEPlot (TSNE analysis and Plot) (新增 TSNE Plot App!)")]),e("p",null,[e("b",null,"New Apps:"),t(" 1.1 VolcanoPlot (Volcano and Plot) (新增 Volcano Plot App!)")]),e("p",null,[e("b",null,"New Features:"),t(" 2.0 Add OmicsSuite clock and dynamic painting in the right drawer of the Home page. (Home 页面右抽屉添加OmicsSuite时钟和动态花绘。)")]),e("p",null,[e("b",null,"New Features:"),t(" 2.1 At the bottom of the program, add an access window related to OmicsSuite, and you need to connect to the network. (程序页面底部添加OmicsSuite相关的访问窗口,需要连接网络访问。)")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.0 None.")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.0.2"),e("b",null,"Date: 2022-05-01"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/QNLV8dLrXz1kRDeiaLqc9w",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/QNLV8dLrXz1kRDeiaLqc9w"),t(),e("br"),e("p",null,[e("b",null,"New Apps:"),t(" 1.0 Venn Plot (Venn Diagram Plot up to 7 sets) (新增 VennPlot App!)")]),e("p",null,[e("b",null,"New Features:"),t(" 2.0 The right drawer of the Home page supports small screen access to Bioscience Tools official website and access to version update information. (Home 页面右抽屉支持小屏幕访问 OmicsSuite 官网和访问版本更新信息。)")]),e("p",null,[e("b",null,"New Features:"),t(" 2.1 The left drawer of the Home page crosses the mouse over the program button to support the preview function of the program interface. (Home 页面左抽屉在程序按钮上划过鼠标支持程序界面预览功能。)")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.0 None.")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.0.1"),e("b",null,"Date: 2022-04-30"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/SxNTbKUw-lJhxgJppjUqxA",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/SxNTbKUw-lJhxgJppjUqxA"),t(),e("br"),e("p",null,[e("b",null,"New Apps:"),t(" 1.0 PCAPlot (Principal Component Analysis and Plot). (新增 PCAPlot 进行 PCA 降维分析及可视化 App!)")]),e("p",null,[e("b",null,"New Features:"),t(" 2.0 Add the Slider component for the first time. (首次添加数值滑动组件。)")]),e("p",null,[e("b",null,"New Features:"),t(" 2.1 Added official website information and version update section to the Home page for the first time. (首次在 Home 页面增加官网信息及版本更新板块。)")]),e("p",null,[e("b",null,"New Features:"),t(" 2.2 Add the Clear button to reset the data. (为了方便用户清除当前的数据进行后续分析,添加 Clear 按钮作为 Trash回收。)")]),e("p",null,[e("b",null,"Bug Fixed:"),t("3.0 Reduce the installer file. (减小 OmicsSuite 安装程序文件。)")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.0.0"),e("b",null,"Date: 2022-04-28"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/DM5j4PDnBExwBu5o9VTr7g",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/DM5j4PDnBExwBu5o9VTr7g"),t(),e("br"),e("p",null,[e("b",null,"New Apps:"),t(" 1.1 RevCom (Reverse Complete) (新增 RevCom DNA序列反向互补操作 App!)")]),e("p",null,[e("b",null,"New Apps:"),t(" 1.2 CorPlot (Correlation Analysis and Plot) (新增 CorPlot 样品 Pearson 相关性分析及可视化 App。)")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 2.1 Package JRE 11 Java environment in OmicsSuite, so the Java 8 or later version don't need on user's computer.")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.0.0-Alpha"),e("b",null,"Date: 2022-04-26"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/cGxWvXsDHoHwVE04NIzuOw",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/cGxWvXsDHoHwVE04NIzuOw"),t(),e("br"),e("p",null,[e("b",null,"New Apps:"),t(" OmicsSuite project assumption -> JavaFX project was developed based on Java 11 -> OmicsSuite framework was preliminarily completed -> OmicsSuite (UI) user interface prototype design was completed. ")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" Compile for the first time and support the installation of Windows platform.")])])])]),e("br")],-1));function O(n,C,F,k,P,D){const o=i("AppHeader"),s=i("el-header"),r=i("el-main"),p=i("AppFooter"),u=i("el-footer"),d=i("el-container"),c=i("el-backtop");return x(),w("div",q,[l(d,null,{default:a(()=>[l(s,null,{default:a(()=>[l(o)]),_:1}),l(r,null,{default:a(()=>[N]),_:1}),l(u,null,{default:a(()=>[l(p)]),_:1})]),_:1}),l(c,{right:50,bottom:100})])}const X=m(v,[["render",O],["__scopeId","data-v-c9919c89"]]);export{X as default}; +import{_ as m,A as h,a as b,b as g,c as f}from"./index-387fbfa5.js";import{ah as i,o as x,c as w,V as l,P as a,ax as y,ay as S,a as e,T as t}from"./@vue-248d724b.js";import"./@splinetool-ead863f8.js";import"./vue-router-401d444e.js";import"./element-plus-bab1278a.js";import"./lodash-es-21c98b27.js";import"./@vueuse-89fc2c2e.js";import"./@element-plus-0de4ac96.js";import"./@popperjs-c75af06c.js";import"./@ctrl-f8748455.js";import"./dayjs-5c34775c.js";import"./async-validator-dee29e8b.js";import"./memoize-one-297ddbcb.js";import"./escape-html-64fe8e16.js";import"./normalize-wheel-es-ed76fb12.js";import"./@floating-ui-72671fae.js";import"./echarts-9ae96183.js";import"./zrender-e9104294.js";const v={components:{AppHeader:h,AppFooter:b},data(){return{}},mounted(){}},A=n=>(y("data-v-c9919c89"),n=n(),S(),n),q={class:"common-layout"},N=A(()=>e("div",{class:"page"},[e("div",null,[e("img",{src:g,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}}),e("div",{class:"image-text-card"},[e("p",{class:"card-title"},"SourceForge Download (Default):"),e("a",{href:"https://sourceforge.net/projects/omicssuite-github-io/",target:"_blank",style:{color:"#008888","font-weight":"bold"}},"https://sourceforge.net/projects/omicssuite-github-io/"),e("br"),e("br"),e("p",{class:"card-title"},"GitHub Download:"),e("a",{href:"https://github.com/OmicsSuite/OmicsSuite.github.io/releases/",target:"_blank",style:{color:"#008888","font-weight":"bold"}},"https://github.com/OmicsSuite/OmicsSuite.github.io/releases/"),e("br"),e("br"),e("p",{class:"card-title"},"Aliyun Download:"),e("a",{href:"https://www.aliyundrive.com/s/Defuhf7FVGw",target:"_blank",style:{color:"#008888","font-weight":"bold"}},"https://www.aliyundrive.com/s/Defuhf7FVGw")])]),e("div",null,[e("br"),e("p",{style:{"font-size":"2em","font-weight":"bold",color:"#000000"}}," Versions History "),e("div",{class:"image-text-card"},[e("div",{style:{width:"100%",height:"auto",background:"radial-gradient(#00808088 0, #00808055 100%)","border-radius":"10px",padding:"5px","text-align":"center"}},[e("img",{src:f,alt:"OmicsSuite",style:{height:"200px",margin:"auto","border-radius":"20%"}})]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808055 100%)",padding:"20px","line-height":"30px"}},[e("h3",null,"OmicsSuite-v1.3.9"),e("b",null,"Github:"),t(),e("a",{href:"https://github.com/OmicsSuite/OmicsSuite.github.io",style:{color:"#ffffff"}},"https://github.com/OmicsSuite/OmicsSuite.github.io"),t(),e("br"),e("b",null,"Website:"),t(),e("a",{href:"https://OmicsSuite.github.io",style:{color:"#ffffff"}},"https://OmicsSuite.github.io"),t(),e("br"),e("b",null,"SourceForge:"),t(),e("a",{href:"https://sourceforge.net/projects/OmicsSuite-github-io/",style:{color:"#ffffff"}},"https://sourceforge.net/projects/OmicsSuite-github-io/"),t(),e("br"),e("br"),e("b",null,"Download1 (Github Release):"),t(),e("a",{href:"https://github.com/OmicsSuite/OmicsSuite.github.io/releases/download/v1.3.9/OmicsSuite-v1.3.9.exe",style:{color:"#ffffff"}},"OmicsSuite-v1.3.9 [Windows]"),t(),e("br"),e("b",null,"Download2 (SourceForge):"),t(),e("a",{href:"https://sourceforge.net/projects/OmicsSuite-github-io/files/latest/download",style:{color:"#ffffff"}},"OmicsSuite-v1.3.9 [Windows]"),t(),e("br"),e("b",null,"Download3 (AliyunDrive):"),t(),e("a",{href:"https://www.aliyundrive.com/s/Defuhf7FVGw",style:{color:"#ffffff"}},"OmicsSuite-v1.3.9 [Windows]"),t(),e("br"),e("hr"),e("b",null,"Author: Benben Miao"),t(),e("br"),e("b",null,"Email:"),t(" benben.miao@outlook.com "),e("br")]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite-v1.3.9"),e("b",null,"Date: 2023-09-07"),t(),e("br"),e("p",null,[e("b",null,"New Feature:"),t(" 1.1 Added ShinySEM application to Algorithm category for building structural equation models and visualization (在Algorithm分类中新增ShinySEM应用,用于构建结构方程模型和可视化).")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 2.1 Fix links in OmicsSuite to provide CDN support (修复OmicsSuite中的链接,提供CDN支持).")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite-v1.3.8"),e("b",null,"Date: 2023-08-02"),t(),e("br"),e("p",null,[e("b",null,"New Feature:"),t(" 1.1 BioSciTools has been renamed OmicsSuite, and the corresponding github repository, website, and download links have been updated synchronously (BioSciTools更名为OmicsSuite,对应的GitHub仓库、网站、下载链接同步更新).")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 2.1 Fix the issue of some apps failing to run (修复部分app运行失败的问题).")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite-v1.3.6"),e("b",null,"Date: 2023-05-15"),t(),e("br"),e("b",null,[t("Update: "),e("a",{href:"https://mp.weixin.qq.com/s/IVu9EAxeV58VZzhW7nu90g",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/IVu9EAxeV58VZzhW7nu90g"),t(),e("br")]),e("p",null,[e("b",null,"New Feature:"),t(" 1.1 ① redesigned Logo based on the original logo; ② New website: https://OmicsSuite.podia.com; ③ promotional video: OmicsSuite Video. (①基于原版Logo重新设计的Logo;②新的网站:https://OmicsSuite.podia.com;③宣传视频:OmicsSuite Video。).")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 2.1 ① Update some application codes and parameters, such as CorPlot, PCAPlot, TSNEPlot, etc. ② Fix the running problems of some applications caused by the database. (①更新部分应用的代码和参数,如CorPlot, PCAPlot, TSNEPlot等;②修复部分应用由于数据库导致的运行问题。).")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite-v1.3.5"),e("b",null,"Date: 2023-03-20"),t(),e("br"),e("b",null,[t("Update: "),e("a",{href:"https://mp.weixin.qq.com/s/D72wOFkjTfWJAwWd9vkWlw",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/D72wOFkjTfWJAwWd9vkWlw"),t(),e("br")]),e("p",null,[e("b",null,"New Feature:"),t(" 1.1 ① Reduce the color, tone and transparency of all UI interfaces of the program; (2) optimize the description of parameters, especially the input file type and upload mode, such as the sequence input is mainly in Fasta format, which supports pasting sequence and uploading sequence files, the table data is mainly in Txt text tab format, which supports button upload and drag, and the single-cell Cellrange/Visium large data file mainly uses the specified file path. ③ Add references to all programs (published articles or R citation) (①降低程序所有UI界面的颜色色调和透明度;②优化参数说明,尤其是输入文件类型和上传方式,如序列输入主要以Fasta格式,支持粘贴序列和上传序列文件,表格数据主要以Txt文本制表符格式,支持按钮上传和拖拽方式,单细胞Cellrange/Visium大型数据文件主要以指定文件路径即可等;③所有程序添加参考文献(发表文章或R引用方式)).")]),e("p",null,[e("b",null,"New App:"),t(" 2.1 Introduce the 30+Shiny framework program I developed and optimized before through Java encryption code (通过Java加密代码方式引入我之前开发并优化的30+Shiny框架程序).")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.1 Solve the adaptation problem of some users due to the screen resolution of notebook or desktop computer (解决部分用户由于笔记本或台式电脑屏幕分辨率的适配问题).")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite-v1.3.4"),e("b",null,"Date: 2023-03-04"),t(),e("br"),e("b",null,[t("Update: "),e("a",{href:"https://mp.weixin.qq.com/s/mvkuJv95T8wsFcxK6_NDxg",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/mvkuJv95T8wsFcxK6_NDxg"),t(),e("br")]),e("p",null,[e("b",null,"UI Design:"),t(" 1.1 Add the OpenExample button at the bottom of the table window for all programs, which is convenient for users to find the program sample data and prepare the data structure suitable for the program according to the sample data (为所有程序在表格窗口下方添加OpenExample按钮,方便用户找到程序示例数据,并根据示例数据准备适合程序的数据结构).")]),e("p",null,[e("b",null,"New App:"),t(" 2.1 There are three new procedures for genome gene density and two/three genome collinearity analysis in Genomics genome classification, including genome density, digenomesynty and trigenomesynty.")]),e("p",null,[e("b",null,"New App:"),t(" 2.2 Six programs related to differentially expressed genes and KEGG Pathway visualization (`mversusa (maplot), upset, PathwayNativeSinglesmaple, PathwayNativeMultisample, PathwayGraphvizsingle, PathwayGraphvizmulti') in the Transcriptomics classification.")]),e("p",null,[e("b",null,"New App:"),t(" 2.3 Eight Metabolomics programs based on the original analysis of LC-MS mass spectrometry data mzML have been added to the metabolomics metabolomics classification, including metabomZML, metabomHeatmap, metaboroi, metabobasepeakion, metabotaliochrom, metabopeakintensity, metabopeakrt and metabopeakanno.")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.1 Solve the analysis process interruption and task failure caused by Chinese user names of some users. This update will be suitable for most Windows computer environments (解决部分用户由于中文用户名导致的分析进程中断及任务失败,此次更新将适合于大多数Windows电脑环境).")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite-v1.3.3"),e("b",null,"Date: 2023-02-26"),t(),e("br"),e("b",null,[t("Update: "),e("a",{href:"https://mp.weixin.qq.com/s/dYfH83mEccsLyeCoMLzoRw",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/dYfH83mEccsLyeCoMLzoRw"),t(),e("br")]),e("p",null,[e("b",null,"UI Design:"),t(' 1.1 This update beautifies the startup interface and the "OmicsSuite" on the Home page, classifies and counts Echarts (此次更新美化启动界面和Home页面的`OmicsSuite`所有程序分类和统计Echarts).')]),e("p",null,[e("b",null,"New App:"),t(" 2.1 SingleCell classification of' Singlecell' is related to single cell differentiation trajectory ('monocle umap, monocle marker, monocle trajectories') and single cell spatial transcriptome ('spatial feature, spatial gene, spatial umap, spatialtsne, SpatialAirClusterMaker, SpatialAllClusterMaker, Spatial Slice`) a total of 10 programs.")]),e("p",null,[e("b",null,"New App:"),t(" 2.2 Six programs related to differentially expressed genes and KEGG Pathway visualization (`mversusa (maplot), upset, PathwayNativeSinglesmaple, PathwayNativeMultisample, PathwayGraphvizsingle, PathwayGraphvizmulti') in the Transcriptomics classification.")]),e("p",null,[e("b",null,"New App:"),t(" 2.3 Seven programs related to the operation of `sequences` nucleotide sequence or amino acid sequence (`seqslength, seqsheartail, seqsslice, seqsgc, seqstranslate, seqpalindrome, pairwise alignment').")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.1 Fix the problem of slow loading of CDN when accessing the right sidebar page (修复右侧边栏页面访问时CDN加载缓慢的问题).")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite-v1.3.2"),e("b",null,"Date: 2023-02-19"),t(),e("br"),e("b",null,[t("Update: "),e("a",{href:"https://mp.weixin.qq.com/s/quZ2bNI6ZUYu8_Gjrua4RQ",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/quZ2bNI6ZUYu8_Gjrua4RQ"),t(),e("br")]),e("p",null,[e("b",null,"UI Design:"),t(" 1.1 Fixed slow loading of animation in startup interface (修复启动界面的动画加载缓慢).")]),e("p",null,[e("b",null,"New App:"),t(" 2.1 Update the data analysis program of single cell conventional transcriptome (SingleCell RNA-Seq) based on the output of 10X Genomics sequencing CellRange. Many programs mainly refer to 10X Genomics data format and Seurat data analysis flow, allowing users to perform data QC, cell filtering, mitochondrial gene proportion statistics, Feature filtering, hypervariable Feature identification, PCA analysis and JackStraw's selection of PCA, cell UMAP/TSNE clustering, Marker gene selection of all Cluster, and output visual results and corresponding tabular data in all analyses. The update procedures are as follows: update Heatmap and CircosHeatmap in Algorithm classification, update feature QC, feature filter, feature variable, feature PCA, PCA Jack Straw, Cell Umap, Celtsne in SingleCell classification, MarkerViolin, MarkerUMAP, MarkerHeatmap, CellAnnotation (更新带来基于10X Genomics测序CellRange输出结果的单细胞常规转录组(SingleCell RNA-Seq)数据分析程序。多个程序主要参考10X Genomics数据格式和Seurat数据分析流程,允许用户执行数据QC、细胞过滤、线粒体基因占比统计、Feature过滤、高变Feature鉴定、PCA分析及JackStraw对PCA的选择、细胞UMAP/TSNE聚类、所有Cluster的Marker基因选择,所有分析中输出可视化结果和对应的表格数据。更新程序如下:Algorithm分类中更新Heatmap、CircosHeatmap,SingleCell分类中更新FeatureQC, FeatureFilter, FeatureVariable, FeaturePCA, PCAJackStraw, CellUMAP, CellTSNE, MarkerViolin, MarkerUMAP, MarkerHeatmap, CellAnnotation).")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.1 Fixed slow loading of animation in startup interface (修复启动界面的动画加载缓慢).")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite-v1.3.1"),e("b",null,"Date: 2023-01-07"),t(),e("br"),e("b",null,[t("Update: "),e("a",{href:"https://mp.weixin.qq.com/s/j12ysJWhZYpXruF1r50rKA",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/j12ysJWhZYpXruF1r50rKA"),t(),e("br")]),e("p",null,[e("b",null,"UI Design:"),t(" 1.1 Optimize and update tool drawer category columns and icons (优化和更新工具抽屉分类栏目和图标).")]),e("p",null,[e("b",null,"New App:"),t(" 2.1 Add nearly 30 omics-related programs such as HG 19 Gene EXP, HG 19 Gene Marker, Chloroplast Genome, Mito Genome, Maftitv, Mafachange, Mafomatic Interaction, etc (新增HG19GeneExp, HG19GeneMarker, ChloroplastGenome, MitoGenome, MafTiTv, MafAAChange, MafSomaticInteraction等近30个组学相关的程序).")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.1 Fix the flashing of the main page to make the program load more smoothly (修复主页面画面闪动,使得程序加载更加流畅).")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite-v1.3.0"),e("b",null,"Date: 2022-12-07"),t(),e("br"),e("b",null,[t("Update: "),e("a",{href:"https://mp.weixin.qq.com/s/eHK8ILEzsjTWQCQyIYCMMQ",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/eHK8ILEzsjTWQCQyIYCMMQ"),t(),e("br")]),e("p",null,[e("b",null,"UI Design:"),t(" 1.1 The main purpose of updating the interface of OmicsSuiteUI is to make the program simpler, more comfortable and more modern. I also examined my own aesthetic standards through continuous exploration, and finally found that a good interface needs clear logic, simple and comfortable interface (更新OmicsSuiteUI界面主要为了使得程序更加简约、舒服、现代化,我也是在不断探索中审视自己的审美观,最终发现好的界面需要逻辑清晰、界面简约舒适).")]),e("p",null,[e("b",null,"New App:"),t(" 2.1 The newly added Apps mainly include barstat, scatterplot, groupline, quantile q (QQ), density normal, boxstat, violinstat, piestat, dounstat, and Seq Motif in Sequence category (新增Apps主要包括Statistics分类中的BarStat, ScatterPlot, GroupLine, QuantileQ(QQ), DensityNormal, BoxStat, ViolinStat, PieStat, DountStat,以及Sequence分类中的Seq Motif程序).")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.1 Temporarily shut down the use of Shiny Apps program, and the code logic and security problems are still being solved (暂时关闭Shiny Apps程序的使用,代码逻辑和安全问题仍然在解决).")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite-v1.2.5"),e("b",null,"Date: 2022-10-30"),t(),e("br"),e("b",null,[t("Update: "),e("a",{href:"https://mp.weixin.qq.com/s/38rDWcsIxTIRgbPNCudhaw",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/38rDWcsIxTIRgbPNCudhaw"),t(),e("br")]),e("p",null,[e("b",null,"New Features:"),t(" 1.1 New courses and feedback section (新增课程与反馈板块).")]),e("p",null,[e("b",null,"New Features:"),t(" 1.2 New Shiny programs, such as Network Shiny, WGCNA Shiny and Community Shiny (新增Shiny程序,如Network Shiny、WGCNA Shiny、Community Shiny).")]),e("p",null,[e("b",null,"New Features:"),t(" 1.3 Re-adjust the layout and beautification of the program interface (重新调整程序界面布局和美化).")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite-v1.2.4"),e("b",null,"Date: 2022-10-30"),t(),e("br"),e("b",null,[t("Update: "),e("a",{href:"https://mp.weixin.qq.com/s/YeYZ-M-QCwr18Vc6Quytzg",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/YeYZ-M-QCwr18Vc6Quytzg"),t(),e("br")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 1.0 This update is an emergency update, which mainly solves the fatal problem that many researchers can't start after installing OmicsSuite recently. ① This problem is not caused by Java and R environment. The program comes with a compressed version of JDK-11 environment, so users don't need to install any version of Java themselves. ② This problem is mainly due to the regional shielding of specific domain names in https://api.github.com. Therefore, this update mainly solves the problem that the API in the function is automatically requested to be updated when the program is started, and the program can be started and run under any circumstances of networking or disconnection after the update (此次更新属于紧急更新,主要解决近期以来不少科研者遇到安装OmicsSuite后无法启动的致命问题。①该问题不是由于Java和R环境导致,程序自带压缩版本的JDK-11环境,用户无须自己安装任何版本的Java。②该问题主要由于区域对https://api.github.com特定域名的屏蔽,因此此次更新主要解决由于程序启动时自动请求更新函数中的API,更新后可在联网或断网的任何情况下启动并运行程序).")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite-v1.2.3"),e("b",null,"Date: 2022-09-30"),t(),e("br"),e("b",null,[t("Update: "),e("a",{href:"https://mp.weixin.qq.com/s/yNleCDhdfmmFiv97LrRWlA",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/yNleCDhdfmmFiv97LrRWlA"),t(),e("br")]),e("p",null,[e("b",null,"New Feature:"),t(" 1.0 The color of the beautified menu bar after expansion is light blue with a little bit of technological style, and the transparency with shadows is set to be similar to the ground glass effect. The drop position of the menu bar is designed to be 5px, and all submenu bars are designed to be rounded rectangles (美化菜单栏展开后的颜色为淡蓝色带有些许科技风,并设置带有阴影的透明度类似毛玻璃效果,设计菜单栏下落位置为5px以及设计所有子菜单栏为圆角矩形).")]),e("p",null,[e("b",null,"New Feature:"),t(" 2.0 The native Choicebox selection box is designed as a rounded rectangle, and the drop-down selection box is designed as transparent light blue (将原生自带的Choicebox选择框设计为圆角矩形,及将下拉选择框设计为透明淡蓝色).")]),e("p",null,[e("b",null,"New Feature:"),t(" 3.0 Each category of the toolbox is added with a corresponding color icon, and the number of programs label is added (工具箱每个分类增加对应的彩色图标,并增加程序数量标签).")]),e("p",null,[e("b",null,"New Feature:"),t(" 4.0 Light blue glow is added to all tool cards on the home page to show the scientific trend and add a light red background to the labels of tool cards (首页所有Tool Cards添加淡蓝色辉光,展示科技风,为工具卡片的标签添加淡红色背景).")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: v1.2.2"),e("b",null,"Date: 2022-09-28"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/LIjTmbgKWQJe9nSfX2wi0w",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/LIjTmbgKWQJe9nSfX2wi0w"),t(),e("br"),e("p",null,[e("b",null,"New App:"),t(" 1.0 Ribosome 16S DNA Mindmap (微生物原核核糖体16S DNA即扩增子测序流程的思维导图).")]),e("p",null,[e("b",null,"New App:"),t(" 2.0 Metagenome Illumina Mindmap (微生物基于Illumina平台宏基因组测序及分析流程的思维导图).")]),e("p",null,[e("b",null,"New App:"),t(" 3.0 Metagenome PacBio Mindmap (微生物基于PacBio平台宏基因组测序及分析流程的思维导图).")]),e("p",null,[e("b",null,"New App:"),t(" 4.0 Glycometabolism Mindmap (糖代谢的复杂过程网络的思维导图).")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.2.1"),e("b",null,"Date: 2022-09-27"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/ulDSHmqwGC30eP8EXqh5yA",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/ulDSHmqwGC30eP8EXqh5yA"),t(),e("br"),e("p",null,[e("b",null,"New Features:"),t(" 1.0 Complete the window and content of "),e("b",null,"Help -> HelpDoc"),t(". ")]),e("p",null,[e("b",null,"New Features:"),t(" 2.0 Complete the window and content of "),e("b",null,"Help -> About"),t(". ")]),e("p",null,[e("b",null,"New Features:"),t(" 3.0 Complete the window and content of "),e("b",null,"Help -> Source"),t(". ")]),e("p",null,[e("b",null,"New Features:"),t(" 4.0 Complete the window and content of "),e("b",null,"Help -> Version"),t(". ")]),e("p",null,[e("b",null,"New Features:"),t(" 5.0 Complete the window and content of "),e("b",null,"Help -> Update"),t(". ")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.2.0"),e("b",null,"Date: 2022-09-25"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/NIua7cNeOGINfvmq9YgcZw",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/NIua7cNeOGINfvmq9YgcZw"),t(),e("br"),e("p",null,[e("b",null,"New Features:"),t(" 1.0 This update of OmicsSuite adds automatic detection of new stable versions when starting programs. The official address for releasing new versions is: https://github.com/OmicsSuite/OmicsSuite.github.io/releases At the same time, this update is version 1.2.0, which means that important functions are new and new.(OmicsSuite此次更新增加了启动程序时自动检测新的稳定版本,新版本释放官方地址为:https://github.com/OmicsSuite/OmicsSuite.github.io/releases,同时此次更新为1.2.0版本,意味着重要功能跟新和新的开始。) ")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.1.3"),e("b",null,"Date: 2022-06-25"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/Q1Dhy6_vyh4u0pHhTCGI2w",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/Q1Dhy6_vyh4u0pHhTCGI2w"),t(),e("br"),e("p",null,[e("b",null,"New Apps:"),t(" 1.0 ChordPlot (弦图可视化复杂配对关系). ")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.1.2"),e("b",null,"Date: 2022-06-09"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/GoAxeMZeo7okmW5KxErtWw",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/GoAxeMZeo7okmW5KxErtWw"),t(),e("br"),e("p",null,[e("b",null,"New Apps:"),t(" 1.0 SurvivalAnalysis (临床医学生存分析). ")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.0 WGCNA Results Download. ")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.1.1"),e("b",null,"Date: 2022-06-07"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/WU6-WclLa8X6JQi1z9XISg",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/WU6-WclLa8X6JQi1z9XISg"),t(),e("br"),e("p",null,[e("b",null,"New Apps:"),t(" 1.0 WGCNA (WGCNA 加权基因共表达网络分析). ")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.1.0"),e("b",null,"Date: 2022-05-31"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/gSPEJ4-KXJtsg9P8rc84LQ",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/gSPEJ4-KXJtsg9P8rc84LQ"),t(),e("br"),e("p",null,[e("b",null,"New Apps:"),t(" 1.0 ClusterPlot (聚类分析多算法散点多边形可视化). ")]),e("p",null,[e("b",null,"New Apps:"),t(" 1.1 ClusterTree (聚类分析多算法多类型树状可视化). ")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.0 Fixed home page categories list (修复首页程序分类列表). ")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.0.9"),e("b",null,"Date: 2022-05-10"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/AtQpM6-7cPcFercaHCb9tw",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/AtQpM6-7cPcFercaHCb9tw"),t(),e("br"),e("p",null,[e("b",null,"New Features:"),t(" 2.0 OmicsSuite provides an analysis result Table Download interface for all algorithms on which data analysis programs are based, such as PCA, TSNE, GO enrichment, KEGG enrichment, etc. Users can download data analysis result files by running the result [Table Download] button (OmicsSuite 为所有数据分析程序基于的算法如PCA、TSNE、GO enrichment、KEGG enrichment等提供分析结果表格下载接口,用户可以通过运行结果【Table Download】按钮下载数据分析结果文件). ")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.0 Fix the sample data of GO and KEGG format error (修复GO和KEGG示例数据格式错误问题). ")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.0.8"),e("b",null,"Date: 2022-05-10"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/Y7-FoaTt7CeMS0ymPvMzfA",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/Y7-FoaTt7CeMS0ymPvMzfA"),t(),e("br"),e("p",null,[e("b",null,"New Features:"),t(" 2.0 Browser buttons and table boxes of all programs support dragging and uploading data files (所有程序的Browser按钮和表格框支持拖拽上传数据文件). ")]),e("p",null,[e("b",null,"New Features:"),t(" 2.1 All programs add a progress bar display to show the progress of background tasks (所有程序添加进度条展示器用于显示后台任务的执行进度). ")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.0 None. ")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.0.7"),e("b",null,"Date: 2022-05-09"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/EJLthBZggalhs_z0nC6xmQ",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/EJLthBZggalhs_z0nC6xmQ"),t(),e("br"),e("p",null,[e("b",null,"New Apps:"),t(" 1.0 GOenrichStat, GOenrichBar, GOenrichBubble, GOenrichNet, GOenrichTree, GOenrichMap (新增 GO 富集分析 6 个Apps). ")]),e("p",null,[e("b",null,"New Apps:"),t(" 1.1 KEGGenrichBar, KEGGenrichBubble, KEGGenrichNet, KEGGenrichTree, KEGGenrichMap (新增 KEGG 富集分析 5 个Apps). ")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.0 None. ")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.0.6"),e("b",null,"Date: 2022-05-06"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/5AUKxQCConxOJHcn2PmNpw",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/5AUKxQCConxOJHcn2PmNpw"),t(),e("br"),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.0 Emergency repair (紧急修复组件安全及更新).")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.1 Repair the operation logic of the Clear button of all apps, including resetting data and all parameters (修复所有App的Clear按钮的操作逻辑,包括重置数据及所有参数).")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.2 Clear the buffer data and results when closing App Tab button, and reset all variables and parameters (修复关闭App Tab按钮时清理缓冲数据及结果,并重置所有变量及参数).")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.3 Optimize the aesthetics of App Tab button (优化App Tab按钮的美观度).")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.0.5"),e("b",null,"Date: 2022-05-06"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/5AUKxQCConxOJHcn2PmNpw",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/5AUKxQCConxOJHcn2PmNpw"),t(),e("br"),e("p",null,[e("b",null,"New Apps:"),t(" 1.0 SinCosTan (三角函数表达式与可视化)")]),e("p",null,[e("b",null,"New Apps:"),t(" 1.1 FourierFormula (傅里叶级数与变换可视化)")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.0 Fixed option of Clear button (修复 Clear 按钮的操作逻辑,避免数据交叉).")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.0.4"),e("b",null,"Date: 2022-05-03"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/yj_-f98Vu_Uzczt2IB1SYw",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/yj_-f98Vu_Uzczt2IB1SYw"),t(),e("br"),e("p",null,[e("b",null,"New Apps:"),t(" 1.0 NetworkPlot (Regulatory Network Plot) (新增 Network Plot App!)")]),e("p",null,[e("b",null,"New Apps:"),t(" 1.1 CommunityPlot (Regulatory Network Plot) (新增 Community Plot App!)")]),e("p",null,[e("b",null,"New Features:"),t(" 2.0 The regulatory network plays a significant advantage in exploring the analysis of complex biological regulatory relationships. Based on the regulatory pairing data between two types of nodes (it is suggested that the regulatory relationship pairs meet the significance), this program constructs the regulatory relationship network by calculating the connectivity or simply counting the number of nodes, and visualizes it. Is suitable for that regulation relationship of protein-protein, gene-gene, microRNA-mrna, TF-gene, microRNA-circrna, microRNA-lncrna and other molecular pair. (调控网络在探索生物学复杂的调控关系分析中发挥着显著的优势,本程序基于两类节点间的调控配对数据(建议是符合显著性的调控关系对)通过计算连接度或单纯计算节点数进行构建调控关系网络并可视化。适用于Protein - Protein, Gene - Gene, MicroRNA - mRNA, TF - Gene, MicroRNA - CircRNA, MicroRNA - LncRNA等分子对调控关系。)")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.0 Fixed options icon from dynamic to static.")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.0.3"),e("b",null,"Date: 2022-05-03"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/f0SF7EtGwKy47y6JDaP0JQ",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/f0SF7EtGwKy47y6JDaP0JQ"),t(),e("br"),e("p",null,[e("b",null,"New Apps:"),t(" 1.0 TSNEPlot (TSNE analysis and Plot) (新增 TSNE Plot App!)")]),e("p",null,[e("b",null,"New Apps:"),t(" 1.1 VolcanoPlot (Volcano and Plot) (新增 Volcano Plot App!)")]),e("p",null,[e("b",null,"New Features:"),t(" 2.0 Add OmicsSuite clock and dynamic painting in the right drawer of the Home page. (Home 页面右抽屉添加OmicsSuite时钟和动态花绘。)")]),e("p",null,[e("b",null,"New Features:"),t(" 2.1 At the bottom of the program, add an access window related to OmicsSuite, and you need to connect to the network. (程序页面底部添加OmicsSuite相关的访问窗口,需要连接网络访问。)")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.0 None.")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.0.2"),e("b",null,"Date: 2022-05-01"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/QNLV8dLrXz1kRDeiaLqc9w",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/QNLV8dLrXz1kRDeiaLqc9w"),t(),e("br"),e("p",null,[e("b",null,"New Apps:"),t(" 1.0 Venn Plot (Venn Diagram Plot up to 7 sets) (新增 VennPlot App!)")]),e("p",null,[e("b",null,"New Features:"),t(" 2.0 The right drawer of the Home page supports small screen access to Bioscience Tools official website and access to version update information. (Home 页面右抽屉支持小屏幕访问 OmicsSuite 官网和访问版本更新信息。)")]),e("p",null,[e("b",null,"New Features:"),t(" 2.1 The left drawer of the Home page crosses the mouse over the program button to support the preview function of the program interface. (Home 页面左抽屉在程序按钮上划过鼠标支持程序界面预览功能。)")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 3.0 None.")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.0.1"),e("b",null,"Date: 2022-04-30"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/SxNTbKUw-lJhxgJppjUqxA",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/SxNTbKUw-lJhxgJppjUqxA"),t(),e("br"),e("p",null,[e("b",null,"New Apps:"),t(" 1.0 PCAPlot (Principal Component Analysis and Plot). (新增 PCAPlot 进行 PCA 降维分析及可视化 App!)")]),e("p",null,[e("b",null,"New Features:"),t(" 2.0 Add the Slider component for the first time. (首次添加数值滑动组件。)")]),e("p",null,[e("b",null,"New Features:"),t(" 2.1 Added official website information and version update section to the Home page for the first time. (首次在 Home 页面增加官网信息及版本更新板块。)")]),e("p",null,[e("b",null,"New Features:"),t(" 2.2 Add the Clear button to reset the data. (为了方便用户清除当前的数据进行后续分析,添加 Clear 按钮作为 Trash回收。)")]),e("p",null,[e("b",null,"Bug Fixed:"),t("3.0 Reduce the installer file. (减小 OmicsSuite 安装程序文件。)")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.0.0"),e("b",null,"Date: 2022-04-28"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/DM5j4PDnBExwBu5o9VTr7g",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/DM5j4PDnBExwBu5o9VTr7g"),t(),e("br"),e("p",null,[e("b",null,"New Apps:"),t(" 1.1 RevCom (Reverse Complete) (新增 RevCom DNA序列反向互补操作 App!)")]),e("p",null,[e("b",null,"New Apps:"),t(" 1.2 CorPlot (Correlation Analysis and Plot) (新增 CorPlot 样品 Pearson 相关性分析及可视化 App。)")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" 2.1 Package JRE 11 Java environment in OmicsSuite, so the Java 8 or later version don't need on user's computer.")])]),e("br"),e("div",{style:{"border-radius":"10px",background:"radial-gradient(#00808088 0, #00808033 100%)",padding:"20px","line-height":"20px","font-family":"'SimHei'","font-size":"14px","text-align":"justify"}},[e("h3",null,"OmicsSuite: Version 1.0.0-Alpha"),e("b",null,"Date: 2022-04-26"),t(),e("br"),e("b",null,"Update:"),t(),e("a",{href:"https://mp.weixin.qq.com/s/cGxWvXsDHoHwVE04NIzuOw",style:{color:"#008000"}},"生物信息学Omics: https://mp.weixin.qq.com/s/cGxWvXsDHoHwVE04NIzuOw"),t(),e("br"),e("p",null,[e("b",null,"New Apps:"),t(" OmicsSuite project assumption -> JavaFX project was developed based on Java 11 -> OmicsSuite framework was preliminarily completed -> OmicsSuite (UI) user interface prototype design was completed. ")]),e("p",null,[e("b",null,"Bug Fixed:"),t(" Compile for the first time and support the installation of Windows platform.")])])])]),e("br")],-1));function O(n,C,F,k,P,D){const o=i("AppHeader"),s=i("el-header"),r=i("el-main"),p=i("AppFooter"),u=i("el-footer"),d=i("el-container"),c=i("el-backtop");return x(),w("div",q,[l(d,null,{default:a(()=>[l(s,null,{default:a(()=>[l(o)]),_:1}),l(r,null,{default:a(()=>[N]),_:1}),l(u,null,{default:a(()=>[l(p)]),_:1})]),_:1}),l(c,{right:50,bottom:100})])}const X=m(v,[["render",O],["__scopeId","data-v-c9919c89"]]);export{X as default}; diff --git a/assets/DownloadView-9b544416.css b/assets/DownloadView.css similarity index 100% rename from assets/DownloadView-9b544416.css rename to assets/DownloadView.css diff --git a/assets/Figure1-689192d4.jpg b/assets/Figure1.jpg similarity index 100% rename from assets/Figure1-689192d4.jpg rename to assets/Figure1.jpg diff --git a/assets/Figure2-83c38a53.jpg b/assets/Figure2.jpg similarity index 100% rename from assets/Figure2-83c38a53.jpg rename to assets/Figure2.jpg diff --git a/assets/Figure3-3cc63776.jpg b/assets/Figure3.jpg similarity index 100% rename from assets/Figure3-3cc63776.jpg rename to assets/Figure3.jpg diff --git a/assets/Figure4-85c07b64.jpg b/assets/Figure4.jpg similarity index 100% rename from assets/Figure4-85c07b64.jpg rename to assets/Figure4.jpg diff --git a/assets/Figure5-5e8eecc7.jpg b/assets/Figure5.jpg similarity index 100% rename from assets/Figure5-5e8eecc7.jpg rename to assets/Figure5.jpg diff --git a/assets/Figure6-a91100be.jpg b/assets/Figure6.jpg similarity index 100% rename from assets/Figure6-a91100be.jpg rename to assets/Figure6.jpg diff --git a/assets/FriendsView-0d93fd03.js b/assets/FriendsView-0d93fd03.js deleted file mode 100644 index 81ddb3e..0000000 --- a/assets/FriendsView-0d93fd03.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as y,A as v,a as w,b as x}from"./index-d094e413.js";import{ah as n,o as k,c as O,V as o,P as s,a as t,ax as S,ay as A,T as i}from"./@vue-248d724b.js";import"./@splinetool-99227827.js";import"./vue-router-401d444e.js";import"./element-plus-ab7336d6.js";import"./lodash-es-21c98b27.js";import"./@vueuse-89fc2c2e.js";import"./@element-plus-0de4ac96.js";import"./@popperjs-c75af06c.js";import"./@ctrl-f8748455.js";import"./dayjs-5c34775c.js";import"./async-validator-dee29e8b.js";import"./memoize-one-297ddbcb.js";import"./escape-html-64fe8e16.js";import"./normalize-wheel-es-ed76fb12.js";import"./@floating-ui-72671fae.js";import"./echarts-9ae96183.js";import"./zrender-e9104294.js";const T="/assets/DNA-Helix-33f7700d.jpg",V="/assets/TOmicsVis-3ac9e308.jpg",z="/assets/Hiplot-13f0a215.png";const H={components:{AppHeader:v,AppFooter:w},data(){return{}},mounted(){},methods:{downloadOmicsSuite(){const a="https://sourceforge.net/projects/omicssuite-github-io/files/latest/download";window.open(a,"_blank")}}},e=a=>(S("data-v-2bc43116"),a=a(),A(),a),C={class:"common-layout"},F={class:"page"},R=e(()=>t("br",null,null,-1)),B={class:"image-text-card"},E=e(()=>t("img",{src:T,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),I=e(()=>t("br",null,null,-1)),N=e(()=>t("p",{class:"card-title"},"Wechat Official Accounts",-1)),$=e(()=>t("br",null,null,-1)),j=e(()=>t("p",{style:{"font-size":"1em","font-weight":"bold",color:"#000055","line-height":"2em"}},[i(" YuLabSMU (余光创-南方医科大学) "),t("br"),i(" 生信技能树 (曾健明-澳门大学) "),t("br"),i(" 生信石头 (陈程杰-华南农业大学) "),t("br"),i(" Openbiox (李剑峰-上海交通大学) "),t("br"),i(" 优雅R (王诗翔-中山大学) "),t("br"),i(" bioinfomics (董炜-中山大学) "),t("br"),i(" 生物信息学Omics (苗奔奔-厦门大学) "),t("br")],-1)),q=e(()=>t("br",null,null,-1)),G={class:"image-text-card"},P=e(()=>t("img",{src:V,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),D=e(()=>t("br",null,null,-1)),J=e(()=>t("p",{class:"card-title"},"TOmicsVis R Package",-1)),K=e(()=>t("br",null,null,-1)),L=e(()=>t("span",{style:{"font-size":"1.2em","font-weight":"bold"}},"TOmicsVis R Package",-1)),M=e(()=>t("br",null,null,-1)),U=e(()=>t("br",null,null,-1)),W=e(()=>t("p",{class:"card-content"},[i(" TOmicsVis is a R package for ("),t("a",{href:"https://benben-miao.github.io/TOmicsVis/",target:"_blank",style:{color:"#008888"}},"https://benben-miao.github.io/TOmicsVis/"),i(') transcriptome visualization, from sample trait statistics to gene expression analysis. Six categories include "Samples Statistics", "Traits Analysis", "Differential Expression Analysis", "Advanced Analysis", "GO and KEGG Enrichment", "Tables Operations", with complete sample data. ')],-1)),Y=e(()=>t("br",null,null,-1)),Q={class:"image-text-card"},X=e(()=>t("img",{src:x,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),Z=e(()=>t("br",null,null,-1)),tt=e(()=>t("p",{class:"card-title"},"OmicsSuite Software",-1)),et=e(()=>t("br",null,null,-1)),ot=e(()=>t("span",{style:{"font-size":"1.2em","font-weight":"bold"}},"OmicsSuite Software",-1)),st=e(()=>t("br",null,null,-1)),it=e(()=>t("br",null,null,-1)),nt=e(()=>t("p",{class:"card-content"},[i(" OmicsSuite ("),t("a",{href:"https://omicssuite.github.io",target:"_blank",style:{color:"#008888"}},"https://omicssuite.github.io"),i("), original name BioSciTools, a desktop program developed based on Java-v11.0.0 and R-v4.2.2, aims to make new exploration and contribution to the development of bioinformatics, and realize data analysis and visualization in the fields of statistics, algorithm, sequence analysis, multi-omics (transcriptomics, genomics, proteomics, metabolomics, single cell), microbiology, clinical, etc. ")],-1)),lt=e(()=>t("br",null,null,-1)),at={class:"image-text-card"},ct=e(()=>t("img",{src:z,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),rt=e(()=>t("br",null,null,-1)),_t=e(()=>t("p",{class:"card-title"},"Hiplot Cloud",-1)),dt=e(()=>t("br",null,null,-1)),pt=e(()=>t("span",{style:{"font-size":"1.2em","font-weight":"bold"}},"Hiplot Cloud",-1)),ut=e(()=>t("br",null,null,-1)),mt=e(()=>t("br",null,null,-1)),ht=e(()=>t("p",{class:"card-content"},[i(" Hiplot ("),t("a",{href:"https://hiplot.org",target:"_blank",style:{color:"#008888"}},"https://hiplot.org"),i("), with concise and top-quality data visualization applications for the life sciences and biomedical fields. This web service improve the efficiency in use and development of its equipped 240+ biomedical data visualization functions, involving basic statistics,multi-omics, regression, clustering, dimensional plugins. ")],-1)),ft=e(()=>t("br",null,null,-1));function bt(a,gt,yt,vt,wt,xt){const p=n("AppHeader"),u=n("el-header"),l=n("el-col"),c=n("el-row"),r=n("Compass"),_=n("el-icon"),d=n("el-button"),m=n("el-main"),h=n("AppFooter"),f=n("el-footer"),b=n("el-container"),g=n("el-backtop");return k(),O("div",C,[o(b,null,{default:s(()=>[o(u,null,{default:s(()=>[o(p)]),_:1}),o(m,null,{default:s(()=>[t("div",F,[R,t("div",B,[o(c,{gutter:20},{default:s(()=>[o(l,{span:24,sm:16,lg:16},{default:s(()=>[E]),_:1}),o(l,{span:24,sm:8,lg:8},{default:s(()=>[I,N,$,j]),_:1})]),_:1})]),q,t("div",G,[o(c,{gutter:20},{default:s(()=>[o(l,{span:24,sm:16,lg:16},{default:s(()=>[P]),_:1}),o(l,{span:24,sm:8,lg:8},{default:s(()=>[D,J,K,o(d,{tag:"a",href:"https://benben-miao.github.io/TOmicsVis/",target:"_blank",rel:"noopener noreferrer",style:{"background-color":"#ff2040",color:"#ffffff",height:"45px"}},{default:s(()=>[o(_,{style:{"font-size":"1.5em"}},{default:s(()=>[o(r)]),_:1}),L]),_:1}),M,U,W]),_:1})]),_:1})]),Y,t("div",Q,[o(c,{gutter:20},{default:s(()=>[o(l,{span:24,sm:16,lg:16},{default:s(()=>[X]),_:1}),o(l,{span:24,sm:8,lg:8},{default:s(()=>[Z,tt,et,o(d,{tag:"a",href:"https://omicssuite.github.io",target:"_blank",rel:"noopener noreferrer",style:{"background-color":"#ff2040",color:"#ffffff",height:"45px"}},{default:s(()=>[o(_,{style:{"font-size":"1.5em"}},{default:s(()=>[o(r)]),_:1}),ot]),_:1}),st,it,nt]),_:1})]),_:1})]),lt,t("div",at,[o(c,{gutter:20},{default:s(()=>[o(l,{span:24,sm:16,lg:16},{default:s(()=>[ct]),_:1}),o(l,{span:24,sm:8,lg:8},{default:s(()=>[rt,_t,dt,o(d,{tag:"a",href:"https://hiplot.cn",target:"_blank",rel:"noopener noreferrer",style:{"background-color":"#ff2040",color:"#ffffff",height:"45px"}},{default:s(()=>[o(_,{style:{"font-size":"1.5em"}},{default:s(()=>[o(r)]),_:1}),pt]),_:1}),ut,mt,ht]),_:1})]),_:1})]),ft])]),_:1}),o(f,null,{default:s(()=>[o(h)]),_:1})]),_:1}),o(g,{right:50,bottom:100})])}const Gt=y(H,[["render",bt],["__scopeId","data-v-2bc43116"]]);export{Gt as default}; diff --git a/assets/FriendsView-439846ce.js b/assets/FriendsView-439846ce.js deleted file mode 100644 index 367ca63..0000000 --- a/assets/FriendsView-439846ce.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as y,A as v,a as w,b as x}from"./index-eab933a6.js";import{ah as n,o as k,c as O,V as o,P as s,a as t,ax as S,ay as A,T as i}from"./@vue-248d724b.js";import"./@splinetool-99227827.js";import"./vue-router-401d444e.js";import"./element-plus-ab7336d6.js";import"./lodash-es-21c98b27.js";import"./@vueuse-89fc2c2e.js";import"./@element-plus-0de4ac96.js";import"./@popperjs-c75af06c.js";import"./@ctrl-f8748455.js";import"./dayjs-5c34775c.js";import"./async-validator-dee29e8b.js";import"./memoize-one-297ddbcb.js";import"./escape-html-64fe8e16.js";import"./normalize-wheel-es-ed76fb12.js";import"./@floating-ui-72671fae.js";import"./echarts-9ae96183.js";import"./zrender-e9104294.js";const T="/assets/DNA-Helix-33f7700d.jpg",V="/assets/TOmicsVis-3ac9e308.jpg",z="/assets/Hiplot-13f0a215.png";const H={components:{AppHeader:v,AppFooter:w},data(){return{}},mounted(){},methods:{downloadOmicsSuite(){const a="https://sourceforge.net/projects/omicssuite-github-io/files/latest/download";window.open(a,"_blank")}}},e=a=>(S("data-v-2bc43116"),a=a(),A(),a),C={class:"common-layout"},F={class:"page"},R=e(()=>t("br",null,null,-1)),B={class:"image-text-card"},E=e(()=>t("img",{src:T,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),I=e(()=>t("br",null,null,-1)),N=e(()=>t("p",{class:"card-title"},"Wechat Official Accounts",-1)),$=e(()=>t("br",null,null,-1)),j=e(()=>t("p",{style:{"font-size":"1em","font-weight":"bold",color:"#000055","line-height":"2em"}},[i(" YuLabSMU (余光创-南方医科大学) "),t("br"),i(" 生信技能树 (曾健明-澳门大学) "),t("br"),i(" 生信石头 (陈程杰-华南农业大学) "),t("br"),i(" Openbiox (李剑峰-上海交通大学) "),t("br"),i(" 优雅R (王诗翔-中山大学) "),t("br"),i(" bioinfomics (董炜-中山大学) "),t("br"),i(" 生物信息学Omics (苗奔奔-厦门大学) "),t("br")],-1)),q=e(()=>t("br",null,null,-1)),G={class:"image-text-card"},P=e(()=>t("img",{src:V,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),D=e(()=>t("br",null,null,-1)),J=e(()=>t("p",{class:"card-title"},"TOmicsVis R Package",-1)),K=e(()=>t("br",null,null,-1)),L=e(()=>t("span",{style:{"font-size":"1.2em","font-weight":"bold"}},"TOmicsVis R Package",-1)),M=e(()=>t("br",null,null,-1)),U=e(()=>t("br",null,null,-1)),W=e(()=>t("p",{class:"card-content"},[i(" TOmicsVis is a R package for ("),t("a",{href:"https://benben-miao.github.io/TOmicsVis/",target:"_blank",style:{color:"#008888"}},"https://benben-miao.github.io/TOmicsVis/"),i(') transcriptome visualization, from sample trait statistics to gene expression analysis. Six categories include "Samples Statistics", "Traits Analysis", "Differential Expression Analysis", "Advanced Analysis", "GO and KEGG Enrichment", "Tables Operations", with complete sample data. ')],-1)),Y=e(()=>t("br",null,null,-1)),Q={class:"image-text-card"},X=e(()=>t("img",{src:x,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),Z=e(()=>t("br",null,null,-1)),tt=e(()=>t("p",{class:"card-title"},"OmicsSuite Software",-1)),et=e(()=>t("br",null,null,-1)),ot=e(()=>t("span",{style:{"font-size":"1.2em","font-weight":"bold"}},"OmicsSuite Software",-1)),st=e(()=>t("br",null,null,-1)),it=e(()=>t("br",null,null,-1)),nt=e(()=>t("p",{class:"card-content"},[i(" OmicsSuite ("),t("a",{href:"https://omicssuite.github.io",target:"_blank",style:{color:"#008888"}},"https://omicssuite.github.io"),i("), original name BioSciTools, a desktop program developed based on Java-v11.0.0 and R-v4.2.2, aims to make new exploration and contribution to the development of bioinformatics, and realize data analysis and visualization in the fields of statistics, algorithm, sequence analysis, multi-omics (transcriptomics, genomics, proteomics, metabolomics, single cell), microbiology, clinical, etc. ")],-1)),lt=e(()=>t("br",null,null,-1)),at={class:"image-text-card"},ct=e(()=>t("img",{src:z,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),rt=e(()=>t("br",null,null,-1)),_t=e(()=>t("p",{class:"card-title"},"Hiplot Cloud",-1)),dt=e(()=>t("br",null,null,-1)),pt=e(()=>t("span",{style:{"font-size":"1.2em","font-weight":"bold"}},"Hiplot Cloud",-1)),ut=e(()=>t("br",null,null,-1)),mt=e(()=>t("br",null,null,-1)),ht=e(()=>t("p",{class:"card-content"},[i(" Hiplot ("),t("a",{href:"https://hiplot.org",target:"_blank",style:{color:"#008888"}},"https://hiplot.org"),i("), with concise and top-quality data visualization applications for the life sciences and biomedical fields. This web service improve the efficiency in use and development of its equipped 240+ biomedical data visualization functions, involving basic statistics,multi-omics, regression, clustering, dimensional plugins. ")],-1)),ft=e(()=>t("br",null,null,-1));function bt(a,gt,yt,vt,wt,xt){const p=n("AppHeader"),u=n("el-header"),l=n("el-col"),c=n("el-row"),r=n("Compass"),_=n("el-icon"),d=n("el-button"),m=n("el-main"),h=n("AppFooter"),f=n("el-footer"),b=n("el-container"),g=n("el-backtop");return k(),O("div",C,[o(b,null,{default:s(()=>[o(u,null,{default:s(()=>[o(p)]),_:1}),o(m,null,{default:s(()=>[t("div",F,[R,t("div",B,[o(c,{gutter:20},{default:s(()=>[o(l,{span:24,sm:16,lg:16},{default:s(()=>[E]),_:1}),o(l,{span:24,sm:8,lg:8},{default:s(()=>[I,N,$,j]),_:1})]),_:1})]),q,t("div",G,[o(c,{gutter:20},{default:s(()=>[o(l,{span:24,sm:16,lg:16},{default:s(()=>[P]),_:1}),o(l,{span:24,sm:8,lg:8},{default:s(()=>[D,J,K,o(d,{tag:"a",href:"https://benben-miao.github.io/TOmicsVis/",target:"_blank",rel:"noopener noreferrer",style:{"background-color":"#ff2040",color:"#ffffff",height:"45px"}},{default:s(()=>[o(_,{style:{"font-size":"1.5em"}},{default:s(()=>[o(r)]),_:1}),L]),_:1}),M,U,W]),_:1})]),_:1})]),Y,t("div",Q,[o(c,{gutter:20},{default:s(()=>[o(l,{span:24,sm:16,lg:16},{default:s(()=>[X]),_:1}),o(l,{span:24,sm:8,lg:8},{default:s(()=>[Z,tt,et,o(d,{tag:"a",href:"https://omicssuite.github.io",target:"_blank",rel:"noopener noreferrer",style:{"background-color":"#ff2040",color:"#ffffff",height:"45px"}},{default:s(()=>[o(_,{style:{"font-size":"1.5em"}},{default:s(()=>[o(r)]),_:1}),ot]),_:1}),st,it,nt]),_:1})]),_:1})]),lt,t("div",at,[o(c,{gutter:20},{default:s(()=>[o(l,{span:24,sm:16,lg:16},{default:s(()=>[ct]),_:1}),o(l,{span:24,sm:8,lg:8},{default:s(()=>[rt,_t,dt,o(d,{tag:"a",href:"https://hiplot.cn",target:"_blank",rel:"noopener noreferrer",style:{"background-color":"#ff2040",color:"#ffffff",height:"45px"}},{default:s(()=>[o(_,{style:{"font-size":"1.5em"}},{default:s(()=>[o(r)]),_:1}),pt]),_:1}),ut,mt,ht]),_:1})]),_:1})]),ft])]),_:1}),o(f,null,{default:s(()=>[o(h)]),_:1})]),_:1}),o(g,{right:50,bottom:100})])}const Gt=y(H,[["render",bt],["__scopeId","data-v-2bc43116"]]);export{Gt as default}; diff --git a/assets/FriendsView-62a257d6.js b/assets/FriendsView-62a257d6.js new file mode 100644 index 0000000..3a84079 --- /dev/null +++ b/assets/FriendsView-62a257d6.js @@ -0,0 +1 @@ +import{_ as y,A as w,a as v,b as x}from"./index-387fbfa5.js";import{ah as n,o as k,c as O,V as o,P as s,a as t,ax as S,ay as A,T as i}from"./@vue-248d724b.js";import"./@splinetool-ead863f8.js";import"./vue-router-401d444e.js";import"./element-plus-bab1278a.js";import"./lodash-es-21c98b27.js";import"./@vueuse-89fc2c2e.js";import"./@element-plus-0de4ac96.js";import"./@popperjs-c75af06c.js";import"./@ctrl-f8748455.js";import"./dayjs-5c34775c.js";import"./async-validator-dee29e8b.js";import"./memoize-one-297ddbcb.js";import"./escape-html-64fe8e16.js";import"./normalize-wheel-es-ed76fb12.js";import"./@floating-ui-72671fae.js";import"./echarts-9ae96183.js";import"./zrender-e9104294.js";const T=""+new URL("DNA-Helix.jpg",import.meta.url).href,V=""+new URL("TOmicsVis.jpg",import.meta.url).href,z=""+new URL("Hiplot.png",import.meta.url).href;const H={components:{AppHeader:w,AppFooter:v},data(){return{}},mounted(){},methods:{downloadOmicsSuite(){const a="https://sourceforge.net/projects/omicssuite-github-io/files/latest/download";window.open(a,"_blank")}}},e=a=>(S("data-v-2bc43116"),a=a(),A(),a),R={class:"common-layout"},C={class:"page"},F=e(()=>t("br",null,null,-1)),B={class:"image-text-card"},E=e(()=>t("img",{src:T,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),I=e(()=>t("br",null,null,-1)),L=e(()=>t("p",{class:"card-title"},"Wechat Official Accounts",-1)),N=e(()=>t("br",null,null,-1)),U=e(()=>t("p",{style:{"font-size":"1em","font-weight":"bold",color:"#000055","line-height":"2em"}},[i(" YuLabSMU (余光创-南方医科大学) "),t("br"),i(" 生信技能树 (曾健明-澳门大学) "),t("br"),i(" 生信石头 (陈程杰-华南农业大学) "),t("br"),i(" Openbiox (李剑峰-上海交通大学) "),t("br"),i(" 优雅R (王诗翔-中山大学) "),t("br"),i(" bioinfomics (董炜-中山大学) "),t("br"),i(" 生物信息学Omics (苗奔奔-厦门大学) "),t("br")],-1)),$=e(()=>t("br",null,null,-1)),j={class:"image-text-card"},q=e(()=>t("img",{src:V,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),G=e(()=>t("br",null,null,-1)),P=e(()=>t("p",{class:"card-title"},"TOmicsVis R Package",-1)),D=e(()=>t("br",null,null,-1)),J=e(()=>t("span",{style:{"font-size":"1.2em","font-weight":"bold"}},"TOmicsVis R Package",-1)),K=e(()=>t("br",null,null,-1)),M=e(()=>t("br",null,null,-1)),W=e(()=>t("p",{class:"card-content"},[i(" TOmicsVis is a R package for ("),t("a",{href:"https://benben-miao.github.io/TOmicsVis/",target:"_blank",style:{color:"#008888"}},"https://benben-miao.github.io/TOmicsVis/"),i(') transcriptome visualization, from sample trait statistics to gene expression analysis. Six categories include "Samples Statistics", "Traits Analysis", "Differential Expression Analysis", "Advanced Analysis", "GO and KEGG Enrichment", "Tables Operations", with complete sample data. ')],-1)),Y=e(()=>t("br",null,null,-1)),Q={class:"image-text-card"},X=e(()=>t("img",{src:x,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),Z=e(()=>t("br",null,null,-1)),tt=e(()=>t("p",{class:"card-title"},"OmicsSuite Software",-1)),et=e(()=>t("br",null,null,-1)),ot=e(()=>t("span",{style:{"font-size":"1.2em","font-weight":"bold"}},"OmicsSuite Software",-1)),st=e(()=>t("br",null,null,-1)),it=e(()=>t("br",null,null,-1)),nt=e(()=>t("p",{class:"card-content"},[i(" OmicsSuite ("),t("a",{href:"https://omicssuite.github.io",target:"_blank",style:{color:"#008888"}},"https://omicssuite.github.io"),i("), original name BioSciTools, a desktop program developed based on Java-v11.0.0 and R-v4.2.2, aims to make new exploration and contribution to the development of bioinformatics, and realize data analysis and visualization in the fields of statistics, algorithm, sequence analysis, multi-omics (transcriptomics, genomics, proteomics, metabolomics, single cell), microbiology, clinical, etc. ")],-1)),lt=e(()=>t("br",null,null,-1)),at={class:"image-text-card"},ct=e(()=>t("img",{src:z,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),rt=e(()=>t("br",null,null,-1)),_t=e(()=>t("p",{class:"card-title"},"Hiplot Cloud",-1)),dt=e(()=>t("br",null,null,-1)),pt=e(()=>t("span",{style:{"font-size":"1.2em","font-weight":"bold"}},"Hiplot Cloud",-1)),ut=e(()=>t("br",null,null,-1)),mt=e(()=>t("br",null,null,-1)),ht=e(()=>t("p",{class:"card-content"},[i(" Hiplot ("),t("a",{href:"https://hiplot.org",target:"_blank",style:{color:"#008888"}},"https://hiplot.org"),i("), with concise and top-quality data visualization applications for the life sciences and biomedical fields. This web service improve the efficiency in use and development of its equipped 240+ biomedical data visualization functions, involving basic statistics,multi-omics, regression, clustering, dimensional plugins. ")],-1)),ft=e(()=>t("br",null,null,-1));function bt(a,gt,yt,wt,vt,xt){const p=n("AppHeader"),u=n("el-header"),l=n("el-col"),c=n("el-row"),r=n("Compass"),_=n("el-icon"),d=n("el-button"),m=n("el-main"),h=n("AppFooter"),f=n("el-footer"),b=n("el-container"),g=n("el-backtop");return k(),O("div",R,[o(b,null,{default:s(()=>[o(u,null,{default:s(()=>[o(p)]),_:1}),o(m,null,{default:s(()=>[t("div",C,[F,t("div",B,[o(c,{gutter:20},{default:s(()=>[o(l,{span:24,sm:16,lg:16},{default:s(()=>[E]),_:1}),o(l,{span:24,sm:8,lg:8},{default:s(()=>[I,L,N,U]),_:1})]),_:1})]),$,t("div",j,[o(c,{gutter:20},{default:s(()=>[o(l,{span:24,sm:16,lg:16},{default:s(()=>[q]),_:1}),o(l,{span:24,sm:8,lg:8},{default:s(()=>[G,P,D,o(d,{tag:"a",href:"https://benben-miao.github.io/TOmicsVis/",target:"_blank",rel:"noopener noreferrer",style:{"background-color":"#ff2040",color:"#ffffff",height:"45px"}},{default:s(()=>[o(_,{style:{"font-size":"1.5em"}},{default:s(()=>[o(r)]),_:1}),J]),_:1}),K,M,W]),_:1})]),_:1})]),Y,t("div",Q,[o(c,{gutter:20},{default:s(()=>[o(l,{span:24,sm:16,lg:16},{default:s(()=>[X]),_:1}),o(l,{span:24,sm:8,lg:8},{default:s(()=>[Z,tt,et,o(d,{tag:"a",href:"https://omicssuite.github.io",target:"_blank",rel:"noopener noreferrer",style:{"background-color":"#ff2040",color:"#ffffff",height:"45px"}},{default:s(()=>[o(_,{style:{"font-size":"1.5em"}},{default:s(()=>[o(r)]),_:1}),ot]),_:1}),st,it,nt]),_:1})]),_:1})]),lt,t("div",at,[o(c,{gutter:20},{default:s(()=>[o(l,{span:24,sm:16,lg:16},{default:s(()=>[ct]),_:1}),o(l,{span:24,sm:8,lg:8},{default:s(()=>[rt,_t,dt,o(d,{tag:"a",href:"https://hiplot.cn",target:"_blank",rel:"noopener noreferrer",style:{"background-color":"#ff2040",color:"#ffffff",height:"45px"}},{default:s(()=>[o(_,{style:{"font-size":"1.5em"}},{default:s(()=>[o(r)]),_:1}),pt]),_:1}),ut,mt,ht]),_:1})]),_:1})]),ft])]),_:1}),o(f,null,{default:s(()=>[o(h)]),_:1})]),_:1}),o(g,{right:50,bottom:100})])}const jt=y(H,[["render",bt],["__scopeId","data-v-2bc43116"]]);export{jt as default}; diff --git a/assets/FriendsView-6f8bf42e.js b/assets/FriendsView-6f8bf42e.js deleted file mode 100644 index 80d8026..0000000 --- a/assets/FriendsView-6f8bf42e.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as y,A as v,a as w,b as x}from"./index-3ef5d3f0.js";import{ah as n,o as k,c as O,V as o,P as s,a as t,ax as S,ay as A,T as i}from"./@vue-248d724b.js";import"./vue-router-401d444e.js";import"./element-plus-ab7336d6.js";import"./lodash-es-21c98b27.js";import"./@vueuse-89fc2c2e.js";import"./@element-plus-0de4ac96.js";import"./@popperjs-c75af06c.js";import"./@ctrl-f8748455.js";import"./dayjs-5c34775c.js";import"./async-validator-dee29e8b.js";import"./memoize-one-297ddbcb.js";import"./escape-html-64fe8e16.js";import"./normalize-wheel-es-ed76fb12.js";import"./@floating-ui-72671fae.js";import"./echarts-9ae96183.js";import"./zrender-e9104294.js";const T="/assets/DNA-Helix-33f7700d.jpg",V="/assets/TOmicsVis-3ac9e308.jpg",z="/assets/Hiplot-13f0a215.png";const H={components:{AppHeader:v,AppFooter:w},data(){return{}},mounted(){},methods:{downloadOmicsSuite(){const a="https://sourceforge.net/projects/omicssuite-github-io/files/latest/download";window.open(a,"_blank")}}},e=a=>(S("data-v-f3f05ef0"),a=a(),A(),a),C={class:"common-layout"},F=e(()=>t("br",null,null,-1)),R={class:"image-text-card"},B=e(()=>t("img",{src:T,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),E=e(()=>t("br",null,null,-1)),I=e(()=>t("p",{class:"card-title"},"Wechat Official Accounts",-1)),N=e(()=>t("br",null,null,-1)),$=e(()=>t("p",{style:{"font-size":"1em","font-weight":"bold",color:"#000055","line-height":"2em"}},[i(" YuLabSMU (余光创-南方医科大学) "),t("br"),i(" 生信技能树 (曾健明-澳门大学) "),t("br"),i(" 生信石头 (陈程杰-华南农业大学) "),t("br"),i(" Openbiox (李剑峰-上海交通大学) "),t("br"),i(" 优雅R (王诗翔-中山大学) "),t("br"),i(" bioinfomics (董炜-中山大学) "),t("br"),i(" 生物信息学Omics (苗奔奔-厦门大学) "),t("br")],-1)),j=e(()=>t("br",null,null,-1)),q={class:"image-text-card"},G=e(()=>t("img",{src:V,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),P=e(()=>t("br",null,null,-1)),D=e(()=>t("p",{class:"card-title"},"TOmicsVis R Package",-1)),J=e(()=>t("br",null,null,-1)),K=e(()=>t("span",{style:{"font-size":"1.2em","font-weight":"bold"}},"TOmicsVis R Package",-1)),L=e(()=>t("br",null,null,-1)),M=e(()=>t("br",null,null,-1)),U=e(()=>t("p",{class:"card-content"},[i(" TOmicsVis is a R package for ("),t("a",{href:"https://benben-miao.github.io/TOmicsVis/",target:"_blank",style:{color:"#008888"}},"https://benben-miao.github.io/TOmicsVis/"),i(') transcriptome visualization, from sample trait statistics to gene expression analysis. Six categories include "Samples Statistics", "Traits Analysis", "Differential Expression Analysis", "Advanced Analysis", "GO and KEGG Enrichment", "Tables Operations", with complete sample data. ')],-1)),W=e(()=>t("br",null,null,-1)),Y={class:"image-text-card"},Q=e(()=>t("img",{src:x,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),X=e(()=>t("br",null,null,-1)),Z=e(()=>t("p",{class:"card-title"},"OmicsSuite Software",-1)),tt=e(()=>t("br",null,null,-1)),et=e(()=>t("span",{style:{"font-size":"1.2em","font-weight":"bold"}},"OmicsSuite Software",-1)),ot=e(()=>t("br",null,null,-1)),st=e(()=>t("br",null,null,-1)),it=e(()=>t("p",{class:"card-content"},[i(" OmicsSuite ("),t("a",{href:"https://omicssuite.github.io",target:"_blank",style:{color:"#008888"}},"https://omicssuite.github.io"),i("), original name BioSciTools, a desktop program developed based on Java-v11.0.0 and R-v4.2.2, aims to make new exploration and contribution to the development of bioinformatics, and realize data analysis and visualization in the fields of statistics, algorithm, sequence analysis, multi-omics (transcriptomics, genomics, proteomics, metabolomics, single cell), microbiology, clinical, etc. ")],-1)),nt=e(()=>t("br",null,null,-1)),lt={class:"image-text-card"},at=e(()=>t("img",{src:z,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),ct=e(()=>t("br",null,null,-1)),rt=e(()=>t("p",{class:"card-title"},"Hiplot Cloud",-1)),_t=e(()=>t("br",null,null,-1)),dt=e(()=>t("span",{style:{"font-size":"1.2em","font-weight":"bold"}},"Hiplot Cloud",-1)),pt=e(()=>t("br",null,null,-1)),ut=e(()=>t("br",null,null,-1)),mt=e(()=>t("p",{class:"card-content"},[i(" Hiplot ("),t("a",{href:"https://hiplot.org",target:"_blank",style:{color:"#008888"}},"https://hiplot.org"),i("), with concise and top-quality data visualization applications for the life sciences and biomedical fields. This web service improve the efficiency in use and development of its equipped 240+ biomedical data visualization functions, involving basic statistics,multi-omics, regression, clustering, dimensional plugins. ")],-1)),ft=e(()=>t("br",null,null,-1));function ht(a,bt,gt,yt,vt,wt){const p=n("AppHeader"),u=n("el-header"),l=n("el-col"),c=n("el-row"),r=n("Compass"),_=n("el-icon"),d=n("el-button"),m=n("el-main"),f=n("AppFooter"),h=n("el-footer"),b=n("el-container"),g=n("el-backtop");return k(),O("div",C,[o(b,null,{default:s(()=>[o(u,null,{default:s(()=>[o(p)]),_:1}),o(m,null,{default:s(()=>[t("div",null,[F,t("div",R,[o(c,{gutter:20},{default:s(()=>[o(l,{span:24,sm:16,lg:16},{default:s(()=>[B]),_:1}),o(l,{span:24,sm:8,lg:8},{default:s(()=>[E,I,N,$]),_:1})]),_:1})]),j,t("div",q,[o(c,{gutter:20},{default:s(()=>[o(l,{span:24,sm:16,lg:16},{default:s(()=>[G]),_:1}),o(l,{span:24,sm:8,lg:8},{default:s(()=>[P,D,J,o(d,{tag:"a",href:"https://benben-miao.github.io/TOmicsVis/",target:"_blank",rel:"noopener noreferrer",style:{"background-color":"#ff2040",color:"#ffffff",height:"45px"}},{default:s(()=>[o(_,{style:{"font-size":"1.5em"}},{default:s(()=>[o(r)]),_:1}),K]),_:1}),L,M,U]),_:1})]),_:1})]),W,t("div",Y,[o(c,{gutter:20},{default:s(()=>[o(l,{span:24,sm:16,lg:16},{default:s(()=>[Q]),_:1}),o(l,{span:24,sm:8,lg:8},{default:s(()=>[X,Z,tt,o(d,{tag:"a",href:"https://omicssuite.github.io",target:"_blank",rel:"noopener noreferrer",style:{"background-color":"#ff2040",color:"#ffffff",height:"45px"}},{default:s(()=>[o(_,{style:{"font-size":"1.5em"}},{default:s(()=>[o(r)]),_:1}),et]),_:1}),ot,st,it]),_:1})]),_:1})]),nt,t("div",lt,[o(c,{gutter:20},{default:s(()=>[o(l,{span:24,sm:16,lg:16},{default:s(()=>[at]),_:1}),o(l,{span:24,sm:8,lg:8},{default:s(()=>[ct,rt,_t,o(d,{tag:"a",href:"https://hiplot.cn",target:"_blank",rel:"noopener noreferrer",style:{"background-color":"#ff2040",color:"#ffffff",height:"45px"}},{default:s(()=>[o(_,{style:{"font-size":"1.5em"}},{default:s(()=>[o(r)]),_:1}),dt]),_:1}),pt,ut,mt]),_:1})]),_:1})]),ft])]),_:1}),o(h,null,{default:s(()=>[o(f)]),_:1})]),_:1}),o(g,{right:50,bottom:100})])}const jt=y(H,[["render",ht],["__scopeId","data-v-f3f05ef0"]]);export{jt as default}; diff --git a/assets/FriendsView-7df84fbb.js b/assets/FriendsView-7df84fbb.js deleted file mode 100644 index 5f05b11..0000000 --- a/assets/FriendsView-7df84fbb.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as y,A as v,a as w,b as x}from"./index-82148c11.js";import{ah as n,o as k,c as O,V as o,P as s,a as t,ax as S,ay as A,T as i}from"./@vue-248d724b.js";import"./vue-router-401d444e.js";import"./element-plus-ab7336d6.js";import"./lodash-es-21c98b27.js";import"./@vueuse-89fc2c2e.js";import"./@element-plus-0de4ac96.js";import"./@popperjs-c75af06c.js";import"./@ctrl-f8748455.js";import"./dayjs-5c34775c.js";import"./async-validator-dee29e8b.js";import"./memoize-one-297ddbcb.js";import"./escape-html-64fe8e16.js";import"./normalize-wheel-es-ed76fb12.js";import"./@floating-ui-72671fae.js";import"./echarts-9ae96183.js";import"./zrender-e9104294.js";const T="/assets/DNA-Helix-33f7700d.jpg",V="/assets/TOmicsVis-3ac9e308.jpg",z="/assets/Hiplot-13f0a215.png";const H={components:{AppHeader:v,AppFooter:w},data(){return{}},mounted(){},methods:{downloadOmicsSuite(){const a="https://sourceforge.net/projects/omicssuite-github-io/files/latest/download";window.open(a,"_blank")}}},e=a=>(S("data-v-f3f05ef0"),a=a(),A(),a),C={class:"common-layout"},F=e(()=>t("br",null,null,-1)),R={class:"image-text-card"},B=e(()=>t("img",{src:T,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),E=e(()=>t("br",null,null,-1)),I=e(()=>t("p",{class:"card-title"},"Wechat Official Accounts",-1)),N=e(()=>t("br",null,null,-1)),$=e(()=>t("p",{style:{"font-size":"1em","font-weight":"bold",color:"#000055","line-height":"2em"}},[i(" YuLabSMU (余光创-南方医科大学) "),t("br"),i(" 生信技能树 (曾健明-澳门大学) "),t("br"),i(" 生信石头 (陈程杰-华南农业大学) "),t("br"),i(" Openbiox (李剑峰-上海交通大学) "),t("br"),i(" 优雅R (王诗翔-中山大学) "),t("br"),i(" bioinfomics (董炜-中山大学) "),t("br"),i(" 生物信息学Omics (苗奔奔-厦门大学) "),t("br")],-1)),j=e(()=>t("br",null,null,-1)),q={class:"image-text-card"},G=e(()=>t("img",{src:V,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),P=e(()=>t("br",null,null,-1)),D=e(()=>t("p",{class:"card-title"},"TOmicsVis R Package",-1)),J=e(()=>t("br",null,null,-1)),K=e(()=>t("span",{style:{"font-size":"1.2em","font-weight":"bold"}},"TOmicsVis R Package",-1)),L=e(()=>t("br",null,null,-1)),M=e(()=>t("br",null,null,-1)),U=e(()=>t("p",{class:"card-content"},[i(" TOmicsVis is a R package for ("),t("a",{href:"https://benben-miao.github.io/TOmicsVis/",target:"_blank",style:{color:"#008888"}},"https://benben-miao.github.io/TOmicsVis/"),i(') transcriptome visualization, from sample trait statistics to gene expression analysis. Six categories include "Samples Statistics", "Traits Analysis", "Differential Expression Analysis", "Advanced Analysis", "GO and KEGG Enrichment", "Tables Operations", with complete sample data. ')],-1)),W=e(()=>t("br",null,null,-1)),Y={class:"image-text-card"},Q=e(()=>t("img",{src:x,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),X=e(()=>t("br",null,null,-1)),Z=e(()=>t("p",{class:"card-title"},"OmicsSuite Software",-1)),tt=e(()=>t("br",null,null,-1)),et=e(()=>t("span",{style:{"font-size":"1.2em","font-weight":"bold"}},"OmicsSuite Software",-1)),ot=e(()=>t("br",null,null,-1)),st=e(()=>t("br",null,null,-1)),it=e(()=>t("p",{class:"card-content"},[i(" OmicsSuite ("),t("a",{href:"https://omicssuite.github.io",target:"_blank",style:{color:"#008888"}},"https://omicssuite.github.io"),i("), original name BioSciTools, a desktop program developed based on Java-v11.0.0 and R-v4.2.2, aims to make new exploration and contribution to the development of bioinformatics, and realize data analysis and visualization in the fields of statistics, algorithm, sequence analysis, multi-omics (transcriptomics, genomics, proteomics, metabolomics, single cell), microbiology, clinical, etc. ")],-1)),nt=e(()=>t("br",null,null,-1)),lt={class:"image-text-card"},at=e(()=>t("img",{src:z,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),ct=e(()=>t("br",null,null,-1)),rt=e(()=>t("p",{class:"card-title"},"Hiplot Cloud",-1)),_t=e(()=>t("br",null,null,-1)),dt=e(()=>t("span",{style:{"font-size":"1.2em","font-weight":"bold"}},"Hiplot Cloud",-1)),pt=e(()=>t("br",null,null,-1)),ut=e(()=>t("br",null,null,-1)),mt=e(()=>t("p",{class:"card-content"},[i(" Hiplot ("),t("a",{href:"https://hiplot.org",target:"_blank",style:{color:"#008888"}},"https://hiplot.org"),i("), with concise and top-quality data visualization applications for the life sciences and biomedical fields. This web service improve the efficiency in use and development of its equipped 240+ biomedical data visualization functions, involving basic statistics,multi-omics, regression, clustering, dimensional plugins. ")],-1)),ft=e(()=>t("br",null,null,-1));function ht(a,bt,gt,yt,vt,wt){const p=n("AppHeader"),u=n("el-header"),l=n("el-col"),c=n("el-row"),r=n("Compass"),_=n("el-icon"),d=n("el-button"),m=n("el-main"),f=n("AppFooter"),h=n("el-footer"),b=n("el-container"),g=n("el-backtop");return k(),O("div",C,[o(b,null,{default:s(()=>[o(u,null,{default:s(()=>[o(p)]),_:1}),o(m,null,{default:s(()=>[t("div",null,[F,t("div",R,[o(c,{gutter:20},{default:s(()=>[o(l,{span:24,sm:16,lg:16},{default:s(()=>[B]),_:1}),o(l,{span:24,sm:8,lg:8},{default:s(()=>[E,I,N,$]),_:1})]),_:1})]),j,t("div",q,[o(c,{gutter:20},{default:s(()=>[o(l,{span:24,sm:16,lg:16},{default:s(()=>[G]),_:1}),o(l,{span:24,sm:8,lg:8},{default:s(()=>[P,D,J,o(d,{tag:"a",href:"https://benben-miao.github.io/TOmicsVis/",target:"_blank",rel:"noopener noreferrer",style:{"background-color":"#ff2040",color:"#ffffff",height:"45px"}},{default:s(()=>[o(_,{style:{"font-size":"1.5em"}},{default:s(()=>[o(r)]),_:1}),K]),_:1}),L,M,U]),_:1})]),_:1})]),W,t("div",Y,[o(c,{gutter:20},{default:s(()=>[o(l,{span:24,sm:16,lg:16},{default:s(()=>[Q]),_:1}),o(l,{span:24,sm:8,lg:8},{default:s(()=>[X,Z,tt,o(d,{tag:"a",href:"https://omicssuite.github.io",target:"_blank",rel:"noopener noreferrer",style:{"background-color":"#ff2040",color:"#ffffff",height:"45px"}},{default:s(()=>[o(_,{style:{"font-size":"1.5em"}},{default:s(()=>[o(r)]),_:1}),et]),_:1}),ot,st,it]),_:1})]),_:1})]),nt,t("div",lt,[o(c,{gutter:20},{default:s(()=>[o(l,{span:24,sm:16,lg:16},{default:s(()=>[at]),_:1}),o(l,{span:24,sm:8,lg:8},{default:s(()=>[ct,rt,_t,o(d,{tag:"a",href:"https://hiplot.cn",target:"_blank",rel:"noopener noreferrer",style:{"background-color":"#ff2040",color:"#ffffff",height:"45px"}},{default:s(()=>[o(_,{style:{"font-size":"1.5em"}},{default:s(()=>[o(r)]),_:1}),dt]),_:1}),pt,ut,mt]),_:1})]),_:1})]),ft])]),_:1}),o(h,null,{default:s(()=>[o(f)]),_:1})]),_:1}),o(g,{right:50,bottom:100})])}const jt=y(H,[["render",ht],["__scopeId","data-v-f3f05ef0"]]);export{jt as default}; diff --git a/assets/FriendsView-cad92048.css b/assets/FriendsView-cad92048.css deleted file mode 100644 index 6a3e090..0000000 --- a/assets/FriendsView-cad92048.css +++ /dev/null @@ -1 +0,0 @@ -.el-header[data-v-f3f05ef0]{padding:0;position:fixed;width:100%;z-index:100}.el-main[data-v-f3f05ef0]{margin-top:60px;padding:0 20%}.el-footer[data-v-f3f05ef0]{top:0;padding:0}.image-text-card[data-v-f3f05ef0]{background-color:#fff;border-radius:10px;box-shadow:0 0 10px #cdcdcd;border:1px solid #cdcdcd;padding:10px}.card-title[data-v-f3f05ef0]{font-size:1.2em;font-weight:700}.card-content[data-v-f3f05ef0]{font-size:1em;text-align:justify;line-height:2em}@media (max-width: 1200px){.el-main[data-v-f3f05ef0]{padding:0 10%}}@media (max-width: 800px){.el-main[data-v-f3f05ef0]{padding:0 2%}} diff --git a/assets/FriendsView-f5101cb6.js b/assets/FriendsView-f5101cb6.js deleted file mode 100644 index f843cd9..0000000 --- a/assets/FriendsView-f5101cb6.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as y,A as v,a as w,b as x}from"./index-25c25b6f.js";import{ah as n,o as k,c as O,V as o,P as s,a as t,ax as S,ay as A,T as i}from"./@vue-248d724b.js";import"./vue-router-401d444e.js";import"./element-plus-ab7336d6.js";import"./lodash-es-21c98b27.js";import"./@vueuse-89fc2c2e.js";import"./@element-plus-0de4ac96.js";import"./@popperjs-c75af06c.js";import"./@ctrl-f8748455.js";import"./dayjs-5c34775c.js";import"./async-validator-dee29e8b.js";import"./memoize-one-297ddbcb.js";import"./escape-html-64fe8e16.js";import"./normalize-wheel-es-ed76fb12.js";import"./@floating-ui-72671fae.js";import"./echarts-9ae96183.js";import"./zrender-e9104294.js";const T="/assets/DNA-Helix-33f7700d.jpg",V="/assets/TOmicsVis-3ac9e308.jpg",z="/assets/Hiplot-13f0a215.png";const H={components:{AppHeader:v,AppFooter:w},data(){return{}},mounted(){},methods:{downloadOmicsSuite(){const a="https://sourceforge.net/projects/omicssuite-github-io/files/latest/download";window.open(a,"_blank")}}},e=a=>(S("data-v-f3f05ef0"),a=a(),A(),a),C={class:"common-layout"},F=e(()=>t("br",null,null,-1)),R={class:"image-text-card"},B=e(()=>t("img",{src:T,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),E=e(()=>t("br",null,null,-1)),I=e(()=>t("p",{class:"card-title"},"Wechat Official Accounts",-1)),N=e(()=>t("br",null,null,-1)),$=e(()=>t("p",{style:{"font-size":"1em","font-weight":"bold",color:"#000055","line-height":"2em"}},[i(" YuLabSMU (余光创-南方医科大学) "),t("br"),i(" 生信技能树 (曾健明-澳门大学) "),t("br"),i(" 生信石头 (陈程杰-华南农业大学) "),t("br"),i(" Openbiox (李剑峰-上海交通大学) "),t("br"),i(" 优雅R (王诗翔-中山大学) "),t("br"),i(" bioinfomics (董炜-中山大学) "),t("br"),i(" 生物信息学Omics (苗奔奔-厦门大学) "),t("br")],-1)),j=e(()=>t("br",null,null,-1)),q={class:"image-text-card"},G=e(()=>t("img",{src:V,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),P=e(()=>t("br",null,null,-1)),D=e(()=>t("p",{class:"card-title"},"TOmicsVis R Package",-1)),J=e(()=>t("br",null,null,-1)),K=e(()=>t("span",{style:{"font-size":"1.2em","font-weight":"bold"}},"TOmicsVis R Package",-1)),L=e(()=>t("br",null,null,-1)),M=e(()=>t("br",null,null,-1)),U=e(()=>t("p",{class:"card-content"},[i(" TOmicsVis is a R package for ("),t("a",{href:"https://benben-miao.github.io/TOmicsVis/",target:"_blank",style:{color:"#008888"}},"https://benben-miao.github.io/TOmicsVis/"),i(') transcriptome visualization, from sample trait statistics to gene expression analysis. Six categories include "Samples Statistics", "Traits Analysis", "Differential Expression Analysis", "Advanced Analysis", "GO and KEGG Enrichment", "Tables Operations", with complete sample data. ')],-1)),W=e(()=>t("br",null,null,-1)),Y={class:"image-text-card"},Q=e(()=>t("img",{src:x,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),X=e(()=>t("br",null,null,-1)),Z=e(()=>t("p",{class:"card-title"},"OmicsSuite Software",-1)),tt=e(()=>t("br",null,null,-1)),et=e(()=>t("span",{style:{"font-size":"1.2em","font-weight":"bold"}},"OmicsSuite Software",-1)),ot=e(()=>t("br",null,null,-1)),st=e(()=>t("br",null,null,-1)),it=e(()=>t("p",{class:"card-content"},[i(" OmicsSuite ("),t("a",{href:"https://omicssuite.github.io",target:"_blank",style:{color:"#008888"}},"https://omicssuite.github.io"),i("), original name BioSciTools, a desktop program developed based on Java-v11.0.0 and R-v4.2.2, aims to make new exploration and contribution to the development of bioinformatics, and realize data analysis and visualization in the fields of statistics, algorithm, sequence analysis, multi-omics (transcriptomics, genomics, proteomics, metabolomics, single cell), microbiology, clinical, etc. ")],-1)),nt=e(()=>t("br",null,null,-1)),lt={class:"image-text-card"},at=e(()=>t("img",{src:z,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),ct=e(()=>t("br",null,null,-1)),rt=e(()=>t("p",{class:"card-title"},"Hiplot Cloud",-1)),_t=e(()=>t("br",null,null,-1)),dt=e(()=>t("span",{style:{"font-size":"1.2em","font-weight":"bold"}},"Hiplot Cloud",-1)),pt=e(()=>t("br",null,null,-1)),ut=e(()=>t("br",null,null,-1)),mt=e(()=>t("p",{class:"card-content"},[i(" Hiplot ("),t("a",{href:"https://hiplot.org",target:"_blank",style:{color:"#008888"}},"https://hiplot.org"),i("), with concise and top-quality data visualization applications for the life sciences and biomedical fields. This web service improve the efficiency in use and development of its equipped 240+ biomedical data visualization functions, involving basic statistics,multi-omics, regression, clustering, dimensional plugins. ")],-1)),ft=e(()=>t("br",null,null,-1));function ht(a,bt,gt,yt,vt,wt){const p=n("AppHeader"),u=n("el-header"),l=n("el-col"),c=n("el-row"),r=n("Compass"),_=n("el-icon"),d=n("el-button"),m=n("el-main"),f=n("AppFooter"),h=n("el-footer"),b=n("el-container"),g=n("el-backtop");return k(),O("div",C,[o(b,null,{default:s(()=>[o(u,null,{default:s(()=>[o(p)]),_:1}),o(m,null,{default:s(()=>[t("div",null,[F,t("div",R,[o(c,{gutter:20},{default:s(()=>[o(l,{span:24,sm:16,lg:16},{default:s(()=>[B]),_:1}),o(l,{span:24,sm:8,lg:8},{default:s(()=>[E,I,N,$]),_:1})]),_:1})]),j,t("div",q,[o(c,{gutter:20},{default:s(()=>[o(l,{span:24,sm:16,lg:16},{default:s(()=>[G]),_:1}),o(l,{span:24,sm:8,lg:8},{default:s(()=>[P,D,J,o(d,{tag:"a",href:"https://benben-miao.github.io/TOmicsVis/",target:"_blank",rel:"noopener noreferrer",style:{"background-color":"#ff2040",color:"#ffffff",height:"45px"}},{default:s(()=>[o(_,{style:{"font-size":"1.5em"}},{default:s(()=>[o(r)]),_:1}),K]),_:1}),L,M,U]),_:1})]),_:1})]),W,t("div",Y,[o(c,{gutter:20},{default:s(()=>[o(l,{span:24,sm:16,lg:16},{default:s(()=>[Q]),_:1}),o(l,{span:24,sm:8,lg:8},{default:s(()=>[X,Z,tt,o(d,{tag:"a",href:"https://omicssuite.github.io",target:"_blank",rel:"noopener noreferrer",style:{"background-color":"#ff2040",color:"#ffffff",height:"45px"}},{default:s(()=>[o(_,{style:{"font-size":"1.5em"}},{default:s(()=>[o(r)]),_:1}),et]),_:1}),ot,st,it]),_:1})]),_:1})]),nt,t("div",lt,[o(c,{gutter:20},{default:s(()=>[o(l,{span:24,sm:16,lg:16},{default:s(()=>[at]),_:1}),o(l,{span:24,sm:8,lg:8},{default:s(()=>[ct,rt,_t,o(d,{tag:"a",href:"https://hiplot.cn",target:"_blank",rel:"noopener noreferrer",style:{"background-color":"#ff2040",color:"#ffffff",height:"45px"}},{default:s(()=>[o(_,{style:{"font-size":"1.5em"}},{default:s(()=>[o(r)]),_:1}),dt]),_:1}),pt,ut,mt]),_:1})]),_:1})]),ft])]),_:1}),o(h,null,{default:s(()=>[o(f)]),_:1})]),_:1}),o(g,{right:50,bottom:100})])}const jt=y(H,[["render",ht],["__scopeId","data-v-f3f05ef0"]]);export{jt as default}; diff --git a/assets/FriendsView-cd50d063.css b/assets/FriendsView.css similarity index 100% rename from assets/FriendsView-cd50d063.css rename to assets/FriendsView.css diff --git a/assets/Group1-a4966f51.jpg b/assets/Group1.jpg similarity index 100% rename from assets/Group1-a4966f51.jpg rename to assets/Group1.jpg diff --git a/assets/Hiplot-13f0a215.png b/assets/Hiplot.png similarity index 100% rename from assets/Hiplot-13f0a215.png rename to assets/Hiplot.png diff --git a/assets/OmicsSuite-3D-d5ab85b2.png b/assets/OmicsSuite-3D.png similarity index 100% rename from assets/OmicsSuite-3D-d5ab85b2.png rename to assets/OmicsSuite-3D.png diff --git a/assets/OmicsSuite-Algorithm-46de366f.jpg b/assets/OmicsSuite-Algorithm.jpg similarity index 100% rename from assets/OmicsSuite-Algorithm-46de366f.jpg rename to assets/OmicsSuite-Algorithm.jpg diff --git a/assets/OmicsSuite-App-5b117857.png b/assets/OmicsSuite-App.png similarity index 100% rename from assets/OmicsSuite-App-5b117857.png rename to assets/OmicsSuite-App.png diff --git a/assets/OmicsSuite-Apps-f77d1a25.png b/assets/OmicsSuite-Apps.png similarity index 100% rename from assets/OmicsSuite-Apps-f77d1a25.png rename to assets/OmicsSuite-Apps.png diff --git a/assets/OmicsSuite-Desktop-c0c08ee7.png b/assets/OmicsSuite-Desktop.png similarity index 100% rename from assets/OmicsSuite-Desktop-c0c08ee7.png rename to assets/OmicsSuite-Desktop.png diff --git a/assets/OmicsSuite-Genomics-47102a84.jpg b/assets/OmicsSuite-Genomics.jpg similarity index 100% rename from assets/OmicsSuite-Genomics-47102a84.jpg rename to assets/OmicsSuite-Genomics.jpg diff --git a/assets/OmicsSuite-Home-d69adc49.png b/assets/OmicsSuite-Home.png similarity index 100% rename from assets/OmicsSuite-Home-d69adc49.png rename to assets/OmicsSuite-Home.png diff --git a/assets/OmicsSuite-Metabolomics-6274d2ed.jpg b/assets/OmicsSuite-Metabolomics.jpg similarity index 100% rename from assets/OmicsSuite-Metabolomics-6274d2ed.jpg rename to assets/OmicsSuite-Metabolomics.jpg diff --git a/assets/OmicsSuite-Microbe-3199fc92.png b/assets/OmicsSuite-Microbe.png similarity index 100% rename from assets/OmicsSuite-Microbe-3199fc92.png rename to assets/OmicsSuite-Microbe.png diff --git a/assets/OmicsSuite-Sequence-bf022155.jpg b/assets/OmicsSuite-Sequence.jpg similarity index 100% rename from assets/OmicsSuite-Sequence-bf022155.jpg rename to assets/OmicsSuite-Sequence.jpg diff --git a/assets/OmicsSuite-SingleCell-41f867e0.jpg b/assets/OmicsSuite-SingleCell.jpg similarity index 100% rename from assets/OmicsSuite-SingleCell-41f867e0.jpg rename to assets/OmicsSuite-SingleCell.jpg diff --git a/assets/OmicsSuite-Statistics-9ae30aa7.jpg b/assets/OmicsSuite-Statistics.jpg similarity index 100% rename from assets/OmicsSuite-Statistics-9ae30aa7.jpg rename to assets/OmicsSuite-Statistics.jpg diff --git a/assets/OmicsSuite-Transcriptomics-2f2a6c5c.jpg b/assets/OmicsSuite-Transcriptomics.jpg similarity index 100% rename from assets/OmicsSuite-Transcriptomics-2f2a6c5c.jpg rename to assets/OmicsSuite-Transcriptomics.jpg diff --git a/assets/OmicsSuite-UI-3fd3f0a7.png b/assets/OmicsSuite-UI.png similarity index 100% rename from assets/OmicsSuite-UI-3fd3f0a7.png rename to assets/OmicsSuite-UI.png diff --git a/assets/PublishView-1d57be64.css b/assets/PublishView-1d57be64.css deleted file mode 100644 index 75d4f7e..0000000 --- a/assets/PublishView-1d57be64.css +++ /dev/null @@ -1 +0,0 @@ -.el-header[data-v-c5773669]{padding:0;position:fixed;width:100%;z-index:100}.el-main[data-v-c5773669]{margin-top:60px;padding:0 20%}.el-footer[data-v-c5773669]{top:0;padding:0}.image-text-card[data-v-c5773669]{background-color:#fff;border-radius:10px;box-shadow:0 0 10px #cdcdcd;border:1px solid #cdcdcd;padding:10px}.card-title[data-v-c5773669]{font-size:1.2em;font-weight:700}.card-content[data-v-c5773669]{font-size:1em;text-align:justify;line-height:2em}@media (max-width: 1200px){.el-main[data-v-c5773669]{padding:0 10%}}@media (max-width: 800px){.el-main[data-v-c5773669]{padding:0 2%}} diff --git a/assets/PublishView-37445be7.js b/assets/PublishView-37445be7.js new file mode 100644 index 0000000..0b8f13b --- /dev/null +++ b/assets/PublishView-37445be7.js @@ -0,0 +1 @@ +import{_ as f,A as b,a as v}from"./index-387fbfa5.js";import{ah as a,o as w,c as y,V as s,P as o,a as e,ax as x,ay as S,T as l}from"./@vue-248d724b.js";import"./@splinetool-ead863f8.js";import"./vue-router-401d444e.js";import"./element-plus-bab1278a.js";import"./lodash-es-21c98b27.js";import"./@vueuse-89fc2c2e.js";import"./@element-plus-0de4ac96.js";import"./@popperjs-c75af06c.js";import"./@ctrl-f8748455.js";import"./dayjs-5c34775c.js";import"./async-validator-dee29e8b.js";import"./memoize-one-297ddbcb.js";import"./escape-html-64fe8e16.js";import"./normalize-wheel-es-ed76fb12.js";import"./@floating-ui-72671fae.js";import"./echarts-9ae96183.js";import"./zrender-e9104294.js";const k=""+new URL("Figure1.jpg",import.meta.url).href,O=""+new URL("Figure2.jpg",import.meta.url).href,A=""+new URL("Figure3.jpg",import.meta.url).href,C=""+new URL("Figure4.jpg",import.meta.url).href,T=""+new URL("Figure5.jpg",import.meta.url).href,F=""+new URL("Figure6.jpg",import.meta.url).href;const z={components:{AppHeader:b,AppFooter:v},data(){return{}},mounted(){},methods:{downloadOmicsSuite(){const n="https://sourceforge.net/projects/omicssuite-github-io/files/latest/download";window.open(n,"_blank")}}},t=n=>(x("data-v-54d5f00d"),n=n(),S(),n),G={class:"common-layout"},j={class:"page"},M=t(()=>e("br",null,null,-1)),R=t(()=>e("p",{style:{"font-size":"1.2em","font-weight":"bold",color:"#008888","text-align":"justify"}}," OmicsSuite: a customized and pipelined suite for analysis and visualization of multi-omics big data. ",-1)),B=t(()=>e("br",null,null,-1)),I=t(()=>e("div",{class:"image-text-card"},[e("p",{class:"card-title"},"Abstract:"),e("p",{class:"card-content"}," With the advancements in high-throughput sequencing technologies such as Illumina, PacBio, and 10X Genomics platforms, and gas/liquid chromatography-mass spectrometry, large volumes of biological data in multiple formats can now be obtained through multi-omics analysis. Bioinformatics is constantly evolving and seeking breakthroughs to solve multi-omics problems, however it is challenging for most experimental biologists to analyze data using command-line interfaces, coding, and scripting. Based on experience with multi-omics, we have developed OmicsSuite, a desktop suite that comprehensively integrates statistics and multi-omics analysis and visualization. The suite has 175 sub-applications in 12 categories, including Sequence, Statistics, Algorithm, Genomics, Transcriptomics, Enrichment, Proteomics, Metabolomics, Clinical, Microorganism, Single Cell, and Table Operation. We created the user interface with Sequence View, Table View, and intelligent components based on JavaFX and the popular Shiny framework. The multi-omics analysis functions were developed based on BioJava and 300+ packages provided by the R CRAN and Bioconductor communities, and it encompasses over 3,000 adjustable parameter interfaces. OmicsSuite can directly read multi-omics raw data in FastA, FastQ, MAF, mzML, Matrix, and HDF5 formats, and the programs emphasize data transfer directions and pipeline analysis functions. OmicsSuite can produce pre-publication images and tables, allowing users to focus on biological aspects. OmicsSuite offers multi-omics step-by-step workflows that can be easily applied to horticultural plant breeding and molecular mechanism studies in plants. It enables researchers to freely explore the molecular information contained in multi-omics big data (Source: https://github.com/OmicsSuite/, Website: https://omicssuite.github.io, v1.3.9). ")],-1)),U=t(()=>e("br",null,null,-1)),V=t(()=>e("p",{style:{"font-size":"1.2em","font-weight":"bold","text-align":"justify"}},[l("Ben-ben Miao, Wei Dong, Yi-xin Gu, Zhao-fang Han, Xuan Luo, Cai-huan Ke, Wei-wei You, OmicsSuite: a customized and pipelined suite for analysis and visualization of multi-omics big data, "),e("i",null,"Horticulture Research"),l(", 2023;, uhad195, "),e("a",{href:"https://doi.org/10.1093/hr/uhad195",target:"_blank",style:{color:"#008888"}},"https://doi.org/10.1093/hr/uhad195"),l(". ")],-1)),L=t(()=>e("br",null,null,-1)),P=t(()=>e("p",{style:{"font-size":"2em","font-weight":"bold",color:"#000000"}}," Results: ",-1)),W={class:"image-text-card"},q=t(()=>e("p",{class:"card-title"},"1. OmicsSuite Architecture:",-1)),H=t(()=>e("p",{class:"card-content"}," OmicsSuite is an innovative framework for analyzing and visualizing multi-omics data in a workflow. The JavaFX library provides user interface (UI) control methods, parameter component classes, web engine support, and other interface display and friendly interaction functions through a series of sub-libraries such as javafx-controls, javafx-graphics, and javafx-web. ",-1)),X=t(()=>e("img",{src:k,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),E=t(()=>e("br",null,null,-1)),N={class:"image-text-card"},J=t(()=>e("p",{class:"card-title"},"2. User Interface:",-1)),$=t(()=>e("p",{class:"card-content"}," OmicsSuite has redesigned the UI of JavaFX to provide a modern and improved operating experience for users. The default layout features a multi-level menu bar at the top of the window, a shortcut access bar at the bottom, a collapsible toolbox on the left, a home page in the middle, and a meta information and version update record panel on the right. When a sub-application is started, the layout will switch to the user interface, with the analysis page of the application in the middle and application details information on the right. ",-1)),D=t(()=>e("img",{src:O,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),Y=t(()=>e("br",null,null,-1)),K={class:"image-text-card"},Q=t(()=>e("p",{class:"card-title"},"3. Sub-applications Overview:",-1)),Z=t(()=>e("p",{class:"card-content"}," Bioinformatics encompasses biology (such as multi-omics) and methodology (such as statistics and advanced algorithms). Therefore, OmicsSuite continuously improves multi-omics analysis and visualization functions based on the foundation of statistical analysis, providing users with a comprehensive one-stop solution. Currently, there are 12 categories with 175 sub-applications. The categories are: Sequence, Statistics, Algorithm, Genomics, Transcriptomics, Enrichment, Proteomics, Metabolomics, Clinical, Microorganisms, Single Cell, and Table Operation. ",-1)),ee=t(()=>e("img",{src:A,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),te=t(()=>e("br",null,null,-1)),se={class:"image-text-card"},oe=t(()=>e("p",{class:"card-title"},"4. Omics Genomics:",-1)),ie=t(()=>e("p",{class:"card-content"}," OmicsSuite has developed four types of genome circle maps based on the Rcircos and chloroplot packages to assist users in visualizing the genome. MitoGenome (Mitochondrial Genome) can parse GenBank-formatted mitochondrial genome information and display the GC content of each gene and of pseudogene markers. ChloroplastGenome (Chloroplast Genome) provides support for displaying the GC content of inverted repeat sequences (IRA/IRB), GC content of genes, pseudogene markers, and InDel information. ",-1)),ae=t(()=>e("img",{src:C,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),ne=t(()=>e("br",null,null,-1)),re={class:"image-text-card"},le=t(()=>e("p",{class:"card-title"},"5. Omics Transcriptomics:",-1)),ce=t(()=>e("p",{class:"card-content"}," VolcanoPlot and MversusA (MAplot) (combined names) can intuitively display the differentially expressed genes between paired groups. ExpressionTrends (Expression Trends) can display the linear trajectories of all genes in multiple groups, making it convenient to observe the expression trends of genes with traits. Similarly, WGCNA performs a weighted gene co-expression network analysis, taking multiple-group gene expression data as input. ",-1)),de=t(()=>e("img",{src:T,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),pe=t(()=>e("br",null,null,-1)),ue={class:"image-text-card"},me=t(()=>e("p",{class:"card-title"},"6. SingleCell Omics:",-1)),he=t(()=>e("p",{class:"card-content"}," OmicsSuite has developed a pipeline and interactive suite of 22 sub-applications for single-cell transcriptomics based on packages such as Seurat v4 and Monocle2 that provide interfaces for almost all parameters. The 10X Genomics raw data is output in Matrix format after being processed by Chromium, and the results can be read by all sub-applications and entered into the corresponding analysis steps. ",-1)),_e=t(()=>e("img",{src:F,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),ge=t(()=>e("br",null,null,-1));function fe(n,be,ve,we,ye,xe){const c=a("AppHeader"),d=a("el-header"),p=a("el-alert"),i=a("el-col"),r=a("el-row"),u=a("el-main"),m=a("AppFooter"),h=a("el-footer"),_=a("el-container"),g=a("el-backtop");return w(),y("div",G,[s(_,null,{default:o(()=>[s(d,null,{default:o(()=>[s(c)]),_:1}),s(u,null,{default:o(()=>[e("div",j,[e("div",null,[M,R,B,I,U,s(p,{title:"Citation: OmicsSuite",type:"warning","show-icon":"",closable:!1},{default:o(()=>[V]),_:1})]),e("div",null,[L,P,e("div",W,[s(r,{gutter:20},{default:o(()=>[s(i,{span:24,sm:8,lg:8},{default:o(()=>[q,H]),_:1}),s(i,{span:24,sm:16,lg:16},{default:o(()=>[X]),_:1})]),_:1})]),E,e("div",N,[s(r,{gutter:20},{default:o(()=>[s(i,{span:24,sm:8,lg:8},{default:o(()=>[J,$]),_:1}),s(i,{span:24,sm:16,lg:16},{default:o(()=>[D]),_:1})]),_:1})]),Y,e("div",K,[s(r,{gutter:20},{default:o(()=>[s(i,{span:24,sm:8,lg:8},{default:o(()=>[Q,Z]),_:1}),s(i,{span:24,sm:16,lg:16},{default:o(()=>[ee]),_:1})]),_:1})]),te,e("div",se,[s(r,{gutter:20},{default:o(()=>[s(i,{span:24,sm:8,lg:8},{default:o(()=>[oe,ie]),_:1}),s(i,{span:24,sm:16,lg:16},{default:o(()=>[ae]),_:1})]),_:1})]),ne,e("div",re,[s(r,{gutter:20},{default:o(()=>[s(i,{span:24,sm:8,lg:8},{default:o(()=>[le,ce]),_:1}),s(i,{span:24,sm:16,lg:16},{default:o(()=>[de]),_:1})]),_:1})]),pe,e("div",ue,[s(r,{gutter:20},{default:o(()=>[s(i,{span:24,sm:8,lg:8},{default:o(()=>[me,he]),_:1}),s(i,{span:24,sm:16,lg:16},{default:o(()=>[_e]),_:1})]),_:1})]),ge])])]),_:1}),s(h,null,{default:o(()=>[s(m)]),_:1})]),_:1}),s(g,{right:50,bottom:100})])}const We=f(z,[["render",fe],["__scopeId","data-v-54d5f00d"]]);export{We as default}; diff --git a/assets/PublishView-4ecbf10f.js b/assets/PublishView-4ecbf10f.js deleted file mode 100644 index 533c03d..0000000 --- a/assets/PublishView-4ecbf10f.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as f,A as b,a as v}from"./index-eab933a6.js";import{ah as a,o as y,c as w,V as s,P as o,a as e,ax as x,ay as S,T as r}from"./@vue-248d724b.js";import"./@splinetool-99227827.js";import"./vue-router-401d444e.js";import"./element-plus-ab7336d6.js";import"./lodash-es-21c98b27.js";import"./@vueuse-89fc2c2e.js";import"./@element-plus-0de4ac96.js";import"./@popperjs-c75af06c.js";import"./@ctrl-f8748455.js";import"./dayjs-5c34775c.js";import"./async-validator-dee29e8b.js";import"./memoize-one-297ddbcb.js";import"./escape-html-64fe8e16.js";import"./normalize-wheel-es-ed76fb12.js";import"./@floating-ui-72671fae.js";import"./echarts-9ae96183.js";import"./zrender-e9104294.js";const k="/assets/Figure1-689192d4.jpg",O="/assets/Figure2-83c38a53.jpg",A="/assets/Figure3-3cc63776.jpg",C="/assets/Figure4-85c07b64.jpg",T="/assets/Figure5-5e8eecc7.jpg",F="/assets/Figure6-a91100be.jpg";const z={components:{AppHeader:b,AppFooter:v},data(){return{}},mounted(){},methods:{downloadOmicsSuite(){const n="https://sourceforge.net/projects/omicssuite-github-io/files/latest/download";window.open(n,"_blank")}}},t=n=>(x("data-v-54d5f00d"),n=n(),S(),n),G={class:"common-layout"},j={class:"page"},M=t(()=>e("br",null,null,-1)),B=t(()=>e("p",{style:{"font-size":"1.2em","font-weight":"bold",color:"#008888","text-align":"justify"}}," OmicsSuite: a customized and pipelined suite for analysis and visualization of multi-omics big data. ",-1)),I=t(()=>e("br",null,null,-1)),V=t(()=>e("div",{class:"image-text-card"},[e("p",{class:"card-title"},"Abstract:"),e("p",{class:"card-content"}," With the advancements in high-throughput sequencing technologies such as Illumina, PacBio, and 10X Genomics platforms, and gas/liquid chromatography-mass spectrometry, large volumes of biological data in multiple formats can now be obtained through multi-omics analysis. Bioinformatics is constantly evolving and seeking breakthroughs to solve multi-omics problems, however it is challenging for most experimental biologists to analyze data using command-line interfaces, coding, and scripting. Based on experience with multi-omics, we have developed OmicsSuite, a desktop suite that comprehensively integrates statistics and multi-omics analysis and visualization. The suite has 175 sub-applications in 12 categories, including Sequence, Statistics, Algorithm, Genomics, Transcriptomics, Enrichment, Proteomics, Metabolomics, Clinical, Microorganism, Single Cell, and Table Operation. We created the user interface with Sequence View, Table View, and intelligent components based on JavaFX and the popular Shiny framework. The multi-omics analysis functions were developed based on BioJava and 300+ packages provided by the R CRAN and Bioconductor communities, and it encompasses over 3,000 adjustable parameter interfaces. OmicsSuite can directly read multi-omics raw data in FastA, FastQ, MAF, mzML, Matrix, and HDF5 formats, and the programs emphasize data transfer directions and pipeline analysis functions. OmicsSuite can produce pre-publication images and tables, allowing users to focus on biological aspects. OmicsSuite offers multi-omics step-by-step workflows that can be easily applied to horticultural plant breeding and molecular mechanism studies in plants. It enables researchers to freely explore the molecular information contained in multi-omics big data (Source: https://github.com/OmicsSuite/, Website: https://omicssuite.github.io, v1.3.9). ")],-1)),P=t(()=>e("br",null,null,-1)),R=t(()=>e("p",{style:{"font-size":"1.2em","font-weight":"bold","text-align":"justify"}},[r("Ben-ben Miao, Wei Dong, Yi-xin Gu, Zhao-fang Han, Xuan Luo, Cai-huan Ke, Wei-wei You, OmicsSuite: a customized and pipelined suite for analysis and visualization of multi-omics big data, "),e("i",null,"Horticulture Research"),r(", 2023;, uhad195, "),e("a",{href:"https://doi.org/10.1093/hr/uhad195",target:"_blank",style:{color:"#008888"}},"https://doi.org/10.1093/hr/uhad195"),r(". ")],-1)),W=t(()=>e("br",null,null,-1)),q=t(()=>e("p",{style:{"font-size":"2em","font-weight":"bold",color:"#000000"}}," Results: ",-1)),H={class:"image-text-card"},X=t(()=>e("p",{class:"card-title"},"1. OmicsSuite Architecture:",-1)),E=t(()=>e("p",{class:"card-content"}," OmicsSuite is an innovative framework for analyzing and visualizing multi-omics data in a workflow. The JavaFX library provides user interface (UI) control methods, parameter component classes, web engine support, and other interface display and friendly interaction functions through a series of sub-libraries such as javafx-controls, javafx-graphics, and javafx-web. ",-1)),N=t(()=>e("img",{src:k,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),J=t(()=>e("br",null,null,-1)),$={class:"image-text-card"},D=t(()=>e("p",{class:"card-title"},"2. User Interface:",-1)),U=t(()=>e("p",{class:"card-content"}," OmicsSuite has redesigned the UI of JavaFX to provide a modern and improved operating experience for users. The default layout features a multi-level menu bar at the top of the window, a shortcut access bar at the bottom, a collapsible toolbox on the left, a home page in the middle, and a meta information and version update record panel on the right. When a sub-application is started, the layout will switch to the user interface, with the analysis page of the application in the middle and application details information on the right. ",-1)),L=t(()=>e("img",{src:O,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),Y=t(()=>e("br",null,null,-1)),K={class:"image-text-card"},Q=t(()=>e("p",{class:"card-title"},"3. Sub-applications Overview:",-1)),Z=t(()=>e("p",{class:"card-content"}," Bioinformatics encompasses biology (such as multi-omics) and methodology (such as statistics and advanced algorithms). Therefore, OmicsSuite continuously improves multi-omics analysis and visualization functions based on the foundation of statistical analysis, providing users with a comprehensive one-stop solution. Currently, there are 12 categories with 175 sub-applications. The categories are: Sequence, Statistics, Algorithm, Genomics, Transcriptomics, Enrichment, Proteomics, Metabolomics, Clinical, Microorganisms, Single Cell, and Table Operation. ",-1)),ee=t(()=>e("img",{src:A,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),te=t(()=>e("br",null,null,-1)),se={class:"image-text-card"},oe=t(()=>e("p",{class:"card-title"},"4. Omics Genomics:",-1)),ie=t(()=>e("p",{class:"card-content"}," OmicsSuite has developed four types of genome circle maps based on the Rcircos and chloroplot packages to assist users in visualizing the genome. MitoGenome (Mitochondrial Genome) can parse GenBank-formatted mitochondrial genome information and display the GC content of each gene and of pseudogene markers. ChloroplastGenome (Chloroplast Genome) provides support for displaying the GC content of inverted repeat sequences (IRA/IRB), GC content of genes, pseudogene markers, and InDel information. ",-1)),ae=t(()=>e("img",{src:C,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),ne=t(()=>e("br",null,null,-1)),le={class:"image-text-card"},re=t(()=>e("p",{class:"card-title"},"5. Omics Transcriptomics:",-1)),ce=t(()=>e("p",{class:"card-content"}," VolcanoPlot and MversusA (MAplot) (combined names) can intuitively display the differentially expressed genes between paired groups. ExpressionTrends (Expression Trends) can display the linear trajectories of all genes in multiple groups, making it convenient to observe the expression trends of genes with traits. Similarly, WGCNA performs a weighted gene co-expression network analysis, taking multiple-group gene expression data as input. ",-1)),de=t(()=>e("img",{src:T,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),pe=t(()=>e("br",null,null,-1)),ue={class:"image-text-card"},me=t(()=>e("p",{class:"card-title"},"6. SingleCell Omics:",-1)),he=t(()=>e("p",{class:"card-content"}," OmicsSuite has developed a pipeline and interactive suite of 22 sub-applications for single-cell transcriptomics based on packages such as Seurat v4 and Monocle2 that provide interfaces for almost all parameters. The 10X Genomics raw data is output in Matrix format after being processed by Chromium, and the results can be read by all sub-applications and entered into the corresponding analysis steps. ",-1)),_e=t(()=>e("img",{src:F,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),ge=t(()=>e("br",null,null,-1));function fe(n,be,ve,ye,we,xe){const c=a("AppHeader"),d=a("el-header"),p=a("el-alert"),i=a("el-col"),l=a("el-row"),u=a("el-main"),m=a("AppFooter"),h=a("el-footer"),_=a("el-container"),g=a("el-backtop");return y(),w("div",G,[s(_,null,{default:o(()=>[s(d,null,{default:o(()=>[s(c)]),_:1}),s(u,null,{default:o(()=>[e("div",j,[e("div",null,[M,B,I,V,P,s(p,{title:"Citation: OmicsSuite",type:"warning","show-icon":"",closable:!1},{default:o(()=>[R]),_:1})]),e("div",null,[W,q,e("div",H,[s(l,{gutter:20},{default:o(()=>[s(i,{span:24,sm:8,lg:8},{default:o(()=>[X,E]),_:1}),s(i,{span:24,sm:16,lg:16},{default:o(()=>[N]),_:1})]),_:1})]),J,e("div",$,[s(l,{gutter:20},{default:o(()=>[s(i,{span:24,sm:8,lg:8},{default:o(()=>[D,U]),_:1}),s(i,{span:24,sm:16,lg:16},{default:o(()=>[L]),_:1})]),_:1})]),Y,e("div",K,[s(l,{gutter:20},{default:o(()=>[s(i,{span:24,sm:8,lg:8},{default:o(()=>[Q,Z]),_:1}),s(i,{span:24,sm:16,lg:16},{default:o(()=>[ee]),_:1})]),_:1})]),te,e("div",se,[s(l,{gutter:20},{default:o(()=>[s(i,{span:24,sm:8,lg:8},{default:o(()=>[oe,ie]),_:1}),s(i,{span:24,sm:16,lg:16},{default:o(()=>[ae]),_:1})]),_:1})]),ne,e("div",le,[s(l,{gutter:20},{default:o(()=>[s(i,{span:24,sm:8,lg:8},{default:o(()=>[re,ce]),_:1}),s(i,{span:24,sm:16,lg:16},{default:o(()=>[de]),_:1})]),_:1})]),pe,e("div",ue,[s(l,{gutter:20},{default:o(()=>[s(i,{span:24,sm:8,lg:8},{default:o(()=>[me,he]),_:1}),s(i,{span:24,sm:16,lg:16},{default:o(()=>[_e]),_:1})]),_:1})]),ge])])]),_:1}),s(h,null,{default:o(()=>[s(m)]),_:1})]),_:1}),s(g,{right:50,bottom:100})])}const He=f(z,[["render",fe],["__scopeId","data-v-54d5f00d"]]);export{He as default}; diff --git a/assets/PublishView-6b0529cb.js b/assets/PublishView-6b0529cb.js deleted file mode 100644 index c766003..0000000 --- a/assets/PublishView-6b0529cb.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as f,A as b,a as v}from"./index-d094e413.js";import{ah as a,o as y,c as w,V as s,P as o,a as e,ax as x,ay as S,T as r}from"./@vue-248d724b.js";import"./@splinetool-99227827.js";import"./vue-router-401d444e.js";import"./element-plus-ab7336d6.js";import"./lodash-es-21c98b27.js";import"./@vueuse-89fc2c2e.js";import"./@element-plus-0de4ac96.js";import"./@popperjs-c75af06c.js";import"./@ctrl-f8748455.js";import"./dayjs-5c34775c.js";import"./async-validator-dee29e8b.js";import"./memoize-one-297ddbcb.js";import"./escape-html-64fe8e16.js";import"./normalize-wheel-es-ed76fb12.js";import"./@floating-ui-72671fae.js";import"./echarts-9ae96183.js";import"./zrender-e9104294.js";const k="/assets/Figure1-689192d4.jpg",O="/assets/Figure2-83c38a53.jpg",A="/assets/Figure3-3cc63776.jpg",C="/assets/Figure4-85c07b64.jpg",T="/assets/Figure5-5e8eecc7.jpg",F="/assets/Figure6-a91100be.jpg";const z={components:{AppHeader:b,AppFooter:v},data(){return{}},mounted(){},methods:{downloadOmicsSuite(){const n="https://sourceforge.net/projects/omicssuite-github-io/files/latest/download";window.open(n,"_blank")}}},t=n=>(x("data-v-54d5f00d"),n=n(),S(),n),G={class:"common-layout"},j={class:"page"},M=t(()=>e("br",null,null,-1)),B=t(()=>e("p",{style:{"font-size":"1.2em","font-weight":"bold",color:"#008888","text-align":"justify"}}," OmicsSuite: a customized and pipelined suite for analysis and visualization of multi-omics big data. ",-1)),I=t(()=>e("br",null,null,-1)),V=t(()=>e("div",{class:"image-text-card"},[e("p",{class:"card-title"},"Abstract:"),e("p",{class:"card-content"}," With the advancements in high-throughput sequencing technologies such as Illumina, PacBio, and 10X Genomics platforms, and gas/liquid chromatography-mass spectrometry, large volumes of biological data in multiple formats can now be obtained through multi-omics analysis. Bioinformatics is constantly evolving and seeking breakthroughs to solve multi-omics problems, however it is challenging for most experimental biologists to analyze data using command-line interfaces, coding, and scripting. Based on experience with multi-omics, we have developed OmicsSuite, a desktop suite that comprehensively integrates statistics and multi-omics analysis and visualization. The suite has 175 sub-applications in 12 categories, including Sequence, Statistics, Algorithm, Genomics, Transcriptomics, Enrichment, Proteomics, Metabolomics, Clinical, Microorganism, Single Cell, and Table Operation. We created the user interface with Sequence View, Table View, and intelligent components based on JavaFX and the popular Shiny framework. The multi-omics analysis functions were developed based on BioJava and 300+ packages provided by the R CRAN and Bioconductor communities, and it encompasses over 3,000 adjustable parameter interfaces. OmicsSuite can directly read multi-omics raw data in FastA, FastQ, MAF, mzML, Matrix, and HDF5 formats, and the programs emphasize data transfer directions and pipeline analysis functions. OmicsSuite can produce pre-publication images and tables, allowing users to focus on biological aspects. OmicsSuite offers multi-omics step-by-step workflows that can be easily applied to horticultural plant breeding and molecular mechanism studies in plants. It enables researchers to freely explore the molecular information contained in multi-omics big data (Source: https://github.com/OmicsSuite/, Website: https://omicssuite.github.io, v1.3.9). ")],-1)),P=t(()=>e("br",null,null,-1)),R=t(()=>e("p",{style:{"font-size":"1.2em","font-weight":"bold","text-align":"justify"}},[r("Ben-ben Miao, Wei Dong, Yi-xin Gu, Zhao-fang Han, Xuan Luo, Cai-huan Ke, Wei-wei You, OmicsSuite: a customized and pipelined suite for analysis and visualization of multi-omics big data, "),e("i",null,"Horticulture Research"),r(", 2023;, uhad195, "),e("a",{href:"https://doi.org/10.1093/hr/uhad195",target:"_blank",style:{color:"#008888"}},"https://doi.org/10.1093/hr/uhad195"),r(". ")],-1)),W=t(()=>e("br",null,null,-1)),q=t(()=>e("p",{style:{"font-size":"2em","font-weight":"bold",color:"#000000"}}," Results: ",-1)),H={class:"image-text-card"},X=t(()=>e("p",{class:"card-title"},"1. OmicsSuite Architecture:",-1)),E=t(()=>e("p",{class:"card-content"}," OmicsSuite is an innovative framework for analyzing and visualizing multi-omics data in a workflow. The JavaFX library provides user interface (UI) control methods, parameter component classes, web engine support, and other interface display and friendly interaction functions through a series of sub-libraries such as javafx-controls, javafx-graphics, and javafx-web. ",-1)),N=t(()=>e("img",{src:k,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),J=t(()=>e("br",null,null,-1)),$={class:"image-text-card"},D=t(()=>e("p",{class:"card-title"},"2. User Interface:",-1)),U=t(()=>e("p",{class:"card-content"}," OmicsSuite has redesigned the UI of JavaFX to provide a modern and improved operating experience for users. The default layout features a multi-level menu bar at the top of the window, a shortcut access bar at the bottom, a collapsible toolbox on the left, a home page in the middle, and a meta information and version update record panel on the right. When a sub-application is started, the layout will switch to the user interface, with the analysis page of the application in the middle and application details information on the right. ",-1)),L=t(()=>e("img",{src:O,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),Y=t(()=>e("br",null,null,-1)),K={class:"image-text-card"},Q=t(()=>e("p",{class:"card-title"},"3. Sub-applications Overview:",-1)),Z=t(()=>e("p",{class:"card-content"}," Bioinformatics encompasses biology (such as multi-omics) and methodology (such as statistics and advanced algorithms). Therefore, OmicsSuite continuously improves multi-omics analysis and visualization functions based on the foundation of statistical analysis, providing users with a comprehensive one-stop solution. Currently, there are 12 categories with 175 sub-applications. The categories are: Sequence, Statistics, Algorithm, Genomics, Transcriptomics, Enrichment, Proteomics, Metabolomics, Clinical, Microorganisms, Single Cell, and Table Operation. ",-1)),ee=t(()=>e("img",{src:A,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),te=t(()=>e("br",null,null,-1)),se={class:"image-text-card"},oe=t(()=>e("p",{class:"card-title"},"4. Omics Genomics:",-1)),ie=t(()=>e("p",{class:"card-content"}," OmicsSuite has developed four types of genome circle maps based on the Rcircos and chloroplot packages to assist users in visualizing the genome. MitoGenome (Mitochondrial Genome) can parse GenBank-formatted mitochondrial genome information and display the GC content of each gene and of pseudogene markers. ChloroplastGenome (Chloroplast Genome) provides support for displaying the GC content of inverted repeat sequences (IRA/IRB), GC content of genes, pseudogene markers, and InDel information. ",-1)),ae=t(()=>e("img",{src:C,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),ne=t(()=>e("br",null,null,-1)),le={class:"image-text-card"},re=t(()=>e("p",{class:"card-title"},"5. Omics Transcriptomics:",-1)),ce=t(()=>e("p",{class:"card-content"}," VolcanoPlot and MversusA (MAplot) (combined names) can intuitively display the differentially expressed genes between paired groups. ExpressionTrends (Expression Trends) can display the linear trajectories of all genes in multiple groups, making it convenient to observe the expression trends of genes with traits. Similarly, WGCNA performs a weighted gene co-expression network analysis, taking multiple-group gene expression data as input. ",-1)),de=t(()=>e("img",{src:T,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),pe=t(()=>e("br",null,null,-1)),ue={class:"image-text-card"},me=t(()=>e("p",{class:"card-title"},"6. SingleCell Omics:",-1)),he=t(()=>e("p",{class:"card-content"}," OmicsSuite has developed a pipeline and interactive suite of 22 sub-applications for single-cell transcriptomics based on packages such as Seurat v4 and Monocle2 that provide interfaces for almost all parameters. The 10X Genomics raw data is output in Matrix format after being processed by Chromium, and the results can be read by all sub-applications and entered into the corresponding analysis steps. ",-1)),_e=t(()=>e("img",{src:F,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),ge=t(()=>e("br",null,null,-1));function fe(n,be,ve,ye,we,xe){const c=a("AppHeader"),d=a("el-header"),p=a("el-alert"),i=a("el-col"),l=a("el-row"),u=a("el-main"),m=a("AppFooter"),h=a("el-footer"),_=a("el-container"),g=a("el-backtop");return y(),w("div",G,[s(_,null,{default:o(()=>[s(d,null,{default:o(()=>[s(c)]),_:1}),s(u,null,{default:o(()=>[e("div",j,[e("div",null,[M,B,I,V,P,s(p,{title:"Citation: OmicsSuite",type:"warning","show-icon":"",closable:!1},{default:o(()=>[R]),_:1})]),e("div",null,[W,q,e("div",H,[s(l,{gutter:20},{default:o(()=>[s(i,{span:24,sm:8,lg:8},{default:o(()=>[X,E]),_:1}),s(i,{span:24,sm:16,lg:16},{default:o(()=>[N]),_:1})]),_:1})]),J,e("div",$,[s(l,{gutter:20},{default:o(()=>[s(i,{span:24,sm:8,lg:8},{default:o(()=>[D,U]),_:1}),s(i,{span:24,sm:16,lg:16},{default:o(()=>[L]),_:1})]),_:1})]),Y,e("div",K,[s(l,{gutter:20},{default:o(()=>[s(i,{span:24,sm:8,lg:8},{default:o(()=>[Q,Z]),_:1}),s(i,{span:24,sm:16,lg:16},{default:o(()=>[ee]),_:1})]),_:1})]),te,e("div",se,[s(l,{gutter:20},{default:o(()=>[s(i,{span:24,sm:8,lg:8},{default:o(()=>[oe,ie]),_:1}),s(i,{span:24,sm:16,lg:16},{default:o(()=>[ae]),_:1})]),_:1})]),ne,e("div",le,[s(l,{gutter:20},{default:o(()=>[s(i,{span:24,sm:8,lg:8},{default:o(()=>[re,ce]),_:1}),s(i,{span:24,sm:16,lg:16},{default:o(()=>[de]),_:1})]),_:1})]),pe,e("div",ue,[s(l,{gutter:20},{default:o(()=>[s(i,{span:24,sm:8,lg:8},{default:o(()=>[me,he]),_:1}),s(i,{span:24,sm:16,lg:16},{default:o(()=>[_e]),_:1})]),_:1})]),ge])])]),_:1}),s(h,null,{default:o(()=>[s(m)]),_:1})]),_:1}),s(g,{right:50,bottom:100})])}const He=f(z,[["render",fe],["__scopeId","data-v-54d5f00d"]]);export{He as default}; diff --git a/assets/PublishView-aac6c42f.js b/assets/PublishView-aac6c42f.js deleted file mode 100644 index 5095f2a..0000000 --- a/assets/PublishView-aac6c42f.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as f,A as b,a as v}from"./index-82148c11.js";import{ah as a,o as y,c as w,V as s,P as o,a as e,ax as x,ay as S,T as r}from"./@vue-248d724b.js";import"./vue-router-401d444e.js";import"./element-plus-ab7336d6.js";import"./lodash-es-21c98b27.js";import"./@vueuse-89fc2c2e.js";import"./@element-plus-0de4ac96.js";import"./@popperjs-c75af06c.js";import"./@ctrl-f8748455.js";import"./dayjs-5c34775c.js";import"./async-validator-dee29e8b.js";import"./memoize-one-297ddbcb.js";import"./escape-html-64fe8e16.js";import"./normalize-wheel-es-ed76fb12.js";import"./@floating-ui-72671fae.js";import"./echarts-9ae96183.js";import"./zrender-e9104294.js";const k="/assets/Figure1-689192d4.jpg",O="/assets/Figure2-83c38a53.jpg",A="/assets/Figure3-3cc63776.jpg",C="/assets/Figure4-85c07b64.jpg",T="/assets/Figure5-5e8eecc7.jpg",F="/assets/Figure6-a91100be.jpg";const z={components:{AppHeader:b,AppFooter:v},data(){return{}},mounted(){},methods:{downloadOmicsSuite(){const n="https://sourceforge.net/projects/omicssuite-github-io/files/latest/download";window.open(n,"_blank")}}},t=n=>(x("data-v-c5773669"),n=n(),S(),n),G={class:"common-layout"},j=t(()=>e("br",null,null,-1)),M=t(()=>e("p",{style:{"font-size":"1.2em","font-weight":"bold",color:"#008888","text-align":"justify"}}," OmicsSuite: a customized and pipelined suite for analysis and visualization of multi-omics big data. ",-1)),B=t(()=>e("br",null,null,-1)),I=t(()=>e("div",{class:"image-text-card"},[e("p",{class:"card-title"},"Abstract:"),e("p",{class:"card-content"}," With the advancements in high-throughput sequencing technologies such as Illumina, PacBio, and 10X Genomics platforms, and gas/liquid chromatography-mass spectrometry, large volumes of biological data in multiple formats can now be obtained through multi-omics analysis. Bioinformatics is constantly evolving and seeking breakthroughs to solve multi-omics problems, however it is challenging for most experimental biologists to analyze data using command-line interfaces, coding, and scripting. Based on experience with multi-omics, we have developed OmicsSuite, a desktop suite that comprehensively integrates statistics and multi-omics analysis and visualization. The suite has 175 sub-applications in 12 categories, including Sequence, Statistics, Algorithm, Genomics, Transcriptomics, Enrichment, Proteomics, Metabolomics, Clinical, Microorganism, Single Cell, and Table Operation. We created the user interface with Sequence View, Table View, and intelligent components based on JavaFX and the popular Shiny framework. The multi-omics analysis functions were developed based on BioJava and 300+ packages provided by the R CRAN and Bioconductor communities, and it encompasses over 3,000 adjustable parameter interfaces. OmicsSuite can directly read multi-omics raw data in FastA, FastQ, MAF, mzML, Matrix, and HDF5 formats, and the programs emphasize data transfer directions and pipeline analysis functions. OmicsSuite can produce pre-publication images and tables, allowing users to focus on biological aspects. OmicsSuite offers multi-omics step-by-step workflows that can be easily applied to horticultural plant breeding and molecular mechanism studies in plants. It enables researchers to freely explore the molecular information contained in multi-omics big data (Source: https://github.com/OmicsSuite/, Website: https://omicssuite.github.io, v1.3.9). ")],-1)),V=t(()=>e("br",null,null,-1)),P=t(()=>e("p",{style:{"font-size":"1.2em","font-weight":"bold","text-align":"justify"}},[r("Ben-ben Miao, Wei Dong, Yi-xin Gu, Zhao-fang Han, Xuan Luo, Cai-huan Ke, Wei-wei You, OmicsSuite: a customized and pipelined suite for analysis and visualization of multi-omics big data, "),e("i",null,"Horticulture Research"),r(", 2023;, uhad195, "),e("a",{href:"https://doi.org/10.1093/hr/uhad195",target:"_blank",style:{color:"#008888"}},"https://doi.org/10.1093/hr/uhad195"),r(". ")],-1)),R=t(()=>e("br",null,null,-1)),W=t(()=>e("p",{style:{"font-size":"2em","font-weight":"bold",color:"#000000"}}," Results: ",-1)),q={class:"image-text-card"},H=t(()=>e("p",{class:"card-title"},"1. OmicsSuite Architecture:",-1)),X=t(()=>e("p",{class:"card-content"}," OmicsSuite is an innovative framework for analyzing and visualizing multi-omics data in a workflow. The JavaFX library provides user interface (UI) control methods, parameter component classes, web engine support, and other interface display and friendly interaction functions through a series of sub-libraries such as javafx-controls, javafx-graphics, and javafx-web. ",-1)),E=t(()=>e("img",{src:k,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),N=t(()=>e("br",null,null,-1)),J={class:"image-text-card"},$=t(()=>e("p",{class:"card-title"},"2. User Interface:",-1)),D=t(()=>e("p",{class:"card-content"}," OmicsSuite has redesigned the UI of JavaFX to provide a modern and improved operating experience for users. The default layout features a multi-level menu bar at the top of the window, a shortcut access bar at the bottom, a collapsible toolbox on the left, a home page in the middle, and a meta information and version update record panel on the right. When a sub-application is started, the layout will switch to the user interface, with the analysis page of the application in the middle and application details information on the right. ",-1)),U=t(()=>e("img",{src:O,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),L=t(()=>e("br",null,null,-1)),Y={class:"image-text-card"},K=t(()=>e("p",{class:"card-title"},"3. Sub-applications Overview:",-1)),Q=t(()=>e("p",{class:"card-content"}," Bioinformatics encompasses biology (such as multi-omics) and methodology (such as statistics and advanced algorithms). Therefore, OmicsSuite continuously improves multi-omics analysis and visualization functions based on the foundation of statistical analysis, providing users with a comprehensive one-stop solution. Currently, there are 12 categories with 175 sub-applications. The categories are: Sequence, Statistics, Algorithm, Genomics, Transcriptomics, Enrichment, Proteomics, Metabolomics, Clinical, Microorganisms, Single Cell, and Table Operation. ",-1)),Z=t(()=>e("img",{src:A,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),ee=t(()=>e("br",null,null,-1)),te={class:"image-text-card"},se=t(()=>e("p",{class:"card-title"},"4. Omics Genomics:",-1)),oe=t(()=>e("p",{class:"card-content"}," OmicsSuite has developed four types of genome circle maps based on the Rcircos and chloroplot packages to assist users in visualizing the genome. MitoGenome (Mitochondrial Genome) can parse GenBank-formatted mitochondrial genome information and display the GC content of each gene and of pseudogene markers. ChloroplastGenome (Chloroplast Genome) provides support for displaying the GC content of inverted repeat sequences (IRA/IRB), GC content of genes, pseudogene markers, and InDel information. ",-1)),ie=t(()=>e("img",{src:C,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),ae=t(()=>e("br",null,null,-1)),ne={class:"image-text-card"},le=t(()=>e("p",{class:"card-title"},"5. Omics Transcriptomics:",-1)),re=t(()=>e("p",{class:"card-content"}," VolcanoPlot and MversusA (MAplot) (combined names) can intuitively display the differentially expressed genes between paired groups. ExpressionTrends (Expression Trends) can display the linear trajectories of all genes in multiple groups, making it convenient to observe the expression trends of genes with traits. Similarly, WGCNA performs a weighted gene co-expression network analysis, taking multiple-group gene expression data as input. ",-1)),ce=t(()=>e("img",{src:T,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),de=t(()=>e("br",null,null,-1)),pe={class:"image-text-card"},ue=t(()=>e("p",{class:"card-title"},"6. SingleCell Omics:",-1)),me=t(()=>e("p",{class:"card-content"}," OmicsSuite has developed a pipeline and interactive suite of 22 sub-applications for single-cell transcriptomics based on packages such as Seurat v4 and Monocle2 that provide interfaces for almost all parameters. The 10X Genomics raw data is output in Matrix format after being processed by Chromium, and the results can be read by all sub-applications and entered into the corresponding analysis steps. ",-1)),he=t(()=>e("img",{src:F,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),_e=t(()=>e("br",null,null,-1));function ge(n,fe,be,ve,ye,we){const c=a("AppHeader"),d=a("el-header"),p=a("el-alert"),i=a("el-col"),l=a("el-row"),u=a("el-main"),m=a("AppFooter"),h=a("el-footer"),_=a("el-container"),g=a("el-backtop");return y(),w("div",G,[s(_,null,{default:o(()=>[s(d,null,{default:o(()=>[s(c)]),_:1}),s(u,null,{default:o(()=>[e("div",null,[j,M,B,I,V,s(p,{title:"Citation: OmicsSuite",type:"warning","show-icon":"",closable:!1},{default:o(()=>[P]),_:1})]),e("div",null,[R,W,e("div",q,[s(l,{gutter:20},{default:o(()=>[s(i,{span:24,sm:8,lg:8},{default:o(()=>[H,X]),_:1}),s(i,{span:24,sm:16,lg:16},{default:o(()=>[E]),_:1})]),_:1})]),N,e("div",J,[s(l,{gutter:20},{default:o(()=>[s(i,{span:24,sm:8,lg:8},{default:o(()=>[$,D]),_:1}),s(i,{span:24,sm:16,lg:16},{default:o(()=>[U]),_:1})]),_:1})]),L,e("div",Y,[s(l,{gutter:20},{default:o(()=>[s(i,{span:24,sm:8,lg:8},{default:o(()=>[K,Q]),_:1}),s(i,{span:24,sm:16,lg:16},{default:o(()=>[Z]),_:1})]),_:1})]),ee,e("div",te,[s(l,{gutter:20},{default:o(()=>[s(i,{span:24,sm:8,lg:8},{default:o(()=>[se,oe]),_:1}),s(i,{span:24,sm:16,lg:16},{default:o(()=>[ie]),_:1})]),_:1})]),ae,e("div",ne,[s(l,{gutter:20},{default:o(()=>[s(i,{span:24,sm:8,lg:8},{default:o(()=>[le,re]),_:1}),s(i,{span:24,sm:16,lg:16},{default:o(()=>[ce]),_:1})]),_:1})]),de,e("div",pe,[s(l,{gutter:20},{default:o(()=>[s(i,{span:24,sm:8,lg:8},{default:o(()=>[ue,me]),_:1}),s(i,{span:24,sm:16,lg:16},{default:o(()=>[he]),_:1})]),_:1})]),_e])]),_:1}),s(h,null,{default:o(()=>[s(m)]),_:1})]),_:1}),s(g,{right:50,bottom:100})])}const We=f(z,[["render",ge],["__scopeId","data-v-c5773669"]]);export{We as default}; diff --git a/assets/PublishView-b4082dce.js b/assets/PublishView-b4082dce.js deleted file mode 100644 index e941dc9..0000000 --- a/assets/PublishView-b4082dce.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as f,A as b,a as v}from"./index-3ef5d3f0.js";import{ah as a,o as y,c as w,V as s,P as o,a as e,ax as x,ay as S,T as r}from"./@vue-248d724b.js";import"./vue-router-401d444e.js";import"./element-plus-ab7336d6.js";import"./lodash-es-21c98b27.js";import"./@vueuse-89fc2c2e.js";import"./@element-plus-0de4ac96.js";import"./@popperjs-c75af06c.js";import"./@ctrl-f8748455.js";import"./dayjs-5c34775c.js";import"./async-validator-dee29e8b.js";import"./memoize-one-297ddbcb.js";import"./escape-html-64fe8e16.js";import"./normalize-wheel-es-ed76fb12.js";import"./@floating-ui-72671fae.js";import"./echarts-9ae96183.js";import"./zrender-e9104294.js";const k="/assets/Figure1-689192d4.jpg",O="/assets/Figure2-83c38a53.jpg",A="/assets/Figure3-3cc63776.jpg",C="/assets/Figure4-85c07b64.jpg",T="/assets/Figure5-5e8eecc7.jpg",F="/assets/Figure6-a91100be.jpg";const z={components:{AppHeader:b,AppFooter:v},data(){return{}},mounted(){},methods:{downloadOmicsSuite(){const n="https://sourceforge.net/projects/omicssuite-github-io/files/latest/download";window.open(n,"_blank")}}},t=n=>(x("data-v-c5773669"),n=n(),S(),n),G={class:"common-layout"},j=t(()=>e("br",null,null,-1)),M=t(()=>e("p",{style:{"font-size":"1.2em","font-weight":"bold",color:"#008888","text-align":"justify"}}," OmicsSuite: a customized and pipelined suite for analysis and visualization of multi-omics big data. ",-1)),B=t(()=>e("br",null,null,-1)),I=t(()=>e("div",{class:"image-text-card"},[e("p",{class:"card-title"},"Abstract:"),e("p",{class:"card-content"}," With the advancements in high-throughput sequencing technologies such as Illumina, PacBio, and 10X Genomics platforms, and gas/liquid chromatography-mass spectrometry, large volumes of biological data in multiple formats can now be obtained through multi-omics analysis. Bioinformatics is constantly evolving and seeking breakthroughs to solve multi-omics problems, however it is challenging for most experimental biologists to analyze data using command-line interfaces, coding, and scripting. Based on experience with multi-omics, we have developed OmicsSuite, a desktop suite that comprehensively integrates statistics and multi-omics analysis and visualization. The suite has 175 sub-applications in 12 categories, including Sequence, Statistics, Algorithm, Genomics, Transcriptomics, Enrichment, Proteomics, Metabolomics, Clinical, Microorganism, Single Cell, and Table Operation. We created the user interface with Sequence View, Table View, and intelligent components based on JavaFX and the popular Shiny framework. The multi-omics analysis functions were developed based on BioJava and 300+ packages provided by the R CRAN and Bioconductor communities, and it encompasses over 3,000 adjustable parameter interfaces. OmicsSuite can directly read multi-omics raw data in FastA, FastQ, MAF, mzML, Matrix, and HDF5 formats, and the programs emphasize data transfer directions and pipeline analysis functions. OmicsSuite can produce pre-publication images and tables, allowing users to focus on biological aspects. OmicsSuite offers multi-omics step-by-step workflows that can be easily applied to horticultural plant breeding and molecular mechanism studies in plants. It enables researchers to freely explore the molecular information contained in multi-omics big data (Source: https://github.com/OmicsSuite/, Website: https://omicssuite.github.io, v1.3.9). ")],-1)),V=t(()=>e("br",null,null,-1)),P=t(()=>e("p",{style:{"font-size":"1.2em","font-weight":"bold","text-align":"justify"}},[r("Ben-ben Miao, Wei Dong, Yi-xin Gu, Zhao-fang Han, Xuan Luo, Cai-huan Ke, Wei-wei You, OmicsSuite: a customized and pipelined suite for analysis and visualization of multi-omics big data, "),e("i",null,"Horticulture Research"),r(", 2023;, uhad195, "),e("a",{href:"https://doi.org/10.1093/hr/uhad195",target:"_blank",style:{color:"#008888"}},"https://doi.org/10.1093/hr/uhad195"),r(". ")],-1)),R=t(()=>e("br",null,null,-1)),W=t(()=>e("p",{style:{"font-size":"2em","font-weight":"bold",color:"#000000"}}," Results: ",-1)),q={class:"image-text-card"},H=t(()=>e("p",{class:"card-title"},"1. OmicsSuite Architecture:",-1)),X=t(()=>e("p",{class:"card-content"}," OmicsSuite is an innovative framework for analyzing and visualizing multi-omics data in a workflow. The JavaFX library provides user interface (UI) control methods, parameter component classes, web engine support, and other interface display and friendly interaction functions through a series of sub-libraries such as javafx-controls, javafx-graphics, and javafx-web. ",-1)),E=t(()=>e("img",{src:k,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),N=t(()=>e("br",null,null,-1)),J={class:"image-text-card"},$=t(()=>e("p",{class:"card-title"},"2. User Interface:",-1)),D=t(()=>e("p",{class:"card-content"}," OmicsSuite has redesigned the UI of JavaFX to provide a modern and improved operating experience for users. The default layout features a multi-level menu bar at the top of the window, a shortcut access bar at the bottom, a collapsible toolbox on the left, a home page in the middle, and a meta information and version update record panel on the right. When a sub-application is started, the layout will switch to the user interface, with the analysis page of the application in the middle and application details information on the right. ",-1)),U=t(()=>e("img",{src:O,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),L=t(()=>e("br",null,null,-1)),Y={class:"image-text-card"},K=t(()=>e("p",{class:"card-title"},"3. Sub-applications Overview:",-1)),Q=t(()=>e("p",{class:"card-content"}," Bioinformatics encompasses biology (such as multi-omics) and methodology (such as statistics and advanced algorithms). Therefore, OmicsSuite continuously improves multi-omics analysis and visualization functions based on the foundation of statistical analysis, providing users with a comprehensive one-stop solution. Currently, there are 12 categories with 175 sub-applications. The categories are: Sequence, Statistics, Algorithm, Genomics, Transcriptomics, Enrichment, Proteomics, Metabolomics, Clinical, Microorganisms, Single Cell, and Table Operation. ",-1)),Z=t(()=>e("img",{src:A,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),ee=t(()=>e("br",null,null,-1)),te={class:"image-text-card"},se=t(()=>e("p",{class:"card-title"},"4. Omics Genomics:",-1)),oe=t(()=>e("p",{class:"card-content"}," OmicsSuite has developed four types of genome circle maps based on the Rcircos and chloroplot packages to assist users in visualizing the genome. MitoGenome (Mitochondrial Genome) can parse GenBank-formatted mitochondrial genome information and display the GC content of each gene and of pseudogene markers. ChloroplastGenome (Chloroplast Genome) provides support for displaying the GC content of inverted repeat sequences (IRA/IRB), GC content of genes, pseudogene markers, and InDel information. ",-1)),ie=t(()=>e("img",{src:C,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),ae=t(()=>e("br",null,null,-1)),ne={class:"image-text-card"},le=t(()=>e("p",{class:"card-title"},"5. Omics Transcriptomics:",-1)),re=t(()=>e("p",{class:"card-content"}," VolcanoPlot and MversusA (MAplot) (combined names) can intuitively display the differentially expressed genes between paired groups. ExpressionTrends (Expression Trends) can display the linear trajectories of all genes in multiple groups, making it convenient to observe the expression trends of genes with traits. Similarly, WGCNA performs a weighted gene co-expression network analysis, taking multiple-group gene expression data as input. ",-1)),ce=t(()=>e("img",{src:T,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),de=t(()=>e("br",null,null,-1)),pe={class:"image-text-card"},ue=t(()=>e("p",{class:"card-title"},"6. SingleCell Omics:",-1)),me=t(()=>e("p",{class:"card-content"}," OmicsSuite has developed a pipeline and interactive suite of 22 sub-applications for single-cell transcriptomics based on packages such as Seurat v4 and Monocle2 that provide interfaces for almost all parameters. The 10X Genomics raw data is output in Matrix format after being processed by Chromium, and the results can be read by all sub-applications and entered into the corresponding analysis steps. ",-1)),he=t(()=>e("img",{src:F,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),_e=t(()=>e("br",null,null,-1));function ge(n,fe,be,ve,ye,we){const c=a("AppHeader"),d=a("el-header"),p=a("el-alert"),i=a("el-col"),l=a("el-row"),u=a("el-main"),m=a("AppFooter"),h=a("el-footer"),_=a("el-container"),g=a("el-backtop");return y(),w("div",G,[s(_,null,{default:o(()=>[s(d,null,{default:o(()=>[s(c)]),_:1}),s(u,null,{default:o(()=>[e("div",null,[j,M,B,I,V,s(p,{title:"Citation: OmicsSuite",type:"warning","show-icon":"",closable:!1},{default:o(()=>[P]),_:1})]),e("div",null,[R,W,e("div",q,[s(l,{gutter:20},{default:o(()=>[s(i,{span:24,sm:8,lg:8},{default:o(()=>[H,X]),_:1}),s(i,{span:24,sm:16,lg:16},{default:o(()=>[E]),_:1})]),_:1})]),N,e("div",J,[s(l,{gutter:20},{default:o(()=>[s(i,{span:24,sm:8,lg:8},{default:o(()=>[$,D]),_:1}),s(i,{span:24,sm:16,lg:16},{default:o(()=>[U]),_:1})]),_:1})]),L,e("div",Y,[s(l,{gutter:20},{default:o(()=>[s(i,{span:24,sm:8,lg:8},{default:o(()=>[K,Q]),_:1}),s(i,{span:24,sm:16,lg:16},{default:o(()=>[Z]),_:1})]),_:1})]),ee,e("div",te,[s(l,{gutter:20},{default:o(()=>[s(i,{span:24,sm:8,lg:8},{default:o(()=>[se,oe]),_:1}),s(i,{span:24,sm:16,lg:16},{default:o(()=>[ie]),_:1})]),_:1})]),ae,e("div",ne,[s(l,{gutter:20},{default:o(()=>[s(i,{span:24,sm:8,lg:8},{default:o(()=>[le,re]),_:1}),s(i,{span:24,sm:16,lg:16},{default:o(()=>[ce]),_:1})]),_:1})]),de,e("div",pe,[s(l,{gutter:20},{default:o(()=>[s(i,{span:24,sm:8,lg:8},{default:o(()=>[ue,me]),_:1}),s(i,{span:24,sm:16,lg:16},{default:o(()=>[he]),_:1})]),_:1})]),_e])]),_:1}),s(h,null,{default:o(()=>[s(m)]),_:1})]),_:1}),s(g,{right:50,bottom:100})])}const We=f(z,[["render",ge],["__scopeId","data-v-c5773669"]]);export{We as default}; diff --git a/assets/PublishView-fb2ef787.js b/assets/PublishView-fb2ef787.js deleted file mode 100644 index 3646b01..0000000 --- a/assets/PublishView-fb2ef787.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as f,A as b,a as v}from"./index-25c25b6f.js";import{ah as a,o as y,c as w,V as s,P as o,a as e,ax as x,ay as S,T as r}from"./@vue-248d724b.js";import"./vue-router-401d444e.js";import"./element-plus-ab7336d6.js";import"./lodash-es-21c98b27.js";import"./@vueuse-89fc2c2e.js";import"./@element-plus-0de4ac96.js";import"./@popperjs-c75af06c.js";import"./@ctrl-f8748455.js";import"./dayjs-5c34775c.js";import"./async-validator-dee29e8b.js";import"./memoize-one-297ddbcb.js";import"./escape-html-64fe8e16.js";import"./normalize-wheel-es-ed76fb12.js";import"./@floating-ui-72671fae.js";import"./echarts-9ae96183.js";import"./zrender-e9104294.js";const k="/assets/Figure1-689192d4.jpg",O="/assets/Figure2-83c38a53.jpg",A="/assets/Figure3-3cc63776.jpg",C="/assets/Figure4-85c07b64.jpg",T="/assets/Figure5-5e8eecc7.jpg",F="/assets/Figure6-a91100be.jpg";const z={components:{AppHeader:b,AppFooter:v},data(){return{}},mounted(){},methods:{downloadOmicsSuite(){const n="https://sourceforge.net/projects/omicssuite-github-io/files/latest/download";window.open(n,"_blank")}}},t=n=>(x("data-v-c5773669"),n=n(),S(),n),G={class:"common-layout"},j=t(()=>e("br",null,null,-1)),M=t(()=>e("p",{style:{"font-size":"1.2em","font-weight":"bold",color:"#008888","text-align":"justify"}}," OmicsSuite: a customized and pipelined suite for analysis and visualization of multi-omics big data. ",-1)),B=t(()=>e("br",null,null,-1)),I=t(()=>e("div",{class:"image-text-card"},[e("p",{class:"card-title"},"Abstract:"),e("p",{class:"card-content"}," With the advancements in high-throughput sequencing technologies such as Illumina, PacBio, and 10X Genomics platforms, and gas/liquid chromatography-mass spectrometry, large volumes of biological data in multiple formats can now be obtained through multi-omics analysis. Bioinformatics is constantly evolving and seeking breakthroughs to solve multi-omics problems, however it is challenging for most experimental biologists to analyze data using command-line interfaces, coding, and scripting. Based on experience with multi-omics, we have developed OmicsSuite, a desktop suite that comprehensively integrates statistics and multi-omics analysis and visualization. The suite has 175 sub-applications in 12 categories, including Sequence, Statistics, Algorithm, Genomics, Transcriptomics, Enrichment, Proteomics, Metabolomics, Clinical, Microorganism, Single Cell, and Table Operation. We created the user interface with Sequence View, Table View, and intelligent components based on JavaFX and the popular Shiny framework. The multi-omics analysis functions were developed based on BioJava and 300+ packages provided by the R CRAN and Bioconductor communities, and it encompasses over 3,000 adjustable parameter interfaces. OmicsSuite can directly read multi-omics raw data in FastA, FastQ, MAF, mzML, Matrix, and HDF5 formats, and the programs emphasize data transfer directions and pipeline analysis functions. OmicsSuite can produce pre-publication images and tables, allowing users to focus on biological aspects. OmicsSuite offers multi-omics step-by-step workflows that can be easily applied to horticultural plant breeding and molecular mechanism studies in plants. It enables researchers to freely explore the molecular information contained in multi-omics big data (Source: https://github.com/OmicsSuite/, Website: https://omicssuite.github.io, v1.3.9). ")],-1)),V=t(()=>e("br",null,null,-1)),P=t(()=>e("p",{style:{"font-size":"1.2em","font-weight":"bold","text-align":"justify"}},[r("Ben-ben Miao, Wei Dong, Yi-xin Gu, Zhao-fang Han, Xuan Luo, Cai-huan Ke, Wei-wei You, OmicsSuite: a customized and pipelined suite for analysis and visualization of multi-omics big data, "),e("i",null,"Horticulture Research"),r(", 2023;, uhad195, "),e("a",{href:"https://doi.org/10.1093/hr/uhad195",target:"_blank",style:{color:"#008888"}},"https://doi.org/10.1093/hr/uhad195"),r(". ")],-1)),R=t(()=>e("br",null,null,-1)),W=t(()=>e("p",{style:{"font-size":"2em","font-weight":"bold",color:"#000000"}}," Results: ",-1)),q={class:"image-text-card"},H=t(()=>e("p",{class:"card-title"},"1. OmicsSuite Architecture:",-1)),X=t(()=>e("p",{class:"card-content"}," OmicsSuite is an innovative framework for analyzing and visualizing multi-omics data in a workflow. The JavaFX library provides user interface (UI) control methods, parameter component classes, web engine support, and other interface display and friendly interaction functions through a series of sub-libraries such as javafx-controls, javafx-graphics, and javafx-web. ",-1)),E=t(()=>e("img",{src:k,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),N=t(()=>e("br",null,null,-1)),J={class:"image-text-card"},$=t(()=>e("p",{class:"card-title"},"2. User Interface:",-1)),D=t(()=>e("p",{class:"card-content"}," OmicsSuite has redesigned the UI of JavaFX to provide a modern and improved operating experience for users. The default layout features a multi-level menu bar at the top of the window, a shortcut access bar at the bottom, a collapsible toolbox on the left, a home page in the middle, and a meta information and version update record panel on the right. When a sub-application is started, the layout will switch to the user interface, with the analysis page of the application in the middle and application details information on the right. ",-1)),U=t(()=>e("img",{src:O,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),L=t(()=>e("br",null,null,-1)),Y={class:"image-text-card"},K=t(()=>e("p",{class:"card-title"},"3. Sub-applications Overview:",-1)),Q=t(()=>e("p",{class:"card-content"}," Bioinformatics encompasses biology (such as multi-omics) and methodology (such as statistics and advanced algorithms). Therefore, OmicsSuite continuously improves multi-omics analysis and visualization functions based on the foundation of statistical analysis, providing users with a comprehensive one-stop solution. Currently, there are 12 categories with 175 sub-applications. The categories are: Sequence, Statistics, Algorithm, Genomics, Transcriptomics, Enrichment, Proteomics, Metabolomics, Clinical, Microorganisms, Single Cell, and Table Operation. ",-1)),Z=t(()=>e("img",{src:A,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),ee=t(()=>e("br",null,null,-1)),te={class:"image-text-card"},se=t(()=>e("p",{class:"card-title"},"4. Omics Genomics:",-1)),oe=t(()=>e("p",{class:"card-content"}," OmicsSuite has developed four types of genome circle maps based on the Rcircos and chloroplot packages to assist users in visualizing the genome. MitoGenome (Mitochondrial Genome) can parse GenBank-formatted mitochondrial genome information and display the GC content of each gene and of pseudogene markers. ChloroplastGenome (Chloroplast Genome) provides support for displaying the GC content of inverted repeat sequences (IRA/IRB), GC content of genes, pseudogene markers, and InDel information. ",-1)),ie=t(()=>e("img",{src:C,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),ae=t(()=>e("br",null,null,-1)),ne={class:"image-text-card"},le=t(()=>e("p",{class:"card-title"},"5. Omics Transcriptomics:",-1)),re=t(()=>e("p",{class:"card-content"}," VolcanoPlot and MversusA (MAplot) (combined names) can intuitively display the differentially expressed genes between paired groups. ExpressionTrends (Expression Trends) can display the linear trajectories of all genes in multiple groups, making it convenient to observe the expression trends of genes with traits. Similarly, WGCNA performs a weighted gene co-expression network analysis, taking multiple-group gene expression data as input. ",-1)),ce=t(()=>e("img",{src:T,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),de=t(()=>e("br",null,null,-1)),pe={class:"image-text-card"},ue=t(()=>e("p",{class:"card-title"},"6. SingleCell Omics:",-1)),me=t(()=>e("p",{class:"card-content"}," OmicsSuite has developed a pipeline and interactive suite of 22 sub-applications for single-cell transcriptomics based on packages such as Seurat v4 and Monocle2 that provide interfaces for almost all parameters. The 10X Genomics raw data is output in Matrix format after being processed by Chromium, and the results can be read by all sub-applications and entered into the corresponding analysis steps. ",-1)),he=t(()=>e("img",{src:F,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),_e=t(()=>e("br",null,null,-1));function ge(n,fe,be,ve,ye,we){const c=a("AppHeader"),d=a("el-header"),p=a("el-alert"),i=a("el-col"),l=a("el-row"),u=a("el-main"),m=a("AppFooter"),h=a("el-footer"),_=a("el-container"),g=a("el-backtop");return y(),w("div",G,[s(_,null,{default:o(()=>[s(d,null,{default:o(()=>[s(c)]),_:1}),s(u,null,{default:o(()=>[e("div",null,[j,M,B,I,V,s(p,{title:"Citation: OmicsSuite",type:"warning","show-icon":"",closable:!1},{default:o(()=>[P]),_:1})]),e("div",null,[R,W,e("div",q,[s(l,{gutter:20},{default:o(()=>[s(i,{span:24,sm:8,lg:8},{default:o(()=>[H,X]),_:1}),s(i,{span:24,sm:16,lg:16},{default:o(()=>[E]),_:1})]),_:1})]),N,e("div",J,[s(l,{gutter:20},{default:o(()=>[s(i,{span:24,sm:8,lg:8},{default:o(()=>[$,D]),_:1}),s(i,{span:24,sm:16,lg:16},{default:o(()=>[U]),_:1})]),_:1})]),L,e("div",Y,[s(l,{gutter:20},{default:o(()=>[s(i,{span:24,sm:8,lg:8},{default:o(()=>[K,Q]),_:1}),s(i,{span:24,sm:16,lg:16},{default:o(()=>[Z]),_:1})]),_:1})]),ee,e("div",te,[s(l,{gutter:20},{default:o(()=>[s(i,{span:24,sm:8,lg:8},{default:o(()=>[se,oe]),_:1}),s(i,{span:24,sm:16,lg:16},{default:o(()=>[ie]),_:1})]),_:1})]),ae,e("div",ne,[s(l,{gutter:20},{default:o(()=>[s(i,{span:24,sm:8,lg:8},{default:o(()=>[le,re]),_:1}),s(i,{span:24,sm:16,lg:16},{default:o(()=>[ce]),_:1})]),_:1})]),de,e("div",pe,[s(l,{gutter:20},{default:o(()=>[s(i,{span:24,sm:8,lg:8},{default:o(()=>[ue,me]),_:1}),s(i,{span:24,sm:16,lg:16},{default:o(()=>[he]),_:1})]),_:1})]),_e])]),_:1}),s(h,null,{default:o(()=>[s(m)]),_:1})]),_:1}),s(g,{right:50,bottom:100})])}const We=f(z,[["render",ge],["__scopeId","data-v-c5773669"]]);export{We as default}; diff --git a/assets/PublishView-d228bf6d.css b/assets/PublishView.css similarity index 100% rename from assets/PublishView-d228bf6d.css rename to assets/PublishView.css diff --git a/assets/TOmicsVis-3ac9e308.jpg b/assets/TOmicsVis.jpg similarity index 100% rename from assets/TOmicsVis-3ac9e308.jpg rename to assets/TOmicsVis.jpg diff --git a/assets/avatar-circle-633db0c8.png b/assets/avatar-circle.png similarity index 100% rename from assets/avatar-circle-633db0c8.png rename to assets/avatar-circle.png diff --git a/assets/element-plus-ab7336d6.js b/assets/element-plus-bab1278a.js similarity index 100% rename from assets/element-plus-ab7336d6.js rename to assets/element-plus-bab1278a.js diff --git a/assets/element-plus-3066593d.css b/assets/element-plus.css similarity index 100% rename from assets/element-plus-3066593d.css rename to assets/element-plus.css diff --git a/assets/index-25c25b6f.js b/assets/index-25c25b6f.js deleted file mode 100644 index f2f5b87..0000000 --- a/assets/index-25c25b6f.js +++ /dev/null @@ -1 +0,0 @@ -import{ah as i,o as O,c as T,V as e,O as z,P as o,T as r,ax as C,ay as A,a as t,at as B}from"./@vue-248d724b.js";import{c as I,a as F}from"./vue-router-401d444e.js";import{i as H}from"./element-plus-ab7336d6.js";import{Q as G}from"./@element-plus-0de4ac96.js";import{e as L}from"./echarts-9ae96183.js";import"./lodash-es-21c98b27.js";import"./@vueuse-89fc2c2e.js";import"./@popperjs-c75af06c.js";import"./@ctrl-f8748455.js";import"./dayjs-5c34775c.js";import"./async-validator-dee29e8b.js";import"./memoize-one-297ddbcb.js";import"./escape-html-64fe8e16.js";import"./normalize-wheel-es-ed76fb12.js";import"./@floating-ui-72671fae.js";import"./zrender-e9104294.js";(function(){const p=document.createElement("link").relList;if(p&&p.supports&&p.supports("modulepreload"))return;for(const d of document.querySelectorAll('link[rel="modulepreload"]'))b(d);new MutationObserver(d=>{for(const l of d)if(l.type==="childList")for(const c of l.addedNodes)c.tagName==="LINK"&&c.rel==="modulepreload"&&b(c)}).observe(document,{childList:!0,subtree:!0});function h(d){const l={};return d.integrity&&(l.integrity=d.integrity),d.referrerPolicy&&(l.referrerPolicy=d.referrerPolicy),d.crossOrigin==="use-credentials"?l.credentials="include":d.crossOrigin==="anonymous"?l.credentials="omit":l.credentials="same-origin",l}function b(d){if(d.ep)return;d.ep=!0;const l=h(d);fetch(d.href,l)}})();const x=(a,p)=>{const h=a.__vccOpts||a;for(const[b,d]of p)h[b]=d;return h},N={name:"app"},U={id:"app"};function q(a,p,h,b,d,l){const c=i("RouterView");return O(),T("div",U,[e(c)])}const j=x(N,[["render",q]]),W="modulepreload",Y=function(a){return"/"+a},P={},S=function(p,h,b){if(!h||h.length===0)return p();const d=document.getElementsByTagName("link");return Promise.all(h.map(l=>{if(l=Y(l),l in P)return;P[l]=!0;const c=l.endsWith(".css"),w=c?'[rel="stylesheet"]':"";if(!!b)for(let g=d.length-1;g>=0;g--){const f=d[g];if(f.href===l&&(!c||f.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${l}"]${w}`))return;const n=document.createElement("link");if(n.rel=c?"stylesheet":W,c||(n.as="script",n.crossOrigin=""),n.href=l,document.head.appendChild(n),c)return new Promise((g,f)=>{n.addEventListener("load",g),n.addEventListener("error",()=>f(new Error(`Unable to preload CSS for ${l}`)))})})).then(()=>p()).catch(l=>{const c=new Event("vite:preloadError",{cancelable:!0});if(c.payload=l,window.dispatchEvent(c),!c.defaultPrevented)throw l})},E="/assets/logo-a1cb7dc9.svg";const Q={},k=a=>(C("data-v-5aec12fb"),a=a(),A(),a),X=k(()=>t("img",{style:{width:"3em","aspect-ratio":"true"},src:E},null,-1)),K=k(()=>t("span",{style:{"margin-left":"10px","font-size":"1.2em","font-weight":"bold"}}," OmicsSuite ",-1)),Z=k(()=>t("div",{class:"flex-grow"},null,-1));function J(a,p,h,b,d,l){const c=i("el-menu-item"),w=i("DataLine"),u=i("el-icon"),n=i("Guide"),g=i("Suitcase"),f=i("BrushFilled"),y=i("Connection"),m=i("OfficeBuilding"),$=i("el-menu");return O(),z($,{"default-active":a.activeIndex,mode:"horizontal",ellipsis:"true","menu-trigger":"hover","collapse-transition":"true",router:""},{default:o(()=>[e(c,{index:"/"},{default:o(()=>[X,K]),_:1}),Z,e(c,{index:"/"},{default:o(()=>[e(u,null,{default:o(()=>[e(w)]),_:1}),r(" Home ")]),_:1}),e(c,{index:"/publish"},{default:o(()=>[e(u,null,{default:o(()=>[e(n)]),_:1}),r(" Publish ")]),_:1}),e(c,{index:"/downloads"},{default:o(()=>[e(u,null,{default:o(()=>[e(g)]),_:1}),r(" Downloads ")]),_:1}),e(c,{index:"/design"},{default:o(()=>[e(u,null,{default:o(()=>[e(f)]),_:1}),r(" Design ")]),_:1}),e(c,{index:"/friends"},{default:o(()=>[e(u,null,{default:o(()=>[e(y)]),_:1}),r(" Friends ")]),_:1}),e(c,{index:"/about"},{default:o(()=>[e(u,null,{default:o(()=>[e(m)]),_:1}),r(" About ")]),_:1})]),_:1},8,["default-active"])}const tt=x(Q,[["render",J],["__scopeId","data-v-5aec12fb"]]);const et={},_=a=>(C("data-v-05b8e7f0"),a=a(),A(),a),ot=_(()=>t("img",{src:E,style:{width:"100px","aspect-ratio":"true"}},null,-1)),st=_(()=>t("p",{style:{"font-weight":"bold","font-size":"1.3em"}},"OmicsSuite",-1)),nt=_(()=>t("p",{style:{"font-weight":"bold"}},"Copyright © 2022-2023 OmicsSuite. All Rights Reserved.",-1)),it=_(()=>t("p",{style:{"font-weight":"bold"}},"OmicsSuite: OmicsSuite: a customized and pipelined suite for analysis and visualization of multi-omics big data.",-1)),at=_(()=>t("p",{style:{"font-weight":"bold","font-size":"0.8em"}},"Citation: Ben-ben Miao, Wei Dong, Yi-xin Gu, Zhao-fang Han, Xuan Luo, Cai-huan Ke, Wei-wei You, OmicsSuite: a customized and pipelined suite for analysis and visualization of multi-omics big data, Horticulture Research, 2023;, uhad195, https://doi.org/10.1093/hr/uhad195.",-1)),lt=_(()=>t("br",null,null,-1)),ct={style:{"font-weight":"bold"}},rt=_(()=>t("a",{href:"https://github.com/benben-miao/",target:"_blank",style:{color:"#ffffff"}},"https://github.com/benben-miao/",-1)),dt={style:{"font-weight":"bold"}},ut=_(()=>t("a",{href:"benben.miao@outlook.com",target:"_blank",style:{color:"#ffffff"}},"benben.miao@outlook.com",-1)),_t={style:{"font-weight":"bold"}},pt=_(()=>t("a",{href:"https://www.xmu.edu.cn",target:"_blank",style:{color:"#ffffff"}},"https://www.xmu.edu.cn",-1)),mt={style:{"font-weight":"bold"}},ht=_(()=>t("a",{href:"https://omicssuite.github.io",target:"_blank",style:{color:"#ffffff"}},"https://omicssuite.github.io",-1)),ft={style:{"font-weight":"bold"}},gt=_(()=>t("a",{href:"https://github.com/OmicsSuite/",target:"_blank",style:{color:"#ffffff"}},"https://github.com/OmicsSuite/",-1)),bt={style:{"font-weight":"bold"}},yt=_(()=>t("a",{href:"https://space.bilibili.com/34105515/",target:"_blank",style:{color:"#ffffff"}},"https://space.bilibili.com/34105515/",-1)),vt=_(()=>t("br",null,null,-1)),wt={style:{"font-weight":"bold"}},St=_(()=>t("a",{href:"https://hiplot.org",target:"_blank",style:{color:"#ffffff"}},"https://hiplot.org",-1)),Ot={style:{"font-weight":"bold"}},xt=_(()=>t("a",{href:"https://github.com/hiplot/",target:"_blank",style:{color:"#ffffff"}},"https://github.com/hiplot/",-1)),$t=_(()=>t("br",null,null,-1)),Ct={style:{"font-weight":"bold"}},At=_(()=>t("a",{href:"https://github.com/benben-miao/TOmicsVis/",target:"_blank",style:{color:"#ffffff"}},"https://github.com/benben-miao/TOmicsVis/",-1)),kt={style:{"font-weight":"bold"}},Pt=_(()=>t("a",{href:"https://benben-miao.github.io/TOmicsVis/",target:"_blank",style:{color:"#ffffff"}},"https://benben-miao.github.io/TOmicsVis/",-1));function Tt(a,p,h,b,d,l){const c=i("el-col"),w=i("UserFilled"),u=i("el-icon"),n=i("Message"),g=i("School"),f=i("Compass"),y=i("Connection"),m=i("el-row");return O(),z(m,{gutter:0},{default:o(()=>[e(c,{span:24,sm:4,lg:4},{default:o(()=>[ot,st]),_:1}),e(c,{span:24,sm:10,lg:10},{default:o(()=>[nt,it,at,lt,t("p",ct,[e(u,null,{default:o(()=>[e(w)]),_:1}),r(" Author: benben-miao "),rt]),t("p",dt,[e(u,null,{default:o(()=>[e(n)]),_:1}),r(" Contact Email: "),ut]),t("p",_t,[e(u,null,{default:o(()=>[e(g)]),_:1}),r(" Institution: Xiamen University "),pt])]),_:1}),e(c,{span:24,sm:10,lg:10},{default:o(()=>[t("p",mt,[e(u,null,{default:o(()=>[e(f)]),_:1}),r(" OmicsSuite Website: "),ht]),t("p",ft,[e(u,null,{default:o(()=>[e(f)]),_:1}),r(" OmicsSuite GitHub: "),gt]),t("p",bt,[e(u,null,{default:o(()=>[e(f)]),_:1}),r(" OmicsSuite Tutorials: "),yt]),vt,t("p",wt,[e(u,null,{default:o(()=>[e(y)]),_:1}),r(" Hiplot Bioinformatics Cloud: "),St]),t("p",Ot,[e(u,null,{default:o(()=>[e(y)]),_:1}),r(" Hiplot GitHub: "),xt]),$t,t("p",Ct,[e(u,null,{default:o(()=>[e(y)]),_:1}),r(" TOmicsVis R Package: "),At]),t("p",kt,[e(u,null,{default:o(()=>[e(y)]),_:1}),r(" TOmicsVis API Docs: "),Pt])]),_:1})]),_:1})}const zt=x(et,[["render",Tt],["__scopeId","data-v-05b8e7f0"]]),Et="/assets/OmicsSuite-Home-d69adc49.png",Dt="/assets/OmicsSuite-Sequence-bf022155.jpg",Rt="/assets/OmicsSuite-Statistics-9ae30aa7.jpg",Mt="/assets/OmicsSuite-Algorithm-46de366f.jpg",Vt="/assets/OmicsSuite-Genomics-47102a84.jpg",Bt="/assets/OmicsSuite-Transcriptomics-2f2a6c5c.jpg",It="/assets/OmicsSuite-Metabolomics-6274d2ed.jpg",Ft="/assets/OmicsSuite-Microbe-3199fc92.png",Ht="/assets/OmicsSuite-SingleCell-41f867e0.jpg",Gt="/assets/OmicsSuite-App-5b117857.png";const Lt={components:{AppHeader:tt,AppFooter:zt},data(){return{}},mounted(){this.chart1(),window.onresize=function(){location.reload(!0)}},methods:{downloadOmicsSuite(){const a="https://sourceforge.net/projects/omicssuite-github-io/files/latest/download";window.open(a,"_blank")},chart1(){var a=this.$echarts.init(document.getElementById("chart1")),p={title:{text:"OmicsSuite Categories and Apps (175)",subtext:"The Count of Applications!",left:"center"},legend:{bottom:"bottom"},tooltip:{trigger:"item",formatter:"{a}
{b} : {c} ({d}%)",backgroundColor:"#000000cd",padding:15,borderRadius:10,textStyle:{color:"#ffffff"}},series:[{name:"Charts",type:"pie",radius:[10,180],center:["50%","50%"],roseType:"area",itemStyle:{borderRadius:50,shadowColor:"#cdcdcd",shadowBlur:50},label:{show:!0,fontSize:13,fontWeight:"bolder"},data:[{value:20,name:"1. Sequence"},{value:16,name:"2. Statistics"},{value:24,name:"3. Algorithm"},{value:21,name:"4. Genomics"},{value:14,name:"5. Transcriptomics"},{value:11,name:"6. Enrichment"},{value:5,name:"7. Proteomics"},{value:18,name:"8. Metabolomics"},{value:7,name:"9. Clinical"},{value:8,name:"10. MicroOrganisms"},{value:22,name:"11. SingleCell"},{value:4,name:"12. Mathematics"},{value:5,name:"13. TableOperation"}]}],color:["#DC143C","#FF5555","#FF8C00","#F4A460","#228B22","#3CB371","#008B8B","#20B2AA","#4169E1","#1E90FF","#800080","#9932CC","#FFD700"]};a.setOption(p)}}},s=a=>(C("data-v-ca6c443d"),a=a(),A(),a),Nt={class:"common-layout"},Ut=s(()=>t("br",null,null,-1)),qt=s(()=>t("p",{style:{"font-size":"2em","font-weight":"bold",color:"#000000"}}," OmicsSuite ",-1)),jt=s(()=>t("p",{style:{"font-size":"1.2em","font-weight":"bold",color:"#008888","text-align":"justify"}}," OmicsSuite: a customized and pipelined suite for analysis and visualization of multi-omics big data. ",-1)),Wt=s(()=>t("br",null,null,-1)),Yt=s(()=>t("div",{class:"image-text-card"},[t("p",{style:{"font-size":"1.2em","text-align":"justify","line-height":"2em"}},[t("span",{style:{"font-weight":"bold"}},"OmicsSuite"),r(" ("),t("a",{href:"https://github.com/OmicsSuite/",target:"_blank",style:{color:"#008888"}},"https://github.com/OmicsSuite/"),r("), original name "),t("span",{style:{"font-weight":"bold"}},"BioSciTools"),r(", a desktop program developed based on "),t("span",{style:{"font-weight":"bold"}},"Java-v11.0.0 and R-v4.2.2"),r(", aims to make new exploration and contribution to the development of bioinformatics, and realize data analysis and visualization in the fields of "),t("span",{style:{"font-weight":"bold"}},"statistics, algorithm,"),r(" sequence analysis, "),t("span",{style:{"font-weight":"bold"}},"multi-omics (transcriptomics, genomics, proteomics, metabolomics, single cell),"),r(" microbiology, clinical, etc. ")])],-1)),Qt=s(()=>t("br",null,null,-1)),Xt=s(()=>t("p",{style:{"font-size":"1.2em","font-weight":"bold","text-align":"justify"}},[r("Ben-ben Miao, Wei Dong, Yi-xin Gu, Zhao-fang Han, Xuan Luo, Cai-huan Ke, Wei-wei You, OmicsSuite: a customized and pipelined suite for analysis and visualization of multi-omics big data, "),t("i",null,"Horticulture Research"),r(", 2023;, uhad195, "),t("a",{href:"https://doi.org/10.1093/hr/uhad195",target:"_blank",style:{color:"#008888"}},"https://doi.org/10.1093/hr/uhad195"),r(". ")],-1)),Kt=s(()=>t("br",null,null,-1)),Zt=s(()=>t("img",{src:Et,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),Jt=s(()=>t("p",{style:{"font-size":"2em","font-weight":"bold"}},"User Interface",-1)),te=s(()=>t("br",null,null,-1)),ee=s(()=>t("p",{class:"card-title"},[r(" OmicsSuite Website: "),t("br"),t("a",{href:"https://omicssuite.github.io",target:"_blank",style:{color:"#008888"}},"https://omicssuite.github.io")],-1)),oe=s(()=>t("br",null,null,-1)),se=s(()=>t("p",{class:"card-title"},[r(" OmicsSuite GitHub: "),t("br"),t("a",{href:"https://github.com/OmicsSuite/",target:"_blank",style:{color:"#008888"}},"https://github.com/OmicsSuite/")],-1)),ne=s(()=>t("br",null,null,-1)),ie=s(()=>t("p",{class:"card-title"},[r(" OmicsSuite Article: "),t("br"),t("a",{href:"https://doi.org/10.1093/hr/uhad195",target:"_blank",style:{color:"#008888"}},"https://doi.org/10.1093/hr/uhad195")],-1)),ae=s(()=>t("br",null,null,-1)),le=s(()=>t("span",{style:{"font-size":"1.5em","font-weight":"bold"}},"OmicsSuite Windows",-1)),ce=s(()=>t("br",null,null,-1)),re=s(()=>t("hr",null,null,-1)),de=s(()=>t("br",null,null,-1)),ue=s(()=>t("p",{style:{"font-size":"2em","font-weight":"bold",color:"#000000"}}," Presentation ",-1)),_e=s(()=>t("div",{class:"image-text-card"},[t("div",{id:"chart1",style:{width:"100%","min-height":"520px"}})],-1)),pe=s(()=>t("br",null,null,-1)),me={class:"image-text-card"},he=s(()=>t("p",{class:"card-title"},"1. Sequence Editor:",-1)),fe=s(()=>t("p",{class:"card-content"}," Sequence category in OmicsSuite includes a variety of sub-applications for querying or editing sequences, such as SeqsGC is used for sequences GC content statistics; RevCom performs reverse complement of DNA/RNA sequences, and SeqsTranslate realizes the translation of DNA sequences into amino acids (providing genetic codes such as Standard, Vertebrate Mitochondria, and Yeast Mitochondria). ",-1)),ge=s(()=>t("img",{src:Dt,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),be=s(()=>t("br",null,null,-1)),ye={class:"image-text-card"},ve=s(()=>t("p",{class:"card-title"},"2. Statistics visualization:",-1)),we=s(()=>t("p",{class:"card-content"}," OmicsSuite comprehensively refers to the advantages of Excel (Microsoft, Redmond, WA, USA), SPSS (Statistical Package for the Social Sciences) (IBM, Armonk, NY, USA), and Prism (GraphPad, San Diego, CA, USA) to develop a customized statistical results and visualization system. The Statistics category includes 15 distinct basic statistical visualization sub-applications. These include ScatterPlot, PieStat, BarStat, BoxStat, PairsCorrelation, RadarStat, DensityNormal, ViolinStat (combined names), etc. ",-1)),Se=s(()=>t("img",{src:Rt,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),Oe=s(()=>t("br",null,null,-1)),xe={class:"image-text-card"},$e=s(()=>t("p",{class:"card-title"},"3. Algorithm visualization:",-1)),Ce=s(()=>t("p",{class:"card-content"}," Algorithm category integrates algorithms and implements visualization methods such as dimensionality reduction and clustering analyses. We have developed corresponding sub-applications for the dimensionality reduction algorithms PCA (Principal Components Analysis), PCoA (Principal Coordinates Analysis), tSNE (t-distributed Stochastic Neighbor Embedding), UMAP (Uniform Manifold Approximation and Projection), NMDS (Non-metric Multi-Dimensional Scaling) and RDA (Redundancy analysis), respectively. ",-1)),Ae=s(()=>t("img",{src:Mt,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),ke=s(()=>t("br",null,null,-1)),Pe={class:"image-text-card"},Te=s(()=>t("p",{class:"card-title"},"4. Omics Genomics:",-1)),ze=s(()=>t("p",{class:"card-content"}," OmicsSuite has developed four types of genome circle maps based on the Rcircos and chloroplot packages to assist users in visualizing the genome. MitoGenome (Mitochondrial Genome) can parse GenBank-formatted mitochondrial genome information and display the GC content of each gene and of pseudogene markers. ChloroplastGenome (Chloroplast Genome) provides support for displaying the GC content of inverted repeat sequences (IRA/IRB), GC content of genes, pseudogene markers, and InDel information. ",-1)),Ee=s(()=>t("img",{src:Vt,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),De=s(()=>t("br",null,null,-1)),Re={class:"image-text-card"},Me=s(()=>t("p",{class:"card-title"},"5. Omics Transcriptomics:",-1)),Ve=s(()=>t("p",{class:"card-content"}," VolcanoPlot and MversusA (MAplot) (combined names) can intuitively display the differentially expressed genes between paired groups. ExpressionTrends (Expression Trends) can display the linear trajectories of all genes in multiple groups, making it convenient to observe the expression trends of genes with traits. Similarly, WGCNA performs a weighted gene co-expression network analysis, taking multiple-group gene expression data as input. ",-1)),Be=s(()=>t("img",{src:Bt,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),Ie=s(()=>t("br",null,null,-1)),Fe={class:"image-text-card"},He=s(()=>t("p",{class:"card-title"},"6. Omics Metabolomics:",-1)),Ge=s(()=>t("p",{class:"card-content"}," To integrate the functions provided by MetaboAnalystR and ropls packages, 18 sub-applications have been developed for metabolomics, including exploration of mass spectrometry raw mzML data (from UPLC-QE, HPLC-Q/TOF, HPLC-Ion_Trap, HPLC-Orbitrap, and other platforms) to downstream multivariate analysis. Sample MzML data are filtered based on QCs and then analyzed. ",-1)),Le=s(()=>t("img",{src:It,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),Ne=s(()=>t("br",null,null,-1)),Ue={class:"image-text-card"},qe=s(()=>t("p",{class:"card-title"},"7. Omics Microbe:",-1)),je=s(()=>t("p",{class:"card-content"}," The OTUtree (Operational Taxonomic Unit evolutionary Tree) in OmicsSuite uses the OTU table to construct a microbial phylogenetic tree, and the results are displayed as circle graphs. For microbial diversity analysis, TernaryDiagram (Ternary Diagram) can analyze the relative abundances of species in different groups. The coordinate axes represent three experimental groups and the dots represent taxonomic units (e.g., Genus). ",-1)),We=s(()=>t("img",{src:Ft,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),Ye=s(()=>t("br",null,null,-1)),Qe={class:"image-text-card"},Xe=s(()=>t("p",{class:"card-title"},"8. Omics SingleCell:",-1)),Ke=s(()=>t("p",{class:"card-content"}," OmicsSuite has developed a pipeline and interactive suite of 22 sub-applications for single-cell transcriptomics based on packages such as Seurat v4 and Monocle2 that provide interfaces for almost all parameters. The 10X Genomics raw data is output in Matrix format after being processed by Chromium, and the results can be read by all sub-applications and entered into the corresponding analysis steps. ",-1)),Ze=s(()=>t("img",{src:Ht,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),Je=s(()=>t("br",null,null,-1)),to={class:"image-text-card"},eo=s(()=>t("p",{class:"card-title"},"9. Omics AppUI:",-1)),oo=s(()=>t("p",{class:"card-content"}," The parameter component section includes both fixed and variable parameter components. The fixed components Progress, Demo, Clear, and Submit are part of the task management components used to display the current status, run example data, clear the current task, and submit a new task respectively. Other common components such as Themes, Colors, Fonts, Figure Width, Figure Height, and Figure DPI belong to the parameter specification components. ",-1)),so=s(()=>t("img",{src:Gt,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),no=s(()=>t("br",null,null,-1));function io(a,p,h,b,d,l){const c=i("AppHeader"),w=i("el-header"),u=i("el-alert"),n=i("el-col"),g=i("Download"),f=i("el-icon"),y=i("el-button"),m=i("el-row"),$=i("el-main"),D=i("AppFooter"),R=i("el-footer"),M=i("el-container"),V=i("el-backtop");return O(),T("div",Nt,[e(M,null,{default:o(()=>[e(w,null,{default:o(()=>[e(c)]),_:1}),e($,null,{default:o(()=>[t("div",null,[Ut,qt,jt,Wt,Yt,Qt,e(u,{title:"Citation: OmicsSuite",type:"warning",closable:!1},{default:o(()=>[Xt]),_:1}),Kt,e(m,{gutter:20},{default:o(()=>[e(n,{span:24,sm:24,lg:16},{default:o(()=>[Zt]),_:1}),e(n,{span:24,sm:24,lg:8},{default:o(()=>[Jt,te,ee,oe,se,ne,ie,ae,e(y,{onClick:l.downloadOmicsSuite,style:{"background-color":"#ff2040",color:"#ffffff",height:"45px"}},{default:o(()=>[e(f,{style:{"font-size":"1.5em"}},{default:o(()=>[e(g)]),_:1}),le]),_:1},8,["onClick"])]),_:1})]),_:1})]),ce,re,t("div",null,[de,ue,_e,pe,t("div",me,[e(m,{gutter:20},{default:o(()=>[e(n,{span:24,sm:8,lg:8},{default:o(()=>[he,fe]),_:1}),e(n,{span:24,sm:16,lg:16},{default:o(()=>[ge]),_:1})]),_:1})]),be,t("div",ye,[e(m,{gutter:20},{default:o(()=>[e(n,{span:24,sm:8,lg:8},{default:o(()=>[ve,we]),_:1}),e(n,{span:24,sm:16,lg:16},{default:o(()=>[Se]),_:1})]),_:1})]),Oe,t("div",xe,[e(m,{gutter:20},{default:o(()=>[e(n,{span:24,sm:8,lg:8},{default:o(()=>[$e,Ce]),_:1}),e(n,{span:24,sm:16,lg:16},{default:o(()=>[Ae]),_:1})]),_:1})]),ke,t("div",Pe,[e(m,{gutter:20},{default:o(()=>[e(n,{span:24,sm:8,lg:8},{default:o(()=>[Te,ze]),_:1}),e(n,{span:24,sm:16,lg:16},{default:o(()=>[Ee]),_:1})]),_:1})]),De,t("div",Re,[e(m,{gutter:20},{default:o(()=>[e(n,{span:24,sm:8,lg:8},{default:o(()=>[Me,Ve]),_:1}),e(n,{span:24,sm:16,lg:16},{default:o(()=>[Be]),_:1})]),_:1})]),Ie,t("div",Fe,[e(m,{gutter:20},{default:o(()=>[e(n,{span:24,sm:8,lg:8},{default:o(()=>[He,Ge]),_:1}),e(n,{span:24,sm:16,lg:16},{default:o(()=>[Le]),_:1})]),_:1})]),Ne,t("div",Ue,[e(m,{gutter:20},{default:o(()=>[e(n,{span:24,sm:8,lg:8},{default:o(()=>[qe,je]),_:1}),e(n,{span:24,sm:16,lg:16},{default:o(()=>[We]),_:1})]),_:1})]),Ye,t("div",Qe,[e(m,{gutter:20},{default:o(()=>[e(n,{span:24,sm:8,lg:8},{default:o(()=>[Xe,Ke]),_:1}),e(n,{span:24,sm:16,lg:16},{default:o(()=>[Ze]),_:1})]),_:1})]),Je,t("div",to,[e(m,{gutter:20},{default:o(()=>[e(n,{span:24,sm:8,lg:8},{default:o(()=>[eo,oo]),_:1}),e(n,{span:24,sm:16,lg:16},{default:o(()=>[so]),_:1})]),_:1})]),no])]),_:1}),e(R,null,{default:o(()=>[e(D)]),_:1})]),_:1}),e(V,{right:50,bottom:100})])}const ao=x(Lt,[["render",io],["__scopeId","data-v-ca6c443d"]]),lo=()=>S(()=>import("./AboutView-9bebf3c4.js"),["assets/AboutView-9bebf3c4.js","assets/@vue-248d724b.js","assets/vue-router-401d444e.js","assets/element-plus-ab7336d6.js","assets/lodash-es-21c98b27.js","assets/@vueuse-89fc2c2e.js","assets/@element-plus-0de4ac96.js","assets/@popperjs-c75af06c.js","assets/@ctrl-f8748455.js","assets/dayjs-5c34775c.js","assets/async-validator-dee29e8b.js","assets/memoize-one-297ddbcb.js","assets/escape-html-64fe8e16.js","assets/normalize-wheel-es-ed76fb12.js","assets/@floating-ui-72671fae.js","assets/element-plus-3066593d.css","assets/echarts-9ae96183.js","assets/zrender-e9104294.js","assets/AboutView-1060cc73.css"]),co=()=>S(()=>import("./PublishView-fb2ef787.js"),["assets/PublishView-fb2ef787.js","assets/@vue-248d724b.js","assets/vue-router-401d444e.js","assets/element-plus-ab7336d6.js","assets/lodash-es-21c98b27.js","assets/@vueuse-89fc2c2e.js","assets/@element-plus-0de4ac96.js","assets/@popperjs-c75af06c.js","assets/@ctrl-f8748455.js","assets/dayjs-5c34775c.js","assets/async-validator-dee29e8b.js","assets/memoize-one-297ddbcb.js","assets/escape-html-64fe8e16.js","assets/normalize-wheel-es-ed76fb12.js","assets/@floating-ui-72671fae.js","assets/element-plus-3066593d.css","assets/echarts-9ae96183.js","assets/zrender-e9104294.js","assets/PublishView-1d57be64.css"]),ro=()=>S(()=>import("./DownloadView-1722a7ac.js"),["assets/DownloadView-1722a7ac.js","assets/@vue-248d724b.js","assets/vue-router-401d444e.js","assets/element-plus-ab7336d6.js","assets/lodash-es-21c98b27.js","assets/@vueuse-89fc2c2e.js","assets/@element-plus-0de4ac96.js","assets/@popperjs-c75af06c.js","assets/@ctrl-f8748455.js","assets/dayjs-5c34775c.js","assets/async-validator-dee29e8b.js","assets/memoize-one-297ddbcb.js","assets/escape-html-64fe8e16.js","assets/normalize-wheel-es-ed76fb12.js","assets/@floating-ui-72671fae.js","assets/element-plus-3066593d.css","assets/echarts-9ae96183.js","assets/zrender-e9104294.js","assets/DownloadView-fcaad34b.css"]),uo=()=>S(()=>import("./DesignView-436d4ee3.js"),["assets/DesignView-436d4ee3.js","assets/@vue-248d724b.js","assets/vue-router-401d444e.js","assets/element-plus-ab7336d6.js","assets/lodash-es-21c98b27.js","assets/@vueuse-89fc2c2e.js","assets/@element-plus-0de4ac96.js","assets/@popperjs-c75af06c.js","assets/@ctrl-f8748455.js","assets/dayjs-5c34775c.js","assets/async-validator-dee29e8b.js","assets/memoize-one-297ddbcb.js","assets/escape-html-64fe8e16.js","assets/normalize-wheel-es-ed76fb12.js","assets/@floating-ui-72671fae.js","assets/element-plus-3066593d.css","assets/echarts-9ae96183.js","assets/zrender-e9104294.js","assets/DesignView-b55c72b2.css"]),_o=()=>S(()=>import("./FriendsView-f5101cb6.js"),["assets/FriendsView-f5101cb6.js","assets/@vue-248d724b.js","assets/vue-router-401d444e.js","assets/element-plus-ab7336d6.js","assets/lodash-es-21c98b27.js","assets/@vueuse-89fc2c2e.js","assets/@element-plus-0de4ac96.js","assets/@popperjs-c75af06c.js","assets/@ctrl-f8748455.js","assets/dayjs-5c34775c.js","assets/async-validator-dee29e8b.js","assets/memoize-one-297ddbcb.js","assets/escape-html-64fe8e16.js","assets/normalize-wheel-es-ed76fb12.js","assets/@floating-ui-72671fae.js","assets/element-plus-3066593d.css","assets/echarts-9ae96183.js","assets/zrender-e9104294.js","assets/FriendsView-cad92048.css"]),po=I({history:F("/"),routes:[{path:"/",name:"home",component:ao},{path:"/publish",name:"publish",component:co},{path:"/downloads",name:"downloads",component:ro},{path:"/design",name:"design",component:uo},{path:"/friends",name:"friends",component:_o},{path:"/about",name:"about",component:lo}]}),v=B(j);v.use(po);v.use(H);for(const[a,p]of Object.entries(G))v.component(a,p);v.config.globalProperties.$echarts=L;v.config.globalProperties.$appName="OmicsSuite";v.config.globalProperties.$serverHostPort="http://127.0.0.1:5000/";v.config.warnHandler=()=>null;v.mount("#app");export{tt as A,x as _,zt as a,Et as b,E as c}; diff --git a/assets/index-387fbfa5.js b/assets/index-387fbfa5.js new file mode 100644 index 0000000..9624dd8 --- /dev/null +++ b/assets/index-387fbfa5.js @@ -0,0 +1 @@ +import{ah as i,o as x,c as P,V as e,O as T,P as o,T as a,ax as A,ay as C,a as t,at as I}from"./@vue-248d724b.js";import{J as V,_ as S}from"./@splinetool-ead863f8.js";import{c as E,a as F}from"./vue-router-401d444e.js";import{i as U}from"./element-plus-bab1278a.js";import{Q as B}from"./@element-plus-0de4ac96.js";import{e as H}from"./echarts-9ae96183.js";import"./lodash-es-21c98b27.js";import"./@vueuse-89fc2c2e.js";import"./@popperjs-c75af06c.js";import"./@ctrl-f8748455.js";import"./dayjs-5c34775c.js";import"./async-validator-dee29e8b.js";import"./memoize-one-297ddbcb.js";import"./escape-html-64fe8e16.js";import"./normalize-wheel-es-ed76fb12.js";import"./@floating-ui-72671fae.js";import"./zrender-e9104294.js";(function(){const _=document.createElement("link").relList;if(_&&_.supports&&_.supports("modulepreload"))return;for(const c of document.querySelectorAll('link[rel="modulepreload"]'))f(c);new MutationObserver(c=>{for(const p of c)if(p.type==="childList")for(const r of p.addedNodes)r.tagName==="LINK"&&r.rel==="modulepreload"&&f(r)}).observe(document,{childList:!0,subtree:!0});function h(c){const p={};return c.integrity&&(p.integrity=c.integrity),c.referrerPolicy&&(p.referrerPolicy=c.referrerPolicy),c.crossOrigin==="use-credentials"?p.credentials="include":c.crossOrigin==="anonymous"?p.credentials="omit":p.credentials="same-origin",p}function f(c){if(c.ep)return;c.ep=!0;const p=h(c);fetch(c.href,p)}})();const O=(n,_)=>{const h=n.__vccOpts||n;for(const[f,c]of _)h[f]=c;return h},G={name:"app"},N={id:"app"};function j(n,_,h,f,c,p){const r=i("RouterView");return x(),P("div",N,[e(r)])}const q=O(G,[["render",j]]),R=""+new URL("logo.svg",import.meta.url).href;const W={},k=n=>(A("data-v-5aec12fb"),n=n(),C(),n),Y=k(()=>t("img",{style:{width:"3em","aspect-ratio":"true"},src:R},null,-1)),Q=k(()=>t("span",{style:{"margin-left":"10px","font-size":"1.2em","font-weight":"bold"}}," OmicsSuite ",-1)),X=k(()=>t("div",{class:"flex-grow"},null,-1));function J(n,_,h,f,c,p){const r=i("el-menu-item"),v=i("DataLine"),d=i("el-icon"),l=i("Guide"),w=i("Suitcase"),y=i("BrushFilled"),g=i("Connection"),m=i("OfficeBuilding"),$=i("el-menu");return x(),T($,{"default-active":n.activeIndex,mode:"horizontal",ellipsis:"true","menu-trigger":"hover","collapse-transition":"true",router:""},{default:o(()=>[e(r,{index:"/"},{default:o(()=>[Y,Q]),_:1}),X,e(r,{index:"/"},{default:o(()=>[e(d,null,{default:o(()=>[e(v)]),_:1}),a(" Home ")]),_:1}),e(r,{index:"/publish"},{default:o(()=>[e(d,null,{default:o(()=>[e(l)]),_:1}),a(" Publish ")]),_:1}),e(r,{index:"/downloads"},{default:o(()=>[e(d,null,{default:o(()=>[e(w)]),_:1}),a(" Downloads ")]),_:1}),e(r,{index:"/design"},{default:o(()=>[e(d,null,{default:o(()=>[e(y)]),_:1}),a(" Design ")]),_:1}),e(r,{index:"/friends"},{default:o(()=>[e(d,null,{default:o(()=>[e(g)]),_:1}),a(" Friends ")]),_:1}),e(r,{index:"/about"},{default:o(()=>[e(d,null,{default:o(()=>[e(m)]),_:1}),a(" About ")]),_:1})]),_:1},8,["default-active"])}const K=O(W,[["render",J],["__scopeId","data-v-5aec12fb"]]);const Z={},u=n=>(A("data-v-05b8e7f0"),n=n(),C(),n),tt=u(()=>t("img",{src:R,style:{width:"100px","aspect-ratio":"true"}},null,-1)),et=u(()=>t("p",{style:{"font-weight":"bold","font-size":"1.3em"}},"OmicsSuite",-1)),ot=u(()=>t("p",{style:{"font-weight":"bold"}},"Copyright © 2022-2023 OmicsSuite. All Rights Reserved.",-1)),st=u(()=>t("p",{style:{"font-weight":"bold"}},"OmicsSuite: OmicsSuite: a customized and pipelined suite for analysis and visualization of multi-omics big data.",-1)),it=u(()=>t("p",{style:{"font-weight":"bold","font-size":"0.8em"}},"Citation: Ben-ben Miao, Wei Dong, Yi-xin Gu, Zhao-fang Han, Xuan Luo, Cai-huan Ke, Wei-wei You, OmicsSuite: a customized and pipelined suite for analysis and visualization of multi-omics big data, Horticulture Research, 2023;, uhad195, https://doi.org/10.1093/hr/uhad195.",-1)),nt=u(()=>t("br",null,null,-1)),at={style:{"font-weight":"bold"}},lt=u(()=>t("a",{href:"https://github.com/benben-miao/",target:"_blank",style:{color:"#ffffff"}},"https://github.com/benben-miao/",-1)),ct={style:{"font-weight":"bold"}},rt=u(()=>t("a",{href:"benben.miao@outlook.com",target:"_blank",style:{color:"#ffffff"}},"benben.miao@outlook.com",-1)),dt={style:{"font-weight":"bold"}},ut=u(()=>t("a",{href:"https://www.xmu.edu.cn",target:"_blank",style:{color:"#ffffff"}},"https://www.xmu.edu.cn",-1)),pt={style:{"font-weight":"bold"}},_t=u(()=>t("a",{href:"https://omicssuite.github.io",target:"_blank",style:{color:"#ffffff"}},"https://omicssuite.github.io",-1)),mt={style:{"font-weight":"bold"}},ht=u(()=>t("a",{href:"https://github.com/OmicsSuite/",target:"_blank",style:{color:"#ffffff"}},"https://github.com/OmicsSuite/",-1)),ft={style:{"font-weight":"bold"}},gt=u(()=>t("a",{href:"https://space.bilibili.com/34105515/",target:"_blank",style:{color:"#ffffff"}},"https://space.bilibili.com/34105515/",-1)),bt=u(()=>t("br",null,null,-1)),yt={style:{"font-weight":"bold"}},vt=u(()=>t("a",{href:"https://hiplot.org",target:"_blank",style:{color:"#ffffff"}},"https://hiplot.org",-1)),wt={style:{"font-weight":"bold"}},St=u(()=>t("a",{href:"https://github.com/hiplot/",target:"_blank",style:{color:"#ffffff"}},"https://github.com/hiplot/",-1)),xt=u(()=>t("br",null,null,-1)),Ot={style:{"font-weight":"bold"}},$t=u(()=>t("a",{href:"https://github.com/benben-miao/TOmicsVis/",target:"_blank",style:{color:"#ffffff"}},"https://github.com/benben-miao/TOmicsVis/",-1)),At={style:{"font-weight":"bold"}},Ct=u(()=>t("a",{href:"https://benben-miao.github.io/TOmicsVis/",target:"_blank",style:{color:"#ffffff"}},"https://benben-miao.github.io/TOmicsVis/",-1));function kt(n,_,h,f,c,p){const r=i("el-col"),v=i("UserFilled"),d=i("el-icon"),l=i("Message"),w=i("School"),y=i("Compass"),g=i("Connection"),m=i("el-row");return x(),T(m,{gutter:0},{default:o(()=>[e(r,{span:24,sm:4,lg:4},{default:o(()=>[tt,et]),_:1}),e(r,{span:24,sm:10,lg:10},{default:o(()=>[ot,st,it,nt,t("p",at,[e(d,null,{default:o(()=>[e(v)]),_:1}),a(" Author: benben-miao "),lt]),t("p",ct,[e(d,null,{default:o(()=>[e(l)]),_:1}),a(" Contact Email: "),rt]),t("p",dt,[e(d,null,{default:o(()=>[e(w)]),_:1}),a(" Institution: Xiamen University "),ut])]),_:1}),e(r,{span:24,sm:10,lg:10},{default:o(()=>[t("p",pt,[e(d,null,{default:o(()=>[e(y)]),_:1}),a(" OmicsSuite Website: "),_t]),t("p",mt,[e(d,null,{default:o(()=>[e(y)]),_:1}),a(" OmicsSuite GitHub: "),ht]),t("p",ft,[e(d,null,{default:o(()=>[e(y)]),_:1}),a(" OmicsSuite Tutorials: "),gt]),bt,t("p",yt,[e(d,null,{default:o(()=>[e(g)]),_:1}),a(" Hiplot Bioinformatics Cloud: "),vt]),t("p",wt,[e(d,null,{default:o(()=>[e(g)]),_:1}),a(" Hiplot GitHub: "),St]),xt,t("p",Ot,[e(d,null,{default:o(()=>[e(g)]),_:1}),a(" TOmicsVis R Package: "),$t]),t("p",At,[e(d,null,{default:o(()=>[e(g)]),_:1}),a(" TOmicsVis API Docs: "),Ct])]),_:1})]),_:1})}const Pt=O(Z,[["render",kt],["__scopeId","data-v-05b8e7f0"]]),Tt=""+new URL("OmicsSuite-Home.png",import.meta.url).href,Rt=""+new URL("OmicsSuite-Sequence.jpg",import.meta.url).href,zt=""+new URL("OmicsSuite-Statistics.jpg",import.meta.url).href,Lt=""+new URL("OmicsSuite-Algorithm.jpg",import.meta.url).href,Mt=""+new URL("OmicsSuite-Genomics.jpg",import.meta.url).href,Dt=""+new URL("OmicsSuite-Transcriptomics.jpg",import.meta.url).href,It=""+new URL("OmicsSuite-Metabolomics.jpg",import.meta.url).href,Vt=""+new URL("OmicsSuite-Microbe.png",import.meta.url).href,Et=""+new URL("OmicsSuite-SingleCell.jpg",import.meta.url).href,Ft=""+new URL("OmicsSuite-App.png",import.meta.url).href;const Ut={components:{AppHeader:K,AppFooter:Pt},data(){return{}},mounted(){this.chart1();const n=document.getElementById("canvas3d");new V(n).load("https://prod.spline.design/E5dcxg0fysxLUpyA/scene.splinecode")},methods:{downloadOmicsSuite(){const n="https://sourceforge.net/projects/omicssuite-github-io/files/latest/download";window.open(n,"_blank")},chart1(){var n=this.$echarts.init(document.getElementById("chart1")),_={title:{text:"OmicsSuite Categories and Apps (175)",subtext:"The Count of Applications!",left:"center"},legend:{bottom:"bottom"},tooltip:{trigger:"item",formatter:"{a}
{b} : {c} ({d}%)",backgroundColor:"#000000cd",padding:15,borderRadius:10,textStyle:{color:"#ffffff"}},series:[{name:"Charts",type:"pie",radius:[10,180],center:["50%","50%"],roseType:"area",itemStyle:{borderRadius:50,shadowColor:"#cdcdcd",shadowBlur:50},label:{show:!0,fontSize:13,fontWeight:"bolder"},data:[{value:20,name:"1. Sequence"},{value:16,name:"2. Statistics"},{value:24,name:"3. Algorithm"},{value:21,name:"4. Genomics"},{value:14,name:"5. Transcriptomics"},{value:11,name:"6. Enrichment"},{value:5,name:"7. Proteomics"},{value:18,name:"8. Metabolomics"},{value:7,name:"9. Clinical"},{value:8,name:"10. MicroOrganisms"},{value:22,name:"11. SingleCell"},{value:4,name:"12. Mathematics"},{value:5,name:"13. TableOperation"}]}],color:["#DC143C","#FF5555","#FF8C00","#F4A460","#228B22","#3CB371","#008B8B","#20B2AA","#4169E1","#1E90FF","#800080","#9932CC","#FFD700"]};n.setOption(_)}}},s=n=>(A("data-v-25eaad92"),n=n(),C(),n),Bt={class:"common-layout"},Ht=s(()=>t("div",{style:{"margin-top":"60px",position:"relative",width:"100%",height:"600px"}},[t("canvas",{id:"canvas3d",style:{position:"absolute",top:"0",left:"0","z-index":"0",width:"100%",height:"100%"}}),t("div",{style:{width:"90%",padding:"10px",position:"absolute",top:"50%",left:"50%",transform:"translate(-50%, -50%)","z-index":"1","background-color":"#cdcdcd33","border-radius":"10px"}},[t("br"),t("p",{style:{"font-size":"4em","font-weight":"bold",color:"#000000"}}," OmicsSuite "),t("br"),t("p",{style:{"font-size":"1.8em","font-weight":"bold",color:"#008888","text-align":"justify"}}," OmicsSuite: a customized and pipelined suite for analysis and visualization of multi-omics big data. ")])],-1)),Gt={class:"page"},Nt=s(()=>t("br",null,null,-1)),jt=s(()=>t("div",{class:"image-text-card"},[t("p",{style:{"font-size":"1.2em","text-align":"justify","line-height":"2em"}},[t("span",{style:{"font-weight":"bold"}},"OmicsSuite"),a(" ("),t("a",{href:"https://github.com/OmicsSuite/",target:"_blank",style:{color:"#008888"}},"https://github.com/OmicsSuite/"),a("), original name "),t("span",{style:{"font-weight":"bold"}},"BioSciTools"),a(", a desktop program developed based on "),t("span",{style:{"font-weight":"bold"}},"Java-v11.0.0 and R-v4.2.2"),a(", aims to make new exploration and contribution to the development of bioinformatics, and realize data analysis and visualization in the fields of "),t("span",{style:{"font-weight":"bold"}},"statistics, algorithm,"),a(" sequence analysis, "),t("span",{style:{"font-weight":"bold"}},"multi-omics (transcriptomics, genomics, proteomics, metabolomics, single cell),"),a(" microbiology, clinical, etc. ")])],-1)),qt=s(()=>t("br",null,null,-1)),Wt=s(()=>t("p",{style:{"font-size":"1.2em","font-weight":"bold","text-align":"justify"}},[a("Ben-ben Miao, Wei Dong, Yi-xin Gu, Zhao-fang Han, Xuan Luo, Cai-huan Ke, Wei-wei You, OmicsSuite: a customized and pipelined suite for analysis and visualization of multi-omics big data, "),t("i",null,"Horticulture Research"),a(", 2023;, uhad195, "),t("a",{href:"https://doi.org/10.1093/hr/uhad195",target:"_blank",style:{color:"#008888"}},"https://doi.org/10.1093/hr/uhad195"),a(". ")],-1)),Yt=s(()=>t("br",null,null,-1)),Qt=s(()=>t("img",{src:Tt,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),Xt=s(()=>t("p",{style:{"font-size":"2em","font-weight":"bold"}},"User Interface",-1)),Jt=s(()=>t("br",null,null,-1)),Kt=s(()=>t("p",{class:"card-title"},[a(" OmicsSuite Website: "),t("br"),t("a",{href:"https://omicssuite.github.io",target:"_blank",style:{color:"#008888"}},"https://omicssuite.github.io")],-1)),Zt=s(()=>t("br",null,null,-1)),te=s(()=>t("p",{class:"card-title"},[a(" OmicsSuite GitHub: "),t("br"),t("a",{href:"https://github.com/OmicsSuite/",target:"_blank",style:{color:"#008888"}},"https://github.com/OmicsSuite/")],-1)),ee=s(()=>t("br",null,null,-1)),oe=s(()=>t("p",{class:"card-title"},[a(" OmicsSuite Article: "),t("br"),t("a",{href:"https://doi.org/10.1093/hr/uhad195",target:"_blank",style:{color:"#008888"}},"https://doi.org/10.1093/hr/uhad195")],-1)),se=s(()=>t("br",null,null,-1)),ie=s(()=>t("span",{style:{"font-size":"1.5em","font-weight":"bold"}},"OmicsSuite Windows",-1)),ne=s(()=>t("br",null,null,-1)),ae=s(()=>t("hr",null,null,-1)),le=s(()=>t("br",null,null,-1)),ce=s(()=>t("p",{style:{"font-size":"2em","font-weight":"bold",color:"#000000"}}," Presentation ",-1)),re=s(()=>t("div",{class:"image-text-card"},[t("div",{id:"chart1",style:{width:"100%","min-height":"520px"}})],-1)),de=s(()=>t("br",null,null,-1)),ue={class:"image-text-card"},pe=s(()=>t("p",{class:"card-title"},"1. Sequence Editor:",-1)),_e=s(()=>t("p",{class:"card-content"}," Sequence category in OmicsSuite includes a variety of sub-applications for querying or editing sequences, such as SeqsGC is used for sequences GC content statistics; RevCom performs reverse complement of DNA/RNA sequences, and SeqsTranslate realizes the translation of DNA sequences into amino acids (providing genetic codes such as Standard, Vertebrate Mitochondria, and Yeast Mitochondria). ",-1)),me=s(()=>t("img",{src:Rt,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),he=s(()=>t("br",null,null,-1)),fe={class:"image-text-card"},ge=s(()=>t("p",{class:"card-title"},"2. Statistics visualization:",-1)),be=s(()=>t("p",{class:"card-content"}," OmicsSuite comprehensively refers to the advantages of Excel (Microsoft, Redmond, WA, USA), SPSS (Statistical Package for the Social Sciences) (IBM, Armonk, NY, USA), and Prism (GraphPad, San Diego, CA, USA) to develop a customized statistical results and visualization system. The Statistics category includes 15 distinct basic statistical visualization sub-applications. These include ScatterPlot, PieStat, BarStat, BoxStat, PairsCorrelation, RadarStat, DensityNormal, ViolinStat (combined names), etc. ",-1)),ye=s(()=>t("img",{src:zt,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),ve=s(()=>t("br",null,null,-1)),we={class:"image-text-card"},Se=s(()=>t("p",{class:"card-title"},"3. Algorithm visualization:",-1)),xe=s(()=>t("p",{class:"card-content"}," Algorithm category integrates algorithms and implements visualization methods such as dimensionality reduction and clustering analyses. We have developed corresponding sub-applications for the dimensionality reduction algorithms PCA (Principal Components Analysis), PCoA (Principal Coordinates Analysis), tSNE (t-distributed Stochastic Neighbor Embedding), UMAP (Uniform Manifold Approximation and Projection), NMDS (Non-metric Multi-Dimensional Scaling) and RDA (Redundancy analysis), respectively. ",-1)),Oe=s(()=>t("img",{src:Lt,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),$e=s(()=>t("br",null,null,-1)),Ae={class:"image-text-card"},Ce=s(()=>t("p",{class:"card-title"},"4. Omics Genomics:",-1)),ke=s(()=>t("p",{class:"card-content"}," OmicsSuite has developed four types of genome circle maps based on the Rcircos and chloroplot packages to assist users in visualizing the genome. MitoGenome (Mitochondrial Genome) can parse GenBank-formatted mitochondrial genome information and display the GC content of each gene and of pseudogene markers. ChloroplastGenome (Chloroplast Genome) provides support for displaying the GC content of inverted repeat sequences (IRA/IRB), GC content of genes, pseudogene markers, and InDel information. ",-1)),Pe=s(()=>t("img",{src:Mt,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),Te=s(()=>t("br",null,null,-1)),Re={class:"image-text-card"},ze=s(()=>t("p",{class:"card-title"},"5. Omics Transcriptomics:",-1)),Le=s(()=>t("p",{class:"card-content"}," VolcanoPlot and MversusA (MAplot) (combined names) can intuitively display the differentially expressed genes between paired groups. ExpressionTrends (Expression Trends) can display the linear trajectories of all genes in multiple groups, making it convenient to observe the expression trends of genes with traits. Similarly, WGCNA performs a weighted gene co-expression network analysis, taking multiple-group gene expression data as input. ",-1)),Me=s(()=>t("img",{src:Dt,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),De=s(()=>t("br",null,null,-1)),Ie={class:"image-text-card"},Ve=s(()=>t("p",{class:"card-title"},"6. Omics Metabolomics:",-1)),Ee=s(()=>t("p",{class:"card-content"}," To integrate the functions provided by MetaboAnalystR and ropls packages, 18 sub-applications have been developed for metabolomics, including exploration of mass spectrometry raw mzML data (from UPLC-QE, HPLC-Q/TOF, HPLC-Ion_Trap, HPLC-Orbitrap, and other platforms) to downstream multivariate analysis. Sample MzML data are filtered based on QCs and then analyzed. ",-1)),Fe=s(()=>t("img",{src:It,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),Ue=s(()=>t("br",null,null,-1)),Be={class:"image-text-card"},He=s(()=>t("p",{class:"card-title"},"7. Omics Microbe:",-1)),Ge=s(()=>t("p",{class:"card-content"}," The OTUtree (Operational Taxonomic Unit evolutionary Tree) in OmicsSuite uses the OTU table to construct a microbial phylogenetic tree, and the results are displayed as circle graphs. For microbial diversity analysis, TernaryDiagram (Ternary Diagram) can analyze the relative abundances of species in different groups. The coordinate axes represent three experimental groups and the dots represent taxonomic units (e.g., Genus). ",-1)),Ne=s(()=>t("img",{src:Vt,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),je=s(()=>t("br",null,null,-1)),qe={class:"image-text-card"},We=s(()=>t("p",{class:"card-title"},"8. Omics SingleCell:",-1)),Ye=s(()=>t("p",{class:"card-content"}," OmicsSuite has developed a pipeline and interactive suite of 22 sub-applications for single-cell transcriptomics based on packages such as Seurat v4 and Monocle2 that provide interfaces for almost all parameters. The 10X Genomics raw data is output in Matrix format after being processed by Chromium, and the results can be read by all sub-applications and entered into the corresponding analysis steps. ",-1)),Qe=s(()=>t("img",{src:Et,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),Xe=s(()=>t("br",null,null,-1)),Je={class:"image-text-card"},Ke=s(()=>t("p",{class:"card-title"},"9. Omics AppUI:",-1)),Ze=s(()=>t("p",{class:"card-content"}," The parameter component section includes both fixed and variable parameter components. The fixed components Progress, Demo, Clear, and Submit are part of the task management components used to display the current status, run example data, clear the current task, and submit a new task respectively. Other common components such as Themes, Colors, Fonts, Figure Width, Figure Height, and Figure DPI belong to the parameter specification components. ",-1)),to=s(()=>t("img",{src:Ft,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),eo=s(()=>t("br",null,null,-1));function oo(n,_,h,f,c,p){const r=i("AppHeader"),v=i("el-header"),d=i("el-alert"),l=i("el-col"),w=i("Download"),y=i("el-icon"),g=i("el-button"),m=i("el-row"),$=i("el-main"),z=i("AppFooter"),L=i("el-footer"),M=i("el-container"),D=i("el-backtop");return x(),P("div",Bt,[e(M,null,{default:o(()=>[e(v,null,{default:o(()=>[e(r)]),_:1}),e($,null,{default:o(()=>[Ht,t("div",Gt,[t("div",null,[Nt,jt,qt,e(d,{title:"Citation: OmicsSuite",type:"warning",closable:!1},{default:o(()=>[Wt]),_:1}),Yt,e(m,{gutter:20},{default:o(()=>[e(l,{span:24,sm:24,lg:16},{default:o(()=>[Qt]),_:1}),e(l,{span:24,sm:24,lg:8},{default:o(()=>[Xt,Jt,Kt,Zt,te,ee,oe,se,e(g,{onClick:p.downloadOmicsSuite,style:{"background-color":"#ff2040",color:"#ffffff",height:"45px"}},{default:o(()=>[e(y,{style:{"font-size":"1.5em"}},{default:o(()=>[e(w)]),_:1}),ie]),_:1},8,["onClick"])]),_:1})]),_:1})]),ne,ae,t("div",null,[le,ce,re,de,t("div",ue,[e(m,{gutter:20},{default:o(()=>[e(l,{span:24,sm:8,lg:8},{default:o(()=>[pe,_e]),_:1}),e(l,{span:24,sm:16,lg:16},{default:o(()=>[me]),_:1})]),_:1})]),he,t("div",fe,[e(m,{gutter:20},{default:o(()=>[e(l,{span:24,sm:8,lg:8},{default:o(()=>[ge,be]),_:1}),e(l,{span:24,sm:16,lg:16},{default:o(()=>[ye]),_:1})]),_:1})]),ve,t("div",we,[e(m,{gutter:20},{default:o(()=>[e(l,{span:24,sm:8,lg:8},{default:o(()=>[Se,xe]),_:1}),e(l,{span:24,sm:16,lg:16},{default:o(()=>[Oe]),_:1})]),_:1})]),$e,t("div",Ae,[e(m,{gutter:20},{default:o(()=>[e(l,{span:24,sm:8,lg:8},{default:o(()=>[Ce,ke]),_:1}),e(l,{span:24,sm:16,lg:16},{default:o(()=>[Pe]),_:1})]),_:1})]),Te,t("div",Re,[e(m,{gutter:20},{default:o(()=>[e(l,{span:24,sm:8,lg:8},{default:o(()=>[ze,Le]),_:1}),e(l,{span:24,sm:16,lg:16},{default:o(()=>[Me]),_:1})]),_:1})]),De,t("div",Ie,[e(m,{gutter:20},{default:o(()=>[e(l,{span:24,sm:8,lg:8},{default:o(()=>[Ve,Ee]),_:1}),e(l,{span:24,sm:16,lg:16},{default:o(()=>[Fe]),_:1})]),_:1})]),Ue,t("div",Be,[e(m,{gutter:20},{default:o(()=>[e(l,{span:24,sm:8,lg:8},{default:o(()=>[He,Ge]),_:1}),e(l,{span:24,sm:16,lg:16},{default:o(()=>[Ne]),_:1})]),_:1})]),je,t("div",qe,[e(m,{gutter:20},{default:o(()=>[e(l,{span:24,sm:8,lg:8},{default:o(()=>[We,Ye]),_:1}),e(l,{span:24,sm:16,lg:16},{default:o(()=>[Qe]),_:1})]),_:1})]),Xe,t("div",Je,[e(m,{gutter:20},{default:o(()=>[e(l,{span:24,sm:8,lg:8},{default:o(()=>[Ke,Ze]),_:1}),e(l,{span:24,sm:16,lg:16},{default:o(()=>[to]),_:1})]),_:1})]),eo])])]),_:1}),e(L,null,{default:o(()=>[e(z)]),_:1})]),_:1}),e(D,{right:50,bottom:100})])}const so=O(Ut,[["render",oo],["__scopeId","data-v-25eaad92"]]),io=()=>S(()=>import("./AboutView-fe9d083c.js"),["./AboutView-fe9d083c.js","./@vue-248d724b.js","./@splinetool-ead863f8.js","./vue-router-401d444e.js","./element-plus-bab1278a.js","./lodash-es-21c98b27.js","./@vueuse-89fc2c2e.js","./@element-plus-0de4ac96.js","./@popperjs-c75af06c.js","./@ctrl-f8748455.js","./dayjs-5c34775c.js","./async-validator-dee29e8b.js","./memoize-one-297ddbcb.js","./escape-html-64fe8e16.js","./normalize-wheel-es-ed76fb12.js","./@floating-ui-72671fae.js","./element-plus.css","./echarts-9ae96183.js","./zrender-e9104294.js","./AboutView.css"],import.meta.url),no=()=>S(()=>import("./PublishView-37445be7.js"),["./PublishView-37445be7.js","./@vue-248d724b.js","./@splinetool-ead863f8.js","./vue-router-401d444e.js","./element-plus-bab1278a.js","./lodash-es-21c98b27.js","./@vueuse-89fc2c2e.js","./@element-plus-0de4ac96.js","./@popperjs-c75af06c.js","./@ctrl-f8748455.js","./dayjs-5c34775c.js","./async-validator-dee29e8b.js","./memoize-one-297ddbcb.js","./escape-html-64fe8e16.js","./normalize-wheel-es-ed76fb12.js","./@floating-ui-72671fae.js","./element-plus.css","./echarts-9ae96183.js","./zrender-e9104294.js","./PublishView.css"],import.meta.url),ao=()=>S(()=>import("./DownloadView-fcb192e7.js"),["./DownloadView-fcb192e7.js","./@vue-248d724b.js","./@splinetool-ead863f8.js","./vue-router-401d444e.js","./element-plus-bab1278a.js","./lodash-es-21c98b27.js","./@vueuse-89fc2c2e.js","./@element-plus-0de4ac96.js","./@popperjs-c75af06c.js","./@ctrl-f8748455.js","./dayjs-5c34775c.js","./async-validator-dee29e8b.js","./memoize-one-297ddbcb.js","./escape-html-64fe8e16.js","./normalize-wheel-es-ed76fb12.js","./@floating-ui-72671fae.js","./element-plus.css","./echarts-9ae96183.js","./zrender-e9104294.js","./DownloadView.css"],import.meta.url),lo=()=>S(()=>import("./DesignView-e2626b83.js"),["./DesignView-e2626b83.js","./@vue-248d724b.js","./@splinetool-ead863f8.js","./vue-router-401d444e.js","./element-plus-bab1278a.js","./lodash-es-21c98b27.js","./@vueuse-89fc2c2e.js","./@element-plus-0de4ac96.js","./@popperjs-c75af06c.js","./@ctrl-f8748455.js","./dayjs-5c34775c.js","./async-validator-dee29e8b.js","./memoize-one-297ddbcb.js","./escape-html-64fe8e16.js","./normalize-wheel-es-ed76fb12.js","./@floating-ui-72671fae.js","./element-plus.css","./echarts-9ae96183.js","./zrender-e9104294.js","./DesignView.css"],import.meta.url),co=()=>S(()=>import("./FriendsView-62a257d6.js"),["./FriendsView-62a257d6.js","./@vue-248d724b.js","./@splinetool-ead863f8.js","./vue-router-401d444e.js","./element-plus-bab1278a.js","./lodash-es-21c98b27.js","./@vueuse-89fc2c2e.js","./@element-plus-0de4ac96.js","./@popperjs-c75af06c.js","./@ctrl-f8748455.js","./dayjs-5c34775c.js","./async-validator-dee29e8b.js","./memoize-one-297ddbcb.js","./escape-html-64fe8e16.js","./normalize-wheel-es-ed76fb12.js","./@floating-ui-72671fae.js","./element-plus.css","./echarts-9ae96183.js","./zrender-e9104294.js","./FriendsView.css"],import.meta.url),ro=E({history:F(),routes:[{path:"/",name:"home",component:so},{path:"/publish",name:"publish",component:no},{path:"/downloads",name:"downloads",component:ao},{path:"/design",name:"design",component:lo},{path:"/friends",name:"friends",component:co},{path:"/about",name:"about",component:io},{path:"/404",name:"404",redirect:"/"},{path:"/:pathMatch(.*)",redirect:"/"}]}),b=I(q);b.use(ro);b.use(U);for(const[n,_]of Object.entries(B))b.component(n,_);b.config.globalProperties.$echarts=H;b.config.globalProperties.$appName="OmicsSuite";b.config.globalProperties.$serverHostPort="http://127.0.0.1:5000/";b.config.warnHandler=()=>null;b.mount("#app");export{K as A,O as _,Pt as a,Tt as b,R as c}; diff --git a/assets/index-3ef5d3f0.js b/assets/index-3ef5d3f0.js deleted file mode 100644 index 2b25f9f..0000000 --- a/assets/index-3ef5d3f0.js +++ /dev/null @@ -1 +0,0 @@ -import{ah as i,o as O,c as T,V as e,O as z,P as o,T as r,ax as C,ay as A,a as t,at as B}from"./@vue-248d724b.js";import{c as I,a as F}from"./vue-router-401d444e.js";import{i as H}from"./element-plus-ab7336d6.js";import{Q as G}from"./@element-plus-0de4ac96.js";import{e as L}from"./echarts-9ae96183.js";import"./lodash-es-21c98b27.js";import"./@vueuse-89fc2c2e.js";import"./@popperjs-c75af06c.js";import"./@ctrl-f8748455.js";import"./dayjs-5c34775c.js";import"./async-validator-dee29e8b.js";import"./memoize-one-297ddbcb.js";import"./escape-html-64fe8e16.js";import"./normalize-wheel-es-ed76fb12.js";import"./@floating-ui-72671fae.js";import"./zrender-e9104294.js";(function(){const p=document.createElement("link").relList;if(p&&p.supports&&p.supports("modulepreload"))return;for(const d of document.querySelectorAll('link[rel="modulepreload"]'))b(d);new MutationObserver(d=>{for(const l of d)if(l.type==="childList")for(const c of l.addedNodes)c.tagName==="LINK"&&c.rel==="modulepreload"&&b(c)}).observe(document,{childList:!0,subtree:!0});function h(d){const l={};return d.integrity&&(l.integrity=d.integrity),d.referrerPolicy&&(l.referrerPolicy=d.referrerPolicy),d.crossOrigin==="use-credentials"?l.credentials="include":d.crossOrigin==="anonymous"?l.credentials="omit":l.credentials="same-origin",l}function b(d){if(d.ep)return;d.ep=!0;const l=h(d);fetch(d.href,l)}})();const x=(a,p)=>{const h=a.__vccOpts||a;for(const[b,d]of p)h[b]=d;return h},N={name:"app"},U={id:"app"};function q(a,p,h,b,d,l){const c=i("RouterView");return O(),T("div",U,[e(c)])}const j=x(N,[["render",q]]),W="modulepreload",Y=function(a){return"/"+a},P={},S=function(p,h,b){if(!h||h.length===0)return p();const d=document.getElementsByTagName("link");return Promise.all(h.map(l=>{if(l=Y(l),l in P)return;P[l]=!0;const c=l.endsWith(".css"),w=c?'[rel="stylesheet"]':"";if(!!b)for(let g=d.length-1;g>=0;g--){const f=d[g];if(f.href===l&&(!c||f.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${l}"]${w}`))return;const n=document.createElement("link");if(n.rel=c?"stylesheet":W,c||(n.as="script",n.crossOrigin=""),n.href=l,document.head.appendChild(n),c)return new Promise((g,f)=>{n.addEventListener("load",g),n.addEventListener("error",()=>f(new Error(`Unable to preload CSS for ${l}`)))})})).then(()=>p()).catch(l=>{const c=new Event("vite:preloadError",{cancelable:!0});if(c.payload=l,window.dispatchEvent(c),!c.defaultPrevented)throw l})},E="/assets/logo-a1cb7dc9.svg";const Q={},k=a=>(C("data-v-5aec12fb"),a=a(),A(),a),X=k(()=>t("img",{style:{width:"3em","aspect-ratio":"true"},src:E},null,-1)),K=k(()=>t("span",{style:{"margin-left":"10px","font-size":"1.2em","font-weight":"bold"}}," OmicsSuite ",-1)),Z=k(()=>t("div",{class:"flex-grow"},null,-1));function J(a,p,h,b,d,l){const c=i("el-menu-item"),w=i("DataLine"),u=i("el-icon"),n=i("Guide"),g=i("Suitcase"),f=i("BrushFilled"),y=i("Connection"),m=i("OfficeBuilding"),$=i("el-menu");return O(),z($,{"default-active":a.activeIndex,mode:"horizontal",ellipsis:"true","menu-trigger":"hover","collapse-transition":"true",router:""},{default:o(()=>[e(c,{index:"/"},{default:o(()=>[X,K]),_:1}),Z,e(c,{index:"/"},{default:o(()=>[e(u,null,{default:o(()=>[e(w)]),_:1}),r(" Home ")]),_:1}),e(c,{index:"/publish"},{default:o(()=>[e(u,null,{default:o(()=>[e(n)]),_:1}),r(" Publish ")]),_:1}),e(c,{index:"/downloads"},{default:o(()=>[e(u,null,{default:o(()=>[e(g)]),_:1}),r(" Downloads ")]),_:1}),e(c,{index:"/design"},{default:o(()=>[e(u,null,{default:o(()=>[e(f)]),_:1}),r(" Design ")]),_:1}),e(c,{index:"/friends"},{default:o(()=>[e(u,null,{default:o(()=>[e(y)]),_:1}),r(" Friends ")]),_:1}),e(c,{index:"/about"},{default:o(()=>[e(u,null,{default:o(()=>[e(m)]),_:1}),r(" About ")]),_:1})]),_:1},8,["default-active"])}const tt=x(Q,[["render",J],["__scopeId","data-v-5aec12fb"]]);const et={},_=a=>(C("data-v-05b8e7f0"),a=a(),A(),a),ot=_(()=>t("img",{src:E,style:{width:"100px","aspect-ratio":"true"}},null,-1)),st=_(()=>t("p",{style:{"font-weight":"bold","font-size":"1.3em"}},"OmicsSuite",-1)),nt=_(()=>t("p",{style:{"font-weight":"bold"}},"Copyright © 2022-2023 OmicsSuite. All Rights Reserved.",-1)),it=_(()=>t("p",{style:{"font-weight":"bold"}},"OmicsSuite: OmicsSuite: a customized and pipelined suite for analysis and visualization of multi-omics big data.",-1)),at=_(()=>t("p",{style:{"font-weight":"bold","font-size":"0.8em"}},"Citation: Ben-ben Miao, Wei Dong, Yi-xin Gu, Zhao-fang Han, Xuan Luo, Cai-huan Ke, Wei-wei You, OmicsSuite: a customized and pipelined suite for analysis and visualization of multi-omics big data, Horticulture Research, 2023;, uhad195, https://doi.org/10.1093/hr/uhad195.",-1)),lt=_(()=>t("br",null,null,-1)),ct={style:{"font-weight":"bold"}},rt=_(()=>t("a",{href:"https://github.com/benben-miao/",target:"_blank",style:{color:"#ffffff"}},"https://github.com/benben-miao/",-1)),dt={style:{"font-weight":"bold"}},ut=_(()=>t("a",{href:"benben.miao@outlook.com",target:"_blank",style:{color:"#ffffff"}},"benben.miao@outlook.com",-1)),_t={style:{"font-weight":"bold"}},pt=_(()=>t("a",{href:"https://www.xmu.edu.cn",target:"_blank",style:{color:"#ffffff"}},"https://www.xmu.edu.cn",-1)),mt={style:{"font-weight":"bold"}},ht=_(()=>t("a",{href:"https://omicssuite.github.io",target:"_blank",style:{color:"#ffffff"}},"https://omicssuite.github.io",-1)),ft={style:{"font-weight":"bold"}},gt=_(()=>t("a",{href:"https://github.com/OmicsSuite/",target:"_blank",style:{color:"#ffffff"}},"https://github.com/OmicsSuite/",-1)),bt={style:{"font-weight":"bold"}},yt=_(()=>t("a",{href:"https://space.bilibili.com/34105515/",target:"_blank",style:{color:"#ffffff"}},"https://space.bilibili.com/34105515/",-1)),vt=_(()=>t("br",null,null,-1)),wt={style:{"font-weight":"bold"}},St=_(()=>t("a",{href:"https://hiplot.org",target:"_blank",style:{color:"#ffffff"}},"https://hiplot.org",-1)),Ot={style:{"font-weight":"bold"}},xt=_(()=>t("a",{href:"https://github.com/hiplot/",target:"_blank",style:{color:"#ffffff"}},"https://github.com/hiplot/",-1)),$t=_(()=>t("br",null,null,-1)),Ct={style:{"font-weight":"bold"}},At=_(()=>t("a",{href:"https://github.com/benben-miao/TOmicsVis/",target:"_blank",style:{color:"#ffffff"}},"https://github.com/benben-miao/TOmicsVis/",-1)),kt={style:{"font-weight":"bold"}},Pt=_(()=>t("a",{href:"https://benben-miao.github.io/TOmicsVis/",target:"_blank",style:{color:"#ffffff"}},"https://benben-miao.github.io/TOmicsVis/",-1));function Tt(a,p,h,b,d,l){const c=i("el-col"),w=i("UserFilled"),u=i("el-icon"),n=i("Message"),g=i("School"),f=i("Compass"),y=i("Connection"),m=i("el-row");return O(),z(m,{gutter:0},{default:o(()=>[e(c,{span:24,sm:4,lg:4},{default:o(()=>[ot,st]),_:1}),e(c,{span:24,sm:10,lg:10},{default:o(()=>[nt,it,at,lt,t("p",ct,[e(u,null,{default:o(()=>[e(w)]),_:1}),r(" Author: benben-miao "),rt]),t("p",dt,[e(u,null,{default:o(()=>[e(n)]),_:1}),r(" Contact Email: "),ut]),t("p",_t,[e(u,null,{default:o(()=>[e(g)]),_:1}),r(" Institution: Xiamen University "),pt])]),_:1}),e(c,{span:24,sm:10,lg:10},{default:o(()=>[t("p",mt,[e(u,null,{default:o(()=>[e(f)]),_:1}),r(" OmicsSuite Website: "),ht]),t("p",ft,[e(u,null,{default:o(()=>[e(f)]),_:1}),r(" OmicsSuite GitHub: "),gt]),t("p",bt,[e(u,null,{default:o(()=>[e(f)]),_:1}),r(" OmicsSuite Tutorials: "),yt]),vt,t("p",wt,[e(u,null,{default:o(()=>[e(y)]),_:1}),r(" Hiplot Bioinformatics Cloud: "),St]),t("p",Ot,[e(u,null,{default:o(()=>[e(y)]),_:1}),r(" Hiplot GitHub: "),xt]),$t,t("p",Ct,[e(u,null,{default:o(()=>[e(y)]),_:1}),r(" TOmicsVis R Package: "),At]),t("p",kt,[e(u,null,{default:o(()=>[e(y)]),_:1}),r(" TOmicsVis API Docs: "),Pt])]),_:1})]),_:1})}const zt=x(et,[["render",Tt],["__scopeId","data-v-05b8e7f0"]]),Et="/assets/OmicsSuite-Home-d69adc49.png",Dt="/assets/OmicsSuite-Sequence-bf022155.jpg",Mt="/assets/OmicsSuite-Statistics-9ae30aa7.jpg",Rt="/assets/OmicsSuite-Algorithm-46de366f.jpg",Vt="/assets/OmicsSuite-Genomics-47102a84.jpg",Bt="/assets/OmicsSuite-Transcriptomics-2f2a6c5c.jpg",It="/assets/OmicsSuite-Metabolomics-6274d2ed.jpg",Ft="/assets/OmicsSuite-Microbe-3199fc92.png",Ht="/assets/OmicsSuite-SingleCell-41f867e0.jpg",Gt="/assets/OmicsSuite-App-5b117857.png";const Lt={components:{AppHeader:tt,AppFooter:zt},data(){return{}},mounted(){this.chart1()},methods:{downloadOmicsSuite(){const a="https://sourceforge.net/projects/omicssuite-github-io/files/latest/download";window.open(a,"_blank")},chart1(){var a=this.$echarts.init(document.getElementById("chart1")),p={title:{text:"OmicsSuite Categories and Apps (175)",subtext:"The Count of Applications!",left:"center"},legend:{bottom:"bottom"},tooltip:{trigger:"item",formatter:"{a}
{b} : {c} ({d}%)",backgroundColor:"#000000cd",padding:15,borderRadius:10,textStyle:{color:"#ffffff"}},series:[{name:"Charts",type:"pie",radius:[10,180],center:["50%","50%"],roseType:"area",itemStyle:{borderRadius:50,shadowColor:"#cdcdcd",shadowBlur:50},label:{show:!0,fontSize:13,fontWeight:"bolder"},data:[{value:20,name:"1. Sequence"},{value:16,name:"2. Statistics"},{value:24,name:"3. Algorithm"},{value:21,name:"4. Genomics"},{value:14,name:"5. Transcriptomics"},{value:11,name:"6. Enrichment"},{value:5,name:"7. Proteomics"},{value:18,name:"8. Metabolomics"},{value:7,name:"9. Clinical"},{value:8,name:"10. MicroOrganisms"},{value:22,name:"11. SingleCell"},{value:4,name:"12. Mathematics"},{value:5,name:"13. TableOperation"}]}],color:["#DC143C","#FF5555","#FF8C00","#F4A460","#228B22","#3CB371","#008B8B","#20B2AA","#4169E1","#1E90FF","#800080","#9932CC","#FFD700"]};a.setOption(p)}}},s=a=>(C("data-v-7fb8c8a6"),a=a(),A(),a),Nt={class:"common-layout"},Ut=s(()=>t("br",null,null,-1)),qt=s(()=>t("p",{style:{"font-size":"2em","font-weight":"bold",color:"#000000"}}," OmicsSuite ",-1)),jt=s(()=>t("p",{style:{"font-size":"1.2em","font-weight":"bold",color:"#008888","text-align":"justify"}}," OmicsSuite: a customized and pipelined suite for analysis and visualization of multi-omics big data. ",-1)),Wt=s(()=>t("br",null,null,-1)),Yt=s(()=>t("div",{class:"image-text-card"},[t("p",{style:{"font-size":"1.2em","text-align":"justify","line-height":"2em"}},[t("span",{style:{"font-weight":"bold"}},"OmicsSuite"),r(" ("),t("a",{href:"https://github.com/OmicsSuite/",target:"_blank",style:{color:"#008888"}},"https://github.com/OmicsSuite/"),r("), original name "),t("span",{style:{"font-weight":"bold"}},"BioSciTools"),r(", a desktop program developed based on "),t("span",{style:{"font-weight":"bold"}},"Java-v11.0.0 and R-v4.2.2"),r(", aims to make new exploration and contribution to the development of bioinformatics, and realize data analysis and visualization in the fields of "),t("span",{style:{"font-weight":"bold"}},"statistics, algorithm,"),r(" sequence analysis, "),t("span",{style:{"font-weight":"bold"}},"multi-omics (transcriptomics, genomics, proteomics, metabolomics, single cell),"),r(" microbiology, clinical, etc. ")])],-1)),Qt=s(()=>t("br",null,null,-1)),Xt=s(()=>t("p",{style:{"font-size":"1.2em","font-weight":"bold","text-align":"justify"}},[r("Ben-ben Miao, Wei Dong, Yi-xin Gu, Zhao-fang Han, Xuan Luo, Cai-huan Ke, Wei-wei You, OmicsSuite: a customized and pipelined suite for analysis and visualization of multi-omics big data, "),t("i",null,"Horticulture Research"),r(", 2023;, uhad195, "),t("a",{href:"https://doi.org/10.1093/hr/uhad195",target:"_blank",style:{color:"#008888"}},"https://doi.org/10.1093/hr/uhad195"),r(". ")],-1)),Kt=s(()=>t("br",null,null,-1)),Zt=s(()=>t("img",{src:Et,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),Jt=s(()=>t("p",{style:{"font-size":"2em","font-weight":"bold"}},"User Interface",-1)),te=s(()=>t("br",null,null,-1)),ee=s(()=>t("p",{class:"card-title"},[r(" OmicsSuite Website: "),t("br"),t("a",{href:"https://omicssuite.github.io",target:"_blank",style:{color:"#008888"}},"https://omicssuite.github.io")],-1)),oe=s(()=>t("br",null,null,-1)),se=s(()=>t("p",{class:"card-title"},[r(" OmicsSuite GitHub: "),t("br"),t("a",{href:"https://github.com/OmicsSuite/",target:"_blank",style:{color:"#008888"}},"https://github.com/OmicsSuite/")],-1)),ne=s(()=>t("br",null,null,-1)),ie=s(()=>t("p",{class:"card-title"},[r(" OmicsSuite Article: "),t("br"),t("a",{href:"https://doi.org/10.1093/hr/uhad195",target:"_blank",style:{color:"#008888"}},"https://doi.org/10.1093/hr/uhad195")],-1)),ae=s(()=>t("br",null,null,-1)),le=s(()=>t("span",{style:{"font-size":"1.5em","font-weight":"bold"}},"OmicsSuite Windows",-1)),ce=s(()=>t("br",null,null,-1)),re=s(()=>t("hr",null,null,-1)),de=s(()=>t("br",null,null,-1)),ue=s(()=>t("p",{style:{"font-size":"2em","font-weight":"bold",color:"#000000"}}," Presentation ",-1)),_e=s(()=>t("div",{class:"image-text-card"},[t("div",{id:"chart1",style:{width:"100%","min-height":"520px"}})],-1)),pe=s(()=>t("br",null,null,-1)),me={class:"image-text-card"},he=s(()=>t("p",{class:"card-title"},"1. Sequence Editor:",-1)),fe=s(()=>t("p",{class:"card-content"}," Sequence category in OmicsSuite includes a variety of sub-applications for querying or editing sequences, such as SeqsGC is used for sequences GC content statistics; RevCom performs reverse complement of DNA/RNA sequences, and SeqsTranslate realizes the translation of DNA sequences into amino acids (providing genetic codes such as Standard, Vertebrate Mitochondria, and Yeast Mitochondria). ",-1)),ge=s(()=>t("img",{src:Dt,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),be=s(()=>t("br",null,null,-1)),ye={class:"image-text-card"},ve=s(()=>t("p",{class:"card-title"},"2. Statistics visualization:",-1)),we=s(()=>t("p",{class:"card-content"}," OmicsSuite comprehensively refers to the advantages of Excel (Microsoft, Redmond, WA, USA), SPSS (Statistical Package for the Social Sciences) (IBM, Armonk, NY, USA), and Prism (GraphPad, San Diego, CA, USA) to develop a customized statistical results and visualization system. The Statistics category includes 15 distinct basic statistical visualization sub-applications. These include ScatterPlot, PieStat, BarStat, BoxStat, PairsCorrelation, RadarStat, DensityNormal, ViolinStat (combined names), etc. ",-1)),Se=s(()=>t("img",{src:Mt,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),Oe=s(()=>t("br",null,null,-1)),xe={class:"image-text-card"},$e=s(()=>t("p",{class:"card-title"},"3. Algorithm visualization:",-1)),Ce=s(()=>t("p",{class:"card-content"}," Algorithm category integrates algorithms and implements visualization methods such as dimensionality reduction and clustering analyses. We have developed corresponding sub-applications for the dimensionality reduction algorithms PCA (Principal Components Analysis), PCoA (Principal Coordinates Analysis), tSNE (t-distributed Stochastic Neighbor Embedding), UMAP (Uniform Manifold Approximation and Projection), NMDS (Non-metric Multi-Dimensional Scaling) and RDA (Redundancy analysis), respectively. ",-1)),Ae=s(()=>t("img",{src:Rt,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),ke=s(()=>t("br",null,null,-1)),Pe={class:"image-text-card"},Te=s(()=>t("p",{class:"card-title"},"4. Omics Genomics:",-1)),ze=s(()=>t("p",{class:"card-content"}," OmicsSuite has developed four types of genome circle maps based on the Rcircos and chloroplot packages to assist users in visualizing the genome. MitoGenome (Mitochondrial Genome) can parse GenBank-formatted mitochondrial genome information and display the GC content of each gene and of pseudogene markers. ChloroplastGenome (Chloroplast Genome) provides support for displaying the GC content of inverted repeat sequences (IRA/IRB), GC content of genes, pseudogene markers, and InDel information. ",-1)),Ee=s(()=>t("img",{src:Vt,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),De=s(()=>t("br",null,null,-1)),Me={class:"image-text-card"},Re=s(()=>t("p",{class:"card-title"},"5. Omics Transcriptomics:",-1)),Ve=s(()=>t("p",{class:"card-content"}," VolcanoPlot and MversusA (MAplot) (combined names) can intuitively display the differentially expressed genes between paired groups. ExpressionTrends (Expression Trends) can display the linear trajectories of all genes in multiple groups, making it convenient to observe the expression trends of genes with traits. Similarly, WGCNA performs a weighted gene co-expression network analysis, taking multiple-group gene expression data as input. ",-1)),Be=s(()=>t("img",{src:Bt,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),Ie=s(()=>t("br",null,null,-1)),Fe={class:"image-text-card"},He=s(()=>t("p",{class:"card-title"},"6. Omics Metabolomics:",-1)),Ge=s(()=>t("p",{class:"card-content"}," To integrate the functions provided by MetaboAnalystR and ropls packages, 18 sub-applications have been developed for metabolomics, including exploration of mass spectrometry raw mzML data (from UPLC-QE, HPLC-Q/TOF, HPLC-Ion_Trap, HPLC-Orbitrap, and other platforms) to downstream multivariate analysis. Sample MzML data are filtered based on QCs and then analyzed. ",-1)),Le=s(()=>t("img",{src:It,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),Ne=s(()=>t("br",null,null,-1)),Ue={class:"image-text-card"},qe=s(()=>t("p",{class:"card-title"},"7. Omics Microbe:",-1)),je=s(()=>t("p",{class:"card-content"}," The OTUtree (Operational Taxonomic Unit evolutionary Tree) in OmicsSuite uses the OTU table to construct a microbial phylogenetic tree, and the results are displayed as circle graphs. For microbial diversity analysis, TernaryDiagram (Ternary Diagram) can analyze the relative abundances of species in different groups. The coordinate axes represent three experimental groups and the dots represent taxonomic units (e.g., Genus). ",-1)),We=s(()=>t("img",{src:Ft,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),Ye=s(()=>t("br",null,null,-1)),Qe={class:"image-text-card"},Xe=s(()=>t("p",{class:"card-title"},"8. Omics SingleCell:",-1)),Ke=s(()=>t("p",{class:"card-content"}," OmicsSuite has developed a pipeline and interactive suite of 22 sub-applications for single-cell transcriptomics based on packages such as Seurat v4 and Monocle2 that provide interfaces for almost all parameters. The 10X Genomics raw data is output in Matrix format after being processed by Chromium, and the results can be read by all sub-applications and entered into the corresponding analysis steps. ",-1)),Ze=s(()=>t("img",{src:Ht,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),Je=s(()=>t("br",null,null,-1)),to={class:"image-text-card"},eo=s(()=>t("p",{class:"card-title"},"9. Omics AppUI:",-1)),oo=s(()=>t("p",{class:"card-content"}," The parameter component section includes both fixed and variable parameter components. The fixed components Progress, Demo, Clear, and Submit are part of the task management components used to display the current status, run example data, clear the current task, and submit a new task respectively. Other common components such as Themes, Colors, Fonts, Figure Width, Figure Height, and Figure DPI belong to the parameter specification components. ",-1)),so=s(()=>t("img",{src:Gt,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),no=s(()=>t("br",null,null,-1));function io(a,p,h,b,d,l){const c=i("AppHeader"),w=i("el-header"),u=i("el-alert"),n=i("el-col"),g=i("Download"),f=i("el-icon"),y=i("el-button"),m=i("el-row"),$=i("el-main"),D=i("AppFooter"),M=i("el-footer"),R=i("el-container"),V=i("el-backtop");return O(),T("div",Nt,[e(R,null,{default:o(()=>[e(w,null,{default:o(()=>[e(c)]),_:1}),e($,null,{default:o(()=>[t("div",null,[Ut,qt,jt,Wt,Yt,Qt,e(u,{title:"Citation: OmicsSuite",type:"warning",closable:!1},{default:o(()=>[Xt]),_:1}),Kt,e(m,{gutter:20},{default:o(()=>[e(n,{span:24,sm:24,lg:16},{default:o(()=>[Zt]),_:1}),e(n,{span:24,sm:24,lg:8},{default:o(()=>[Jt,te,ee,oe,se,ne,ie,ae,e(y,{onClick:l.downloadOmicsSuite,style:{"background-color":"#ff2040",color:"#ffffff",height:"45px"}},{default:o(()=>[e(f,{style:{"font-size":"1.5em"}},{default:o(()=>[e(g)]),_:1}),le]),_:1},8,["onClick"])]),_:1})]),_:1})]),ce,re,t("div",null,[de,ue,_e,pe,t("div",me,[e(m,{gutter:20},{default:o(()=>[e(n,{span:24,sm:8,lg:8},{default:o(()=>[he,fe]),_:1}),e(n,{span:24,sm:16,lg:16},{default:o(()=>[ge]),_:1})]),_:1})]),be,t("div",ye,[e(m,{gutter:20},{default:o(()=>[e(n,{span:24,sm:8,lg:8},{default:o(()=>[ve,we]),_:1}),e(n,{span:24,sm:16,lg:16},{default:o(()=>[Se]),_:1})]),_:1})]),Oe,t("div",xe,[e(m,{gutter:20},{default:o(()=>[e(n,{span:24,sm:8,lg:8},{default:o(()=>[$e,Ce]),_:1}),e(n,{span:24,sm:16,lg:16},{default:o(()=>[Ae]),_:1})]),_:1})]),ke,t("div",Pe,[e(m,{gutter:20},{default:o(()=>[e(n,{span:24,sm:8,lg:8},{default:o(()=>[Te,ze]),_:1}),e(n,{span:24,sm:16,lg:16},{default:o(()=>[Ee]),_:1})]),_:1})]),De,t("div",Me,[e(m,{gutter:20},{default:o(()=>[e(n,{span:24,sm:8,lg:8},{default:o(()=>[Re,Ve]),_:1}),e(n,{span:24,sm:16,lg:16},{default:o(()=>[Be]),_:1})]),_:1})]),Ie,t("div",Fe,[e(m,{gutter:20},{default:o(()=>[e(n,{span:24,sm:8,lg:8},{default:o(()=>[He,Ge]),_:1}),e(n,{span:24,sm:16,lg:16},{default:o(()=>[Le]),_:1})]),_:1})]),Ne,t("div",Ue,[e(m,{gutter:20},{default:o(()=>[e(n,{span:24,sm:8,lg:8},{default:o(()=>[qe,je]),_:1}),e(n,{span:24,sm:16,lg:16},{default:o(()=>[We]),_:1})]),_:1})]),Ye,t("div",Qe,[e(m,{gutter:20},{default:o(()=>[e(n,{span:24,sm:8,lg:8},{default:o(()=>[Xe,Ke]),_:1}),e(n,{span:24,sm:16,lg:16},{default:o(()=>[Ze]),_:1})]),_:1})]),Je,t("div",to,[e(m,{gutter:20},{default:o(()=>[e(n,{span:24,sm:8,lg:8},{default:o(()=>[eo,oo]),_:1}),e(n,{span:24,sm:16,lg:16},{default:o(()=>[so]),_:1})]),_:1})]),no])]),_:1}),e(M,null,{default:o(()=>[e(D)]),_:1})]),_:1}),e(V,{right:50,bottom:100})])}const ao=x(Lt,[["render",io],["__scopeId","data-v-7fb8c8a6"]]),lo=()=>S(()=>import("./AboutView-3a1c8fc9.js"),["assets/AboutView-3a1c8fc9.js","assets/@vue-248d724b.js","assets/vue-router-401d444e.js","assets/element-plus-ab7336d6.js","assets/lodash-es-21c98b27.js","assets/@vueuse-89fc2c2e.js","assets/@element-plus-0de4ac96.js","assets/@popperjs-c75af06c.js","assets/@ctrl-f8748455.js","assets/dayjs-5c34775c.js","assets/async-validator-dee29e8b.js","assets/memoize-one-297ddbcb.js","assets/escape-html-64fe8e16.js","assets/normalize-wheel-es-ed76fb12.js","assets/@floating-ui-72671fae.js","assets/element-plus-3066593d.css","assets/echarts-9ae96183.js","assets/zrender-e9104294.js","assets/AboutView-1060cc73.css"]),co=()=>S(()=>import("./PublishView-b4082dce.js"),["assets/PublishView-b4082dce.js","assets/@vue-248d724b.js","assets/vue-router-401d444e.js","assets/element-plus-ab7336d6.js","assets/lodash-es-21c98b27.js","assets/@vueuse-89fc2c2e.js","assets/@element-plus-0de4ac96.js","assets/@popperjs-c75af06c.js","assets/@ctrl-f8748455.js","assets/dayjs-5c34775c.js","assets/async-validator-dee29e8b.js","assets/memoize-one-297ddbcb.js","assets/escape-html-64fe8e16.js","assets/normalize-wheel-es-ed76fb12.js","assets/@floating-ui-72671fae.js","assets/element-plus-3066593d.css","assets/echarts-9ae96183.js","assets/zrender-e9104294.js","assets/PublishView-1d57be64.css"]),ro=()=>S(()=>import("./DownloadView-763f5719.js"),["assets/DownloadView-763f5719.js","assets/@vue-248d724b.js","assets/vue-router-401d444e.js","assets/element-plus-ab7336d6.js","assets/lodash-es-21c98b27.js","assets/@vueuse-89fc2c2e.js","assets/@element-plus-0de4ac96.js","assets/@popperjs-c75af06c.js","assets/@ctrl-f8748455.js","assets/dayjs-5c34775c.js","assets/async-validator-dee29e8b.js","assets/memoize-one-297ddbcb.js","assets/escape-html-64fe8e16.js","assets/normalize-wheel-es-ed76fb12.js","assets/@floating-ui-72671fae.js","assets/element-plus-3066593d.css","assets/echarts-9ae96183.js","assets/zrender-e9104294.js","assets/DownloadView-fcaad34b.css"]),uo=()=>S(()=>import("./DesignView-6052ac0b.js"),["assets/DesignView-6052ac0b.js","assets/@vue-248d724b.js","assets/vue-router-401d444e.js","assets/element-plus-ab7336d6.js","assets/lodash-es-21c98b27.js","assets/@vueuse-89fc2c2e.js","assets/@element-plus-0de4ac96.js","assets/@popperjs-c75af06c.js","assets/@ctrl-f8748455.js","assets/dayjs-5c34775c.js","assets/async-validator-dee29e8b.js","assets/memoize-one-297ddbcb.js","assets/escape-html-64fe8e16.js","assets/normalize-wheel-es-ed76fb12.js","assets/@floating-ui-72671fae.js","assets/element-plus-3066593d.css","assets/echarts-9ae96183.js","assets/zrender-e9104294.js","assets/DesignView-b55c72b2.css"]),_o=()=>S(()=>import("./FriendsView-6f8bf42e.js"),["assets/FriendsView-6f8bf42e.js","assets/@vue-248d724b.js","assets/vue-router-401d444e.js","assets/element-plus-ab7336d6.js","assets/lodash-es-21c98b27.js","assets/@vueuse-89fc2c2e.js","assets/@element-plus-0de4ac96.js","assets/@popperjs-c75af06c.js","assets/@ctrl-f8748455.js","assets/dayjs-5c34775c.js","assets/async-validator-dee29e8b.js","assets/memoize-one-297ddbcb.js","assets/escape-html-64fe8e16.js","assets/normalize-wheel-es-ed76fb12.js","assets/@floating-ui-72671fae.js","assets/element-plus-3066593d.css","assets/echarts-9ae96183.js","assets/zrender-e9104294.js","assets/FriendsView-cad92048.css"]),po=I({history:F(),routes:[{path:"/",name:"home",component:ao},{path:"/publish",name:"publish",component:co},{path:"/downloads",name:"downloads",component:ro},{path:"/design",name:"design",component:uo},{path:"/friends",name:"friends",component:_o},{path:"/about",name:"about",component:lo},{path:"/404",name:"404",redirect:"/"},{path:"/:pathMatch(.*)",redirect:"/"}]}),v=B(j);v.use(po);v.use(H);for(const[a,p]of Object.entries(G))v.component(a,p);v.config.globalProperties.$echarts=L;v.config.globalProperties.$appName="OmicsSuite";v.config.globalProperties.$serverHostPort="http://127.0.0.1:5000/";v.config.warnHandler=()=>null;v.mount("#app");export{tt as A,x as _,zt as a,Et as b,E as c}; diff --git a/assets/index-82148c11.js b/assets/index-82148c11.js deleted file mode 100644 index d9facb2..0000000 --- a/assets/index-82148c11.js +++ /dev/null @@ -1 +0,0 @@ -import{ah as i,o as O,c as T,V as e,O as z,P as o,T as r,ax as C,ay as A,a as t,at as B}from"./@vue-248d724b.js";import{c as I,a as F}from"./vue-router-401d444e.js";import{i as H}from"./element-plus-ab7336d6.js";import{Q as G}from"./@element-plus-0de4ac96.js";import{e as L}from"./echarts-9ae96183.js";import"./lodash-es-21c98b27.js";import"./@vueuse-89fc2c2e.js";import"./@popperjs-c75af06c.js";import"./@ctrl-f8748455.js";import"./dayjs-5c34775c.js";import"./async-validator-dee29e8b.js";import"./memoize-one-297ddbcb.js";import"./escape-html-64fe8e16.js";import"./normalize-wheel-es-ed76fb12.js";import"./@floating-ui-72671fae.js";import"./zrender-e9104294.js";(function(){const p=document.createElement("link").relList;if(p&&p.supports&&p.supports("modulepreload"))return;for(const d of document.querySelectorAll('link[rel="modulepreload"]'))b(d);new MutationObserver(d=>{for(const l of d)if(l.type==="childList")for(const c of l.addedNodes)c.tagName==="LINK"&&c.rel==="modulepreload"&&b(c)}).observe(document,{childList:!0,subtree:!0});function h(d){const l={};return d.integrity&&(l.integrity=d.integrity),d.referrerPolicy&&(l.referrerPolicy=d.referrerPolicy),d.crossOrigin==="use-credentials"?l.credentials="include":d.crossOrigin==="anonymous"?l.credentials="omit":l.credentials="same-origin",l}function b(d){if(d.ep)return;d.ep=!0;const l=h(d);fetch(d.href,l)}})();const x=(a,p)=>{const h=a.__vccOpts||a;for(const[b,d]of p)h[b]=d;return h},N={name:"app"},U={id:"app"};function q(a,p,h,b,d,l){const c=i("RouterView");return O(),T("div",U,[e(c)])}const j=x(N,[["render",q]]),W="modulepreload",Y=function(a){return"/"+a},P={},S=function(p,h,b){if(!h||h.length===0)return p();const d=document.getElementsByTagName("link");return Promise.all(h.map(l=>{if(l=Y(l),l in P)return;P[l]=!0;const c=l.endsWith(".css"),w=c?'[rel="stylesheet"]':"";if(!!b)for(let g=d.length-1;g>=0;g--){const f=d[g];if(f.href===l&&(!c||f.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${l}"]${w}`))return;const n=document.createElement("link");if(n.rel=c?"stylesheet":W,c||(n.as="script",n.crossOrigin=""),n.href=l,document.head.appendChild(n),c)return new Promise((g,f)=>{n.addEventListener("load",g),n.addEventListener("error",()=>f(new Error(`Unable to preload CSS for ${l}`)))})})).then(()=>p()).catch(l=>{const c=new Event("vite:preloadError",{cancelable:!0});if(c.payload=l,window.dispatchEvent(c),!c.defaultPrevented)throw l})},E="/assets/logo-a1cb7dc9.svg";const Q={},k=a=>(C("data-v-5aec12fb"),a=a(),A(),a),X=k(()=>t("img",{style:{width:"3em","aspect-ratio":"true"},src:E},null,-1)),K=k(()=>t("span",{style:{"margin-left":"10px","font-size":"1.2em","font-weight":"bold"}}," OmicsSuite ",-1)),Z=k(()=>t("div",{class:"flex-grow"},null,-1));function J(a,p,h,b,d,l){const c=i("el-menu-item"),w=i("DataLine"),u=i("el-icon"),n=i("Guide"),g=i("Suitcase"),f=i("BrushFilled"),y=i("Connection"),m=i("OfficeBuilding"),$=i("el-menu");return O(),z($,{"default-active":a.activeIndex,mode:"horizontal",ellipsis:"true","menu-trigger":"hover","collapse-transition":"true",router:""},{default:o(()=>[e(c,{index:"/"},{default:o(()=>[X,K]),_:1}),Z,e(c,{index:"/"},{default:o(()=>[e(u,null,{default:o(()=>[e(w)]),_:1}),r(" Home ")]),_:1}),e(c,{index:"/publish"},{default:o(()=>[e(u,null,{default:o(()=>[e(n)]),_:1}),r(" Publish ")]),_:1}),e(c,{index:"/downloads"},{default:o(()=>[e(u,null,{default:o(()=>[e(g)]),_:1}),r(" Downloads ")]),_:1}),e(c,{index:"/design"},{default:o(()=>[e(u,null,{default:o(()=>[e(f)]),_:1}),r(" Design ")]),_:1}),e(c,{index:"/friends"},{default:o(()=>[e(u,null,{default:o(()=>[e(y)]),_:1}),r(" Friends ")]),_:1}),e(c,{index:"/about"},{default:o(()=>[e(u,null,{default:o(()=>[e(m)]),_:1}),r(" About ")]),_:1})]),_:1},8,["default-active"])}const tt=x(Q,[["render",J],["__scopeId","data-v-5aec12fb"]]);const et={},_=a=>(C("data-v-05b8e7f0"),a=a(),A(),a),ot=_(()=>t("img",{src:E,style:{width:"100px","aspect-ratio":"true"}},null,-1)),st=_(()=>t("p",{style:{"font-weight":"bold","font-size":"1.3em"}},"OmicsSuite",-1)),nt=_(()=>t("p",{style:{"font-weight":"bold"}},"Copyright © 2022-2023 OmicsSuite. All Rights Reserved.",-1)),it=_(()=>t("p",{style:{"font-weight":"bold"}},"OmicsSuite: OmicsSuite: a customized and pipelined suite for analysis and visualization of multi-omics big data.",-1)),at=_(()=>t("p",{style:{"font-weight":"bold","font-size":"0.8em"}},"Citation: Ben-ben Miao, Wei Dong, Yi-xin Gu, Zhao-fang Han, Xuan Luo, Cai-huan Ke, Wei-wei You, OmicsSuite: a customized and pipelined suite for analysis and visualization of multi-omics big data, Horticulture Research, 2023;, uhad195, https://doi.org/10.1093/hr/uhad195.",-1)),lt=_(()=>t("br",null,null,-1)),ct={style:{"font-weight":"bold"}},rt=_(()=>t("a",{href:"https://github.com/benben-miao/",target:"_blank",style:{color:"#ffffff"}},"https://github.com/benben-miao/",-1)),dt={style:{"font-weight":"bold"}},ut=_(()=>t("a",{href:"benben.miao@outlook.com",target:"_blank",style:{color:"#ffffff"}},"benben.miao@outlook.com",-1)),_t={style:{"font-weight":"bold"}},pt=_(()=>t("a",{href:"https://www.xmu.edu.cn",target:"_blank",style:{color:"#ffffff"}},"https://www.xmu.edu.cn",-1)),mt={style:{"font-weight":"bold"}},ht=_(()=>t("a",{href:"https://omicssuite.github.io",target:"_blank",style:{color:"#ffffff"}},"https://omicssuite.github.io",-1)),ft={style:{"font-weight":"bold"}},gt=_(()=>t("a",{href:"https://github.com/OmicsSuite/",target:"_blank",style:{color:"#ffffff"}},"https://github.com/OmicsSuite/",-1)),bt={style:{"font-weight":"bold"}},yt=_(()=>t("a",{href:"https://space.bilibili.com/34105515/",target:"_blank",style:{color:"#ffffff"}},"https://space.bilibili.com/34105515/",-1)),vt=_(()=>t("br",null,null,-1)),wt={style:{"font-weight":"bold"}},St=_(()=>t("a",{href:"https://hiplot.org",target:"_blank",style:{color:"#ffffff"}},"https://hiplot.org",-1)),Ot={style:{"font-weight":"bold"}},xt=_(()=>t("a",{href:"https://github.com/hiplot/",target:"_blank",style:{color:"#ffffff"}},"https://github.com/hiplot/",-1)),$t=_(()=>t("br",null,null,-1)),Ct={style:{"font-weight":"bold"}},At=_(()=>t("a",{href:"https://github.com/benben-miao/TOmicsVis/",target:"_blank",style:{color:"#ffffff"}},"https://github.com/benben-miao/TOmicsVis/",-1)),kt={style:{"font-weight":"bold"}},Pt=_(()=>t("a",{href:"https://benben-miao.github.io/TOmicsVis/",target:"_blank",style:{color:"#ffffff"}},"https://benben-miao.github.io/TOmicsVis/",-1));function Tt(a,p,h,b,d,l){const c=i("el-col"),w=i("UserFilled"),u=i("el-icon"),n=i("Message"),g=i("School"),f=i("Compass"),y=i("Connection"),m=i("el-row");return O(),z(m,{gutter:0},{default:o(()=>[e(c,{span:24,sm:4,lg:4},{default:o(()=>[ot,st]),_:1}),e(c,{span:24,sm:10,lg:10},{default:o(()=>[nt,it,at,lt,t("p",ct,[e(u,null,{default:o(()=>[e(w)]),_:1}),r(" Author: benben-miao "),rt]),t("p",dt,[e(u,null,{default:o(()=>[e(n)]),_:1}),r(" Contact Email: "),ut]),t("p",_t,[e(u,null,{default:o(()=>[e(g)]),_:1}),r(" Institution: Xiamen University "),pt])]),_:1}),e(c,{span:24,sm:10,lg:10},{default:o(()=>[t("p",mt,[e(u,null,{default:o(()=>[e(f)]),_:1}),r(" OmicsSuite Website: "),ht]),t("p",ft,[e(u,null,{default:o(()=>[e(f)]),_:1}),r(" OmicsSuite GitHub: "),gt]),t("p",bt,[e(u,null,{default:o(()=>[e(f)]),_:1}),r(" OmicsSuite Tutorials: "),yt]),vt,t("p",wt,[e(u,null,{default:o(()=>[e(y)]),_:1}),r(" Hiplot Bioinformatics Cloud: "),St]),t("p",Ot,[e(u,null,{default:o(()=>[e(y)]),_:1}),r(" Hiplot GitHub: "),xt]),$t,t("p",Ct,[e(u,null,{default:o(()=>[e(y)]),_:1}),r(" TOmicsVis R Package: "),At]),t("p",kt,[e(u,null,{default:o(()=>[e(y)]),_:1}),r(" TOmicsVis API Docs: "),Pt])]),_:1})]),_:1})}const zt=x(et,[["render",Tt],["__scopeId","data-v-05b8e7f0"]]),Et="/assets/OmicsSuite-Home-d69adc49.png",Dt="/assets/OmicsSuite-Sequence-bf022155.jpg",Rt="/assets/OmicsSuite-Statistics-9ae30aa7.jpg",Mt="/assets/OmicsSuite-Algorithm-46de366f.jpg",Vt="/assets/OmicsSuite-Genomics-47102a84.jpg",Bt="/assets/OmicsSuite-Transcriptomics-2f2a6c5c.jpg",It="/assets/OmicsSuite-Metabolomics-6274d2ed.jpg",Ft="/assets/OmicsSuite-Microbe-3199fc92.png",Ht="/assets/OmicsSuite-SingleCell-41f867e0.jpg",Gt="/assets/OmicsSuite-App-5b117857.png";const Lt={components:{AppHeader:tt,AppFooter:zt},data(){return{}},mounted(){this.chart1()},methods:{downloadOmicsSuite(){const a="https://sourceforge.net/projects/omicssuite-github-io/files/latest/download";window.open(a,"_blank")},chart1(){var a=this.$echarts.init(document.getElementById("chart1")),p={title:{text:"OmicsSuite Categories and Apps (175)",subtext:"The Count of Applications!",left:"center"},legend:{bottom:"bottom"},tooltip:{trigger:"item",formatter:"{a}
{b} : {c} ({d}%)",backgroundColor:"#000000cd",padding:15,borderRadius:10,textStyle:{color:"#ffffff"}},series:[{name:"Charts",type:"pie",radius:[10,180],center:["50%","50%"],roseType:"area",itemStyle:{borderRadius:50,shadowColor:"#cdcdcd",shadowBlur:50},label:{show:!0,fontSize:13,fontWeight:"bolder"},data:[{value:20,name:"1. Sequence"},{value:16,name:"2. Statistics"},{value:24,name:"3. Algorithm"},{value:21,name:"4. Genomics"},{value:14,name:"5. Transcriptomics"},{value:11,name:"6. Enrichment"},{value:5,name:"7. Proteomics"},{value:18,name:"8. Metabolomics"},{value:7,name:"9. Clinical"},{value:8,name:"10. MicroOrganisms"},{value:22,name:"11. SingleCell"},{value:4,name:"12. Mathematics"},{value:5,name:"13. TableOperation"}]}],color:["#DC143C","#FF5555","#FF8C00","#F4A460","#228B22","#3CB371","#008B8B","#20B2AA","#4169E1","#1E90FF","#800080","#9932CC","#FFD700"]};a.setOption(p)}}},s=a=>(C("data-v-7fb8c8a6"),a=a(),A(),a),Nt={class:"common-layout"},Ut=s(()=>t("br",null,null,-1)),qt=s(()=>t("p",{style:{"font-size":"2em","font-weight":"bold",color:"#000000"}}," OmicsSuite ",-1)),jt=s(()=>t("p",{style:{"font-size":"1.2em","font-weight":"bold",color:"#008888","text-align":"justify"}}," OmicsSuite: a customized and pipelined suite for analysis and visualization of multi-omics big data. ",-1)),Wt=s(()=>t("br",null,null,-1)),Yt=s(()=>t("div",{class:"image-text-card"},[t("p",{style:{"font-size":"1.2em","text-align":"justify","line-height":"2em"}},[t("span",{style:{"font-weight":"bold"}},"OmicsSuite"),r(" ("),t("a",{href:"https://github.com/OmicsSuite/",target:"_blank",style:{color:"#008888"}},"https://github.com/OmicsSuite/"),r("), original name "),t("span",{style:{"font-weight":"bold"}},"BioSciTools"),r(", a desktop program developed based on "),t("span",{style:{"font-weight":"bold"}},"Java-v11.0.0 and R-v4.2.2"),r(", aims to make new exploration and contribution to the development of bioinformatics, and realize data analysis and visualization in the fields of "),t("span",{style:{"font-weight":"bold"}},"statistics, algorithm,"),r(" sequence analysis, "),t("span",{style:{"font-weight":"bold"}},"multi-omics (transcriptomics, genomics, proteomics, metabolomics, single cell),"),r(" microbiology, clinical, etc. ")])],-1)),Qt=s(()=>t("br",null,null,-1)),Xt=s(()=>t("p",{style:{"font-size":"1.2em","font-weight":"bold","text-align":"justify"}},[r("Ben-ben Miao, Wei Dong, Yi-xin Gu, Zhao-fang Han, Xuan Luo, Cai-huan Ke, Wei-wei You, OmicsSuite: a customized and pipelined suite for analysis and visualization of multi-omics big data, "),t("i",null,"Horticulture Research"),r(", 2023;, uhad195, "),t("a",{href:"https://doi.org/10.1093/hr/uhad195",target:"_blank",style:{color:"#008888"}},"https://doi.org/10.1093/hr/uhad195"),r(". ")],-1)),Kt=s(()=>t("br",null,null,-1)),Zt=s(()=>t("img",{src:Et,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),Jt=s(()=>t("p",{style:{"font-size":"2em","font-weight":"bold"}},"User Interface",-1)),te=s(()=>t("br",null,null,-1)),ee=s(()=>t("p",{class:"card-title"},[r(" OmicsSuite Website: "),t("br"),t("a",{href:"https://omicssuite.github.io",target:"_blank",style:{color:"#008888"}},"https://omicssuite.github.io")],-1)),oe=s(()=>t("br",null,null,-1)),se=s(()=>t("p",{class:"card-title"},[r(" OmicsSuite GitHub: "),t("br"),t("a",{href:"https://github.com/OmicsSuite/",target:"_blank",style:{color:"#008888"}},"https://github.com/OmicsSuite/")],-1)),ne=s(()=>t("br",null,null,-1)),ie=s(()=>t("p",{class:"card-title"},[r(" OmicsSuite Article: "),t("br"),t("a",{href:"https://doi.org/10.1093/hr/uhad195",target:"_blank",style:{color:"#008888"}},"https://doi.org/10.1093/hr/uhad195")],-1)),ae=s(()=>t("br",null,null,-1)),le=s(()=>t("span",{style:{"font-size":"1.5em","font-weight":"bold"}},"OmicsSuite Windows",-1)),ce=s(()=>t("br",null,null,-1)),re=s(()=>t("hr",null,null,-1)),de=s(()=>t("br",null,null,-1)),ue=s(()=>t("p",{style:{"font-size":"2em","font-weight":"bold",color:"#000000"}}," Presentation ",-1)),_e=s(()=>t("div",{class:"image-text-card"},[t("div",{id:"chart1",style:{width:"100%","min-height":"520px"}})],-1)),pe=s(()=>t("br",null,null,-1)),me={class:"image-text-card"},he=s(()=>t("p",{class:"card-title"},"1. Sequence Editor:",-1)),fe=s(()=>t("p",{class:"card-content"}," Sequence category in OmicsSuite includes a variety of sub-applications for querying or editing sequences, such as SeqsGC is used for sequences GC content statistics; RevCom performs reverse complement of DNA/RNA sequences, and SeqsTranslate realizes the translation of DNA sequences into amino acids (providing genetic codes such as Standard, Vertebrate Mitochondria, and Yeast Mitochondria). ",-1)),ge=s(()=>t("img",{src:Dt,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),be=s(()=>t("br",null,null,-1)),ye={class:"image-text-card"},ve=s(()=>t("p",{class:"card-title"},"2. Statistics visualization:",-1)),we=s(()=>t("p",{class:"card-content"}," OmicsSuite comprehensively refers to the advantages of Excel (Microsoft, Redmond, WA, USA), SPSS (Statistical Package for the Social Sciences) (IBM, Armonk, NY, USA), and Prism (GraphPad, San Diego, CA, USA) to develop a customized statistical results and visualization system. The Statistics category includes 15 distinct basic statistical visualization sub-applications. These include ScatterPlot, PieStat, BarStat, BoxStat, PairsCorrelation, RadarStat, DensityNormal, ViolinStat (combined names), etc. ",-1)),Se=s(()=>t("img",{src:Rt,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),Oe=s(()=>t("br",null,null,-1)),xe={class:"image-text-card"},$e=s(()=>t("p",{class:"card-title"},"3. Algorithm visualization:",-1)),Ce=s(()=>t("p",{class:"card-content"}," Algorithm category integrates algorithms and implements visualization methods such as dimensionality reduction and clustering analyses. We have developed corresponding sub-applications for the dimensionality reduction algorithms PCA (Principal Components Analysis), PCoA (Principal Coordinates Analysis), tSNE (t-distributed Stochastic Neighbor Embedding), UMAP (Uniform Manifold Approximation and Projection), NMDS (Non-metric Multi-Dimensional Scaling) and RDA (Redundancy analysis), respectively. ",-1)),Ae=s(()=>t("img",{src:Mt,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),ke=s(()=>t("br",null,null,-1)),Pe={class:"image-text-card"},Te=s(()=>t("p",{class:"card-title"},"4. Omics Genomics:",-1)),ze=s(()=>t("p",{class:"card-content"}," OmicsSuite has developed four types of genome circle maps based on the Rcircos and chloroplot packages to assist users in visualizing the genome. MitoGenome (Mitochondrial Genome) can parse GenBank-formatted mitochondrial genome information and display the GC content of each gene and of pseudogene markers. ChloroplastGenome (Chloroplast Genome) provides support for displaying the GC content of inverted repeat sequences (IRA/IRB), GC content of genes, pseudogene markers, and InDel information. ",-1)),Ee=s(()=>t("img",{src:Vt,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),De=s(()=>t("br",null,null,-1)),Re={class:"image-text-card"},Me=s(()=>t("p",{class:"card-title"},"5. Omics Transcriptomics:",-1)),Ve=s(()=>t("p",{class:"card-content"}," VolcanoPlot and MversusA (MAplot) (combined names) can intuitively display the differentially expressed genes between paired groups. ExpressionTrends (Expression Trends) can display the linear trajectories of all genes in multiple groups, making it convenient to observe the expression trends of genes with traits. Similarly, WGCNA performs a weighted gene co-expression network analysis, taking multiple-group gene expression data as input. ",-1)),Be=s(()=>t("img",{src:Bt,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),Ie=s(()=>t("br",null,null,-1)),Fe={class:"image-text-card"},He=s(()=>t("p",{class:"card-title"},"6. Omics Metabolomics:",-1)),Ge=s(()=>t("p",{class:"card-content"}," To integrate the functions provided by MetaboAnalystR and ropls packages, 18 sub-applications have been developed for metabolomics, including exploration of mass spectrometry raw mzML data (from UPLC-QE, HPLC-Q/TOF, HPLC-Ion_Trap, HPLC-Orbitrap, and other platforms) to downstream multivariate analysis. Sample MzML data are filtered based on QCs and then analyzed. ",-1)),Le=s(()=>t("img",{src:It,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),Ne=s(()=>t("br",null,null,-1)),Ue={class:"image-text-card"},qe=s(()=>t("p",{class:"card-title"},"7. Omics Microbe:",-1)),je=s(()=>t("p",{class:"card-content"}," The OTUtree (Operational Taxonomic Unit evolutionary Tree) in OmicsSuite uses the OTU table to construct a microbial phylogenetic tree, and the results are displayed as circle graphs. For microbial diversity analysis, TernaryDiagram (Ternary Diagram) can analyze the relative abundances of species in different groups. The coordinate axes represent three experimental groups and the dots represent taxonomic units (e.g., Genus). ",-1)),We=s(()=>t("img",{src:Ft,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),Ye=s(()=>t("br",null,null,-1)),Qe={class:"image-text-card"},Xe=s(()=>t("p",{class:"card-title"},"8. Omics SingleCell:",-1)),Ke=s(()=>t("p",{class:"card-content"}," OmicsSuite has developed a pipeline and interactive suite of 22 sub-applications for single-cell transcriptomics based on packages such as Seurat v4 and Monocle2 that provide interfaces for almost all parameters. The 10X Genomics raw data is output in Matrix format after being processed by Chromium, and the results can be read by all sub-applications and entered into the corresponding analysis steps. ",-1)),Ze=s(()=>t("img",{src:Ht,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),Je=s(()=>t("br",null,null,-1)),to={class:"image-text-card"},eo=s(()=>t("p",{class:"card-title"},"9. Omics AppUI:",-1)),oo=s(()=>t("p",{class:"card-content"}," The parameter component section includes both fixed and variable parameter components. The fixed components Progress, Demo, Clear, and Submit are part of the task management components used to display the current status, run example data, clear the current task, and submit a new task respectively. Other common components such as Themes, Colors, Fonts, Figure Width, Figure Height, and Figure DPI belong to the parameter specification components. ",-1)),so=s(()=>t("img",{src:Gt,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),no=s(()=>t("br",null,null,-1));function io(a,p,h,b,d,l){const c=i("AppHeader"),w=i("el-header"),u=i("el-alert"),n=i("el-col"),g=i("Download"),f=i("el-icon"),y=i("el-button"),m=i("el-row"),$=i("el-main"),D=i("AppFooter"),R=i("el-footer"),M=i("el-container"),V=i("el-backtop");return O(),T("div",Nt,[e(M,null,{default:o(()=>[e(w,null,{default:o(()=>[e(c)]),_:1}),e($,null,{default:o(()=>[t("div",null,[Ut,qt,jt,Wt,Yt,Qt,e(u,{title:"Citation: OmicsSuite",type:"warning",closable:!1},{default:o(()=>[Xt]),_:1}),Kt,e(m,{gutter:20},{default:o(()=>[e(n,{span:24,sm:24,lg:16},{default:o(()=>[Zt]),_:1}),e(n,{span:24,sm:24,lg:8},{default:o(()=>[Jt,te,ee,oe,se,ne,ie,ae,e(y,{onClick:l.downloadOmicsSuite,style:{"background-color":"#ff2040",color:"#ffffff",height:"45px"}},{default:o(()=>[e(f,{style:{"font-size":"1.5em"}},{default:o(()=>[e(g)]),_:1}),le]),_:1},8,["onClick"])]),_:1})]),_:1})]),ce,re,t("div",null,[de,ue,_e,pe,t("div",me,[e(m,{gutter:20},{default:o(()=>[e(n,{span:24,sm:8,lg:8},{default:o(()=>[he,fe]),_:1}),e(n,{span:24,sm:16,lg:16},{default:o(()=>[ge]),_:1})]),_:1})]),be,t("div",ye,[e(m,{gutter:20},{default:o(()=>[e(n,{span:24,sm:8,lg:8},{default:o(()=>[ve,we]),_:1}),e(n,{span:24,sm:16,lg:16},{default:o(()=>[Se]),_:1})]),_:1})]),Oe,t("div",xe,[e(m,{gutter:20},{default:o(()=>[e(n,{span:24,sm:8,lg:8},{default:o(()=>[$e,Ce]),_:1}),e(n,{span:24,sm:16,lg:16},{default:o(()=>[Ae]),_:1})]),_:1})]),ke,t("div",Pe,[e(m,{gutter:20},{default:o(()=>[e(n,{span:24,sm:8,lg:8},{default:o(()=>[Te,ze]),_:1}),e(n,{span:24,sm:16,lg:16},{default:o(()=>[Ee]),_:1})]),_:1})]),De,t("div",Re,[e(m,{gutter:20},{default:o(()=>[e(n,{span:24,sm:8,lg:8},{default:o(()=>[Me,Ve]),_:1}),e(n,{span:24,sm:16,lg:16},{default:o(()=>[Be]),_:1})]),_:1})]),Ie,t("div",Fe,[e(m,{gutter:20},{default:o(()=>[e(n,{span:24,sm:8,lg:8},{default:o(()=>[He,Ge]),_:1}),e(n,{span:24,sm:16,lg:16},{default:o(()=>[Le]),_:1})]),_:1})]),Ne,t("div",Ue,[e(m,{gutter:20},{default:o(()=>[e(n,{span:24,sm:8,lg:8},{default:o(()=>[qe,je]),_:1}),e(n,{span:24,sm:16,lg:16},{default:o(()=>[We]),_:1})]),_:1})]),Ye,t("div",Qe,[e(m,{gutter:20},{default:o(()=>[e(n,{span:24,sm:8,lg:8},{default:o(()=>[Xe,Ke]),_:1}),e(n,{span:24,sm:16,lg:16},{default:o(()=>[Ze]),_:1})]),_:1})]),Je,t("div",to,[e(m,{gutter:20},{default:o(()=>[e(n,{span:24,sm:8,lg:8},{default:o(()=>[eo,oo]),_:1}),e(n,{span:24,sm:16,lg:16},{default:o(()=>[so]),_:1})]),_:1})]),no])]),_:1}),e(R,null,{default:o(()=>[e(D)]),_:1})]),_:1}),e(V,{right:50,bottom:100})])}const ao=x(Lt,[["render",io],["__scopeId","data-v-7fb8c8a6"]]),lo=()=>S(()=>import("./AboutView-e5dc094b.js"),["assets/AboutView-e5dc094b.js","assets/@vue-248d724b.js","assets/vue-router-401d444e.js","assets/element-plus-ab7336d6.js","assets/lodash-es-21c98b27.js","assets/@vueuse-89fc2c2e.js","assets/@element-plus-0de4ac96.js","assets/@popperjs-c75af06c.js","assets/@ctrl-f8748455.js","assets/dayjs-5c34775c.js","assets/async-validator-dee29e8b.js","assets/memoize-one-297ddbcb.js","assets/escape-html-64fe8e16.js","assets/normalize-wheel-es-ed76fb12.js","assets/@floating-ui-72671fae.js","assets/element-plus-3066593d.css","assets/echarts-9ae96183.js","assets/zrender-e9104294.js","assets/AboutView-1060cc73.css"]),co=()=>S(()=>import("./PublishView-aac6c42f.js"),["assets/PublishView-aac6c42f.js","assets/@vue-248d724b.js","assets/vue-router-401d444e.js","assets/element-plus-ab7336d6.js","assets/lodash-es-21c98b27.js","assets/@vueuse-89fc2c2e.js","assets/@element-plus-0de4ac96.js","assets/@popperjs-c75af06c.js","assets/@ctrl-f8748455.js","assets/dayjs-5c34775c.js","assets/async-validator-dee29e8b.js","assets/memoize-one-297ddbcb.js","assets/escape-html-64fe8e16.js","assets/normalize-wheel-es-ed76fb12.js","assets/@floating-ui-72671fae.js","assets/element-plus-3066593d.css","assets/echarts-9ae96183.js","assets/zrender-e9104294.js","assets/PublishView-1d57be64.css"]),ro=()=>S(()=>import("./DownloadView-0f74b4c5.js"),["assets/DownloadView-0f74b4c5.js","assets/@vue-248d724b.js","assets/vue-router-401d444e.js","assets/element-plus-ab7336d6.js","assets/lodash-es-21c98b27.js","assets/@vueuse-89fc2c2e.js","assets/@element-plus-0de4ac96.js","assets/@popperjs-c75af06c.js","assets/@ctrl-f8748455.js","assets/dayjs-5c34775c.js","assets/async-validator-dee29e8b.js","assets/memoize-one-297ddbcb.js","assets/escape-html-64fe8e16.js","assets/normalize-wheel-es-ed76fb12.js","assets/@floating-ui-72671fae.js","assets/element-plus-3066593d.css","assets/echarts-9ae96183.js","assets/zrender-e9104294.js","assets/DownloadView-fcaad34b.css"]),uo=()=>S(()=>import("./DesignView-bbb1d48d.js"),["assets/DesignView-bbb1d48d.js","assets/@vue-248d724b.js","assets/vue-router-401d444e.js","assets/element-plus-ab7336d6.js","assets/lodash-es-21c98b27.js","assets/@vueuse-89fc2c2e.js","assets/@element-plus-0de4ac96.js","assets/@popperjs-c75af06c.js","assets/@ctrl-f8748455.js","assets/dayjs-5c34775c.js","assets/async-validator-dee29e8b.js","assets/memoize-one-297ddbcb.js","assets/escape-html-64fe8e16.js","assets/normalize-wheel-es-ed76fb12.js","assets/@floating-ui-72671fae.js","assets/element-plus-3066593d.css","assets/echarts-9ae96183.js","assets/zrender-e9104294.js","assets/DesignView-b55c72b2.css"]),_o=()=>S(()=>import("./FriendsView-7df84fbb.js"),["assets/FriendsView-7df84fbb.js","assets/@vue-248d724b.js","assets/vue-router-401d444e.js","assets/element-plus-ab7336d6.js","assets/lodash-es-21c98b27.js","assets/@vueuse-89fc2c2e.js","assets/@element-plus-0de4ac96.js","assets/@popperjs-c75af06c.js","assets/@ctrl-f8748455.js","assets/dayjs-5c34775c.js","assets/async-validator-dee29e8b.js","assets/memoize-one-297ddbcb.js","assets/escape-html-64fe8e16.js","assets/normalize-wheel-es-ed76fb12.js","assets/@floating-ui-72671fae.js","assets/element-plus-3066593d.css","assets/echarts-9ae96183.js","assets/zrender-e9104294.js","assets/FriendsView-cad92048.css"]),po=I({history:F("/"),routes:[{path:"/",name:"home",component:ao},{path:"/publish",name:"publish",component:co},{path:"/downloads",name:"downloads",component:ro},{path:"/design",name:"design",component:uo},{path:"/friends",name:"friends",component:_o},{path:"/about",name:"about",component:lo}]}),v=B(j);v.use(po);v.use(H);for(const[a,p]of Object.entries(G))v.component(a,p);v.config.globalProperties.$echarts=L;v.config.globalProperties.$appName="OmicsSuite";v.config.globalProperties.$serverHostPort="http://127.0.0.1:5000/";v.config.warnHandler=()=>null;v.mount("#app");export{tt as A,x as _,zt as a,Et as b,E as c}; diff --git a/assets/index-a1433cd4.css b/assets/index-a1433cd4.css deleted file mode 100644 index b35cbbb..0000000 --- a/assets/index-a1433cd4.css +++ /dev/null @@ -1 +0,0 @@ -:root{--vt-c-white: #ffffff;--vt-c-white-soft: #f8f8f8;--vt-c-white-mute: #f2f2f2;--vt-c-black: #181818;--vt-c-black-soft: #222222;--vt-c-black-mute: #282828;--vt-c-indigo: #2c3e50;--vt-c-divider-light-1: rgba(60, 60, 60, .29);--vt-c-divider-light-2: rgba(60, 60, 60, .12);--vt-c-divider-dark-1: rgba(84, 84, 84, .65);--vt-c-divider-dark-2: rgba(84, 84, 84, .48);--vt-c-text-light-1: var(--vt-c-indigo);--vt-c-text-light-2: rgba(60, 60, 60, .66);--vt-c-text-dark-1: var(--vt-c-white);--vt-c-text-dark-2: rgba(235, 235, 235, .64)}:root{--color-background: var(--vt-c-white);--color-background-soft: var(--vt-c-white-soft);--color-background-mute: var(--vt-c-white-mute);--color-border: var(--vt-c-divider-light-2);--color-border-hover: var(--vt-c-divider-light-1);--color-heading: var(--vt-c-text-light-1);--color-text: var(--vt-c-text-light-1);--section-gap: 160px}@media (prefers-color-scheme: dark){:root{--color-background: var(--vt-c-black);--color-background-soft: var(--vt-c-black-soft);--color-background-mute: var(--vt-c-black-mute);--color-border: var(--vt-c-divider-dark-2);--color-border-hover: var(--vt-c-divider-dark-1);--color-heading: var(--vt-c-text-dark-1);--color-text: var(--vt-c-text-dark-2)}}*,*:before,*:after{box-sizing:border-box;margin:0;font-weight:400}body{min-height:100vh;color:var(--color-text);background:var(--color-background);transition:color .5s,background-color .5s;line-height:1.6;font-family:Arial,Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;font-size:15px;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.el-menu[data-v-5aec12fb]{justify-content:center}.el-menu-item[data-v-5aec12fb]{color:#fff!important;font-size:1.2em!important;font-weight:bolder;transform:scale(.8)}.el-menu-item[data-v-5aec12fb]:hover{color:#000!important;font-size:1.2em!important;font-weight:bolder;transform:scale(.8);border-radius:10px}.el-icon[data-v-5aec12fb]{font-size:2em!important}:root{--el-menu-bg-color: #008888ee !important}.el-row[data-v-05b8e7f0]{min-height:200px;background-color:#333;padding:10px 20px}.el-col[data-v-05b8e7f0]{padding:10px;color:#fff}.el-header[data-v-ca6c443d]{padding:0;position:fixed;width:100%;z-index:100}.el-main[data-v-ca6c443d]{margin-top:60px;padding:0 20%}.el-footer[data-v-ca6c443d]{top:0;padding:0}.image-text-card[data-v-ca6c443d]{background-color:#fff;border-radius:10px;box-shadow:0 0 10px #cdcdcd;border:1px solid #cdcdcd;padding:10px}.card-title[data-v-ca6c443d]{font-size:1.2em;font-weight:700}.card-content[data-v-ca6c443d]{font-size:1em;text-align:justify;line-height:2em}@media (max-width: 1200px){.el-main[data-v-ca6c443d]{padding:0 10%}}@media (max-width: 800px){.el-main[data-v-ca6c443d]{padding:0 2%}} diff --git a/assets/index-ac1fd94d.css b/assets/index-ac1fd94d.css deleted file mode 100644 index cf2c9b1..0000000 --- a/assets/index-ac1fd94d.css +++ /dev/null @@ -1 +0,0 @@ -:root{--vt-c-white: #ffffff;--vt-c-white-soft: #f8f8f8;--vt-c-white-mute: #f2f2f2;--vt-c-black: #181818;--vt-c-black-soft: #222222;--vt-c-black-mute: #282828;--vt-c-indigo: #2c3e50;--vt-c-divider-light-1: rgba(60, 60, 60, .29);--vt-c-divider-light-2: rgba(60, 60, 60, .12);--vt-c-divider-dark-1: rgba(84, 84, 84, .65);--vt-c-divider-dark-2: rgba(84, 84, 84, .48);--vt-c-text-light-1: var(--vt-c-indigo);--vt-c-text-light-2: rgba(60, 60, 60, .66);--vt-c-text-dark-1: var(--vt-c-white);--vt-c-text-dark-2: rgba(235, 235, 235, .64)}:root{--color-background: var(--vt-c-white);--color-background-soft: var(--vt-c-white-soft);--color-background-mute: var(--vt-c-white-mute);--color-border: var(--vt-c-divider-light-2);--color-border-hover: var(--vt-c-divider-light-1);--color-heading: var(--vt-c-text-light-1);--color-text: var(--vt-c-text-light-1);--section-gap: 160px}@media (prefers-color-scheme: dark){:root{--color-background: var(--vt-c-black);--color-background-soft: var(--vt-c-black-soft);--color-background-mute: var(--vt-c-black-mute);--color-border: var(--vt-c-divider-dark-2);--color-border-hover: var(--vt-c-divider-dark-1);--color-heading: var(--vt-c-text-dark-1);--color-text: var(--vt-c-text-dark-2)}}*,*:before,*:after{box-sizing:border-box;margin:0;font-weight:400}body{min-height:100vh;color:var(--color-text);background:var(--color-background);transition:color .5s,background-color .5s;line-height:1.6;font-family:Arial,Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;font-size:15px;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.el-menu[data-v-5aec12fb]{justify-content:center}.el-menu-item[data-v-5aec12fb]{color:#fff!important;font-size:1.2em!important;font-weight:bolder;transform:scale(.8)}.el-menu-item[data-v-5aec12fb]:hover{color:#000!important;font-size:1.2em!important;font-weight:bolder;transform:scale(.8);border-radius:10px}.el-icon[data-v-5aec12fb]{font-size:2em!important}:root{--el-menu-bg-color: #008888ee !important}.el-row[data-v-05b8e7f0]{min-height:200px;background-color:#333;padding:10px 20px}.el-col[data-v-05b8e7f0]{padding:10px;color:#fff}.el-header[data-v-7fb8c8a6]{padding:0;position:fixed;width:100%;z-index:100}.el-main[data-v-7fb8c8a6]{margin-top:60px;padding:0 20%}.el-footer[data-v-7fb8c8a6]{top:0;padding:0}.image-text-card[data-v-7fb8c8a6]{background-color:#fff;border-radius:10px;box-shadow:0 0 10px #cdcdcd;border:1px solid #cdcdcd;padding:10px}.card-title[data-v-7fb8c8a6]{font-size:1.2em;font-weight:700}.card-content[data-v-7fb8c8a6]{font-size:1em;text-align:justify;line-height:2em}@media (max-width: 1200px){.el-main[data-v-7fb8c8a6]{padding:0 10%}}@media (max-width: 800px){.el-main[data-v-7fb8c8a6]{padding:0 2%}} diff --git a/assets/index-d094e413.js b/assets/index-d094e413.js deleted file mode 100644 index 070fa7c..0000000 --- a/assets/index-d094e413.js +++ /dev/null @@ -1 +0,0 @@ -import{ah as i,o as x,c as P,V as e,O as T,P as o,T as a,ax as A,ay as C,a as t,at as E}from"./@vue-248d724b.js";import{J as R,_ as S}from"./@splinetool-99227827.js";import{c as F,a as B}from"./vue-router-401d444e.js";import{i as H}from"./element-plus-ab7336d6.js";import{Q as G}from"./@element-plus-0de4ac96.js";import{e as L}from"./echarts-9ae96183.js";import"./lodash-es-21c98b27.js";import"./@vueuse-89fc2c2e.js";import"./@popperjs-c75af06c.js";import"./@ctrl-f8748455.js";import"./dayjs-5c34775c.js";import"./async-validator-dee29e8b.js";import"./memoize-one-297ddbcb.js";import"./escape-html-64fe8e16.js";import"./normalize-wheel-es-ed76fb12.js";import"./@floating-ui-72671fae.js";import"./zrender-e9104294.js";(function(){const _=document.createElement("link").relList;if(_&&_.supports&&_.supports("modulepreload"))return;for(const c of document.querySelectorAll('link[rel="modulepreload"]'))f(c);new MutationObserver(c=>{for(const p of c)if(p.type==="childList")for(const r of p.addedNodes)r.tagName==="LINK"&&r.rel==="modulepreload"&&f(r)}).observe(document,{childList:!0,subtree:!0});function h(c){const p={};return c.integrity&&(p.integrity=c.integrity),c.referrerPolicy&&(p.referrerPolicy=c.referrerPolicy),c.crossOrigin==="use-credentials"?p.credentials="include":c.crossOrigin==="anonymous"?p.credentials="omit":p.credentials="same-origin",p}function f(c){if(c.ep)return;c.ep=!0;const p=h(c);fetch(c.href,p)}})();const O=(n,_)=>{const h=n.__vccOpts||n;for(const[f,c]of _)h[f]=c;return h},N={name:"app"},U={id:"app"};function j(n,_,h,f,c,p){const r=i("RouterView");return x(),P("div",U,[e(r)])}const q=O(N,[["render",j]]),z="/assets/logo-a1cb7dc9.svg";const W={},k=n=>(A("data-v-5aec12fb"),n=n(),C(),n),Y=k(()=>t("img",{style:{width:"3em","aspect-ratio":"true"},src:z},null,-1)),Q=k(()=>t("span",{style:{"margin-left":"10px","font-size":"1.2em","font-weight":"bold"}}," OmicsSuite ",-1)),X=k(()=>t("div",{class:"flex-grow"},null,-1));function J(n,_,h,f,c,p){const r=i("el-menu-item"),v=i("DataLine"),d=i("el-icon"),l=i("Guide"),w=i("Suitcase"),y=i("BrushFilled"),g=i("Connection"),m=i("OfficeBuilding"),$=i("el-menu");return x(),T($,{"default-active":n.activeIndex,mode:"horizontal",ellipsis:"true","menu-trigger":"hover","collapse-transition":"true",router:""},{default:o(()=>[e(r,{index:"/"},{default:o(()=>[Y,Q]),_:1}),X,e(r,{index:"/"},{default:o(()=>[e(d,null,{default:o(()=>[e(v)]),_:1}),a(" Home ")]),_:1}),e(r,{index:"/publish"},{default:o(()=>[e(d,null,{default:o(()=>[e(l)]),_:1}),a(" Publish ")]),_:1}),e(r,{index:"/downloads"},{default:o(()=>[e(d,null,{default:o(()=>[e(w)]),_:1}),a(" Downloads ")]),_:1}),e(r,{index:"/design"},{default:o(()=>[e(d,null,{default:o(()=>[e(y)]),_:1}),a(" Design ")]),_:1}),e(r,{index:"/friends"},{default:o(()=>[e(d,null,{default:o(()=>[e(g)]),_:1}),a(" Friends ")]),_:1}),e(r,{index:"/about"},{default:o(()=>[e(d,null,{default:o(()=>[e(m)]),_:1}),a(" About ")]),_:1})]),_:1},8,["default-active"])}const K=O(W,[["render",J],["__scopeId","data-v-5aec12fb"]]);const Z={},u=n=>(A("data-v-05b8e7f0"),n=n(),C(),n),tt=u(()=>t("img",{src:z,style:{width:"100px","aspect-ratio":"true"}},null,-1)),et=u(()=>t("p",{style:{"font-weight":"bold","font-size":"1.3em"}},"OmicsSuite",-1)),ot=u(()=>t("p",{style:{"font-weight":"bold"}},"Copyright © 2022-2023 OmicsSuite. All Rights Reserved.",-1)),st=u(()=>t("p",{style:{"font-weight":"bold"}},"OmicsSuite: OmicsSuite: a customized and pipelined suite for analysis and visualization of multi-omics big data.",-1)),it=u(()=>t("p",{style:{"font-weight":"bold","font-size":"0.8em"}},"Citation: Ben-ben Miao, Wei Dong, Yi-xin Gu, Zhao-fang Han, Xuan Luo, Cai-huan Ke, Wei-wei You, OmicsSuite: a customized and pipelined suite for analysis and visualization of multi-omics big data, Horticulture Research, 2023;, uhad195, https://doi.org/10.1093/hr/uhad195.",-1)),nt=u(()=>t("br",null,null,-1)),at={style:{"font-weight":"bold"}},lt=u(()=>t("a",{href:"https://github.com/benben-miao/",target:"_blank",style:{color:"#ffffff"}},"https://github.com/benben-miao/",-1)),ct={style:{"font-weight":"bold"}},rt=u(()=>t("a",{href:"benben.miao@outlook.com",target:"_blank",style:{color:"#ffffff"}},"benben.miao@outlook.com",-1)),dt={style:{"font-weight":"bold"}},ut=u(()=>t("a",{href:"https://www.xmu.edu.cn",target:"_blank",style:{color:"#ffffff"}},"https://www.xmu.edu.cn",-1)),pt={style:{"font-weight":"bold"}},_t=u(()=>t("a",{href:"https://omicssuite.github.io",target:"_blank",style:{color:"#ffffff"}},"https://omicssuite.github.io",-1)),mt={style:{"font-weight":"bold"}},ht=u(()=>t("a",{href:"https://github.com/OmicsSuite/",target:"_blank",style:{color:"#ffffff"}},"https://github.com/OmicsSuite/",-1)),ft={style:{"font-weight":"bold"}},gt=u(()=>t("a",{href:"https://space.bilibili.com/34105515/",target:"_blank",style:{color:"#ffffff"}},"https://space.bilibili.com/34105515/",-1)),bt=u(()=>t("br",null,null,-1)),yt={style:{"font-weight":"bold"}},vt=u(()=>t("a",{href:"https://hiplot.org",target:"_blank",style:{color:"#ffffff"}},"https://hiplot.org",-1)),wt={style:{"font-weight":"bold"}},St=u(()=>t("a",{href:"https://github.com/hiplot/",target:"_blank",style:{color:"#ffffff"}},"https://github.com/hiplot/",-1)),xt=u(()=>t("br",null,null,-1)),Ot={style:{"font-weight":"bold"}},$t=u(()=>t("a",{href:"https://github.com/benben-miao/TOmicsVis/",target:"_blank",style:{color:"#ffffff"}},"https://github.com/benben-miao/TOmicsVis/",-1)),At={style:{"font-weight":"bold"}},Ct=u(()=>t("a",{href:"https://benben-miao.github.io/TOmicsVis/",target:"_blank",style:{color:"#ffffff"}},"https://benben-miao.github.io/TOmicsVis/",-1));function kt(n,_,h,f,c,p){const r=i("el-col"),v=i("UserFilled"),d=i("el-icon"),l=i("Message"),w=i("School"),y=i("Compass"),g=i("Connection"),m=i("el-row");return x(),T(m,{gutter:0},{default:o(()=>[e(r,{span:24,sm:4,lg:4},{default:o(()=>[tt,et]),_:1}),e(r,{span:24,sm:10,lg:10},{default:o(()=>[ot,st,it,nt,t("p",at,[e(d,null,{default:o(()=>[e(v)]),_:1}),a(" Author: benben-miao "),lt]),t("p",ct,[e(d,null,{default:o(()=>[e(l)]),_:1}),a(" Contact Email: "),rt]),t("p",dt,[e(d,null,{default:o(()=>[e(w)]),_:1}),a(" Institution: Xiamen University "),ut])]),_:1}),e(r,{span:24,sm:10,lg:10},{default:o(()=>[t("p",pt,[e(d,null,{default:o(()=>[e(y)]),_:1}),a(" OmicsSuite Website: "),_t]),t("p",mt,[e(d,null,{default:o(()=>[e(y)]),_:1}),a(" OmicsSuite GitHub: "),ht]),t("p",ft,[e(d,null,{default:o(()=>[e(y)]),_:1}),a(" OmicsSuite Tutorials: "),gt]),bt,t("p",yt,[e(d,null,{default:o(()=>[e(g)]),_:1}),a(" Hiplot Bioinformatics Cloud: "),vt]),t("p",wt,[e(d,null,{default:o(()=>[e(g)]),_:1}),a(" Hiplot GitHub: "),St]),xt,t("p",Ot,[e(d,null,{default:o(()=>[e(g)]),_:1}),a(" TOmicsVis R Package: "),$t]),t("p",At,[e(d,null,{default:o(()=>[e(g)]),_:1}),a(" TOmicsVis API Docs: "),Ct])]),_:1})]),_:1})}const Pt=O(Z,[["render",kt],["__scopeId","data-v-05b8e7f0"]]),Tt="/assets/OmicsSuite-Home-d69adc49.png",zt="/assets/OmicsSuite-Sequence-bf022155.jpg",Mt="/assets/OmicsSuite-Statistics-9ae30aa7.jpg",Dt="/assets/OmicsSuite-Algorithm-46de366f.jpg",It="/assets/OmicsSuite-Genomics-47102a84.jpg",Vt="/assets/OmicsSuite-Transcriptomics-2f2a6c5c.jpg",Et="/assets/OmicsSuite-Metabolomics-6274d2ed.jpg",Rt="/assets/OmicsSuite-Microbe-3199fc92.png",Ft="/assets/OmicsSuite-SingleCell-41f867e0.jpg",Bt="/assets/OmicsSuite-App-5b117857.png";const Ht={components:{AppHeader:K,AppFooter:Pt},data(){return{}},mounted(){this.chart1();const n=document.getElementById("canvas3d");new R(n).load("https://prod.spline.design/E5dcxg0fysxLUpyA/scene.splinecode")},methods:{downloadOmicsSuite(){const n="https://sourceforge.net/projects/omicssuite-github-io/files/latest/download";window.open(n,"_blank")},chart1(){var n=this.$echarts.init(document.getElementById("chart1")),_={title:{text:"OmicsSuite Categories and Apps (175)",subtext:"The Count of Applications!",left:"center"},legend:{bottom:"bottom"},tooltip:{trigger:"item",formatter:"{a}
{b} : {c} ({d}%)",backgroundColor:"#000000cd",padding:15,borderRadius:10,textStyle:{color:"#ffffff"}},series:[{name:"Charts",type:"pie",radius:[10,180],center:["50%","50%"],roseType:"area",itemStyle:{borderRadius:50,shadowColor:"#cdcdcd",shadowBlur:50},label:{show:!0,fontSize:13,fontWeight:"bolder"},data:[{value:20,name:"1. Sequence"},{value:16,name:"2. Statistics"},{value:24,name:"3. Algorithm"},{value:21,name:"4. Genomics"},{value:14,name:"5. Transcriptomics"},{value:11,name:"6. Enrichment"},{value:5,name:"7. Proteomics"},{value:18,name:"8. Metabolomics"},{value:7,name:"9. Clinical"},{value:8,name:"10. MicroOrganisms"},{value:22,name:"11. SingleCell"},{value:4,name:"12. Mathematics"},{value:5,name:"13. TableOperation"}]}],color:["#DC143C","#FF5555","#FF8C00","#F4A460","#228B22","#3CB371","#008B8B","#20B2AA","#4169E1","#1E90FF","#800080","#9932CC","#FFD700"]};n.setOption(_)}}},s=n=>(A("data-v-25eaad92"),n=n(),C(),n),Gt={class:"common-layout"},Lt=s(()=>t("div",{style:{"margin-top":"60px",position:"relative",width:"100%",height:"600px"}},[t("canvas",{id:"canvas3d",style:{position:"absolute",top:"0",left:"0","z-index":"0",width:"100%",height:"100%"}}),t("div",{style:{width:"90%",padding:"10px",position:"absolute",top:"50%",left:"50%",transform:"translate(-50%, -50%)","z-index":"1","background-color":"#cdcdcd33","border-radius":"10px"}},[t("br"),t("p",{style:{"font-size":"4em","font-weight":"bold",color:"#000000"}}," OmicsSuite "),t("br"),t("p",{style:{"font-size":"1.8em","font-weight":"bold",color:"#008888","text-align":"justify"}}," OmicsSuite: a customized and pipelined suite for analysis and visualization of multi-omics big data. ")])],-1)),Nt={class:"page"},Ut=s(()=>t("br",null,null,-1)),jt=s(()=>t("div",{class:"image-text-card"},[t("p",{style:{"font-size":"1.2em","text-align":"justify","line-height":"2em"}},[t("span",{style:{"font-weight":"bold"}},"OmicsSuite"),a(" ("),t("a",{href:"https://github.com/OmicsSuite/",target:"_blank",style:{color:"#008888"}},"https://github.com/OmicsSuite/"),a("), original name "),t("span",{style:{"font-weight":"bold"}},"BioSciTools"),a(", a desktop program developed based on "),t("span",{style:{"font-weight":"bold"}},"Java-v11.0.0 and R-v4.2.2"),a(", aims to make new exploration and contribution to the development of bioinformatics, and realize data analysis and visualization in the fields of "),t("span",{style:{"font-weight":"bold"}},"statistics, algorithm,"),a(" sequence analysis, "),t("span",{style:{"font-weight":"bold"}},"multi-omics (transcriptomics, genomics, proteomics, metabolomics, single cell),"),a(" microbiology, clinical, etc. ")])],-1)),qt=s(()=>t("br",null,null,-1)),Wt=s(()=>t("p",{style:{"font-size":"1.2em","font-weight":"bold","text-align":"justify"}},[a("Ben-ben Miao, Wei Dong, Yi-xin Gu, Zhao-fang Han, Xuan Luo, Cai-huan Ke, Wei-wei You, OmicsSuite: a customized and pipelined suite for analysis and visualization of multi-omics big data, "),t("i",null,"Horticulture Research"),a(", 2023;, uhad195, "),t("a",{href:"https://doi.org/10.1093/hr/uhad195",target:"_blank",style:{color:"#008888"}},"https://doi.org/10.1093/hr/uhad195"),a(". ")],-1)),Yt=s(()=>t("br",null,null,-1)),Qt=s(()=>t("img",{src:Tt,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),Xt=s(()=>t("p",{style:{"font-size":"2em","font-weight":"bold"}},"User Interface",-1)),Jt=s(()=>t("br",null,null,-1)),Kt=s(()=>t("p",{class:"card-title"},[a(" OmicsSuite Website: "),t("br"),t("a",{href:"https://omicssuite.github.io",target:"_blank",style:{color:"#008888"}},"https://omicssuite.github.io")],-1)),Zt=s(()=>t("br",null,null,-1)),te=s(()=>t("p",{class:"card-title"},[a(" OmicsSuite GitHub: "),t("br"),t("a",{href:"https://github.com/OmicsSuite/",target:"_blank",style:{color:"#008888"}},"https://github.com/OmicsSuite/")],-1)),ee=s(()=>t("br",null,null,-1)),oe=s(()=>t("p",{class:"card-title"},[a(" OmicsSuite Article: "),t("br"),t("a",{href:"https://doi.org/10.1093/hr/uhad195",target:"_blank",style:{color:"#008888"}},"https://doi.org/10.1093/hr/uhad195")],-1)),se=s(()=>t("br",null,null,-1)),ie=s(()=>t("span",{style:{"font-size":"1.5em","font-weight":"bold"}},"OmicsSuite Windows",-1)),ne=s(()=>t("br",null,null,-1)),ae=s(()=>t("hr",null,null,-1)),le=s(()=>t("br",null,null,-1)),ce=s(()=>t("p",{style:{"font-size":"2em","font-weight":"bold",color:"#000000"}}," Presentation ",-1)),re=s(()=>t("div",{class:"image-text-card"},[t("div",{id:"chart1",style:{width:"100%","min-height":"520px"}})],-1)),de=s(()=>t("br",null,null,-1)),ue={class:"image-text-card"},pe=s(()=>t("p",{class:"card-title"},"1. Sequence Editor:",-1)),_e=s(()=>t("p",{class:"card-content"}," Sequence category in OmicsSuite includes a variety of sub-applications for querying or editing sequences, such as SeqsGC is used for sequences GC content statistics; RevCom performs reverse complement of DNA/RNA sequences, and SeqsTranslate realizes the translation of DNA sequences into amino acids (providing genetic codes such as Standard, Vertebrate Mitochondria, and Yeast Mitochondria). ",-1)),me=s(()=>t("img",{src:zt,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),he=s(()=>t("br",null,null,-1)),fe={class:"image-text-card"},ge=s(()=>t("p",{class:"card-title"},"2. Statistics visualization:",-1)),be=s(()=>t("p",{class:"card-content"}," OmicsSuite comprehensively refers to the advantages of Excel (Microsoft, Redmond, WA, USA), SPSS (Statistical Package for the Social Sciences) (IBM, Armonk, NY, USA), and Prism (GraphPad, San Diego, CA, USA) to develop a customized statistical results and visualization system. The Statistics category includes 15 distinct basic statistical visualization sub-applications. These include ScatterPlot, PieStat, BarStat, BoxStat, PairsCorrelation, RadarStat, DensityNormal, ViolinStat (combined names), etc. ",-1)),ye=s(()=>t("img",{src:Mt,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),ve=s(()=>t("br",null,null,-1)),we={class:"image-text-card"},Se=s(()=>t("p",{class:"card-title"},"3. Algorithm visualization:",-1)),xe=s(()=>t("p",{class:"card-content"}," Algorithm category integrates algorithms and implements visualization methods such as dimensionality reduction and clustering analyses. We have developed corresponding sub-applications for the dimensionality reduction algorithms PCA (Principal Components Analysis), PCoA (Principal Coordinates Analysis), tSNE (t-distributed Stochastic Neighbor Embedding), UMAP (Uniform Manifold Approximation and Projection), NMDS (Non-metric Multi-Dimensional Scaling) and RDA (Redundancy analysis), respectively. ",-1)),Oe=s(()=>t("img",{src:Dt,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),$e=s(()=>t("br",null,null,-1)),Ae={class:"image-text-card"},Ce=s(()=>t("p",{class:"card-title"},"4. Omics Genomics:",-1)),ke=s(()=>t("p",{class:"card-content"}," OmicsSuite has developed four types of genome circle maps based on the Rcircos and chloroplot packages to assist users in visualizing the genome. MitoGenome (Mitochondrial Genome) can parse GenBank-formatted mitochondrial genome information and display the GC content of each gene and of pseudogene markers. ChloroplastGenome (Chloroplast Genome) provides support for displaying the GC content of inverted repeat sequences (IRA/IRB), GC content of genes, pseudogene markers, and InDel information. ",-1)),Pe=s(()=>t("img",{src:It,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),Te=s(()=>t("br",null,null,-1)),ze={class:"image-text-card"},Me=s(()=>t("p",{class:"card-title"},"5. Omics Transcriptomics:",-1)),De=s(()=>t("p",{class:"card-content"}," VolcanoPlot and MversusA (MAplot) (combined names) can intuitively display the differentially expressed genes between paired groups. ExpressionTrends (Expression Trends) can display the linear trajectories of all genes in multiple groups, making it convenient to observe the expression trends of genes with traits. Similarly, WGCNA performs a weighted gene co-expression network analysis, taking multiple-group gene expression data as input. ",-1)),Ie=s(()=>t("img",{src:Vt,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),Ve=s(()=>t("br",null,null,-1)),Ee={class:"image-text-card"},Re=s(()=>t("p",{class:"card-title"},"6. Omics Metabolomics:",-1)),Fe=s(()=>t("p",{class:"card-content"}," To integrate the functions provided by MetaboAnalystR and ropls packages, 18 sub-applications have been developed for metabolomics, including exploration of mass spectrometry raw mzML data (from UPLC-QE, HPLC-Q/TOF, HPLC-Ion_Trap, HPLC-Orbitrap, and other platforms) to downstream multivariate analysis. Sample MzML data are filtered based on QCs and then analyzed. ",-1)),Be=s(()=>t("img",{src:Et,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),He=s(()=>t("br",null,null,-1)),Ge={class:"image-text-card"},Le=s(()=>t("p",{class:"card-title"},"7. Omics Microbe:",-1)),Ne=s(()=>t("p",{class:"card-content"}," The OTUtree (Operational Taxonomic Unit evolutionary Tree) in OmicsSuite uses the OTU table to construct a microbial phylogenetic tree, and the results are displayed as circle graphs. For microbial diversity analysis, TernaryDiagram (Ternary Diagram) can analyze the relative abundances of species in different groups. The coordinate axes represent three experimental groups and the dots represent taxonomic units (e.g., Genus). ",-1)),Ue=s(()=>t("img",{src:Rt,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),je=s(()=>t("br",null,null,-1)),qe={class:"image-text-card"},We=s(()=>t("p",{class:"card-title"},"8. Omics SingleCell:",-1)),Ye=s(()=>t("p",{class:"card-content"}," OmicsSuite has developed a pipeline and interactive suite of 22 sub-applications for single-cell transcriptomics based on packages such as Seurat v4 and Monocle2 that provide interfaces for almost all parameters. The 10X Genomics raw data is output in Matrix format after being processed by Chromium, and the results can be read by all sub-applications and entered into the corresponding analysis steps. ",-1)),Qe=s(()=>t("img",{src:Ft,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),Xe=s(()=>t("br",null,null,-1)),Je={class:"image-text-card"},Ke=s(()=>t("p",{class:"card-title"},"9. Omics AppUI:",-1)),Ze=s(()=>t("p",{class:"card-content"}," The parameter component section includes both fixed and variable parameter components. The fixed components Progress, Demo, Clear, and Submit are part of the task management components used to display the current status, run example data, clear the current task, and submit a new task respectively. Other common components such as Themes, Colors, Fonts, Figure Width, Figure Height, and Figure DPI belong to the parameter specification components. ",-1)),to=s(()=>t("img",{src:Bt,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),eo=s(()=>t("br",null,null,-1));function oo(n,_,h,f,c,p){const r=i("AppHeader"),v=i("el-header"),d=i("el-alert"),l=i("el-col"),w=i("Download"),y=i("el-icon"),g=i("el-button"),m=i("el-row"),$=i("el-main"),M=i("AppFooter"),D=i("el-footer"),I=i("el-container"),V=i("el-backtop");return x(),P("div",Gt,[e(I,null,{default:o(()=>[e(v,null,{default:o(()=>[e(r)]),_:1}),e($,null,{default:o(()=>[Lt,t("div",Nt,[t("div",null,[Ut,jt,qt,e(d,{title:"Citation: OmicsSuite",type:"warning",closable:!1},{default:o(()=>[Wt]),_:1}),Yt,e(m,{gutter:20},{default:o(()=>[e(l,{span:24,sm:24,lg:16},{default:o(()=>[Qt]),_:1}),e(l,{span:24,sm:24,lg:8},{default:o(()=>[Xt,Jt,Kt,Zt,te,ee,oe,se,e(g,{onClick:p.downloadOmicsSuite,style:{"background-color":"#ff2040",color:"#ffffff",height:"45px"}},{default:o(()=>[e(y,{style:{"font-size":"1.5em"}},{default:o(()=>[e(w)]),_:1}),ie]),_:1},8,["onClick"])]),_:1})]),_:1})]),ne,ae,t("div",null,[le,ce,re,de,t("div",ue,[e(m,{gutter:20},{default:o(()=>[e(l,{span:24,sm:8,lg:8},{default:o(()=>[pe,_e]),_:1}),e(l,{span:24,sm:16,lg:16},{default:o(()=>[me]),_:1})]),_:1})]),he,t("div",fe,[e(m,{gutter:20},{default:o(()=>[e(l,{span:24,sm:8,lg:8},{default:o(()=>[ge,be]),_:1}),e(l,{span:24,sm:16,lg:16},{default:o(()=>[ye]),_:1})]),_:1})]),ve,t("div",we,[e(m,{gutter:20},{default:o(()=>[e(l,{span:24,sm:8,lg:8},{default:o(()=>[Se,xe]),_:1}),e(l,{span:24,sm:16,lg:16},{default:o(()=>[Oe]),_:1})]),_:1})]),$e,t("div",Ae,[e(m,{gutter:20},{default:o(()=>[e(l,{span:24,sm:8,lg:8},{default:o(()=>[Ce,ke]),_:1}),e(l,{span:24,sm:16,lg:16},{default:o(()=>[Pe]),_:1})]),_:1})]),Te,t("div",ze,[e(m,{gutter:20},{default:o(()=>[e(l,{span:24,sm:8,lg:8},{default:o(()=>[Me,De]),_:1}),e(l,{span:24,sm:16,lg:16},{default:o(()=>[Ie]),_:1})]),_:1})]),Ve,t("div",Ee,[e(m,{gutter:20},{default:o(()=>[e(l,{span:24,sm:8,lg:8},{default:o(()=>[Re,Fe]),_:1}),e(l,{span:24,sm:16,lg:16},{default:o(()=>[Be]),_:1})]),_:1})]),He,t("div",Ge,[e(m,{gutter:20},{default:o(()=>[e(l,{span:24,sm:8,lg:8},{default:o(()=>[Le,Ne]),_:1}),e(l,{span:24,sm:16,lg:16},{default:o(()=>[Ue]),_:1})]),_:1})]),je,t("div",qe,[e(m,{gutter:20},{default:o(()=>[e(l,{span:24,sm:8,lg:8},{default:o(()=>[We,Ye]),_:1}),e(l,{span:24,sm:16,lg:16},{default:o(()=>[Qe]),_:1})]),_:1})]),Xe,t("div",Je,[e(m,{gutter:20},{default:o(()=>[e(l,{span:24,sm:8,lg:8},{default:o(()=>[Ke,Ze]),_:1}),e(l,{span:24,sm:16,lg:16},{default:o(()=>[to]),_:1})]),_:1})]),eo])])]),_:1}),e(D,null,{default:o(()=>[e(M)]),_:1})]),_:1}),e(V,{right:50,bottom:100})])}const so=O(Ht,[["render",oo],["__scopeId","data-v-25eaad92"]]),io=()=>S(()=>import("./AboutView-2fe9222f.js"),["assets/AboutView-2fe9222f.js","assets/@vue-248d724b.js","assets/@splinetool-99227827.js","assets/vue-router-401d444e.js","assets/element-plus-ab7336d6.js","assets/lodash-es-21c98b27.js","assets/@vueuse-89fc2c2e.js","assets/@element-plus-0de4ac96.js","assets/@popperjs-c75af06c.js","assets/@ctrl-f8748455.js","assets/dayjs-5c34775c.js","assets/async-validator-dee29e8b.js","assets/memoize-one-297ddbcb.js","assets/escape-html-64fe8e16.js","assets/normalize-wheel-es-ed76fb12.js","assets/@floating-ui-72671fae.js","assets/element-plus-3066593d.css","assets/echarts-9ae96183.js","assets/zrender-e9104294.js","assets/AboutView-06976582.css"]),no=()=>S(()=>import("./PublishView-6b0529cb.js"),["assets/PublishView-6b0529cb.js","assets/@vue-248d724b.js","assets/@splinetool-99227827.js","assets/vue-router-401d444e.js","assets/element-plus-ab7336d6.js","assets/lodash-es-21c98b27.js","assets/@vueuse-89fc2c2e.js","assets/@element-plus-0de4ac96.js","assets/@popperjs-c75af06c.js","assets/@ctrl-f8748455.js","assets/dayjs-5c34775c.js","assets/async-validator-dee29e8b.js","assets/memoize-one-297ddbcb.js","assets/escape-html-64fe8e16.js","assets/normalize-wheel-es-ed76fb12.js","assets/@floating-ui-72671fae.js","assets/element-plus-3066593d.css","assets/echarts-9ae96183.js","assets/zrender-e9104294.js","assets/PublishView-d228bf6d.css"]),ao=()=>S(()=>import("./DownloadView-ecc01907.js"),["assets/DownloadView-ecc01907.js","assets/@vue-248d724b.js","assets/@splinetool-99227827.js","assets/vue-router-401d444e.js","assets/element-plus-ab7336d6.js","assets/lodash-es-21c98b27.js","assets/@vueuse-89fc2c2e.js","assets/@element-plus-0de4ac96.js","assets/@popperjs-c75af06c.js","assets/@ctrl-f8748455.js","assets/dayjs-5c34775c.js","assets/async-validator-dee29e8b.js","assets/memoize-one-297ddbcb.js","assets/escape-html-64fe8e16.js","assets/normalize-wheel-es-ed76fb12.js","assets/@floating-ui-72671fae.js","assets/element-plus-3066593d.css","assets/echarts-9ae96183.js","assets/zrender-e9104294.js","assets/DownloadView-9b544416.css"]),lo=()=>S(()=>import("./DesignView-0cf80983.js"),["assets/DesignView-0cf80983.js","assets/@vue-248d724b.js","assets/@splinetool-99227827.js","assets/vue-router-401d444e.js","assets/element-plus-ab7336d6.js","assets/lodash-es-21c98b27.js","assets/@vueuse-89fc2c2e.js","assets/@element-plus-0de4ac96.js","assets/@popperjs-c75af06c.js","assets/@ctrl-f8748455.js","assets/dayjs-5c34775c.js","assets/async-validator-dee29e8b.js","assets/memoize-one-297ddbcb.js","assets/escape-html-64fe8e16.js","assets/normalize-wheel-es-ed76fb12.js","assets/@floating-ui-72671fae.js","assets/element-plus-3066593d.css","assets/echarts-9ae96183.js","assets/zrender-e9104294.js","assets/DesignView-9614fae7.css"]),co=()=>S(()=>import("./FriendsView-0d93fd03.js"),["assets/FriendsView-0d93fd03.js","assets/@vue-248d724b.js","assets/@splinetool-99227827.js","assets/vue-router-401d444e.js","assets/element-plus-ab7336d6.js","assets/lodash-es-21c98b27.js","assets/@vueuse-89fc2c2e.js","assets/@element-plus-0de4ac96.js","assets/@popperjs-c75af06c.js","assets/@ctrl-f8748455.js","assets/dayjs-5c34775c.js","assets/async-validator-dee29e8b.js","assets/memoize-one-297ddbcb.js","assets/escape-html-64fe8e16.js","assets/normalize-wheel-es-ed76fb12.js","assets/@floating-ui-72671fae.js","assets/element-plus-3066593d.css","assets/echarts-9ae96183.js","assets/zrender-e9104294.js","assets/FriendsView-cd50d063.css"]),ro=F({history:B(),routes:[{path:"/",name:"home",component:so},{path:"/publish",name:"publish",component:no},{path:"/downloads",name:"downloads",component:ao},{path:"/design",name:"design",component:lo},{path:"/friends",name:"friends",component:co},{path:"/about",name:"about",component:io},{path:"/404",name:"404",redirect:"/"},{path:"/:pathMatch(.*)",redirect:"/"}]}),b=E(q);b.use(ro);b.use(H);for(const[n,_]of Object.entries(G))b.component(n,_);b.config.globalProperties.$echarts=L;b.config.globalProperties.$appName="OmicsSuite";b.config.globalProperties.$serverHostPort="http://127.0.0.1:5000/";b.config.warnHandler=()=>null;b.mount("#app");export{K as A,O as _,Pt as a,Tt as b,z as c}; diff --git a/assets/index-eab933a6.js b/assets/index-eab933a6.js deleted file mode 100644 index 89969a1..0000000 --- a/assets/index-eab933a6.js +++ /dev/null @@ -1 +0,0 @@ -import{ah as i,o as x,c as P,V as e,O as T,P as o,T as a,ax as A,ay as C,a as t,at as E}from"./@vue-248d724b.js";import{J as R,_ as S}from"./@splinetool-99227827.js";import{c as F,a as B}from"./vue-router-401d444e.js";import{i as H}from"./element-plus-ab7336d6.js";import{Q as G}from"./@element-plus-0de4ac96.js";import{e as L}from"./echarts-9ae96183.js";import"./lodash-es-21c98b27.js";import"./@vueuse-89fc2c2e.js";import"./@popperjs-c75af06c.js";import"./@ctrl-f8748455.js";import"./dayjs-5c34775c.js";import"./async-validator-dee29e8b.js";import"./memoize-one-297ddbcb.js";import"./escape-html-64fe8e16.js";import"./normalize-wheel-es-ed76fb12.js";import"./@floating-ui-72671fae.js";import"./zrender-e9104294.js";(function(){const _=document.createElement("link").relList;if(_&&_.supports&&_.supports("modulepreload"))return;for(const c of document.querySelectorAll('link[rel="modulepreload"]'))f(c);new MutationObserver(c=>{for(const p of c)if(p.type==="childList")for(const r of p.addedNodes)r.tagName==="LINK"&&r.rel==="modulepreload"&&f(r)}).observe(document,{childList:!0,subtree:!0});function h(c){const p={};return c.integrity&&(p.integrity=c.integrity),c.referrerPolicy&&(p.referrerPolicy=c.referrerPolicy),c.crossOrigin==="use-credentials"?p.credentials="include":c.crossOrigin==="anonymous"?p.credentials="omit":p.credentials="same-origin",p}function f(c){if(c.ep)return;c.ep=!0;const p=h(c);fetch(c.href,p)}})();const O=(n,_)=>{const h=n.__vccOpts||n;for(const[f,c]of _)h[f]=c;return h},N={name:"app"},U={id:"app"};function j(n,_,h,f,c,p){const r=i("RouterView");return x(),P("div",U,[e(r)])}const q=O(N,[["render",j]]),z="/assets/logo-a1cb7dc9.svg";const W={},k=n=>(A("data-v-5aec12fb"),n=n(),C(),n),Y=k(()=>t("img",{style:{width:"3em","aspect-ratio":"true"},src:z},null,-1)),Q=k(()=>t("span",{style:{"margin-left":"10px","font-size":"1.2em","font-weight":"bold"}}," OmicsSuite ",-1)),X=k(()=>t("div",{class:"flex-grow"},null,-1));function J(n,_,h,f,c,p){const r=i("el-menu-item"),v=i("DataLine"),d=i("el-icon"),l=i("Guide"),w=i("Suitcase"),y=i("BrushFilled"),g=i("Connection"),m=i("OfficeBuilding"),$=i("el-menu");return x(),T($,{"default-active":n.activeIndex,mode:"horizontal",ellipsis:"true","menu-trigger":"hover","collapse-transition":"true",router:""},{default:o(()=>[e(r,{index:"/"},{default:o(()=>[Y,Q]),_:1}),X,e(r,{index:"/"},{default:o(()=>[e(d,null,{default:o(()=>[e(v)]),_:1}),a(" Home ")]),_:1}),e(r,{index:"/publish"},{default:o(()=>[e(d,null,{default:o(()=>[e(l)]),_:1}),a(" Publish ")]),_:1}),e(r,{index:"/downloads"},{default:o(()=>[e(d,null,{default:o(()=>[e(w)]),_:1}),a(" Downloads ")]),_:1}),e(r,{index:"/design"},{default:o(()=>[e(d,null,{default:o(()=>[e(y)]),_:1}),a(" Design ")]),_:1}),e(r,{index:"/friends"},{default:o(()=>[e(d,null,{default:o(()=>[e(g)]),_:1}),a(" Friends ")]),_:1}),e(r,{index:"/about"},{default:o(()=>[e(d,null,{default:o(()=>[e(m)]),_:1}),a(" About ")]),_:1})]),_:1},8,["default-active"])}const K=O(W,[["render",J],["__scopeId","data-v-5aec12fb"]]);const Z={},u=n=>(A("data-v-05b8e7f0"),n=n(),C(),n),tt=u(()=>t("img",{src:z,style:{width:"100px","aspect-ratio":"true"}},null,-1)),et=u(()=>t("p",{style:{"font-weight":"bold","font-size":"1.3em"}},"OmicsSuite",-1)),ot=u(()=>t("p",{style:{"font-weight":"bold"}},"Copyright © 2022-2023 OmicsSuite. All Rights Reserved.",-1)),st=u(()=>t("p",{style:{"font-weight":"bold"}},"OmicsSuite: OmicsSuite: a customized and pipelined suite for analysis and visualization of multi-omics big data.",-1)),it=u(()=>t("p",{style:{"font-weight":"bold","font-size":"0.8em"}},"Citation: Ben-ben Miao, Wei Dong, Yi-xin Gu, Zhao-fang Han, Xuan Luo, Cai-huan Ke, Wei-wei You, OmicsSuite: a customized and pipelined suite for analysis and visualization of multi-omics big data, Horticulture Research, 2023;, uhad195, https://doi.org/10.1093/hr/uhad195.",-1)),nt=u(()=>t("br",null,null,-1)),at={style:{"font-weight":"bold"}},lt=u(()=>t("a",{href:"https://github.com/benben-miao/",target:"_blank",style:{color:"#ffffff"}},"https://github.com/benben-miao/",-1)),ct={style:{"font-weight":"bold"}},rt=u(()=>t("a",{href:"benben.miao@outlook.com",target:"_blank",style:{color:"#ffffff"}},"benben.miao@outlook.com",-1)),dt={style:{"font-weight":"bold"}},ut=u(()=>t("a",{href:"https://www.xmu.edu.cn",target:"_blank",style:{color:"#ffffff"}},"https://www.xmu.edu.cn",-1)),pt={style:{"font-weight":"bold"}},_t=u(()=>t("a",{href:"https://omicssuite.github.io",target:"_blank",style:{color:"#ffffff"}},"https://omicssuite.github.io",-1)),mt={style:{"font-weight":"bold"}},ht=u(()=>t("a",{href:"https://github.com/OmicsSuite/",target:"_blank",style:{color:"#ffffff"}},"https://github.com/OmicsSuite/",-1)),ft={style:{"font-weight":"bold"}},gt=u(()=>t("a",{href:"https://space.bilibili.com/34105515/",target:"_blank",style:{color:"#ffffff"}},"https://space.bilibili.com/34105515/",-1)),bt=u(()=>t("br",null,null,-1)),yt={style:{"font-weight":"bold"}},vt=u(()=>t("a",{href:"https://hiplot.org",target:"_blank",style:{color:"#ffffff"}},"https://hiplot.org",-1)),wt={style:{"font-weight":"bold"}},St=u(()=>t("a",{href:"https://github.com/hiplot/",target:"_blank",style:{color:"#ffffff"}},"https://github.com/hiplot/",-1)),xt=u(()=>t("br",null,null,-1)),Ot={style:{"font-weight":"bold"}},$t=u(()=>t("a",{href:"https://github.com/benben-miao/TOmicsVis/",target:"_blank",style:{color:"#ffffff"}},"https://github.com/benben-miao/TOmicsVis/",-1)),At={style:{"font-weight":"bold"}},Ct=u(()=>t("a",{href:"https://benben-miao.github.io/TOmicsVis/",target:"_blank",style:{color:"#ffffff"}},"https://benben-miao.github.io/TOmicsVis/",-1));function kt(n,_,h,f,c,p){const r=i("el-col"),v=i("UserFilled"),d=i("el-icon"),l=i("Message"),w=i("School"),y=i("Compass"),g=i("Connection"),m=i("el-row");return x(),T(m,{gutter:0},{default:o(()=>[e(r,{span:24,sm:4,lg:4},{default:o(()=>[tt,et]),_:1}),e(r,{span:24,sm:10,lg:10},{default:o(()=>[ot,st,it,nt,t("p",at,[e(d,null,{default:o(()=>[e(v)]),_:1}),a(" Author: benben-miao "),lt]),t("p",ct,[e(d,null,{default:o(()=>[e(l)]),_:1}),a(" Contact Email: "),rt]),t("p",dt,[e(d,null,{default:o(()=>[e(w)]),_:1}),a(" Institution: Xiamen University "),ut])]),_:1}),e(r,{span:24,sm:10,lg:10},{default:o(()=>[t("p",pt,[e(d,null,{default:o(()=>[e(y)]),_:1}),a(" OmicsSuite Website: "),_t]),t("p",mt,[e(d,null,{default:o(()=>[e(y)]),_:1}),a(" OmicsSuite GitHub: "),ht]),t("p",ft,[e(d,null,{default:o(()=>[e(y)]),_:1}),a(" OmicsSuite Tutorials: "),gt]),bt,t("p",yt,[e(d,null,{default:o(()=>[e(g)]),_:1}),a(" Hiplot Bioinformatics Cloud: "),vt]),t("p",wt,[e(d,null,{default:o(()=>[e(g)]),_:1}),a(" Hiplot GitHub: "),St]),xt,t("p",Ot,[e(d,null,{default:o(()=>[e(g)]),_:1}),a(" TOmicsVis R Package: "),$t]),t("p",At,[e(d,null,{default:o(()=>[e(g)]),_:1}),a(" TOmicsVis API Docs: "),Ct])]),_:1})]),_:1})}const Pt=O(Z,[["render",kt],["__scopeId","data-v-05b8e7f0"]]),Tt="/assets/OmicsSuite-Home-d69adc49.png",zt="/assets/OmicsSuite-Sequence-bf022155.jpg",Mt="/assets/OmicsSuite-Statistics-9ae30aa7.jpg",Dt="/assets/OmicsSuite-Algorithm-46de366f.jpg",It="/assets/OmicsSuite-Genomics-47102a84.jpg",Vt="/assets/OmicsSuite-Transcriptomics-2f2a6c5c.jpg",Et="/assets/OmicsSuite-Metabolomics-6274d2ed.jpg",Rt="/assets/OmicsSuite-Microbe-3199fc92.png",Ft="/assets/OmicsSuite-SingleCell-41f867e0.jpg",Bt="/assets/OmicsSuite-App-5b117857.png";const Ht={components:{AppHeader:K,AppFooter:Pt},data(){return{}},mounted(){this.chart1();const n=document.getElementById("canvas3d");new R(n).load("https://prod.spline.design/E5dcxg0fysxLUpyA/scene.splinecode")},methods:{downloadOmicsSuite(){const n="https://sourceforge.net/projects/omicssuite-github-io/files/latest/download";window.open(n,"_blank")},chart1(){var n=this.$echarts.init(document.getElementById("chart1")),_={title:{text:"OmicsSuite Categories and Apps (175)",subtext:"The Count of Applications!",left:"center"},legend:{bottom:"bottom"},tooltip:{trigger:"item",formatter:"{a}
{b} : {c} ({d}%)",backgroundColor:"#000000cd",padding:15,borderRadius:10,textStyle:{color:"#ffffff"}},series:[{name:"Charts",type:"pie",radius:[10,180],center:["50%","50%"],roseType:"area",itemStyle:{borderRadius:50,shadowColor:"#cdcdcd",shadowBlur:50},label:{show:!0,fontSize:13,fontWeight:"bolder"},data:[{value:20,name:"1. Sequence"},{value:16,name:"2. Statistics"},{value:24,name:"3. Algorithm"},{value:21,name:"4. Genomics"},{value:14,name:"5. Transcriptomics"},{value:11,name:"6. Enrichment"},{value:5,name:"7. Proteomics"},{value:18,name:"8. Metabolomics"},{value:7,name:"9. Clinical"},{value:8,name:"10. MicroOrganisms"},{value:22,name:"11. SingleCell"},{value:4,name:"12. Mathematics"},{value:5,name:"13. TableOperation"}]}],color:["#DC143C","#FF5555","#FF8C00","#F4A460","#228B22","#3CB371","#008B8B","#20B2AA","#4169E1","#1E90FF","#800080","#9932CC","#FFD700"]};n.setOption(_)}}},s=n=>(A("data-v-25eaad92"),n=n(),C(),n),Gt={class:"common-layout"},Lt=s(()=>t("div",{style:{"margin-top":"60px",position:"relative",width:"100%",height:"600px"}},[t("canvas",{id:"canvas3d",style:{position:"absolute",top:"0",left:"0","z-index":"0",width:"100%",height:"100%"}}),t("div",{style:{width:"90%",padding:"10px",position:"absolute",top:"50%",left:"50%",transform:"translate(-50%, -50%)","z-index":"1","background-color":"#cdcdcd33","border-radius":"10px"}},[t("br"),t("p",{style:{"font-size":"4em","font-weight":"bold",color:"#000000"}}," OmicsSuite "),t("br"),t("p",{style:{"font-size":"1.8em","font-weight":"bold",color:"#008888","text-align":"justify"}}," OmicsSuite: a customized and pipelined suite for analysis and visualization of multi-omics big data. ")])],-1)),Nt={class:"page"},Ut=s(()=>t("br",null,null,-1)),jt=s(()=>t("div",{class:"image-text-card"},[t("p",{style:{"font-size":"1.2em","text-align":"justify","line-height":"2em"}},[t("span",{style:{"font-weight":"bold"}},"OmicsSuite"),a(" ("),t("a",{href:"https://github.com/OmicsSuite/",target:"_blank",style:{color:"#008888"}},"https://github.com/OmicsSuite/"),a("), original name "),t("span",{style:{"font-weight":"bold"}},"BioSciTools"),a(", a desktop program developed based on "),t("span",{style:{"font-weight":"bold"}},"Java-v11.0.0 and R-v4.2.2"),a(", aims to make new exploration and contribution to the development of bioinformatics, and realize data analysis and visualization in the fields of "),t("span",{style:{"font-weight":"bold"}},"statistics, algorithm,"),a(" sequence analysis, "),t("span",{style:{"font-weight":"bold"}},"multi-omics (transcriptomics, genomics, proteomics, metabolomics, single cell),"),a(" microbiology, clinical, etc. ")])],-1)),qt=s(()=>t("br",null,null,-1)),Wt=s(()=>t("p",{style:{"font-size":"1.2em","font-weight":"bold","text-align":"justify"}},[a("Ben-ben Miao, Wei Dong, Yi-xin Gu, Zhao-fang Han, Xuan Luo, Cai-huan Ke, Wei-wei You, OmicsSuite: a customized and pipelined suite for analysis and visualization of multi-omics big data, "),t("i",null,"Horticulture Research"),a(", 2023;, uhad195, "),t("a",{href:"https://doi.org/10.1093/hr/uhad195",target:"_blank",style:{color:"#008888"}},"https://doi.org/10.1093/hr/uhad195"),a(". ")],-1)),Yt=s(()=>t("br",null,null,-1)),Qt=s(()=>t("img",{src:Tt,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),Xt=s(()=>t("p",{style:{"font-size":"2em","font-weight":"bold"}},"User Interface",-1)),Jt=s(()=>t("br",null,null,-1)),Kt=s(()=>t("p",{class:"card-title"},[a(" OmicsSuite Website: "),t("br"),t("a",{href:"https://omicssuite.github.io",target:"_blank",style:{color:"#008888"}},"https://omicssuite.github.io")],-1)),Zt=s(()=>t("br",null,null,-1)),te=s(()=>t("p",{class:"card-title"},[a(" OmicsSuite GitHub: "),t("br"),t("a",{href:"https://github.com/OmicsSuite/",target:"_blank",style:{color:"#008888"}},"https://github.com/OmicsSuite/")],-1)),ee=s(()=>t("br",null,null,-1)),oe=s(()=>t("p",{class:"card-title"},[a(" OmicsSuite Article: "),t("br"),t("a",{href:"https://doi.org/10.1093/hr/uhad195",target:"_blank",style:{color:"#008888"}},"https://doi.org/10.1093/hr/uhad195")],-1)),se=s(()=>t("br",null,null,-1)),ie=s(()=>t("span",{style:{"font-size":"1.5em","font-weight":"bold"}},"OmicsSuite Windows",-1)),ne=s(()=>t("br",null,null,-1)),ae=s(()=>t("hr",null,null,-1)),le=s(()=>t("br",null,null,-1)),ce=s(()=>t("p",{style:{"font-size":"2em","font-weight":"bold",color:"#000000"}}," Presentation ",-1)),re=s(()=>t("div",{class:"image-text-card"},[t("div",{id:"chart1",style:{width:"100%","min-height":"520px"}})],-1)),de=s(()=>t("br",null,null,-1)),ue={class:"image-text-card"},pe=s(()=>t("p",{class:"card-title"},"1. Sequence Editor:",-1)),_e=s(()=>t("p",{class:"card-content"}," Sequence category in OmicsSuite includes a variety of sub-applications for querying or editing sequences, such as SeqsGC is used for sequences GC content statistics; RevCom performs reverse complement of DNA/RNA sequences, and SeqsTranslate realizes the translation of DNA sequences into amino acids (providing genetic codes such as Standard, Vertebrate Mitochondria, and Yeast Mitochondria). ",-1)),me=s(()=>t("img",{src:zt,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),he=s(()=>t("br",null,null,-1)),fe={class:"image-text-card"},ge=s(()=>t("p",{class:"card-title"},"2. Statistics visualization:",-1)),be=s(()=>t("p",{class:"card-content"}," OmicsSuite comprehensively refers to the advantages of Excel (Microsoft, Redmond, WA, USA), SPSS (Statistical Package for the Social Sciences) (IBM, Armonk, NY, USA), and Prism (GraphPad, San Diego, CA, USA) to develop a customized statistical results and visualization system. The Statistics category includes 15 distinct basic statistical visualization sub-applications. These include ScatterPlot, PieStat, BarStat, BoxStat, PairsCorrelation, RadarStat, DensityNormal, ViolinStat (combined names), etc. ",-1)),ye=s(()=>t("img",{src:Mt,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),ve=s(()=>t("br",null,null,-1)),we={class:"image-text-card"},Se=s(()=>t("p",{class:"card-title"},"3. Algorithm visualization:",-1)),xe=s(()=>t("p",{class:"card-content"}," Algorithm category integrates algorithms and implements visualization methods such as dimensionality reduction and clustering analyses. We have developed corresponding sub-applications for the dimensionality reduction algorithms PCA (Principal Components Analysis), PCoA (Principal Coordinates Analysis), tSNE (t-distributed Stochastic Neighbor Embedding), UMAP (Uniform Manifold Approximation and Projection), NMDS (Non-metric Multi-Dimensional Scaling) and RDA (Redundancy analysis), respectively. ",-1)),Oe=s(()=>t("img",{src:Dt,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),$e=s(()=>t("br",null,null,-1)),Ae={class:"image-text-card"},Ce=s(()=>t("p",{class:"card-title"},"4. Omics Genomics:",-1)),ke=s(()=>t("p",{class:"card-content"}," OmicsSuite has developed four types of genome circle maps based on the Rcircos and chloroplot packages to assist users in visualizing the genome. MitoGenome (Mitochondrial Genome) can parse GenBank-formatted mitochondrial genome information and display the GC content of each gene and of pseudogene markers. ChloroplastGenome (Chloroplast Genome) provides support for displaying the GC content of inverted repeat sequences (IRA/IRB), GC content of genes, pseudogene markers, and InDel information. ",-1)),Pe=s(()=>t("img",{src:It,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),Te=s(()=>t("br",null,null,-1)),ze={class:"image-text-card"},Me=s(()=>t("p",{class:"card-title"},"5. Omics Transcriptomics:",-1)),De=s(()=>t("p",{class:"card-content"}," VolcanoPlot and MversusA (MAplot) (combined names) can intuitively display the differentially expressed genes between paired groups. ExpressionTrends (Expression Trends) can display the linear trajectories of all genes in multiple groups, making it convenient to observe the expression trends of genes with traits. Similarly, WGCNA performs a weighted gene co-expression network analysis, taking multiple-group gene expression data as input. ",-1)),Ie=s(()=>t("img",{src:Vt,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),Ve=s(()=>t("br",null,null,-1)),Ee={class:"image-text-card"},Re=s(()=>t("p",{class:"card-title"},"6. Omics Metabolomics:",-1)),Fe=s(()=>t("p",{class:"card-content"}," To integrate the functions provided by MetaboAnalystR and ropls packages, 18 sub-applications have been developed for metabolomics, including exploration of mass spectrometry raw mzML data (from UPLC-QE, HPLC-Q/TOF, HPLC-Ion_Trap, HPLC-Orbitrap, and other platforms) to downstream multivariate analysis. Sample MzML data are filtered based on QCs and then analyzed. ",-1)),Be=s(()=>t("img",{src:Et,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),He=s(()=>t("br",null,null,-1)),Ge={class:"image-text-card"},Le=s(()=>t("p",{class:"card-title"},"7. Omics Microbe:",-1)),Ne=s(()=>t("p",{class:"card-content"}," The OTUtree (Operational Taxonomic Unit evolutionary Tree) in OmicsSuite uses the OTU table to construct a microbial phylogenetic tree, and the results are displayed as circle graphs. For microbial diversity analysis, TernaryDiagram (Ternary Diagram) can analyze the relative abundances of species in different groups. The coordinate axes represent three experimental groups and the dots represent taxonomic units (e.g., Genus). ",-1)),Ue=s(()=>t("img",{src:Rt,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),je=s(()=>t("br",null,null,-1)),qe={class:"image-text-card"},We=s(()=>t("p",{class:"card-title"},"8. Omics SingleCell:",-1)),Ye=s(()=>t("p",{class:"card-content"}," OmicsSuite has developed a pipeline and interactive suite of 22 sub-applications for single-cell transcriptomics based on packages such as Seurat v4 and Monocle2 that provide interfaces for almost all parameters. The 10X Genomics raw data is output in Matrix format after being processed by Chromium, and the results can be read by all sub-applications and entered into the corresponding analysis steps. ",-1)),Qe=s(()=>t("img",{src:Ft,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),Xe=s(()=>t("br",null,null,-1)),Je={class:"image-text-card"},Ke=s(()=>t("p",{class:"card-title"},"9. Omics AppUI:",-1)),Ze=s(()=>t("p",{class:"card-content"}," The parameter component section includes both fixed and variable parameter components. The fixed components Progress, Demo, Clear, and Submit are part of the task management components used to display the current status, run example data, clear the current task, and submit a new task respectively. Other common components such as Themes, Colors, Fonts, Figure Width, Figure Height, and Figure DPI belong to the parameter specification components. ",-1)),to=s(()=>t("img",{src:Bt,style:{width:"100%","aspect-ratio":"true","border-radius":"10px"}},null,-1)),eo=s(()=>t("br",null,null,-1));function oo(n,_,h,f,c,p){const r=i("AppHeader"),v=i("el-header"),d=i("el-alert"),l=i("el-col"),w=i("Download"),y=i("el-icon"),g=i("el-button"),m=i("el-row"),$=i("el-main"),M=i("AppFooter"),D=i("el-footer"),I=i("el-container"),V=i("el-backtop");return x(),P("div",Gt,[e(I,null,{default:o(()=>[e(v,null,{default:o(()=>[e(r)]),_:1}),e($,null,{default:o(()=>[Lt,t("div",Nt,[t("div",null,[Ut,jt,qt,e(d,{title:"Citation: OmicsSuite",type:"warning",closable:!1},{default:o(()=>[Wt]),_:1}),Yt,e(m,{gutter:20},{default:o(()=>[e(l,{span:24,sm:24,lg:16},{default:o(()=>[Qt]),_:1}),e(l,{span:24,sm:24,lg:8},{default:o(()=>[Xt,Jt,Kt,Zt,te,ee,oe,se,e(g,{onClick:p.downloadOmicsSuite,style:{"background-color":"#ff2040",color:"#ffffff",height:"45px"}},{default:o(()=>[e(y,{style:{"font-size":"1.5em"}},{default:o(()=>[e(w)]),_:1}),ie]),_:1},8,["onClick"])]),_:1})]),_:1})]),ne,ae,t("div",null,[le,ce,re,de,t("div",ue,[e(m,{gutter:20},{default:o(()=>[e(l,{span:24,sm:8,lg:8},{default:o(()=>[pe,_e]),_:1}),e(l,{span:24,sm:16,lg:16},{default:o(()=>[me]),_:1})]),_:1})]),he,t("div",fe,[e(m,{gutter:20},{default:o(()=>[e(l,{span:24,sm:8,lg:8},{default:o(()=>[ge,be]),_:1}),e(l,{span:24,sm:16,lg:16},{default:o(()=>[ye]),_:1})]),_:1})]),ve,t("div",we,[e(m,{gutter:20},{default:o(()=>[e(l,{span:24,sm:8,lg:8},{default:o(()=>[Se,xe]),_:1}),e(l,{span:24,sm:16,lg:16},{default:o(()=>[Oe]),_:1})]),_:1})]),$e,t("div",Ae,[e(m,{gutter:20},{default:o(()=>[e(l,{span:24,sm:8,lg:8},{default:o(()=>[Ce,ke]),_:1}),e(l,{span:24,sm:16,lg:16},{default:o(()=>[Pe]),_:1})]),_:1})]),Te,t("div",ze,[e(m,{gutter:20},{default:o(()=>[e(l,{span:24,sm:8,lg:8},{default:o(()=>[Me,De]),_:1}),e(l,{span:24,sm:16,lg:16},{default:o(()=>[Ie]),_:1})]),_:1})]),Ve,t("div",Ee,[e(m,{gutter:20},{default:o(()=>[e(l,{span:24,sm:8,lg:8},{default:o(()=>[Re,Fe]),_:1}),e(l,{span:24,sm:16,lg:16},{default:o(()=>[Be]),_:1})]),_:1})]),He,t("div",Ge,[e(m,{gutter:20},{default:o(()=>[e(l,{span:24,sm:8,lg:8},{default:o(()=>[Le,Ne]),_:1}),e(l,{span:24,sm:16,lg:16},{default:o(()=>[Ue]),_:1})]),_:1})]),je,t("div",qe,[e(m,{gutter:20},{default:o(()=>[e(l,{span:24,sm:8,lg:8},{default:o(()=>[We,Ye]),_:1}),e(l,{span:24,sm:16,lg:16},{default:o(()=>[Qe]),_:1})]),_:1})]),Xe,t("div",Je,[e(m,{gutter:20},{default:o(()=>[e(l,{span:24,sm:8,lg:8},{default:o(()=>[Ke,Ze]),_:1}),e(l,{span:24,sm:16,lg:16},{default:o(()=>[to]),_:1})]),_:1})]),eo])])]),_:1}),e(D,null,{default:o(()=>[e(M)]),_:1})]),_:1}),e(V,{right:50,bottom:100})])}const so=O(Ht,[["render",oo],["__scopeId","data-v-25eaad92"]]),io=()=>S(()=>import("./AboutView-2fcaf96e.js"),["assets/AboutView-2fcaf96e.js","assets/@vue-248d724b.js","assets/@splinetool-99227827.js","assets/vue-router-401d444e.js","assets/element-plus-ab7336d6.js","assets/lodash-es-21c98b27.js","assets/@vueuse-89fc2c2e.js","assets/@element-plus-0de4ac96.js","assets/@popperjs-c75af06c.js","assets/@ctrl-f8748455.js","assets/dayjs-5c34775c.js","assets/async-validator-dee29e8b.js","assets/memoize-one-297ddbcb.js","assets/escape-html-64fe8e16.js","assets/normalize-wheel-es-ed76fb12.js","assets/@floating-ui-72671fae.js","assets/element-plus-3066593d.css","assets/echarts-9ae96183.js","assets/zrender-e9104294.js","assets/AboutView-cad170f7.css"]),no=()=>S(()=>import("./PublishView-4ecbf10f.js"),["assets/PublishView-4ecbf10f.js","assets/@vue-248d724b.js","assets/@splinetool-99227827.js","assets/vue-router-401d444e.js","assets/element-plus-ab7336d6.js","assets/lodash-es-21c98b27.js","assets/@vueuse-89fc2c2e.js","assets/@element-plus-0de4ac96.js","assets/@popperjs-c75af06c.js","assets/@ctrl-f8748455.js","assets/dayjs-5c34775c.js","assets/async-validator-dee29e8b.js","assets/memoize-one-297ddbcb.js","assets/escape-html-64fe8e16.js","assets/normalize-wheel-es-ed76fb12.js","assets/@floating-ui-72671fae.js","assets/element-plus-3066593d.css","assets/echarts-9ae96183.js","assets/zrender-e9104294.js","assets/PublishView-d228bf6d.css"]),ao=()=>S(()=>import("./DownloadView-c7c9ef09.js"),["assets/DownloadView-c7c9ef09.js","assets/@vue-248d724b.js","assets/@splinetool-99227827.js","assets/vue-router-401d444e.js","assets/element-plus-ab7336d6.js","assets/lodash-es-21c98b27.js","assets/@vueuse-89fc2c2e.js","assets/@element-plus-0de4ac96.js","assets/@popperjs-c75af06c.js","assets/@ctrl-f8748455.js","assets/dayjs-5c34775c.js","assets/async-validator-dee29e8b.js","assets/memoize-one-297ddbcb.js","assets/escape-html-64fe8e16.js","assets/normalize-wheel-es-ed76fb12.js","assets/@floating-ui-72671fae.js","assets/element-plus-3066593d.css","assets/echarts-9ae96183.js","assets/zrender-e9104294.js","assets/DownloadView-9b544416.css"]),lo=()=>S(()=>import("./DesignView-9c5f9feb.js"),["assets/DesignView-9c5f9feb.js","assets/@vue-248d724b.js","assets/@splinetool-99227827.js","assets/vue-router-401d444e.js","assets/element-plus-ab7336d6.js","assets/lodash-es-21c98b27.js","assets/@vueuse-89fc2c2e.js","assets/@element-plus-0de4ac96.js","assets/@popperjs-c75af06c.js","assets/@ctrl-f8748455.js","assets/dayjs-5c34775c.js","assets/async-validator-dee29e8b.js","assets/memoize-one-297ddbcb.js","assets/escape-html-64fe8e16.js","assets/normalize-wheel-es-ed76fb12.js","assets/@floating-ui-72671fae.js","assets/element-plus-3066593d.css","assets/echarts-9ae96183.js","assets/zrender-e9104294.js","assets/DesignView-9614fae7.css"]),co=()=>S(()=>import("./FriendsView-439846ce.js"),["assets/FriendsView-439846ce.js","assets/@vue-248d724b.js","assets/@splinetool-99227827.js","assets/vue-router-401d444e.js","assets/element-plus-ab7336d6.js","assets/lodash-es-21c98b27.js","assets/@vueuse-89fc2c2e.js","assets/@element-plus-0de4ac96.js","assets/@popperjs-c75af06c.js","assets/@ctrl-f8748455.js","assets/dayjs-5c34775c.js","assets/async-validator-dee29e8b.js","assets/memoize-one-297ddbcb.js","assets/escape-html-64fe8e16.js","assets/normalize-wheel-es-ed76fb12.js","assets/@floating-ui-72671fae.js","assets/element-plus-3066593d.css","assets/echarts-9ae96183.js","assets/zrender-e9104294.js","assets/FriendsView-cd50d063.css"]),ro=F({history:B(),routes:[{path:"/",name:"home",component:so},{path:"/publish",name:"publish",component:no},{path:"/downloads",name:"downloads",component:ao},{path:"/design",name:"design",component:lo},{path:"/friends",name:"friends",component:co},{path:"/about",name:"about",component:io},{path:"/404",name:"404",redirect:"/"},{path:"/:pathMatch(.*)",redirect:"/"}]}),b=E(q);b.use(ro);b.use(H);for(const[n,_]of Object.entries(G))b.component(n,_);b.config.globalProperties.$echarts=L;b.config.globalProperties.$appName="OmicsSuite";b.config.globalProperties.$serverHostPort="http://127.0.0.1:5000/";b.config.warnHandler=()=>null;b.mount("#app");export{K as A,O as _,Pt as a,Tt as b,z as c}; diff --git a/assets/index-82b12b31.css b/assets/index.css similarity index 100% rename from assets/index-82b12b31.css rename to assets/index.css diff --git a/assets/logo-a1cb7dc9.svg b/assets/logo.svg similarity index 100% rename from assets/logo-a1cb7dc9.svg rename to assets/logo.svg diff --git a/index.html b/index.html index e670f10..a4397d2 100644 --- a/index.html +++ b/index.html @@ -2,29 +2,29 @@ - + Omics Suite - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + +