import{a as rd,r as sd,ag as Rs,ah as Ih,o as SE,e as ME,f as e1,H as Dm,ai as P4,aj as EE,ak as TE,j as R4,_ as $n,aa as L4,L as N0,G as D4,u as zp}from"./entry.c3abd651.js";var I4=Object.defineProperty,O4=Object.defineProperties,k4=Object.getOwnPropertyDescriptors,Jf=Object.getOwnPropertySymbols,AE=Object.prototype.hasOwnProperty,CE=Object.prototype.propertyIsEnumerable,By=(i,e,t)=>e in i?I4(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t,Me=(i,e)=>{for(var t in e||(e={}))AE.call(e,t)&&By(i,t,e[t]);if(Jf)for(var t of Jf(e))CE.call(e,t)&&By(i,t,e[t]);return i},bt=(i,e)=>O4(i,k4(e)),N4=(i,e)=>{var t={};for(var n in i)AE.call(i,n)&&e.indexOf(n)<0&&(t[n]=i[n]);if(i!=null&&Jf)for(var n of Jf(i))e.indexOf(n)<0&&CE.call(i,n)&&(t[n]=i[n]);return t},B4=(i,e,t)=>(By(i,typeof e!="symbol"?e+"":e,t),t),rl=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function d9(i){return i&&i.__esModule&&Object.prototype.hasOwnProperty.call(i,"default")?i.default:i}var rs={exports:{}};/** * @license * Lodash * Copyright OpenJS Foundation and other contributors * Released under MIT license * Based on Underscore.js 1.8.3 * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors */(function(i,e){(function(){var t,n="4.17.21",r=200,s="Unsupported core-js use. Try https://npms.io/search?q=ponyfill.",o="Expected a function",l="Invalid `variable` option passed into `_.template`",h="__lodash_hash_undefined__",d=500,f="__lodash_placeholder__",g=1,y=2,_=4,w=1,S=2,b=1,T=2,E=4,C=8,A=16,D=32,I=64,F=128,P=256,k=512,j=30,G="...",ne=800,ce=16,Z=1,$=2,K=3,pe=1/0,re=9007199254740991,se=17976931348623157e292,ue=0/0,Te=4294967295,fe=Te-1,Ce=Te>>>1,qe=[["ary",F],["bind",b],["bindKey",T],["curry",C],["curryRight",A],["flip",k],["partial",D],["partialRight",I],["rearg",P]],Ke="[object Arguments]",me="[object Array]",Ut="[object AsyncFunction]",nt="[object Boolean]",it="[object Date]",Le="[object DOMException]",vt="[object Error]",ve="[object Function]",xe="[object GeneratorFunction]",Ae="[object Map]",We="[object Number]",Be="[object Null]",rt="[object Object]",ot="[object Promise]",st="[object Proxy]",Ft="[object RegExp]",yt="[object Set]",H="[object String]",B="[object Symbol]",he="[object Undefined]",we="[object WeakMap]",Ne="[object WeakSet]",Ue="[object ArrayBuffer]",Xe="[object DataView]",U="[object Float32Array]",Ee="[object Float64Array]",Je="[object Int8Array]",ke="[object Int16Array]",X="[object Int32Array]",Re="[object Uint8Array]",De="[object Uint8ClampedArray]",at="[object Uint16Array]",ze="[object Uint32Array]",et=/\b__p \+= '';/g,Ie=/\b(__p \+=) '' \+/g,ct=/(__e\(.*?\)|\b__t\)) \+\n'';/g,wt=/&(?:amp|lt|gt|quot|#39);/g,Ct=/[&<>"']/g,jn=RegExp(wt.source),Yi=RegExp(Ct.source),Us=/<%-([\s\S]+?)%>/g,Fs=/<%([\s\S]+?)%>/g,Vs=/<%=([\s\S]+?)%>/g,Hs=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Co=/^\w*$/,gu=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Aa=/[\\^$.*+?()[\]{}|]/g,yu=RegExp(Aa.source),V=/^\s+/,te=/\s/,de=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,oe=/\{\n\/\* \[wrapped with (.+)\] \*/,ge=/,? & /,ht=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,gt=/[()=,{}\[\]\/\s]/,_t=/\\(\\)?/g,St=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,Dt=/\w*$/,Nt=/^[-+]0x[0-9a-f]+$/i,Vt=/^0b[01]+$/i,yn=/^\[object .+?Constructor\]$/,Tr=/^0o[0-7]+$/i,ls=/^(?:0|[1-9]\d*)$/,cs=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,ci=/($^)/,Pt=/['\n\r\u2028\u2029\\]/g,gi="\\ud800-\\udfff",Cn="\\u0300-\\u036f",Zi="\\ufe20-\\ufe2f",or="\\u20d0-\\u20ff",zr=Cn+Zi+or,Gs="\\u2700-\\u27bf",On="a-z\\xdf-\\xf6\\xf8-\\xff",Ws="\\xac\\xb1\\xd7\\xf7",Po="\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf",Ii="\\u2000-\\u206f",Hv=" \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",kd="A-Z\\xc0-\\xd6\\xd8-\\xde",Nd="\\ufe0e\\ufe0f",us=Ws+Po+Ii+Hv,Ki="['’]",Ca="["+gi+"]",Si="["+us+"]",Ar="["+zr+"]",Pl="\\d+",Gv="["+Gs+"]",Ro="["+On+"]",_u="[^"+gi+us+Pl+Gs+On+kd+"]",xu="\\ud83c[\\udffb-\\udfff]",Bd="(?:"+Ar+"|"+xu+")",bu="[^"+gi+"]",wu="(?:\\ud83c[\\udde6-\\uddff]){2}",Lo="[\\ud800-\\udbff][\\udc00-\\udfff]",Do="["+kd+"]",Su="\\u200d",Mu="(?:"+Ro+"|"+_u+")",Wv="(?:"+Do+"|"+_u+")",zd="(?:"+Ki+"(?:d|ll|m|re|s|t|ve))?",Ud="(?:"+Ki+"(?:D|LL|M|RE|S|T|VE))?",Fd=Bd+"?",Vd="["+Nd+"]?",Eu="(?:"+Su+"(?:"+[bu,wu,Lo].join("|")+")"+Vd+Fd+")*",Pa="\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",jv="\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])",Io=Vd+Fd+Eu,Xv="(?:"+[Gv,wu,Lo].join("|")+")"+Io,Tu="(?:"+[bu+Ar+"?",Ar,wu,Lo,Ca].join("|")+")",Hd=RegExp(Ki,"g"),qv=RegExp(Ar,"g"),Au=RegExp(xu+"(?="+xu+")|"+Tu+Io,"g"),Yv=RegExp([Do+"?"+Ro+"+"+zd+"(?="+[Si,Do,"$"].join("|")+")",Wv+"+"+Ud+"(?="+[Si,Do+Mu,"$"].join("|")+")",Do+"?"+Mu+"+"+zd,Do+"+"+Ud,jv,Pa,Pl,Xv].join("|"),"g"),Zv=RegExp("["+Su+gi+zr+Nd+"]"),Kv=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,Jv=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],Qv=-1,vn={};vn[U]=vn[Ee]=vn[Je]=vn[ke]=vn[X]=vn[Re]=vn[De]=vn[at]=vn[ze]=!0,vn[Ke]=vn[me]=vn[Ue]=vn[nt]=vn[Xe]=vn[it]=vn[vt]=vn[ve]=vn[Ae]=vn[We]=vn[rt]=vn[Ft]=vn[yt]=vn[H]=vn[we]=!1;var un={};un[Ke]=un[me]=un[Ue]=un[Xe]=un[nt]=un[it]=un[U]=un[Ee]=un[Je]=un[ke]=un[X]=un[Ae]=un[We]=un[rt]=un[Ft]=un[yt]=un[H]=un[B]=un[Re]=un[De]=un[at]=un[ze]=!0,un[vt]=un[ve]=un[we]=!1;var $v={À:"A",Á:"A",Â:"A",Ã:"A",Ä:"A",Å:"A",à:"a",á:"a",â:"a",ã:"a",ä:"a",å:"a",Ç:"C",ç:"c",Ð:"D",ð:"d",È:"E",É:"E",Ê:"E",Ë:"E",è:"e",é:"e",ê:"e",ë:"e",Ì:"I",Í:"I",Î:"I",Ï:"I",ì:"i",í:"i",î:"i",ï:"i",Ñ:"N",ñ:"n",Ò:"O",Ó:"O",Ô:"O",Õ:"O",Ö:"O",Ø:"O",ò:"o",ó:"o",ô:"o",õ:"o",ö:"o",ø:"o",Ù:"U",Ú:"U",Û:"U",Ü:"U",ù:"u",ú:"u",û:"u",ü:"u",Ý:"Y",ý:"y",ÿ:"y",Æ:"Ae",æ:"ae",Þ:"Th",þ:"th",ß:"ss",Ā:"A",Ă:"A",Ą:"A",ā:"a",ă:"a",ą:"a",Ć:"C",Ĉ:"C",Ċ:"C",Č:"C",ć:"c",ĉ:"c",ċ:"c",č:"c",Ď:"D",Đ:"D",ď:"d",đ:"d",Ē:"E",Ĕ:"E",Ė:"E",Ę:"E",Ě:"E",ē:"e",ĕ:"e",ė:"e",ę:"e",ě:"e",Ĝ:"G",Ğ:"G",Ġ:"G",Ģ:"G",ĝ:"g",ğ:"g",ġ:"g",ģ:"g",Ĥ:"H",Ħ:"H",ĥ:"h",ħ:"h",Ĩ:"I",Ī:"I",Ĭ:"I",Į:"I",İ:"I",ĩ:"i",ī:"i",ĭ:"i",į:"i",ı:"i",Ĵ:"J",ĵ:"j",Ķ:"K",ķ:"k",ĸ:"k",Ĺ:"L",Ļ:"L",Ľ:"L",Ŀ:"L",Ł:"L",ĺ:"l",ļ:"l",ľ:"l",ŀ:"l",ł:"l",Ń:"N",Ņ:"N",Ň:"N",Ŋ:"N",ń:"n",ņ:"n",ň:"n",ŋ:"n",Ō:"O",Ŏ:"O",Ő:"O",ō:"o",ŏ:"o",ő:"o",Ŕ:"R",Ŗ:"R",Ř:"R",ŕ:"r",ŗ:"r",ř:"r",Ś:"S",Ŝ:"S",Ş:"S",Š:"S",ś:"s",ŝ:"s",ş:"s",š:"s",Ţ:"T",Ť:"T",Ŧ:"T",ţ:"t",ť:"t",ŧ:"t",Ũ:"U",Ū:"U",Ŭ:"U",Ů:"U",Ű:"U",Ų:"U",ũ:"u",ū:"u",ŭ:"u",ů:"u",ű:"u",ų:"u",Ŵ:"W",ŵ:"w",Ŷ:"Y",ŷ:"y",Ÿ:"Y",Ź:"Z",Ż:"Z",Ž:"Z",ź:"z",ż:"z",ž:"z",IJ:"IJ",ij:"ij",Œ:"Oe",œ:"oe",ʼn:"'n",ſ:"s"},eg={"&":"&","<":"<",">":">",'"':""","'":"'"},tg={"&":"&","<":"<",">":">",""":'"',"'":"'"},ng={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},ig=parseFloat,rg=parseInt,Cu=typeof rl=="object"&&rl&&rl.Object===Object&&rl,sg=typeof self=="object"&&self&&self.Object===Object&&self,ni=Cu||sg||Function("return this")(),Pu=e&&!e.nodeType&&e,hs=Pu&&!0&&i&&!i.nodeType&&i,Gd=hs&&hs.exports===Pu,ar=Gd&&Cu.process,Oi=function(){try{var J=hs&&hs.require&&hs.require("util").types;return J||ar&&ar.binding&&ar.binding("util")}catch{}}(),Wd=Oi&&Oi.isArrayBuffer,yi=Oi&&Oi.isDate,jd=Oi&&Oi.isMap,Ra=Oi&&Oi.isRegExp,Ru=Oi&&Oi.isSet,Rl=Oi&&Oi.isTypedArray;function Mi(J,le,ie){switch(ie.length){case 0:return J.call(le);case 1:return J.call(le,ie[0]);case 2:return J.call(le,ie[0],ie[1]);case 3:return J.call(le,ie[0],ie[1],ie[2])}return J.apply(le,ie)}function og(J,le,ie,je){for(var ft=-1,Wt=J==null?0:J.length;++ft-1}function lr(J,le,ie){for(var je=-1,ft=J==null?0:J.length;++je-1;);return ie}function Xs(J,le){for(var ie=J.length;ie--&&Cr(le,J[ie],0)>-1;);return ie}function No(J,le){for(var ie=J.length,je=0;ie--;)J[ie]===le&&++je;return je}var Ol=Iu($v),lg=Iu(eg);function cg(J){return"\\"+ng[J]}function ug(J,le){return J==null?t:J[le]}function Bo(J){return Zv.test(J)}function qs(J){return Kv.test(J)}function hg(J){for(var le,ie=[];!(le=J.next()).done;)ie.push(le.value);return ie}function ku(J){var le=-1,ie=Array(J.size);return J.forEach(function(je,ft){ie[++le]=[ft,je]}),ie}function Zd(J,le){return function(ie){return J(le(ie))}}function fs(J,le){for(var ie=-1,je=J.length,ft=0,Wt=[];++ie-1}function Bg(a,u){var v=this.__data__,M=Xo(v,a);return M<0?(++this.size,v.push([a,u])):v[M][1]=u,this}Vr.prototype.clear=op,Vr.prototype.delete=kg,Vr.prototype.get=ap,Vr.prototype.has=Ng,Vr.prototype.set=Bg;function Ti(a){var u=-1,v=a==null?0:a.length;for(this.clear();++u=u?a:u)),a}function $i(a,u,v,M,R,N){var W,Y=u&g,Q=u&y,_e=u&_;if(v&&(W=R?v(a,M,R,N):v(a)),W!==t)return W;if(!Nn(a))return a;var be=Et(a);if(be){if(W=rP(a),!Y)return er(a,W)}else{var Se=Ci(a),Ve=Se==ve||Se==xe;if($o(a))return jb(a,Y);if(Se==rt||Se==Ke||Ve&&!R){if(W=Q||Ve?{}:uw(a),!Y)return Q?q3(a,Gu(W,a)):X3(a,dp(W,a))}else{if(!un[Se])return R?a:{};W=sP(a,Se,Y)}}N||(N=new Qi);var tt=N.get(a);if(tt)return tt;N.set(a,W),Uw(a)?a.forEach(function(pt){W.add($i(pt,u,v,pt,a,N))}):Bw(a)&&a.forEach(function(pt,Ht){W.set(Ht,$i(pt,u,v,Ht,a,N))});var dt=_e?Q?p0:d0:Q?nr:hi,Lt=be?t:dt(a);return Ji(Lt||a,function(pt,Ht){Lt&&(Ht=pt,pt=a[Ht]),Ha(W,Ht,$i(pt,u,v,Ht,a,N))}),W}function qg(a){var u=hi(a);return function(v){return Ql(v,a,u)}}function Ql(a,u,v){var M=v.length;if(a==null)return!M;for(a=ln(a);M--;){var R=v[M],N=u[R],W=a[R];if(W===t&&!(R in a)||!N(W))return!1}return!0}function pp(a,u,v){if(typeof a!="function")throw new Ei(o);return Ju(function(){a.apply(t,v)},u)}function Ga(a,u,v,M){var R=-1,N=ds,W=!0,Y=a.length,Q=[],_e=u.length;if(!Y)return Q;v&&(u=_n(u,_i(v))),M?(N=lr,W=!1):u.length>=r&&(N=ka,W=!1,u=new Hr(u));e:for(;++RR?0:R+v),M=M===t||M>R?R:Rt(M),M<0&&(M+=R),M=v>M?0:Vw(M);v0&&v(Y)?u>1?ii(Y,u-1,v,M,R):Ur(R,Y):M||(R[R.length]=Y)}return R}var ju=Jb(),vp=Jb(!0);function Pr(a,u){return a&&ju(a,u,hi)}function ec(a,u){return a&&vp(a,u,hi)}function Wa(a,u){return kn(u,function(v){return no(a[v])})}function xs(a,u){u=Jo(u,a);for(var v=0,M=u.length;a!=null&&vu}function Kg(a,u){return a!=null&&en.call(a,u)}function Jg(a,u){return a!=null&&u in ln(a)}function Qg(a,u,v){return a>=ui(u,v)&&a=120&&be.length>=120)?new Hr(W&&be):t}be=a[0];var Se=-1,Ve=Y[0];e:for(;++Se-1;)Y!==a&&Wl.call(Y,Q,1),Wl.call(a,Q,1);return a}function Bb(a,u){for(var v=a?u.length:0,M=v-1;v--;){var R=u[v];if(v==M||R!==N){var N=R;to(R)?Wl.call(a,R,1):s0(a,R)}}return a}function n0(a,u){return a+Ho(np()*(u-a+1))}function k3(a,u,v,M){for(var R=-1,N=Xn(ql((u-a)/(v||1)),0),W=ie(N);N--;)W[M?N:++R]=a,a+=v;return W}function i0(a,u){var v="";if(!a||u<1||u>re)return v;do u%2&&(v+=a),u=Ho(u/2),u&&(a+=a);while(u);return v}function It(a,u){return x0(pw(a,u,ir),a+"")}function N3(a){return up(sc(a))}function B3(a,u){var v=sc(a);return Pp(v,Ai(u,0,v.length))}function Yu(a,u,v,M){if(!Nn(a))return a;u=Jo(u,a);for(var R=-1,N=u.length,W=N-1,Y=a;Y!=null&&++RR?0:R+u),v=v>R?R:v,v<0&&(v+=R),R=u>v?0:v-u>>>0,u>>>=0;for(var N=ie(R);++M>>1,W=a[N];W!==null&&!dr(W)&&(v?W<=u:W=r){var _e=u?null:J3(a);if(_e)return Ba(_e);W=!1,R=ka,Q=new Hr}else Q=u?[]:Y;e:for(;++M=M?a:Rr(a,u,v)}var Wb=yg||function(a){return ni.clearTimeout(a)};function jb(a,u){if(u)return a.slice();var v=a.length,M=Vl?Vl(v):new a.constructor(v);return a.copy(M),M}function c0(a){var u=new a.constructor(a.byteLength);return new Fl(u).set(new Fl(a)),u}function H3(a,u){var v=u?c0(a.buffer):a.buffer;return new a.constructor(v,a.byteOffset,a.byteLength)}function G3(a){var u=new a.constructor(a.source,Dt.exec(a));return u.lastIndex=a.lastIndex,u}function W3(a){return Fa?ln(Fa.call(a)):{}}function Xb(a,u){var v=u?c0(a.buffer):a.buffer;return new a.constructor(v,a.byteOffset,a.length)}function qb(a,u){if(a!==u){var v=a!==t,M=a===null,R=a===a,N=dr(a),W=u!==t,Y=u===null,Q=u===u,_e=dr(u);if(!Y&&!_e&&!N&&a>u||N&&W&&Q&&!Y&&!_e||M&&W&&Q||!v&&Q||!R)return 1;if(!M&&!N&&!_e&&a=Y)return Q;var _e=v[M];return Q*(_e=="desc"?-1:1)}}return a.index-u.index}function Yb(a,u,v,M){for(var R=-1,N=a.length,W=v.length,Y=-1,Q=u.length,_e=Xn(N-W,0),be=ie(Q+_e),Se=!M;++Y1?v[R-1]:t,W=R>2?v[2]:t;for(N=a.length>3&&typeof N=="function"?(R--,N):t,W&&zi(v[0],v[1],W)&&(N=R<3?t:N,R=1),u=ln(u);++M-1?R[N?u[W]:W]:t}}function ew(a){return eo(function(u){var v=u.length,M=v,R=Bi.prototype.thru;for(a&&u.reverse();M--;){var N=u[M];if(typeof N!="function")throw new Ei(o);if(R&&!W&&Ap(N)=="wrapper")var W=new Bi([],!0)}for(M=W?M:v;++M1&&qt.reverse(),be&&QY))return!1;var _e=N.get(a),be=N.get(u);if(_e&&be)return _e==u&&be==a;var Se=-1,Ve=!0,tt=v&S?new Hr:t;for(N.set(a,u),N.set(u,a);++Se1?"& ":"")+u[M],u=u.join(v>2?", ":" "),a.replace(de,`{ /* [wrapped with `+u+`] */ `)}function aP(a){return Et(a)||qa(a)||!!(jl&&a&&a[jl])}function to(a,u){var v=typeof a;return u=u??re,!!u&&(v=="number"||v!="symbol"&&ls.test(a))&&a>-1&&a%1==0&&a0){if(++u>=ne)return arguments[0]}else u=0;return a.apply(t,arguments)}}function Pp(a,u){var v=-1,M=a.length,R=M-1;for(u=u===t?M:u;++v1?a[u-1]:t;return v=typeof v=="function"?(a.pop(),v):t,Ew(a,v)});function Tw(a){var u=O(a);return u.__chain__=!0,u}function yR(a,u){return u(a),a}function Rp(a,u){return u(a)}var _R=eo(function(a){var u=a.length,v=u?a[0]:0,M=this.__wrapped__,R=function(N){return Wu(N,a)};return u>1||this.__actions__.length||!(M instanceof Mt)||!to(v)?this.thru(R):(M=M.slice(v,+v+(u?1:0)),M.__actions__.push({func:Rp,args:[R],thisArg:t}),new Bi(M,this.__chain__).thru(function(N){return u&&!N.length&&N.push(t),N}))});function xR(){return Tw(this)}function bR(){return new Bi(this.value(),this.__chain__)}function wR(){this.__values__===t&&(this.__values__=Fw(this.value()));var a=this.__index__>=this.__values__.length,u=a?t:this.__values__[this.__index__++];return{done:a,value:u}}function SR(){return this}function MR(a){for(var u,v=this;v instanceof ur;){var M=_w(v);M.__index__=0,M.__values__=t,u?R.__wrapped__=M:u=M;var R=M;v=v.__wrapped__}return R.__wrapped__=a,u}function ER(){var a=this.__wrapped__;if(a instanceof Mt){var u=a;return this.__actions__.length&&(u=new Mt(this)),u=u.reverse(),u.__actions__.push({func:Rp,args:[b0],thisArg:t}),new Bi(u,this.__chain__)}return this.thru(b0)}function TR(){return Hb(this.__wrapped__,this.__actions__)}var AR=wp(function(a,u,v){en.call(a,v)?++a[v]:Gr(a,v,1)});function CR(a,u,v){var M=Et(a)?Oo:Yg;return v&&zi(a,u,v)&&(u=t),M(a,ut(u,3))}function PR(a,u){var v=Et(a)?kn:mp;return v(a,ut(u,3))}var RR=$b(xw),LR=$b(bw);function DR(a,u){return ii(Lp(a,u),1)}function IR(a,u){return ii(Lp(a,u),pe)}function OR(a,u,v){return v=v===t?1:Rt(v),ii(Lp(a,u),v)}function Aw(a,u){var v=Et(a)?Ji:Wr;return v(a,ut(u,3))}function Cw(a,u){var v=Et(a)?ag:fp;return v(a,ut(u,3))}var kR=wp(function(a,u,v){en.call(a,v)?a[v].push(u):Gr(a,v,[u])});function NR(a,u,v,M){a=tr(a)?a:sc(a),v=v&&!M?Rt(v):0;var R=a.length;return v<0&&(v=Xn(R+v,0)),Np(a)?v<=R&&a.indexOf(u,v)>-1:!!R&&Cr(a,u,v)>-1}var BR=It(function(a,u,v){var M=-1,R=typeof u=="function",N=tr(a)?ie(a.length):[];return Wr(a,function(W){N[++M]=R?Mi(u,W,v):qo(W,u,v)}),N}),zR=wp(function(a,u,v){Gr(a,v,u)});function Lp(a,u){var v=Et(a)?_n:Yo;return v(a,ut(u,3))}function UR(a,u,v,M){return a==null?[]:(Et(u)||(u=u==null?[]:[u]),v=M?t:v,Et(v)||(v=v==null?[]:[v]),kb(a,u,v))}var FR=wp(function(a,u,v){a[v?0:1].push(u)},function(){return[[],[]]});function VR(a,u,v){var M=Et(a)?La:Dl,R=arguments.length<3;return M(a,ut(u,4),v,R,Wr)}function HR(a,u,v){var M=Et(a)?js:Dl,R=arguments.length<3;return M(a,ut(u,4),v,R,fp)}function GR(a,u){var v=Et(a)?kn:mp;return v(a,Op(ut(u,3)))}function WR(a){var u=Et(a)?up:N3;return u(a)}function jR(a,u,v){(v?zi(a,u,v):u===t)?u=1:u=Rt(u);var M=Et(a)?Xg:B3;return M(a,u)}function XR(a){var u=Et(a)?Va:U3;return u(a)}function qR(a){if(a==null)return 0;if(tr(a))return Np(a)?Ys(a):a.length;var u=Ci(a);return u==Ae||u==yt?a.size:jt(a).length}function YR(a,u,v){var M=Et(a)?hn:F3;return v&&zi(a,u,v)&&(u=t),M(a,ut(u,3))}var ZR=It(function(a,u){if(a==null)return[];var v=u.length;return v>1&&zi(a,u[0],u[1])?u=[]:v>2&&zi(u[0],u[1],u[2])&&(u=[u[0]]),kb(a,ii(u,1),[])}),Dp=Bu||function(){return ni.Date.now()};function KR(a,u){if(typeof u!="function")throw new Ei(o);return a=Rt(a),function(){if(--a<1)return u.apply(this,arguments)}}function Pw(a,u,v){return u=v?t:u,u=a&&u==null?a.length:u,$s(a,F,t,t,t,t,u)}function Rw(a,u){var v;if(typeof u!="function")throw new Ei(o);return a=Rt(a),function(){return--a>0&&(v=u.apply(this,arguments)),a<=1&&(u=t),v}}var S0=It(function(a,u,v){var M=b;if(v.length){var R=fs(v,ic(S0));M|=D}return $s(a,M,u,v,R)}),Lw=It(function(a,u,v){var M=b|T;if(v.length){var R=fs(v,ic(Lw));M|=D}return $s(u,M,a,v,R)});function Dw(a,u,v){u=v?t:u;var M=$s(a,C,t,t,t,t,t,u);return M.placeholder=Dw.placeholder,M}function Iw(a,u,v){u=v?t:u;var M=$s(a,A,t,t,t,t,t,u);return M.placeholder=Iw.placeholder,M}function Ow(a,u,v){var M,R,N,W,Y,Q,_e=0,be=!1,Se=!1,Ve=!0;if(typeof a!="function")throw new Ei(o);u=Dr(u)||0,Nn(v)&&(be=!!v.leading,Se="maxWait"in v,N=Se?Xn(Dr(v.maxWait)||0,u):N,Ve="trailing"in v?!!v.trailing:Ve);function tt(Yn){var qr=M,ro=R;return M=R=t,_e=Yn,W=a.apply(ro,qr),W}function dt(Yn){return _e=Yn,Y=Ju(Ht,u),be?tt(Yn):W}function Lt(Yn){var qr=Yn-Q,ro=Yn-_e,$w=u-qr;return Se?ui($w,N-ro):$w}function pt(Yn){var qr=Yn-Q,ro=Yn-_e;return Q===t||qr>=u||qr<0||Se&&ro>=N}function Ht(){var Yn=Dp();if(pt(Yn))return qt(Yn);Y=Ju(Ht,Lt(Yn))}function qt(Yn){return Y=t,Ve&&M?tt(Yn):(M=R=t,W)}function pr(){Y!==t&&Wb(Y),_e=0,M=Q=R=Y=t}function Ui(){return Y===t?W:qt(Dp())}function fr(){var Yn=Dp(),qr=pt(Yn);if(M=arguments,R=this,Q=Yn,qr){if(Y===t)return dt(Q);if(Se)return Wb(Y),Y=Ju(Ht,u),tt(Q)}return Y===t&&(Y=Ju(Ht,u)),W}return fr.cancel=pr,fr.flush=Ui,fr}var JR=It(function(a,u){return pp(a,1,u)}),QR=It(function(a,u,v){return pp(a,Dr(u)||0,v)});function $R(a){return $s(a,k)}function Ip(a,u){if(typeof a!="function"||u!=null&&typeof u!="function")throw new Ei(o);var v=function(){var M=arguments,R=u?u.apply(this,M):M[0],N=v.cache;if(N.has(R))return N.get(R);var W=a.apply(this,M);return v.cache=N.set(R,W)||N,W};return v.cache=new(Ip.Cache||Ti),v}Ip.Cache=Ti;function Op(a){if(typeof a!="function")throw new Ei(o);return function(){var u=arguments;switch(u.length){case 0:return!a.call(this);case 1:return!a.call(this,u[0]);case 2:return!a.call(this,u[0],u[1]);case 3:return!a.call(this,u[0],u[1],u[2])}return!a.apply(this,u)}}function eL(a){return Rw(2,a)}var tL=V3(function(a,u){u=u.length==1&&Et(u[0])?_n(u[0],_i(ut())):_n(ii(u,1),_i(ut()));var v=u.length;return It(function(M){for(var R=-1,N=ui(M.length,v);++R=u}),qa=yp(function(){return arguments}())?yp:function(a){return Un(a)&&en.call(a,"callee")&&!ep.call(a,"callee")},Et=ie.isArray,vL=Wd?_i(Wd):e0;function tr(a){return a!=null&&kp(a.length)&&!no(a)}function qn(a){return Un(a)&&tr(a)}function gL(a){return a===!0||a===!1||Un(a)&&xi(a)==nt}var $o=xg||k0,yL=yi?_i(yi):m;function _L(a){return Un(a)&&a.nodeType===1&&!Qu(a)}function xL(a){if(a==null)return!0;if(tr(a)&&(Et(a)||typeof a=="string"||typeof a.splice=="function"||$o(a)||rc(a)||qa(a)))return!a.length;var u=Ci(a);if(u==Ae||u==yt)return!a.size;if(Ku(a))return!jt(a).length;for(var v in a)if(en.call(a,v))return!1;return!0}function bL(a,u){return c(a,u)}function wL(a,u,v){v=typeof v=="function"?v:t;var M=v?v(a,u):t;return M===t?c(a,u,t,v):!!M}function E0(a){if(!Un(a))return!1;var u=xi(a);return u==vt||u==Le||typeof a.message=="string"&&typeof a.name=="string"&&!Qu(a)}function SL(a){return typeof a=="number"&&tp(a)}function no(a){if(!Nn(a))return!1;var u=xi(a);return u==ve||u==xe||u==Ut||u==st}function Nw(a){return typeof a=="number"&&a==Rt(a)}function kp(a){return typeof a=="number"&&a>-1&&a%1==0&&a<=re}function Nn(a){var u=typeof a;return a!=null&&(u=="object"||u=="function")}function Un(a){return a!=null&&typeof a=="object"}var Bw=jd?_i(jd):x;function ML(a,u){return a===u||L(a,u,m0(u))}function EL(a,u,v){return v=typeof v=="function"?v:t,L(a,u,m0(u),v)}function TL(a){return zw(a)&&a!=+a}function AL(a){if(uP(a))throw new ft(s);return q(a)}function CL(a){return a===null}function PL(a){return a==null}function zw(a){return typeof a=="number"||Un(a)&&xi(a)==We}function Qu(a){if(!Un(a)||xi(a)!=rt)return!1;var u=Hl(a);if(u===null)return!0;var v=en.call(u,"constructor")&&u.constructor;return typeof v=="function"&&v instanceof v&&Bl.call(v)==vg}var T0=Ra?_i(Ra):ee;function RL(a){return Nw(a)&&a>=-re&&a<=re}var Uw=Ru?_i(Ru):Oe;function Np(a){return typeof a=="string"||!Et(a)&&Un(a)&&xi(a)==H}function dr(a){return typeof a=="symbol"||Un(a)&&xi(a)==B}var rc=Rl?_i(Rl):lt;function LL(a){return a===t}function DL(a){return Un(a)&&Ci(a)==we}function IL(a){return Un(a)&&xi(a)==Ne}var OL=Tp(jr),kL=Tp(function(a,u){return a<=u});function Fw(a){if(!a)return[];if(tr(a))return Np(a)?cr(a):er(a);if(Vo&&a[Vo])return hg(a[Vo]());var u=Ci(a),v=u==Ae?ku:u==yt?Ba:sc;return v(a)}function io(a){if(!a)return a===0?a:0;if(a=Dr(a),a===pe||a===-pe){var u=a<0?-1:1;return u*se}return a===a?a:0}function Rt(a){var u=io(a),v=u%1;return u===u?v?u-v:u:0}function Vw(a){return a?Ai(Rt(a),0,Te):0}function Dr(a){if(typeof a=="number")return a;if(dr(a))return ue;if(Nn(a)){var u=typeof a.valueOf=="function"?a.valueOf():a;a=Nn(u)?u+"":u}if(typeof a!="string")return a===0?a:+a;a=Ou(a);var v=Vt.test(a);return v||Tr.test(a)?rg(a.slice(2),v?2:8):Nt.test(a)?ue:+a}function Hw(a){return bs(a,nr(a))}function NL(a){return a?Ai(Rt(a),-re,re):a===0?a:0}function sn(a){return a==null?"":hr(a)}var BL=tc(function(a,u){if(Ku(u)||tr(u)){bs(u,hi(u),a);return}for(var v in u)en.call(u,v)&&Ha(a,v,u[v])}),Gw=tc(function(a,u){bs(u,nr(u),a)}),Bp=tc(function(a,u,v,M){bs(u,nr(u),a,M)}),zL=tc(function(a,u,v,M){bs(u,hi(u),a,M)}),UL=eo(Wu);function FL(a,u){var v=Wo(a);return u==null?v:dp(v,u)}var VL=It(function(a,u){a=ln(a);var v=-1,M=u.length,R=M>2?u[2]:t;for(R&&zi(u[0],u[1],R)&&(M=1);++v1),N}),bs(a,p0(a),v),M&&(v=$i(v,g|y|_,Q3));for(var R=u.length;R--;)s0(v,u[R]);return v});function sD(a,u){return jw(a,Op(ut(u)))}var oD=eo(function(a,u){return a==null?{}:I3(a,u)});function jw(a,u){if(a==null)return{};var v=_n(p0(a),function(M){return[M]});return u=ut(u),Nb(a,v,function(M,R){return u(M,R[0])})}function aD(a,u,v){u=Jo(u,a);var M=-1,R=u.length;for(R||(R=1,a=t);++Mu){var M=a;a=u,u=M}if(v||a%1||u%1){var R=np();return ui(a+R*(u-a+ig("1e-"+((R+"").length-1))),u)}return n0(a,u)}var yD=nc(function(a,u,v){return u=u.toLowerCase(),a+(v?Yw(u):u)});function Yw(a){return P0(sn(a).toLowerCase())}function Zw(a){return a=sn(a),a&&a.replace(cs,Ol).replace(qv,"")}function _D(a,u,v){a=sn(a),u=hr(u);var M=a.length;v=v===t?M:Ai(Rt(v),0,M);var R=v;return v-=u.length,v>=0&&a.slice(v,R)==u}function xD(a){return a=sn(a),a&&Yi.test(a)?a.replace(Ct,lg):a}function bD(a){return a=sn(a),a&&yu.test(a)?a.replace(Aa,"\\$&"):a}var wD=nc(function(a,u,v){return a+(v?"-":"")+u.toLowerCase()}),SD=nc(function(a,u,v){return a+(v?" ":"")+u.toLowerCase()}),MD=Qb("toLowerCase");function ED(a,u,v){a=sn(a),u=Rt(u);var M=u?Ys(a):0;if(!u||M>=u)return a;var R=(u-M)/2;return Ep(Ho(R),v)+a+Ep(ql(R),v)}function TD(a,u,v){a=sn(a),u=Rt(u);var M=u?Ys(a):0;return u&&M>>0,v?(a=sn(a),a&&(typeof u=="string"||u!=null&&!T0(u))&&(u=hr(u),!u&&Bo(a))?Qo(cr(a),0,v):a.split(u,v)):[]}var ID=nc(function(a,u,v){return a+(v?" ":"")+P0(u)});function OD(a,u,v){return a=sn(a),v=v==null?0:Ai(Rt(v),0,a.length),u=hr(u),a.slice(v,v+u.length)==u}function kD(a,u,v){var M=O.templateSettings;v&&zi(a,u,v)&&(u=t),a=sn(a),u=Bp({},u,M,sw);var R=Bp({},u.imports,M.imports,sw),N=hi(R),W=Oa(R,N),Y,Q,_e=0,be=u.interpolate||ci,Se="__p += '",Ve=Nu((u.escape||ci).source+"|"+be.source+"|"+(be===Vs?St:ci).source+"|"+(u.evaluate||ci).source+"|$","g"),tt="//# sourceURL="+(en.call(u,"sourceURL")?(u.sourceURL+"").replace(/\s/g," "):"lodash.templateSources["+ ++Qv+"]")+` `;a.replace(Ve,function(pt,Ht,qt,pr,Ui,fr){return qt||(qt=pr),Se+=a.slice(_e,fr).replace(Pt,cg),Ht&&(Y=!0,Se+=`' + __e(`+Ht+`) + '`),Ui&&(Q=!0,Se+=`'; `+Ui+`; __p += '`),qt&&(Se+=`' + ((__t = (`+qt+`)) == null ? '' : __t) + '`),_e=fr+pt.length,pt}),Se+=`'; `;var dt=en.call(u,"variable")&&u.variable;if(!dt)Se=`with (obj) { `+Se+` } `;else if(gt.test(dt))throw new ft(l);Se=(Q?Se.replace(et,""):Se).replace(Ie,"$1").replace(ct,"$1;"),Se="function("+(dt||"obj")+`) { `+(dt?"":`obj || (obj = {}); `)+"var __t, __p = ''"+(Y?", __e = _.escape":"")+(Q?`, __j = Array.prototype.join; function print() { __p += __j.call(arguments, '') } `:`; `)+Se+`return __p }`;var Lt=Jw(function(){return Wt(N,tt+"return "+Se).apply(t,W)});if(Lt.source=Se,E0(Lt))throw Lt;return Lt}function ND(a){return sn(a).toLowerCase()}function BD(a){return sn(a).toUpperCase()}function zD(a,u,v){if(a=sn(a),a&&(v||u===t))return Ou(a);if(!a||!(u=hr(u)))return a;var M=cr(a),R=cr(u),N=Na(M,R),W=Xs(M,R)+1;return Qo(M,N,W).join("")}function UD(a,u,v){if(a=sn(a),a&&(v||u===t))return a.slice(0,Kd(a)+1);if(!a||!(u=hr(u)))return a;var M=cr(a),R=Xs(M,cr(u))+1;return Qo(M,0,R).join("")}function FD(a,u,v){if(a=sn(a),a&&(v||u===t))return a.replace(V,"");if(!a||!(u=hr(u)))return a;var M=cr(a),R=Na(M,cr(u));return Qo(M,R).join("")}function VD(a,u){var v=j,M=G;if(Nn(u)){var R="separator"in u?u.separator:R;v="length"in u?Rt(u.length):v,M="omission"in u?hr(u.omission):M}a=sn(a);var N=a.length;if(Bo(a)){var W=cr(a);N=W.length}if(v>=N)return a;var Y=v-Ys(M);if(Y<1)return M;var Q=W?Qo(W,0,Y).join(""):a.slice(0,Y);if(R===t)return Q+M;if(W&&(Y+=Q.length-Y),T0(R)){if(a.slice(Y).search(R)){var _e,be=Q;for(R.global||(R=Nu(R.source,sn(Dt.exec(R))+"g")),R.lastIndex=0;_e=R.exec(be);)var Se=_e.index;Q=Q.slice(0,Se===t?Y:Se)}}else if(a.indexOf(hr(R),Y)!=Y){var Ve=Q.lastIndexOf(R);Ve>-1&&(Q=Q.slice(0,Ve))}return Q+M}function HD(a){return a=sn(a),a&&jn.test(a)?a.replace(wt,fg):a}var GD=nc(function(a,u,v){return a+(v?" ":"")+u.toUpperCase()}),P0=Qb("toUpperCase");function Kw(a,u,v){return a=sn(a),u=v?t:u,u===t?qs(a)?ms(a):Lu(a):a.match(u)||[]}var Jw=It(function(a,u){try{return Mi(a,t,u)}catch(v){return E0(v)?v:new ft(v)}}),WD=eo(function(a,u){return Ji(u,function(v){v=ws(v),Gr(a,v,S0(a[v],a))}),a});function jD(a){var u=a==null?0:a.length,v=ut();return a=u?_n(a,function(M){if(typeof M[1]!="function")throw new Ei(o);return[v(M[0]),M[1]]}):[],It(function(M){for(var R=-1;++Rre)return[];var v=Te,M=ui(a,Te);u=ut(u),a-=Te;for(var R=Il(M,u);++v0||u<0)?new Mt(v):(a<0?v=v.takeRight(-a):a&&(v=v.drop(a)),u!==t&&(u=Rt(u),v=u<0?v.dropRight(-u):v.take(u-a)),v)},Mt.prototype.takeRightWhile=function(a){return this.reverse().takeWhile(a).reverse()},Mt.prototype.toArray=function(){return this.take(Te)},Pr(Mt.prototype,function(a,u){var v=/^(?:filter|find|map|reject)|While$/.test(u),M=/^(?:head|last)$/.test(u),R=O[M?"take"+(u=="last"?"Right":""):u],N=M||/^find/.test(u);R&&(O.prototype[u]=function(){var W=this.__wrapped__,Y=M?[1]:arguments,Q=W instanceof Mt,_e=Y[0],be=Q||Et(W),Se=function(Ht){var qt=R.apply(O,Ur([Ht],Y));return M&&Ve?qt[0]:qt};be&&v&&typeof _e=="function"&&_e.length!=1&&(Q=be=!1);var Ve=this.__chain__,tt=!!this.__actions__.length,dt=N&&!Ve,Lt=Q&&!tt;if(!N&&be){W=Lt?W:new Mt(this);var pt=a.apply(W,Y);return pt.__actions__.push({func:Rp,args:[Se],thisArg:t}),new Bi(pt,Ve)}return dt&&Lt?a.apply(this,Y):(pt=this.thru(Se),dt?M?pt.value()[0]:pt.value():pt)})}),Ji(["pop","push","shift","sort","splice","unshift"],function(a){var u=Zs[a],v=/^(?:push|sort|unshift)$/.test(a)?"tap":"thru",M=/^(?:pop|shift)$/.test(a);O.prototype[a]=function(){var R=arguments;if(M&&!this.__chain__){var N=this.value();return u.apply(Et(N)?N:[],R)}return this[v](function(W){return u.apply(Et(W)?W:[],R)})}}),Pr(Mt.prototype,function(a,u){var v=O[u];if(v){var M=v.name+"";en.call(Ni,M)||(Ni[M]=[]),Ni[M].push({name:u,func:v})}}),Ni[Sp(t,T).name]=[{name:"wrapper",func:t}],Mt.prototype.clone=Pg,Mt.prototype.reverse=ys,Mt.prototype.value=Rg,O.prototype.at=_R,O.prototype.chain=xR,O.prototype.commit=bR,O.prototype.next=wR,O.prototype.plant=MR,O.prototype.reverse=ER,O.prototype.toJSON=O.prototype.valueOf=O.prototype.value=TR,O.prototype.first=O.prototype.head,Vo&&(O.prototype[Vo]=SR),O},vs=mg();hs?((hs.exports=vs)._=vs,Pu._=vs):ni._=vs}).call(rl)})(rs,rs.exports);const Ma=(i,e,t)=>{if(!i.has(e)){const n=t();return i.set(e,n),n}return i.get(e)},z4=i=>{throw new Error("unexpected value: "+i)},zy=(i,e,t=new WeakSet)=>{if(Array.isArray(i)){if(t.has(i))return;t.add(i);for(let n=0;n{const t=i.indexOf(e);return t===-1?!1:(i.splice(t,1),!0)},RE=(i,e=-1)=>i[i.length+e],Uy=(i,e)=>Math.random()*(e-i)+i,J_=(i,e,t)=>{let n,r=!1,s,o,l=t==="trailingPromise"?new Promise(h=>o=h):void 0;return(...h)=>{if(s=h,r)return l??n;r=!0,(t==="leading"||t==="both")&&(n=i(...s));const d=()=>{(t==="trailing"||t==="both"||t==="trailingPromise")&&(n=i(...s),o==null||o(n),l=t==="trailingPromise"?new Promise(f=>o=f):void 0),r=!1};return e>0?setTimeout(d,e):queueMicrotask(d),l??n}},U4=(i,e)=>{if(e===0){let n=!0;return queueMicrotask(()=>n&&i()),()=>n=!1}const t=setTimeout(i,e);return()=>clearTimeout(t)},Mr=(i,e,t)=>{let n,r,s,o,l=t==="trailingPromise"?new Promise(h=>o=h):void 0;return(...h)=>(s=h,n?n():(t==="leading"||t==="both")&&(r=i(...s)),n=U4(()=>{(t==="trailing"||t==="both"||t==="trailingPromise")&&(r=i(...s),o==null||o(r),l=t==="trailingPromise"?new Promise(d=>o=d):void 0),n=void 0},e),l??r)},F4=i=>i,yl=(i,e)=>{let t,n=!1,r=e==null?void 0:e();return(...s)=>{if(e){const o=e();r!==o&&(n=!1),r=o}return n?t:(n=!0,t=i(...s))}},ks=(i,e)=>{for(const t of e)for(const n of Object.getOwnPropertyNames(t.prototype))!(n in i.prototype)&&Object.defineProperty(i.prototype,n,Object.getOwnPropertyDescriptor(t.prototype,n)||Object.create(null))};class Q_{constructor(e=void 0){this._cb=e,this.done=void 0,this._value=void 0,this._callbacks=void 0,this._watched=void 0}then(e){var t;return this.done?(e(this._value),new En):(((t=this._callbacks)!==null&&t!==void 0?t:this._callbacks=new Set).add(e),new En(()=>this._callbacks.delete(e)))}watch(e){var t;return this.done?e._resolve(this._value):(((t=this._watched)!==null&&t!==void 0?t:this._watched=new Set).add(e),e.then(()=>this._watched.delete(e)),e)}_resolve(e){var t;if(this.done)return this;if(this.done=!0,this._value=e,(t=this._cb)===null||t===void 0||t.call(this,e),this._callbacks)for(const n of this._callbacks)n(e);if(this._watched)for(const n of this._watched)n._resolve(e);return this}}class Fc extends Q_{constructor(e){super(e)}resolve(e){return this._resolve(e)}}class En extends Q_{constructor(e){super(e)}cancel(){return this._resolve()}}class $_ extends Q_{constructor(e){super(e)}_resolve(){return this.dispose(),this}dispose(){return super._resolve()}}new En().cancel();class LE{constructor(){this.cbsMap=new Map}on(e,t){var n;if(Array.isArray(e)){const s=new En;for(const o of e)s.watch(this.on(o,t));return s}!((n=this.states)===null||n===void 0)&&n.has(e)&&t(this.states.get(e));const r=Ma(this.cbsMap,e,()=>new Set);return r.add(t),new En(()=>r.delete(t))}once(e,t){const n=new En;return n.watch(this.on(e,r=>{n.cancel(),t(r)})),n}emit(e,t){if(this.cbsMap.has(e))for(const n of this.cbsMap.get(e))n(t)}hasState(e){var t;return!!(!((t=this.states)===null||t===void 0)&&t.has(e))}setState(e,t){var n;(n=this.states)!==null&&n!==void 0||(this.states=new Map),!(this.states.has(e)&&this.states.get(e)===t)&&(this.states.set(e,t),this.emit(e,t))}getState(e){var t;return(t=this.states)===null||t===void 0?void 0:t.get(e)}deleteState(e){var t;(t=this.states)===null||t===void 0||t.delete(e)}clear(){var e;this.cbsMap.clear(),(e=this.states)===null||e===void 0||e.clear()}}class V4{constructor(){this.cbs=new Set}on(e){return"state"in this&&e(this.state),this.cbs.add(e),new En(()=>this.cbs.delete(e))}once(e){const t=new En;return t.watch(this.on(n=>{t.cancel(),e(n)})),t}emit(e){for(const t of this.cbs)t(e)}setState(e){"state"in this&&this.state===e||(this.state=e,this.emit(e))}getState(){return this.state}}var Er=()=>{const i=new V4;return[s=>i.emit(s),(s,o)=>o?i.once(s):i.on(s),s=>i.setState(s),()=>i.getState()]};const H4=new WeakSet,Ge=i=>{const[,e,t,n]=Er();t(i);const r=s=>{if(s){const o=new En;return o.watch(e(l=>s(l,o))),o}return n()};return H4.add(r),[t,r]},Im=(i,e)=>t=>{const n=e();n&&i([...n,t])},Om=(i,e)=>t=>{const n=e();n&&i(n.filter(r=>r!==t))},G4=(i,e)=>{const t=e();return t&&typeof t=="object"&&(zy(t,(n,r)=>Object.freeze(r)),Object.freeze(t)),()=>i(t)},Ls=[],t1=i=>{var e,t,n;const r=Ls[Ls.length-1];return(e=(t=r.fiber)[n=r.count++])!==null&&e!==void 0?e:t[n]=i()},n1=i=>{var e,t;const n=Ls[Ls.length-1],r=n.count++;return(e=(t=n.fiber)[r])!==null&&e!==void 0||(t[r]=i),[()=>n.fiber[r],s=>n.fiber[r]=s]},DE=(i,e,t,n,r,s)=>{Ls.push({count:0,fiber:t,handle:i});const o=n.map(d=>typeof d=="function"?d():d),l=!r||o.some((d,f)=>d!==r[f]);l&&typeof e=="function"&&e();const h=l?s():void 0;return Ls.pop(),[h,o,l]},W4=(i,e)=>{const t=t1(()=>Ls[Ls.length-1].handle.watch(new En(()=>{var w;return(w=r())===null||w===void 0?void 0:w()})));if(t.done)return t;const n=t1(()=>[]),[r,s]=n1(void 0),[o,l]=n1(void 0),h=r(),d=o();h&&typeof h!="function"&&console.warn("cleanup is not a function");const[f,g,y]=DE(t,h,n,e,d,i);return y&&s(typeof f=="function"?f:void 0),l(g),t},Kt=(i,e)=>{const t=new En(()=>setTimeout(()=>r==null?void 0:r())),n=[];let r,s;const o=Mr(()=>{const[l,h,d]=DE(t,r,n,e,s,i);d&&(r=typeof l=="function"?l:void 0),s=h},0,"trailing");o();for(const l of e)typeof l=="function"&&t.watch(l(o));return t},j4=i=>{var e,t,n;const r=Ls[Ls.length-1];return(e=(t=r.fiber)[n=r.count++])!==null&&e!==void 0?e:t[n]={current:typeof i=="function"?i():i}};class Tn{constructor(e){[this.set,this.get]=Ge(e)}}/** * @license * Copyright 2010-2022 Three.js Authors * SPDX-License-Identifier: MIT */const ex="140",oc={LEFT:0,MIDDLE:1,RIGHT:2,ROTATE:0,DOLLY:1,PAN:2},ac={ROTATE:0,PAN:1,DOLLY_PAN:2,DOLLY_ROTATE:3},X4=0,i1=1,q4=2,IE=1,Y4=2,dh=3,Oh=0,xr=1,_a=2,OE=1,rn=0,yo=1,Qf=2,r1=3,s1=4,Fy=5,Es=100,Z4=101,K4=102,o1=103,a1=104,Vy=200,J4=201,Q4=202,$4=203,$f=204,em=205,kE=206,eI=207,NE=208,tI=209,nI=210,iI=0,rI=1,sI=2,Hy=3,oI=4,aI=5,lI=6,cI=7,km=0,uI=1,hI=2,As=0,BE=1,dI=2,pI=3,fI=4,mI=5,zE=300,Vc=301,Hc=302,kh=303,Gy=304,Nm=306,Nh=1e3,yr=1001,Wy=1002,Xt=1003,l1=1004,c1=1005,Hn=1006,vI=1007,od=1008,dl=1009,gI=1010,yI=1011,pl=1012,_I=1013,Ff=1014,is=1015,Ts=1016,xI=1017,bI=1018,zc=1020,wI=1021,SI=1022,Or=1023,MI=1024,EI=1025,cl=1026,Gc=1027,TI=1028,AI=1029,CI=1030,PI=1031,RI=1033,B0=33776,z0=33777,U0=33778,F0=33779,u1=35840,h1=35841,d1=35842,p1=35843,LI=36196,f1=37492,m1=37496,v1=37808,g1=37809,y1=37810,_1=37811,x1=37812,b1=37813,w1=37814,S1=37815,M1=37816,E1=37817,T1=37818,A1=37819,C1=37820,P1=37821,R1=36492,jy=2200,Xy=2201,DI=2202,tm=2300,nm=2301,V0=2302,Ic=2400,Oc=2401,im=2402,tx=2500,UE=2501,II=0,p9=1,f9=2,Ds=3e3,Ln=3001,OI=3200,Bm=3201,_l=0,FE=1,fo="srgb",al="srgb-linear",H0=7680,kI=519,Bh=35044,rm=35048,L1="300 es",qy=1035;class Ea{addEventListener(e,t){this._listeners===void 0&&(this._listeners={});const n=this._listeners;n[e]===void 0&&(n[e]=[]),n[e].indexOf(t)===-1&&n[e].push(t)}hasEventListener(e,t){if(this._listeners===void 0)return!1;const n=this._listeners;return n[e]!==void 0&&n[e].indexOf(t)!==-1}removeEventListener(e,t){if(this._listeners===void 0)return;const r=this._listeners[e];if(r!==void 0){const s=r.indexOf(t);s!==-1&&r.splice(s,1)}}dispatchEvent(e){if(this._listeners===void 0)return;const n=this._listeners[e.type];if(n!==void 0){e.target=this;const r=n.slice(0);for(let s=0,o=r.length;s>8&255]+bi[i>>16&255]+bi[i>>24&255]+"-"+bi[e&255]+bi[e>>8&255]+"-"+bi[e>>16&15|64]+bi[e>>24&255]+"-"+bi[t&63|128]+bi[t>>8&255]+"-"+bi[t>>16&255]+bi[t>>24&255]+bi[n&255]+bi[n>>8&255]+bi[n>>16&255]+bi[n>>24&255]).toLowerCase()}function Jn(i,e,t){return Math.max(e,Math.min(t,i))}function nx(i,e){return(i%e+e)%e}function NI(i,e,t,n,r){return n+(i-e)*(r-n)/(t-e)}function BI(i,e,t){return i!==e?(t-i)/(e-i):0}function _h(i,e,t){return(1-t)*i+t*e}function zI(i,e,t,n){return _h(i,e,1-Math.exp(-t*n))}function UI(i,e=1){return e-Math.abs(nx(i,e*2)-e)}function FI(i,e,t){return i<=e?0:i>=t?1:(i=(i-e)/(t-e),i*i*(3-2*i))}function VI(i,e,t){return i<=e?0:i>=t?1:(i=(i-e)/(t-e),i*i*i*(i*(i*6-15)+10))}function HI(i,e){return i+Math.floor(Math.random()*(e-i+1))}function GI(i,e){return i+Math.random()*(e-i)}function WI(i){return i*(.5-Math.random())}function jI(i){i!==void 0&&(D1=i);let e=D1+=1831565813;return e=Math.imul(e^e>>>15,e|1),e^=e+Math.imul(e^e>>>7,e|61),((e^e>>>14)>>>0)/4294967296}function XI(i){return i*yh}function qI(i){return i*zh}function Yy(i){return(i&i-1)===0&&i!==0}function VE(i){return Math.pow(2,Math.ceil(Math.log(i)/Math.LN2))}function sm(i){return Math.pow(2,Math.floor(Math.log(i)/Math.LN2))}function YI(i,e,t,n,r){const s=Math.cos,o=Math.sin,l=s(t/2),h=o(t/2),d=s((e+n)/2),f=o((e+n)/2),g=s((e-n)/2),y=o((e-n)/2),_=s((n-e)/2),w=o((n-e)/2);switch(r){case"XYX":i.set(l*f,h*g,h*y,l*d);break;case"YZY":i.set(h*y,l*f,h*g,l*d);break;case"ZXZ":i.set(h*g,h*y,l*f,l*d);break;case"XZX":i.set(l*f,h*w,h*_,l*d);break;case"YXY":i.set(h*_,l*f,h*w,l*d);break;case"ZYZ":i.set(h*w,h*_,l*f,l*d);break;default:console.warn("THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: "+r)}}function ZI(i,e){switch(e.constructor){case Float32Array:return i;case Uint16Array:return i/65535;case Uint8Array:return i/255;case Int16Array:return Math.max(i/32767,-1);case Int8Array:return Math.max(i/127,-1);default:throw new Error("Invalid component type.")}}function KI(i,e){switch(e.constructor){case Float32Array:return i;case Uint16Array:return Math.round(i*65535);case Uint8Array:return Math.round(i*255);case Int16Array:return Math.round(i*32767);case Int8Array:return Math.round(i*127);default:throw new Error("Invalid component type.")}}var G0=Object.freeze({__proto__:null,DEG2RAD:yh,RAD2DEG:zh,generateUUID:kr,clamp:Jn,euclideanModulo:nx,mapLinear:NI,inverseLerp:BI,lerp:_h,damp:zI,pingpong:UI,smoothstep:FI,smootherstep:VI,randInt:HI,randFloat:GI,randFloatSpread:WI,seededRandom:jI,degToRad:XI,radToDeg:qI,isPowerOfTwo:Yy,ceilPowerOfTwo:VE,floorPowerOfTwo:sm,setQuaternionFromProperEuler:YI,normalize:KI,denormalize:ZI});class ae{constructor(e=0,t=0){this.x=e,this.y=t}get width(){return this.x}set width(e){this.x=e}get height(){return this.y}set height(e){this.y=e}set(e,t){return this.x=e,this.y=t,this}setScalar(e){return this.x=e,this.y=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y)}copy(e){return this.x=e.x,this.y=e.y,this}add(e,t){return t!==void 0?(console.warn("THREE.Vector2: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(e,t)):(this.x+=e.x,this.y+=e.y,this)}addScalar(e){return this.x+=e,this.y+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this}sub(e,t){return t!==void 0?(console.warn("THREE.Vector2: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(e,t)):(this.x-=e.x,this.y-=e.y,this)}subScalar(e){return this.x-=e,this.y-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this}multiply(e){return this.x*=e.x,this.y*=e.y,this}multiplyScalar(e){return this.x*=e,this.y*=e,this}divide(e){return this.x/=e.x,this.y/=e.y,this}divideScalar(e){return this.multiplyScalar(1/e)}applyMatrix3(e){const t=this.x,n=this.y,r=e.elements;return this.x=r[0]*t+r[3]*n+r[6],this.y=r[1]*t+r[4]*n+r[7],this}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this}clamp(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this}clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this}clampLength(e,t){const n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(e,Math.min(t,n)))}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(e){return this.x*e.x+this.y*e.y}cross(e){return this.x*e.y-this.y*e.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(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){const t=this.x-e.x,n=this.y-e.y;return t*t+n*n}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this}lerpVectors(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,this}equals(e){return e.x===this.x&&e.y===this.y}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e}fromBufferAttribute(e,t,n){return n!==void 0&&console.warn("THREE.Vector2: offset has been removed from .fromBufferAttribute()."),this.x=e.getX(t),this.y=e.getY(t),this}rotateAround(e,t){const n=Math.cos(t),r=Math.sin(t),s=this.x-e.x,o=this.y-e.y;return this.x=s*n-o*r+e.x,this.y=s*r+o*n+e.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y}}ae.prototype.isVector2=!0;class Gn{constructor(){this.elements=[1,0,0,0,1,0,0,0,1],arguments.length>0&&console.error("THREE.Matrix3: the constructor no longer reads arguments. use .set() instead.")}set(e,t,n,r,s,o,l,h,d){const f=this.elements;return f[0]=e,f[1]=r,f[2]=l,f[3]=t,f[4]=s,f[5]=h,f[6]=n,f[7]=o,f[8]=d,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(e){const t=this.elements,n=e.elements;return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[4]=n[4],t[5]=n[5],t[6]=n[6],t[7]=n[7],t[8]=n[8],this}extractBasis(e,t,n){return e.setFromMatrix3Column(this,0),t.setFromMatrix3Column(this,1),n.setFromMatrix3Column(this,2),this}setFromMatrix4(e){const t=e.elements;return this.set(t[0],t[4],t[8],t[1],t[5],t[9],t[2],t[6],t[10]),this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){const n=e.elements,r=t.elements,s=this.elements,o=n[0],l=n[3],h=n[6],d=n[1],f=n[4],g=n[7],y=n[2],_=n[5],w=n[8],S=r[0],b=r[3],T=r[6],E=r[1],C=r[4],A=r[7],D=r[2],I=r[5],F=r[8];return s[0]=o*S+l*E+h*D,s[3]=o*b+l*C+h*I,s[6]=o*T+l*A+h*F,s[1]=d*S+f*E+g*D,s[4]=d*b+f*C+g*I,s[7]=d*T+f*A+g*F,s[2]=y*S+_*E+w*D,s[5]=y*b+_*C+w*I,s[8]=y*T+_*A+w*F,this}multiplyScalar(e){const t=this.elements;return t[0]*=e,t[3]*=e,t[6]*=e,t[1]*=e,t[4]*=e,t[7]*=e,t[2]*=e,t[5]*=e,t[8]*=e,this}determinant(){const e=this.elements,t=e[0],n=e[1],r=e[2],s=e[3],o=e[4],l=e[5],h=e[6],d=e[7],f=e[8];return t*o*f-t*l*d-n*s*f+n*l*h+r*s*d-r*o*h}invert(){const e=this.elements,t=e[0],n=e[1],r=e[2],s=e[3],o=e[4],l=e[5],h=e[6],d=e[7],f=e[8],g=f*o-l*d,y=l*h-f*s,_=d*s-o*h,w=t*g+n*y+r*_;if(w===0)return this.set(0,0,0,0,0,0,0,0,0);const S=1/w;return e[0]=g*S,e[1]=(r*d-f*n)*S,e[2]=(l*n-r*o)*S,e[3]=y*S,e[4]=(f*t-r*h)*S,e[5]=(r*s-l*t)*S,e[6]=_*S,e[7]=(n*h-d*t)*S,e[8]=(o*t-n*s)*S,this}transpose(){let e;const t=this.elements;return e=t[1],t[1]=t[3],t[3]=e,e=t[2],t[2]=t[6],t[6]=e,e=t[5],t[5]=t[7],t[7]=e,this}getNormalMatrix(e){return this.setFromMatrix4(e).invert().transpose()}transposeIntoArray(e){const t=this.elements;return e[0]=t[0],e[1]=t[3],e[2]=t[6],e[3]=t[1],e[4]=t[4],e[5]=t[7],e[6]=t[2],e[7]=t[5],e[8]=t[8],this}setUvTransform(e,t,n,r,s,o,l){const h=Math.cos(s),d=Math.sin(s);return this.set(n*h,n*d,-n*(h*o+d*l)+o+e,-r*d,r*h,-r*(-d*o+h*l)+l+t,0,0,1),this}scale(e,t){const n=this.elements;return n[0]*=e,n[3]*=e,n[6]*=e,n[1]*=t,n[4]*=t,n[7]*=t,this}rotate(e){const t=Math.cos(e),n=Math.sin(e),r=this.elements,s=r[0],o=r[3],l=r[6],h=r[1],d=r[4],f=r[7];return r[0]=t*s+n*h,r[3]=t*o+n*d,r[6]=t*l+n*f,r[1]=-n*s+t*h,r[4]=-n*o+t*d,r[7]=-n*l+t*f,this}translate(e,t){const n=this.elements;return n[0]+=e*n[2],n[3]+=e*n[5],n[6]+=e*n[8],n[1]+=t*n[2],n[4]+=t*n[5],n[7]+=t*n[8],this}equals(e){const t=this.elements,n=e.elements;for(let r=0;r<9;r++)if(t[r]!==n[r])return!1;return!0}fromArray(e,t=0){for(let n=0;n<9;n++)this.elements[n]=e[n+t];return this}toArray(e=[],t=0){const n=this.elements;return e[t]=n[0],e[t+1]=n[1],e[t+2]=n[2],e[t+3]=n[3],e[t+4]=n[4],e[t+5]=n[5],e[t+6]=n[6],e[t+7]=n[7],e[t+8]=n[8],e}clone(){return new this.constructor().fromArray(this.elements)}}Gn.prototype.isMatrix3=!0;function HE(i){for(let e=i.length-1;e>=0;--e)if(i[e]>65535)return!0;return!1}function Uh(i){return document.createElementNS("http://www.w3.org/1999/xhtml",i)}function ul(i){return i<.04045?i*.0773993808:Math.pow(i*.9478672986+.0521327014,2.4)}function Vf(i){return i<.0031308?i*12.92:1.055*Math.pow(i,.41666)-.055}const W0={[fo]:{[al]:ul},[al]:{[fo]:Vf}},Yr={legacyMode:!0,get workingColorSpace(){return al},set workingColorSpace(i){console.warn("THREE.ColorManagement: .workingColorSpace is readonly.")},convert:function(i,e,t){if(this.legacyMode||e===t||!e||!t)return i;if(W0[e]&&W0[e][t]!==void 0){const n=W0[e][t];return i.r=n(i.r),i.g=n(i.g),i.b=n(i.b),i}throw new Error("Unsupported color space conversion.")},fromWorkingColorSpace:function(i,e){return this.convert(i,this.workingColorSpace,e)},toWorkingColorSpace:function(i,e){return this.convert(i,e,this.workingColorSpace)}},GE={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},ri={r:0,g:0,b:0},Zr={h:0,s:0,l:0},Up={h:0,s:0,l:0};function j0(i,e,t){return t<0&&(t+=1),t>1&&(t-=1),t<1/6?i+(e-i)*6*t:t<1/2?e:t<2/3?i+(e-i)*6*(2/3-t):i}function Fp(i,e){return e.r=i.r,e.g=i.g,e.b=i.b,e}class Pe{constructor(e,t,n){return t===void 0&&n===void 0?this.set(e):this.setRGB(e,t,n)}set(e){return e&&e.isColor?this.copy(e):typeof e=="number"?this.setHex(e):typeof e=="string"&&this.setStyle(e),this}setScalar(e){return this.r=e,this.g=e,this.b=e,this}setHex(e,t=fo){return e=Math.floor(e),this.r=(e>>16&255)/255,this.g=(e>>8&255)/255,this.b=(e&255)/255,Yr.toWorkingColorSpace(this,t),this}setRGB(e,t,n,r=al){return this.r=e,this.g=t,this.b=n,Yr.toWorkingColorSpace(this,r),this}setHSL(e,t,n,r=al){if(e=nx(e,1),t=Jn(t,0,1),n=Jn(n,0,1),t===0)this.r=this.g=this.b=n;else{const s=n<=.5?n*(1+t):n+t-n*t,o=2*n-s;this.r=j0(o,s,e+1/3),this.g=j0(o,s,e),this.b=j0(o,s,e-1/3)}return Yr.toWorkingColorSpace(this,r),this}setStyle(e,t=fo){function n(s){s!==void 0&&parseFloat(s)<1&&console.warn("THREE.Color: Alpha component of "+e+" will be ignored.")}let r;if(r=/^((?:rgb|hsl)a?)\(([^\)]*)\)/.exec(e)){let s;const o=r[1],l=r[2];switch(o){case"rgb":case"rgba":if(s=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(l))return this.r=Math.min(255,parseInt(s[1],10))/255,this.g=Math.min(255,parseInt(s[2],10))/255,this.b=Math.min(255,parseInt(s[3],10))/255,Yr.toWorkingColorSpace(this,t),n(s[4]),this;if(s=/^\s*(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(l))return this.r=Math.min(100,parseInt(s[1],10))/100,this.g=Math.min(100,parseInt(s[2],10))/100,this.b=Math.min(100,parseInt(s[3],10))/100,Yr.toWorkingColorSpace(this,t),n(s[4]),this;break;case"hsl":case"hsla":if(s=/^\s*(\d*\.?\d+)\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(l)){const h=parseFloat(s[1])/360,d=parseInt(s[2],10)/100,f=parseInt(s[3],10)/100;return n(s[4]),this.setHSL(h,d,f,t)}break}}else if(r=/^\#([A-Fa-f\d]+)$/.exec(e)){const s=r[1],o=s.length;if(o===3)return this.r=parseInt(s.charAt(0)+s.charAt(0),16)/255,this.g=parseInt(s.charAt(1)+s.charAt(1),16)/255,this.b=parseInt(s.charAt(2)+s.charAt(2),16)/255,Yr.toWorkingColorSpace(this,t),this;if(o===6)return this.r=parseInt(s.charAt(0)+s.charAt(1),16)/255,this.g=parseInt(s.charAt(2)+s.charAt(3),16)/255,this.b=parseInt(s.charAt(4)+s.charAt(5),16)/255,Yr.toWorkingColorSpace(this,t),this}return e&&e.length>0?this.setColorName(e,t):this}setColorName(e,t=fo){const n=GE[e.toLowerCase()];return n!==void 0?this.setHex(n,t):console.warn("THREE.Color: Unknown color "+e),this}clone(){return new this.constructor(this.r,this.g,this.b)}copy(e){return this.r=e.r,this.g=e.g,this.b=e.b,this}copySRGBToLinear(e){return this.r=ul(e.r),this.g=ul(e.g),this.b=ul(e.b),this}copyLinearToSRGB(e){return this.r=Vf(e.r),this.g=Vf(e.g),this.b=Vf(e.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(e=fo){return Yr.fromWorkingColorSpace(Fp(this,ri),e),Jn(ri.r*255,0,255)<<16^Jn(ri.g*255,0,255)<<8^Jn(ri.b*255,0,255)<<0}getHexString(e=fo){return("000000"+this.getHex(e).toString(16)).slice(-6)}getHSL(e,t=al){Yr.fromWorkingColorSpace(Fp(this,ri),t);const n=ri.r,r=ri.g,s=ri.b,o=Math.max(n,r,s),l=Math.min(n,r,s);let h,d;const f=(l+o)/2;if(l===o)h=0,d=0;else{const g=o-l;switch(d=f<=.5?g/(o+l):g/(2-o-l),o){case n:h=(r-s)/g+(r"u")return e.src;let t;if(e instanceof HTMLCanvasElement)t=e;else{lc===void 0&&(lc=Uh("canvas")),lc.width=e.width,lc.height=e.height;const n=lc.getContext("2d");e instanceof ImageData?n.putImageData(e,0,0):n.drawImage(e,0,0,e.width,e.height),t=lc}return t.width>2048||t.height>2048?(console.warn("THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons",e),t.toDataURL("image/jpeg",.6)):t.toDataURL("image/png")}static sRGBToLinear(e){if(typeof HTMLImageElement<"u"&&e instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&e instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&e instanceof ImageBitmap){const t=Uh("canvas");t.width=e.width,t.height=e.height;const n=t.getContext("2d");n.drawImage(e,0,0,e.width,e.height);const r=n.getImageData(0,0,e.width,e.height),s=r.data;for(let o=0;o1)switch(this.wrapS){case Nh:e.x=e.x-Math.floor(e.x);break;case yr:e.x=e.x<0?0:1;break;case Wy:Math.abs(Math.floor(e.x)%2)===1?e.x=Math.ceil(e.x)-e.x:e.x=e.x-Math.floor(e.x);break}if(e.y<0||e.y>1)switch(this.wrapT){case Nh:e.y=e.y-Math.floor(e.y);break;case yr:e.y=e.y<0?0:1;break;case Wy:Math.abs(Math.floor(e.y)%2)===1?e.y=Math.ceil(e.y)-e.y:e.y=e.y-Math.floor(e.y);break}return this.flipY&&(e.y=1-e.y),e}set needsUpdate(e){e===!0&&(this.version++,this.source.needsUpdate=!0)}}ti.DEFAULT_IMAGE=null;ti.DEFAULT_MAPPING=zE;ti.prototype.isTexture=!0;class dn{constructor(e=0,t=0,n=0,r=1){this.x=e,this.y=t,this.z=n,this.w=r}get width(){return this.z}set width(e){this.z=e}get height(){return this.w}set height(e){this.w=e}set(e,t,n,r){return this.x=e,this.y=t,this.z=n,this.w=r,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this.w=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setW(e){return this.w=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;case 3:this.w=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){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: "+e)}}clone(){return new this.constructor(this.x,this.y,this.z,this.w)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this.w=e.w!==void 0?e.w:1,this}add(e,t){return t!==void 0?(console.warn("THREE.Vector4: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(e,t)):(this.x+=e.x,this.y+=e.y,this.z+=e.z,this.w+=e.w,this)}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this.w+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this.w=e.w+t.w,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this.w+=e.w*t,this}sub(e,t){return t!==void 0?(console.warn("THREE.Vector4: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(e,t)):(this.x-=e.x,this.y-=e.y,this.z-=e.z,this.w-=e.w,this)}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this.w-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this.w=e.w-t.w,this}multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this.w*=e.w,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this.w*=e,this}applyMatrix4(e){const t=this.x,n=this.y,r=this.z,s=this.w,o=e.elements;return this.x=o[0]*t+o[4]*n+o[8]*r+o[12]*s,this.y=o[1]*t+o[5]*n+o[9]*r+o[13]*s,this.z=o[2]*t+o[6]*n+o[10]*r+o[14]*s,this.w=o[3]*t+o[7]*n+o[11]*r+o[15]*s,this}divideScalar(e){return this.multiplyScalar(1/e)}setAxisAngleFromQuaternion(e){this.w=2*Math.acos(e.w);const t=Math.sqrt(1-e.w*e.w);return t<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=e.x/t,this.y=e.y/t,this.z=e.z/t),this}setAxisAngleFromRotationMatrix(e){let t,n,r,s;const h=e.elements,d=h[0],f=h[4],g=h[8],y=h[1],_=h[5],w=h[9],S=h[2],b=h[6],T=h[10];if(Math.abs(f-y)<.01&&Math.abs(g-S)<.01&&Math.abs(w-b)<.01){if(Math.abs(f+y)<.1&&Math.abs(g+S)<.1&&Math.abs(w+b)<.1&&Math.abs(d+_+T-3)<.1)return this.set(1,0,0,0),this;t=Math.PI;const C=(d+1)/2,A=(_+1)/2,D=(T+1)/2,I=(f+y)/4,F=(g+S)/4,P=(w+b)/4;return C>A&&C>D?C<.01?(n=0,r=.707106781,s=.707106781):(n=Math.sqrt(C),r=I/n,s=F/n):A>D?A<.01?(n=.707106781,r=0,s=.707106781):(r=Math.sqrt(A),n=I/r,s=P/r):D<.01?(n=.707106781,r=.707106781,s=0):(s=Math.sqrt(D),n=F/s,r=P/s),this.set(n,r,s,t),this}let E=Math.sqrt((b-w)*(b-w)+(g-S)*(g-S)+(y-f)*(y-f));return Math.abs(E)<.001&&(E=1),this.x=(b-w)/E,this.y=(g-S)/E,this.z=(y-f)/E,this.w=Math.acos((d+_+T-1)/2),this}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this.w=Math.min(this.w,e.w),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this.w=Math.max(this.w,e.w),this}clamp(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this.z=Math.max(e.z,Math.min(t.z,this.z)),this.w=Math.max(e.w,Math.min(t.w,this.w)),this}clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this.z=Math.max(e,Math.min(t,this.z)),this.w=Math.max(e,Math.min(t,this.w)),this}clampLength(e,t){const n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(e,Math.min(t,n)))}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(e){return this.x*e.x+this.y*e.y+this.z*e.z+this.w*e.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(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this.w+=(e.w-this.w)*t,this}lerpVectors(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,this.z=e.z+(t.z-e.z)*n,this.w=e.w+(t.w-e.w)*n,this}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z&&e.w===this.w}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this.w=e[t+3],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e[t+3]=this.w,e}fromBufferAttribute(e,t,n){return n!==void 0&&console.warn("THREE.Vector4: offset has been removed from .fromBufferAttribute()."),this.x=e.getX(t),this.y=e.getY(t),this.z=e.getZ(t),this.w=e.getW(t),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}}dn.prototype.isVector4=!0;class Yt extends Ea{constructor(e,t,n={}){super(),this.width=e,this.height=t,this.depth=1,this.scissor=new dn(0,0,e,t),this.scissorTest=!1,this.viewport=new dn(0,0,e,t);const r={width:e,height:t,depth:1};this.texture=new ti(r,n.mapping,n.wrapS,n.wrapT,n.magFilter,n.minFilter,n.format,n.type,n.anisotropy,n.encoding),this.texture.isRenderTargetTexture=!0,this.texture.flipY=!1,this.texture.generateMipmaps=n.generateMipmaps!==void 0?n.generateMipmaps:!1,this.texture.internalFormat=n.internalFormat!==void 0?n.internalFormat:null,this.texture.minFilter=n.minFilter!==void 0?n.minFilter:Hn,this.depthBuffer=n.depthBuffer!==void 0?n.depthBuffer:!0,this.stencilBuffer=n.stencilBuffer!==void 0?n.stencilBuffer:!1,this.depthTexture=n.depthTexture!==void 0?n.depthTexture:null,this.samples=n.samples!==void 0?n.samples:0}setSize(e,t,n=1){(this.width!==e||this.height!==t||this.depth!==n)&&(this.width=e,this.height=t,this.depth=n,this.texture.image.width=e,this.texture.image.height=t,this.texture.image.depth=n,this.dispose()),this.viewport.set(0,0,e,t),this.scissor.set(0,0,e,t)}clone(){return new this.constructor().copy(this)}copy(e){this.width=e.width,this.height=e.height,this.depth=e.depth,this.viewport.copy(e.viewport),this.texture=e.texture.clone(),this.texture.isRenderTargetTexture=!0;const t=Object.assign({},e.texture.image);return this.texture.source=new ix(t),this.depthBuffer=e.depthBuffer,this.stencilBuffer=e.stencilBuffer,e.depthTexture!==null&&(this.depthTexture=e.depthTexture.clone()),this.samples=e.samples,this}dispose(){this.dispatchEvent({type:"dispose"})}}Yt.prototype.isWebGLRenderTarget=!0;class zm extends ti{constructor(e=null,t=1,n=1,r=1){super(null),this.image={data:e,width:t,height:n,depth:r},this.magFilter=Xt,this.minFilter=Xt,this.wrapR=yr,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}}zm.prototype.isDataArrayTexture=!0;class QI extends Yt{constructor(e,t,n){super(e,t),this.depth=n,this.texture=new zm(null,e,t,n),this.texture.isRenderTargetTexture=!0}}QI.prototype.isWebGLArrayRenderTarget=!0;class rx extends ti{constructor(e=null,t=1,n=1,r=1){super(null),this.image={data:e,width:t,height:n,depth:r},this.magFilter=Xt,this.minFilter=Xt,this.wrapR=yr,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}}rx.prototype.isData3DTexture=!0;class $I extends Yt{constructor(e,t,n){super(e,t),this.depth=n,this.texture=new rx(null,e,t,n),this.texture.isRenderTargetTexture=!0}}$I.prototype.isWebGL3DRenderTarget=!0;class eO extends Yt{constructor(e,t,n,r={}){super(e,t,r);const s=this.texture;this.texture=[];for(let o=0;o=0?1:-1,C=1-T*T;if(C>Number.EPSILON){const D=Math.sqrt(C),I=Math.atan2(D,T*E);b=Math.sin(b*I)/D,l=Math.sin(l*I)/D}const A=l*E;if(h=h*b+y*A,d=d*b+_*A,f=f*b+w*A,g=g*b+S*A,b===1-l){const D=1/Math.sqrt(h*h+d*d+f*f+g*g);h*=D,d*=D,f*=D,g*=D}}e[t]=h,e[t+1]=d,e[t+2]=f,e[t+3]=g}static multiplyQuaternionsFlat(e,t,n,r,s,o){const l=n[r],h=n[r+1],d=n[r+2],f=n[r+3],g=s[o],y=s[o+1],_=s[o+2],w=s[o+3];return e[t]=l*w+f*g+h*_-d*y,e[t+1]=h*w+f*y+d*g-l*_,e[t+2]=d*w+f*_+l*y-h*g,e[t+3]=f*w-l*g-h*y-d*_,e}get x(){return this._x}set x(e){this._x=e,this._onChangeCallback()}get y(){return this._y}set y(e){this._y=e,this._onChangeCallback()}get z(){return this._z}set z(e){this._z=e,this._onChangeCallback()}get w(){return this._w}set w(e){this._w=e,this._onChangeCallback()}set(e,t,n,r){return this._x=e,this._y=t,this._z=n,this._w=r,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._w)}copy(e){return this._x=e.x,this._y=e.y,this._z=e.z,this._w=e.w,this._onChangeCallback(),this}setFromEuler(e,t){if(!(e&&e.isEuler))throw new Error("THREE.Quaternion: .setFromEuler() now expects an Euler rotation rather than a Vector3 and order.");const n=e._x,r=e._y,s=e._z,o=e._order,l=Math.cos,h=Math.sin,d=l(n/2),f=l(r/2),g=l(s/2),y=h(n/2),_=h(r/2),w=h(s/2);switch(o){case"XYZ":this._x=y*f*g+d*_*w,this._y=d*_*g-y*f*w,this._z=d*f*w+y*_*g,this._w=d*f*g-y*_*w;break;case"YXZ":this._x=y*f*g+d*_*w,this._y=d*_*g-y*f*w,this._z=d*f*w-y*_*g,this._w=d*f*g+y*_*w;break;case"ZXY":this._x=y*f*g-d*_*w,this._y=d*_*g+y*f*w,this._z=d*f*w+y*_*g,this._w=d*f*g-y*_*w;break;case"ZYX":this._x=y*f*g-d*_*w,this._y=d*_*g+y*f*w,this._z=d*f*w-y*_*g,this._w=d*f*g+y*_*w;break;case"YZX":this._x=y*f*g+d*_*w,this._y=d*_*g+y*f*w,this._z=d*f*w-y*_*g,this._w=d*f*g-y*_*w;break;case"XZY":this._x=y*f*g-d*_*w,this._y=d*_*g-y*f*w,this._z=d*f*w+y*_*g,this._w=d*f*g+y*_*w;break;default:console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: "+o)}return t!==!1&&this._onChangeCallback(),this}setFromAxisAngle(e,t){const n=t/2,r=Math.sin(n);return this._x=e.x*r,this._y=e.y*r,this._z=e.z*r,this._w=Math.cos(n),this._onChangeCallback(),this}setFromRotationMatrix(e){const t=e.elements,n=t[0],r=t[4],s=t[8],o=t[1],l=t[5],h=t[9],d=t[2],f=t[6],g=t[10],y=n+l+g;if(y>0){const _=.5/Math.sqrt(y+1);this._w=.25/_,this._x=(f-h)*_,this._y=(s-d)*_,this._z=(o-r)*_}else if(n>l&&n>g){const _=2*Math.sqrt(1+n-l-g);this._w=(f-h)/_,this._x=.25*_,this._y=(r+o)/_,this._z=(s+d)/_}else if(l>g){const _=2*Math.sqrt(1+l-n-g);this._w=(s-d)/_,this._x=(r+o)/_,this._y=.25*_,this._z=(h+f)/_}else{const _=2*Math.sqrt(1+g-n-l);this._w=(o-r)/_,this._x=(s+d)/_,this._y=(h+f)/_,this._z=.25*_}return this._onChangeCallback(),this}setFromUnitVectors(e,t){let n=e.dot(t)+1;return nMath.abs(e.z)?(this._x=-e.y,this._y=e.x,this._z=0,this._w=n):(this._x=0,this._y=-e.z,this._z=e.y,this._w=n)):(this._x=e.y*t.z-e.z*t.y,this._y=e.z*t.x-e.x*t.z,this._z=e.x*t.y-e.y*t.x,this._w=n),this.normalize()}angleTo(e){return 2*Math.acos(Math.abs(Jn(this.dot(e),-1,1)))}rotateTowards(e,t){const n=this.angleTo(e);if(n===0)return this;const r=Math.min(1,t/n);return this.slerp(e,r),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(e){return this._x*e._x+this._y*e._y+this._z*e._z+this._w*e._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 e=this.length();return e===0?(this._x=0,this._y=0,this._z=0,this._w=1):(e=1/e,this._x=this._x*e,this._y=this._y*e,this._z=this._z*e,this._w=this._w*e),this._onChangeCallback(),this}multiply(e,t){return t!==void 0?(console.warn("THREE.Quaternion: .multiply() now only accepts one argument. Use .multiplyQuaternions( a, b ) instead."),this.multiplyQuaternions(e,t)):this.multiplyQuaternions(this,e)}premultiply(e){return this.multiplyQuaternions(e,this)}multiplyQuaternions(e,t){const n=e._x,r=e._y,s=e._z,o=e._w,l=t._x,h=t._y,d=t._z,f=t._w;return this._x=n*f+o*l+r*d-s*h,this._y=r*f+o*h+s*l-n*d,this._z=s*f+o*d+n*h-r*l,this._w=o*f-n*l-r*h-s*d,this._onChangeCallback(),this}slerp(e,t){if(t===0)return this;if(t===1)return this.copy(e);const n=this._x,r=this._y,s=this._z,o=this._w;let l=o*e._w+n*e._x+r*e._y+s*e._z;if(l<0?(this._w=-e._w,this._x=-e._x,this._y=-e._y,this._z=-e._z,l=-l):this.copy(e),l>=1)return this._w=o,this._x=n,this._y=r,this._z=s,this;const h=1-l*l;if(h<=Number.EPSILON){const _=1-t;return this._w=_*o+t*this._w,this._x=_*n+t*this._x,this._y=_*r+t*this._y,this._z=_*s+t*this._z,this.normalize(),this._onChangeCallback(),this}const d=Math.sqrt(h),f=Math.atan2(d,l),g=Math.sin((1-t)*f)/d,y=Math.sin(t*f)/d;return this._w=o*g+this._w*y,this._x=n*g+this._x*y,this._y=r*g+this._y*y,this._z=s*g+this._z*y,this._onChangeCallback(),this}slerpQuaternions(e,t,n){return this.copy(e).slerp(t,n)}random(){const e=Math.random(),t=Math.sqrt(1-e),n=Math.sqrt(e),r=2*Math.PI*Math.random(),s=2*Math.PI*Math.random();return this.set(t*Math.cos(r),n*Math.sin(s),n*Math.cos(s),t*Math.sin(r))}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._w===this._w}fromArray(e,t=0){return this._x=e[t],this._y=e[t+1],this._z=e[t+2],this._w=e[t+3],this._onChangeCallback(),this}toArray(e=[],t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._w,e}fromBufferAttribute(e,t){return this._x=e.getX(t),this._y=e.getY(t),this._z=e.getZ(t),this._w=e.getW(t),this}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._w}}ai.prototype.isQuaternion=!0;class z{constructor(e=0,t=0,n=0){this.x=e,this.y=t,this.z=n}set(e,t,n){return n===void 0&&(n=this.z),this.x=e,this.y=t,this.z=n,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y,this.z)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this}add(e,t){return t!==void 0?(console.warn("THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(e,t)):(this.x+=e.x,this.y+=e.y,this.z+=e.z,this)}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this}sub(e,t){return t!==void 0?(console.warn("THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(e,t)):(this.x-=e.x,this.y-=e.y,this.z-=e.z,this)}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this}multiply(e,t){return t!==void 0?(console.warn("THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead."),this.multiplyVectors(e,t)):(this.x*=e.x,this.y*=e.y,this.z*=e.z,this)}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this}multiplyVectors(e,t){return this.x=e.x*t.x,this.y=e.y*t.y,this.z=e.z*t.z,this}applyEuler(e){return e&&e.isEuler||console.error("THREE.Vector3: .applyEuler() now expects an Euler rotation rather than a Vector3 and order."),this.applyQuaternion(I1.setFromEuler(e))}applyAxisAngle(e,t){return this.applyQuaternion(I1.setFromAxisAngle(e,t))}applyMatrix3(e){const t=this.x,n=this.y,r=this.z,s=e.elements;return this.x=s[0]*t+s[3]*n+s[6]*r,this.y=s[1]*t+s[4]*n+s[7]*r,this.z=s[2]*t+s[5]*n+s[8]*r,this}applyNormalMatrix(e){return this.applyMatrix3(e).normalize()}applyMatrix4(e){const t=this.x,n=this.y,r=this.z,s=e.elements,o=1/(s[3]*t+s[7]*n+s[11]*r+s[15]);return this.x=(s[0]*t+s[4]*n+s[8]*r+s[12])*o,this.y=(s[1]*t+s[5]*n+s[9]*r+s[13])*o,this.z=(s[2]*t+s[6]*n+s[10]*r+s[14])*o,this}applyQuaternion(e){const t=this.x,n=this.y,r=this.z,s=e.x,o=e.y,l=e.z,h=e.w,d=h*t+o*r-l*n,f=h*n+l*t-s*r,g=h*r+s*n-o*t,y=-s*t-o*n-l*r;return this.x=d*h+y*-s+f*-l-g*-o,this.y=f*h+y*-o+g*-s-d*-l,this.z=g*h+y*-l+d*-o-f*-s,this}project(e){return this.applyMatrix4(e.matrixWorldInverse).applyMatrix4(e.projectionMatrix)}unproject(e){return this.applyMatrix4(e.projectionMatrixInverse).applyMatrix4(e.matrixWorld)}transformDirection(e){const t=this.x,n=this.y,r=this.z,s=e.elements;return this.x=s[0]*t+s[4]*n+s[8]*r,this.y=s[1]*t+s[5]*n+s[9]*r,this.z=s[2]*t+s[6]*n+s[10]*r,this.normalize()}divide(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this}divideScalar(e){return this.multiplyScalar(1/e)}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this}clamp(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this.z=Math.max(e.z,Math.min(t.z,this.z)),this}clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this.z=Math.max(e,Math.min(t,this.z)),this}clampLength(e,t){const n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(e,Math.min(t,n)))}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(e){return this.x*e.x+this.y*e.y+this.z*e.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(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this}lerpVectors(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,this.z=e.z+(t.z-e.z)*n,this}cross(e,t){return t!==void 0?(console.warn("THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead."),this.crossVectors(e,t)):this.crossVectors(this,e)}crossVectors(e,t){const n=e.x,r=e.y,s=e.z,o=t.x,l=t.y,h=t.z;return this.x=r*h-s*l,this.y=s*o-n*h,this.z=n*l-r*o,this}projectOnVector(e){const t=e.lengthSq();if(t===0)return this.set(0,0,0);const n=e.dot(this)/t;return this.copy(e).multiplyScalar(n)}projectOnPlane(e){return q0.copy(this).projectOnVector(e),this.sub(q0)}reflect(e){return this.sub(q0.copy(e).multiplyScalar(2*this.dot(e)))}angleTo(e){const t=Math.sqrt(this.lengthSq()*e.lengthSq());if(t===0)return Math.PI/2;const n=this.dot(e)/t;return Math.acos(Jn(n,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){const t=this.x-e.x,n=this.y-e.y,r=this.z-e.z;return t*t+n*n+r*r}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)+Math.abs(this.z-e.z)}setFromSpherical(e){return this.setFromSphericalCoords(e.radius,e.phi,e.theta)}setFromSphericalCoords(e,t,n){const r=Math.sin(t)*e;return this.x=r*Math.sin(n),this.y=Math.cos(t)*e,this.z=r*Math.cos(n),this}setFromCylindrical(e){return this.setFromCylindricalCoords(e.radius,e.theta,e.y)}setFromCylindricalCoords(e,t,n){return this.x=e*Math.sin(t),this.y=n,this.z=e*Math.cos(t),this}setFromMatrixPosition(e){const t=e.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this}setFromMatrixScale(e){const t=this.setFromMatrixColumn(e,0).length(),n=this.setFromMatrixColumn(e,1).length(),r=this.setFromMatrixColumn(e,2).length();return this.x=t,this.y=n,this.z=r,this}setFromMatrixColumn(e,t){return this.fromArray(e.elements,t*4)}setFromMatrix3Column(e,t){return this.fromArray(e.elements,t*3)}setFromEuler(e){return this.x=e._x,this.y=e._y,this.z=e._z,this}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e}fromBufferAttribute(e,t,n){return n!==void 0&&console.warn("THREE.Vector3: offset has been removed from .fromBufferAttribute()."),this.x=e.getX(t),this.y=e.getY(t),this.z=e.getZ(t),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){const e=(Math.random()-.5)*2,t=Math.random()*Math.PI*2,n=Math.sqrt(1-e**2);return this.x=n*Math.cos(t),this.y=n*Math.sin(t),this.z=e,this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}}z.prototype.isVector3=!0;const q0=new z,I1=new ai;class sr{constructor(e=new z(1/0,1/0,1/0),t=new z(-1/0,-1/0,-1/0)){this.min=e,this.max=t}set(e,t){return this.min.copy(e),this.max.copy(t),this}setFromArray(e){let t=1/0,n=1/0,r=1/0,s=-1/0,o=-1/0,l=-1/0;for(let h=0,d=e.length;hs&&(s=f),g>o&&(o=g),y>l&&(l=y)}return this.min.set(t,n,r),this.max.set(s,o,l),this}setFromBufferAttribute(e){let t=1/0,n=1/0,r=1/0,s=-1/0,o=-1/0,l=-1/0;for(let h=0,d=e.count;hs&&(s=f),g>o&&(o=g),y>l&&(l=y)}return this.min.set(t,n,r),this.max.set(s,o,l),this}setFromPoints(e){this.makeEmpty();for(let t=0,n=e.length;tthis.max.x||e.ythis.max.y||e.zthis.max.z)}containsBox(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y&&this.min.z<=e.min.z&&e.max.z<=this.max.z}getParameter(e,t){return t.set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y),(e.z-this.min.z)/(this.max.z-this.min.z))}intersectsBox(e){return!(e.max.xthis.max.x||e.max.ythis.max.y||e.max.zthis.max.z)}intersectsSphere(e){return this.clampPoint(e.center,Ya),Ya.distanceToSquared(e.center)<=e.radius*e.radius}intersectsPlane(e){let t,n;return e.normal.x>0?(t=e.normal.x*this.min.x,n=e.normal.x*this.max.x):(t=e.normal.x*this.max.x,n=e.normal.x*this.min.x),e.normal.y>0?(t+=e.normal.y*this.min.y,n+=e.normal.y*this.max.y):(t+=e.normal.y*this.max.y,n+=e.normal.y*this.min.y),e.normal.z>0?(t+=e.normal.z*this.min.z,n+=e.normal.z*this.max.z):(t+=e.normal.z*this.max.z,n+=e.normal.z*this.min.z),t<=-e.constant&&n>=-e.constant}intersectsTriangle(e){if(this.isEmpty())return!1;this.getCenter($u),Vp.subVectors(this.max,$u),cc.subVectors(e.a,$u),uc.subVectors(e.b,$u),hc.subVectors(e.c,$u),ea.subVectors(uc,cc),ta.subVectors(hc,uc),Za.subVectors(cc,hc);let t=[0,-ea.z,ea.y,0,-ta.z,ta.y,0,-Za.z,Za.y,ea.z,0,-ea.x,ta.z,0,-ta.x,Za.z,0,-Za.x,-ea.y,ea.x,0,-ta.y,ta.x,0,-Za.y,Za.x,0];return!Z0(t,cc,uc,hc,Vp)||(t=[1,0,0,0,1,0,0,0,1],!Z0(t,cc,uc,hc,Vp))?!1:(Hp.crossVectors(ea,ta),t=[Hp.x,Hp.y,Hp.z],Z0(t,cc,uc,hc,Vp))}clampPoint(e,t){return t.copy(e).clamp(this.min,this.max)}distanceToPoint(e){return Ya.copy(e).clamp(this.min,this.max).sub(e).length()}getBoundingSphere(e){return this.getCenter(e.center),e.radius=this.getSize(Ya).length()*.5,e}intersect(e){return this.min.max(e.min),this.max.min(e.max),this.isEmpty()&&this.makeEmpty(),this}union(e){return this.min.min(e.min),this.max.max(e.max),this}applyMatrix4(e){return this.isEmpty()?this:(so[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(e),so[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(e),so[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(e),so[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(e),so[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(e),so[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(e),so[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(e),so[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(e),this.setFromPoints(so),this)}translate(e){return this.min.add(e),this.max.add(e),this}equals(e){return e.min.equals(this.min)&&e.max.equals(this.max)}}sr.prototype.isBox3=!0;const so=[new z,new z,new z,new z,new z,new z,new z,new z],Ya=new z,Y0=new sr,cc=new z,uc=new z,hc=new z,ea=new z,ta=new z,Za=new z,$u=new z,Vp=new z,Hp=new z,Ka=new z;function Z0(i,e,t,n,r){for(let s=0,o=i.length-3;s<=o;s+=3){Ka.fromArray(i,s);const l=r.x*Math.abs(Ka.x)+r.y*Math.abs(Ka.y)+r.z*Math.abs(Ka.z),h=e.dot(Ka),d=t.dot(Ka),f=n.dot(Ka);if(Math.max(-Math.max(h,d,f),Math.min(h,d,f))>l)return!1}return!0}const tO=new sr,O1=new z,Gp=new z,K0=new z;class su{constructor(e=new z,t=-1){this.center=e,this.radius=t}set(e,t){return this.center.copy(e),this.radius=t,this}setFromPoints(e,t){const n=this.center;t!==void 0?n.copy(t):tO.setFromPoints(e).getCenter(n);let r=0;for(let s=0,o=e.length;sthis.radius*this.radius&&(t.sub(this.center).normalize(),t.multiplyScalar(this.radius).add(this.center)),t}getBoundingBox(e){return this.isEmpty()?(e.makeEmpty(),e):(e.set(this.center,this.center),e.expandByScalar(this.radius),e)}applyMatrix4(e){return this.center.applyMatrix4(e),this.radius=this.radius*e.getMaxScaleOnAxis(),this}translate(e){return this.center.add(e),this}expandByPoint(e){K0.subVectors(e,this.center);const t=K0.lengthSq();if(t>this.radius*this.radius){const n=Math.sqrt(t),r=(n-this.radius)*.5;this.center.add(K0.multiplyScalar(r/n)),this.radius+=r}return this}union(e){return this.center.equals(e.center)===!0?Gp.set(0,0,1).multiplyScalar(e.radius):Gp.subVectors(e.center,this.center).normalize().multiplyScalar(e.radius),this.expandByPoint(O1.copy(e.center).add(Gp)),this.expandByPoint(O1.copy(e.center).sub(Gp)),this}equals(e){return e.center.equals(this.center)&&e.radius===this.radius}clone(){return new this.constructor().copy(this)}}const oo=new z,J0=new z,Wp=new z,na=new z,Q0=new z,jp=new z,$0=new z;class Mo{constructor(e=new z,t=new z(0,0,-1)){this.origin=e,this.direction=t}set(e,t){return this.origin.copy(e),this.direction.copy(t),this}copy(e){return this.origin.copy(e.origin),this.direction.copy(e.direction),this}at(e,t){return t.copy(this.direction).multiplyScalar(e).add(this.origin)}lookAt(e){return this.direction.copy(e).sub(this.origin).normalize(),this}recast(e){return this.origin.copy(this.at(e,oo)),this}closestPointToPoint(e,t){t.subVectors(e,this.origin);const n=t.dot(this.direction);return n<0?t.copy(this.origin):t.copy(this.direction).multiplyScalar(n).add(this.origin)}distanceToPoint(e){return Math.sqrt(this.distanceSqToPoint(e))}distanceSqToPoint(e){const t=oo.subVectors(e,this.origin).dot(this.direction);return t<0?this.origin.distanceToSquared(e):(oo.copy(this.direction).multiplyScalar(t).add(this.origin),oo.distanceToSquared(e))}distanceSqToSegment(e,t,n,r){J0.copy(e).add(t).multiplyScalar(.5),Wp.copy(t).sub(e).normalize(),na.copy(this.origin).sub(J0);const s=e.distanceTo(t)*.5,o=-this.direction.dot(Wp),l=na.dot(this.direction),h=-na.dot(Wp),d=na.lengthSq(),f=Math.abs(1-o*o);let g,y,_,w;if(f>0)if(g=o*h-l,y=o*l-h,w=s*f,g>=0)if(y>=-w)if(y<=w){const S=1/f;g*=S,y*=S,_=g*(g+o*y+2*l)+y*(o*g+y+2*h)+d}else y=s,g=Math.max(0,-(o*y+l)),_=-g*g+y*(y+2*h)+d;else y=-s,g=Math.max(0,-(o*y+l)),_=-g*g+y*(y+2*h)+d;else y<=-w?(g=Math.max(0,-(-o*s+l)),y=g>0?-s:Math.min(Math.max(-s,-h),s),_=-g*g+y*(y+2*h)+d):y<=w?(g=0,y=Math.min(Math.max(-s,-h),s),_=y*(y+2*h)+d):(g=Math.max(0,-(o*s+l)),y=g>0?s:Math.min(Math.max(-s,-h),s),_=-g*g+y*(y+2*h)+d);else y=o>0?-s:s,g=Math.max(0,-(o*y+l)),_=-g*g+y*(y+2*h)+d;return n&&n.copy(this.direction).multiplyScalar(g).add(this.origin),r&&r.copy(Wp).multiplyScalar(y).add(J0),_}intersectSphere(e,t){oo.subVectors(e.center,this.origin);const n=oo.dot(this.direction),r=oo.dot(oo)-n*n,s=e.radius*e.radius;if(r>s)return null;const o=Math.sqrt(s-r),l=n-o,h=n+o;return l<0&&h<0?null:l<0?this.at(h,t):this.at(l,t)}intersectsSphere(e){return this.distanceSqToPoint(e.center)<=e.radius*e.radius}distanceToPlane(e){const t=e.normal.dot(this.direction);if(t===0)return e.distanceToPoint(this.origin)===0?0:null;const n=-(this.origin.dot(e.normal)+e.constant)/t;return n>=0?n:null}intersectPlane(e,t){const n=this.distanceToPlane(e);return n===null?null:this.at(n,t)}intersectsPlane(e){const t=e.distanceToPoint(this.origin);return t===0||e.normal.dot(this.direction)*t<0}intersectBox(e,t){let n,r,s,o,l,h;const d=1/this.direction.x,f=1/this.direction.y,g=1/this.direction.z,y=this.origin;return d>=0?(n=(e.min.x-y.x)*d,r=(e.max.x-y.x)*d):(n=(e.max.x-y.x)*d,r=(e.min.x-y.x)*d),f>=0?(s=(e.min.y-y.y)*f,o=(e.max.y-y.y)*f):(s=(e.max.y-y.y)*f,o=(e.min.y-y.y)*f),n>o||s>r||((s>n||n!==n)&&(n=s),(o=0?(l=(e.min.z-y.z)*g,h=(e.max.z-y.z)*g):(l=(e.max.z-y.z)*g,h=(e.min.z-y.z)*g),n>h||l>r)||((l>n||n!==n)&&(n=l),(h=0?n:r,t)}intersectsBox(e){return this.intersectBox(e,oo)!==null}intersectTriangle(e,t,n,r,s){Q0.subVectors(t,e),jp.subVectors(n,e),$0.crossVectors(Q0,jp);let o=this.direction.dot($0),l;if(o>0){if(r)return null;l=1}else if(o<0)l=-1,o=-o;else return null;na.subVectors(this.origin,e);const h=l*this.direction.dot(jp.crossVectors(na,jp));if(h<0)return null;const d=l*this.direction.dot(Q0.cross(na));if(d<0||h+d>o)return null;const f=-l*na.dot($0);return f<0?null:this.at(f/o,s)}applyMatrix4(e){return this.origin.applyMatrix4(e),this.direction.transformDirection(e),this}equals(e){return e.origin.equals(this.origin)&&e.direction.equals(this.direction)}clone(){return new this.constructor().copy(this)}}class Qe{constructor(){this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],arguments.length>0&&console.error("THREE.Matrix4: the constructor no longer reads arguments. use .set() instead.")}set(e,t,n,r,s,o,l,h,d,f,g,y,_,w,S,b){const T=this.elements;return T[0]=e,T[4]=t,T[8]=n,T[12]=r,T[1]=s,T[5]=o,T[9]=l,T[13]=h,T[2]=d,T[6]=f,T[10]=g,T[14]=y,T[3]=_,T[7]=w,T[11]=S,T[15]=b,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 Qe().fromArray(this.elements)}copy(e){const t=this.elements,n=e.elements;return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[4]=n[4],t[5]=n[5],t[6]=n[6],t[7]=n[7],t[8]=n[8],t[9]=n[9],t[10]=n[10],t[11]=n[11],t[12]=n[12],t[13]=n[13],t[14]=n[14],t[15]=n[15],this}copyPosition(e){const t=this.elements,n=e.elements;return t[12]=n[12],t[13]=n[13],t[14]=n[14],this}setFromMatrix3(e){const t=e.elements;return this.set(t[0],t[3],t[6],0,t[1],t[4],t[7],0,t[2],t[5],t[8],0,0,0,0,1),this}extractBasis(e,t,n){return e.setFromMatrixColumn(this,0),t.setFromMatrixColumn(this,1),n.setFromMatrixColumn(this,2),this}makeBasis(e,t,n){return this.set(e.x,t.x,n.x,0,e.y,t.y,n.y,0,e.z,t.z,n.z,0,0,0,0,1),this}extractRotation(e){const t=this.elements,n=e.elements,r=1/dc.setFromMatrixColumn(e,0).length(),s=1/dc.setFromMatrixColumn(e,1).length(),o=1/dc.setFromMatrixColumn(e,2).length();return t[0]=n[0]*r,t[1]=n[1]*r,t[2]=n[2]*r,t[3]=0,t[4]=n[4]*s,t[5]=n[5]*s,t[6]=n[6]*s,t[7]=0,t[8]=n[8]*o,t[9]=n[9]*o,t[10]=n[10]*o,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromEuler(e){e&&e.isEuler||console.error("THREE.Matrix4: .makeRotationFromEuler() now expects a Euler rotation rather than a Vector3 and order.");const t=this.elements,n=e.x,r=e.y,s=e.z,o=Math.cos(n),l=Math.sin(n),h=Math.cos(r),d=Math.sin(r),f=Math.cos(s),g=Math.sin(s);if(e.order==="XYZ"){const y=o*f,_=o*g,w=l*f,S=l*g;t[0]=h*f,t[4]=-h*g,t[8]=d,t[1]=_+w*d,t[5]=y-S*d,t[9]=-l*h,t[2]=S-y*d,t[6]=w+_*d,t[10]=o*h}else if(e.order==="YXZ"){const y=h*f,_=h*g,w=d*f,S=d*g;t[0]=y+S*l,t[4]=w*l-_,t[8]=o*d,t[1]=o*g,t[5]=o*f,t[9]=-l,t[2]=_*l-w,t[6]=S+y*l,t[10]=o*h}else if(e.order==="ZXY"){const y=h*f,_=h*g,w=d*f,S=d*g;t[0]=y-S*l,t[4]=-o*g,t[8]=w+_*l,t[1]=_+w*l,t[5]=o*f,t[9]=S-y*l,t[2]=-o*d,t[6]=l,t[10]=o*h}else if(e.order==="ZYX"){const y=o*f,_=o*g,w=l*f,S=l*g;t[0]=h*f,t[4]=w*d-_,t[8]=y*d+S,t[1]=h*g,t[5]=S*d+y,t[9]=_*d-w,t[2]=-d,t[6]=l*h,t[10]=o*h}else if(e.order==="YZX"){const y=o*h,_=o*d,w=l*h,S=l*d;t[0]=h*f,t[4]=S-y*g,t[8]=w*g+_,t[1]=g,t[5]=o*f,t[9]=-l*f,t[2]=-d*f,t[6]=_*g+w,t[10]=y-S*g}else if(e.order==="XZY"){const y=o*h,_=o*d,w=l*h,S=l*d;t[0]=h*f,t[4]=-g,t[8]=d*f,t[1]=y*g+S,t[5]=o*f,t[9]=_*g-w,t[2]=w*g-_,t[6]=l*f,t[10]=S*g+y}return t[3]=0,t[7]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromQuaternion(e){return this.compose(nO,e,iO)}lookAt(e,t,n){const r=this.elements;return mr.subVectors(e,t),mr.lengthSq()===0&&(mr.z=1),mr.normalize(),ia.crossVectors(n,mr),ia.lengthSq()===0&&(Math.abs(n.z)===1?mr.x+=1e-4:mr.z+=1e-4,mr.normalize(),ia.crossVectors(n,mr)),ia.normalize(),Xp.crossVectors(mr,ia),r[0]=ia.x,r[4]=Xp.x,r[8]=mr.x,r[1]=ia.y,r[5]=Xp.y,r[9]=mr.y,r[2]=ia.z,r[6]=Xp.z,r[10]=mr.z,this}multiply(e,t){return t!==void 0?(console.warn("THREE.Matrix4: .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead."),this.multiplyMatrices(e,t)):this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){const n=e.elements,r=t.elements,s=this.elements,o=n[0],l=n[4],h=n[8],d=n[12],f=n[1],g=n[5],y=n[9],_=n[13],w=n[2],S=n[6],b=n[10],T=n[14],E=n[3],C=n[7],A=n[11],D=n[15],I=r[0],F=r[4],P=r[8],k=r[12],j=r[1],G=r[5],ne=r[9],ce=r[13],Z=r[2],$=r[6],K=r[10],pe=r[14],re=r[3],se=r[7],ue=r[11],Te=r[15];return s[0]=o*I+l*j+h*Z+d*re,s[4]=o*F+l*G+h*$+d*se,s[8]=o*P+l*ne+h*K+d*ue,s[12]=o*k+l*ce+h*pe+d*Te,s[1]=f*I+g*j+y*Z+_*re,s[5]=f*F+g*G+y*$+_*se,s[9]=f*P+g*ne+y*K+_*ue,s[13]=f*k+g*ce+y*pe+_*Te,s[2]=w*I+S*j+b*Z+T*re,s[6]=w*F+S*G+b*$+T*se,s[10]=w*P+S*ne+b*K+T*ue,s[14]=w*k+S*ce+b*pe+T*Te,s[3]=E*I+C*j+A*Z+D*re,s[7]=E*F+C*G+A*$+D*se,s[11]=E*P+C*ne+A*K+D*ue,s[15]=E*k+C*ce+A*pe+D*Te,this}multiplyScalar(e){const t=this.elements;return t[0]*=e,t[4]*=e,t[8]*=e,t[12]*=e,t[1]*=e,t[5]*=e,t[9]*=e,t[13]*=e,t[2]*=e,t[6]*=e,t[10]*=e,t[14]*=e,t[3]*=e,t[7]*=e,t[11]*=e,t[15]*=e,this}determinant(){const e=this.elements,t=e[0],n=e[4],r=e[8],s=e[12],o=e[1],l=e[5],h=e[9],d=e[13],f=e[2],g=e[6],y=e[10],_=e[14],w=e[3],S=e[7],b=e[11],T=e[15];return w*(+s*h*g-r*d*g-s*l*y+n*d*y+r*l*_-n*h*_)+S*(+t*h*_-t*d*y+s*o*y-r*o*_+r*d*f-s*h*f)+b*(+t*d*g-t*l*_-s*o*g+n*o*_+s*l*f-n*d*f)+T*(-r*l*f-t*h*g+t*l*y+r*o*g-n*o*y+n*h*f)}transpose(){const e=this.elements;let t;return t=e[1],e[1]=e[4],e[4]=t,t=e[2],e[2]=e[8],e[8]=t,t=e[6],e[6]=e[9],e[9]=t,t=e[3],e[3]=e[12],e[12]=t,t=e[7],e[7]=e[13],e[13]=t,t=e[11],e[11]=e[14],e[14]=t,this}setPosition(e,t,n){const r=this.elements;return e.isVector3?(r[12]=e.x,r[13]=e.y,r[14]=e.z):(r[12]=e,r[13]=t,r[14]=n),this}invert(){const e=this.elements,t=e[0],n=e[1],r=e[2],s=e[3],o=e[4],l=e[5],h=e[6],d=e[7],f=e[8],g=e[9],y=e[10],_=e[11],w=e[12],S=e[13],b=e[14],T=e[15],E=g*b*d-S*y*d+S*h*_-l*b*_-g*h*T+l*y*T,C=w*y*d-f*b*d-w*h*_+o*b*_+f*h*T-o*y*T,A=f*S*d-w*g*d+w*l*_-o*S*_-f*l*T+o*g*T,D=w*g*h-f*S*h-w*l*y+o*S*y+f*l*b-o*g*b,I=t*E+n*C+r*A+s*D;if(I===0)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);const F=1/I;return e[0]=E*F,e[1]=(S*y*s-g*b*s-S*r*_+n*b*_+g*r*T-n*y*T)*F,e[2]=(l*b*s-S*h*s+S*r*d-n*b*d-l*r*T+n*h*T)*F,e[3]=(g*h*s-l*y*s-g*r*d+n*y*d+l*r*_-n*h*_)*F,e[4]=C*F,e[5]=(f*b*s-w*y*s+w*r*_-t*b*_-f*r*T+t*y*T)*F,e[6]=(w*h*s-o*b*s-w*r*d+t*b*d+o*r*T-t*h*T)*F,e[7]=(o*y*s-f*h*s+f*r*d-t*y*d-o*r*_+t*h*_)*F,e[8]=A*F,e[9]=(w*g*s-f*S*s-w*n*_+t*S*_+f*n*T-t*g*T)*F,e[10]=(o*S*s-w*l*s+w*n*d-t*S*d-o*n*T+t*l*T)*F,e[11]=(f*l*s-o*g*s-f*n*d+t*g*d+o*n*_-t*l*_)*F,e[12]=D*F,e[13]=(f*S*r-w*g*r+w*n*y-t*S*y-f*n*b+t*g*b)*F,e[14]=(w*l*r-o*S*r-w*n*h+t*S*h+o*n*b-t*l*b)*F,e[15]=(o*g*r-f*l*r+f*n*h-t*g*h-o*n*y+t*l*y)*F,this}scale(e){const t=this.elements,n=e.x,r=e.y,s=e.z;return t[0]*=n,t[4]*=r,t[8]*=s,t[1]*=n,t[5]*=r,t[9]*=s,t[2]*=n,t[6]*=r,t[10]*=s,t[3]*=n,t[7]*=r,t[11]*=s,this}getMaxScaleOnAxis(){const e=this.elements,t=e[0]*e[0]+e[1]*e[1]+e[2]*e[2],n=e[4]*e[4]+e[5]*e[5]+e[6]*e[6],r=e[8]*e[8]+e[9]*e[9]+e[10]*e[10];return Math.sqrt(Math.max(t,n,r))}makeTranslation(e,t,n){return this.set(1,0,0,e,0,1,0,t,0,0,1,n,0,0,0,1),this}makeRotationX(e){const t=Math.cos(e),n=Math.sin(e);return this.set(1,0,0,0,0,t,-n,0,0,n,t,0,0,0,0,1),this}makeRotationY(e){const t=Math.cos(e),n=Math.sin(e);return this.set(t,0,n,0,0,1,0,0,-n,0,t,0,0,0,0,1),this}makeRotationZ(e){const t=Math.cos(e),n=Math.sin(e);return this.set(t,-n,0,0,n,t,0,0,0,0,1,0,0,0,0,1),this}makeRotationAxis(e,t){const n=Math.cos(t),r=Math.sin(t),s=1-n,o=e.x,l=e.y,h=e.z,d=s*o,f=s*l;return this.set(d*o+n,d*l-r*h,d*h+r*l,0,d*l+r*h,f*l+n,f*h-r*o,0,d*h-r*l,f*h+r*o,s*h*h+n,0,0,0,0,1),this}makeScale(e,t,n){return this.set(e,0,0,0,0,t,0,0,0,0,n,0,0,0,0,1),this}makeShear(e,t,n,r,s,o){return this.set(1,n,s,0,e,1,o,0,t,r,1,0,0,0,0,1),this}compose(e,t,n){const r=this.elements,s=t._x,o=t._y,l=t._z,h=t._w,d=s+s,f=o+o,g=l+l,y=s*d,_=s*f,w=s*g,S=o*f,b=o*g,T=l*g,E=h*d,C=h*f,A=h*g,D=n.x,I=n.y,F=n.z;return r[0]=(1-(S+T))*D,r[1]=(_+A)*D,r[2]=(w-C)*D,r[3]=0,r[4]=(_-A)*I,r[5]=(1-(y+T))*I,r[6]=(b+E)*I,r[7]=0,r[8]=(w+C)*F,r[9]=(b-E)*F,r[10]=(1-(y+S))*F,r[11]=0,r[12]=e.x,r[13]=e.y,r[14]=e.z,r[15]=1,this}decompose(e,t,n){const r=this.elements;let s=dc.set(r[0],r[1],r[2]).length();const o=dc.set(r[4],r[5],r[6]).length(),l=dc.set(r[8],r[9],r[10]).length();this.determinant()<0&&(s=-s),e.x=r[12],e.y=r[13],e.z=r[14],Kr.copy(this);const d=1/s,f=1/o,g=1/l;return Kr.elements[0]*=d,Kr.elements[1]*=d,Kr.elements[2]*=d,Kr.elements[4]*=f,Kr.elements[5]*=f,Kr.elements[6]*=f,Kr.elements[8]*=g,Kr.elements[9]*=g,Kr.elements[10]*=g,t.setFromRotationMatrix(Kr),n.x=s,n.y=o,n.z=l,this}makePerspective(e,t,n,r,s,o){o===void 0&&console.warn("THREE.Matrix4: .makePerspective() has been redefined and has a new signature. Please check the docs.");const l=this.elements,h=2*s/(t-e),d=2*s/(n-r),f=(t+e)/(t-e),g=(n+r)/(n-r),y=-(o+s)/(o-s),_=-2*o*s/(o-s);return l[0]=h,l[4]=0,l[8]=f,l[12]=0,l[1]=0,l[5]=d,l[9]=g,l[13]=0,l[2]=0,l[6]=0,l[10]=y,l[14]=_,l[3]=0,l[7]=0,l[11]=-1,l[15]=0,this}makeOrthographic(e,t,n,r,s,o){const l=this.elements,h=1/(t-e),d=1/(n-r),f=1/(o-s),g=(t+e)*h,y=(n+r)*d,_=(o+s)*f;return l[0]=2*h,l[4]=0,l[8]=0,l[12]=-g,l[1]=0,l[5]=2*d,l[9]=0,l[13]=-y,l[2]=0,l[6]=0,l[10]=-2*f,l[14]=-_,l[3]=0,l[7]=0,l[11]=0,l[15]=1,this}equals(e){const t=this.elements,n=e.elements;for(let r=0;r<16;r++)if(t[r]!==n[r])return!1;return!0}fromArray(e,t=0){for(let n=0;n<16;n++)this.elements[n]=e[n+t];return this}toArray(e=[],t=0){const n=this.elements;return e[t]=n[0],e[t+1]=n[1],e[t+2]=n[2],e[t+3]=n[3],e[t+4]=n[4],e[t+5]=n[5],e[t+6]=n[6],e[t+7]=n[7],e[t+8]=n[8],e[t+9]=n[9],e[t+10]=n[10],e[t+11]=n[11],e[t+12]=n[12],e[t+13]=n[13],e[t+14]=n[14],e[t+15]=n[15],e}}Qe.prototype.isMatrix4=!0;const dc=new z,Kr=new Qe,nO=new z(0,0,0),iO=new z(1,1,1),ia=new z,Xp=new z,mr=new z,k1=new Qe,N1=new ai;class Ta{constructor(e=0,t=0,n=0,r=Ta.DefaultOrder){this._x=e,this._y=t,this._z=n,this._order=r}get x(){return this._x}set x(e){this._x=e,this._onChangeCallback()}get y(){return this._y}set y(e){this._y=e,this._onChangeCallback()}get z(){return this._z}set z(e){this._z=e,this._onChangeCallback()}get order(){return this._order}set order(e){this._order=e,this._onChangeCallback()}set(e,t,n,r=this._order){return this._x=e,this._y=t,this._z=n,this._order=r,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._order)}copy(e){return this._x=e._x,this._y=e._y,this._z=e._z,this._order=e._order,this._onChangeCallback(),this}setFromRotationMatrix(e,t=this._order,n=!0){const r=e.elements,s=r[0],o=r[4],l=r[8],h=r[1],d=r[5],f=r[9],g=r[2],y=r[6],_=r[10];switch(t){case"XYZ":this._y=Math.asin(Jn(l,-1,1)),Math.abs(l)<.9999999?(this._x=Math.atan2(-f,_),this._z=Math.atan2(-o,s)):(this._x=Math.atan2(y,d),this._z=0);break;case"YXZ":this._x=Math.asin(-Jn(f,-1,1)),Math.abs(f)<.9999999?(this._y=Math.atan2(l,_),this._z=Math.atan2(h,d)):(this._y=Math.atan2(-g,s),this._z=0);break;case"ZXY":this._x=Math.asin(Jn(y,-1,1)),Math.abs(y)<.9999999?(this._y=Math.atan2(-g,_),this._z=Math.atan2(-o,d)):(this._y=0,this._z=Math.atan2(h,s));break;case"ZYX":this._y=Math.asin(-Jn(g,-1,1)),Math.abs(g)<.9999999?(this._x=Math.atan2(y,_),this._z=Math.atan2(h,s)):(this._x=0,this._z=Math.atan2(-o,d));break;case"YZX":this._z=Math.asin(Jn(h,-1,1)),Math.abs(h)<.9999999?(this._x=Math.atan2(-f,d),this._y=Math.atan2(-g,s)):(this._x=0,this._y=Math.atan2(l,_));break;case"XZY":this._z=Math.asin(-Jn(o,-1,1)),Math.abs(o)<.9999999?(this._x=Math.atan2(y,d),this._y=Math.atan2(l,s)):(this._x=Math.atan2(-f,_),this._y=0);break;default:console.warn("THREE.Euler: .setFromRotationMatrix() encountered an unknown order: "+t)}return this._order=t,n===!0&&this._onChangeCallback(),this}setFromQuaternion(e,t,n){return k1.makeRotationFromQuaternion(e),this.setFromRotationMatrix(k1,t,n)}setFromVector3(e,t=this._order){return this.set(e.x,e.y,e.z,t)}reorder(e){return N1.setFromEuler(this),this.setFromQuaternion(N1,e)}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._order===this._order}fromArray(e){return this._x=e[0],this._y=e[1],this._z=e[2],e[3]!==void 0&&(this._order=e[3]),this._onChangeCallback(),this}toArray(e=[],t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._order,e}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._order}}Ta.prototype.isEuler=!0;Ta.DefaultOrder="XYZ";Ta.RotationOrders=["XYZ","YZX","ZXY","XZY","YXZ","ZYX"];class sx{constructor(){this.mask=1}set(e){this.mask=(1<>>0}enable(e){this.mask|=1<1){for(let t=0;t1){for(let n=0;n0){r.children=[];for(let l=0;l0){r.animations=[];for(let l=0;l0&&(n.geometries=l),h.length>0&&(n.materials=h),d.length>0&&(n.textures=d),f.length>0&&(n.images=f),g.length>0&&(n.shapes=g),y.length>0&&(n.skeletons=y),_.length>0&&(n.animations=_),w.length>0&&(n.nodes=w)}return n.object=r,n;function o(l){const h=[];for(const d in l){const f=l[d];delete f.metadata,h.push(f)}return h}}clone(e){return new this.constructor().copy(this,e)}copy(e,t=!0){if(this.name=e.name,this.up.copy(e.up),this.position.copy(e.position),this.rotation.order=e.rotation.order,this.quaternion.copy(e.quaternion),this.scale.copy(e.scale),this.matrix.copy(e.matrix),this.matrixWorld.copy(e.matrixWorld),this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrixWorldNeedsUpdate=e.matrixWorldNeedsUpdate,this.layers.mask=e.layers.mask,this.visible=e.visible,this.castShadow=e.castShadow,this.receiveShadow=e.receiveShadow,this.frustumCulled=e.frustumCulled,this.renderOrder=e.renderOrder,this.userData=JSON.parse(JSON.stringify(e.userData)),t===!0)for(let n=0;n0?r.multiplyScalar(1/Math.sqrt(s)):r.set(0,0,0)}static getBarycoord(e,t,n,r,s){Jr.subVectors(r,t),lo.subVectors(n,t),ey.subVectors(e,t);const o=Jr.dot(Jr),l=Jr.dot(lo),h=Jr.dot(ey),d=lo.dot(lo),f=lo.dot(ey),g=o*d-l*l;if(g===0)return s.set(-2,-1,-1);const y=1/g,_=(d*h-l*f)*y,w=(o*f-l*h)*y;return s.set(1-_-w,w,_)}static containsPoint(e,t,n,r){return this.getBarycoord(e,t,n,r,co),co.x>=0&&co.y>=0&&co.x+co.y<=1}static getUV(e,t,n,r,s,o,l,h){return this.getBarycoord(e,t,n,r,co),h.set(0,0),h.addScaledVector(s,co.x),h.addScaledVector(o,co.y),h.addScaledVector(l,co.z),h}static isFrontFacing(e,t,n,r){return Jr.subVectors(n,t),lo.subVectors(e,t),Jr.cross(lo).dot(r)<0}set(e,t,n){return this.a.copy(e),this.b.copy(t),this.c.copy(n),this}setFromPointsAndIndices(e,t,n,r){return this.a.copy(e[t]),this.b.copy(e[n]),this.c.copy(e[r]),this}setFromAttributeAndIndices(e,t,n,r){return this.a.fromBufferAttribute(e,t),this.b.fromBufferAttribute(e,n),this.c.fromBufferAttribute(e,r),this}clone(){return new this.constructor().copy(this)}copy(e){return this.a.copy(e.a),this.b.copy(e.b),this.c.copy(e.c),this}getArea(){return Jr.subVectors(this.c,this.b),lo.subVectors(this.a,this.b),Jr.cross(lo).length()*.5}getMidpoint(e){return e.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)}getNormal(e){return oi.getNormal(this.a,this.b,this.c,e)}getPlane(e){return e.setFromCoplanarPoints(this.a,this.b,this.c)}getBarycoord(e,t){return oi.getBarycoord(e,this.a,this.b,this.c,t)}getUV(e,t,n,r,s){return oi.getUV(e,this.a,this.b,this.c,t,n,r,s)}containsPoint(e){return oi.containsPoint(e,this.a,this.b,this.c)}isFrontFacing(e){return oi.isFrontFacing(this.a,this.b,this.c,e)}intersectsBox(e){return e.intersectsTriangle(this)}closestPointToPoint(e,t){const n=this.a,r=this.b,s=this.c;let o,l;fc.subVectors(r,n),mc.subVectors(s,n),ty.subVectors(e,n);const h=fc.dot(ty),d=mc.dot(ty);if(h<=0&&d<=0)return t.copy(n);ny.subVectors(e,r);const f=fc.dot(ny),g=mc.dot(ny);if(f>=0&&g<=f)return t.copy(r);const y=h*g-f*d;if(y<=0&&h>=0&&f<=0)return o=h/(h-f),t.copy(n).addScaledVector(fc,o);iy.subVectors(e,s);const _=fc.dot(iy),w=mc.dot(iy);if(w>=0&&_<=w)return t.copy(s);const S=_*d-h*w;if(S<=0&&d>=0&&w<=0)return l=d/(d-w),t.copy(n).addScaledVector(mc,l);const b=f*w-_*g;if(b<=0&&g-f>=0&&_-w>=0)return H1.subVectors(s,r),l=(g-f)/(g-f+(_-w)),t.copy(r).addScaledVector(H1,l);const T=1/(b+S+y);return o=S*T,l=y*T,t.copy(n).addScaledVector(fc,o).addScaledVector(mc,l)}equals(e){return e.a.equals(this.a)&&e.b.equals(this.b)&&e.c.equals(this.c)}}let lO=0;class li extends Ea{constructor(){super(),Object.defineProperty(this,"id",{value:lO++}),this.uuid=kr(),this.name="",this.type="Material",this.blending=yo,this.side=Oh,this.vertexColors=!1,this.opacity=1,this.transparent=!1,this.blendSrc=$f,this.blendDst=em,this.blendEquation=Es,this.blendSrcAlpha=null,this.blendDstAlpha=null,this.blendEquationAlpha=null,this.depthFunc=Hy,this.depthTest=!0,this.depthWrite=!0,this.stencilWriteMask=255,this.stencilFunc=kI,this.stencilRef=0,this.stencilFuncMask=255,this.stencilFail=H0,this.stencilZFail=H0,this.stencilZPass=H0,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.visible=!0,this.toneMapped=!0,this.userData={},this.version=0,this._alphaTest=0}get alphaTest(){return this._alphaTest}set alphaTest(e){this._alphaTest>0!=e>0&&this.version++,this._alphaTest=e}onBuild(){}onBeforeRender(){}onBeforeCompile(){}customProgramCacheKey(){return this.onBeforeCompile.toString()}setValues(e){if(e!==void 0)for(const t in e){const n=e[t];if(n===void 0){console.warn("THREE.Material: '"+t+"' parameter is undefined.");continue}if(t==="shading"){console.warn("THREE."+this.type+": .shading has been removed. Use the boolean .flatShading instead."),this.flatShading=n===OE;continue}const r=this[t];if(r===void 0){console.warn("THREE."+this.type+": '"+t+"' is not a property of this material.");continue}r&&r.isColor?r.set(n):r&&r.isVector3&&n&&n.isVector3?r.copy(n):this[t]=n}}toJSON(e){const t=e===void 0||typeof e=="string";t&&(e={textures:{},images:{}});const n={metadata:{version:4.5,type:"Material",generator:"Material.toJSON"}};n.uuid=this.uuid,n.type=this.type,this.name!==""&&(n.name=this.name),this.color&&this.color.isColor&&(n.color=this.color.getHex()),this.roughness!==void 0&&(n.roughness=this.roughness),this.metalness!==void 0&&(n.metalness=this.metalness),this.sheen!==void 0&&(n.sheen=this.sheen),this.sheenColor&&this.sheenColor.isColor&&(n.sheenColor=this.sheenColor.getHex()),this.sheenRoughness!==void 0&&(n.sheenRoughness=this.sheenRoughness),this.emissive&&this.emissive.isColor&&(n.emissive=this.emissive.getHex()),this.emissiveIntensity&&this.emissiveIntensity!==1&&(n.emissiveIntensity=this.emissiveIntensity),this.specular&&this.specular.isColor&&(n.specular=this.specular.getHex()),this.specularIntensity!==void 0&&(n.specularIntensity=this.specularIntensity),this.specularColor&&this.specularColor.isColor&&(n.specularColor=this.specularColor.getHex()),this.shininess!==void 0&&(n.shininess=this.shininess),this.clearcoat!==void 0&&(n.clearcoat=this.clearcoat),this.clearcoatRoughness!==void 0&&(n.clearcoatRoughness=this.clearcoatRoughness),this.clearcoatMap&&this.clearcoatMap.isTexture&&(n.clearcoatMap=this.clearcoatMap.toJSON(e).uuid),this.clearcoatRoughnessMap&&this.clearcoatRoughnessMap.isTexture&&(n.clearcoatRoughnessMap=this.clearcoatRoughnessMap.toJSON(e).uuid),this.clearcoatNormalMap&&this.clearcoatNormalMap.isTexture&&(n.clearcoatNormalMap=this.clearcoatNormalMap.toJSON(e).uuid,n.clearcoatNormalScale=this.clearcoatNormalScale.toArray()),this.map&&this.map.isTexture&&(n.map=this.map.toJSON(e).uuid),this.matcap&&this.matcap.isTexture&&(n.matcap=this.matcap.toJSON(e).uuid),this.alphaMap&&this.alphaMap.isTexture&&(n.alphaMap=this.alphaMap.toJSON(e).uuid),this.lightMap&&this.lightMap.isTexture&&(n.lightMap=this.lightMap.toJSON(e).uuid,n.lightMapIntensity=this.lightMapIntensity),this.aoMap&&this.aoMap.isTexture&&(n.aoMap=this.aoMap.toJSON(e).uuid,n.aoMapIntensity=this.aoMapIntensity),this.bumpMap&&this.bumpMap.isTexture&&(n.bumpMap=this.bumpMap.toJSON(e).uuid,n.bumpScale=this.bumpScale),this.normalMap&&this.normalMap.isTexture&&(n.normalMap=this.normalMap.toJSON(e).uuid,n.normalMapType=this.normalMapType,n.normalScale=this.normalScale.toArray()),this.displacementMap&&this.displacementMap.isTexture&&(n.displacementMap=this.displacementMap.toJSON(e).uuid,n.displacementScale=this.displacementScale,n.displacementBias=this.displacementBias),this.roughnessMap&&this.roughnessMap.isTexture&&(n.roughnessMap=this.roughnessMap.toJSON(e).uuid),this.metalnessMap&&this.metalnessMap.isTexture&&(n.metalnessMap=this.metalnessMap.toJSON(e).uuid),this.emissiveMap&&this.emissiveMap.isTexture&&(n.emissiveMap=this.emissiveMap.toJSON(e).uuid),this.specularMap&&this.specularMap.isTexture&&(n.specularMap=this.specularMap.toJSON(e).uuid),this.specularIntensityMap&&this.specularIntensityMap.isTexture&&(n.specularIntensityMap=this.specularIntensityMap.toJSON(e).uuid),this.specularColorMap&&this.specularColorMap.isTexture&&(n.specularColorMap=this.specularColorMap.toJSON(e).uuid),this.envMap&&this.envMap.isTexture&&(n.envMap=this.envMap.toJSON(e).uuid,this.combine!==void 0&&(n.combine=this.combine)),this.envMapIntensity!==void 0&&(n.envMapIntensity=this.envMapIntensity),this.reflectivity!==void 0&&(n.reflectivity=this.reflectivity),this.refractionRatio!==void 0&&(n.refractionRatio=this.refractionRatio),this.gradientMap&&this.gradientMap.isTexture&&(n.gradientMap=this.gradientMap.toJSON(e).uuid),this.transmission!==void 0&&(n.transmission=this.transmission),this.transmissionMap&&this.transmissionMap.isTexture&&(n.transmissionMap=this.transmissionMap.toJSON(e).uuid),this.thickness!==void 0&&(n.thickness=this.thickness),this.thicknessMap&&this.thicknessMap.isTexture&&(n.thicknessMap=this.thicknessMap.toJSON(e).uuid),this.attenuationDistance!==void 0&&(n.attenuationDistance=this.attenuationDistance),this.attenuationColor!==void 0&&(n.attenuationColor=this.attenuationColor.getHex()),this.size!==void 0&&(n.size=this.size),this.shadowSide!==null&&(n.shadowSide=this.shadowSide),this.sizeAttenuation!==void 0&&(n.sizeAttenuation=this.sizeAttenuation),this.blending!==yo&&(n.blending=this.blending),this.side!==Oh&&(n.side=this.side),this.vertexColors&&(n.vertexColors=!0),this.opacity<1&&(n.opacity=this.opacity),this.transparent===!0&&(n.transparent=this.transparent),n.depthFunc=this.depthFunc,n.depthTest=this.depthTest,n.depthWrite=this.depthWrite,n.colorWrite=this.colorWrite,n.stencilWrite=this.stencilWrite,n.stencilWriteMask=this.stencilWriteMask,n.stencilFunc=this.stencilFunc,n.stencilRef=this.stencilRef,n.stencilFuncMask=this.stencilFuncMask,n.stencilFail=this.stencilFail,n.stencilZFail=this.stencilZFail,n.stencilZPass=this.stencilZPass,this.rotation!==void 0&&this.rotation!==0&&(n.rotation=this.rotation),this.polygonOffset===!0&&(n.polygonOffset=!0),this.polygonOffsetFactor!==0&&(n.polygonOffsetFactor=this.polygonOffsetFactor),this.polygonOffsetUnits!==0&&(n.polygonOffsetUnits=this.polygonOffsetUnits),this.linewidth!==void 0&&this.linewidth!==1&&(n.linewidth=this.linewidth),this.dashSize!==void 0&&(n.dashSize=this.dashSize),this.gapSize!==void 0&&(n.gapSize=this.gapSize),this.scale!==void 0&&(n.scale=this.scale),this.dithering===!0&&(n.dithering=!0),this.alphaTest>0&&(n.alphaTest=this.alphaTest),this.alphaToCoverage===!0&&(n.alphaToCoverage=this.alphaToCoverage),this.premultipliedAlpha===!0&&(n.premultipliedAlpha=this.premultipliedAlpha),this.wireframe===!0&&(n.wireframe=this.wireframe),this.wireframeLinewidth>1&&(n.wireframeLinewidth=this.wireframeLinewidth),this.wireframeLinecap!=="round"&&(n.wireframeLinecap=this.wireframeLinecap),this.wireframeLinejoin!=="round"&&(n.wireframeLinejoin=this.wireframeLinejoin),this.flatShading===!0&&(n.flatShading=this.flatShading),this.visible===!1&&(n.visible=!1),this.toneMapped===!1&&(n.toneMapped=!1),this.fog===!1&&(n.fog=!1),JSON.stringify(this.userData)!=="{}"&&(n.userData=this.userData);function r(s){const o=[];for(const l in s){const h=s[l];delete h.metadata,o.push(h)}return o}if(t){const s=r(e.textures),o=r(e.images);s.length>0&&(n.textures=s),o.length>0&&(n.images=o)}return n}clone(){return new this.constructor().copy(this)}copy(e){this.name=e.name,this.blending=e.blending,this.side=e.side,this.vertexColors=e.vertexColors,this.opacity=e.opacity,this.transparent=e.transparent,this.blendSrc=e.blendSrc,this.blendDst=e.blendDst,this.blendEquation=e.blendEquation,this.blendSrcAlpha=e.blendSrcAlpha,this.blendDstAlpha=e.blendDstAlpha,this.blendEquationAlpha=e.blendEquationAlpha,this.depthFunc=e.depthFunc,this.depthTest=e.depthTest,this.depthWrite=e.depthWrite,this.stencilWriteMask=e.stencilWriteMask,this.stencilFunc=e.stencilFunc,this.stencilRef=e.stencilRef,this.stencilFuncMask=e.stencilFuncMask,this.stencilFail=e.stencilFail,this.stencilZFail=e.stencilZFail,this.stencilZPass=e.stencilZPass,this.stencilWrite=e.stencilWrite;const t=e.clippingPlanes;let n=null;if(t!==null){const r=t.length;n=new Array(r);for(let s=0;s!==r;++s)n[s]=t[s].clone()}return this.clippingPlanes=n,this.clipIntersection=e.clipIntersection,this.clipShadows=e.clipShadows,this.shadowSide=e.shadowSide,this.colorWrite=e.colorWrite,this.precision=e.precision,this.polygonOffset=e.polygonOffset,this.polygonOffsetFactor=e.polygonOffsetFactor,this.polygonOffsetUnits=e.polygonOffsetUnits,this.dithering=e.dithering,this.alphaTest=e.alphaTest,this.alphaToCoverage=e.alphaToCoverage,this.premultipliedAlpha=e.premultipliedAlpha,this.visible=e.visible,this.toneMapped=e.toneMapped,this.userData=JSON.parse(JSON.stringify(e.userData)),this}dispose(){this.dispatchEvent({type:"dispose"})}set needsUpdate(e){e===!0&&this.version++}}li.prototype.isMaterial=!0;li.fromType=function(){return null};class ss extends li{constructor(e){super(),this.type="MeshBasicMaterial",this.color=new Pe(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=km,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.fog=e.fog,this}}ss.prototype.isMeshBasicMaterial=!0;const Kn=new z,Yp=new ae;class Wn{constructor(e,t,n){if(Array.isArray(e))throw new TypeError("THREE.BufferAttribute: array should be a Typed Array.");this.name="",this.array=e,this.itemSize=t,this.count=e!==void 0?e.length/t:0,this.normalized=n===!0,this.usage=Bh,this.updateRange={offset:0,count:-1},this.version=0}onUploadCallback(){}set needsUpdate(e){e===!0&&this.version++}setUsage(e){return this.usage=e,this}copy(e){return this.name=e.name,this.array=new e.array.constructor(e.array),this.itemSize=e.itemSize,this.count=e.count,this.normalized=e.normalized,this.usage=e.usage,this}copyAt(e,t,n){e*=this.itemSize,n*=t.itemSize;for(let r=0,s=this.itemSize;r0&&(e.userData=this.userData),this.parameters!==void 0){const h=this.parameters;for(const d in h)h[d]!==void 0&&(e[d]=h[d]);return e}e.data={attributes:{}};const t=this.index;t!==null&&(e.data.index={type:t.array.constructor.name,array:Array.prototype.slice.call(t.array)});const n=this.attributes;for(const h in n){const d=n[h];e.data.attributes[h]=d.toJSON(e.data)}const r={};let s=!1;for(const h in this.morphAttributes){const d=this.morphAttributes[h],f=[];for(let g=0,y=d.length;g0&&(r[h]=f,s=!0)}s&&(e.data.morphAttributes=r,e.data.morphTargetsRelative=this.morphTargetsRelative);const o=this.groups;o.length>0&&(e.data.groups=JSON.parse(JSON.stringify(o)));const l=this.boundingSphere;return l!==null&&(e.data.boundingSphere={center:l.center.toArray(),radius:l.radius}),e}clone(){return new this.constructor().copy(this)}copy(e){this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null;const t={};this.name=e.name;const n=e.index;n!==null&&this.setIndex(n.clone(t));const r=e.attributes;for(const d in r){const f=r[d];this.setAttribute(d,f.clone(t))}const s=e.morphAttributes;for(const d in s){const f=[],g=s[d];for(let y=0,_=g.length;y<_;y++)f.push(g[y].clone(t));this.morphAttributes[d]=f}this.morphTargetsRelative=e.morphTargetsRelative;const o=e.groups;for(let d=0,f=o.length;d0){const r=t[n[0]];if(r!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let s=0,o=r.length;s0&&console.error("THREE.Mesh.updateMorphTargets() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.")}}raycast(e,t){const n=this.geometry,r=this.material,s=this.matrixWorld;if(r===void 0||(n.boundingSphere===null&&n.computeBoundingSphere(),sy.copy(n.boundingSphere),sy.applyMatrix4(s),e.ray.intersectsSphere(sy)===!1)||(G1.copy(s).invert(),gc.copy(e.ray).applyMatrix4(G1),n.boundingBox!==null&&gc.intersectsBox(n.boundingBox)===!1))return;let o;if(n.isBufferGeometry){const l=n.index,h=n.attributes.position,d=n.morphAttributes.position,f=n.morphTargetsRelative,g=n.attributes.uv,y=n.attributes.uv2,_=n.groups,w=n.drawRange;if(l!==null)if(Array.isArray(r))for(let S=0,b=_.length;St.far?null:{distance:d,point:tf.clone(),object:i}}function nf(i,e,t,n,r,s,o,l,h,d,f,g){ra.fromBufferAttribute(r,d),sa.fromBufferAttribute(r,f),oa.fromBufferAttribute(r,g);const y=i.morphTargetInfluences;if(s&&y){Zp.set(0,0,0),Kp.set(0,0,0),Jp.set(0,0,0);for(let w=0,S=s.length;w0?1:-1,f.push(se.x,se.y,se.z),g.push(fe/F),g.push(1-ue/P),pe+=1}}for(let ue=0;ue0&&(t.defines=this.defines),t.vertexShader=this.vertexShader,t.fragmentShader=this.fragmentShader;const n={};for(const r in this.extensions)this.extensions[r]===!0&&(n[r]=!0);return Object.keys(n).length>0&&(t.extensions=n),t}}kt.prototype.isShaderMaterial=!0;class Um extends $t{constructor(){super(),this.type="Camera",this.matrixWorldInverse=new Qe,this.projectionMatrix=new Qe,this.projectionMatrixInverse=new Qe}copy(e,t){return super.copy(e,t),this.matrixWorldInverse.copy(e.matrixWorldInverse),this.projectionMatrix.copy(e.projectionMatrix),this.projectionMatrixInverse.copy(e.projectionMatrixInverse),this}getWorldDirection(e){this.updateWorldMatrix(!0,!1);const t=this.matrixWorld.elements;return e.set(-t[8],-t[9],-t[10]).normalize()}updateMatrixWorld(e){super.updateMatrixWorld(e),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(e,t){super.updateWorldMatrix(e,t),this.matrixWorldInverse.copy(this.matrixWorld).invert()}clone(){return new this.constructor().copy(this)}}Um.prototype.isCamera=!0;class fi extends Um{constructor(e=50,t=1,n=.1,r=2e3){super(),this.type="PerspectiveCamera",this.fov=e,this.zoom=1,this.near=n,this.far=r,this.focus=10,this.aspect=t,this.view=null,this.filmGauge=35,this.filmOffset=0,this.updateProjectionMatrix()}copy(e,t){return super.copy(e,t),this.fov=e.fov,this.zoom=e.zoom,this.near=e.near,this.far=e.far,this.focus=e.focus,this.aspect=e.aspect,this.view=e.view===null?null:Object.assign({},e.view),this.filmGauge=e.filmGauge,this.filmOffset=e.filmOffset,this}setFocalLength(e){const t=.5*this.getFilmHeight()/e;this.fov=zh*2*Math.atan(t),this.updateProjectionMatrix()}getFocalLength(){const e=Math.tan(yh*.5*this.fov);return .5*this.getFilmHeight()/e}getEffectiveFOV(){return zh*2*Math.atan(Math.tan(yh*.5*this.fov)/this.zoom)}getFilmWidth(){return this.filmGauge*Math.min(this.aspect,1)}getFilmHeight(){return this.filmGauge/Math.max(this.aspect,1)}setViewOffset(e,t,n,r,s,o){this.aspect=e/t,this.view===null&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=e,this.view.fullHeight=t,this.view.offsetX=n,this.view.offsetY=r,this.view.width=s,this.view.height=o,this.updateProjectionMatrix()}clearViewOffset(){this.view!==null&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){const e=this.near;let t=e*Math.tan(yh*.5*this.fov)/this.zoom,n=2*t,r=this.aspect*n,s=-.5*r;const o=this.view;if(this.view!==null&&this.view.enabled){const h=o.fullWidth,d=o.fullHeight;s+=o.offsetX*r/h,t-=o.offsetY*n/d,r*=o.width/h,n*=o.height/d}const l=this.filmOffset;l!==0&&(s+=e*l/this.getFilmWidth()),this.projectionMatrix.makePerspective(s,s+r,t,t-n,e,this.far),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(e){const t=super.toJSON(e);return t.object.fov=this.fov,t.object.zoom=this.zoom,t.object.near=this.near,t.object.far=this.far,t.object.focus=this.focus,t.object.aspect=this.aspect,this.view!==null&&(t.object.view=Object.assign({},this.view)),t.object.filmGauge=this.filmGauge,t.object.filmOffset=this.filmOffset,t}}fi.prototype.isPerspectiveCamera=!0;const yc=90,_c=1;class ox extends $t{constructor(e,t,n){if(super(),this.type="CubeCamera",n.isWebGLCubeRenderTarget!==!0){console.error("THREE.CubeCamera: The constructor now expects an instance of WebGLCubeRenderTarget as third parameter.");return}this.renderTarget=n;const r=new fi(yc,_c,e,t);r.layers=this.layers,r.up.set(0,-1,0),r.lookAt(new z(1,0,0)),this.add(r);const s=new fi(yc,_c,e,t);s.layers=this.layers,s.up.set(0,-1,0),s.lookAt(new z(-1,0,0)),this.add(s);const o=new fi(yc,_c,e,t);o.layers=this.layers,o.up.set(0,0,1),o.lookAt(new z(0,1,0)),this.add(o);const l=new fi(yc,_c,e,t);l.layers=this.layers,l.up.set(0,0,-1),l.lookAt(new z(0,-1,0)),this.add(l);const h=new fi(yc,_c,e,t);h.layers=this.layers,h.up.set(0,-1,0),h.lookAt(new z(0,0,1)),this.add(h);const d=new fi(yc,_c,e,t);d.layers=this.layers,d.up.set(0,-1,0),d.lookAt(new z(0,0,-1)),this.add(d)}update(e,t){this.parent===null&&this.updateMatrixWorld();const n=this.renderTarget,[r,s,o,l,h,d]=this.children,f=e.getRenderTarget(),g=e.toneMapping,y=e.xr.enabled;e.toneMapping=As,e.xr.enabled=!1;const _=n.texture.generateMipmaps;n.texture.generateMipmaps=!1,e.setRenderTarget(n,0),e.render(t,r),e.setRenderTarget(n,1),e.render(t,s),e.setRenderTarget(n,2),e.render(t,o),e.setRenderTarget(n,3),e.render(t,l),e.setRenderTarget(n,4),e.render(t,h),n.texture.generateMipmaps=_,e.setRenderTarget(n,5),e.render(t,d),e.setRenderTarget(f),e.toneMapping=g,e.xr.enabled=y,n.texture.needsPMREMUpdate=!0}}class Fm extends ti{constructor(e,t,n,r,s,o,l,h,d,f){e=e!==void 0?e:[],t=t!==void 0?t:Vc,super(e,t,n,r,s,o,l,h,d,f),this.flipY=!1}get images(){return this.image}set images(e){this.image=e}}Fm.prototype.isCubeTexture=!0;class XE extends Yt{constructor(e,t={}){super(e,e,t);const n={width:e,height:e,depth:1},r=[n,n,n,n,n,n];this.texture=new Fm(r,t.mapping,t.wrapS,t.wrapT,t.magFilter,t.minFilter,t.format,t.type,t.anisotropy,t.encoding),this.texture.isRenderTargetTexture=!0,this.texture.generateMipmaps=t.generateMipmaps!==void 0?t.generateMipmaps:!1,this.texture.minFilter=t.minFilter!==void 0?t.minFilter:Hn}fromEquirectangularTexture(e,t){this.texture.type=t.type,this.texture.encoding=t.encoding,this.texture.generateMipmaps=t.generateMipmaps,this.texture.minFilter=t.minFilter,this.texture.magFilter=t.magFilter;const n={uniforms:{tEquirect:{value:null}},vertexShader:` varying vec3 vWorldDirection; vec3 transformDirection( in vec3 dir, in mat4 matrix ) { return normalize( ( matrix * vec4( dir, 0.0 ) ).xyz ); } void main() { vWorldDirection = transformDirection( position, modelMatrix ); #include #include } `,fragmentShader:` uniform sampler2D tEquirect; varying vec3 vWorldDirection; #include void main() { vec3 direction = normalize( vWorldDirection ); vec2 sampleUV = equirectUv( direction ); gl_FragColor = texture2D( tEquirect, sampleUV ); } `},r=new bl(5,5,5),s=new kt({name:"CubemapFromEquirect",uniforms:Wc(n.uniforms),vertexShader:n.vertexShader,fragmentShader:n.fragmentShader,side:xr,blending:rn});s.uniforms.tEquirect.value=t;const o=new In(r,s),l=t.minFilter;return t.minFilter===od&&(t.minFilter=Hn),new ox(1,10,this).update(e,o),t.minFilter=l,o.geometry.dispose(),o.material.dispose(),this}clear(e,t,n,r){const s=e.getRenderTarget();for(let o=0;o<6;o++)e.setRenderTarget(this,o),e.clear(t,n,r);e.setRenderTarget(s)}}XE.prototype.isWebGLCubeRenderTarget=!0;const uy=new z,fO=new z,mO=new Gn;class mo{constructor(e=new z(1,0,0),t=0){this.normal=e,this.constant=t}set(e,t){return this.normal.copy(e),this.constant=t,this}setComponents(e,t,n,r){return this.normal.set(e,t,n),this.constant=r,this}setFromNormalAndCoplanarPoint(e,t){return this.normal.copy(e),this.constant=-t.dot(this.normal),this}setFromCoplanarPoints(e,t,n){const r=uy.subVectors(n,t).cross(fO.subVectors(e,t)).normalize();return this.setFromNormalAndCoplanarPoint(r,e),this}copy(e){return this.normal.copy(e.normal),this.constant=e.constant,this}normalize(){const e=1/this.normal.length();return this.normal.multiplyScalar(e),this.constant*=e,this}negate(){return this.constant*=-1,this.normal.negate(),this}distanceToPoint(e){return this.normal.dot(e)+this.constant}distanceToSphere(e){return this.distanceToPoint(e.center)-e.radius}projectPoint(e,t){return t.copy(this.normal).multiplyScalar(-this.distanceToPoint(e)).add(e)}intersectLine(e,t){const n=e.delta(uy),r=this.normal.dot(n);if(r===0)return this.distanceToPoint(e.start)===0?t.copy(e.start):null;const s=-(e.start.dot(this.normal)+this.constant)/r;return s<0||s>1?null:t.copy(n).multiplyScalar(s).add(e.start)}intersectsLine(e){const t=this.distanceToPoint(e.start),n=this.distanceToPoint(e.end);return t<0&&n>0||n<0&&t>0}intersectsBox(e){return e.intersectsPlane(this)}intersectsSphere(e){return e.intersectsPlane(this)}coplanarPoint(e){return e.copy(this.normal).multiplyScalar(-this.constant)}applyMatrix4(e,t){const n=t||mO.getNormalMatrix(e),r=this.coplanarPoint(uy).applyMatrix4(e),s=this.normal.applyMatrix3(n).normalize();return this.constant=-r.dot(s),this}translate(e){return this.constant-=e.dot(this.normal),this}equals(e){return e.normal.equals(this.normal)&&e.constant===this.constant}clone(){return new this.constructor().copy(this)}}mo.prototype.isPlane=!0;const xc=new su,rf=new z;class ad{constructor(e=new mo,t=new mo,n=new mo,r=new mo,s=new mo,o=new mo){this.planes=[e,t,n,r,s,o]}set(e,t,n,r,s,o){const l=this.planes;return l[0].copy(e),l[1].copy(t),l[2].copy(n),l[3].copy(r),l[4].copy(s),l[5].copy(o),this}copy(e){const t=this.planes;for(let n=0;n<6;n++)t[n].copy(e.planes[n]);return this}setFromProjectionMatrix(e){const t=this.planes,n=e.elements,r=n[0],s=n[1],o=n[2],l=n[3],h=n[4],d=n[5],f=n[6],g=n[7],y=n[8],_=n[9],w=n[10],S=n[11],b=n[12],T=n[13],E=n[14],C=n[15];return t[0].setComponents(l-r,g-h,S-y,C-b).normalize(),t[1].setComponents(l+r,g+h,S+y,C+b).normalize(),t[2].setComponents(l+s,g+d,S+_,C+T).normalize(),t[3].setComponents(l-s,g-d,S-_,C-T).normalize(),t[4].setComponents(l-o,g-f,S-w,C-E).normalize(),t[5].setComponents(l+o,g+f,S+w,C+E).normalize(),this}intersectsObject(e){const t=e.geometry;return t.boundingSphere===null&&t.computeBoundingSphere(),xc.copy(t.boundingSphere).applyMatrix4(e.matrixWorld),this.intersectsSphere(xc)}intersectsSprite(e){return xc.center.set(0,0,0),xc.radius=.7071067811865476,xc.applyMatrix4(e.matrixWorld),this.intersectsSphere(xc)}intersectsSphere(e){const t=this.planes,n=e.center,r=-e.radius;for(let s=0;s<6;s++)if(t[s].distanceToPoint(n)0?e.max.x:e.min.x,rf.y=r.normal.y>0?e.max.y:e.min.y,rf.z=r.normal.z>0?e.max.z:e.min.z,r.distanceToPoint(rf)<0)return!1}return!0}containsPoint(e){const t=this.planes;for(let n=0;n<6;n++)if(t[n].distanceToPoint(e)<0)return!1;return!0}clone(){return new this.constructor().copy(this)}}function qE(){let i=null,e=!1,t=null,n=null;function r(s,o){t(s,o),n=i.requestAnimationFrame(r)}return{start:function(){e!==!0&&t!==null&&(n=i.requestAnimationFrame(r),e=!0)},stop:function(){i.cancelAnimationFrame(n),e=!1},setAnimationLoop:function(s){t=s},setContext:function(s){i=s}}}function vO(i,e){const t=e.isWebGL2,n=new WeakMap;function r(d,f){const g=d.array,y=d.usage,_=i.createBuffer();i.bindBuffer(f,_),i.bufferData(f,g,y),d.onUploadCallback();let w;if(g instanceof Float32Array)w=5126;else if(g instanceof Uint16Array)if(d.isFloat16BufferAttribute)if(t)w=5131;else throw new Error("THREE.WebGLAttributes: Usage of Float16BufferAttribute requires WebGL2.");else w=5123;else if(g instanceof Int16Array)w=5122;else if(g instanceof Uint32Array)w=5125;else if(g instanceof Int32Array)w=5124;else if(g instanceof Int8Array)w=5120;else if(g instanceof Uint8Array)w=5121;else if(g instanceof Uint8ClampedArray)w=5121;else throw new Error("THREE.WebGLAttributes: Unsupported buffer data format: "+g);return{buffer:_,type:w,bytesPerElement:g.BYTES_PER_ELEMENT,version:d.version}}function s(d,f,g){const y=f.array,_=f.updateRange;i.bindBuffer(g,d),_.count===-1?i.bufferSubData(g,0,y):(t?i.bufferSubData(g,_.offset*y.BYTES_PER_ELEMENT,y,_.offset,_.count):i.bufferSubData(g,_.offset*y.BYTES_PER_ELEMENT,y.subarray(_.offset,_.offset+_.count)),_.count=-1)}function o(d){return d.isInterleavedBufferAttribute&&(d=d.data),n.get(d)}function l(d){d.isInterleavedBufferAttribute&&(d=d.data);const f=n.get(d);f&&(i.deleteBuffer(f.buffer),n.delete(d))}function h(d,f){if(d.isGLBufferAttribute){const y=n.get(d);(!y||y.version 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v; return cross( v1, v2 ) * theta_sintheta; } vec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) { vec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ]; vec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ]; vec3 lightNormal = cross( v1, v2 ); if( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 ); vec3 T1, T2; T1 = normalize( V - N * dot( V, N ) ); T2 = - cross( N, T1 ); mat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) ); vec3 coords[ 4 ]; coords[ 0 ] = mat * ( rectCoords[ 0 ] - P ); coords[ 1 ] = mat * ( rectCoords[ 1 ] - P ); coords[ 2 ] = mat * ( rectCoords[ 2 ] - P ); coords[ 3 ] = mat * ( rectCoords[ 3 ] - P ); coords[ 0 ] = normalize( coords[ 0 ] ); coords[ 1 ] = normalize( coords[ 1 ] ); coords[ 2 ] = normalize( coords[ 2 ] ); coords[ 3 ] = normalize( coords[ 3 ] ); vec3 vectorFormFactor = vec3( 0.0 ); vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] ); vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] ); vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] ); vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] ); float result = LTC_ClippedSphereFormFactor( vectorFormFactor ); return vec3( result ); } float G_BlinnPhong_Implicit( ) { return 0.25; } float D_BlinnPhong( const in float shininess, const in float dotNH ) { return RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess ); } vec3 BRDF_BlinnPhong( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float shininess ) { vec3 halfDir = normalize( lightDir + viewDir ); float dotNH = saturate( dot( normal, halfDir ) ); float dotVH = saturate( dot( viewDir, halfDir ) ); vec3 F = F_Schlick( specularColor, 1.0, dotVH ); float G = G_BlinnPhong_Implicit( ); float D = D_BlinnPhong( shininess, dotNH ); return F * ( G * D ); } #if defined( USE_SHEEN ) float D_Charlie( float roughness, float dotNH ) { float alpha = pow2( roughness ); float invAlpha = 1.0 / alpha; float cos2h = dotNH * dotNH; float sin2h = max( 1.0 - cos2h, 0.0078125 ); return ( 2.0 + invAlpha ) * pow( sin2h, invAlpha * 0.5 ) / ( 2.0 * PI ); } float V_Neubelt( float dotNV, float dotNL ) { return saturate( 1.0 / ( 4.0 * ( dotNL + dotNV - dotNL * dotNV ) ) ); } vec3 BRDF_Sheen( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, vec3 sheenColor, const in float sheenRoughness ) { vec3 halfDir = normalize( lightDir + viewDir ); float dotNL = saturate( dot( normal, lightDir ) ); float dotNV = saturate( dot( normal, viewDir ) ); float dotNH = saturate( dot( normal, halfDir ) ); float D = D_Charlie( sheenRoughness, dotNH ); float V = V_Neubelt( dotNV, dotNL ); return sheenColor * ( D * V ); } #endif`,TO=`#ifdef USE_BUMPMAP uniform sampler2D bumpMap; uniform float bumpScale; vec2 dHdxy_fwd() { vec2 dSTdx = dFdx( vUv ); vec2 dSTdy = dFdy( vUv ); float Hll = bumpScale * texture2D( bumpMap, vUv ).x; float dBx = bumpScale * texture2D( bumpMap, vUv + dSTdx ).x - Hll; float dBy = bumpScale * texture2D( bumpMap, vUv + dSTdy ).x - Hll; return vec2( dBx, dBy ); } vec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy, float faceDirection ) { vec3 vSigmaX = vec3( dFdx( surf_pos.x ), dFdx( surf_pos.y ), dFdx( surf_pos.z ) ); vec3 vSigmaY = vec3( dFdy( surf_pos.x ), dFdy( surf_pos.y ), dFdy( surf_pos.z ) ); vec3 vN = surf_norm; vec3 R1 = cross( vSigmaY, vN ); vec3 R2 = cross( vN, vSigmaX ); float fDet = dot( vSigmaX, R1 ) * faceDirection; vec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 ); return normalize( abs( fDet ) * surf_norm - vGrad ); } #endif`,AO=`#if NUM_CLIPPING_PLANES > 0 vec4 plane; #pragma unroll_loop_start for ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) { plane = clippingPlanes[ i ]; if ( dot( vClipPosition, plane.xyz ) > plane.w ) discard; } #pragma unroll_loop_end #if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES bool clipped = true; #pragma unroll_loop_start for ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) { plane = clippingPlanes[ i ]; clipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped; } #pragma unroll_loop_end if ( clipped ) discard; #endif #endif`,CO=`#if NUM_CLIPPING_PLANES > 0 varying vec3 vClipPosition; uniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ]; #endif`,PO=`#if NUM_CLIPPING_PLANES > 0 varying vec3 vClipPosition; #endif`,RO=`#if NUM_CLIPPING_PLANES > 0 vClipPosition = - mvPosition.xyz; #endif`,LO=`#if defined( USE_COLOR_ALPHA ) diffuseColor *= vColor; #elif defined( USE_COLOR ) diffuseColor.rgb *= vColor; #endif`,DO=`#if defined( USE_COLOR_ALPHA ) varying vec4 vColor; #elif defined( USE_COLOR ) varying vec3 vColor; #endif`,IO=`#if defined( USE_COLOR_ALPHA ) varying vec4 vColor; #elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR ) varying vec3 vColor; #endif`,OO=`#if defined( USE_COLOR_ALPHA ) vColor = vec4( 1.0 ); #elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR ) vColor = vec3( 1.0 ); #endif #ifdef USE_COLOR vColor *= color; #endif #ifdef USE_INSTANCING_COLOR vColor.xyz *= instanceColor.xyz; #endif`,kO=`#define PI 3.141592653589793 #define PI2 6.283185307179586 #define PI_HALF 1.5707963267948966 #define RECIPROCAL_PI 0.3183098861837907 #define RECIPROCAL_PI2 0.15915494309189535 #define EPSILON 1e-6 #ifndef saturate #define saturate( a ) clamp( a, 0.0, 1.0 ) #endif #define whiteComplement( a ) ( 1.0 - saturate( a ) ) float pow2( const in float x ) { return x*x; } float pow3( const in float x ) { return x*x*x; } float pow4( const in float x ) { float x2 = x*x; return x2*x2; } float max3( const in vec3 v ) { return max( max( v.x, v.y ), v.z ); } float average( const in vec3 color ) { return dot( color, vec3( 0.3333 ) ); } highp float rand( const in vec2 uv ) { const highp float a = 12.9898, b = 78.233, c = 43758.5453; highp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI ); return fract( sin( sn ) * c ); } #ifdef HIGH_PRECISION float precisionSafeLength( vec3 v ) { return length( v ); } #else float precisionSafeLength( vec3 v ) { float maxComponent = max3( abs( v ) ); return length( v / maxComponent ) * maxComponent; } #endif struct IncidentLight { vec3 color; vec3 direction; bool visible; }; struct ReflectedLight { vec3 directDiffuse; vec3 directSpecular; vec3 indirectDiffuse; vec3 indirectSpecular; }; struct GeometricContext { vec3 position; vec3 normal; vec3 viewDir; #ifdef USE_CLEARCOAT vec3 clearcoatNormal; #endif }; vec3 transformDirection( in vec3 dir, in mat4 matrix ) { return normalize( ( matrix * vec4( dir, 0.0 ) ).xyz ); } vec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) { return normalize( ( vec4( dir, 0.0 ) * matrix ).xyz ); } mat3 transposeMat3( const in mat3 m ) { mat3 tmp; tmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x ); tmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y ); tmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z ); return tmp; } float linearToRelativeLuminance( const in vec3 color ) { vec3 weights = vec3( 0.2126, 0.7152, 0.0722 ); return dot( weights, color.rgb ); } bool isPerspectiveMatrix( mat4 m ) { return m[ 2 ][ 3 ] == - 1.0; } vec2 equirectUv( in vec3 dir ) { float u = atan( dir.z, dir.x ) * RECIPROCAL_PI2 + 0.5; float v = asin( clamp( dir.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5; return vec2( u, v ); }`,NO=`#ifdef ENVMAP_TYPE_CUBE_UV #define cubeUV_minMipLevel 4.0 #define cubeUV_minTileSize 16.0 float getFace( vec3 direction ) { vec3 absDirection = abs( direction ); float face = - 1.0; if ( absDirection.x > absDirection.z ) { if ( absDirection.x > absDirection.y ) face = direction.x > 0.0 ? 0.0 : 3.0; else face = direction.y > 0.0 ? 1.0 : 4.0; } else { if ( absDirection.z > absDirection.y ) face = direction.z > 0.0 ? 2.0 : 5.0; else face = direction.y > 0.0 ? 1.0 : 4.0; } return face; } vec2 getUV( vec3 direction, float face ) { vec2 uv; if ( face == 0.0 ) { uv = vec2( direction.z, direction.y ) / abs( direction.x ); } else if ( face == 1.0 ) { uv = vec2( - direction.x, - direction.z ) / abs( direction.y ); } else if ( face == 2.0 ) { uv = vec2( - direction.x, direction.y ) / abs( direction.z ); } else if ( face == 3.0 ) { uv = vec2( - direction.z, direction.y ) / abs( direction.x ); } else if ( face == 4.0 ) { uv = vec2( - direction.x, direction.z ) / abs( direction.y ); } else { uv = vec2( direction.x, direction.y ) / abs( direction.z ); } return 0.5 * ( uv + 1.0 ); } vec3 bilinearCubeUV( sampler2D envMap, vec3 direction, float mipInt ) { float face = getFace( direction ); float filterInt = max( cubeUV_minMipLevel - mipInt, 0.0 ); mipInt = max( mipInt, cubeUV_minMipLevel ); float faceSize = exp2( mipInt ); vec2 uv = getUV( direction, face ) * ( faceSize - 2.0 ) + 1.0; if ( face > 2.0 ) { uv.y += faceSize; face -= 3.0; } uv.x += face * faceSize; uv.x += filterInt * 3.0 * cubeUV_minTileSize; uv.y += 4.0 * ( exp2( CUBEUV_MAX_MIP ) - faceSize ); uv.x *= CUBEUV_TEXEL_WIDTH; uv.y *= CUBEUV_TEXEL_HEIGHT; #ifdef texture2DGradEXT return texture2DGradEXT( envMap, uv, vec2( 0.0 ), vec2( 0.0 ) ).rgb; #else return texture2D( envMap, uv ).rgb; #endif } #define r0 1.0 #define v0 0.339 #define m0 - 2.0 #define r1 0.8 #define v1 0.276 #define m1 - 1.0 #define r4 0.4 #define v4 0.046 #define m4 2.0 #define r5 0.305 #define v5 0.016 #define m5 3.0 #define r6 0.21 #define v6 0.0038 #define m6 4.0 float roughnessToMip( float roughness ) { float mip = 0.0; if ( roughness >= r1 ) { mip = ( r0 - roughness ) * ( m1 - m0 ) / ( r0 - r1 ) + m0; } else if ( roughness >= r4 ) { mip = ( r1 - roughness ) * ( m4 - m1 ) / ( r1 - r4 ) + m1; } else if ( roughness >= r5 ) { mip = ( r4 - roughness ) * ( m5 - m4 ) / ( r4 - r5 ) + m4; } else if ( roughness >= r6 ) { mip = ( r5 - roughness ) * ( m6 - m5 ) / ( r5 - r6 ) + m5; } else { mip = - 2.0 * log2( 1.16 * roughness ); } return mip; } vec4 textureCubeUV( sampler2D envMap, vec3 sampleDir, float roughness ) { float mip = clamp( roughnessToMip( roughness ), m0, CUBEUV_MAX_MIP ); float mipF = fract( mip ); float mipInt = floor( mip ); vec3 color0 = bilinearCubeUV( envMap, sampleDir, mipInt ); if ( mipF == 0.0 ) { return vec4( color0, 1.0 ); } else { vec3 color1 = bilinearCubeUV( envMap, sampleDir, mipInt + 1.0 ); return vec4( mix( color0, color1, mipF ), 1.0 ); } } #endif`,BO=`vec3 transformedNormal = objectNormal; #ifdef USE_INSTANCING mat3 m = mat3( instanceMatrix ); transformedNormal /= vec3( dot( m[ 0 ], m[ 0 ] ), dot( m[ 1 ], m[ 1 ] ), dot( m[ 2 ], m[ 2 ] ) ); transformedNormal = m * transformedNormal; #endif transformedNormal = normalMatrix * transformedNormal; #ifdef FLIP_SIDED transformedNormal = - transformedNormal; #endif #ifdef USE_TANGENT vec3 transformedTangent = ( modelViewMatrix * vec4( objectTangent, 0.0 ) ).xyz; #ifdef FLIP_SIDED transformedTangent = - transformedTangent; #endif #endif`,zO=`#ifdef USE_DISPLACEMENTMAP uniform sampler2D displacementMap; uniform float displacementScale; uniform float displacementBias; #endif`,UO=`#ifdef USE_DISPLACEMENTMAP transformed += normalize( objectNormal ) * ( texture2D( displacementMap, vUv ).x * displacementScale + displacementBias ); #endif`,FO=`#ifdef USE_EMISSIVEMAP vec4 emissiveColor = texture2D( emissiveMap, vUv ); totalEmissiveRadiance *= emissiveColor.rgb; #endif`,VO=`#ifdef USE_EMISSIVEMAP uniform sampler2D emissiveMap; #endif`,HO="gl_FragColor = linearToOutputTexel( gl_FragColor );",GO=`vec4 LinearToLinear( in vec4 value ) { return value; } 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.a ); }`,WO=`#ifdef USE_ENVMAP #ifdef ENV_WORLDPOS vec3 cameraToFrag; if ( isOrthographic ) { cameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) ); } else { cameraToFrag = normalize( vWorldPosition - cameraPosition ); } vec3 worldNormal = inverseTransformDirection( normal, viewMatrix ); #ifdef ENVMAP_MODE_REFLECTION vec3 reflectVec = reflect( cameraToFrag, worldNormal ); #else vec3 reflectVec = refract( cameraToFrag, worldNormal, refractionRatio ); #endif #else vec3 reflectVec = vReflect; #endif #ifdef ENVMAP_TYPE_CUBE vec4 envColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) ); #elif defined( ENVMAP_TYPE_CUBE_UV ) vec4 envColor = textureCubeUV( envMap, reflectVec, 0.0 ); #else vec4 envColor = vec4( 0.0 ); #endif #ifdef ENVMAP_BLENDING_MULTIPLY outgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity ); #elif defined( ENVMAP_BLENDING_MIX ) outgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity ); #elif defined( ENVMAP_BLENDING_ADD ) outgoingLight += envColor.xyz * specularStrength * reflectivity; #endif #endif`,jO=`#ifdef USE_ENVMAP uniform float envMapIntensity; uniform float flipEnvMap; #ifdef ENVMAP_TYPE_CUBE uniform samplerCube envMap; #else uniform sampler2D envMap; #endif #endif`,XO=`#ifdef USE_ENVMAP uniform float reflectivity; #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) #define ENV_WORLDPOS #endif #ifdef ENV_WORLDPOS varying vec3 vWorldPosition; uniform float refractionRatio; #else varying vec3 vReflect; #endif #endif`,qO=`#ifdef USE_ENVMAP #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) ||defined( PHONG ) #define ENV_WORLDPOS #endif #ifdef ENV_WORLDPOS varying vec3 vWorldPosition; #else varying vec3 vReflect; uniform float refractionRatio; #endif #endif`,YO=`#ifdef USE_ENVMAP #ifdef ENV_WORLDPOS vWorldPosition = worldPosition.xyz; #else vec3 cameraToVertex; if ( isOrthographic ) { cameraToVertex = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) ); } else { cameraToVertex = normalize( worldPosition.xyz - cameraPosition ); } vec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix ); #ifdef ENVMAP_MODE_REFLECTION vReflect = reflect( cameraToVertex, worldNormal ); #else vReflect = refract( cameraToVertex, worldNormal, refractionRatio ); #endif #endif #endif`,ZO=`#ifdef USE_FOG vFogDepth = - mvPosition.z; #endif`,KO=`#ifdef USE_FOG varying float vFogDepth; #endif`,JO=`#ifdef USE_FOG #ifdef FOG_EXP2 float fogFactor = 1.0 - exp( - fogDensity * fogDensity * vFogDepth * vFogDepth ); #else float fogFactor = smoothstep( fogNear, fogFar, vFogDepth ); #endif gl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor ); #endif`,QO=`#ifdef USE_FOG uniform vec3 fogColor; varying float vFogDepth; #ifdef FOG_EXP2 uniform float fogDensity; #else uniform float fogNear; uniform float fogFar; #endif #endif`,$O=`#ifdef USE_GRADIENTMAP uniform sampler2D gradientMap; #endif vec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) { float dotNL = dot( normal, lightDirection ); vec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 ); #ifdef USE_GRADIENTMAP return vec3( texture2D( gradientMap, coord ).r ); #else return ( coord.x < 0.7 ) ? vec3( 0.7 ) : vec3( 1.0 ); #endif }`,e5=`#ifdef USE_LIGHTMAP vec4 lightMapTexel = texture2D( lightMap, vUv2 ); vec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity; reflectedLight.indirectDiffuse += lightMapIrradiance; #endif`,t5=`#ifdef USE_LIGHTMAP uniform sampler2D lightMap; uniform float lightMapIntensity; #endif`,n5=`vec3 diffuse = vec3( 1.0 ); GeometricContext geometry; geometry.position = mvPosition.xyz; geometry.normal = normalize( transformedNormal ); geometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( -mvPosition.xyz ); GeometricContext backGeometry; backGeometry.position = geometry.position; backGeometry.normal = -geometry.normal; backGeometry.viewDir = geometry.viewDir; vLightFront = vec3( 0.0 ); vIndirectFront = vec3( 0.0 ); #ifdef DOUBLE_SIDED vLightBack = vec3( 0.0 ); vIndirectBack = vec3( 0.0 ); #endif IncidentLight directLight; float dotNL; vec3 directLightColor_Diffuse; vIndirectFront += getAmbientLightIrradiance( ambientLightColor ); vIndirectFront += getLightProbeIrradiance( lightProbe, geometry.normal ); #ifdef DOUBLE_SIDED vIndirectBack += getAmbientLightIrradiance( ambientLightColor ); vIndirectBack += getLightProbeIrradiance( lightProbe, backGeometry.normal ); #endif #if NUM_POINT_LIGHTS > 0 #pragma unroll_loop_start for ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) { getPointLightInfo( pointLights[ i ], geometry, directLight ); dotNL = dot( geometry.normal, directLight.direction ); directLightColor_Diffuse = directLight.color; vLightFront += saturate( dotNL ) * directLightColor_Diffuse; #ifdef DOUBLE_SIDED vLightBack += saturate( - dotNL ) * directLightColor_Diffuse; #endif } #pragma unroll_loop_end #endif #if NUM_SPOT_LIGHTS > 0 #pragma unroll_loop_start for ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) { getSpotLightInfo( spotLights[ i ], geometry, directLight ); dotNL = dot( geometry.normal, directLight.direction ); directLightColor_Diffuse = directLight.color; vLightFront += saturate( dotNL ) * directLightColor_Diffuse; #ifdef DOUBLE_SIDED vLightBack += saturate( - dotNL ) * directLightColor_Diffuse; #endif } #pragma unroll_loop_end #endif #if NUM_DIR_LIGHTS > 0 #pragma unroll_loop_start for ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) { getDirectionalLightInfo( directionalLights[ i ], geometry, directLight ); dotNL = dot( geometry.normal, directLight.direction ); directLightColor_Diffuse = directLight.color; vLightFront += saturate( dotNL ) * directLightColor_Diffuse; #ifdef DOUBLE_SIDED vLightBack += saturate( - dotNL ) * directLightColor_Diffuse; #endif } #pragma unroll_loop_end #endif #if NUM_HEMI_LIGHTS > 0 #pragma unroll_loop_start for ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) { vIndirectFront += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry.normal ); #ifdef DOUBLE_SIDED vIndirectBack += getHemisphereLightIrradiance( hemisphereLights[ i ], backGeometry.normal ); #endif } #pragma unroll_loop_end #endif`,i5=`uniform bool receiveShadow; uniform vec3 ambientLightColor; uniform vec3 lightProbe[ 9 ]; vec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) { float x = normal.x, y = normal.y, z = normal.z; vec3 result = shCoefficients[ 0 ] * 0.886227; result += shCoefficients[ 1 ] * 2.0 * 0.511664 * y; result += shCoefficients[ 2 ] * 2.0 * 0.511664 * z; result += shCoefficients[ 3 ] * 2.0 * 0.511664 * x; result += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y; result += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z; result += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 ); result += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z; result += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y ); return result; } vec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in vec3 normal ) { vec3 worldNormal = inverseTransformDirection( normal, viewMatrix ); vec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe ); return irradiance; } vec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) { vec3 irradiance = ambientLightColor; return irradiance; } float getDistanceAttenuation( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) { #if defined ( PHYSICALLY_CORRECT_LIGHTS ) float distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 ); if ( cutoffDistance > 0.0 ) { distanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) ); } return distanceFalloff; #else if ( cutoffDistance > 0.0 && decayExponent > 0.0 ) { return pow( saturate( - lightDistance / cutoffDistance + 1.0 ), decayExponent ); } return 1.0; #endif } float getSpotAttenuation( const in float coneCosine, const in float penumbraCosine, const in float angleCosine ) { return smoothstep( coneCosine, penumbraCosine, angleCosine ); } #if NUM_DIR_LIGHTS > 0 struct DirectionalLight { vec3 direction; vec3 color; }; uniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ]; void getDirectionalLightInfo( const in DirectionalLight directionalLight, const in GeometricContext geometry, out IncidentLight light ) { light.color = directionalLight.color; light.direction = directionalLight.direction; light.visible = true; } #endif #if NUM_POINT_LIGHTS > 0 struct PointLight { vec3 position; vec3 color; float distance; float decay; }; uniform PointLight pointLights[ NUM_POINT_LIGHTS ]; void getPointLightInfo( const in PointLight pointLight, const in GeometricContext geometry, out IncidentLight light ) { vec3 lVector = pointLight.position - geometry.position; light.direction = normalize( lVector ); float lightDistance = length( lVector ); light.color = pointLight.color; light.color *= getDistanceAttenuation( lightDistance, pointLight.distance, pointLight.decay ); light.visible = ( light.color != vec3( 0.0 ) ); } #endif #if NUM_SPOT_LIGHTS > 0 struct SpotLight { vec3 position; vec3 direction; vec3 color; float distance; float decay; float coneCos; float penumbraCos; }; uniform SpotLight spotLights[ NUM_SPOT_LIGHTS ]; void getSpotLightInfo( const in SpotLight spotLight, const in GeometricContext geometry, out IncidentLight light ) { vec3 lVector = spotLight.position - geometry.position; light.direction = normalize( lVector ); float angleCos = dot( light.direction, spotLight.direction ); float spotAttenuation = getSpotAttenuation( spotLight.coneCos, spotLight.penumbraCos, angleCos ); if ( spotAttenuation > 0.0 ) { float lightDistance = length( lVector ); light.color = spotLight.color * spotAttenuation; light.color *= getDistanceAttenuation( lightDistance, spotLight.distance, spotLight.decay ); light.visible = ( light.color != vec3( 0.0 ) ); } else { light.color = vec3( 0.0 ); light.visible = false; } } #endif #if NUM_RECT_AREA_LIGHTS > 0 struct RectAreaLight { vec3 color; vec3 position; vec3 halfWidth; vec3 halfHeight; }; uniform sampler2D ltc_1; uniform sampler2D ltc_2; uniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ]; #endif #if NUM_HEMI_LIGHTS > 0 struct HemisphereLight { vec3 direction; vec3 skyColor; vec3 groundColor; }; uniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ]; vec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in vec3 normal ) { float dotNL = dot( normal, hemiLight.direction ); float hemiDiffuseWeight = 0.5 * dotNL + 0.5; vec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight ); return irradiance; } #endif`,r5=`#if defined( USE_ENVMAP ) vec3 getIBLIrradiance( const in vec3 normal ) { #if defined( ENVMAP_TYPE_CUBE_UV ) vec3 worldNormal = inverseTransformDirection( normal, viewMatrix ); vec4 envMapColor = textureCubeUV( envMap, worldNormal, 1.0 ); return PI * envMapColor.rgb * envMapIntensity; #else return vec3( 0.0 ); #endif } vec3 getIBLRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness ) { #if defined( ENVMAP_TYPE_CUBE_UV ) vec3 reflectVec = reflect( - viewDir, normal ); reflectVec = normalize( mix( reflectVec, normal, roughness * roughness) ); reflectVec = inverseTransformDirection( reflectVec, viewMatrix ); vec4 envMapColor = textureCubeUV( envMap, reflectVec, roughness ); return envMapColor.rgb * envMapIntensity; #else return vec3( 0.0 ); #endif } #endif`,s5=`ToonMaterial material; material.diffuseColor = diffuseColor.rgb;`,o5=`varying vec3 vViewPosition; struct ToonMaterial { vec3 diffuseColor; }; void RE_Direct_Toon( const in IncidentLight directLight, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) { vec3 irradiance = getGradientIrradiance( geometry.normal, directLight.direction ) * directLight.color; reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); } void RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) { reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); } #define RE_Direct RE_Direct_Toon #define RE_IndirectDiffuse RE_IndirectDiffuse_Toon #define Material_LightProbeLOD( material ) (0)`,a5=`BlinnPhongMaterial material; material.diffuseColor = diffuseColor.rgb; material.specularColor = specular; material.specularShininess = shininess; material.specularStrength = specularStrength;`,l5=`varying vec3 vViewPosition; struct BlinnPhongMaterial { vec3 diffuseColor; vec3 specularColor; float specularShininess; float specularStrength; }; void RE_Direct_BlinnPhong( const in IncidentLight directLight, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) { float dotNL = saturate( dot( geometry.normal, directLight.direction ) ); vec3 irradiance = dotNL * directLight.color; reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); reflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularShininess ) * material.specularStrength; } void RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) { reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); } #define RE_Direct RE_Direct_BlinnPhong #define RE_IndirectDiffuse RE_IndirectDiffuse_BlinnPhong #define Material_LightProbeLOD( material ) (0)`,c5=`PhysicalMaterial material; material.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor ); vec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) ); float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z ); material.roughness = max( roughnessFactor, 0.0525 );material.roughness += geometryRoughness; material.roughness = min( material.roughness, 1.0 ); #ifdef IOR #ifdef SPECULAR float specularIntensityFactor = specularIntensity; vec3 specularColorFactor = specularColor; #ifdef USE_SPECULARINTENSITYMAP specularIntensityFactor *= texture2D( specularIntensityMap, vUv ).a; #endif #ifdef USE_SPECULARCOLORMAP specularColorFactor *= texture2D( specularColorMap, vUv ).rgb; #endif material.specularF90 = mix( specularIntensityFactor, 1.0, metalnessFactor ); #else float specularIntensityFactor = 1.0; vec3 specularColorFactor = vec3( 1.0 ); material.specularF90 = 1.0; #endif material.specularColor = mix( min( pow2( ( ior - 1.0 ) / ( ior + 1.0 ) ) * specularColorFactor, vec3( 1.0 ) ) * specularIntensityFactor, diffuseColor.rgb, metalnessFactor ); #else material.specularColor = mix( vec3( 0.04 ), diffuseColor.rgb, metalnessFactor ); material.specularF90 = 1.0; #endif #ifdef USE_CLEARCOAT material.clearcoat = clearcoat; material.clearcoatRoughness = clearcoatRoughness; material.clearcoatF0 = vec3( 0.04 ); material.clearcoatF90 = 1.0; #ifdef USE_CLEARCOATMAP material.clearcoat *= texture2D( clearcoatMap, vUv ).x; #endif #ifdef USE_CLEARCOAT_ROUGHNESSMAP material.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vUv ).y; #endif material.clearcoat = saturate( material.clearcoat ); material.clearcoatRoughness = max( material.clearcoatRoughness, 0.0525 ); material.clearcoatRoughness += geometryRoughness; material.clearcoatRoughness = min( material.clearcoatRoughness, 1.0 ); #endif #ifdef USE_SHEEN material.sheenColor = sheenColor; #ifdef USE_SHEENCOLORMAP material.sheenColor *= texture2D( sheenColorMap, vUv ).rgb; #endif material.sheenRoughness = clamp( sheenRoughness, 0.07, 1.0 ); #ifdef USE_SHEENROUGHNESSMAP material.sheenRoughness *= texture2D( sheenRoughnessMap, vUv ).a; #endif #endif`,u5=`struct PhysicalMaterial { vec3 diffuseColor; float roughness; vec3 specularColor; float specularF90; #ifdef USE_CLEARCOAT float clearcoat; float clearcoatRoughness; vec3 clearcoatF0; float clearcoatF90; #endif #ifdef USE_SHEEN vec3 sheenColor; float sheenRoughness; #endif }; vec3 clearcoatSpecular = vec3( 0.0 ); vec3 sheenSpecular = vec3( 0.0 ); float IBLSheenBRDF( const in vec3 normal, const in vec3 viewDir, const in float roughness) { float dotNV = saturate( dot( normal, viewDir ) ); float r2 = roughness * roughness; float a = roughness < 0.25 ? -339.2 * r2 + 161.4 * roughness - 25.9 : -8.48 * r2 + 14.3 * roughness - 9.95; float b = roughness < 0.25 ? 44.0 * r2 - 23.7 * roughness + 3.26 : 1.97 * r2 - 3.27 * roughness + 0.72; float DG = exp( a * dotNV + b ) + ( roughness < 0.25 ? 0.0 : 0.1 * ( roughness - 0.25 ) ); return saturate( DG * RECIPROCAL_PI ); } vec2 DFGApprox( const in vec3 normal, const in vec3 viewDir, const in float roughness ) { float dotNV = saturate( dot( normal, viewDir ) ); const vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 ); const vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 ); vec4 r = roughness * c0 + c1; float a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y; vec2 fab = vec2( - 1.04, 1.04 ) * a004 + r.zw; return fab; } vec3 EnvironmentBRDF( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness ) { vec2 fab = DFGApprox( normal, viewDir, roughness ); return specularColor * fab.x + specularF90 * fab.y; } void computeMultiscattering( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) { vec2 fab = DFGApprox( normal, viewDir, roughness ); vec3 FssEss = specularColor * fab.x + specularF90 * fab.y; float Ess = fab.x + fab.y; float Ems = 1.0 - Ess; vec3 Favg = specularColor + ( 1.0 - specularColor ) * 0.047619; vec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg ); singleScatter += FssEss; multiScatter += Fms * Ems; } #if NUM_RECT_AREA_LIGHTS > 0 void RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) { vec3 normal = geometry.normal; vec3 viewDir = geometry.viewDir; vec3 position = geometry.position; vec3 lightPos = rectAreaLight.position; vec3 halfWidth = rectAreaLight.halfWidth; vec3 halfHeight = rectAreaLight.halfHeight; vec3 lightColor = rectAreaLight.color; float roughness = material.roughness; vec3 rectCoords[ 4 ]; rectCoords[ 0 ] = lightPos + halfWidth - halfHeight; rectCoords[ 1 ] = lightPos - halfWidth - halfHeight; rectCoords[ 2 ] = lightPos - halfWidth + halfHeight; rectCoords[ 3 ] = lightPos + halfWidth + halfHeight; vec2 uv = LTC_Uv( normal, viewDir, roughness ); vec4 t1 = texture2D( ltc_1, uv ); vec4 t2 = texture2D( ltc_2, uv ); mat3 mInv = mat3( vec3( t1.x, 0, t1.y ), vec3( 0, 1, 0 ), vec3( t1.z, 0, t1.w ) ); vec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y ); reflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords ); reflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords ); } #endif void RE_Direct_Physical( const in IncidentLight directLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) { float dotNL = saturate( dot( geometry.normal, directLight.direction ) ); vec3 irradiance = dotNL * directLight.color; #ifdef USE_CLEARCOAT float dotNLcc = saturate( dot( geometry.clearcoatNormal, directLight.direction ) ); vec3 ccIrradiance = dotNLcc * directLight.color; clearcoatSpecular += ccIrradiance * BRDF_GGX( directLight.direction, geometry.viewDir, geometry.clearcoatNormal, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness ); #endif #ifdef USE_SHEEN sheenSpecular += irradiance * BRDF_Sheen( directLight.direction, geometry.viewDir, geometry.normal, material.sheenColor, material.sheenRoughness ); #endif reflectedLight.directSpecular += irradiance * BRDF_GGX( directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularF90, material.roughness ); reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); } void RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) { reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); } void RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) { #ifdef USE_CLEARCOAT clearcoatSpecular += clearcoatRadiance * EnvironmentBRDF( geometry.clearcoatNormal, geometry.viewDir, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness ); #endif #ifdef USE_SHEEN sheenSpecular += irradiance * material.sheenColor * IBLSheenBRDF( geometry.normal, geometry.viewDir, material.sheenRoughness ); #endif vec3 singleScattering = vec3( 0.0 ); vec3 multiScattering = vec3( 0.0 ); vec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI; computeMultiscattering( geometry.normal, geometry.viewDir, material.specularColor, material.specularF90, material.roughness, singleScattering, multiScattering ); vec3 diffuse = material.diffuseColor * ( 1.0 - ( singleScattering + multiScattering ) ); reflectedLight.indirectSpecular += radiance * singleScattering; reflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance; reflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance; } #define RE_Direct RE_Direct_Physical #define RE_Direct_RectArea RE_Direct_RectArea_Physical #define RE_IndirectDiffuse RE_IndirectDiffuse_Physical #define RE_IndirectSpecular RE_IndirectSpecular_Physical float computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) { return saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion ); }`,h5=` GeometricContext geometry; geometry.position = - vViewPosition; geometry.normal = normal; geometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition ); #ifdef USE_CLEARCOAT geometry.clearcoatNormal = clearcoatNormal; #endif IncidentLight directLight; #if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct ) PointLight pointLight; #if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0 PointLightShadow pointLightShadow; #endif #pragma unroll_loop_start for ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) { pointLight = pointLights[ i ]; getPointLightInfo( pointLight, geometry, directLight ); #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS ) pointLightShadow = pointLightShadows[ i ]; directLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0; #endif RE_Direct( directLight, geometry, material, reflectedLight ); } #pragma unroll_loop_end #endif #if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct ) SpotLight spotLight; #if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0 SpotLightShadow spotLightShadow; #endif #pragma unroll_loop_start for ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) { spotLight = spotLights[ i ]; getSpotLightInfo( spotLight, geometry, directLight ); #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS ) spotLightShadow = spotLightShadows[ i ]; directLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0; #endif RE_Direct( directLight, geometry, material, reflectedLight ); } #pragma unroll_loop_end #endif #if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct ) DirectionalLight directionalLight; #if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0 DirectionalLightShadow directionalLightShadow; #endif #pragma unroll_loop_start for ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) { directionalLight = directionalLights[ i ]; getDirectionalLightInfo( directionalLight, geometry, directLight ); #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS ) directionalLightShadow = directionalLightShadows[ i ]; directLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0; #endif RE_Direct( directLight, geometry, material, reflectedLight ); } #pragma unroll_loop_end #endif #if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea ) RectAreaLight rectAreaLight; #pragma unroll_loop_start for ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) { rectAreaLight = rectAreaLights[ i ]; RE_Direct_RectArea( rectAreaLight, geometry, material, reflectedLight ); } #pragma unroll_loop_end #endif #if defined( RE_IndirectDiffuse ) vec3 iblIrradiance = vec3( 0.0 ); vec3 irradiance = getAmbientLightIrradiance( ambientLightColor ); irradiance += getLightProbeIrradiance( lightProbe, geometry.normal ); #if ( NUM_HEMI_LIGHTS > 0 ) #pragma unroll_loop_start for ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) { irradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry.normal ); } #pragma unroll_loop_end #endif #endif #if defined( RE_IndirectSpecular ) vec3 radiance = vec3( 0.0 ); vec3 clearcoatRadiance = vec3( 0.0 ); #endif`,d5=`#if defined( RE_IndirectDiffuse ) #ifdef USE_LIGHTMAP vec4 lightMapTexel = texture2D( lightMap, vUv2 ); vec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity; irradiance += lightMapIrradiance; #endif #if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV ) iblIrradiance += getIBLIrradiance( geometry.normal ); #endif #endif #if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular ) radiance += getIBLRadiance( geometry.viewDir, geometry.normal, material.roughness ); #ifdef USE_CLEARCOAT clearcoatRadiance += getIBLRadiance( geometry.viewDir, geometry.clearcoatNormal, material.clearcoatRoughness ); #endif #endif`,p5=`#if defined( RE_IndirectDiffuse ) RE_IndirectDiffuse( irradiance, geometry, material, reflectedLight ); #endif #if defined( RE_IndirectSpecular ) RE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometry, material, reflectedLight ); #endif`,f5=`#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT ) gl_FragDepthEXT = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5; #endif`,m5=`#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT ) uniform float logDepthBufFC; varying float vFragDepth; varying float vIsPerspective; #endif`,v5=`#ifdef USE_LOGDEPTHBUF #ifdef USE_LOGDEPTHBUF_EXT varying float vFragDepth; varying float vIsPerspective; #else uniform float logDepthBufFC; #endif #endif`,g5=`#ifdef USE_LOGDEPTHBUF #ifdef USE_LOGDEPTHBUF_EXT vFragDepth = 1.0 + gl_Position.w; vIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) ); #else if ( isPerspectiveMatrix( projectionMatrix ) ) { gl_Position.z = log2( max( EPSILON, gl_Position.w + 1.0 ) ) * logDepthBufFC - 1.0; gl_Position.z *= gl_Position.w; } #endif #endif`,y5=`#ifdef USE_MAP vec4 sampledDiffuseColor = texture2D( map, vUv ); #ifdef DECODE_VIDEO_TEXTURE sampledDiffuseColor = vec4( mix( pow( sampledDiffuseColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), sampledDiffuseColor.rgb * 0.0773993808, vec3( lessThanEqual( sampledDiffuseColor.rgb, vec3( 0.04045 ) ) ) ), sampledDiffuseColor.w ); #endif diffuseColor *= sampledDiffuseColor; #endif`,_5=`#ifdef USE_MAP uniform sampler2D map; #endif`,x5=`#if defined( USE_MAP ) || defined( USE_ALPHAMAP ) vec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy; #endif #ifdef USE_MAP diffuseColor *= texture2D( map, uv ); #endif #ifdef USE_ALPHAMAP diffuseColor.a *= texture2D( alphaMap, uv ).g; #endif`,b5=`#if defined( USE_MAP ) || defined( USE_ALPHAMAP ) uniform mat3 uvTransform; #endif #ifdef USE_MAP uniform sampler2D map; #endif #ifdef USE_ALPHAMAP uniform sampler2D alphaMap; #endif`,w5=`float metalnessFactor = metalness; #ifdef USE_METALNESSMAP vec4 texelMetalness = texture2D( metalnessMap, vUv ); metalnessFactor *= texelMetalness.b; #endif`,S5=`#ifdef USE_METALNESSMAP uniform sampler2D metalnessMap; #endif`,M5=`#if defined( USE_MORPHCOLORS ) && defined( MORPHTARGETS_TEXTURE ) vColor *= morphTargetBaseInfluence; for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { #if defined( USE_COLOR_ALPHA ) if ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ) * morphTargetInfluences[ i ]; #elif defined( USE_COLOR ) if ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ).rgb * morphTargetInfluences[ i ]; #endif } #endif`,E5=`#ifdef USE_MORPHNORMALS objectNormal *= morphTargetBaseInfluence; #ifdef MORPHTARGETS_TEXTURE for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { if ( morphTargetInfluences[ i ] != 0.0 ) objectNormal += getMorph( gl_VertexID, i, 1 ).xyz * morphTargetInfluences[ i ]; } #else objectNormal += morphNormal0 * morphTargetInfluences[ 0 ]; objectNormal += morphNormal1 * morphTargetInfluences[ 1 ]; objectNormal += morphNormal2 * morphTargetInfluences[ 2 ]; objectNormal += morphNormal3 * morphTargetInfluences[ 3 ]; #endif #endif`,T5=`#ifdef USE_MORPHTARGETS uniform float morphTargetBaseInfluence; #ifdef MORPHTARGETS_TEXTURE uniform float morphTargetInfluences[ MORPHTARGETS_COUNT ]; uniform sampler2DArray morphTargetsTexture; uniform ivec2 morphTargetsTextureSize; vec4 getMorph( const in int vertexIndex, const in int morphTargetIndex, const in int offset ) { int texelIndex = vertexIndex * MORPHTARGETS_TEXTURE_STRIDE + offset; int y = texelIndex / morphTargetsTextureSize.x; int x = texelIndex - y * morphTargetsTextureSize.x; ivec3 morphUV = ivec3( x, y, morphTargetIndex ); return texelFetch( morphTargetsTexture, morphUV, 0 ); } #else #ifndef USE_MORPHNORMALS uniform float morphTargetInfluences[ 8 ]; #else uniform float morphTargetInfluences[ 4 ]; #endif #endif #endif`,A5=`#ifdef USE_MORPHTARGETS transformed *= morphTargetBaseInfluence; #ifdef MORPHTARGETS_TEXTURE for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { if ( morphTargetInfluences[ i ] != 0.0 ) transformed += getMorph( gl_VertexID, i, 0 ).xyz * morphTargetInfluences[ i ]; } #else transformed += morphTarget0 * morphTargetInfluences[ 0 ]; transformed += morphTarget1 * morphTargetInfluences[ 1 ]; transformed += morphTarget2 * morphTargetInfluences[ 2 ]; transformed += morphTarget3 * morphTargetInfluences[ 3 ]; #ifndef USE_MORPHNORMALS transformed += morphTarget4 * morphTargetInfluences[ 4 ]; transformed += morphTarget5 * morphTargetInfluences[ 5 ]; transformed += morphTarget6 * morphTargetInfluences[ 6 ]; transformed += morphTarget7 * morphTargetInfluences[ 7 ]; #endif #endif #endif`,C5=`float faceDirection = gl_FrontFacing ? 1.0 : - 1.0; #ifdef FLAT_SHADED vec3 fdx = vec3( dFdx( vViewPosition.x ), dFdx( vViewPosition.y ), dFdx( vViewPosition.z ) ); vec3 fdy = vec3( dFdy( vViewPosition.x ), dFdy( vViewPosition.y ), dFdy( vViewPosition.z ) ); vec3 normal = normalize( cross( fdx, fdy ) ); #else vec3 normal = normalize( vNormal ); #ifdef DOUBLE_SIDED normal = normal * faceDirection; #endif #ifdef USE_TANGENT vec3 tangent = normalize( vTangent ); vec3 bitangent = normalize( vBitangent ); #ifdef DOUBLE_SIDED tangent = tangent * faceDirection; bitangent = bitangent * faceDirection; #endif #if defined( TANGENTSPACE_NORMALMAP ) || defined( USE_CLEARCOAT_NORMALMAP ) mat3 vTBN = mat3( tangent, bitangent, normal ); #endif #endif #endif vec3 geometryNormal = normal;`,P5=`#ifdef OBJECTSPACE_NORMALMAP normal = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0; #ifdef FLIP_SIDED normal = - normal; #endif #ifdef DOUBLE_SIDED normal = normal * faceDirection; #endif normal = normalize( normalMatrix * normal ); #elif defined( TANGENTSPACE_NORMALMAP ) vec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0; mapN.xy *= normalScale; #ifdef USE_TANGENT normal = normalize( vTBN * mapN ); #else normal = perturbNormal2Arb( - vViewPosition, normal, mapN, faceDirection ); #endif #elif defined( USE_BUMPMAP ) normal = perturbNormalArb( - vViewPosition, normal, dHdxy_fwd(), faceDirection ); #endif`,R5=`#ifndef FLAT_SHADED varying vec3 vNormal; #ifdef USE_TANGENT varying vec3 vTangent; varying vec3 vBitangent; #endif #endif`,L5=`#ifndef FLAT_SHADED varying vec3 vNormal; #ifdef USE_TANGENT varying vec3 vTangent; varying vec3 vBitangent; #endif #endif`,D5=`#ifndef FLAT_SHADED vNormal = normalize( transformedNormal ); #ifdef USE_TANGENT vTangent = normalize( transformedTangent ); vBitangent = normalize( cross( vNormal, vTangent ) * tangent.w ); #endif #endif`,I5=`#ifdef USE_NORMALMAP uniform sampler2D normalMap; uniform vec2 normalScale; #endif #ifdef OBJECTSPACE_NORMALMAP uniform mat3 normalMatrix; #endif #if ! defined ( USE_TANGENT ) && ( defined ( TANGENTSPACE_NORMALMAP ) || defined ( USE_CLEARCOAT_NORMALMAP ) ) vec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm, vec3 mapN, float faceDirection ) { vec3 q0 = vec3( dFdx( eye_pos.x ), dFdx( eye_pos.y ), dFdx( eye_pos.z ) ); vec3 q1 = vec3( dFdy( eye_pos.x ), dFdy( eye_pos.y ), dFdy( eye_pos.z ) ); vec2 st0 = dFdx( vUv.st ); vec2 st1 = dFdy( vUv.st ); vec3 N = surf_norm; vec3 q1perp = cross( q1, N ); vec3 q0perp = cross( N, q0 ); vec3 T = q1perp * st0.x + q0perp * st1.x; vec3 B = q1perp * st0.y + q0perp * st1.y; float det = max( dot( T, T ), dot( B, B ) ); float scale = ( det == 0.0 ) ? 0.0 : faceDirection * inversesqrt( det ); return normalize( T * ( mapN.x * scale ) + B * ( mapN.y * scale ) + N * mapN.z ); } #endif`,O5=`#ifdef USE_CLEARCOAT vec3 clearcoatNormal = geometryNormal; #endif`,k5=`#ifdef USE_CLEARCOAT_NORMALMAP vec3 clearcoatMapN = texture2D( clearcoatNormalMap, vUv ).xyz * 2.0 - 1.0; clearcoatMapN.xy *= clearcoatNormalScale; #ifdef USE_TANGENT clearcoatNormal = normalize( vTBN * clearcoatMapN ); #else clearcoatNormal = perturbNormal2Arb( - vViewPosition, clearcoatNormal, clearcoatMapN, faceDirection ); #endif #endif`,N5=`#ifdef USE_CLEARCOATMAP uniform sampler2D clearcoatMap; #endif #ifdef USE_CLEARCOAT_ROUGHNESSMAP uniform sampler2D clearcoatRoughnessMap; #endif #ifdef USE_CLEARCOAT_NORMALMAP uniform sampler2D clearcoatNormalMap; uniform vec2 clearcoatNormalScale; #endif`,B5=`#ifdef OPAQUE diffuseColor.a = 1.0; #endif #ifdef USE_TRANSMISSION diffuseColor.a *= transmissionAlpha + 0.1; #endif gl_FragColor = vec4( outgoingLight, diffuseColor.a );`,z5=`vec3 packNormalToRGB( const in vec3 normal ) { return normalize( normal ) * 0.5 + 0.5; } vec3 unpackRGBToNormal( const in vec3 rgb ) { return 2.0 * rgb.xyz - 1.0; } const float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.; const vec3 PackFactors = vec3( 256. * 256. * 256., 256. * 256., 256. ); const vec4 UnpackFactors = UnpackDownscale / vec4( PackFactors, 1. ); const float ShiftRight8 = 1. / 256.; vec4 packDepthToRGBA( const in float v ) { vec4 r = vec4( fract( v * PackFactors ), v ); r.yzw -= r.xyz * ShiftRight8; return r * PackUpscale; } float unpackRGBAToDepth( const in vec4 v ) { return dot( v, UnpackFactors ); } vec4 pack2HalfToRGBA( vec2 v ) { vec4 r = vec4( v.x, fract( v.x * 255.0 ), v.y, fract( v.y * 255.0 ) ); return vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w ); } vec2 unpackRGBATo2Half( vec4 v ) { return vec2( v.x + ( v.y / 255.0 ), v.z + ( v.w / 255.0 ) ); } float viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) { return ( viewZ + near ) / ( near - far ); } float orthographicDepthToViewZ( const in float linearClipZ, const in float near, const in float far ) { return linearClipZ * ( near - far ) - near; } float viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) { return ( ( near + viewZ ) * far ) / ( ( far - near ) * viewZ ); } float perspectiveDepthToViewZ( const in float invClipZ, const in float near, const in float far ) { return ( near * far ) / ( ( far - near ) * invClipZ - far ); }`,U5=`#ifdef PREMULTIPLIED_ALPHA gl_FragColor.rgb *= gl_FragColor.a; #endif`,F5=`vec4 mvPosition = vec4( transformed, 1.0 ); #ifdef USE_INSTANCING mvPosition = instanceMatrix * mvPosition; #endif mvPosition = modelViewMatrix * mvPosition; gl_Position = projectionMatrix * mvPosition;`,V5=`#ifdef DITHERING gl_FragColor.rgb = dithering( gl_FragColor.rgb ); #endif`,H5=`#ifdef DITHERING vec3 dithering( vec3 color ) { float grid_position = rand( gl_FragCoord.xy ); vec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 ); dither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position ); return color + dither_shift_RGB; } #endif`,G5=`float roughnessFactor = roughness; #ifdef USE_ROUGHNESSMAP vec4 texelRoughness = texture2D( roughnessMap, vUv ); roughnessFactor *= texelRoughness.g; #endif`,W5=`#ifdef USE_ROUGHNESSMAP uniform sampler2D roughnessMap; #endif`,j5=`#ifdef USE_SHADOWMAP #if NUM_DIR_LIGHT_SHADOWS > 0 uniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ]; varying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ]; struct DirectionalLightShadow { float shadowBias; float shadowNormalBias; float shadowRadius; vec2 shadowMapSize; }; uniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ]; #endif #if NUM_SPOT_LIGHT_SHADOWS > 0 uniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ]; varying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHT_SHADOWS ]; struct SpotLightShadow { float shadowBias; float shadowNormalBias; float shadowRadius; vec2 shadowMapSize; }; uniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ]; #endif #if NUM_POINT_LIGHT_SHADOWS > 0 uniform sampler2D pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ]; varying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ]; struct PointLightShadow { float shadowBias; float shadowNormalBias; float shadowRadius; vec2 shadowMapSize; float shadowCameraNear; float shadowCameraFar; }; uniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ]; #endif float texture2DCompare( sampler2D depths, vec2 uv, float compare ) { return step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) ); } vec2 texture2DDistribution( sampler2D shadow, vec2 uv ) { return unpackRGBATo2Half( texture2D( shadow, uv ) ); } float VSMShadow (sampler2D shadow, vec2 uv, float compare ){ float occlusion = 1.0; vec2 distribution = texture2DDistribution( shadow, uv ); float hard_shadow = step( compare , distribution.x ); if (hard_shadow != 1.0 ) { float distance = compare - distribution.x ; float variance = max( 0.00000, distribution.y * distribution.y ); float softness_probability = variance / (variance + distance * distance ); softness_probability = clamp( ( softness_probability - 0.3 ) / ( 0.95 - 0.3 ), 0.0, 1.0 ); occlusion = clamp( max( hard_shadow, softness_probability ), 0.0, 1.0 ); } return occlusion; } float getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord ) { float shadow = 1.0; shadowCoord.xyz /= shadowCoord.w; shadowCoord.z += shadowBias; bvec4 inFrustumVec = bvec4 ( shadowCoord.x >= 0.0, shadowCoord.x <= 1.0, shadowCoord.y >= 0.0, shadowCoord.y <= 1.0 ); bool inFrustum = all( inFrustumVec ); bvec2 frustumTestVec = bvec2( inFrustum, shadowCoord.z <= 1.0 ); bool frustumTest = all( frustumTestVec ); if ( frustumTest ) { #if defined( SHADOWMAP_TYPE_PCF ) vec2 texelSize = vec2( 1.0 ) / shadowMapSize; float dx0 = - texelSize.x * shadowRadius; float dy0 = - texelSize.y * shadowRadius; float dx1 = + texelSize.x * shadowRadius; float dy1 = + texelSize.y * shadowRadius; float dx2 = dx0 / 2.0; float dy2 = dy0 / 2.0; float dx3 = dx1 / 2.0; float dy3 = dy1 / 2.0; shadow = ( texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) + texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy2 ), shadowCoord.z ) + texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy2 ), shadowCoord.z ) + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy2 ), shadowCoord.z ) + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, 0.0 ), shadowCoord.z ) + texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, 0.0 ), shadowCoord.z ) + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy3 ), shadowCoord.z ) + texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy3 ), shadowCoord.z ) + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy3 ), shadowCoord.z ) + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) + texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) + texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z ) ) * ( 1.0 / 17.0 ); #elif defined( SHADOWMAP_TYPE_PCF_SOFT ) vec2 texelSize = vec2( 1.0 ) / shadowMapSize; float dx = texelSize.x; float dy = texelSize.y; vec2 uv = shadowCoord.xy; vec2 f = fract( uv * shadowMapSize + 0.5 ); uv -= f * texelSize; shadow = ( texture2DCompare( shadowMap, uv, shadowCoord.z ) + texture2DCompare( shadowMap, uv + vec2( dx, 0.0 ), shadowCoord.z ) + texture2DCompare( shadowMap, uv + vec2( 0.0, dy ), shadowCoord.z ) + texture2DCompare( shadowMap, uv + texelSize, shadowCoord.z ) + mix( texture2DCompare( shadowMap, uv + vec2( -dx, 0.0 ), shadowCoord.z ), texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 0.0 ), shadowCoord.z ), f.x ) + mix( texture2DCompare( shadowMap, uv + vec2( -dx, dy ), shadowCoord.z ), texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, dy ), shadowCoord.z ), f.x ) + mix( texture2DCompare( shadowMap, uv + vec2( 0.0, -dy ), shadowCoord.z ), texture2DCompare( shadowMap, uv + vec2( 0.0, 2.0 * dy ), shadowCoord.z ), f.y ) + mix( texture2DCompare( shadowMap, uv + vec2( dx, -dy ), shadowCoord.z ), texture2DCompare( shadowMap, uv + vec2( dx, 2.0 * dy ), shadowCoord.z ), f.y ) + mix( mix( texture2DCompare( shadowMap, uv + vec2( -dx, -dy ), shadowCoord.z ), texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, -dy ), shadowCoord.z ), f.x ), mix( texture2DCompare( shadowMap, uv + vec2( -dx, 2.0 * dy ), shadowCoord.z ), texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 2.0 * dy ), shadowCoord.z ), f.x ), f.y ) ) * ( 1.0 / 9.0 ); #elif defined( SHADOWMAP_TYPE_VSM ) shadow = VSMShadow( shadowMap, shadowCoord.xy, shadowCoord.z ); #else shadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ); #endif } return shadow; } vec2 cubeToUV( vec3 v, float texelSizeY ) { vec3 absV = abs( v ); float scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) ); absV *= scaleToCube; v *= scaleToCube * ( 1.0 - 2.0 * texelSizeY ); vec2 planar = v.xy; float almostATexel = 1.5 * texelSizeY; float almostOne = 1.0 - almostATexel; if ( absV.z >= almostOne ) { if ( v.z > 0.0 ) planar.x = 4.0 - v.x; } else if ( absV.x >= almostOne ) { float signX = sign( v.x ); planar.x = v.z * signX + 2.0 * signX; } else if ( absV.y >= almostOne ) { float signY = sign( v.y ); planar.x = v.x + 2.0 * signY + 2.0; planar.y = v.z * signY - 2.0; } return vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 ); } float getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) { vec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) ); vec3 lightToPosition = shadowCoord.xyz; float dp = ( length( lightToPosition ) - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear ); dp += shadowBias; vec3 bd3D = normalize( lightToPosition ); #if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT ) || defined( SHADOWMAP_TYPE_VSM ) vec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y; return ( texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) + texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) + texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp ) ) * ( 1.0 / 9.0 ); #else return texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ); #endif } #endif`,X5=`#ifdef USE_SHADOWMAP #if NUM_DIR_LIGHT_SHADOWS > 0 uniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHT_SHADOWS ]; varying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ]; struct DirectionalLightShadow { float shadowBias; float shadowNormalBias; float shadowRadius; vec2 shadowMapSize; }; uniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ]; #endif #if NUM_SPOT_LIGHT_SHADOWS > 0 uniform mat4 spotShadowMatrix[ NUM_SPOT_LIGHT_SHADOWS ]; varying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHT_SHADOWS ]; struct SpotLightShadow { float shadowBias; float shadowNormalBias; float shadowRadius; vec2 shadowMapSize; }; uniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ]; #endif #if NUM_POINT_LIGHT_SHADOWS > 0 uniform mat4 pointShadowMatrix[ NUM_POINT_LIGHT_SHADOWS ]; varying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ]; struct PointLightShadow { float shadowBias; float shadowNormalBias; float shadowRadius; vec2 shadowMapSize; float shadowCameraNear; float shadowCameraFar; }; uniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ]; #endif #endif`,q5=`#ifdef USE_SHADOWMAP #if NUM_DIR_LIGHT_SHADOWS > 0 || NUM_SPOT_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0 vec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix ); vec4 shadowWorldPosition; #endif #if NUM_DIR_LIGHT_SHADOWS > 0 #pragma unroll_loop_start for ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) { shadowWorldPosition = worldPosition + vec4( shadowWorldNormal * directionalLightShadows[ i ].shadowNormalBias, 0 ); vDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * shadowWorldPosition; } #pragma unroll_loop_end #endif #if NUM_SPOT_LIGHT_SHADOWS > 0 #pragma unroll_loop_start for ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) { shadowWorldPosition = worldPosition + vec4( shadowWorldNormal * spotLightShadows[ i ].shadowNormalBias, 0 ); vSpotShadowCoord[ i ] = spotShadowMatrix[ i ] * shadowWorldPosition; } #pragma unroll_loop_end #endif #if NUM_POINT_LIGHT_SHADOWS > 0 #pragma unroll_loop_start for ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) { shadowWorldPosition = worldPosition + vec4( shadowWorldNormal * pointLightShadows[ i ].shadowNormalBias, 0 ); vPointShadowCoord[ i ] = pointShadowMatrix[ i ] * shadowWorldPosition; } #pragma unroll_loop_end #endif #endif`,Y5=`float getShadowMask() { float shadow = 1.0; #ifdef USE_SHADOWMAP #if NUM_DIR_LIGHT_SHADOWS > 0 DirectionalLightShadow directionalLight; #pragma unroll_loop_start for ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) { directionalLight = directionalLightShadows[ i ]; shadow *= receiveShadow ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0; } #pragma unroll_loop_end #endif #if NUM_SPOT_LIGHT_SHADOWS > 0 SpotLightShadow spotLight; #pragma unroll_loop_start for ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) { spotLight = spotLightShadows[ i ]; shadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0; } #pragma unroll_loop_end #endif #if NUM_POINT_LIGHT_SHADOWS > 0 PointLightShadow pointLight; #pragma unroll_loop_start for ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) { pointLight = pointLightShadows[ i ]; shadow *= receiveShadow ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0; } #pragma unroll_loop_end #endif #endif return shadow; }`,Z5=`#ifdef USE_SKINNING mat4 boneMatX = getBoneMatrix( skinIndex.x ); mat4 boneMatY = getBoneMatrix( skinIndex.y ); mat4 boneMatZ = getBoneMatrix( skinIndex.z ); mat4 boneMatW = getBoneMatrix( skinIndex.w ); #endif`,K5=`#ifdef USE_SKINNING uniform mat4 bindMatrix; uniform mat4 bindMatrixInverse; uniform highp sampler2D boneTexture; uniform int boneTextureSize; mat4 getBoneMatrix( const in float i ) { float j = i * 4.0; float x = mod( j, float( boneTextureSize ) ); float y = floor( j / float( boneTextureSize ) ); float dx = 1.0 / float( boneTextureSize ); float dy = 1.0 / float( boneTextureSize ); y = dy * ( y + 0.5 ); vec4 v1 = texture2D( boneTexture, vec2( dx * ( x + 0.5 ), y ) ); vec4 v2 = texture2D( boneTexture, vec2( dx * ( x + 1.5 ), y ) ); vec4 v3 = texture2D( boneTexture, vec2( dx * ( x + 2.5 ), y ) ); vec4 v4 = texture2D( boneTexture, vec2( dx * ( x + 3.5 ), y ) ); mat4 bone = mat4( v1, v2, v3, v4 ); return bone; } #endif`,J5=`#ifdef USE_SKINNING vec4 skinVertex = bindMatrix * vec4( transformed, 1.0 ); vec4 skinned = vec4( 0.0 ); skinned += boneMatX * skinVertex * skinWeight.x; skinned += boneMatY * skinVertex * skinWeight.y; skinned += boneMatZ * skinVertex * skinWeight.z; skinned += boneMatW * skinVertex * skinWeight.w; transformed = ( bindMatrixInverse * skinned ).xyz; #endif`,Q5=`#ifdef USE_SKINNING mat4 skinMatrix = mat4( 0.0 ); skinMatrix += skinWeight.x * boneMatX; skinMatrix += skinWeight.y * boneMatY; skinMatrix += skinWeight.z * boneMatZ; skinMatrix += skinWeight.w * boneMatW; skinMatrix = bindMatrixInverse * skinMatrix * bindMatrix; objectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz; #ifdef USE_TANGENT objectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz; #endif #endif`,$5=`float specularStrength; #ifdef USE_SPECULARMAP vec4 texelSpecular = texture2D( specularMap, vUv ); specularStrength = texelSpecular.r; #else specularStrength = 1.0; #endif`,ek=`#ifdef USE_SPECULARMAP uniform sampler2D specularMap; #endif`,tk=`#if defined( TONE_MAPPING ) gl_FragColor.rgb = toneMapping( gl_FragColor.rgb ); #endif`,nk=`#ifndef saturate #define saturate( a ) clamp( a, 0.0, 1.0 ) #endif uniform float toneMappingExposure; vec3 LinearToneMapping( vec3 color ) { return toneMappingExposure * color; } vec3 ReinhardToneMapping( vec3 color ) { color *= toneMappingExposure; return saturate( color / ( vec3( 1.0 ) + color ) ); } vec3 OptimizedCineonToneMapping( vec3 color ) { color *= toneMappingExposure; color = max( vec3( 0.0 ), color - 0.004 ); return pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) ); } vec3 RRTAndODTFit( vec3 v ) { vec3 a = v * ( v + 0.0245786 ) - 0.000090537; vec3 b = v * ( 0.983729 * v + 0.4329510 ) + 0.238081; return a / b; } vec3 ACESFilmicToneMapping( vec3 color ) { const mat3 ACESInputMat = mat3( vec3( 0.59719, 0.07600, 0.02840 ), vec3( 0.35458, 0.90834, 0.13383 ), vec3( 0.04823, 0.01566, 0.83777 ) ); const mat3 ACESOutputMat = mat3( vec3( 1.60475, -0.10208, -0.00327 ), vec3( -0.53108, 1.10813, -0.07276 ), vec3( -0.07367, -0.00605, 1.07602 ) ); color *= toneMappingExposure / 0.6; color = ACESInputMat * color; color = RRTAndODTFit( color ); color = ACESOutputMat * color; return saturate( color ); } vec3 CustomToneMapping( vec3 color ) { return color; }`,ik=`#ifdef USE_TRANSMISSION float transmissionAlpha = 1.0; float transmissionFactor = transmission; float thicknessFactor = thickness; #ifdef USE_TRANSMISSIONMAP transmissionFactor *= texture2D( transmissionMap, vUv ).r; #endif #ifdef USE_THICKNESSMAP thicknessFactor *= texture2D( thicknessMap, vUv ).g; #endif vec3 pos = vWorldPosition; vec3 v = normalize( cameraPosition - pos ); vec3 n = inverseTransformDirection( normal, viewMatrix ); vec4 transmission = getIBLVolumeRefraction( n, v, roughnessFactor, material.diffuseColor, material.specularColor, material.specularF90, pos, modelMatrix, viewMatrix, projectionMatrix, ior, thicknessFactor, attenuationColor, attenuationDistance ); totalDiffuse = mix( totalDiffuse, transmission.rgb, transmissionFactor ); transmissionAlpha = mix( transmissionAlpha, transmission.a, transmissionFactor ); #endif`,rk=`#ifdef USE_TRANSMISSION uniform float transmission; uniform float thickness; uniform float attenuationDistance; uniform vec3 attenuationColor; #ifdef USE_TRANSMISSIONMAP uniform sampler2D transmissionMap; #endif #ifdef USE_THICKNESSMAP uniform sampler2D thicknessMap; #endif uniform vec2 transmissionSamplerSize; uniform sampler2D transmissionSamplerMap; uniform mat4 modelMatrix; uniform mat4 projectionMatrix; varying vec3 vWorldPosition; vec3 getVolumeTransmissionRay( const in vec3 n, const in vec3 v, const in float thickness, const in float ior, const in mat4 modelMatrix ) { vec3 refractionVector = refract( - v, normalize( n ), 1.0 / ior ); vec3 modelScale; modelScale.x = length( vec3( modelMatrix[ 0 ].xyz ) ); modelScale.y = length( vec3( modelMatrix[ 1 ].xyz ) ); modelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) ); return normalize( refractionVector ) * thickness * modelScale; } float applyIorToRoughness( const in float roughness, const in float ior ) { return roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 ); } vec4 getTransmissionSample( const in vec2 fragCoord, const in float roughness, const in float ior ) { float framebufferLod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior ); #ifdef texture2DLodEXT return texture2DLodEXT( transmissionSamplerMap, fragCoord.xy, framebufferLod ); #else return texture2D( transmissionSamplerMap, fragCoord.xy, framebufferLod ); #endif } vec3 applyVolumeAttenuation( const in vec3 radiance, const in float transmissionDistance, const in vec3 attenuationColor, const in float attenuationDistance ) { if ( attenuationDistance == 0.0 ) { return radiance; } else { vec3 attenuationCoefficient = -log( attenuationColor ) / attenuationDistance; vec3 transmittance = exp( - attenuationCoefficient * transmissionDistance ); return transmittance * radiance; } } vec4 getIBLVolumeRefraction( const in vec3 n, const in vec3 v, const in float roughness, const in vec3 diffuseColor, const in vec3 specularColor, const in float specularF90, const in vec3 position, const in mat4 modelMatrix, const in mat4 viewMatrix, const in mat4 projMatrix, const in float ior, const in float thickness, const in vec3 attenuationColor, const in float attenuationDistance ) { vec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix ); vec3 refractedRayExit = position + transmissionRay; vec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 ); vec2 refractionCoords = ndcPos.xy / ndcPos.w; refractionCoords += 1.0; refractionCoords /= 2.0; vec4 transmittedLight = getTransmissionSample( refractionCoords, roughness, ior ); vec3 attenuatedColor = applyVolumeAttenuation( transmittedLight.rgb, length( transmissionRay ), attenuationColor, attenuationDistance ); vec3 F = EnvironmentBRDF( n, v, specularColor, specularF90, roughness ); return vec4( ( 1.0 - F ) * attenuatedColor * diffuseColor, transmittedLight.a ); } #endif`,sk=`#if ( defined( USE_UV ) && ! defined( UVS_VERTEX_ONLY ) ) varying vec2 vUv; #endif`,ok=`#ifdef USE_UV #ifdef UVS_VERTEX_ONLY vec2 vUv; #else varying vec2 vUv; #endif uniform mat3 uvTransform; #endif`,ak=`#ifdef USE_UV vUv = ( uvTransform * vec3( uv, 1 ) ).xy; #endif`,lk=`#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP ) varying vec2 vUv2; #endif`,ck=`#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP ) attribute vec2 uv2; varying vec2 vUv2; uniform mat3 uv2Transform; #endif`,uk=`#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP ) vUv2 = ( uv2Transform * vec3( uv2, 1 ) ).xy; #endif`,hk=`#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION ) vec4 worldPosition = vec4( transformed, 1.0 ); #ifdef USE_INSTANCING worldPosition = instanceMatrix * worldPosition; #endif worldPosition = modelMatrix * worldPosition; #endif`;const dk=`varying vec2 vUv; uniform mat3 uvTransform; void main() { vUv = ( uvTransform * vec3( uv, 1 ) ).xy; gl_Position = vec4( position.xy, 1.0, 1.0 ); }`,pk=`uniform sampler2D t2D; varying vec2 vUv; void main() { gl_FragColor = texture2D( t2D, vUv ); #ifdef DECODE_VIDEO_TEXTURE gl_FragColor = vec4( mix( pow( gl_FragColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), gl_FragColor.rgb * 0.0773993808, vec3( lessThanEqual( gl_FragColor.rgb, vec3( 0.04045 ) ) ) ), gl_FragColor.w ); #endif #include #include }`,fk=`varying vec3 vWorldDirection; #include void main() { vWorldDirection = transformDirection( position, modelMatrix ); #include #include gl_Position.z = gl_Position.w; }`,mk=`#include uniform float opacity; varying vec3 vWorldDirection; #include void main() { vec3 vReflect = vWorldDirection; #include gl_FragColor = envColor; gl_FragColor.a *= opacity; #include #include }`,vk=`#include #include #include #include #include #include #include varying vec2 vHighPrecisionZW; void main() { #include #include #ifdef USE_DISPLACEMENTMAP #include #include #include #endif #include #include #include #include #include #include #include vHighPrecisionZW = gl_Position.zw; }`,gk=`#if DEPTH_PACKING == 3200 uniform float opacity; #endif #include #include #include #include #include #include #include #include varying vec2 vHighPrecisionZW; void main() { #include vec4 diffuseColor = vec4( 1.0 ); #if DEPTH_PACKING == 3200 diffuseColor.a = opacity; #endif #include #include #include #include float fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5; #if DEPTH_PACKING == 3200 gl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity ); #elif DEPTH_PACKING == 3201 gl_FragColor = packDepthToRGBA( fragCoordZ ); #endif }`,yk=`#define DISTANCE varying vec3 vWorldPosition; #include #include #include #include #include #include void main() { #include #include #ifdef USE_DISPLACEMENTMAP #include #include #include #endif #include #include #include #include #include #include #include vWorldPosition = worldPosition.xyz; }`,_k=`#define DISTANCE uniform vec3 referencePosition; uniform float nearDistance; uniform float farDistance; varying vec3 vWorldPosition; #include #include #include #include #include #include #include void main () { #include vec4 diffuseColor = vec4( 1.0 ); #include #include #include float dist = length( vWorldPosition - referencePosition ); dist = ( dist - nearDistance ) / ( farDistance - nearDistance ); dist = saturate( dist ); gl_FragColor = packDepthToRGBA( dist ); }`,xk=`varying vec3 vWorldDirection; #include void main() { vWorldDirection = transformDirection( position, modelMatrix ); #include #include }`,bk=`uniform sampler2D tEquirect; varying vec3 vWorldDirection; #include void main() { vec3 direction = normalize( vWorldDirection ); vec2 sampleUV = equirectUv( direction ); gl_FragColor = texture2D( tEquirect, sampleUV ); #include #include }`,wk=`uniform float scale; attribute float lineDistance; varying float vLineDistance; #include #include #include #include #include #include void main() { vLineDistance = scale * lineDistance; #include #include #include #include #include #include #include #include }`,Sk=`uniform vec3 diffuse; uniform float opacity; uniform float dashSize; uniform float totalSize; varying float vLineDistance; #include #include #include #include #include void main() { #include if ( mod( vLineDistance, totalSize ) > dashSize ) { discard; } vec3 outgoingLight = vec3( 0.0 ); vec4 diffuseColor = vec4( diffuse, opacity ); #include #include outgoingLight = diffuseColor.rgb; #include #include #include #include #include }`,Mk=`#include #include #include #include #include #include #include #include #include #include void main() { #include #include #include #include #if defined ( USE_ENVMAP ) || defined ( USE_SKINNING ) #include #include #include #include #include #endif #include #include #include #include #include #include #include #include #include }`,Ek=`uniform vec3 diffuse; uniform float opacity; #ifndef FLAT_SHADED varying vec3 vNormal; #endif #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include void main() { #include vec4 diffuseColor = vec4( diffuse, opacity ); #include #include #include #include #include #include ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); #ifdef USE_LIGHTMAP vec4 lightMapTexel = texture2D( lightMap, vUv2 ); reflectedLight.indirectDiffuse += lightMapTexel.rgb * lightMapIntensity * RECIPROCAL_PI; #else reflectedLight.indirectDiffuse += vec3( 1.0 ); #endif #include reflectedLight.indirectDiffuse *= diffuseColor.rgb; vec3 outgoingLight = reflectedLight.indirectDiffuse; #include #include #include #include #include #include #include }`,Tk=`#define LAMBERT varying vec3 vLightFront; varying vec3 vIndirectFront; #ifdef DOUBLE_SIDED varying vec3 vLightBack; varying vec3 vIndirectBack; #endif #include #include #include #include #include #include #include #include #include #include #include #include #include void main() { #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include }`,Ak=`uniform vec3 diffuse; uniform vec3 emissive; uniform float opacity; varying vec3 vLightFront; varying vec3 vIndirectFront; #ifdef DOUBLE_SIDED varying vec3 vLightBack; varying vec3 vIndirectBack; #endif #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include void main() { #include vec4 diffuseColor = vec4( diffuse, opacity ); ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); vec3 totalEmissiveRadiance = emissive; #include #include #include #include #include #include #include #ifdef DOUBLE_SIDED reflectedLight.indirectDiffuse += ( gl_FrontFacing ) ? vIndirectFront : vIndirectBack; #else reflectedLight.indirectDiffuse += vIndirectFront; #endif #include reflectedLight.indirectDiffuse *= BRDF_Lambert( diffuseColor.rgb ); #ifdef DOUBLE_SIDED reflectedLight.directDiffuse = ( gl_FrontFacing ) ? vLightFront : vLightBack; #else reflectedLight.directDiffuse = vLightFront; #endif reflectedLight.directDiffuse *= BRDF_Lambert( diffuseColor.rgb ) * getShadowMask(); #include vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance; #include #include #include #include #include #include #include }`,Ck=`#define MATCAP varying vec3 vViewPosition; #include #include #include #include #include #include #include #include #include #include void main() { #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include vViewPosition = - mvPosition.xyz; }`,Pk=`#define MATCAP uniform vec3 diffuse; uniform float opacity; uniform sampler2D matcap; varying vec3 vViewPosition; #include #include #include #include #include #include #include #include #include #include #include #include #include void main() { #include vec4 diffuseColor = vec4( diffuse, opacity ); #include #include #include #include #include #include #include vec3 viewDir = normalize( vViewPosition ); vec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) ); vec3 y = cross( viewDir, x ); vec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5; #ifdef USE_MATCAP vec4 matcapColor = texture2D( matcap, uv ); #else vec4 matcapColor = vec4( vec3( mix( 0.2, 0.8, uv.y ) ), 1.0 ); #endif vec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb; #include #include #include #include #include #include }`,Rk=`#define NORMAL #if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP ) varying vec3 vViewPosition; #endif #include #include #include #include #include #include #include #include void main() { #include #include #include #include #include #include #include #include #include #include #include #include #include #include #if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP ) vViewPosition = - mvPosition.xyz; #endif }`,Lk=`#define NORMAL uniform float opacity; #if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP ) varying vec3 vViewPosition; #endif #include #include #include #include #include #include #include void main() { #include #include #include #include gl_FragColor = vec4( packNormalToRGB( normal ), opacity ); #ifdef OPAQUE gl_FragColor.a = 1.0; #endif }`,Dk=`#define PHONG varying vec3 vViewPosition; #include #include #include #include #include #include #include #include #include #include #include #include #include void main() { #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include vViewPosition = - mvPosition.xyz; #include #include #include #include }`,Ik=`#define PHONG uniform vec3 diffuse; uniform vec3 emissive; uniform vec3 specular; uniform float shininess; uniform float opacity; #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include void main() { #include vec4 diffuseColor = vec4( diffuse, opacity ); ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); vec3 totalEmissiveRadiance = emissive; #include #include #include #include #include #include #include #include #include #include #include #include #include #include vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance; #include #include #include #include #include #include #include }`,Ok=`#define STANDARD varying vec3 vViewPosition; #ifdef USE_TRANSMISSION varying vec3 vWorldPosition; #endif #include #include #include #include #include #include #include #include #include #include #include #include void main() { #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include vViewPosition = - mvPosition.xyz; #include #include #include #ifdef USE_TRANSMISSION vWorldPosition = worldPosition.xyz; #endif }`,kk=`#define STANDARD #ifdef PHYSICAL #define IOR #define SPECULAR #endif uniform vec3 diffuse; uniform vec3 emissive; uniform float roughness; uniform float metalness; uniform float opacity; #ifdef IOR uniform float ior; #endif #ifdef SPECULAR uniform float specularIntensity; uniform vec3 specularColor; #ifdef USE_SPECULARINTENSITYMAP uniform sampler2D specularIntensityMap; #endif #ifdef USE_SPECULARCOLORMAP uniform sampler2D specularColorMap; #endif #endif #ifdef USE_CLEARCOAT uniform float clearcoat; uniform float clearcoatRoughness; #endif #ifdef USE_SHEEN uniform vec3 sheenColor; uniform float sheenRoughness; #ifdef USE_SHEENCOLORMAP uniform sampler2D sheenColorMap; #endif #ifdef USE_SHEENROUGHNESSMAP uniform sampler2D sheenRoughnessMap; #endif #endif varying vec3 vViewPosition; #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include void main() { #include vec4 diffuseColor = vec4( diffuse, opacity ); ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); vec3 totalEmissiveRadiance = emissive; #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include vec3 totalDiffuse = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse; vec3 totalSpecular = reflectedLight.directSpecular + reflectedLight.indirectSpecular; #include vec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance; #ifdef USE_SHEEN float sheenEnergyComp = 1.0 - 0.157 * max3( material.sheenColor ); outgoingLight = outgoingLight * sheenEnergyComp + sheenSpecular; #endif #ifdef USE_CLEARCOAT float dotNVcc = saturate( dot( geometry.clearcoatNormal, geometry.viewDir ) ); vec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc ); outgoingLight = outgoingLight * ( 1.0 - material.clearcoat * Fcc ) + clearcoatSpecular * material.clearcoat; #endif #include #include #include #include #include #include }`,Nk=`#define TOON varying vec3 vViewPosition; #include #include #include #include #include #include #include #include #include #include #include #include void main() { #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include vViewPosition = - mvPosition.xyz; #include #include #include }`,Bk=`#define TOON uniform vec3 diffuse; uniform vec3 emissive; uniform float opacity; #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include void main() { #include vec4 diffuseColor = vec4( diffuse, opacity ); ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) ); vec3 totalEmissiveRadiance = emissive; #include #include #include #include #include #include #include #include #include #include #include #include #include vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance; #include #include #include #include #include #include }`,zk=`uniform float size; uniform float scale; #include #include #include #include #include #include void main() { #include #include #include #include #include gl_PointSize = size; #ifdef USE_SIZEATTENUATION bool isPerspective = isPerspectiveMatrix( projectionMatrix ); if ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z ); #endif #include #include #include #include }`,Uk=`uniform vec3 diffuse; uniform float opacity; #include #include #include #include #include #include #include void main() { #include vec3 outgoingLight = vec3( 0.0 ); vec4 diffuseColor = vec4( diffuse, opacity ); #include #include #include #include outgoingLight = diffuseColor.rgb; #include #include #include #include #include }`,Fk=`#include #include #include #include #include void main() { #include #include #include #include #include #include #include #include #include #include #include #include }`,Vk=`uniform vec3 color; uniform float opacity; #include #include #include #include #include #include #include void main() { gl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) ); #include #include #include }`,Hk=`uniform float rotation; uniform vec2 center; #include #include #include #include #include void main() { #include vec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 ); vec2 scale; scale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) ); scale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) ); #ifndef USE_SIZEATTENUATION bool isPerspective = isPerspectiveMatrix( projectionMatrix ); if ( isPerspective ) scale *= - mvPosition.z; #endif vec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale; vec2 rotatedPosition; rotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y; rotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y; mvPosition.xy += rotatedPosition; gl_Position = projectionMatrix * mvPosition; #include #include #include }`,Gk=`uniform vec3 diffuse; uniform float opacity; #include #include #include #include #include #include #include #include void main() { #include vec3 outgoingLight = vec3( 0.0 ); vec4 diffuseColor = vec4( diffuse, opacity ); #include #include #include #include outgoingLight = diffuseColor.rgb; #include #include #include #include }`,Gt={alphamap_fragment:gO,alphamap_pars_fragment:yO,alphatest_fragment:_O,alphatest_pars_fragment:xO,aomap_fragment:bO,aomap_pars_fragment:wO,begin_vertex:SO,beginnormal_vertex:MO,bsdfs:EO,bumpmap_pars_fragment:TO,clipping_planes_fragment:AO,clipping_planes_pars_fragment:CO,clipping_planes_pars_vertex:PO,clipping_planes_vertex:RO,color_fragment:LO,color_pars_fragment:DO,color_pars_vertex:IO,color_vertex:OO,common:kO,cube_uv_reflection_fragment:NO,defaultnormal_vertex:BO,displacementmap_pars_vertex:zO,displacementmap_vertex:UO,emissivemap_fragment:FO,emissivemap_pars_fragment:VO,encodings_fragment:HO,encodings_pars_fragment:GO,envmap_fragment:WO,envmap_common_pars_fragment:jO,envmap_pars_fragment:XO,envmap_pars_vertex:qO,envmap_physical_pars_fragment:r5,envmap_vertex:YO,fog_vertex:ZO,fog_pars_vertex:KO,fog_fragment:JO,fog_pars_fragment:QO,gradientmap_pars_fragment:$O,lightmap_fragment:e5,lightmap_pars_fragment:t5,lights_lambert_vertex:n5,lights_pars_begin:i5,lights_toon_fragment:s5,lights_toon_pars_fragment:o5,lights_phong_fragment:a5,lights_phong_pars_fragment:l5,lights_physical_fragment:c5,lights_physical_pars_fragment:u5,lights_fragment_begin:h5,lights_fragment_maps:d5,lights_fragment_end:p5,logdepthbuf_fragment:f5,logdepthbuf_pars_fragment:m5,logdepthbuf_pars_vertex:v5,logdepthbuf_vertex:g5,map_fragment:y5,map_pars_fragment:_5,map_particle_fragment:x5,map_particle_pars_fragment:b5,metalnessmap_fragment:w5,metalnessmap_pars_fragment:S5,morphcolor_vertex:M5,morphnormal_vertex:E5,morphtarget_pars_vertex:T5,morphtarget_vertex:A5,normal_fragment_begin:C5,normal_fragment_maps:P5,normal_pars_fragment:R5,normal_pars_vertex:L5,normal_vertex:D5,normalmap_pars_fragment:I5,clearcoat_normal_fragment_begin:O5,clearcoat_normal_fragment_maps:k5,clearcoat_pars_fragment:N5,output_fragment:B5,packing:z5,premultiplied_alpha_fragment:U5,project_vertex:F5,dithering_fragment:V5,dithering_pars_fragment:H5,roughnessmap_fragment:G5,roughnessmap_pars_fragment:W5,shadowmap_pars_fragment:j5,shadowmap_pars_vertex:X5,shadowmap_vertex:q5,shadowmask_pars_fragment:Y5,skinbase_vertex:Z5,skinning_pars_vertex:K5,skinning_vertex:J5,skinnormal_vertex:Q5,specularmap_fragment:$5,specularmap_pars_fragment:ek,tonemapping_fragment:tk,tonemapping_pars_fragment:nk,transmission_fragment:ik,transmission_pars_fragment:rk,uv_pars_fragment:sk,uv_pars_vertex:ok,uv_vertex:ak,uv2_pars_fragment:lk,uv2_pars_vertex:ck,uv2_vertex:uk,worldpos_vertex:hk,background_vert:dk,background_frag:pk,cube_vert:fk,cube_frag:mk,depth_vert:vk,depth_frag:gk,distanceRGBA_vert:yk,distanceRGBA_frag:_k,equirect_vert:xk,equirect_frag:bk,linedashed_vert:wk,linedashed_frag:Sk,meshbasic_vert:Mk,meshbasic_frag:Ek,meshlambert_vert:Tk,meshlambert_frag:Ak,meshmatcap_vert:Ck,meshmatcap_frag:Pk,meshnormal_vert:Rk,meshnormal_frag:Lk,meshphong_vert:Dk,meshphong_frag:Ik,meshphysical_vert:Ok,meshphysical_frag:kk,meshtoon_vert:Nk,meshtoon_frag:Bk,points_vert:zk,points_frag:Uk,shadow_vert:Fk,shadow_frag:Vk,sprite_vert:Hk,sprite_frag:Gk},He={common:{diffuse:{value:new Pe(16777215)},opacity:{value:1},map:{value:null},uvTransform:{value:new Gn},uv2Transform:{value:new Gn},alphaMap:{value:null},alphaTest:{value:0}},specularmap:{specularMap:{value:null}},envmap:{envMap:{value:null},flipEnvMap:{value:-1},reflectivity:{value:1},ior:{value:1.5},refractionRatio:{value:.98}},aomap:{aoMap:{value:null},aoMapIntensity:{value:1}},lightmap:{lightMap:{value:null},lightMapIntensity:{value:1}},emissivemap:{emissiveMap:{value:null}},bumpmap:{bumpMap:{value:null},bumpScale:{value:1}},normalmap:{normalMap:{value:null},normalScale:{value:new ae(1,1)}},displacementmap:{displacementMap:{value:null},displacementScale:{value:1},displacementBias:{value:0}},roughnessmap:{roughnessMap:{value:null}},metalnessmap:{metalnessMap:{value:null}},gradientmap:{gradientMap:{value:null}},fog:{fogDensity:{value:25e-5},fogNear:{value:1},fogFar:{value:2e3},fogColor:{value:new Pe(16777215)}},lights:{ambientLightColor:{value:[]},lightProbe:{value:[]},directionalLights:{value:[],properties:{direction:{},color:{}}},directionalLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},directionalShadowMap:{value:[]},directionalShadowMatrix:{value:[]},spotLights:{value:[],properties:{color:{},position:{},direction:{},distance:{},coneCos:{},penumbraCos:{},decay:{}}},spotLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},spotShadowMap:{value:[]},spotShadowMatrix:{value:[]},pointLights:{value:[],properties:{color:{},position:{},decay:{},distance:{}}},pointLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{},shadowCameraNear:{},shadowCameraFar:{}}},pointShadowMap:{value:[]},pointShadowMatrix:{value:[]},hemisphereLights:{value:[],properties:{direction:{},skyColor:{},groundColor:{}}},rectAreaLights:{value:[],properties:{color:{},position:{},width:{},height:{}}},ltc_1:{value:null},ltc_2:{value:null}},points:{diffuse:{value:new Pe(16777215)},opacity:{value:1},size:{value:1},scale:{value:1},map:{value:null},alphaMap:{value:null},alphaTest:{value:0},uvTransform:{value:new Gn}},sprite:{diffuse:{value:new Pe(16777215)},opacity:{value:1},center:{value:new ae(.5,.5)},rotation:{value:0},map:{value:null},alphaMap:{value:null},alphaTest:{value:0},uvTransform:{value:new Gn}}},Ms={basic:{uniforms:Pi([He.common,He.specularmap,He.envmap,He.aomap,He.lightmap,He.fog]),vertexShader:Gt.meshbasic_vert,fragmentShader:Gt.meshbasic_frag},lambert:{uniforms:Pi([He.common,He.specularmap,He.envmap,He.aomap,He.lightmap,He.emissivemap,He.fog,He.lights,{emissive:{value:new Pe(0)}}]),vertexShader:Gt.meshlambert_vert,fragmentShader:Gt.meshlambert_frag},phong:{uniforms:Pi([He.common,He.specularmap,He.envmap,He.aomap,He.lightmap,He.emissivemap,He.bumpmap,He.normalmap,He.displacementmap,He.fog,He.lights,{emissive:{value:new Pe(0)},specular:{value:new Pe(1118481)},shininess:{value:30}}]),vertexShader:Gt.meshphong_vert,fragmentShader:Gt.meshphong_frag},standard:{uniforms:Pi([He.common,He.envmap,He.aomap,He.lightmap,He.emissivemap,He.bumpmap,He.normalmap,He.displacementmap,He.roughnessmap,He.metalnessmap,He.fog,He.lights,{emissive:{value:new Pe(0)},roughness:{value:1},metalness:{value:0},envMapIntensity:{value:1}}]),vertexShader:Gt.meshphysical_vert,fragmentShader:Gt.meshphysical_frag},toon:{uniforms:Pi([He.common,He.aomap,He.lightmap,He.emissivemap,He.bumpmap,He.normalmap,He.displacementmap,He.gradientmap,He.fog,He.lights,{emissive:{value:new Pe(0)}}]),vertexShader:Gt.meshtoon_vert,fragmentShader:Gt.meshtoon_frag},matcap:{uniforms:Pi([He.common,He.bumpmap,He.normalmap,He.displacementmap,He.fog,{matcap:{value:null}}]),vertexShader:Gt.meshmatcap_vert,fragmentShader:Gt.meshmatcap_frag},points:{uniforms:Pi([He.points,He.fog]),vertexShader:Gt.points_vert,fragmentShader:Gt.points_frag},dashed:{uniforms:Pi([He.common,He.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:Gt.linedashed_vert,fragmentShader:Gt.linedashed_frag},depth:{uniforms:Pi([He.common,He.displacementmap]),vertexShader:Gt.depth_vert,fragmentShader:Gt.depth_frag},normal:{uniforms:Pi([He.common,He.bumpmap,He.normalmap,He.displacementmap,{opacity:{value:1}}]),vertexShader:Gt.meshnormal_vert,fragmentShader:Gt.meshnormal_frag},sprite:{uniforms:Pi([He.sprite,He.fog]),vertexShader:Gt.sprite_vert,fragmentShader:Gt.sprite_frag},background:{uniforms:{uvTransform:{value:new Gn},t2D:{value:null}},vertexShader:Gt.background_vert,fragmentShader:Gt.background_frag},cube:{uniforms:Pi([He.envmap,{opacity:{value:1}}]),vertexShader:Gt.cube_vert,fragmentShader:Gt.cube_frag},equirect:{uniforms:{tEquirect:{value:null}},vertexShader:Gt.equirect_vert,fragmentShader:Gt.equirect_frag},distanceRGBA:{uniforms:Pi([He.common,He.displacementmap,{referencePosition:{value:new z},nearDistance:{value:1},farDistance:{value:1e3}}]),vertexShader:Gt.distanceRGBA_vert,fragmentShader:Gt.distanceRGBA_frag},shadow:{uniforms:Pi([He.lights,He.fog,{color:{value:new Pe(0)},opacity:{value:1}}]),vertexShader:Gt.shadow_vert,fragmentShader:Gt.shadow_frag}};Ms.physical={uniforms:Pi([Ms.standard.uniforms,{clearcoat:{value:0},clearcoatMap:{value:null},clearcoatRoughness:{value:0},clearcoatRoughnessMap:{value:null},clearcoatNormalScale:{value:new ae(1,1)},clearcoatNormalMap:{value:null},sheen:{value:0},sheenColor:{value:new Pe(0)},sheenColorMap:{value:null},sheenRoughness:{value:1},sheenRoughnessMap:{value:null},transmission:{value:0},transmissionMap:{value:null},transmissionSamplerSize:{value:new ae},transmissionSamplerMap:{value:null},thickness:{value:0},thicknessMap:{value:null},attenuationDistance:{value:0},attenuationColor:{value:new Pe(0)},specularIntensity:{value:1},specularIntensityMap:{value:null},specularColor:{value:new Pe(1,1,1)},specularColorMap:{value:null}}]),vertexShader:Gt.meshphysical_vert,fragmentShader:Gt.meshphysical_frag};function Wk(i,e,t,n,r,s){const o=new Pe(0);let l=r===!0?0:1,h,d,f=null,g=0,y=null;function _(S,b){let T=!1,E=b.isScene===!0?b.background:null;E&&E.isTexture&&(E=e.get(E));const C=i.xr,A=C.getSession&&C.getSession();A&&A.environmentBlendMode==="additive"&&(E=null),E===null?w(o,l):E&&E.isColor&&(w(E,1),T=!0),(i.autoClear||T)&&i.clear(i.autoClearColor,i.autoClearDepth,i.autoClearStencil),E&&(E.isCubeTexture||E.mapping===Nm)?(d===void 0&&(d=new In(new bl(1,1,1),new kt({name:"BackgroundCubeMaterial",uniforms:Wc(Ms.cube.uniforms),vertexShader:Ms.cube.vertexShader,fragmentShader:Ms.cube.fragmentShader,side:xr,depthTest:!1,depthWrite:!1,fog:!1})),d.geometry.deleteAttribute("normal"),d.geometry.deleteAttribute("uv"),d.onBeforeRender=function(D,I,F){this.matrixWorld.copyPosition(F.matrixWorld)},Object.defineProperty(d.material,"envMap",{get:function(){return this.uniforms.envMap.value}}),n.update(d)),d.material.uniforms.envMap.value=E,d.material.uniforms.flipEnvMap.value=E.isCubeTexture&&E.isRenderTargetTexture===!1?-1:1,(f!==E||g!==E.version||y!==i.toneMapping)&&(d.material.needsUpdate=!0,f=E,g=E.version,y=i.toneMapping),d.layers.enableAll(),S.unshift(d,d.geometry,d.material,0,0,null)):E&&E.isTexture&&(h===void 0&&(h=new In(new ld(2,2),new kt({name:"BackgroundMaterial",uniforms:Wc(Ms.background.uniforms),vertexShader:Ms.background.vertexShader,fragmentShader:Ms.background.fragmentShader,side:Oh,depthTest:!1,depthWrite:!1,fog:!1})),h.geometry.deleteAttribute("normal"),Object.defineProperty(h.material,"map",{get:function(){return this.uniforms.t2D.value}}),n.update(h)),h.material.uniforms.t2D.value=E,E.matrixAutoUpdate===!0&&E.updateMatrix(),h.material.uniforms.uvTransform.value.copy(E.matrix),(f!==E||g!==E.version||y!==i.toneMapping)&&(h.material.needsUpdate=!0,f=E,g=E.version,y=i.toneMapping),h.layers.enableAll(),S.unshift(h,h.geometry,h.material,0,0,null))}function w(S,b){t.buffers.color.setClear(S.r,S.g,S.b,b,s)}return{getClearColor:function(){return o},setClearColor:function(S,b=1){o.set(S),l=b,w(o,l)},getClearAlpha:function(){return l},setClearAlpha:function(S){l=S,w(o,l)},render:_}}function jk(i,e,t,n){const r=i.getParameter(34921),s=n.isWebGL2?null:e.get("OES_vertex_array_object"),o=n.isWebGL2||s!==null,l={},h=b(null);let d=h,f=!1;function g(Z,$,K,pe,re){let se=!1;if(o){const ue=S(pe,K,$);d!==ue&&(d=ue,_(d.object)),se=T(Z,pe,K,re),se&&E(Z,pe,K,re)}else{const ue=$.wireframe===!0;(d.geometry!==pe.id||d.program!==K.id||d.wireframe!==ue)&&(d.geometry=pe.id,d.program=K.id,d.wireframe=ue,se=!0)}re!==null&&t.update(re,34963),(se||f)&&(f=!1,P(Z,$,K,pe),re!==null&&i.bindBuffer(34963,t.get(re).buffer))}function y(){return n.isWebGL2?i.createVertexArray():s.createVertexArrayOES()}function _(Z){return n.isWebGL2?i.bindVertexArray(Z):s.bindVertexArrayOES(Z)}function w(Z){return n.isWebGL2?i.deleteVertexArray(Z):s.deleteVertexArrayOES(Z)}function S(Z,$,K){const pe=K.wireframe===!0;let re=l[Z.id];re===void 0&&(re={},l[Z.id]=re);let se=re[$.id];se===void 0&&(se={},re[$.id]=se);let ue=se[pe];return ue===void 0&&(ue=b(y()),se[pe]=ue),ue}function b(Z){const $=[],K=[],pe=[];for(let re=0;re=0){const qe=re[fe];let Ke=se[fe];if(Ke===void 0&&(fe==="instanceMatrix"&&Z.instanceMatrix&&(Ke=Z.instanceMatrix),fe==="instanceColor"&&Z.instanceColor&&(Ke=Z.instanceColor)),qe===void 0||qe.attribute!==Ke||Ke&&qe.data!==Ke.data)return!0;ue++}return d.attributesNum!==ue||d.index!==pe}function E(Z,$,K,pe){const re={},se=$.attributes;let ue=0;const Te=K.getAttributes();for(const fe in Te)if(Te[fe].location>=0){let qe=se[fe];qe===void 0&&(fe==="instanceMatrix"&&Z.instanceMatrix&&(qe=Z.instanceMatrix),fe==="instanceColor"&&Z.instanceColor&&(qe=Z.instanceColor));const Ke={};Ke.attribute=qe,qe&&qe.data&&(Ke.data=qe.data),re[fe]=Ke,ue++}d.attributes=re,d.attributesNum=ue,d.index=pe}function C(){const Z=d.newAttributes;for(let $=0,K=Z.length;$=0){let Ce=re[Te];if(Ce===void 0&&(Te==="instanceMatrix"&&Z.instanceMatrix&&(Ce=Z.instanceMatrix),Te==="instanceColor"&&Z.instanceColor&&(Ce=Z.instanceColor)),Ce!==void 0){const qe=Ce.normalized,Ke=Ce.itemSize,me=t.get(Ce);if(me===void 0)continue;const Ut=me.buffer,nt=me.type,it=me.bytesPerElement;if(Ce.isInterleavedBufferAttribute){const Le=Ce.data,vt=Le.stride,ve=Ce.offset;if(Le.isInstancedInterleavedBuffer){for(let xe=0;xe0&&i.getShaderPrecisionFormat(35632,36338).precision>0)return"highp";F="mediump"}return F==="mediump"&&i.getShaderPrecisionFormat(35633,36337).precision>0&&i.getShaderPrecisionFormat(35632,36337).precision>0?"mediump":"lowp"}const o=typeof WebGL2RenderingContext<"u"&&i instanceof WebGL2RenderingContext||typeof WebGL2ComputeRenderingContext<"u"&&i instanceof WebGL2ComputeRenderingContext;let l=t.precision!==void 0?t.precision:"highp";const h=s(l);h!==l&&(console.warn("THREE.WebGLRenderer:",l,"not supported, using",h,"instead."),l=h);const d=o||e.has("WEBGL_draw_buffers"),f=t.logarithmicDepthBuffer===!0,g=i.getParameter(34930),y=i.getParameter(35660),_=i.getParameter(3379),w=i.getParameter(34076),S=i.getParameter(34921),b=i.getParameter(36347),T=i.getParameter(36348),E=i.getParameter(36349),C=y>0,A=o||e.has("OES_texture_float"),D=C&&A,I=o?i.getParameter(36183):0;return{isWebGL2:o,drawBuffers:d,getMaxAnisotropy:r,getMaxPrecision:s,precision:l,logarithmicDepthBuffer:f,maxTextures:g,maxVertexTextures:y,maxTextureSize:_,maxCubemapSize:w,maxAttributes:S,maxVertexUniforms:b,maxVaryings:T,maxFragmentUniforms:E,vertexTextures:C,floatFragmentTextures:A,floatVertexTextures:D,maxSamples:I}}function Yk(i){const e=this;let t=null,n=0,r=!1,s=!1;const o=new mo,l=new Gn,h={value:null,needsUpdate:!1};this.uniform=h,this.numPlanes=0,this.numIntersection=0,this.init=function(g,y,_){const w=g.length!==0||y||n!==0||r;return r=y,t=f(g,_,0),n=g.length,w},this.beginShadows=function(){s=!0,f(null)},this.endShadows=function(){s=!1,d()},this.setState=function(g,y,_){const w=g.clippingPlanes,S=g.clipIntersection,b=g.clipShadows,T=i.get(g);if(!r||w===null||w.length===0||s&&!b)s?f(null):d();else{const E=s?0:n,C=E*4;let A=T.clippingState||null;h.value=A,A=f(w,y,C,_);for(let D=0;D!==C;++D)A[D]=t[D];T.clippingState=A,this.numIntersection=S?this.numPlanes:0,this.numPlanes+=E}};function d(){h.value!==t&&(h.value=t,h.needsUpdate=n>0),e.numPlanes=n,e.numIntersection=0}function f(g,y,_,w){const S=g!==null?g.length:0;let b=null;if(S!==0){if(b=h.value,w!==!0||b===null){const T=_+S*4,E=y.matrixWorldInverse;l.getNormalMatrix(E),(b===null||b.length0){const d=new XE(h.height/2);return d.fromEquirectangularTexture(i,o),e.set(o,d),o.addEventListener("dispose",r),t(d.texture,o.mapping)}else return null}}return o}function r(o){const l=o.target;l.removeEventListener("dispose",r);const h=e.get(l);h!==void 0&&(e.delete(l),h.dispose())}function s(){e=new WeakMap}return{get:n,dispose:s}}class ou extends Um{constructor(e=-1,t=1,n=1,r=-1,s=.1,o=2e3){super(),this.type="OrthographicCamera",this.zoom=1,this.view=null,this.left=e,this.right=t,this.top=n,this.bottom=r,this.near=s,this.far=o,this.updateProjectionMatrix()}copy(e,t){return super.copy(e,t),this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.near=e.near,this.far=e.far,this.zoom=e.zoom,this.view=e.view===null?null:Object.assign({},e.view),this}setViewOffset(e,t,n,r,s,o){this.view===null&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=e,this.view.fullHeight=t,this.view.offsetX=n,this.view.offsetY=r,this.view.width=s,this.view.height=o,this.updateProjectionMatrix()}clearViewOffset(){this.view!==null&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){const e=(this.right-this.left)/(2*this.zoom),t=(this.top-this.bottom)/(2*this.zoom),n=(this.right+this.left)/2,r=(this.top+this.bottom)/2;let s=n-e,o=n+e,l=r+t,h=r-t;if(this.view!==null&&this.view.enabled){const d=(this.right-this.left)/this.view.fullWidth/this.zoom,f=(this.top-this.bottom)/this.view.fullHeight/this.zoom;s+=d*this.view.offsetX,o=s+d*this.view.width,l-=f*this.view.offsetY,h=l-f*this.view.height}this.projectionMatrix.makeOrthographic(s,o,l,h,this.near,this.far),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(e){const t=super.toJSON(e);return t.object.zoom=this.zoom,t.object.left=this.left,t.object.right=this.right,t.object.top=this.top,t.object.bottom=this.bottom,t.object.near=this.near,t.object.far=this.far,this.view!==null&&(t.object.view=Object.assign({},this.view)),t}}ou.prototype.isOrthographicCamera=!0;const kc=4,W1=[.125,.215,.35,.446,.526,.582],sl=20,hy=new ou,j1=new Pe;let dy=null;const nl=(1+Math.sqrt(5))/2,bc=1/nl,X1=[new z(1,1,1),new z(-1,1,1),new z(1,1,-1),new z(-1,1,-1),new z(0,nl,bc),new z(0,nl,-bc),new z(bc,0,nl),new z(-bc,0,nl),new z(nl,bc,0),new z(-nl,bc,0)];class q1{constructor(e){this._renderer=e,this._pingPongRenderTarget=null,this._lodMax=0,this._cubeSize=0,this._lodPlanes=[],this._sizeLods=[],this._sigmas=[],this._blurMaterial=null,this._cubemapMaterial=null,this._equirectMaterial=null,this._compileMaterial(this._blurMaterial)}fromScene(e,t=0,n=.1,r=100){dy=this._renderer.getRenderTarget(),this._setSize(256);const s=this._allocateTargets();return s.depthBuffer=!0,this._sceneToCubeUV(e,n,r,s),t>0&&this._blur(s,0,0,t),this._applyPMREM(s),this._cleanup(s),s}fromEquirectangular(e,t=null){return this._fromTexture(e,t)}fromCubemap(e,t=null){return this._fromTexture(e,t)}compileCubemapShader(){this._cubemapMaterial===null&&(this._cubemapMaterial=K1(),this._compileMaterial(this._cubemapMaterial))}compileEquirectangularShader(){this._equirectMaterial===null&&(this._equirectMaterial=Z1(),this._compileMaterial(this._equirectMaterial))}dispose(){this._dispose(),this._cubemapMaterial!==null&&this._cubemapMaterial.dispose(),this._equirectMaterial!==null&&this._equirectMaterial.dispose()}_setSize(e){this._lodMax=Math.floor(Math.log2(e)),this._cubeSize=Math.pow(2,this._lodMax)}_dispose(){this._blurMaterial!==null&&this._blurMaterial.dispose(),this._pingPongRenderTarget!==null&&this._pingPongRenderTarget.dispose();for(let e=0;e2?C:0,C,C),f.setRenderTarget(r),S&&f.render(w,l),f.render(e,l)}w.geometry.dispose(),w.material.dispose(),f.toneMapping=y,f.autoClear=g,e.background=b}_textureToCubeUV(e,t){const n=this._renderer,r=e.mapping===Vc||e.mapping===Hc;r?(this._cubemapMaterial===null&&(this._cubemapMaterial=K1()),this._cubemapMaterial.uniforms.flipEnvMap.value=e.isRenderTargetTexture===!1?-1:1):this._equirectMaterial===null&&(this._equirectMaterial=Z1());const s=r?this._cubemapMaterial:this._equirectMaterial,o=new In(this._lodPlanes[0],s),l=s.uniforms;l.envMap.value=e;const h=this._cubeSize;sf(t,0,0,3*h,2*h),n.setRenderTarget(t),n.render(o,hy)}_applyPMREM(e){const t=this._renderer,n=t.autoClear;t.autoClear=!1;for(let r=1;rsl&&console.warn(`sigmaRadians, ${s}, is too large and will clip, as it requested ${b} samples when the maximum is set to ${sl}`);const T=[];let E=0;for(let F=0;FC-kc?r-C+kc:0),I=4*(this._cubeSize-A);sf(t,D,I,3*A,2*A),h.setRenderTarget(t),h.render(g,hy)}}function Kk(i){const e=[],t=[],n=[];let r=i;const s=i-kc+1+W1.length;for(let o=0;oi-kc?h=W1[o-i+kc-1]:o===0&&(h=0),n.push(h);const d=1/(l-2),f=-d,g=1+d,y=[f,f,g,f,g,g,f,f,g,g,f,g],_=6,w=6,S=3,b=2,T=1,E=new Float32Array(S*w*_),C=new Float32Array(b*w*_),A=new Float32Array(T*w*_);for(let I=0;I<_;I++){const F=I%3*2/3-1,P=I>2?0:-1,k=[F,P,0,F+2/3,P,0,F+2/3,P+1,0,F,P,0,F+2/3,P+1,0,F,P+1,0];E.set(k,S*w*I),C.set(y,b*w*I);const j=[I,I,I,I,I,I];A.set(j,T*w*I)}const D=new zt;D.setAttribute("position",new Wn(E,S)),D.setAttribute("uv",new Wn(C,b)),D.setAttribute("faceIndex",new Wn(A,T)),e.push(D),r>kc&&r--}return{lodPlanes:e,sizeLods:t,sigmas:n}}function Y1(i,e,t){const n=new Yt(i,e,t);return n.texture.mapping=Nm,n.texture.name="PMREM.cubeUv",n.scissorTest=!0,n}function sf(i,e,t,n,r){i.viewport.set(e,t,n,r),i.scissor.set(e,t,n,r)}function Jk(i,e,t){const n=new Float32Array(sl),r=new z(0,1,0);return new kt({name:"SphericalGaussianBlur",defines:{n:sl,CUBEUV_TEXEL_WIDTH:1/e,CUBEUV_TEXEL_HEIGHT:1/t,CUBEUV_MAX_MIP:`${i}.0`},uniforms:{envMap:{value:null},samples:{value:1},weights:{value:n},latitudinal:{value:!1},dTheta:{value:0},mipInt:{value:0},poleAxis:{value:r}},vertexShader:ax(),fragmentShader:` precision mediump float; precision mediump int; varying vec3 vOutputDirection; uniform sampler2D envMap; uniform int samples; uniform float weights[ n ]; uniform bool latitudinal; uniform float dTheta; uniform float mipInt; uniform vec3 poleAxis; #define ENVMAP_TYPE_CUBE_UV #include vec3 getSample( float theta, vec3 axis ) { float cosTheta = cos( theta ); // Rodrigues' axis-angle rotation vec3 sampleDirection = vOutputDirection * cosTheta + cross( axis, vOutputDirection ) * sin( theta ) + axis * dot( axis, vOutputDirection ) * ( 1.0 - cosTheta ); return bilinearCubeUV( envMap, sampleDirection, mipInt ); } void main() { vec3 axis = latitudinal ? poleAxis : cross( poleAxis, vOutputDirection ); if ( all( equal( axis, vec3( 0.0 ) ) ) ) { axis = vec3( vOutputDirection.z, 0.0, - vOutputDirection.x ); } axis = normalize( axis ); gl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 ); gl_FragColor.rgb += weights[ 0 ] * getSample( 0.0, axis ); for ( int i = 1; i < n; i++ ) { if ( i >= samples ) { break; } float theta = dTheta * float( i ); gl_FragColor.rgb += weights[ i ] * getSample( -1.0 * theta, axis ); gl_FragColor.rgb += weights[ i ] * getSample( theta, axis ); } } `,blending:rn,depthTest:!1,depthWrite:!1})}function Z1(){return new kt({name:"EquirectangularToCubeUV",uniforms:{envMap:{value:null}},vertexShader:ax(),fragmentShader:` precision mediump float; precision mediump int; varying vec3 vOutputDirection; uniform sampler2D envMap; #include void main() { vec3 outputDirection = normalize( vOutputDirection ); vec2 uv = equirectUv( outputDirection ); gl_FragColor = vec4( texture2D ( envMap, uv ).rgb, 1.0 ); } `,blending:rn,depthTest:!1,depthWrite:!1})}function K1(){return new kt({name:"CubemapToCubeUV",uniforms:{envMap:{value:null},flipEnvMap:{value:-1}},vertexShader:ax(),fragmentShader:` precision mediump float; precision mediump int; uniform float flipEnvMap; varying vec3 vOutputDirection; uniform samplerCube envMap; void main() { gl_FragColor = textureCube( envMap, vec3( flipEnvMap * vOutputDirection.x, vOutputDirection.yz ) ); } `,blending:rn,depthTest:!1,depthWrite:!1})}function ax(){return` precision mediump float; precision mediump int; attribute float faceIndex; varying vec3 vOutputDirection; // RH coordinate system; PMREM face-indexing convention vec3 getDirection( vec2 uv, float face ) { uv = 2.0 * uv - 1.0; vec3 direction = vec3( uv, 1.0 ); if ( face == 0.0 ) { direction = direction.zyx; // ( 1, v, u ) pos x } else if ( face == 1.0 ) { direction = direction.xzy; direction.xz *= -1.0; // ( -u, 1, -v ) pos y } else if ( face == 2.0 ) { direction.x *= -1.0; // ( -u, v, 1 ) pos z } else if ( face == 3.0 ) { direction = direction.zyx; direction.xz *= -1.0; // ( -1, v, -u ) neg x } else if ( face == 4.0 ) { direction = direction.xzy; direction.xy *= -1.0; // ( -u, -1, v ) neg y } else if ( face == 5.0 ) { direction.z *= -1.0; // ( u, v, -1 ) neg z } return direction; } void main() { vOutputDirection = getDirection( uv, faceIndex ); gl_Position = vec4( position, 1.0 ); } `}function Qk(i){let e=new WeakMap,t=null;function n(l){if(l&&l.isTexture){const h=l.mapping,d=h===kh||h===Gy,f=h===Vc||h===Hc;if(d||f)if(l.isRenderTargetTexture&&l.needsPMREMUpdate===!0){l.needsPMREMUpdate=!1;let g=e.get(l);return t===null&&(t=new q1(i)),g=d?t.fromEquirectangular(l,g):t.fromCubemap(l,g),e.set(l,g),g.texture}else{if(e.has(l))return e.get(l).texture;{const g=l.image;if(d&&g&&g.height>0||f&&g&&r(g)){t===null&&(t=new q1(i));const y=d?t.fromEquirectangular(l):t.fromCubemap(l);return e.set(l,y),l.addEventListener("dispose",s),y.texture}else return null}}}return l}function r(l){let h=0;const d=6;for(let f=0;fe.maxTextureSize&&(ne=Math.ceil(G/e.maxTextureSize),G=e.maxTextureSize);const ce=new Float32Array(G*ne*4*S),Z=new zm(ce,G,ne,S);Z.type=is,Z.needsUpdate=!0;const $=j*4;for(let K=0;K0)return i;const r=e*t;let s=J1[r];if(s===void 0&&(s=new Float32Array(r),J1[r]=s),e!==0){n.toArray(s,0);for(let o=1,l=0;o!==e;++o)l+=t,i[o].toArray(s,l)}return s}function Xi(i,e){if(i.length!==e.length)return!1;for(let t=0,n=i.length;t/gm;function Zy(i){return i.replace(rB,sB)}function sB(i,e){const t=Gt[e];if(t===void 0)throw new Error("Can not resolve #include <"+e+">");return Zy(t)}const oB=/#pragma unroll_loop[\s]+?for \( int i \= (\d+)\; i < (\d+)\; i \+\+ \) \{([\s\S]+?)(?=\})\}/g,aB=/#pragma unroll_loop_start\s+for\s*\(\s*int\s+i\s*=\s*(\d+)\s*;\s*i\s*<\s*(\d+)\s*;\s*i\s*\+\+\s*\)\s*{([\s\S]+?)}\s+#pragma unroll_loop_end/g;function aS(i){return i.replace(aB,$E).replace(oB,lB)}function lB(i,e,t,n){return console.warn("WebGLProgram: #pragma unroll_loop shader syntax is deprecated. Please use #pragma unroll_loop_start syntax instead."),$E(i,e,t,n)}function $E(i,e,t,n){let r="";for(let s=parseInt(e);s0&&(b+=` `),T=[_,w].filter(ph).join(` `),T.length>0&&(T+=` `)):(b=[lS(t),"#define SHADER_NAME "+t.shaderName,w,t.instancing?"#define USE_INSTANCING":"",t.instancingColor?"#define USE_INSTANCING_COLOR":"",t.supportsVertexTextures?"#define VERTEX_TEXTURES":"",t.useFog&&t.fog?"#define USE_FOG":"",t.useFog&&t.fogExp2?"#define FOG_EXP2":"",t.map?"#define USE_MAP":"",t.envMap?"#define USE_ENVMAP":"",t.envMap?"#define "+f:"",t.lightMap?"#define USE_LIGHTMAP":"",t.aoMap?"#define USE_AOMAP":"",t.emissiveMap?"#define USE_EMISSIVEMAP":"",t.bumpMap?"#define USE_BUMPMAP":"",t.normalMap?"#define USE_NORMALMAP":"",t.normalMap&&t.objectSpaceNormalMap?"#define OBJECTSPACE_NORMALMAP":"",t.normalMap&&t.tangentSpaceNormalMap?"#define TANGENTSPACE_NORMALMAP":"",t.clearcoatMap?"#define USE_CLEARCOATMAP":"",t.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",t.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",t.displacementMap&&t.supportsVertexTextures?"#define USE_DISPLACEMENTMAP":"",t.specularMap?"#define USE_SPECULARMAP":"",t.specularIntensityMap?"#define USE_SPECULARINTENSITYMAP":"",t.specularColorMap?"#define USE_SPECULARCOLORMAP":"",t.roughnessMap?"#define USE_ROUGHNESSMAP":"",t.metalnessMap?"#define USE_METALNESSMAP":"",t.alphaMap?"#define USE_ALPHAMAP":"",t.transmission?"#define USE_TRANSMISSION":"",t.transmissionMap?"#define USE_TRANSMISSIONMAP":"",t.thicknessMap?"#define USE_THICKNESSMAP":"",t.sheenColorMap?"#define USE_SHEENCOLORMAP":"",t.sheenRoughnessMap?"#define USE_SHEENROUGHNESSMAP":"",t.vertexTangents?"#define USE_TANGENT":"",t.vertexColors?"#define USE_COLOR":"",t.vertexAlphas?"#define USE_COLOR_ALPHA":"",t.vertexUvs?"#define USE_UV":"",t.uvsVertexOnly?"#define UVS_VERTEX_ONLY":"",t.flatShading?"#define FLAT_SHADED":"",t.skinning?"#define USE_SKINNING":"",t.morphTargets?"#define USE_MORPHTARGETS":"",t.morphNormals&&t.flatShading===!1?"#define USE_MORPHNORMALS":"",t.morphColors&&t.isWebGL2?"#define USE_MORPHCOLORS":"",t.morphTargetsCount>0&&t.isWebGL2?"#define MORPHTARGETS_TEXTURE":"",t.morphTargetsCount>0&&t.isWebGL2?"#define MORPHTARGETS_TEXTURE_STRIDE "+t.morphTextureStride:"",t.morphTargetsCount>0&&t.isWebGL2?"#define MORPHTARGETS_COUNT "+t.morphTargetsCount:"",t.doubleSided?"#define DOUBLE_SIDED":"",t.flipSided?"#define FLIP_SIDED":"",t.shadowMapEnabled?"#define USE_SHADOWMAP":"",t.shadowMapEnabled?"#define "+h:"",t.sizeAttenuation?"#define USE_SIZEATTENUATION":"",t.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",t.logarithmicDepthBuffer&&t.rendererExtensionFragDepth?"#define USE_LOGDEPTHBUF_EXT":"","uniform mat4 modelMatrix;","uniform mat4 modelViewMatrix;","uniform mat4 projectionMatrix;","uniform mat4 viewMatrix;","uniform mat3 normalMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;","#ifdef USE_INSTANCING"," attribute mat4 instanceMatrix;","#endif","#ifdef USE_INSTANCING_COLOR"," attribute vec3 instanceColor;","#endif","attribute vec3 position;","attribute vec3 normal;","attribute vec2 uv;","#ifdef USE_TANGENT"," attribute vec4 tangent;","#endif","#if defined( USE_COLOR_ALPHA )"," attribute vec4 color;","#elif defined( USE_COLOR )"," attribute vec3 color;","#endif","#if ( defined( USE_MORPHTARGETS ) && ! defined( MORPHTARGETS_TEXTURE ) )"," attribute vec3 morphTarget0;"," attribute vec3 morphTarget1;"," attribute vec3 morphTarget2;"," attribute vec3 morphTarget3;"," #ifdef USE_MORPHNORMALS"," attribute vec3 morphNormal0;"," attribute vec3 morphNormal1;"," attribute vec3 morphNormal2;"," attribute vec3 morphNormal3;"," #else"," attribute vec3 morphTarget4;"," attribute vec3 morphTarget5;"," attribute vec3 morphTarget6;"," attribute vec3 morphTarget7;"," #endif","#endif","#ifdef USE_SKINNING"," attribute vec4 skinIndex;"," attribute vec4 skinWeight;","#endif",` `].filter(ph).join(` `),T=[_,lS(t),"#define SHADER_NAME "+t.shaderName,w,t.useFog&&t.fog?"#define USE_FOG":"",t.useFog&&t.fogExp2?"#define FOG_EXP2":"",t.map?"#define USE_MAP":"",t.matcap?"#define USE_MATCAP":"",t.envMap?"#define USE_ENVMAP":"",t.envMap?"#define "+d:"",t.envMap?"#define "+f:"",t.envMap?"#define "+g:"",y?"#define CUBEUV_TEXEL_WIDTH "+y.texelWidth:"",y?"#define CUBEUV_TEXEL_HEIGHT "+y.texelHeight:"",y?"#define CUBEUV_MAX_MIP "+y.maxMip+".0":"",t.lightMap?"#define USE_LIGHTMAP":"",t.aoMap?"#define USE_AOMAP":"",t.emissiveMap?"#define USE_EMISSIVEMAP":"",t.bumpMap?"#define USE_BUMPMAP":"",t.normalMap?"#define USE_NORMALMAP":"",t.normalMap&&t.objectSpaceNormalMap?"#define OBJECTSPACE_NORMALMAP":"",t.normalMap&&t.tangentSpaceNormalMap?"#define TANGENTSPACE_NORMALMAP":"",t.clearcoat?"#define USE_CLEARCOAT":"",t.clearcoatMap?"#define USE_CLEARCOATMAP":"",t.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",t.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",t.specularMap?"#define USE_SPECULARMAP":"",t.specularIntensityMap?"#define USE_SPECULARINTENSITYMAP":"",t.specularColorMap?"#define USE_SPECULARCOLORMAP":"",t.roughnessMap?"#define USE_ROUGHNESSMAP":"",t.metalnessMap?"#define USE_METALNESSMAP":"",t.alphaMap?"#define USE_ALPHAMAP":"",t.alphaTest?"#define USE_ALPHATEST":"",t.sheen?"#define USE_SHEEN":"",t.sheenColorMap?"#define USE_SHEENCOLORMAP":"",t.sheenRoughnessMap?"#define USE_SHEENROUGHNESSMAP":"",t.transmission?"#define USE_TRANSMISSION":"",t.transmissionMap?"#define USE_TRANSMISSIONMAP":"",t.thicknessMap?"#define USE_THICKNESSMAP":"",t.decodeVideoTexture?"#define DECODE_VIDEO_TEXTURE":"",t.vertexTangents?"#define USE_TANGENT":"",t.vertexColors||t.instancingColor?"#define USE_COLOR":"",t.vertexAlphas?"#define USE_COLOR_ALPHA":"",t.vertexUvs?"#define USE_UV":"",t.uvsVertexOnly?"#define UVS_VERTEX_ONLY":"",t.gradientMap?"#define USE_GRADIENTMAP":"",t.flatShading?"#define FLAT_SHADED":"",t.doubleSided?"#define DOUBLE_SIDED":"",t.flipSided?"#define FLIP_SIDED":"",t.shadowMapEnabled?"#define USE_SHADOWMAP":"",t.shadowMapEnabled?"#define "+h:"",t.premultipliedAlpha?"#define PREMULTIPLIED_ALPHA":"",t.physicallyCorrectLights?"#define PHYSICALLY_CORRECT_LIGHTS":"",t.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",t.logarithmicDepthBuffer&&t.rendererExtensionFragDepth?"#define USE_LOGDEPTHBUF_EXT":"","uniform mat4 viewMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;",t.toneMapping!==As?"#define TONE_MAPPING":"",t.toneMapping!==As?Gt.tonemapping_pars_fragment:"",t.toneMapping!==As?eB("toneMapping",t.toneMapping):"",t.dithering?"#define DITHERING":"",t.opaque?"#define OPAQUE":"",Gt.encodings_pars_fragment,$N("linearToOutputTexel",t.outputEncoding),t.useDepthPacking?"#define DEPTH_PACKING "+t.depthPacking:"",` `].filter(ph).join(` `)),o=Zy(o),o=sS(o,t),o=oS(o,t),l=Zy(l),l=sS(l,t),l=oS(l,t),o=aS(o),l=aS(l),t.isWebGL2&&t.isRawShaderMaterial!==!0&&(E=`#version 300 es `,b=["precision mediump sampler2DArray;","#define attribute in","#define varying out","#define texture2D texture"].join(` `)+` `+b,T=["#define varying in",t.glslVersion===L1?"":"layout(location = 0) out highp vec4 pc_fragColor;",t.glslVersion===L1?"":"#define gl_FragColor pc_fragColor","#define gl_FragDepthEXT gl_FragDepth","#define texture2D texture","#define textureCube texture","#define texture2DProj textureProj","#define texture2DLodEXT textureLod","#define texture2DProjLodEXT textureProjLod","#define textureCubeLodEXT textureLod","#define texture2DGradEXT textureGrad","#define texture2DProjGradEXT textureProjGrad","#define textureCubeGradEXT textureGrad"].join(` `)+` `+T);const C=E+b+o,A=E+T+l,D=iS(r,35633,C),I=iS(r,35632,A);if(r.attachShader(S,D),r.attachShader(S,I),t.index0AttributeName!==void 0?r.bindAttribLocation(S,0,t.index0AttributeName):t.morphTargets===!0&&r.bindAttribLocation(S,0,"position"),r.linkProgram(S),i.debug.checkShaderErrors){const k=r.getProgramInfoLog(S).trim(),j=r.getShaderInfoLog(D).trim(),G=r.getShaderInfoLog(I).trim();let ne=!0,ce=!0;if(r.getProgramParameter(S,35714)===!1){ne=!1;const Z=rS(r,D,"vertex"),$=rS(r,I,"fragment");console.error("THREE.WebGLProgram: Shader Error "+r.getError()+" - VALIDATE_STATUS "+r.getProgramParameter(S,35715)+` Program Info Log: `+k+` `+Z+` `+$)}else k!==""?console.warn("THREE.WebGLProgram: Program Info Log:",k):(j===""||G==="")&&(ce=!1);ce&&(this.diagnostics={runnable:ne,programLog:k,vertexShader:{log:j,prefix:b},fragmentShader:{log:G,prefix:T}})}r.deleteShader(D),r.deleteShader(I);let F;this.getUniforms=function(){return F===void 0&&(F=new ma(r,S)),F};let P;return this.getAttributes=function(){return P===void 0&&(P=iB(r,S)),P},this.destroy=function(){n.releaseStatesOfProgram(this),r.deleteProgram(S),this.program=void 0},this.name=t.shaderName,this.id=KN++,this.cacheKey=e,this.usedTimes=1,this.program=S,this.vertexShader=D,this.fragmentShader=I,this}let mB=0;class vB{constructor(){this.shaderCache=new Map,this.materialCache=new Map}update(e){const t=e.vertexShader,n=e.fragmentShader,r=this._getShaderStage(t),s=this._getShaderStage(n),o=this._getShaderCacheForMaterial(e);return o.has(r)===!1&&(o.add(r),r.usedTimes++),o.has(s)===!1&&(o.add(s),s.usedTimes++),this}remove(e){const t=this.materialCache.get(e);for(const n of t)n.usedTimes--,n.usedTimes===0&&this.shaderCache.delete(n.code);return this.materialCache.delete(e),this}getVertexShaderID(e){return this._getShaderStage(e.vertexShader).id}getFragmentShaderID(e){return this._getShaderStage(e.fragmentShader).id}dispose(){this.shaderCache.clear(),this.materialCache.clear()}_getShaderCacheForMaterial(e){const t=this.materialCache;return t.has(e)===!1&&t.set(e,new Set),t.get(e)}_getShaderStage(e){const t=this.shaderCache;if(t.has(e)===!1){const n=new gB(e);t.set(e,n)}return t.get(e)}}class gB{constructor(e){this.id=mB++,this.code=e,this.usedTimes=0}}function yB(i,e,t,n,r,s,o){const l=new sx,h=new vB,d=[],f=r.isWebGL2,g=r.logarithmicDepthBuffer,y=r.vertexTextures;let _=r.precision;const w={MeshDepthMaterial:"depth",MeshDistanceMaterial:"distanceRGBA",MeshNormalMaterial:"normal",MeshBasicMaterial:"basic",MeshLambertMaterial:"lambert",MeshPhongMaterial:"phong",MeshToonMaterial:"toon",MeshStandardMaterial:"physical",MeshPhysicalMaterial:"physical",MeshMatcapMaterial:"matcap",LineBasicMaterial:"basic",LineDashedMaterial:"dashed",PointsMaterial:"points",ShadowMaterial:"shadow",SpriteMaterial:"sprite"};function S(P,k,j,G,ne){const ce=G.fog,Z=ne.geometry,$=P.isMeshStandardMaterial?G.environment:null,K=(P.isMeshStandardMaterial?t:e).get(P.envMap||$),pe=K&&K.mapping===Nm?K.image.height:null,re=w[P.type];P.precision!==null&&(_=r.getMaxPrecision(P.precision),_!==P.precision&&console.warn("THREE.WebGLProgram.getParameters:",P.precision,"not supported, using",_,"instead."));const se=Z.morphAttributes.position||Z.morphAttributes.normal||Z.morphAttributes.color,ue=se!==void 0?se.length:0;let Te=0;Z.morphAttributes.position!==void 0&&(Te=1),Z.morphAttributes.normal!==void 0&&(Te=2),Z.morphAttributes.color!==void 0&&(Te=3);let fe,Ce,qe,Ke;if(re){const Le=Ms[re];fe=Le.vertexShader,Ce=Le.fragmentShader}else fe=P.vertexShader,Ce=P.fragmentShader,h.update(P),qe=h.getVertexShaderID(P),Ke=h.getFragmentShaderID(P);const me=i.getRenderTarget(),Ut=P.alphaTest>0,nt=P.clearcoat>0;return{isWebGL2:f,shaderID:re,shaderName:P.type,vertexShader:fe,fragmentShader:Ce,defines:P.defines,customVertexShaderID:qe,customFragmentShaderID:Ke,isRawShaderMaterial:P.isRawShaderMaterial===!0,glslVersion:P.glslVersion,precision:_,instancing:ne.isInstancedMesh===!0,instancingColor:ne.isInstancedMesh===!0&&ne.instanceColor!==null,supportsVertexTextures:y,outputEncoding:me===null?i.outputEncoding:me.isXRRenderTarget===!0?me.texture.encoding:Ds,map:!!P.map,matcap:!!P.matcap,envMap:!!K,envMapMode:K&&K.mapping,envMapCubeUVHeight:pe,lightMap:!!P.lightMap,aoMap:!!P.aoMap,emissiveMap:!!P.emissiveMap,bumpMap:!!P.bumpMap,normalMap:!!P.normalMap,objectSpaceNormalMap:P.normalMapType===FE,tangentSpaceNormalMap:P.normalMapType===_l,decodeVideoTexture:!!P.map&&P.map.isVideoTexture===!0&&P.map.encoding===Ln,clearcoat:nt,clearcoatMap:nt&&!!P.clearcoatMap,clearcoatRoughnessMap:nt&&!!P.clearcoatRoughnessMap,clearcoatNormalMap:nt&&!!P.clearcoatNormalMap,displacementMap:!!P.displacementMap,roughnessMap:!!P.roughnessMap,metalnessMap:!!P.metalnessMap,specularMap:!!P.specularMap,specularIntensityMap:!!P.specularIntensityMap,specularColorMap:!!P.specularColorMap,opaque:P.transparent===!1&&P.blending===yo,alphaMap:!!P.alphaMap,alphaTest:Ut,gradientMap:!!P.gradientMap,sheen:P.sheen>0,sheenColorMap:!!P.sheenColorMap,sheenRoughnessMap:!!P.sheenRoughnessMap,transmission:P.transmission>0,transmissionMap:!!P.transmissionMap,thicknessMap:!!P.thicknessMap,combine:P.combine,vertexTangents:!!P.normalMap&&!!Z.attributes.tangent,vertexColors:P.vertexColors,vertexAlphas:P.vertexColors===!0&&!!Z.attributes.color&&Z.attributes.color.itemSize===4,vertexUvs:!!P.map||!!P.bumpMap||!!P.normalMap||!!P.specularMap||!!P.alphaMap||!!P.emissiveMap||!!P.roughnessMap||!!P.metalnessMap||!!P.clearcoatMap||!!P.clearcoatRoughnessMap||!!P.clearcoatNormalMap||!!P.displacementMap||!!P.transmissionMap||!!P.thicknessMap||!!P.specularIntensityMap||!!P.specularColorMap||!!P.sheenColorMap||!!P.sheenRoughnessMap,uvsVertexOnly:!(P.map||P.bumpMap||P.normalMap||P.specularMap||P.alphaMap||P.emissiveMap||P.roughnessMap||P.metalnessMap||P.clearcoatNormalMap||P.transmission>0||P.transmissionMap||P.thicknessMap||P.specularIntensityMap||P.specularColorMap||P.sheen>0||P.sheenColorMap||P.sheenRoughnessMap)&&!!P.displacementMap,fog:!!ce,useFog:P.fog===!0,fogExp2:ce&&ce.isFogExp2,flatShading:!!P.flatShading,sizeAttenuation:P.sizeAttenuation,logarithmicDepthBuffer:g,skinning:ne.isSkinnedMesh===!0,morphTargets:Z.morphAttributes.position!==void 0,morphNormals:Z.morphAttributes.normal!==void 0,morphColors:Z.morphAttributes.color!==void 0,morphTargetsCount:ue,morphTextureStride:Te,numDirLights:k.directional.length,numPointLights:k.point.length,numSpotLights:k.spot.length,numRectAreaLights:k.rectArea.length,numHemiLights:k.hemi.length,numDirLightShadows:k.directionalShadowMap.length,numPointLightShadows:k.pointShadowMap.length,numSpotLightShadows:k.spotShadowMap.length,numClippingPlanes:o.numPlanes,numClipIntersection:o.numIntersection,dithering:P.dithering,shadowMapEnabled:i.shadowMap.enabled&&j.length>0,shadowMapType:i.shadowMap.type,toneMapping:P.toneMapped?i.toneMapping:As,physicallyCorrectLights:i.physicallyCorrectLights,premultipliedAlpha:P.premultipliedAlpha,doubleSided:P.side===_a,flipSided:P.side===xr,useDepthPacking:!!P.depthPacking,depthPacking:P.depthPacking||0,index0AttributeName:P.index0AttributeName,extensionDerivatives:P.extensions&&P.extensions.derivatives,extensionFragDepth:P.extensions&&P.extensions.fragDepth,extensionDrawBuffers:P.extensions&&P.extensions.drawBuffers,extensionShaderTextureLOD:P.extensions&&P.extensions.shaderTextureLOD,rendererExtensionFragDepth:f||n.has("EXT_frag_depth"),rendererExtensionDrawBuffers:f||n.has("WEBGL_draw_buffers"),rendererExtensionShaderTextureLod:f||n.has("EXT_shader_texture_lod"),customProgramCacheKey:P.customProgramCacheKey()}}function b(P){const k=[];if(P.shaderID?k.push(P.shaderID):(k.push(P.customVertexShaderID),k.push(P.customFragmentShaderID)),P.defines!==void 0)for(const j in P.defines)k.push(j),k.push(P.defines[j]);return P.isRawShaderMaterial===!1&&(T(k,P),E(k,P),k.push(i.outputEncoding)),k.push(P.customProgramCacheKey),k.join()}function T(P,k){P.push(k.precision),P.push(k.outputEncoding),P.push(k.envMapMode),P.push(k.envMapCubeUVHeight),P.push(k.combine),P.push(k.vertexUvs),P.push(k.fogExp2),P.push(k.sizeAttenuation),P.push(k.morphTargetsCount),P.push(k.morphAttributeCount),P.push(k.numDirLights),P.push(k.numPointLights),P.push(k.numSpotLights),P.push(k.numHemiLights),P.push(k.numRectAreaLights),P.push(k.numDirLightShadows),P.push(k.numPointLightShadows),P.push(k.numSpotLightShadows),P.push(k.shadowMapType),P.push(k.toneMapping),P.push(k.numClippingPlanes),P.push(k.numClipIntersection),P.push(k.depthPacking)}function E(P,k){l.disableAll(),k.isWebGL2&&l.enable(0),k.supportsVertexTextures&&l.enable(1),k.instancing&&l.enable(2),k.instancingColor&&l.enable(3),k.map&&l.enable(4),k.matcap&&l.enable(5),k.envMap&&l.enable(6),k.lightMap&&l.enable(7),k.aoMap&&l.enable(8),k.emissiveMap&&l.enable(9),k.bumpMap&&l.enable(10),k.normalMap&&l.enable(11),k.objectSpaceNormalMap&&l.enable(12),k.tangentSpaceNormalMap&&l.enable(13),k.clearcoat&&l.enable(14),k.clearcoatMap&&l.enable(15),k.clearcoatRoughnessMap&&l.enable(16),k.clearcoatNormalMap&&l.enable(17),k.displacementMap&&l.enable(18),k.specularMap&&l.enable(19),k.roughnessMap&&l.enable(20),k.metalnessMap&&l.enable(21),k.gradientMap&&l.enable(22),k.alphaMap&&l.enable(23),k.alphaTest&&l.enable(24),k.vertexColors&&l.enable(25),k.vertexAlphas&&l.enable(26),k.vertexUvs&&l.enable(27),k.vertexTangents&&l.enable(28),k.uvsVertexOnly&&l.enable(29),k.fog&&l.enable(30),P.push(l.mask),l.disableAll(),k.useFog&&l.enable(0),k.flatShading&&l.enable(1),k.logarithmicDepthBuffer&&l.enable(2),k.skinning&&l.enable(3),k.morphTargets&&l.enable(4),k.morphNormals&&l.enable(5),k.morphColors&&l.enable(6),k.premultipliedAlpha&&l.enable(7),k.shadowMapEnabled&&l.enable(8),k.physicallyCorrectLights&&l.enable(9),k.doubleSided&&l.enable(10),k.flipSided&&l.enable(11),k.useDepthPacking&&l.enable(12),k.dithering&&l.enable(13),k.specularIntensityMap&&l.enable(14),k.specularColorMap&&l.enable(15),k.transmission&&l.enable(16),k.transmissionMap&&l.enable(17),k.thicknessMap&&l.enable(18),k.sheen&&l.enable(19),k.sheenColorMap&&l.enable(20),k.sheenRoughnessMap&&l.enable(21),k.decodeVideoTexture&&l.enable(22),k.opaque&&l.enable(23),P.push(l.mask)}function C(P){const k=w[P.type];let j;if(k){const G=Ms[k];j=Qn.clone(G.uniforms)}else j=P.uniforms;return j}function A(P,k){let j;for(let G=0,ne=d.length;G0?n.push(T):_.transparent===!0?r.push(T):t.push(T)}function h(g,y,_,w,S,b){const T=o(g,y,_,w,S,b);_.transmission>0?n.unshift(T):_.transparent===!0?r.unshift(T):t.unshift(T)}function d(g,y){t.length>1&&t.sort(g||xB),n.length>1&&n.sort(y||cS),r.length>1&&r.sort(y||cS)}function f(){for(let g=e,y=i.length;g=i.get(n).length?(s=new uS,i.get(n).push(s)):s=i.get(n)[r],s}function t(){i=new WeakMap}return{get:e,dispose:t}}function wB(){const i={};return{get:function(e){if(i[e.id]!==void 0)return i[e.id];let t;switch(e.type){case"DirectionalLight":t={direction:new z,color:new Pe};break;case"SpotLight":t={position:new z,direction:new z,color:new Pe,distance:0,coneCos:0,penumbraCos:0,decay:0};break;case"PointLight":t={position:new z,color:new Pe,distance:0,decay:0};break;case"HemisphereLight":t={direction:new z,skyColor:new Pe,groundColor:new Pe};break;case"RectAreaLight":t={color:new Pe,position:new z,halfWidth:new z,halfHeight:new z};break}return i[e.id]=t,t}}}function SB(){const i={};return{get:function(e){if(i[e.id]!==void 0)return i[e.id];let t;switch(e.type){case"DirectionalLight":t={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new ae};break;case"SpotLight":t={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new ae};break;case"PointLight":t={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new ae,shadowCameraNear:1,shadowCameraFar:1e3};break}return i[e.id]=t,t}}}let MB=0;function EB(i,e){return(e.castShadow?1:0)-(i.castShadow?1:0)}function TB(i,e){const t=new wB,n=SB(),r={version:0,hash:{directionalLength:-1,pointLength:-1,spotLength:-1,rectAreaLength:-1,hemiLength:-1,numDirectionalShadows:-1,numPointShadows:-1,numSpotShadows:-1},ambient:[0,0,0],probe:[],directional:[],directionalShadow:[],directionalShadowMap:[],directionalShadowMatrix:[],spot:[],spotShadow:[],spotShadowMap:[],spotShadowMatrix:[],rectArea:[],rectAreaLTC1:null,rectAreaLTC2:null,point:[],pointShadow:[],pointShadowMap:[],pointShadowMatrix:[],hemi:[]};for(let f=0;f<9;f++)r.probe.push(new z);const s=new z,o=new Qe,l=new Qe;function h(f,g){let y=0,_=0,w=0;for(let k=0;k<9;k++)r.probe[k].set(0,0,0);let S=0,b=0,T=0,E=0,C=0,A=0,D=0,I=0;f.sort(EB);const F=g!==!0?Math.PI:1;for(let k=0,j=f.length;k0&&(e.isWebGL2||i.has("OES_texture_float_linear")===!0?(r.rectAreaLTC1=He.LTC_FLOAT_1,r.rectAreaLTC2=He.LTC_FLOAT_2):i.has("OES_texture_half_float_linear")===!0?(r.rectAreaLTC1=He.LTC_HALF_1,r.rectAreaLTC2=He.LTC_HALF_2):console.error("THREE.WebGLRenderer: Unable to use RectAreaLight. Missing WebGL extensions.")),r.ambient[0]=y,r.ambient[1]=_,r.ambient[2]=w;const P=r.hash;(P.directionalLength!==S||P.pointLength!==b||P.spotLength!==T||P.rectAreaLength!==E||P.hemiLength!==C||P.numDirectionalShadows!==A||P.numPointShadows!==D||P.numSpotShadows!==I)&&(r.directional.length=S,r.spot.length=T,r.rectArea.length=E,r.point.length=b,r.hemi.length=C,r.directionalShadow.length=A,r.directionalShadowMap.length=A,r.pointShadow.length=D,r.pointShadowMap.length=D,r.spotShadow.length=I,r.spotShadowMap.length=I,r.directionalShadowMatrix.length=A,r.pointShadowMatrix.length=D,r.spotShadowMatrix.length=I,P.directionalLength=S,P.pointLength=b,P.spotLength=T,P.rectAreaLength=E,P.hemiLength=C,P.numDirectionalShadows=A,P.numPointShadows=D,P.numSpotShadows=I,r.version=MB++)}function d(f,g){let y=0,_=0,w=0,S=0,b=0;const T=g.matrixWorldInverse;for(let E=0,C=f.length;E=t.get(s).length?(l=new hS(i,e),t.get(s).push(l)):l=t.get(s)[o],l}function r(){t=new WeakMap}return{get:n,dispose:r}}class lu extends li{constructor(e){super(),this.type="MeshDepthMaterial",this.depthPacking=OI,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.setValues(e)}copy(e){return super.copy(e),this.depthPacking=e.depthPacking,this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this}}lu.prototype.isMeshDepthMaterial=!0;class lx extends li{constructor(e){super(),this.type="MeshDistanceMaterial",this.referencePosition=new z,this.nearDistance=1,this.farDistance=1e3,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.setValues(e)}copy(e){return super.copy(e),this.referencePosition.copy(e.referencePosition),this.nearDistance=e.nearDistance,this.farDistance=e.farDistance,this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this}}lx.prototype.isMeshDistanceMaterial=!0;const CB=`void main() { gl_Position = vec4( position, 1.0 ); }`,PB=`uniform sampler2D shadow_pass; uniform vec2 resolution; uniform float radius; #include void main() { const float samples = float( VSM_SAMPLES ); float mean = 0.0; float squared_mean = 0.0; float uvStride = samples <= 1.0 ? 0.0 : 2.0 / ( samples - 1.0 ); float uvStart = samples <= 1.0 ? 0.0 : - 1.0; for ( float i = 0.0; i < samples; i ++ ) { float uvOffset = uvStart + i * uvStride; #ifdef HORIZONTAL_PASS vec2 distribution = unpackRGBATo2Half( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( uvOffset, 0.0 ) * radius ) / resolution ) ); mean += distribution.x; squared_mean += distribution.y * distribution.y + distribution.x * distribution.x; #else float depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, uvOffset ) * radius ) / resolution ) ); mean += depth; squared_mean += depth * depth; #endif } mean = mean / samples; squared_mean = squared_mean / samples; float std_dev = sqrt( squared_mean - mean * mean ); gl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) ); }`;function e2(i,e,t){let n=new ad;const r=new ae,s=new ae,o=new dn,l=new lu({depthPacking:Bm}),h=new lx,d={},f=t.maxTextureSize,g={0:xr,1:Oh,2:_a},y=new kt({defines:{VSM_SAMPLES:8},uniforms:{shadow_pass:{value:null},resolution:{value:new ae},radius:{value:4}},vertexShader:CB,fragmentShader:PB}),_=y.clone();_.defines.HORIZONTAL_PASS=1;const w=new zt;w.setAttribute("position",new Wn(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3));const S=new In(w,y),b=this;this.enabled=!1,this.autoUpdate=!0,this.needsUpdate=!1,this.type=IE,this.render=function(A,D,I){if(b.enabled===!1||b.autoUpdate===!1&&b.needsUpdate===!1||A.length===0)return;const F=i.getRenderTarget(),P=i.getActiveCubeFace(),k=i.getActiveMipmapLevel(),j=i.state;j.setBlending(rn),j.buffers.color.setClear(1,1,1,1),j.buffers.depth.setTest(!0),j.setScissorTest(!1);for(let G=0,ne=A.length;Gf||r.y>f)&&(r.x>f&&(s.x=Math.floor(f/$.x),r.x=s.x*$.x,Z.mapSize.x=s.x),r.y>f&&(s.y=Math.floor(f/$.y),r.y=s.y*$.y,Z.mapSize.y=s.y)),Z.map===null&&!Z.isPointLightShadow&&this.type===dh&&(Z.map=new Yt(r.x,r.y),Z.map.texture.name=ce.name+".shadowMap",Z.mapPass=new Yt(r.x,r.y),Z.camera.updateProjectionMatrix()),Z.map===null){const pe={minFilter:Xt,magFilter:Xt,format:Or};Z.map=new Yt(r.x,r.y,pe),Z.map.texture.name=ce.name+".shadowMap",Z.camera.updateProjectionMatrix()}i.setRenderTarget(Z.map),i.clear();const K=Z.getViewportCount();for(let pe=0;pe0){const ne=j.uuid,ce=D.uuid;let Z=d[ne];Z===void 0&&(Z={},d[ne]=Z);let $=Z[ce];$===void 0&&($=j.clone(),Z[ce]=$),j=$}return j.visible=D.visible,j.wireframe=D.wireframe,k===dh?j.side=D.shadowSide!==null?D.shadowSide:D.side:j.side=D.shadowSide!==null?D.shadowSide:g[D.side],j.alphaMap=D.alphaMap,j.alphaTest=D.alphaTest,j.clipShadows=D.clipShadows,j.clippingPlanes=D.clippingPlanes,j.clipIntersection=D.clipIntersection,j.displacementMap=D.displacementMap,j.displacementScale=D.displacementScale,j.displacementBias=D.displacementBias,j.wireframeLinewidth=D.wireframeLinewidth,j.linewidth=D.linewidth,I.isPointLight===!0&&j.isMeshDistanceMaterial===!0&&(j.referencePosition.setFromMatrixPosition(I.matrixWorld),j.nearDistance=F,j.farDistance=P),j}function C(A,D,I,F,P){if(A.visible===!1)return;if(A.layers.test(D.layers)&&(A.isMesh||A.isLine||A.isPoints)&&(A.castShadow||A.receiveShadow&&P===dh)&&(!A.frustumCulled||n.intersectsObject(A))){A.modelViewMatrix.multiplyMatrices(I.matrixWorldInverse,A.matrixWorld);const G=e.update(A),ne=A.material;if(Array.isArray(ne)){const ce=G.groups;for(let Z=0,$=ce.length;Z<$;Z++){const K=ce[Z],pe=ne[K.materialIndex];if(pe&&pe.visible){const re=E(A,pe,F,I.near,I.far,P);i.renderBufferDirect(I,null,G,re,A,K)}}}else if(ne.visible){const ce=E(A,ne,F,I.near,I.far,P);i.renderBufferDirect(I,null,G,ce,A,null)}}const j=A.children;for(let G=0,ne=j.length;G=1):K.indexOf("OpenGL ES")!==-1&&($=parseFloat(/^OpenGL ES (\d)/.exec(K)[1]),Z=$>=2);let pe=null,re={};const se=i.getParameter(3088),ue=i.getParameter(2978),Te=new dn().fromArray(se),fe=new dn().fromArray(ue);function Ce(X,Re,De){const at=new Uint8Array(4),ze=i.createTexture();i.bindTexture(X,ze),i.texParameteri(X,10241,9728),i.texParameteri(X,10240,9728);for(let et=0;etwe||H.height>we)&&(Ne=we/Math.max(H.width,H.height)),Ne<1||B===!0)if(typeof HTMLImageElement<"u"&&H instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&H instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&H instanceof ImageBitmap){const Ue=B?sm:Math.floor,Xe=Ue(Ne*H.width),U=Ue(Ne*H.height);S===void 0&&(S=E(Xe,U));const Ee=he?E(Xe,U):S;return Ee.width=Xe,Ee.height=U,Ee.getContext("2d").drawImage(H,0,0,Xe,U),console.warn("THREE.WebGLRenderer: Texture has been resized from ("+H.width+"x"+H.height+") to ("+Xe+"x"+U+")."),Ee}else return"data"in H&&console.warn("THREE.WebGLRenderer: Image in DataTexture is too big ("+H.width+"x"+H.height+")."),H;return H}function A(H){return Yy(H.width)&&Yy(H.height)}function D(H){return l?!1:H.wrapS!==yr||H.wrapT!==yr||H.minFilter!==Xt&&H.minFilter!==Hn}function I(H,B){return H.generateMipmaps&&B&&H.minFilter!==Xt&&H.minFilter!==Hn}function F(H){i.generateMipmap(H)}function P(H,B,he,we,Ne=!1){if(l===!1)return B;if(H!==null){if(i[H]!==void 0)return i[H];console.warn("THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format '"+H+"'")}let Ue=B;return B===6403&&(he===5126&&(Ue=33326),he===5131&&(Ue=33325),he===5121&&(Ue=33321)),B===33319&&(he===5126&&(Ue=33328),he===5131&&(Ue=33327),he===5121&&(Ue=33323)),B===6408&&(he===5126&&(Ue=34836),he===5131&&(Ue=34842),he===5121&&(Ue=we===Ln&&Ne===!1?35907:32856),he===32819&&(Ue=32854),he===32820&&(Ue=32855)),(Ue===33325||Ue===33326||Ue===33327||Ue===33328||Ue===34842||Ue===34836)&&e.get("EXT_color_buffer_float"),Ue}function k(H,B,he){return I(H,he)===!0||H.isFramebufferTexture&&H.minFilter!==Xt&&H.minFilter!==Hn?Math.log2(Math.max(B.width,B.height))+1:H.mipmaps!==void 0&&H.mipmaps.length>0?H.mipmaps.length:H.isCompressedTexture&&Array.isArray(H.image)?B.mipmaps.length:1}function j(H){return H===Xt||H===l1||H===c1?9728:9729}function G(H){const B=H.target;B.removeEventListener("dispose",G),ce(B),B.isVideoTexture&&w.delete(B)}function ne(H){const B=H.target;B.removeEventListener("dispose",ne),$(B)}function ce(H){const B=n.get(H);if(B.__webglInit===void 0)return;const he=H.source,we=b.get(he);if(we){const Ne=we[B.__cacheKey];Ne.usedTimes--,Ne.usedTimes===0&&Z(H),Object.keys(we).length===0&&b.delete(he)}n.remove(H)}function Z(H){const B=n.get(H);i.deleteTexture(B.__webglTexture);const he=H.source,we=b.get(he);delete we[B.__cacheKey],o.memory.textures--}function $(H){const B=H.texture,he=n.get(H),we=n.get(B);if(we.__webglTexture!==void 0&&(i.deleteTexture(we.__webglTexture),o.memory.textures--),H.depthTexture&&H.depthTexture.dispose(),H.isWebGLCubeRenderTarget)for(let Ne=0;Ne<6;Ne++)i.deleteFramebuffer(he.__webglFramebuffer[Ne]),he.__webglDepthbuffer&&i.deleteRenderbuffer(he.__webglDepthbuffer[Ne]);else i.deleteFramebuffer(he.__webglFramebuffer),he.__webglDepthbuffer&&i.deleteRenderbuffer(he.__webglDepthbuffer),he.__webglMultisampledFramebuffer&&i.deleteFramebuffer(he.__webglMultisampledFramebuffer),he.__webglColorRenderbuffer&&i.deleteRenderbuffer(he.__webglColorRenderbuffer),he.__webglDepthRenderbuffer&&i.deleteRenderbuffer(he.__webglDepthRenderbuffer);if(H.isWebGLMultipleRenderTargets)for(let Ne=0,Ue=B.length;Ne=h&&console.warn("THREE.WebGLTextures: Trying to use "+H+" texture units while this GPU supports only "+h),K+=1,H}function se(H){const B=[];return B.push(H.wrapS),B.push(H.wrapT),B.push(H.magFilter),B.push(H.minFilter),B.push(H.anisotropy),B.push(H.internalFormat),B.push(H.format),B.push(H.type),B.push(H.generateMipmaps),B.push(H.premultiplyAlpha),B.push(H.flipY),B.push(H.unpackAlignment),B.push(H.encoding),B.join()}function ue(H,B){const he=n.get(H);if(H.isVideoTexture&&Ft(H),H.isRenderTargetTexture===!1&&H.version>0&&he.__version!==H.version){const we=H.image;if(we===null)console.warn("THREE.WebGLRenderer: Texture marked for update but no image data found.");else if(we.complete===!1)console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete");else{nt(he,H,B);return}}t.activeTexture(33984+B),t.bindTexture(3553,he.__webglTexture)}function Te(H,B){const he=n.get(H);if(H.version>0&&he.__version!==H.version){nt(he,H,B);return}t.activeTexture(33984+B),t.bindTexture(35866,he.__webglTexture)}function fe(H,B){const he=n.get(H);if(H.version>0&&he.__version!==H.version){nt(he,H,B);return}t.activeTexture(33984+B),t.bindTexture(32879,he.__webglTexture)}function Ce(H,B){const he=n.get(H);if(H.version>0&&he.__version!==H.version){it(he,H,B);return}t.activeTexture(33984+B),t.bindTexture(34067,he.__webglTexture)}const qe={[Nh]:10497,[yr]:33071,[Wy]:33648},Ke={[Xt]:9728,[l1]:9984,[c1]:9986,[Hn]:9729,[vI]:9985,[od]:9987};function me(H,B,he){if(he?(i.texParameteri(H,10242,qe[B.wrapS]),i.texParameteri(H,10243,qe[B.wrapT]),(H===32879||H===35866)&&i.texParameteri(H,32882,qe[B.wrapR]),i.texParameteri(H,10240,Ke[B.magFilter]),i.texParameteri(H,10241,Ke[B.minFilter])):(i.texParameteri(H,10242,33071),i.texParameteri(H,10243,33071),(H===32879||H===35866)&&i.texParameteri(H,32882,33071),(B.wrapS!==yr||B.wrapT!==yr)&&console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping."),i.texParameteri(H,10240,j(B.magFilter)),i.texParameteri(H,10241,j(B.minFilter)),B.minFilter!==Xt&&B.minFilter!==Hn&&console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.")),e.has("EXT_texture_filter_anisotropic")===!0){const we=e.get("EXT_texture_filter_anisotropic");if(B.type===is&&e.has("OES_texture_float_linear")===!1||l===!1&&B.type===Ts&&e.has("OES_texture_half_float_linear")===!1)return;(B.anisotropy>1||n.get(B).__currentAnisotropy)&&(i.texParameterf(H,we.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(B.anisotropy,r.getMaxAnisotropy())),n.get(B).__currentAnisotropy=B.anisotropy)}}function Ut(H,B){let he=!1;H.__webglInit===void 0&&(H.__webglInit=!0,B.addEventListener("dispose",G));const we=B.source;let Ne=b.get(we);Ne===void 0&&(Ne={},b.set(we,Ne));const Ue=se(B);if(Ue!==H.__cacheKey){Ne[Ue]===void 0&&(Ne[Ue]={texture:i.createTexture(),usedTimes:0},o.memory.textures++,he=!0),Ne[Ue].usedTimes++;const Xe=Ne[H.__cacheKey];Xe!==void 0&&(Ne[H.__cacheKey].usedTimes--,Xe.usedTimes===0&&Z(B)),H.__cacheKey=Ue,H.__webglTexture=Ne[Ue].texture}return he}function nt(H,B,he){let we=3553;B.isDataArrayTexture&&(we=35866),B.isData3DTexture&&(we=32879);const Ne=Ut(H,B),Ue=B.source;if(t.activeTexture(33984+he),t.bindTexture(we,H.__webglTexture),Ue.version!==Ue.__currentVersion||Ne===!0){i.pixelStorei(37440,B.flipY),i.pixelStorei(37441,B.premultiplyAlpha),i.pixelStorei(3317,B.unpackAlignment),i.pixelStorei(37443,0);const Xe=D(B)&&A(B.image)===!1;let U=C(B.image,Xe,!1,f);U=yt(B,U);const Ee=A(U)||l,Je=s.convert(B.format,B.encoding);let ke=s.convert(B.type),X=P(B.internalFormat,Je,ke,B.encoding,B.isVideoTexture);me(we,B,Ee);let Re;const De=B.mipmaps,at=l&&B.isVideoTexture!==!0,ze=H.__version===void 0||Ne===!0,et=k(B,U,Ee);if(B.isDepthTexture)X=6402,l?B.type===is?X=36012:B.type===Ff?X=33190:B.type===zc?X=35056:X=33189:B.type===is&&console.error("WebGLRenderer: Floating point depth texture requires WebGL2."),B.format===cl&&X===6402&&B.type!==pl&&B.type!==Ff&&(console.warn("THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture."),B.type=pl,ke=s.convert(B.type)),B.format===Gc&&X===6402&&(X=34041,B.type!==zc&&(console.warn("THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture."),B.type=zc,ke=s.convert(B.type))),ze&&(at?t.texStorage2D(3553,1,X,U.width,U.height):t.texImage2D(3553,0,X,U.width,U.height,0,Je,ke,null));else if(B.isDataTexture)if(De.length>0&&Ee){at&&ze&&t.texStorage2D(3553,et,X,De[0].width,De[0].height);for(let Ie=0,ct=De.length;Ie>=1,ct>>=1}}else if(De.length>0&&Ee){at&&ze&&t.texStorage2D(3553,et,X,De[0].width,De[0].height);for(let Ie=0,ct=De.length;Ie0&&ze++,t.texStorage2D(34067,ze,Re,U[0].width,U[0].height));for(let Ie=0;Ie<6;Ie++)if(Xe){De?t.texSubImage2D(34069+Ie,0,0,0,U[Ie].width,U[Ie].height,ke,X,U[Ie].data):t.texImage2D(34069+Ie,0,Re,U[Ie].width,U[Ie].height,0,ke,X,U[Ie].data);for(let ct=0;ct0&&st(H)===!1){he.__webglMultisampledFramebuffer=i.createFramebuffer(),he.__webglColorRenderbuffer=i.createRenderbuffer(),i.bindRenderbuffer(36161,he.__webglColorRenderbuffer);const U=s.convert(B.format,B.encoding),Ee=s.convert(B.type),Je=P(B.internalFormat,U,Ee,B.encoding),ke=ot(H);i.renderbufferStorageMultisample(36161,ke,Je,H.width,H.height),t.bindFramebuffer(36160,he.__webglMultisampledFramebuffer),i.framebufferRenderbuffer(36160,36064,36161,he.__webglColorRenderbuffer),i.bindRenderbuffer(36161,null),H.depthBuffer&&(he.__webglDepthRenderbuffer=i.createRenderbuffer(),vt(he.__webglDepthRenderbuffer,H,!0)),t.bindFramebuffer(36160,null)}if(Ne){t.bindTexture(34067,we.__webglTexture),me(34067,B,Xe);for(let U=0;U<6;U++)Le(he.__webglFramebuffer[U],H,B,36064,34069+U);I(B,Xe)&&F(34067),t.unbindTexture()}else if(Ue){const U=H.texture;for(let Ee=0,Je=U.length;Ee0&&st(H)===!1){const B=H.width,he=H.height;let we=16384;const Ne=[36064],Ue=H.stencilBuffer?33306:36096;H.depthBuffer&&Ne.push(Ue);const Xe=n.get(H),U=Xe.__ignoreDepthValues!==void 0?Xe.__ignoreDepthValues:!1;U===!1&&(H.depthBuffer&&(we|=256),H.stencilBuffer&&(we|=1024)),t.bindFramebuffer(36008,Xe.__webglMultisampledFramebuffer),t.bindFramebuffer(36009,Xe.__webglFramebuffer),U===!0&&(i.invalidateFramebuffer(36008,[Ue]),i.invalidateFramebuffer(36009,[Ue])),i.blitFramebuffer(0,0,B,he,0,0,B,he,we,9728),_&&i.invalidateFramebuffer(36008,Ne),t.bindFramebuffer(36008,null),t.bindFramebuffer(36009,Xe.__webglMultisampledFramebuffer)}}function ot(H){return Math.min(g,H.samples)}function st(H){const B=n.get(H);return l&&H.samples>0&&e.has("WEBGL_multisampled_render_to_texture")===!0&&B.__useRenderToTexture!==!1}function Ft(H){const B=o.render.frame;w.get(H)!==B&&(w.set(H,B),H.update())}function yt(H,B){const he=H.encoding,we=H.format,Ne=H.type;return H.isCompressedTexture===!0||H.isVideoTexture===!0||H.format===qy||he!==Ds&&(he===Ln?l===!1?e.has("EXT_sRGB")===!0&&we===Or?(H.format=qy,H.minFilter=Hn,H.generateMipmaps=!1):B=xl.sRGBToLinear(B):(we!==Or||Ne!==dl)&&console.warn("THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType."):console.error("THREE.WebGLTextures: Unsupported texture encoding:",he)),B}this.allocateTextureUnit=re,this.resetTextureUnits=pe,this.setTexture2D=ue,this.setTexture2DArray=Te,this.setTexture3D=fe,this.setTextureCube=Ce,this.rebindTextures=Ae,this.setupRenderTarget=We,this.updateRenderTargetMipmap=Be,this.updateMultisampleRenderTarget=rt,this.setupDepthRenderbuffer=xe,this.setupFrameBufferTexture=Le,this.useMultisampledRTT=st}function DB(i,e,t){const n=t.isWebGL2;function r(s,o=null){let l;if(s===dl)return 5121;if(s===xI)return 32819;if(s===bI)return 32820;if(s===gI)return 5120;if(s===yI)return 5122;if(s===pl)return 5123;if(s===_I)return 5124;if(s===Ff)return 5125;if(s===is)return 5126;if(s===Ts)return n?5131:(l=e.get("OES_texture_half_float"),l!==null?l.HALF_FLOAT_OES:null);if(s===wI)return 6406;if(s===Or)return 6408;if(s===MI)return 6409;if(s===EI)return 6410;if(s===cl)return 6402;if(s===Gc)return 34041;if(s===TI)return 6403;if(s===SI)return console.warn("THREE.WebGLRenderer: THREE.RGBFormat has been removed. Use THREE.RGBAFormat instead. https://github.com/mrdoob/three.js/pull/23228"),6408;if(s===qy)return l=e.get("EXT_sRGB"),l!==null?l.SRGB_ALPHA_EXT:null;if(s===AI)return 36244;if(s===CI)return 33319;if(s===PI)return 33320;if(s===RI)return 36249;if(s===B0||s===z0||s===U0||s===F0)if(o===Ln)if(l=e.get("WEBGL_compressed_texture_s3tc_srgb"),l!==null){if(s===B0)return l.COMPRESSED_SRGB_S3TC_DXT1_EXT;if(s===z0)return l.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;if(s===U0)return l.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;if(s===F0)return l.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT}else return null;else if(l=e.get("WEBGL_compressed_texture_s3tc"),l!==null){if(s===B0)return l.COMPRESSED_RGB_S3TC_DXT1_EXT;if(s===z0)return l.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(s===U0)return l.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(s===F0)return l.COMPRESSED_RGBA_S3TC_DXT5_EXT}else return null;if(s===u1||s===h1||s===d1||s===p1)if(l=e.get("WEBGL_compressed_texture_pvrtc"),l!==null){if(s===u1)return l.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(s===h1)return l.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(s===d1)return l.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(s===p1)return l.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}else return null;if(s===LI)return l=e.get("WEBGL_compressed_texture_etc1"),l!==null?l.COMPRESSED_RGB_ETC1_WEBGL:null;if(s===f1||s===m1)if(l=e.get("WEBGL_compressed_texture_etc"),l!==null){if(s===f1)return o===Ln?l.COMPRESSED_SRGB8_ETC2:l.COMPRESSED_RGB8_ETC2;if(s===m1)return o===Ln?l.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:l.COMPRESSED_RGBA8_ETC2_EAC}else return null;if(s===v1||s===g1||s===y1||s===_1||s===x1||s===b1||s===w1||s===S1||s===M1||s===E1||s===T1||s===A1||s===C1||s===P1)if(l=e.get("WEBGL_compressed_texture_astc"),l!==null){if(s===v1)return o===Ln?l.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:l.COMPRESSED_RGBA_ASTC_4x4_KHR;if(s===g1)return o===Ln?l.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:l.COMPRESSED_RGBA_ASTC_5x4_KHR;if(s===y1)return o===Ln?l.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:l.COMPRESSED_RGBA_ASTC_5x5_KHR;if(s===_1)return o===Ln?l.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:l.COMPRESSED_RGBA_ASTC_6x5_KHR;if(s===x1)return o===Ln?l.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:l.COMPRESSED_RGBA_ASTC_6x6_KHR;if(s===b1)return o===Ln?l.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:l.COMPRESSED_RGBA_ASTC_8x5_KHR;if(s===w1)return o===Ln?l.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:l.COMPRESSED_RGBA_ASTC_8x6_KHR;if(s===S1)return o===Ln?l.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:l.COMPRESSED_RGBA_ASTC_8x8_KHR;if(s===M1)return o===Ln?l.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:l.COMPRESSED_RGBA_ASTC_10x5_KHR;if(s===E1)return o===Ln?l.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:l.COMPRESSED_RGBA_ASTC_10x6_KHR;if(s===T1)return o===Ln?l.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:l.COMPRESSED_RGBA_ASTC_10x8_KHR;if(s===A1)return o===Ln?l.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:l.COMPRESSED_RGBA_ASTC_10x10_KHR;if(s===C1)return o===Ln?l.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:l.COMPRESSED_RGBA_ASTC_12x10_KHR;if(s===P1)return o===Ln?l.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:l.COMPRESSED_RGBA_ASTC_12x12_KHR}else return null;if(s===R1)if(l=e.get("EXT_texture_compression_bptc"),l!==null){if(s===R1)return o===Ln?l.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT:l.COMPRESSED_RGBA_BPTC_UNORM_EXT}else return null;return s===zc?n?34042:(l=e.get("WEBGL_depth_texture"),l!==null?l.UNSIGNED_INT_24_8_WEBGL:null):i[s]!==void 0?i[s]:null}return{convert:r}}class t2 extends fi{constructor(e=[]){super(),this.cameras=e}}t2.prototype.isArrayCamera=!0;class ei extends $t{constructor(){super(),this.type="Group"}}ei.prototype.isGroup=!0;const IB={type:"move"};class my{constructor(){this._targetRay=null,this._grip=null,this._hand=null}getHandSpace(){return this._hand===null&&(this._hand=new ei,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 ei,this._targetRay.matrixAutoUpdate=!1,this._targetRay.visible=!1,this._targetRay.hasLinearVelocity=!1,this._targetRay.linearVelocity=new z,this._targetRay.hasAngularVelocity=!1,this._targetRay.angularVelocity=new z),this._targetRay}getGripSpace(){return this._grip===null&&(this._grip=new ei,this._grip.matrixAutoUpdate=!1,this._grip.visible=!1,this._grip.hasLinearVelocity=!1,this._grip.linearVelocity=new z,this._grip.hasAngularVelocity=!1,this._grip.angularVelocity=new z),this._grip}dispatchEvent(e){return this._targetRay!==null&&this._targetRay.dispatchEvent(e),this._grip!==null&&this._grip.dispatchEvent(e),this._hand!==null&&this._hand.dispatchEvent(e),this}disconnect(e){return this.dispatchEvent({type:"disconnected",data:e}),this._targetRay!==null&&(this._targetRay.visible=!1),this._grip!==null&&(this._grip.visible=!1),this._hand!==null&&(this._hand.visible=!1),this}update(e,t,n){let r=null,s=null,o=null;const l=this._targetRay,h=this._grip,d=this._hand;if(e&&t.session.visibilityState!=="visible-blurred")if(l!==null&&(r=t.getPose(e.targetRaySpace,n),r!==null&&(l.matrix.fromArray(r.transform.matrix),l.matrix.decompose(l.position,l.rotation,l.scale),r.linearVelocity?(l.hasLinearVelocity=!0,l.linearVelocity.copy(r.linearVelocity)):l.hasLinearVelocity=!1,r.angularVelocity?(l.hasAngularVelocity=!0,l.angularVelocity.copy(r.angularVelocity)):l.hasAngularVelocity=!1,this.dispatchEvent(IB))),d&&e.hand){o=!0;for(const S of e.hand.values()){const b=t.getJointPose(S,n);if(d.joints[S.jointName]===void 0){const E=new ei;E.matrixAutoUpdate=!1,E.visible=!1,d.joints[S.jointName]=E,d.add(E)}const T=d.joints[S.jointName];b!==null&&(T.matrix.fromArray(b.transform.matrix),T.matrix.decompose(T.position,T.rotation,T.scale),T.jointRadius=b.radius),T.visible=b!==null}const f=d.joints["index-finger-tip"],g=d.joints["thumb-tip"],y=f.position.distanceTo(g.position),_=.02,w=.005;d.inputState.pinching&&y>_+w?(d.inputState.pinching=!1,this.dispatchEvent({type:"pinchend",handedness:e.handedness,target:this})):!d.inputState.pinching&&y<=_-w&&(d.inputState.pinching=!0,this.dispatchEvent({type:"pinchstart",handedness:e.handedness,target:this}))}else h!==null&&e.gripSpace&&(s=t.getPose(e.gripSpace,n),s!==null&&(h.matrix.fromArray(s.transform.matrix),h.matrix.decompose(h.position,h.rotation,h.scale),s.linearVelocity?(h.hasLinearVelocity=!0,h.linearVelocity.copy(s.linearVelocity)):h.hasLinearVelocity=!1,s.angularVelocity?(h.hasAngularVelocity=!0,h.angularVelocity.copy(s.angularVelocity)):h.hasAngularVelocity=!1));return l!==null&&(l.visible=r!==null),h!==null&&(h.visible=s!==null),d!==null&&(d.visible=o!==null),this}}class Hm extends ti{constructor(e,t,n,r,s,o,l,h,d,f){if(f=f!==void 0?f:cl,f!==cl&&f!==Gc)throw new Error("DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat");n===void 0&&f===cl&&(n=pl),n===void 0&&f===Gc&&(n=zc),super(null,r,s,o,l,h,f,n,d),this.image={width:e,height:t},this.magFilter=l!==void 0?l:Xt,this.minFilter=h!==void 0?h:Xt,this.flipY=!1,this.generateMipmaps=!1}}Hm.prototype.isDepthTexture=!0;class OB extends Ea{constructor(e,t){super();const n=this;let r=null,s=1,o=null,l="local-floor",h=null,d=null,f=null,g=null,y=null,_=null;const w=t.getContextAttributes();let S=null,b=null;const T=[],E=new Map,C=new fi;C.layers.enable(1),C.viewport=new dn;const A=new fi;A.layers.enable(2),A.viewport=new dn;const D=[C,A],I=new t2;I.layers.enable(1),I.layers.enable(2);let F=null,P=null;this.cameraAutoUpdate=!0,this.enabled=!1,this.isPresenting=!1,this.getController=function(se){let ue=T[se];return ue===void 0&&(ue=new my,T[se]=ue),ue.getTargetRaySpace()},this.getControllerGrip=function(se){let ue=T[se];return ue===void 0&&(ue=new my,T[se]=ue),ue.getGripSpace()},this.getHand=function(se){let ue=T[se];return ue===void 0&&(ue=new my,T[se]=ue),ue.getHandSpace()};function k(se){const ue=E.get(se.inputSource);ue&&ue.dispatchEvent({type:se.type,data:se.inputSource})}function j(){E.forEach(function(se,ue){se.disconnect(ue)}),E.clear(),F=null,P=null,e.setRenderTarget(S),y=null,g=null,f=null,r=null,b=null,re.stop(),n.isPresenting=!1,n.dispatchEvent({type:"sessionend"})}this.setFramebufferScaleFactor=function(se){s=se,n.isPresenting===!0&&console.warn("THREE.WebXRManager: Cannot change framebuffer scale while presenting.")},this.setReferenceSpaceType=function(se){l=se,n.isPresenting===!0&&console.warn("THREE.WebXRManager: Cannot change reference space type while presenting.")},this.getReferenceSpace=function(){return h||o},this.setReferenceSpace=function(se){h=se},this.getBaseLayer=function(){return g!==null?g:y},this.getBinding=function(){return f},this.getFrame=function(){return _},this.getSession=function(){return r},this.setSession=async function(se){if(r=se,r!==null){if(S=e.getRenderTarget(),r.addEventListener("select",k),r.addEventListener("selectstart",k),r.addEventListener("selectend",k),r.addEventListener("squeeze",k),r.addEventListener("squeezestart",k),r.addEventListener("squeezeend",k),r.addEventListener("end",j),r.addEventListener("inputsourceschange",G),w.xrCompatible!==!0&&await t.makeXRCompatible(),r.renderState.layers===void 0||e.capabilities.isWebGL2===!1){const ue={antialias:r.renderState.layers===void 0?w.antialias:!0,alpha:w.alpha,depth:w.depth,stencil:w.stencil,framebufferScaleFactor:s};y=new XRWebGLLayer(r,t,ue),r.updateRenderState({baseLayer:y}),b=new Yt(y.framebufferWidth,y.framebufferHeight,{format:Or,type:dl,encoding:e.outputEncoding})}else{let ue=null,Te=null,fe=null;w.depth&&(fe=w.stencil?35056:33190,ue=w.stencil?Gc:cl,Te=w.stencil?zc:pl);const Ce={colorFormat:e.outputEncoding===Ln?35907:32856,depthFormat:fe,scaleFactor:s};f=new XRWebGLBinding(r,t),g=f.createProjectionLayer(Ce),r.updateRenderState({layers:[g]}),b=new Yt(g.textureWidth,g.textureHeight,{format:Or,type:dl,depthTexture:new Hm(g.textureWidth,g.textureHeight,Te,void 0,void 0,void 0,void 0,void 0,void 0,ue),stencilBuffer:w.stencil,encoding:e.outputEncoding,samples:w.antialias?4:0});const qe=e.properties.get(b);qe.__ignoreDepthValues=g.ignoreDepthValues}b.isXRRenderTarget=!0,this.setFoveation(1),o=await r.requestReferenceSpace(l),re.setContext(r),re.start(),n.isPresenting=!0,n.dispatchEvent({type:"sessionstart"})}};function G(se){const ue=r.inputSources;for(let Te=0;Te0&&(S.alphaTest.value=b.alphaTest);const T=e.get(b).envMap;if(T&&(S.envMap.value=T,S.flipEnvMap.value=T.isCubeTexture&&T.isRenderTargetTexture===!1?-1:1,S.reflectivity.value=b.reflectivity,S.ior.value=b.ior,S.refractionRatio.value=b.refractionRatio),b.lightMap){S.lightMap.value=b.lightMap;const A=i.physicallyCorrectLights!==!0?Math.PI:1;S.lightMapIntensity.value=b.lightMapIntensity*A}b.aoMap&&(S.aoMap.value=b.aoMap,S.aoMapIntensity.value=b.aoMapIntensity);let E;b.map?E=b.map:b.specularMap?E=b.specularMap:b.displacementMap?E=b.displacementMap:b.normalMap?E=b.normalMap:b.bumpMap?E=b.bumpMap:b.roughnessMap?E=b.roughnessMap:b.metalnessMap?E=b.metalnessMap:b.alphaMap?E=b.alphaMap:b.emissiveMap?E=b.emissiveMap:b.clearcoatMap?E=b.clearcoatMap:b.clearcoatNormalMap?E=b.clearcoatNormalMap:b.clearcoatRoughnessMap?E=b.clearcoatRoughnessMap:b.specularIntensityMap?E=b.specularIntensityMap:b.specularColorMap?E=b.specularColorMap:b.transmissionMap?E=b.transmissionMap:b.thicknessMap?E=b.thicknessMap:b.sheenColorMap?E=b.sheenColorMap:b.sheenRoughnessMap&&(E=b.sheenRoughnessMap),E!==void 0&&(E.isWebGLRenderTarget&&(E=E.texture),E.matrixAutoUpdate===!0&&E.updateMatrix(),S.uvTransform.value.copy(E.matrix));let C;b.aoMap?C=b.aoMap:b.lightMap&&(C=b.lightMap),C!==void 0&&(C.isWebGLRenderTarget&&(C=C.texture),C.matrixAutoUpdate===!0&&C.updateMatrix(),S.uv2Transform.value.copy(C.matrix))}function s(S,b){S.diffuse.value.copy(b.color),S.opacity.value=b.opacity}function o(S,b){S.dashSize.value=b.dashSize,S.totalSize.value=b.dashSize+b.gapSize,S.scale.value=b.scale}function l(S,b,T,E){S.diffuse.value.copy(b.color),S.opacity.value=b.opacity,S.size.value=b.size*T,S.scale.value=E*.5,b.map&&(S.map.value=b.map),b.alphaMap&&(S.alphaMap.value=b.alphaMap),b.alphaTest>0&&(S.alphaTest.value=b.alphaTest);let C;b.map?C=b.map:b.alphaMap&&(C=b.alphaMap),C!==void 0&&(C.matrixAutoUpdate===!0&&C.updateMatrix(),S.uvTransform.value.copy(C.matrix))}function h(S,b){S.diffuse.value.copy(b.color),S.opacity.value=b.opacity,S.rotation.value=b.rotation,b.map&&(S.map.value=b.map),b.alphaMap&&(S.alphaMap.value=b.alphaMap),b.alphaTest>0&&(S.alphaTest.value=b.alphaTest);let T;b.map?T=b.map:b.alphaMap&&(T=b.alphaMap),T!==void 0&&(T.matrixAutoUpdate===!0&&T.updateMatrix(),S.uvTransform.value.copy(T.matrix))}function d(S,b){S.specular.value.copy(b.specular),S.shininess.value=Math.max(b.shininess,1e-4)}function f(S,b){b.gradientMap&&(S.gradientMap.value=b.gradientMap)}function g(S,b){S.roughness.value=b.roughness,S.metalness.value=b.metalness,b.roughnessMap&&(S.roughnessMap.value=b.roughnessMap),b.metalnessMap&&(S.metalnessMap.value=b.metalnessMap),e.get(b).envMap&&(S.envMapIntensity.value=b.envMapIntensity)}function y(S,b,T){S.ior.value=b.ior,b.sheen>0&&(S.sheenColor.value.copy(b.sheenColor).multiplyScalar(b.sheen),S.sheenRoughness.value=b.sheenRoughness,b.sheenColorMap&&(S.sheenColorMap.value=b.sheenColorMap),b.sheenRoughnessMap&&(S.sheenRoughnessMap.value=b.sheenRoughnessMap)),b.clearcoat>0&&(S.clearcoat.value=b.clearcoat,S.clearcoatRoughness.value=b.clearcoatRoughness,b.clearcoatMap&&(S.clearcoatMap.value=b.clearcoatMap),b.clearcoatRoughnessMap&&(S.clearcoatRoughnessMap.value=b.clearcoatRoughnessMap),b.clearcoatNormalMap&&(S.clearcoatNormalScale.value.copy(b.clearcoatNormalScale),S.clearcoatNormalMap.value=b.clearcoatNormalMap,b.side===xr&&S.clearcoatNormalScale.value.negate())),b.transmission>0&&(S.transmission.value=b.transmission,S.transmissionSamplerMap.value=T.texture,S.transmissionSamplerSize.value.set(T.width,T.height),b.transmissionMap&&(S.transmissionMap.value=b.transmissionMap),S.thickness.value=b.thickness,b.thicknessMap&&(S.thicknessMap.value=b.thicknessMap),S.attenuationDistance.value=b.attenuationDistance,S.attenuationColor.value.copy(b.attenuationColor)),S.specularIntensity.value=b.specularIntensity,S.specularColor.value.copy(b.specularColor),b.specularIntensityMap&&(S.specularIntensityMap.value=b.specularIntensityMap),b.specularColorMap&&(S.specularColorMap.value=b.specularColorMap)}function _(S,b){b.matcap&&(S.matcap.value=b.matcap)}function w(S,b){S.referencePosition.value.copy(b.referencePosition),S.nearDistance.value=b.nearDistance,S.farDistance.value=b.farDistance}return{refreshFogUniforms:t,refreshMaterialUniforms:n}}function NB(){const i=Uh("canvas");return i.style.display="block",i}function cn(i={}){const e=i.canvas!==void 0?i.canvas:NB(),t=i.context!==void 0?i.context:null,n=i.depth!==void 0?i.depth:!0,r=i.stencil!==void 0?i.stencil:!0,s=i.antialias!==void 0?i.antialias:!1,o=i.premultipliedAlpha!==void 0?i.premultipliedAlpha:!0,l=i.preserveDrawingBuffer!==void 0?i.preserveDrawingBuffer:!1,h=i.powerPreference!==void 0?i.powerPreference:"default",d=i.failIfMajorPerformanceCaveat!==void 0?i.failIfMajorPerformanceCaveat:!1;let f;t!==null?f=t.getContextAttributes().alpha:f=i.alpha!==void 0?i.alpha:!1;let g=null,y=null;const _=[],w=[];this.domElement=e,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=Ds,this.physicallyCorrectLights=!1,this.toneMapping=As,this.toneMappingExposure=1;const S=this;let b=!1,T=0,E=0,C=null,A=-1,D=null;const I=new dn,F=new dn;let P=null,k=e.width,j=e.height,G=1,ne=null,ce=null;const Z=new dn(0,0,k,j),$=new dn(0,0,k,j);let K=!1;const pe=new ad;let re=!1,se=!1,ue=null;const Te=new Qe,fe=new ae,Ce=new z,qe={background:null,fog:null,environment:null,overrideMaterial:null,isScene:!0};function Ke(){return C===null?G:1}let me=t;function Ut(V,te){for(let de=0;de0?y=w[w.length-1]:y=null,_.pop(),_.length>0?g=_[_.length-1]:g=null};function jn(V,te,de,oe){if(V.visible===!1)return;if(V.layers.test(te.layers)){if(V.isGroup)de=V.renderOrder;else if(V.isLOD)V.autoUpdate===!0&&V.update(te);else if(V.isLight)y.pushLight(V),V.castShadow&&y.pushShadow(V);else if(V.isSprite){if(!V.frustumCulled||pe.intersectsSprite(V)){oe&&Ce.setFromMatrixPosition(V.matrixWorld).applyMatrix4(Te);const gt=ot.update(V),_t=V.material;_t.visible&&g.push(V,gt,_t,de,Ce.z,null)}}else if((V.isMesh||V.isLine||V.isPoints)&&(V.isSkinnedMesh&&V.skeleton.frame!==vt.render.frame&&(V.skeleton.update(),V.skeleton.frame=vt.render.frame),!V.frustumCulled||pe.intersectsObject(V))){oe&&Ce.setFromMatrixPosition(V.matrixWorld).applyMatrix4(Te);const gt=ot.update(V),_t=V.material;if(Array.isArray(_t)){const St=gt.groups;for(let Dt=0,Nt=St.length;Dt0&&Us(ge,te,de),oe&&Le.viewport(I.copy(oe)),ge.length>0&&Fs(ge,te,de),ht.length>0&&Fs(ht,te,de),gt.length>0&&Fs(gt,te,de),Le.buffers.depth.setTest(!0),Le.buffers.depth.setMask(!0),Le.buffers.color.setMask(!0),Le.setPolygonOffset(!1)}function Us(V,te,de){const oe=it.isWebGL2;ue===null&&(ue=new Yt(1,1,{generateMipmaps:!0,type:nt.has("EXT_color_buffer_half_float")?Ts:dl,minFilter:od,samples:oe&&s===!0?4:0})),S.getDrawingBufferSize(fe),oe?ue.setSize(fe.x,fe.y):ue.setSize(sm(fe.x),sm(fe.y));const ge=S.getRenderTarget();S.setRenderTarget(ue),S.clear();const ht=S.toneMapping;S.toneMapping=As,Fs(V,te,de),S.toneMapping=ht,xe.updateMultisampleRenderTarget(ue),xe.updateRenderTargetMipmap(ue),S.setRenderTarget(ge)}function Fs(V,te,de){const oe=te.isScene===!0?te.overrideMaterial:null;for(let ge=0,ht=V.length;ge0&&xe.useMultisampledRTT(V)===!1?ge=ve.get(V).__webglMultisampledFramebuffer:ge=Dt,I.copy(V.viewport),F.copy(V.scissor),P=V.scissorTest}else I.copy(Z).multiplyScalar(G).floor(),F.copy($).multiplyScalar(G).floor(),P=K;if(Le.bindFramebuffer(36160,ge)&&it.drawBuffers&&oe&&Le.drawBuffers(V,ge),Le.viewport(I),Le.scissor(F),Le.setScissorTest(P),ht){const St=ve.get(V.texture);me.framebufferTexture2D(36160,36064,34069+te,St.__webglTexture,de)}else if(gt){const St=ve.get(V.texture),Dt=te||0;me.framebufferTextureLayer(36160,36064,St.__webglTexture,de||0,Dt)}A=-1},this.readRenderTargetPixels=function(V,te,de,oe,ge,ht,gt){if(!(V&&V.isWebGLRenderTarget)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");return}let _t=ve.get(V).__webglFramebuffer;if(V.isWebGLCubeRenderTarget&>!==void 0&&(_t=_t[gt]),_t){Le.bindFramebuffer(36160,_t);try{const St=V.texture,Dt=St.format,Nt=St.type;if(Dt!==Or&&U.convert(Dt)!==me.getParameter(35739)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.");return}const Vt=Nt===Ts&&(nt.has("EXT_color_buffer_half_float")||it.isWebGL2&&nt.has("EXT_color_buffer_float"));if(Nt!==dl&&U.convert(Nt)!==me.getParameter(35738)&&!(Nt===is&&(it.isWebGL2||nt.has("OES_texture_float")||nt.has("WEBGL_color_buffer_float")))&&!Vt){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.");return}te>=0&&te<=V.width-oe&&de>=0&&de<=V.height-ge&&me.readPixels(te,de,oe,ge,U.convert(Dt),U.convert(Nt),ht)}finally{const St=C!==null?ve.get(C).__webglFramebuffer:null;Le.bindFramebuffer(36160,St)}}},this.copyFramebufferToTexture=function(V,te,de=0){if(te.isFramebufferTexture!==!0){console.error("THREE.WebGLRenderer: copyFramebufferToTexture() can only be used with FramebufferTexture.");return}const oe=Math.pow(2,-de),ge=Math.floor(te.image.width*oe),ht=Math.floor(te.image.height*oe);xe.setTexture2D(te,0),me.copyTexSubImage2D(3553,de,0,0,V.x,V.y,ge,ht),Le.unbindTexture()},this.copyTextureToTexture=function(V,te,de,oe=0){const ge=te.image.width,ht=te.image.height,gt=U.convert(de.format),_t=U.convert(de.type);xe.setTexture2D(de,0),me.pixelStorei(37440,de.flipY),me.pixelStorei(37441,de.premultiplyAlpha),me.pixelStorei(3317,de.unpackAlignment),te.isDataTexture?me.texSubImage2D(3553,oe,V.x,V.y,ge,ht,gt,_t,te.image.data):te.isCompressedTexture?me.compressedTexSubImage2D(3553,oe,V.x,V.y,te.mipmaps[0].width,te.mipmaps[0].height,gt,te.mipmaps[0].data):me.texSubImage2D(3553,oe,V.x,V.y,gt,_t,te.image),oe===0&&de.generateMipmaps&&me.generateMipmap(3553),Le.unbindTexture()},this.copyTextureToTexture3D=function(V,te,de,oe,ge=0){if(S.isWebGL1Renderer){console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: can only be used with WebGL2.");return}const ht=V.max.x-V.min.x+1,gt=V.max.y-V.min.y+1,_t=V.max.z-V.min.z+1,St=U.convert(oe.format),Dt=U.convert(oe.type);let Nt;if(oe.isData3DTexture)xe.setTexture3D(oe,0),Nt=32879;else if(oe.isDataArrayTexture)xe.setTexture2DArray(oe,0),Nt=35866;else{console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: only supports THREE.DataTexture3D and THREE.DataTexture2DArray.");return}me.pixelStorei(37440,oe.flipY),me.pixelStorei(37441,oe.premultiplyAlpha),me.pixelStorei(3317,oe.unpackAlignment);const Vt=me.getParameter(3314),yn=me.getParameter(32878),Tr=me.getParameter(3316),ls=me.getParameter(3315),cs=me.getParameter(32877),ci=de.isCompressedTexture?de.mipmaps[0]:de.image;me.pixelStorei(3314,ci.width),me.pixelStorei(32878,ci.height),me.pixelStorei(3316,V.min.x),me.pixelStorei(3315,V.min.y),me.pixelStorei(32877,V.min.z),de.isDataTexture||de.isData3DTexture?me.texSubImage3D(Nt,ge,te.x,te.y,te.z,ht,gt,_t,St,Dt,ci.data):de.isCompressedTexture?(console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: untested support for compressed srcTexture."),me.compressedTexSubImage3D(Nt,ge,te.x,te.y,te.z,ht,gt,_t,St,ci.data)):me.texSubImage3D(Nt,ge,te.x,te.y,te.z,ht,gt,_t,St,Dt,ci),me.pixelStorei(3314,Vt),me.pixelStorei(32878,yn),me.pixelStorei(3316,Tr),me.pixelStorei(3315,ls),me.pixelStorei(32877,cs),ge===0&&oe.generateMipmaps&&me.generateMipmap(Nt),Le.unbindTexture()},this.initTexture=function(V){xe.setTexture2D(V,0),Le.unbindTexture()},this.resetState=function(){T=0,E=0,C=null,Le.reset(),Ee.reset()},typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}cn.prototype.isWebGLRenderer=!0;class BB extends cn{}BB.prototype.isWebGL1Renderer=!0;class Gm{constructor(e,t=1,n=1e3){this.name="",this.color=new Pe(e),this.near=t,this.far=n}clone(){return new Gm(this.color,this.near,this.far)}toJSON(){return{type:"Fog",color:this.color.getHex(),near:this.near,far:this.far}}}Gm.prototype.isFog=!0;class cx extends $t{constructor(){super(),this.type="Scene",this.background=null,this.environment=null,this.fog=null,this.overrideMaterial=null,this.autoUpdate=!0,typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}copy(e,t){return super.copy(e,t),e.background!==null&&(this.background=e.background.clone()),e.environment!==null&&(this.environment=e.environment.clone()),e.fog!==null&&(this.fog=e.fog.clone()),e.overrideMaterial!==null&&(this.overrideMaterial=e.overrideMaterial.clone()),this.autoUpdate=e.autoUpdate,this.matrixAutoUpdate=e.matrixAutoUpdate,this}toJSON(e){const t=super.toJSON(e);return this.fog!==null&&(t.object.fog=this.fog.toJSON()),t}}cx.prototype.isScene=!0;class cd{constructor(e,t){this.array=e,this.stride=t,this.count=e!==void 0?e.length/t:0,this.usage=Bh,this.updateRange={offset:0,count:-1},this.version=0,this.uuid=kr()}onUploadCallback(){}set needsUpdate(e){e===!0&&this.version++}setUsage(e){return this.usage=e,this}copy(e){return this.array=new e.array.constructor(e.array),this.count=e.count,this.stride=e.stride,this.usage=e.usage,this}copyAt(e,t,n){e*=this.stride,n*=t.stride;for(let r=0,s=this.stride;re.far||t.push({distance:h,point:nh.clone(),uv:oi.getUV(nh,of,rh,af,dS,vy,pS,new ae),face:null,object:this})}copy(e){return super.copy(e),e.center!==void 0&&this.center.copy(e.center),this.material=e.material,this}}ux.prototype.isSprite=!0;function lf(i,e,t,n,r,s){Ec.subVectors(i,t).addScalar(.5).multiply(n),r!==void 0?(ih.x=s*Ec.x-r*Ec.y,ih.y=r*Ec.x+s*Ec.y):ih.copy(Ec),i.copy(e),i.x+=ih.x,i.y+=ih.y,i.applyMatrix4(n2)}const fS=new z,mS=new dn,vS=new dn,zB=new z,gS=new Qe;class i2 extends In{constructor(e,t){super(e,t),this.type="SkinnedMesh",this.bindMode="attached",this.bindMatrix=new Qe,this.bindMatrixInverse=new Qe}copy(e){return super.copy(e),this.bindMode=e.bindMode,this.bindMatrix.copy(e.bindMatrix),this.bindMatrixInverse.copy(e.bindMatrixInverse),this.skeleton=e.skeleton,this}bind(e,t){this.skeleton=e,t===void 0&&(this.updateMatrixWorld(!0),this.skeleton.calculateInverses(),t=this.matrixWorld),this.bindMatrix.copy(t),this.bindMatrixInverse.copy(t).invert()}pose(){this.skeleton.pose()}normalizeSkinWeights(){const e=new dn,t=this.geometry.attributes.skinWeight;for(let n=0,r=t.count;nh)continue;y.applyMatrix4(this.matrixWorld);const P=e.ray.origin.distanceTo(y);Pe.far||t.push({distance:P,point:g.clone().applyMatrix4(this.matrixWorld),index:C,face:null,faceIndex:null,object:this})}}else{const T=Math.max(0,o.start),E=Math.min(b.count,o.start+o.count);for(let C=T,A=E-1;Ch)continue;y.applyMatrix4(this.matrixWorld);const I=e.ray.origin.distanceTo(y);Ie.far||t.push({distance:I,point:g.clone().applyMatrix4(this.matrixWorld),index:C,face:null,faceIndex:null,object:this})}}}else n.isGeometry&&console.error("THREE.Line.raycast() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.")}updateMorphTargets(){const e=this.geometry;if(e.isBufferGeometry){const t=e.morphAttributes,n=Object.keys(t);if(n.length>0){const r=t[n[0]];if(r!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let s=0,o=r.length;s0&&console.error("THREE.Line.updateMorphTargets() does not support THREE.Geometry. Use THREE.BufferGeometry instead.")}}}jc.prototype.isLine=!0;const MS=new z,ES=new z;class fl extends jc{constructor(e,t){super(e,t),this.type="LineSegments"}computeLineDistances(){const e=this.geometry;if(e.isBufferGeometry)if(e.index===null){const t=e.attributes.position,n=[];for(let r=0,s=t.count;r0){const r=t[n[0]];if(r!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let s=0,o=r.length;s0&&console.error("THREE.Points.updateMorphTargets() does not support THREE.Geometry. Use THREE.BufferGeometry instead.")}}}HB.prototype.isPoints=!0;function AS(i,e,t,n,r,s,o){const l=Jy.distanceSqToPoint(i);if(lr.far)return;s.push({distance:d,distanceToRay:Math.sqrt(l),point:h,index:e,face:null,object:o})}}class s2 extends ti{constructor(e,t,n,r,s,o,l,h,d){super(e,t,n,r,s,o,l,h,d),this.minFilter=o!==void 0?o:Hn,this.magFilter=s!==void 0?s:Hn,this.generateMipmaps=!1;const f=this;function g(){f.needsUpdate=!0,e.requestVideoFrameCallback(g)}"requestVideoFrameCallback"in e&&e.requestVideoFrameCallback(g)}clone(){return new this.constructor(this.image).copy(this)}update(){const e=this.image;"requestVideoFrameCallback"in e===!1&&e.readyState>=e.HAVE_CURRENT_DATA&&(this.needsUpdate=!0)}}s2.prototype.isVideoTexture=!0;class GB extends ti{constructor(e,t,n){super({width:e,height:t}),this.format=n,this.magFilter=Xt,this.minFilter=Xt,this.generateMipmaps=!1,this.needsUpdate=!0}}GB.prototype.isFramebufferTexture=!0;class WB extends ti{constructor(e,t,n,r,s,o,l,h,d,f,g,y){super(null,o,l,h,d,f,r,s,g,y),this.image={width:t,height:n},this.mipmaps=e,this.flipY=!1,this.generateMipmaps=!1}}WB.prototype.isCompressedTexture=!0;class jB extends ti{constructor(e,t,n,r,s,o,l,h,d){super(e,t,n,r,s,o,l,h,d),this.needsUpdate=!0}}jB.prototype.isCanvasTexture=!0;class Nr{constructor(){this.type="Curve",this.arcLengthDivisions=200}getPoint(){return console.warn("THREE.Curve: .getPoint() not implemented."),null}getPointAt(e,t){const n=this.getUtoTmapping(e);return this.getPoint(n,t)}getPoints(e=5){const t=[];for(let n=0;n<=e;n++)t.push(this.getPoint(n/e));return t}getSpacedPoints(e=5){const t=[];for(let n=0;n<=e;n++)t.push(this.getPointAt(n/e));return t}getLength(){const e=this.getLengths();return e[e.length-1]}getLengths(e=this.arcLengthDivisions){if(this.cacheArcLengths&&this.cacheArcLengths.length===e+1&&!this.needsUpdate)return this.cacheArcLengths;this.needsUpdate=!1;const t=[];let n,r=this.getPoint(0),s=0;t.push(0);for(let o=1;o<=e;o++)n=this.getPoint(o/e),s+=n.distanceTo(r),t.push(s),r=n;return this.cacheArcLengths=t,t}updateArcLengths(){this.needsUpdate=!0,this.getLengths()}getUtoTmapping(e,t){const n=this.getLengths();let r=0;const s=n.length;let o;t?o=t:o=e*n[s-1];let l=0,h=s-1,d;for(;l<=h;)if(r=Math.floor(l+(h-l)/2),d=n[r]-o,d<0)l=r+1;else if(d>0)h=r-1;else{h=r;break}if(r=h,n[r]===o)return r/(s-1);const f=n[r],y=n[r+1]-f,_=(o-f)/y;return(r+_)/(s-1)}getTangent(e,t){let r=e-1e-4,s=e+1e-4;r<0&&(r=0),s>1&&(s=1);const o=this.getPoint(r),l=this.getPoint(s),h=t||(o.isVector2?new ae:new z);return h.copy(l).sub(o).normalize(),h}getTangentAt(e,t){const n=this.getUtoTmapping(e);return this.getTangent(n,t)}computeFrenetFrames(e,t){const n=new z,r=[],s=[],o=[],l=new z,h=new Qe;for(let _=0;_<=e;_++){const w=_/e;r[_]=this.getTangentAt(w,new z)}s[0]=new z,o[0]=new z;let d=Number.MAX_VALUE;const f=Math.abs(r[0].x),g=Math.abs(r[0].y),y=Math.abs(r[0].z);f<=d&&(d=f,n.set(1,0,0)),g<=d&&(d=g,n.set(0,1,0)),y<=d&&n.set(0,0,1),l.crossVectors(r[0],n).normalize(),s[0].crossVectors(r[0],l),o[0].crossVectors(r[0],s[0]);for(let _=1;_<=e;_++){if(s[_]=s[_-1].clone(),o[_]=o[_-1].clone(),l.crossVectors(r[_-1],r[_]),l.length()>Number.EPSILON){l.normalize();const w=Math.acos(Jn(r[_-1].dot(r[_]),-1,1));s[_].applyMatrix4(h.makeRotationAxis(l,w))}o[_].crossVectors(r[_],s[_])}if(t===!0){let _=Math.acos(Jn(s[0].dot(s[e]),-1,1));_/=e,r[0].dot(l.crossVectors(s[0],s[e]))>0&&(_=-_);for(let w=1;w<=e;w++)s[w].applyMatrix4(h.makeRotationAxis(r[w],_*w)),o[w].crossVectors(r[w],s[w])}return{tangents:r,normals:s,binormals:o}}clone(){return new this.constructor().copy(this)}copy(e){return this.arcLengthDivisions=e.arcLengthDivisions,this}toJSON(){const e={metadata:{version:4.5,type:"Curve",generator:"Curve.toJSON"}};return e.arcLengthDivisions=this.arcLengthDivisions,e.type=this.type,e}fromJSON(e){return this.arcLengthDivisions=e.arcLengthDivisions,this}}class Wm extends Nr{constructor(e=0,t=0,n=1,r=1,s=0,o=Math.PI*2,l=!1,h=0){super(),this.type="EllipseCurve",this.aX=e,this.aY=t,this.xRadius=n,this.yRadius=r,this.aStartAngle=s,this.aEndAngle=o,this.aClockwise=l,this.aRotation=h}getPoint(e,t){const n=t||new ae,r=Math.PI*2;let s=this.aEndAngle-this.aStartAngle;const o=Math.abs(s)r;)s-=r;s0?0:(Math.floor(Math.abs(l)/s)+1)*s:h===0&&l===s-1&&(l=s-2,h=1);let d,f;this.closed||l>0?d=r[(l-1)%s]:(pf.subVectors(r[0],r[1]).add(r[0]),d=pf);const g=r[l%s],y=r[(l+1)%s];if(this.closed||l+2r.length-2?r.length-1:o+1],g=r[o>r.length-3?r.length-1:o+2];return n.set(CS(l,h.x,d.x,f.x,g.x),CS(l,h.y,d.y,f.y,g.y)),n}copy(e){super.copy(e),this.points=[];for(let t=0,n=e.points.length;t=n){const o=r[s]-n,l=this.curves[s],h=l.getLength(),d=h===0?0:1-o/h;return l.getPointAt(d,t)}s++}return null}getLength(){const e=this.getCurveLengths();return e[e.length-1]}updateArcLengths(){this.needsUpdate=!0,this.cacheLengths=null,this.getCurveLengths()}getCurveLengths(){if(this.cacheLengths&&this.cacheLengths.length===this.curves.length)return this.cacheLengths;const e=[];let t=0;for(let n=0,r=this.curves.length;n1&&!t[t.length-1].equals(t[0])&&t.push(t[0]),t}copy(e){super.copy(e),this.curves=[];for(let t=0,n=e.curves.length;t0){const g=d.getPoint(0);g.equals(this.currentPoint)||this.lineTo(g.x,g.y)}this.curves.push(d);const f=d.getPoint(1);return this.currentPoint.copy(f),this}copy(e){return super.copy(e),this.currentPoint.copy(e.currentPoint),this}toJSON(){const e=super.toJSON();return e.currentPoint=this.currentPoint.toArray(),e}fromJSON(e){return super.fromJSON(e),this.currentPoint.fromArray(e.currentPoint),this}}class yx extends zt{constructor(e=1,t=8,n=0,r=Math.PI*2){super(),this.type="CircleGeometry",this.parameters={radius:e,segments:t,thetaStart:n,thetaLength:r},t=Math.max(3,t);const s=[],o=[],l=[],h=[],d=new z,f=new ae;o.push(0,0,0),l.push(0,0,1),h.push(.5,.5);for(let g=0,y=3;g<=t;g++,y+=3){const _=n+g/t*r;d.x=e*Math.cos(_),d.y=e*Math.sin(_),o.push(d.x,d.y,d.z),l.push(0,0,1),f.x=(o[y]/e+1)/2,f.y=(o[y+1]/e+1)/2,h.push(f.x,f.y)}for(let g=1;g<=t;g++)s.push(g,g+1,0);this.setIndex(s),this.setAttribute("position",new xt(o,3)),this.setAttribute("normal",new xt(l,3)),this.setAttribute("uv",new xt(h,2))}static fromJSON(e){return new yx(e.radius,e.segments,e.thetaStart,e.thetaLength)}}class Xm extends zt{constructor(e=1,t=1,n=1,r=8,s=1,o=!1,l=0,h=Math.PI*2){super(),this.type="CylinderGeometry",this.parameters={radiusTop:e,radiusBottom:t,height:n,radialSegments:r,heightSegments:s,openEnded:o,thetaStart:l,thetaLength:h};const d=this;r=Math.floor(r),s=Math.floor(s);const f=[],g=[],y=[],_=[];let w=0;const S=[],b=n/2;let T=0;E(),o===!1&&(e>0&&C(!0),t>0&&C(!1)),this.setIndex(f),this.setAttribute("position",new xt(g,3)),this.setAttribute("normal",new xt(y,3)),this.setAttribute("uv",new xt(_,2));function E(){const A=new z,D=new z;let I=0;const F=(t-e)/n;for(let P=0;P<=s;P++){const k=[],j=P/s,G=j*(t-e)+e;for(let ne=0;ne<=r;ne++){const ce=ne/r,Z=ce*h+l,$=Math.sin(Z),K=Math.cos(Z);D.x=G*$,D.y=-j*n+b,D.z=G*K,g.push(D.x,D.y,D.z),A.set($,F,K).normalize(),y.push(A.x,A.y,A.z),_.push(ce,1-j),k.push(w++)}S.push(k)}for(let P=0;P.9&&F<.1&&(C<.2&&(o[E+0]+=1),A<.2&&(o[E+2]+=1),D<.2&&(o[E+4]+=1))}}function y(E){s.push(E.x,E.y,E.z)}function _(E,C){const A=E*3;C.x=e[A+0],C.y=e[A+1],C.z=e[A+2]}function w(){const E=new z,C=new z,A=new z,D=new z,I=new ae,F=new ae,P=new ae;for(let k=0,j=0;k80*t){l=d=i[0],h=f=i[1];for(let w=t;wd&&(d=g),y>f&&(f=y);_=Math.max(d-l,f-h),_=_!==0?1/_:0}return Vh(s,o,t,l,h,_),o}};function h2(i,e,t,n,r){let s,o;if(r===g6(i,e,t,n)>0)for(s=e;s=e;s-=n)o=PS(s,i[s],i[s+1],o);return o&&Ym(o,o.next)&&(Gh(o),o=o.next),o}function xa(i,e){if(!i)return i;e||(e=i);let t=i,n;do if(n=!1,!t.steiner&&(Ym(t,t.next)||zn(t.prev,t,t.next)===0)){if(Gh(t),t=e=t.prev,t===t.next)break;n=!0}else t=t.next;while(n||t!==e);return e}function Vh(i,e,t,n,r,s,o){if(!i)return;!o&&s&&h6(i,n,r,s);let l=i,h,d;for(;i.prev!==i.next;){if(h=i.prev,d=i.next,s?i6(i,n,r,s):n6(i)){e.push(h.i/t),e.push(i.i/t),e.push(d.i/t),Gh(i),i=d.next,l=d.next;continue}if(i=d,i===l){o?o===1?(i=r6(xa(i),e,t),Vh(i,e,t,n,r,s,2)):o===2&&s6(i,e,t,n,r,s):Vh(xa(i),e,t,n,r,s,1);break}}}function n6(i){const e=i.prev,t=i,n=i.next;if(zn(e,t,n)>=0)return!1;let r=i.next.next;for(;r!==i.prev;){if(Nc(e.x,e.y,t.x,t.y,n.x,n.y,r.x,r.y)&&zn(r.prev,r,r.next)>=0)return!1;r=r.next}return!0}function i6(i,e,t,n){const r=i.prev,s=i,o=i.next;if(zn(r,s,o)>=0)return!1;const l=r.xs.x?r.x>o.x?r.x:o.x:s.x>o.x?s.x:o.x,f=r.y>s.y?r.y>o.y?r.y:o.y:s.y>o.y?s.y:o.y,g=Qy(l,h,e,t,n),y=Qy(d,f,e,t,n);let _=i.prevZ,w=i.nextZ;for(;_&&_.z>=g&&w&&w.z<=y;){if(_!==i.prev&&_!==i.next&&Nc(r.x,r.y,s.x,s.y,o.x,o.y,_.x,_.y)&&zn(_.prev,_,_.next)>=0||(_=_.prevZ,w!==i.prev&&w!==i.next&&Nc(r.x,r.y,s.x,s.y,o.x,o.y,w.x,w.y)&&zn(w.prev,w,w.next)>=0))return!1;w=w.nextZ}for(;_&&_.z>=g;){if(_!==i.prev&&_!==i.next&&Nc(r.x,r.y,s.x,s.y,o.x,o.y,_.x,_.y)&&zn(_.prev,_,_.next)>=0)return!1;_=_.prevZ}for(;w&&w.z<=y;){if(w!==i.prev&&w!==i.next&&Nc(r.x,r.y,s.x,s.y,o.x,o.y,w.x,w.y)&&zn(w.prev,w,w.next)>=0)return!1;w=w.nextZ}return!0}function r6(i,e,t){let n=i;do{const r=n.prev,s=n.next.next;!Ym(r,s)&&d2(r,n,n.next,s)&&Hh(r,s)&&Hh(s,r)&&(e.push(r.i/t),e.push(n.i/t),e.push(s.i/t),Gh(n),Gh(n.next),n=i=s),n=n.next}while(n!==i);return xa(n)}function s6(i,e,t,n,r,s){let o=i;do{let l=o.next.next;for(;l!==o.prev;){if(o.i!==l.i&&f6(o,l)){let h=p2(o,l);o=xa(o,o.next),h=xa(h,h.next),Vh(o,e,t,n,r,s),Vh(h,e,t,n,r,s);return}l=l.next}o=o.next}while(o!==i)}function o6(i,e,t,n){const r=[];let s,o,l,h,d;for(s=0,o=e.length;s=t.next.y&&t.next.y!==t.y){const y=t.x+(r-t.y)*(t.next.x-t.x)/(t.next.y-t.y);if(y<=n&&y>s){if(s=y,y===n){if(r===t.y)return t;if(r===t.next.y)return t.next}o=t.x=t.x&&t.x>=h&&n!==t.x&&Nc(ro.x||t.x===o.x&&u6(o,t)))&&(o=t,f=g)),t=t.next;while(t!==l);return o}function u6(i,e){return zn(i.prev,i,e.prev)<0&&zn(e.next,i,i.next)<0}function h6(i,e,t,n){let r=i;do r.z===null&&(r.z=Qy(r.x,r.y,e,t,n)),r.prevZ=r.prev,r.nextZ=r.next,r=r.next;while(r!==i);r.prevZ.nextZ=null,r.prevZ=null,d6(r)}function d6(i){let e,t,n,r,s,o,l,h,d=1;do{for(t=i,i=null,s=null,o=0;t;){for(o++,n=t,l=0,e=0;e0||h>0&&n;)l!==0&&(h===0||!n||t.z<=n.z)?(r=t,t=t.nextZ,l--):(r=n,n=n.nextZ,h--),s?s.nextZ=r:i=r,r.prevZ=s,s=r;t=n}s.nextZ=null,d*=2}while(o>1);return i}function Qy(i,e,t,n,r){return i=32767*(i-t)*r,e=32767*(e-n)*r,i=(i|i<<8)&16711935,i=(i|i<<4)&252645135,i=(i|i<<2)&858993459,i=(i|i<<1)&1431655765,e=(e|e<<8)&16711935,e=(e|e<<4)&252645135,e=(e|e<<2)&858993459,e=(e|e<<1)&1431655765,i|e<<1}function p6(i){let e=i,t=i;do(e.x=0&&(i-o)*(n-l)-(t-o)*(e-l)>=0&&(t-o)*(s-l)-(r-o)*(n-l)>=0}function f6(i,e){return i.next.i!==e.i&&i.prev.i!==e.i&&!m6(i,e)&&(Hh(i,e)&&Hh(e,i)&&v6(i,e)&&(zn(i.prev,i,e.prev)||zn(i,e.prev,e))||Ym(i,e)&&zn(i.prev,i,i.next)>0&&zn(e.prev,e,e.next)>0)}function zn(i,e,t){return(e.y-i.y)*(t.x-e.x)-(e.x-i.x)*(t.y-e.y)}function Ym(i,e){return i.x===e.x&&i.y===e.y}function d2(i,e,t,n){const r=mf(zn(i,e,t)),s=mf(zn(i,e,n)),o=mf(zn(t,n,i)),l=mf(zn(t,n,e));return!!(r!==s&&o!==l||r===0&&ff(i,t,e)||s===0&&ff(i,n,e)||o===0&&ff(t,i,n)||l===0&&ff(t,e,n))}function ff(i,e,t){return e.x<=Math.max(i.x,t.x)&&e.x>=Math.min(i.x,t.x)&&e.y<=Math.max(i.y,t.y)&&e.y>=Math.min(i.y,t.y)}function mf(i){return i>0?1:i<0?-1:0}function m6(i,e){let t=i;do{if(t.i!==i.i&&t.next.i!==i.i&&t.i!==e.i&&t.next.i!==e.i&&d2(t,t.next,i,e))return!0;t=t.next}while(t!==i);return!1}function Hh(i,e){return zn(i.prev,i,i.next)<0?zn(i,e,i.next)>=0&&zn(i,i.prev,e)>=0:zn(i,e,i.prev)<0||zn(i,i.next,e)<0}function v6(i,e){let t=i,n=!1;const r=(i.x+e.x)/2,s=(i.y+e.y)/2;do t.y>s!=t.next.y>s&&t.next.y!==t.y&&r<(t.next.x-t.x)*(s-t.y)/(t.next.y-t.y)+t.x&&(n=!n),t=t.next;while(t!==i);return n}function p2(i,e){const t=new $y(i.i,i.x,i.y),n=new $y(e.i,e.x,e.y),r=i.next,s=e.prev;return i.next=e,e.prev=i,t.next=r,r.prev=t,n.next=t,t.prev=n,s.next=n,n.prev=s,n}function PS(i,e,t,n){const r=new $y(i,e,t);return n?(r.next=n.next,r.prev=n,n.next.prev=r,n.next=r):(r.prev=r,r.next=r),r}function Gh(i){i.next.prev=i.prev,i.prev.next=i.next,i.prevZ&&(i.prevZ.nextZ=i.nextZ),i.nextZ&&(i.nextZ.prevZ=i.prevZ)}function $y(i,e,t){this.i=i,this.x=e,this.y=t,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1}function g6(i,e,t,n){let r=0;for(let s=e,o=t-n;s2&&i[e-1].equals(i[0])&&i.pop()}function LS(i,e){for(let t=0;tNumber.EPSILON){const he=Math.sqrt(H),we=Math.sqrt(Ft*Ft+yt*yt),Ne=xe.x-st/he,Ue=xe.y+ot/he,Xe=Ae.x-yt/we,U=Ae.y+Ft/we,Ee=((Xe-Ne)*yt-(U-Ue)*Ft)/(ot*yt-st*Ft);We=Ne+ot*Ee-ve.x,Be=Ue+st*Ee-ve.y;const Je=We*We+Be*Be;if(Je<=2)return new ae(We,Be);rt=Math.sqrt(Je/2)}else{let he=!1;ot>Number.EPSILON?Ft>Number.EPSILON&&(he=!0):ot<-Number.EPSILON?Ft<-Number.EPSILON&&(he=!0):Math.sign(st)===Math.sign(yt)&&(he=!0),he?(We=-st,Be=ot,rt=Math.sqrt(H)):(We=ot,Be=st,rt=Math.sqrt(H/2))}return new ae(We/rt,Be/rt)}const se=[];for(let ve=0,xe=Z.length,Ae=xe-1,We=ve+1;ve=0;ve--){const xe=ve/b,Ae=_*Math.cos(xe*Math.PI/2),We=w*Math.sin(xe*Math.PI/2)+S;for(let Be=0,rt=Z.length;Be=0;){const We=Ae;let Be=Ae-1;Be<0&&(Be=ve.length-1);for(let rt=0,ot=f+b*2;rt0)&&_.push(C,A,I),(T!==n-1||h0!=e>0&&this.version++,this._sheen=e}get clearcoat(){return this._clearcoat}set clearcoat(e){this._clearcoat>0!=e>0&&this.version++,this._clearcoat=e}get transmission(){return this._transmission}set transmission(e){this._transmission>0!=e>0&&this.version++,this._transmission=e}copy(e){return super.copy(e),this.defines={STANDARD:"",PHYSICAL:""},this.clearcoat=e.clearcoat,this.clearcoatMap=e.clearcoatMap,this.clearcoatRoughness=e.clearcoatRoughness,this.clearcoatRoughnessMap=e.clearcoatRoughnessMap,this.clearcoatNormalMap=e.clearcoatNormalMap,this.clearcoatNormalScale.copy(e.clearcoatNormalScale),this.ior=e.ior,this.sheen=e.sheen,this.sheenColor.copy(e.sheenColor),this.sheenColorMap=e.sheenColorMap,this.sheenRoughness=e.sheenRoughness,this.sheenRoughnessMap=e.sheenRoughnessMap,this.transmission=e.transmission,this.transmissionMap=e.transmissionMap,this.thickness=e.thickness,this.thicknessMap=e.thicknessMap,this.attenuationDistance=e.attenuationDistance,this.attenuationColor.copy(e.attenuationColor),this.specularIntensity=e.specularIntensity,this.specularIntensityMap=e.specularIntensityMap,this.specularColor.copy(e.specularColor),this.specularColorMap=e.specularColorMap,this}}v2.prototype.isMeshPhysicalMaterial=!0;class g2 extends li{constructor(e){super(),this.type="MeshPhongMaterial",this.color=new Pe(16777215),this.specular=new Pe(1118481),this.shininess=30,this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new Pe(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=_l,this.normalScale=new ae(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.combine=km,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.specular.copy(e.specular),this.shininess=e.shininess,this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.flatShading=e.flatShading,this.fog=e.fog,this}}g2.prototype.isMeshPhongMaterial=!0;class Sx extends li{constructor(e){super(),this.defines={TOON:""},this.type="MeshToonMaterial",this.color=new Pe(16777215),this.map=null,this.gradientMap=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new Pe(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=_l,this.normalScale=new ae(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.alphaMap=null,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.gradientMap=e.gradientMap,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.alphaMap=e.alphaMap,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.fog=e.fog,this}}Sx.prototype.isMeshToonMaterial=!0;class Jm extends li{constructor(e){super(),this.type="MeshNormalMaterial",this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=_l,this.normalScale=new ae(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.flatShading=!1,this.setValues(e)}copy(e){return super.copy(e),this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.flatShading=e.flatShading,this}}Jm.prototype.isMeshNormalMaterial=!0;class y2 extends li{constructor(e){super(),this.type="MeshLambertMaterial",this.color=new Pe(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new Pe(0),this.emissiveIntensity=1,this.emissiveMap=null,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.combine=km,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.fog=e.fog,this}}y2.prototype.isMeshLambertMaterial=!0;class _2 extends li{constructor(e){super(),this.defines={MATCAP:""},this.type="MeshMatcapMaterial",this.color=new Pe(16777215),this.matcap=null,this.map=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=_l,this.normalScale=new ae(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.alphaMap=null,this.flatShading=!1,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.defines={MATCAP:""},this.color.copy(e.color),this.matcap=e.matcap,this.map=e.map,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.alphaMap=e.alphaMap,this.flatShading=e.flatShading,this.fog=e.fog,this}}_2.prototype.isMeshMatcapMaterial=!0;class x2 extends os{constructor(e){super(),this.type="LineDashedMaterial",this.scale=1,this.dashSize=3,this.gapSize=1,this.setValues(e)}copy(e){return super.copy(e),this.scale=e.scale,this.dashSize=e.dashSize,this.gapSize=e.gapSize,this}}x2.prototype.isLineDashedMaterial=!0;const b6={ShadowMaterial:f2,SpriteMaterial:ud,RawShaderMaterial:m2,ShaderMaterial:kt,PointsMaterial:px,MeshPhysicalMaterial:v2,MeshStandardMaterial:wl,MeshPhongMaterial:g2,MeshToonMaterial:Sx,MeshNormalMaterial:Jm,MeshLambertMaterial:y2,MeshDepthMaterial:lu,MeshDistanceMaterial:lx,MeshBasicMaterial:ss,MeshMatcapMaterial:_2,LineDashedMaterial:x2,LineBasicMaterial:os,Material:li};li.fromType=function(i){return new b6[i]};const Dn={arraySlice:function(i,e,t){return Dn.isTypedArray(i)?new i.constructor(i.subarray(e,t!==void 0?t:i.length)):i.slice(e,t)},convertArray:function(i,e,t){return!i||!t&&i.constructor===e?i:typeof e.BYTES_PER_ELEMENT=="number"?new e(i):Array.prototype.slice.call(i)},isTypedArray:function(i){return ArrayBuffer.isView(i)&&!(i instanceof DataView)},getKeyframeOrder:function(i){function e(r,s){return i[r]-i[s]}const t=i.length,n=new Array(t);for(let r=0;r!==t;++r)n[r]=r;return n.sort(e),n},sortedArray:function(i,e,t){const n=i.length,r=new i.constructor(n);for(let s=0,o=0;o!==n;++s){const l=t[s]*e;for(let h=0;h!==e;++h)r[o++]=i[l+h]}return r},flattenJSON:function(i,e,t,n){let r=1,s=i[0];for(;s!==void 0&&s[n]===void 0;)s=i[r++];if(s===void 0)return;let o=s[n];if(o!==void 0)if(Array.isArray(o))do o=s[n],o!==void 0&&(e.push(s.time),t.push.apply(t,o)),s=i[r++];while(s!==void 0);else if(o.toArray!==void 0)do o=s[n],o!==void 0&&(e.push(s.time),o.toArray(t,t.length)),s=i[r++];while(s!==void 0);else do o=s[n],o!==void 0&&(e.push(s.time),t.push(o)),s=i[r++];while(s!==void 0)},subclip:function(i,e,t,n,r=30){const s=i.clone();s.name=e;const o=[];for(let h=0;h=n)){g.push(d.times[_]);for(let S=0;Ss.tracks[h].times[0]&&(l=s.tracks[h].times[0]);for(let h=0;h=l.times[w]){const T=w*g+f,E=T+g-f;S=Dn.arraySlice(l.values,T,E)}else{const T=l.createInterpolant(),E=f,C=g-f;T.evaluate(s),S=Dn.arraySlice(T.resultBuffer,E,C)}h==="quaternion"&&new ai().fromArray(S).normalize().conjugate().toArray(S);const b=d.times.length;for(let T=0;T=s)){const l=t[1];e=s)break t}o=n,n=0;break n}break e}for(;n>>1;et;)--o;if(++o,s!==0||o!==r){s>=o&&(o=Math.max(o,1),s=o-1);const l=this.getValueSize();this.times=Dn.arraySlice(n,s,o),this.values=Dn.arraySlice(this.values,s*l,o*l)}return this}validate(){let e=!0;const t=this.getValueSize();t-Math.floor(t)!==0&&(console.error("THREE.KeyframeTrack: Invalid value size in track.",this),e=!1);const n=this.times,r=this.values,s=n.length;s===0&&(console.error("THREE.KeyframeTrack: Track is empty.",this),e=!1);let o=null;for(let l=0;l!==s;l++){const h=n[l];if(typeof h=="number"&&isNaN(h)){console.error("THREE.KeyframeTrack: Time is not a valid number.",this,l,h),e=!1;break}if(o!==null&&o>h){console.error("THREE.KeyframeTrack: Out of order keys.",this,l,h,o),e=!1;break}o=h}if(r!==void 0&&Dn.isTypedArray(r))for(let l=0,h=r.length;l!==h;++l){const d=r[l];if(isNaN(d)){console.error("THREE.KeyframeTrack: Value is not a valid number.",this,l,d),e=!1;break}}return e}optimize(){const e=Dn.arraySlice(this.times),t=Dn.arraySlice(this.values),n=this.getValueSize(),r=this.getInterpolation()===V0,s=e.length-1;let o=1;for(let l=1;l0){e[o]=e[s];for(let l=s*n,h=o*n,d=0;d!==n;++d)t[h+d]=t[l+d];++o}return o!==e.length?(this.times=Dn.arraySlice(e,0,o),this.values=Dn.arraySlice(t,0,o*n)):(this.times=e,this.values=t),this}clone(){const e=Dn.arraySlice(this.times,0),t=Dn.arraySlice(this.values,0),n=this.constructor,r=new n(this.name,e,t);return r.createInterpolant=this.createInterpolant,r}}Ns.prototype.TimeBufferType=Float32Array;Ns.prototype.ValueBufferType=Float32Array;Ns.prototype.DefaultInterpolation=nm;class cu extends Ns{}cu.prototype.ValueTypeName="bool";cu.prototype.ValueBufferType=Array;cu.prototype.DefaultInterpolation=tm;cu.prototype.InterpolantFactoryMethodLinear=void 0;cu.prototype.InterpolantFactoryMethodSmooth=void 0;class w2 extends Ns{}w2.prototype.ValueTypeName="color";class Wh extends Ns{}Wh.prototype.ValueTypeName="number";class M6 extends wa{constructor(e,t,n,r){super(e,t,n,r)}interpolate_(e,t,n,r){const s=this.resultBuffer,o=this.sampleValues,l=this.valueSize,h=(n-t)/(r-t);let d=e*l;for(let f=d+l;d!==f;d+=4)ai.slerpFlat(s,0,o,d-l,o,d,h);return s}}class hd extends Ns{InterpolantFactoryMethodLinear(e){return new M6(this.times,this.values,this.getValueSize(),e)}}hd.prototype.ValueTypeName="quaternion";hd.prototype.DefaultInterpolation=nm;hd.prototype.InterpolantFactoryMethodSmooth=void 0;class uu extends Ns{}uu.prototype.ValueTypeName="string";uu.prototype.ValueBufferType=Array;uu.prototype.DefaultInterpolation=tm;uu.prototype.InterpolantFactoryMethodLinear=void 0;uu.prototype.InterpolantFactoryMethodSmooth=void 0;class am extends Ns{}am.prototype.ValueTypeName="vector";class e_{constructor(e,t=-1,n,r=tx){this.name=e,this.tracks=n,this.duration=t,this.blendMode=r,this.uuid=kr(),this.duration<0&&this.resetDuration()}static parse(e){const t=[],n=e.tracks,r=1/(e.fps||1);for(let o=0,l=n.length;o!==l;++o)t.push(T6(n[o]).scale(r));const s=new this(e.name,e.duration,t,e.blendMode);return s.uuid=e.uuid,s}static toJSON(e){const t=[],n=e.tracks,r={name:e.name,duration:e.duration,tracks:t,uuid:e.uuid,blendMode:e.blendMode};for(let s=0,o=n.length;s!==o;++s)t.push(Ns.toJSON(n[s]));return r}static CreateFromMorphTargetSequence(e,t,n,r){const s=t.length,o=[];for(let l=0;l1){const g=f[1];let y=r[g];y||(r[g]=y=[]),y.push(d)}}const o=[];for(const l in r)o.push(this.CreateFromMorphTargetSequence(l,r[l],t,n));return o}static parseAnimation(e,t){if(!e)return console.error("THREE.AnimationClip: No animation in JSONLoader data."),null;const n=function(g,y,_,w,S){if(_.length!==0){const b=[],T=[];Dn.flattenJSON(_,b,T,w),b.length!==0&&S.push(new g(y,b,T))}},r=[],s=e.name||"default",o=e.fps||30,l=e.blendMode;let h=e.length||-1;const d=e.hierarchy||[];for(let g=0;g{t&&t(s),this.manager.itemEnd(e)},0),s;if(uo[e]!==void 0){uo[e].push({onLoad:t,onProgress:n,onError:r});return}uo[e]=[],uo[e].push({onLoad:t,onProgress:n,onError:r});const o=new Request(e,{headers:new Headers(this.requestHeader),credentials:this.withCredentials?"include":"same-origin"}),l=this.mimeType,h=this.responseType;fetch(o).then(d=>{if(d.status===200||d.status===0){if(d.status===0&&console.warn("THREE.FileLoader: HTTP Status 0 received."),typeof ReadableStream>"u"||d.body===void 0||d.body.getReader===void 0)return d;const f=uo[e],g=d.body.getReader(),y=d.headers.get("Content-Length"),_=y?parseInt(y):0,w=_!==0;let S=0;const b=new ReadableStream({start(T){E();function E(){g.read().then(({done:C,value:A})=>{if(C)T.close();else{S+=A.byteLength;const D=new ProgressEvent("progress",{lengthComputable:w,loaded:S,total:_});for(let I=0,F=f.length;I{switch(h){case"arraybuffer":return d.arrayBuffer();case"blob":return d.blob();case"document":return d.text().then(f=>new DOMParser().parseFromString(f,l));case"json":return d.json();default:if(l===void 0)return d.text();{const g=/charset="?([^;"\s]*)"?/i.exec(l),y=g&&g[1]?g[1].toLowerCase():void 0,_=new TextDecoder(y);return d.arrayBuffer().then(w=>_.decode(w))}}}).then(d=>{Xc.add(e,d);const f=uo[e];delete uo[e];for(let g=0,y=f.length;g{const f=uo[e];if(f===void 0)throw this.manager.itemError(e),d;delete uo[e];for(let g=0,y=f.length;g{this.manager.itemEnd(e)}),this.manager.itemStart(e)}setResponseType(e){return this.responseType=e,this}setMimeType(e){return this.mimeType=e,this}}class M2 extends Eo{constructor(e){super(e)}load(e,t,n,r){this.path!==void 0&&(e=this.path+e),e=this.manager.resolveURL(e);const s=this,o=Xc.get(e);if(o!==void 0)return s.manager.itemStart(e),setTimeout(function(){t&&t(o),s.manager.itemEnd(e)},0),o;const l=Uh("img");function h(){f(),Xc.add(e,this),t&&t(this),s.manager.itemEnd(e)}function d(g){f(),r&&r(g),s.manager.itemError(e),s.manager.itemEnd(e)}function f(){l.removeEventListener("load",h,!1),l.removeEventListener("error",d,!1)}return l.addEventListener("load",h,!1),l.addEventListener("error",d,!1),e.slice(0,5)!=="data:"&&this.crossOrigin!==void 0&&(l.crossOrigin=this.crossOrigin),s.manager.itemStart(e),l.src=e,l}}class E2 extends Eo{constructor(e){super(e)}load(e,t,n,r){const s=new Fm,o=new M2(this.manager);o.setCrossOrigin(this.crossOrigin),o.setPath(this.path);let l=0;function h(d){o.load(e[d],function(f){s.images[d]=f,l++,l===6&&(s.needsUpdate=!0,t&&t(s))},void 0,r)}for(let d=0;d"u"&&console.warn("THREE.ImageBitmapLoader: createImageBitmap() not supported."),typeof fetch>"u"&&console.warn("THREE.ImageBitmapLoader: fetch() not supported."),this.options={premultiplyAlpha:"none"}}setOptions(e){return this.options=e,this}load(e,t,n,r){e===void 0&&(e=""),this.path!==void 0&&(e=this.path+e),e=this.manager.resolveURL(e);const s=this,o=Xc.get(e);if(o!==void 0)return s.manager.itemStart(e),setTimeout(function(){t&&t(o),s.manager.itemEnd(e)},0),o;const l={};l.credentials=this.crossOrigin==="anonymous"?"same-origin":"include",l.headers=this.requestHeader,fetch(e,l).then(function(h){return h.blob()}).then(function(h){return createImageBitmap(h,Object.assign(s.options,{colorSpaceConversion:"none"}))}).then(function(h){Xc.add(e,h),t&&t(h),s.manager.itemEnd(e)}).catch(function(h){r&&r(h),s.manager.itemError(e),s.manager.itemEnd(e)}),s.manager.itemStart(e)}}D6.prototype.isImageBitmapLoader=!0;let vf;const I6={getContext:function(){return vf===void 0&&(vf=new(window.AudioContext||window.webkitAudioContext)),vf},setContext:function(i){vf=i}};class O6 extends Eo{constructor(e){super(e)}load(e,t,n,r){const s=this,o=new S2(this.manager);o.setResponseType("arraybuffer"),o.setPath(this.path),o.setRequestHeader(this.requestHeader),o.setWithCredentials(this.withCredentials),o.load(e,function(l){try{const h=l.slice(0);I6.getContext().decodeAudioData(h,function(f){t(f)})}catch(h){r?r(h):console.error(h),s.manager.itemError(e)}},n,r)}}class k6 extends Ax{constructor(e,t,n=1){super(void 0,n);const r=new Pe().set(e),s=new Pe().set(t),o=new z(r.r,r.g,r.b),l=new z(s.r,s.g,s.b),h=Math.sqrt(Math.PI),d=h*Math.sqrt(.75);this.sh.coefficients[0].copy(o).add(l).multiplyScalar(h),this.sh.coefficients[1].copy(o).sub(l).multiplyScalar(d)}}k6.prototype.isHemisphereLightProbe=!0;class N6 extends Ax{constructor(e,t=1){super(void 0,t);const n=new Pe().set(e);this.sh.coefficients[0].set(n.r,n.g,n.b).multiplyScalar(2*Math.sqrt(Math.PI))}}N6.prototype.isAmbientLightProbe=!0;class k2{constructor(e=!0){this.autoStart=e,this.startTime=0,this.oldTime=0,this.elapsedTime=0,this.running=!1}start(){this.startTime=NS(),this.oldTime=this.startTime,this.elapsedTime=0,this.running=!0}stop(){this.getElapsedTime(),this.running=!1,this.autoStart=!1}getElapsedTime(){return this.getDelta(),this.elapsedTime}getDelta(){let e=0;if(this.autoStart&&!this.running)return this.start(),0;if(this.running){const t=NS();e=(t-this.oldTime)/1e3,this.oldTime=t,this.elapsedTime+=e}return e}}function NS(){return(typeof performance>"u"?Date:performance).now()}class B6 extends $t{constructor(e){super(),this.type="Audio",this.listener=e,this.context=e.context,this.gain=this.context.createGain(),this.gain.connect(e.getInput()),this.autoplay=!1,this.buffer=null,this.detune=0,this.loop=!1,this.loopStart=0,this.loopEnd=0,this.offset=0,this.duration=void 0,this.playbackRate=1,this.isPlaying=!1,this.hasPlaybackControl=!0,this.source=null,this.sourceType="empty",this._startedAt=0,this._progress=0,this._connected=!1,this.filters=[]}getOutput(){return this.gain}setNodeSource(e){return this.hasPlaybackControl=!1,this.sourceType="audioNode",this.source=e,this.connect(),this}setMediaElementSource(e){return this.hasPlaybackControl=!1,this.sourceType="mediaNode",this.source=this.context.createMediaElementSource(e),this.connect(),this}setMediaStreamSource(e){return this.hasPlaybackControl=!1,this.sourceType="mediaStreamNode",this.source=this.context.createMediaStreamSource(e),this.connect(),this}setBuffer(e){return this.buffer=e,this.sourceType="buffer",this.autoplay&&this.play(),this}play(e=0){if(this.isPlaying===!0){console.warn("THREE.Audio: Audio is already playing.");return}if(this.hasPlaybackControl===!1){console.warn("THREE.Audio: this Audio has no playback control.");return}this._startedAt=this.context.currentTime+e;const t=this.context.createBufferSource();return t.buffer=this.buffer,t.loop=this.loop,t.loopStart=this.loopStart,t.loopEnd=this.loopEnd,t.onended=this.onEnded.bind(this),t.start(this._startedAt,this._progress+this.offset,this.duration),this.isPlaying=!0,this.source=t,this.setDetune(this.detune),this.setPlaybackRate(this.playbackRate),this.connect()}pause(){if(this.hasPlaybackControl===!1){console.warn("THREE.Audio: this Audio has no playback control.");return}return this.isPlaying===!0&&(this._progress+=Math.max(this.context.currentTime-this._startedAt,0)*this.playbackRate,this.loop===!0&&(this._progress=this._progress%(this.duration||this.buffer.duration)),this.source.stop(),this.source.onended=null,this.isPlaying=!1),this}stop(){if(this.hasPlaybackControl===!1){console.warn("THREE.Audio: this Audio has no playback control.");return}return this._progress=0,this.source.stop(),this.source.onended=null,this.isPlaying=!1,this}connect(){if(this.filters.length>0){this.source.connect(this.filters[0]);for(let e=1,t=this.filters.length;e0){this.source.disconnect(this.filters[0]);for(let e=1,t=this.filters.length;e0&&this._mixBufferRegionAdditive(n,r,this._addIndex*t,1,t);for(let h=t,d=t+t;h!==d;++h)if(n[h]!==n[h+t]){l.setValue(n,r);break}}saveOriginalState(){const e=this.binding,t=this.buffer,n=this.valueSize,r=n*this._origIndex;e.getValue(t,r);for(let s=n,o=r;s!==o;++s)t[s]=t[r+s%n];this._setIdentity(),this.cumulativeWeight=0,this.cumulativeWeightAdditive=0}restoreOriginalState(){const e=this.valueSize*3;this.binding.setValue(this.buffer,e)}_setAdditiveIdentityNumeric(){const e=this._addIndex*this.valueSize,t=e+this.valueSize;for(let n=e;n=.5)for(let o=0;o!==s;++o)e[t+o]=e[n+o]}_slerp(e,t,n,r){ai.slerpFlat(e,t,e,t,e,n,r)}_slerpAdditive(e,t,n,r,s){const o=this._workIndex*s;ai.multiplyQuaternionsFlat(e,o,e,t,e,n),ai.slerpFlat(e,t,e,t,e,o,r)}_lerp(e,t,n,r,s){const o=1-r;for(let l=0;l!==s;++l){const h=t+l;e[h]=e[h]*o+e[n+l]*r}}_lerpAdditive(e,t,n,r,s){for(let o=0;o!==s;++o){const l=t+o;e[l]=e[l]+e[n+o]*r}}}const Cx="\\[\\]\\.:\\/",U6=new RegExp("["+Cx+"]","g"),Px="[^"+Cx+"]",F6="[^"+Cx.replace("\\.","")+"]",V6=/((?:WC+[\/:])*)/.source.replace("WC",Px),H6=/(WCOD+)?/.source.replace("WCOD",F6),G6=/(?:\.(WC+)(?:\[(.+)\])?)?/.source.replace("WC",Px),W6=/\.(WC+)(?:\[(.+)\])?/.source.replace("WC",Px),j6=new RegExp("^"+V6+H6+G6+W6+"$"),X6=["material","materials","bones"];class q6{constructor(e,t,n){const r=n||nn.parseTrackName(t);this._targetGroup=e,this._bindings=e.subscribe_(t,r)}getValue(e,t){this.bind();const n=this._targetGroup.nCachedObjects_,r=this._bindings[n];r!==void 0&&r.getValue(e,t)}setValue(e,t){const n=this._bindings;for(let r=this._targetGroup.nCachedObjects_,s=n.length;r!==s;++r)n[r].setValue(e,t)}bind(){const e=this._bindings;for(let t=this._targetGroup.nCachedObjects_,n=e.length;t!==n;++t)e[t].bind()}unbind(){const e=this._bindings;for(let t=this._targetGroup.nCachedObjects_,n=e.length;t!==n;++t)e[t].unbind()}}class nn{constructor(e,t,n){this.path=t,this.parsedPath=n||nn.parseTrackName(t),this.node=nn.findNode(e,this.parsedPath.nodeName)||e,this.rootNode=e,this.getValue=this._getValue_unbound,this.setValue=this._setValue_unbound}static create(e,t,n){return e&&e.isAnimationObjectGroup?new nn.Composite(e,t,n):new nn(e,t,n)}static sanitizeNodeName(e){return e.replace(/\s/g,"_").replace(U6,"")}static parseTrackName(e){const t=j6.exec(e);if(t===null)throw new Error("PropertyBinding: Cannot parse trackName: "+e);const n={nodeName:t[2],objectName:t[3],objectIndex:t[4],propertyName:t[5],propertyIndex:t[6]},r=n.nodeName&&n.nodeName.lastIndexOf(".");if(r!==void 0&&r!==-1){const s=n.nodeName.substring(r+1);X6.indexOf(s)!==-1&&(n.nodeName=n.nodeName.substring(0,r),n.objectName=s)}if(n.propertyName===null||n.propertyName.length===0)throw new Error("PropertyBinding: can not parse propertyName from trackName: "+e);return n}static findNode(e,t){if(t===void 0||t===""||t==="."||t===-1||t===e.name||t===e.uuid)return e;if(e.skeleton){const n=e.skeleton.getBoneByName(t);if(n!==void 0)return n}if(e.children){const n=function(s){for(let o=0;o0){const h=this._interpolants,d=this._propertyBindings;switch(this.blendMode){case UE:for(let f=0,g=h.length;f!==g;++f)h[f].evaluate(o),d[f].accumulateAdditive(l);break;case tx:default:for(let f=0,g=h.length;f!==g;++f)h[f].evaluate(o),d[f].accumulate(r,l)}}}_updateWeight(e){let t=0;if(this.enabled){t=this.weight;const n=this._weightInterpolant;if(n!==null){const r=n.evaluate(e)[0];t*=r,e>n.parameterPositions[1]&&(this.stopFading(),r===0&&(this.enabled=!1))}}return this._effectiveWeight=t,t}_updateTimeScale(e){let t=0;if(!this.paused){t=this.timeScale;const n=this._timeScaleInterpolant;if(n!==null){const r=n.evaluate(e)[0];t*=r,e>n.parameterPositions[1]&&(this.stopWarping(),t===0?this.paused=!0:this.timeScale=t)}}return this._effectiveTimeScale=t,t}_updateTime(e){const t=this._clip.duration,n=this.loop;let r=this.time+e,s=this._loopCount;const o=n===DI;if(e===0)return s===-1?r:o&&(s&1)===1?t-r:r;if(n===jy){s===-1&&(this._loopCount=0,this._setEndings(!0,!0,!1));e:{if(r>=t)r=t;else if(r<0)r=0;else{this.time=r;break e}this.clampWhenFinished?this.paused=!0:this.enabled=!1,this.time=r,this._mixer.dispatchEvent({type:"finished",action:this,direction:e<0?-1:1})}}else{if(s===-1&&(e>=0?(s=0,this._setEndings(!0,this.repetitions===0,o)):this._setEndings(this.repetitions===0,!0,o)),r>=t||r<0){const l=Math.floor(r/t);r-=t*l,s+=Math.abs(l);const h=this.repetitions-s;if(h<=0)this.clampWhenFinished?this.paused=!0:this.enabled=!1,r=e>0?t:0,this.time=r,this._mixer.dispatchEvent({type:"finished",action:this,direction:e>0?1:-1});else{if(h===1){const d=e<0;this._setEndings(d,!d,o)}else this._setEndings(!1,!1,o);this._loopCount=s,this.time=r,this._mixer.dispatchEvent({type:"loop",action:this,loopDelta:l})}}else this.time=r;if(o&&(s&1)===1)return t-r}return r}_setEndings(e,t,n){const r=this._interpolantSettings;n?(r.endingStart=Oc,r.endingEnd=Oc):(e?r.endingStart=this.zeroSlopeAtStart?Oc:Ic:r.endingStart=im,t?r.endingEnd=this.zeroSlopeAtEnd?Oc:Ic:r.endingEnd=im)}_scheduleFading(e,t,n){const r=this._mixer,s=r.time;let o=this._weightInterpolant;o===null&&(o=r._lendControlInterpolant(),this._weightInterpolant=o);const l=o.parameterPositions,h=o.sampleValues;return l[0]=s,h[0]=t,l[1]=s+e,h[1]=n,this}}class N2 extends Ea{constructor(e){super(),this._root=e,this._initMemoryManager(),this._accuIndex=0,this.time=0,this.timeScale=1}_bindAction(e,t){const n=e._localRoot||this._root,r=e._clip.tracks,s=r.length,o=e._propertyBindings,l=e._interpolants,h=n.uuid,d=this._bindingsByRootAndName;let f=d[h];f===void 0&&(f={},d[h]=f);for(let g=0;g!==s;++g){const y=r[g],_=y.name;let w=f[_];if(w!==void 0)++w.referenceCount,o[g]=w;else{if(w=o[g],w!==void 0){w._cacheIndex===null&&(++w.referenceCount,this._addInactiveBinding(w,h,_));continue}const S=t&&t._propertyBindings[g].binding.parsedPath;w=new z6(nn.create(n,_,S),y.ValueTypeName,y.getValueSize()),++w.referenceCount,this._addInactiveBinding(w,h,_),o[g]=w}l[g].resultBuffer=w.buffer}}_activateAction(e){if(!this._isActiveAction(e)){if(e._cacheIndex===null){const n=(e._localRoot||this._root).uuid,r=e._clip.uuid,s=this._actionsByClip[r];this._bindAction(e,s&&s.knownActions[0]),this._addInactiveAction(e,r,n)}const t=e._propertyBindings;for(let n=0,r=t.length;n!==r;++n){const s=t[n];s.useCount++===0&&(this._lendBinding(s),s.saveOriginalState())}this._lendAction(e)}}_deactivateAction(e){if(this._isActiveAction(e)){const t=e._propertyBindings;for(let n=0,r=t.length;n!==r;++n){const s=t[n];--s.useCount===0&&(s.restoreOriginalState(),this._takeBackBinding(s))}this._takeBackAction(e)}}_initMemoryManager(){this._actions=[],this._nActiveActions=0,this._actionsByClip={},this._bindings=[],this._nActiveBindings=0,this._bindingsByRootAndName={},this._controlInterpolants=[],this._nActiveControlInterpolants=0;const e=this;this.stats={actions:{get total(){return e._actions.length},get inUse(){return e._nActiveActions}},bindings:{get total(){return e._bindings.length},get inUse(){return e._nActiveBindings}},controlInterpolants:{get total(){return e._controlInterpolants.length},get inUse(){return e._nActiveControlInterpolants}}}}_isActiveAction(e){const t=e._cacheIndex;return t!==null&&t=0;--n)e[n].stop();return this}update(e){e*=this.timeScale;const t=this._actions,n=this._nActiveActions,r=this.time+=e,s=Math.sign(e),o=this._accuIndex^=1;for(let d=0;d!==n;++d)t[d]._update(r,e,s,o);const l=this._bindings,h=this._nActiveBindings;for(let d=0;d!==h;++d)l[d].apply(o);return this}setTime(e){this.time=0;for(let t=0;tthis.max.x||e.ythis.max.y)}containsBox(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y}getParameter(e,t){return t.set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y))}intersectsBox(e){return!(e.max.xthis.max.x||e.max.ythis.max.y)}clampPoint(e,t){return t.copy(e).clamp(this.min,this.max)}distanceToPoint(e){return US.copy(e).clamp(this.min,this.max).sub(e).length()}intersect(e){return this.min.max(e.min),this.max.min(e.max),this}union(e){return this.min.min(e.min),this.max.max(e.max),this}translate(e){return this.min.add(e),this.max.add(e),this}equals(e){return e.min.equals(this.min)&&e.max.equals(this.max)}}dd.prototype.isBox2=!0;const FS=new z,gf=new z;class B2{constructor(e=new z,t=new z){this.start=e,this.end=t}set(e,t){return this.start.copy(e),this.end.copy(t),this}copy(e){return this.start.copy(e.start),this.end.copy(e.end),this}getCenter(e){return e.addVectors(this.start,this.end).multiplyScalar(.5)}delta(e){return e.subVectors(this.end,this.start)}distanceSq(){return this.start.distanceToSquared(this.end)}distance(){return this.start.distanceTo(this.end)}at(e,t){return this.delta(t).multiplyScalar(e).add(this.start)}closestPointToPointParameter(e,t){FS.subVectors(e,this.start),gf.subVectors(this.end,this.start);const n=gf.dot(gf);let s=gf.dot(FS)/n;return t&&(s=Jn(s,0,1)),s}closestPointToPoint(e,t,n){const r=this.closestPointToPointParameter(e,t);return this.delta(n).multiplyScalar(r).add(this.start)}applyMatrix4(e){return this.start.applyMatrix4(e),this.end.applyMatrix4(e),this}equals(e){return e.start.equals(this.start)&&e.end.equals(this.end)}clone(){return new this.constructor().copy(this)}}const VS=new z;class J6 extends $t{constructor(e,t){super(),this.light=e,this.light.updateMatrixWorld(),this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.color=t;const n=new zt,r=[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 o=0,l=1,h=32;oNumber.EPSILON){if(G<0&&(P=C[F],j=-j,k=C[I],G=-G),E.yk.y)continue;if(E.y===P.y){if(E.x===P.x)return!0}else{const ne=G*(E.x-P.x)-j*(E.y-P.y);if(ne===0)return!0;if(ne<0)continue;D=!D}}else{if(E.y!==P.y)continue;if(k.x<=E.x&&E.x<=P.x||P.x<=E.x&&E.x<=k.x)return!0}}return D}const s=_o.isClockWise,o=this.subPaths;if(o.length===0)return[];if(t===!0)return n(o);let l,h,d;const f=[];if(o.length===1)return h=o[0],d=new va,d.curves=h.curves,f.push(d),f;let g=!s(o[0].getPoints());g=e?!g:g;const y=[],_=[];let w=[],S=0,b;_[S]=void 0,w[S]=[];for(let E=0,C=o.length;E1){let E=!1,C=0;for(let A=0,D=_.length;A0&&E===!1&&(w=y)}let T;for(let E=0,C=_.length;E65504&&console.warn("THREE.DataUtils.toHalfFloat(): Value out of range."),e=Jn(e,-65504,65504),XS[0]=e;const t=qS[0],n=t>>23&511;return es[n]+((t&8388607)>>ts[n])}static fromHalfFloat(e){const t=e>>10;return qS[0]=Lx[G2[t]+(e&1023)]+hu[t],XS[0]}}const H2=new ArrayBuffer(4),XS=new Float32Array(H2),qS=new Uint32Array(H2),es=new Uint32Array(512),ts=new Uint32Array(512);for(let i=0;i<256;++i){const e=i-127;e<-27?(es[i]=0,es[i|256]=32768,ts[i]=24,ts[i|256]=24):e<-14?(es[i]=1024>>-e-14,es[i|256]=1024>>-e-14|32768,ts[i]=-e-1,ts[i|256]=-e-1):e<=15?(es[i]=e+15<<10,es[i|256]=e+15<<10|32768,ts[i]=13,ts[i|256]=13):e<128?(es[i]=31744,es[i|256]=64512,ts[i]=24,ts[i|256]=24):(es[i]=31744,es[i|256]=64512,ts[i]=13,ts[i|256]=13)}const Lx=new Uint32Array(2048),hu=new Uint32Array(64),G2=new Uint32Array(64);for(let i=1;i<1024;++i){let e=i<<13,t=0;for(;!(e&8388608);)e<<=1,t-=8388608;e&=-8388609,t+=947912704,Lx[i]=e|t}for(let i=1024;i<2048;++i)Lx[i]=939524096+(i-1024<<13);for(let i=1;i<31;++i)hu[i]=i<<23;hu[31]=1199570944;hu[32]=2147483648;for(let i=33;i<63;++i)hu[i]=2147483648+(i-32<<23);hu[63]=3347054592;for(let i=1;i<64;++i)i!==32&&(G2[i]=1024);Nr.create=function(i,e){return console.log("THREE.Curve.create() has been deprecated"),i.prototype=Object.create(Nr.prototype),i.prototype.constructor=i,i.prototype.getPoint=e,i};om.prototype.fromPoints=function(i){return console.warn("THREE.Path: .fromPoints() has been renamed to .setFromPoints()."),this.setFromPoints(i)};F2.prototype.setColors=function(){console.error("THREE.GridHelper: setColors() has been deprecated, pass them in the constructor instead.")};z2.prototype.update=function(){console.error("THREE.SkeletonHelper: update() no longer needs to be called.")};Eo.prototype.extractUrlBase=function(i){return console.warn("THREE.Loader: .extractUrlBase() has been deprecated. Use THREE.LoaderUtils.extractUrlBase() instead."),R6.extractUrlBase(i)};Eo.Handlers={add:function(){console.error("THREE.Loader: Handlers.add() has been removed. Use LoadingManager.addHandler() instead.")},get:function(){console.error("THREE.Loader: Handlers.get() has been removed. Use LoadingManager.getHandler() instead.")}};dd.prototype.center=function(i){return console.warn("THREE.Box2: .center() has been renamed to .getCenter()."),this.getCenter(i)};dd.prototype.empty=function(){return console.warn("THREE.Box2: .empty() has been renamed to .isEmpty()."),this.isEmpty()};dd.prototype.isIntersectionBox=function(i){return console.warn("THREE.Box2: .isIntersectionBox() has been renamed to .intersectsBox()."),this.intersectsBox(i)};dd.prototype.size=function(i){return console.warn("THREE.Box2: .size() has been renamed to .getSize()."),this.getSize(i)};sr.prototype.center=function(i){return console.warn("THREE.Box3: .center() has been renamed to .getCenter()."),this.getCenter(i)};sr.prototype.empty=function(){return console.warn("THREE.Box3: .empty() has been renamed to .isEmpty()."),this.isEmpty()};sr.prototype.isIntersectionBox=function(i){return console.warn("THREE.Box3: .isIntersectionBox() has been renamed to .intersectsBox()."),this.intersectsBox(i)};sr.prototype.isIntersectionSphere=function(i){return console.warn("THREE.Box3: .isIntersectionSphere() has been renamed to .intersectsSphere()."),this.intersectsSphere(i)};sr.prototype.size=function(i){return console.warn("THREE.Box3: .size() has been renamed to .getSize()."),this.getSize(i)};Ta.prototype.toVector3=function(){console.error("THREE.Euler: .toVector3() has been removed. Use Vector3.setFromEuler() instead")};su.prototype.empty=function(){return console.warn("THREE.Sphere: .empty() has been renamed to .isEmpty()."),this.isEmpty()};ad.prototype.setFromMatrix=function(i){return console.warn("THREE.Frustum: .setFromMatrix() has been renamed to .setFromProjectionMatrix()."),this.setFromProjectionMatrix(i)};B2.prototype.center=function(i){return console.warn("THREE.Line3: .center() has been renamed to .getCenter()."),this.getCenter(i)};Gn.prototype.flattenToArrayOffset=function(i,e){return console.warn("THREE.Matrix3: .flattenToArrayOffset() has been deprecated. Use .toArray() instead."),this.toArray(i,e)};Gn.prototype.multiplyVector3=function(i){return console.warn("THREE.Matrix3: .multiplyVector3() has been removed. Use vector.applyMatrix3( matrix ) instead."),i.applyMatrix3(this)};Gn.prototype.multiplyVector3Array=function(){console.error("THREE.Matrix3: .multiplyVector3Array() has been removed.")};Gn.prototype.applyToBufferAttribute=function(i){return console.warn("THREE.Matrix3: .applyToBufferAttribute() has been removed. Use attribute.applyMatrix3( matrix ) instead."),i.applyMatrix3(this)};Gn.prototype.applyToVector3Array=function(){console.error("THREE.Matrix3: .applyToVector3Array() has been removed.")};Gn.prototype.getInverse=function(i){return console.warn("THREE.Matrix3: .getInverse() has been removed. Use matrixInv.copy( matrix ).invert(); instead."),this.copy(i).invert()};Qe.prototype.extractPosition=function(i){return console.warn("THREE.Matrix4: .extractPosition() has been renamed to .copyPosition()."),this.copyPosition(i)};Qe.prototype.flattenToArrayOffset=function(i,e){return console.warn("THREE.Matrix4: .flattenToArrayOffset() has been deprecated. Use .toArray() instead."),this.toArray(i,e)};Qe.prototype.getPosition=function(){return console.warn("THREE.Matrix4: .getPosition() has been removed. Use Vector3.setFromMatrixPosition( matrix ) instead."),new z().setFromMatrixColumn(this,3)};Qe.prototype.setRotationFromQuaternion=function(i){return console.warn("THREE.Matrix4: .setRotationFromQuaternion() has been renamed to .makeRotationFromQuaternion()."),this.makeRotationFromQuaternion(i)};Qe.prototype.multiplyToArray=function(){console.warn("THREE.Matrix4: .multiplyToArray() has been removed.")};Qe.prototype.multiplyVector3=function(i){return console.warn("THREE.Matrix4: .multiplyVector3() has been removed. Use vector.applyMatrix4( matrix ) instead."),i.applyMatrix4(this)};Qe.prototype.multiplyVector4=function(i){return console.warn("THREE.Matrix4: .multiplyVector4() has been removed. Use vector.applyMatrix4( matrix ) instead."),i.applyMatrix4(this)};Qe.prototype.multiplyVector3Array=function(){console.error("THREE.Matrix4: .multiplyVector3Array() has been removed.")};Qe.prototype.rotateAxis=function(i){console.warn("THREE.Matrix4: .rotateAxis() has been removed. Use Vector3.transformDirection( matrix ) instead."),i.transformDirection(this)};Qe.prototype.crossVector=function(i){return console.warn("THREE.Matrix4: .crossVector() has been removed. Use vector.applyMatrix4( matrix ) instead."),i.applyMatrix4(this)};Qe.prototype.translate=function(){console.error("THREE.Matrix4: .translate() has been removed.")};Qe.prototype.rotateX=function(){console.error("THREE.Matrix4: .rotateX() has been removed.")};Qe.prototype.rotateY=function(){console.error("THREE.Matrix4: .rotateY() has been removed.")};Qe.prototype.rotateZ=function(){console.error("THREE.Matrix4: .rotateZ() has been removed.")};Qe.prototype.rotateByAxis=function(){console.error("THREE.Matrix4: .rotateByAxis() has been removed.")};Qe.prototype.applyToBufferAttribute=function(i){return console.warn("THREE.Matrix4: .applyToBufferAttribute() has been removed. Use attribute.applyMatrix4( matrix ) instead."),i.applyMatrix4(this)};Qe.prototype.applyToVector3Array=function(){console.error("THREE.Matrix4: .applyToVector3Array() has been removed.")};Qe.prototype.makeFrustum=function(i,e,t,n,r,s){return console.warn("THREE.Matrix4: .makeFrustum() has been removed. Use .makePerspective( left, right, top, bottom, near, far ) instead."),this.makePerspective(i,e,n,t,r,s)};Qe.prototype.getInverse=function(i){return console.warn("THREE.Matrix4: .getInverse() has been removed. Use matrixInv.copy( matrix ).invert(); instead."),this.copy(i).invert()};mo.prototype.isIntersectionLine=function(i){return console.warn("THREE.Plane: .isIntersectionLine() has been renamed to .intersectsLine()."),this.intersectsLine(i)};ai.prototype.multiplyVector3=function(i){return console.warn("THREE.Quaternion: .multiplyVector3() has been removed. Use is now vector.applyQuaternion( quaternion ) instead."),i.applyQuaternion(this)};ai.prototype.inverse=function(){return console.warn("THREE.Quaternion: .inverse() has been renamed to invert()."),this.invert()};Mo.prototype.isIntersectionBox=function(i){return console.warn("THREE.Ray: .isIntersectionBox() has been renamed to .intersectsBox()."),this.intersectsBox(i)};Mo.prototype.isIntersectionPlane=function(i){return console.warn("THREE.Ray: .isIntersectionPlane() has been renamed to .intersectsPlane()."),this.intersectsPlane(i)};Mo.prototype.isIntersectionSphere=function(i){return console.warn("THREE.Ray: .isIntersectionSphere() has been renamed to .intersectsSphere()."),this.intersectsSphere(i)};oi.prototype.area=function(){return console.warn("THREE.Triangle: .area() has been renamed to .getArea()."),this.getArea()};oi.prototype.barycoordFromPoint=function(i,e){return console.warn("THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord()."),this.getBarycoord(i,e)};oi.prototype.midpoint=function(i){return console.warn("THREE.Triangle: .midpoint() has been renamed to .getMidpoint()."),this.getMidpoint(i)};oi.prototypenormal=function(i){return console.warn("THREE.Triangle: .normal() has been renamed to .getNormal()."),this.getNormal(i)};oi.prototype.plane=function(i){return console.warn("THREE.Triangle: .plane() has been renamed to .getPlane()."),this.getPlane(i)};oi.barycoordFromPoint=function(i,e,t,n,r){return console.warn("THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord()."),oi.getBarycoord(i,e,t,n,r)};oi.normal=function(i,e,t,n){return console.warn("THREE.Triangle: .normal() has been renamed to .getNormal()."),oi.getNormal(i,e,t,n)};va.prototype.extractAllPoints=function(i){return console.warn("THREE.Shape: .extractAllPoints() has been removed. Use .extractPoints() instead."),this.extractPoints(i)};va.prototype.extrude=function(i){return console.warn("THREE.Shape: .extrude() has been removed. Use ExtrudeGeometry() instead."),new ba(this,i)};va.prototype.makeGeometry=function(i){return console.warn("THREE.Shape: .makeGeometry() has been removed. Use ShapeGeometry() instead."),new xx(this,i)};ae.prototype.fromAttribute=function(i,e,t){return console.warn("THREE.Vector2: .fromAttribute() has been renamed to .fromBufferAttribute()."),this.fromBufferAttribute(i,e,t)};ae.prototype.distanceToManhattan=function(i){return console.warn("THREE.Vector2: .distanceToManhattan() has been renamed to .manhattanDistanceTo()."),this.manhattanDistanceTo(i)};ae.prototype.lengthManhattan=function(){return console.warn("THREE.Vector2: .lengthManhattan() has been renamed to .manhattanLength()."),this.manhattanLength()};z.prototype.setEulerFromRotationMatrix=function(){console.error("THREE.Vector3: .setEulerFromRotationMatrix() has been removed. Use Euler.setFromRotationMatrix() instead.")};z.prototype.setEulerFromQuaternion=function(){console.error("THREE.Vector3: .setEulerFromQuaternion() has been removed. Use Euler.setFromQuaternion() instead.")};z.prototype.getPositionFromMatrix=function(i){return console.warn("THREE.Vector3: .getPositionFromMatrix() has been renamed to .setFromMatrixPosition()."),this.setFromMatrixPosition(i)};z.prototype.getScaleFromMatrix=function(i){return console.warn("THREE.Vector3: .getScaleFromMatrix() has been renamed to .setFromMatrixScale()."),this.setFromMatrixScale(i)};z.prototype.getColumnFromMatrix=function(i,e){return console.warn("THREE.Vector3: .getColumnFromMatrix() has been renamed to .setFromMatrixColumn()."),this.setFromMatrixColumn(e,i)};z.prototype.applyProjection=function(i){return console.warn("THREE.Vector3: .applyProjection() has been removed. Use .applyMatrix4( m ) instead."),this.applyMatrix4(i)};z.prototype.fromAttribute=function(i,e,t){return console.warn("THREE.Vector3: .fromAttribute() has been renamed to .fromBufferAttribute()."),this.fromBufferAttribute(i,e,t)};z.prototype.distanceToManhattan=function(i){return console.warn("THREE.Vector3: .distanceToManhattan() has been renamed to .manhattanDistanceTo()."),this.manhattanDistanceTo(i)};z.prototype.lengthManhattan=function(){return console.warn("THREE.Vector3: .lengthManhattan() has been renamed to .manhattanLength()."),this.manhattanLength()};dn.prototype.fromAttribute=function(i,e,t){return console.warn("THREE.Vector4: .fromAttribute() has been renamed to .fromBufferAttribute()."),this.fromBufferAttribute(i,e,t)};dn.prototype.lengthManhattan=function(){return console.warn("THREE.Vector4: .lengthManhattan() has been renamed to .manhattanLength()."),this.manhattanLength()};$t.prototype.getChildByName=function(i){return console.warn("THREE.Object3D: .getChildByName() has been renamed to .getObjectByName()."),this.getObjectByName(i)};$t.prototype.renderDepth=function(){console.warn("THREE.Object3D: .renderDepth has been removed. Use .renderOrder, instead.")};$t.prototype.translate=function(i,e){return console.warn("THREE.Object3D: .translate() has been removed. Use .translateOnAxis( axis, distance ) instead."),this.translateOnAxis(e,i)};$t.prototype.getWorldRotation=function(){console.error("THREE.Object3D: .getWorldRotation() has been removed. Use THREE.Object3D.getWorldQuaternion( target ) instead.")};$t.prototype.applyMatrix=function(i){return console.warn("THREE.Object3D: .applyMatrix() has been renamed to .applyMatrix4()."),this.applyMatrix4(i)};Object.defineProperties($t.prototype,{eulerOrder:{get:function(){return console.warn("THREE.Object3D: .eulerOrder is now .rotation.order."),this.rotation.order},set:function(i){console.warn("THREE.Object3D: .eulerOrder is now .rotation.order."),this.rotation.order=i}},useQuaternion:{get:function(){console.warn("THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.")},set:function(){console.warn("THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.")}}});In.prototype.setDrawMode=function(){console.error("THREE.Mesh: .setDrawMode() has been removed. The renderer now always assumes THREE.TrianglesDrawMode. Transform your geometry via BufferGeometryUtils.toTrianglesDrawMode() if necessary.")};Object.defineProperties(In.prototype,{drawMode:{get:function(){return console.error("THREE.Mesh: .drawMode has been removed. The renderer now always assumes THREE.TrianglesDrawMode."),II},set:function(){console.error("THREE.Mesh: .drawMode has been removed. The renderer now always assumes THREE.TrianglesDrawMode. Transform your geometry via BufferGeometryUtils.toTrianglesDrawMode() if necessary.")}}});i2.prototype.initBones=function(){console.error("THREE.SkinnedMesh: initBones() has been removed.")};fi.prototype.setLens=function(i,e){console.warn("THREE.PerspectiveCamera.setLens is deprecated. Use .setFocalLength and .filmGauge for a photographic setup."),e!==void 0&&(this.filmGauge=e),this.setFocalLength(i)};Object.defineProperties(Is.prototype,{onlyShadow:{set:function(){console.warn("THREE.Light: .onlyShadow has been removed.")}},shadowCameraFov:{set:function(i){console.warn("THREE.Light: .shadowCameraFov is now .shadow.camera.fov."),this.shadow.camera.fov=i}},shadowCameraLeft:{set:function(i){console.warn("THREE.Light: .shadowCameraLeft is now .shadow.camera.left."),this.shadow.camera.left=i}},shadowCameraRight:{set:function(i){console.warn("THREE.Light: .shadowCameraRight is now .shadow.camera.right."),this.shadow.camera.right=i}},shadowCameraTop:{set:function(i){console.warn("THREE.Light: .shadowCameraTop is now .shadow.camera.top."),this.shadow.camera.top=i}},shadowCameraBottom:{set:function(i){console.warn("THREE.Light: .shadowCameraBottom is now .shadow.camera.bottom."),this.shadow.camera.bottom=i}},shadowCameraNear:{set:function(i){console.warn("THREE.Light: .shadowCameraNear is now .shadow.camera.near."),this.shadow.camera.near=i}},shadowCameraFar:{set:function(i){console.warn("THREE.Light: .shadowCameraFar is now .shadow.camera.far."),this.shadow.camera.far=i}},shadowCameraVisible:{set:function(){console.warn("THREE.Light: .shadowCameraVisible has been removed. Use new THREE.CameraHelper( light.shadow.camera ) instead.")}},shadowBias:{set:function(i){console.warn("THREE.Light: .shadowBias is now .shadow.bias."),this.shadow.bias=i}},shadowDarkness:{set:function(){console.warn("THREE.Light: .shadowDarkness has been removed.")}},shadowMapWidth:{set:function(i){console.warn("THREE.Light: .shadowMapWidth is now .shadow.mapSize.width."),this.shadow.mapSize.width=i}},shadowMapHeight:{set:function(i){console.warn("THREE.Light: .shadowMapHeight is now .shadow.mapSize.height."),this.shadow.mapSize.height=i}}});Object.defineProperties(Wn.prototype,{length:{get:function(){return console.warn("THREE.BufferAttribute: .length has been deprecated. Use .count instead."),this.array.length}},dynamic:{get:function(){return console.warn("THREE.BufferAttribute: .dynamic has been deprecated. Use .usage instead."),this.usage===rm},set:function(){console.warn("THREE.BufferAttribute: .dynamic has been deprecated. Use .usage instead."),this.setUsage(rm)}}});Wn.prototype.setDynamic=function(i){return console.warn("THREE.BufferAttribute: .setDynamic() has been deprecated. Use .setUsage() instead."),this.setUsage(i===!0?rm:Bh),this};Wn.prototype.copyIndicesArray=function(){console.error("THREE.BufferAttribute: .copyIndicesArray() has been removed.")},Wn.prototype.setArray=function(){console.error("THREE.BufferAttribute: .setArray has been removed. Use BufferGeometry .setAttribute to replace/resize attribute buffers")};zt.prototype.addIndex=function(i){console.warn("THREE.BufferGeometry: .addIndex() has been renamed to .setIndex()."),this.setIndex(i)};zt.prototype.addAttribute=function(i,e){return console.warn("THREE.BufferGeometry: .addAttribute() has been renamed to .setAttribute()."),!(e&&e.isBufferAttribute)&&!(e&&e.isInterleavedBufferAttribute)?(console.warn("THREE.BufferGeometry: .addAttribute() now expects ( name, attribute )."),this.setAttribute(i,new Wn(arguments[1],arguments[2]))):i==="index"?(console.warn("THREE.BufferGeometry.addAttribute: Use .setIndex() for index attribute."),this.setIndex(e),this):this.setAttribute(i,e)};zt.prototype.addDrawCall=function(i,e,t){t!==void 0&&console.warn("THREE.BufferGeometry: .addDrawCall() no longer supports indexOffset."),console.warn("THREE.BufferGeometry: .addDrawCall() is now .addGroup()."),this.addGroup(i,e)};zt.prototype.clearDrawCalls=function(){console.warn("THREE.BufferGeometry: .clearDrawCalls() is now .clearGroups()."),this.clearGroups()};zt.prototype.computeOffsets=function(){console.warn("THREE.BufferGeometry: .computeOffsets() has been removed.")};zt.prototype.removeAttribute=function(i){return console.warn("THREE.BufferGeometry: .removeAttribute() has been renamed to .deleteAttribute()."),this.deleteAttribute(i)};zt.prototype.applyMatrix=function(i){return console.warn("THREE.BufferGeometry: .applyMatrix() has been renamed to .applyMatrix4()."),this.applyMatrix4(i)};Object.defineProperties(zt.prototype,{drawcalls:{get:function(){return console.error("THREE.BufferGeometry: .drawcalls has been renamed to .groups."),this.groups}},offsets:{get:function(){return console.warn("THREE.BufferGeometry: .offsets has been renamed to .groups."),this.groups}}});cd.prototype.setDynamic=function(i){return console.warn("THREE.InterleavedBuffer: .setDynamic() has been deprecated. Use .setUsage() instead."),this.setUsage(i===!0?rm:Bh),this};cd.prototype.setArray=function(){console.error("THREE.InterleavedBuffer: .setArray has been removed. Use BufferGeometry .setAttribute to replace/resize attribute buffers")};ba.prototype.getArrays=function(){console.error("THREE.ExtrudeGeometry: .getArrays() has been removed.")};ba.prototype.addShapeList=function(){console.error("THREE.ExtrudeGeometry: .addShapeList() has been removed.")};ba.prototype.addShape=function(){console.error("THREE.ExtrudeGeometry: .addShape() has been removed.")};cx.prototype.dispose=function(){console.error("THREE.Scene: .dispose() has been removed.")};Rx.prototype.onUpdate=function(){return console.warn("THREE.Uniform: .onUpdate() has been removed. Use object.onBeforeRender() instead."),this};Object.defineProperties(li.prototype,{wrapAround:{get:function(){console.warn("THREE.Material: .wrapAround has been removed.")},set:function(){console.warn("THREE.Material: .wrapAround has been removed.")}},overdraw:{get:function(){console.warn("THREE.Material: .overdraw has been removed.")},set:function(){console.warn("THREE.Material: .overdraw has been removed.")}},wrapRGB:{get:function(){return console.warn("THREE.Material: .wrapRGB has been removed."),new Pe}},shading:{get:function(){console.error("THREE."+this.type+": .shading has been removed. Use the boolean .flatShading instead.")},set:function(i){console.warn("THREE."+this.type+": .shading has been removed. Use the boolean .flatShading instead."),this.flatShading=i===OE}},stencilMask:{get:function(){return console.warn("THREE."+this.type+": .stencilMask has been removed. Use .stencilFuncMask instead."),this.stencilFuncMask},set:function(i){console.warn("THREE."+this.type+": .stencilMask has been removed. Use .stencilFuncMask instead."),this.stencilFuncMask=i}},vertexTangents:{get:function(){console.warn("THREE."+this.type+": .vertexTangents has been removed.")},set:function(){console.warn("THREE."+this.type+": .vertexTangents has been removed.")}}});Object.defineProperties(kt.prototype,{derivatives:{get:function(){return console.warn("THREE.ShaderMaterial: .derivatives has been moved to .extensions.derivatives."),this.extensions.derivatives},set:function(i){console.warn("THREE. ShaderMaterial: .derivatives has been moved to .extensions.derivatives."),this.extensions.derivatives=i}}});cn.prototype.clearTarget=function(i,e,t,n){console.warn("THREE.WebGLRenderer: .clearTarget() has been deprecated. Use .setRenderTarget() and .clear() instead."),this.setRenderTarget(i),this.clear(e,t,n)};cn.prototype.animate=function(i){console.warn("THREE.WebGLRenderer: .animate() is now .setAnimationLoop()."),this.setAnimationLoop(i)};cn.prototype.getCurrentRenderTarget=function(){return console.warn("THREE.WebGLRenderer: .getCurrentRenderTarget() is now .getRenderTarget()."),this.getRenderTarget()};cn.prototype.getMaxAnisotropy=function(){return console.warn("THREE.WebGLRenderer: .getMaxAnisotropy() is now .capabilities.getMaxAnisotropy()."),this.capabilities.getMaxAnisotropy()};cn.prototype.getPrecision=function(){return console.warn("THREE.WebGLRenderer: .getPrecision() is now .capabilities.precision."),this.capabilities.precision};cn.prototype.resetGLState=function(){return console.warn("THREE.WebGLRenderer: .resetGLState() is now .state.reset()."),this.state.reset()};cn.prototype.supportsFloatTextures=function(){return console.warn("THREE.WebGLRenderer: .supportsFloatTextures() is now .extensions.get( 'OES_texture_float' )."),this.extensions.get("OES_texture_float")};cn.prototype.supportsHalfFloatTextures=function(){return console.warn("THREE.WebGLRenderer: .supportsHalfFloatTextures() is now .extensions.get( 'OES_texture_half_float' )."),this.extensions.get("OES_texture_half_float")};cn.prototype.supportsStandardDerivatives=function(){return console.warn("THREE.WebGLRenderer: .supportsStandardDerivatives() is now .extensions.get( 'OES_standard_derivatives' )."),this.extensions.get("OES_standard_derivatives")};cn.prototype.supportsCompressedTextureS3TC=function(){return console.warn("THREE.WebGLRenderer: .supportsCompressedTextureS3TC() is now .extensions.get( 'WEBGL_compressed_texture_s3tc' )."),this.extensions.get("WEBGL_compressed_texture_s3tc")};cn.prototype.supportsCompressedTexturePVRTC=function(){return console.warn("THREE.WebGLRenderer: .supportsCompressedTexturePVRTC() is now .extensions.get( 'WEBGL_compressed_texture_pvrtc' )."),this.extensions.get("WEBGL_compressed_texture_pvrtc")};cn.prototype.supportsBlendMinMax=function(){return console.warn("THREE.WebGLRenderer: .supportsBlendMinMax() is now .extensions.get( 'EXT_blend_minmax' )."),this.extensions.get("EXT_blend_minmax")};cn.prototype.supportsVertexTextures=function(){return console.warn("THREE.WebGLRenderer: .supportsVertexTextures() is now .capabilities.vertexTextures."),this.capabilities.vertexTextures};cn.prototype.supportsInstancedArrays=function(){return console.warn("THREE.WebGLRenderer: .supportsInstancedArrays() is now .extensions.get( 'ANGLE_instanced_arrays' )."),this.extensions.get("ANGLE_instanced_arrays")};cn.prototype.enableScissorTest=function(i){console.warn("THREE.WebGLRenderer: .enableScissorTest() is now .setScissorTest()."),this.setScissorTest(i)};cn.prototype.initMaterial=function(){console.warn("THREE.WebGLRenderer: .initMaterial() has been removed.")};cn.prototype.addPrePlugin=function(){console.warn("THREE.WebGLRenderer: .addPrePlugin() has been removed.")};cn.prototype.addPostPlugin=function(){console.warn("THREE.WebGLRenderer: .addPostPlugin() has been removed.")};cn.prototype.updateShadowMap=function(){console.warn("THREE.WebGLRenderer: .updateShadowMap() has been removed.")};cn.prototype.setFaceCulling=function(){console.warn("THREE.WebGLRenderer: .setFaceCulling() has been removed.")};cn.prototype.allocTextureUnit=function(){console.warn("THREE.WebGLRenderer: .allocTextureUnit() has been removed.")};cn.prototype.setTexture=function(){console.warn("THREE.WebGLRenderer: .setTexture() has been removed.")};cn.prototype.setTexture2D=function(){console.warn("THREE.WebGLRenderer: .setTexture2D() has been removed.")};cn.prototype.setTextureCube=function(){console.warn("THREE.WebGLRenderer: .setTextureCube() has been removed.")};cn.prototype.getActiveMipMapLevel=function(){return console.warn("THREE.WebGLRenderer: .getActiveMipMapLevel() is now .getActiveMipmapLevel()."),this.getActiveMipmapLevel()};Object.defineProperties(cn.prototype,{shadowMapEnabled:{get:function(){return this.shadowMap.enabled},set:function(i){console.warn("THREE.WebGLRenderer: .shadowMapEnabled is now .shadowMap.enabled."),this.shadowMap.enabled=i}},shadowMapType:{get:function(){return this.shadowMap.type},set:function(i){console.warn("THREE.WebGLRenderer: .shadowMapType is now .shadowMap.type."),this.shadowMap.type=i}},shadowMapCullFace:{get:function(){console.warn("THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.")},set:function(){console.warn("THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.")}},context:{get:function(){return console.warn("THREE.WebGLRenderer: .context has been removed. Use .getContext() instead."),this.getContext()}},vr:{get:function(){return console.warn("THREE.WebGLRenderer: .vr has been renamed to .xr"),this.xr}},gammaInput:{get:function(){return console.warn("THREE.WebGLRenderer: .gammaInput has been removed. Set the encoding for textures via Texture.encoding instead."),!1},set:function(){console.warn("THREE.WebGLRenderer: .gammaInput has been removed. Set the encoding for textures via Texture.encoding instead.")}},gammaOutput:{get:function(){return console.warn("THREE.WebGLRenderer: .gammaOutput has been removed. Set WebGLRenderer.outputEncoding instead."),!1},set:function(i){console.warn("THREE.WebGLRenderer: .gammaOutput has been removed. Set WebGLRenderer.outputEncoding instead."),this.outputEncoding=i===!0?Ln:Ds}},toneMappingWhitePoint:{get:function(){return console.warn("THREE.WebGLRenderer: .toneMappingWhitePoint has been removed."),1},set:function(){console.warn("THREE.WebGLRenderer: .toneMappingWhitePoint has been removed.")}},gammaFactor:{get:function(){return console.warn("THREE.WebGLRenderer: .gammaFactor has been removed."),2},set:function(){console.warn("THREE.WebGLRenderer: .gammaFactor has been removed.")}}});Object.defineProperties(e2.prototype,{cullFace:{get:function(){console.warn("THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.")},set:function(){console.warn("THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.")}},renderReverseSided:{get:function(){console.warn("THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.")},set:function(){console.warn("THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.")}},renderSingleSided:{get:function(){console.warn("THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.")},set:function(){console.warn("THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.")}}});Object.defineProperties(Yt.prototype,{wrapS:{get:function(){return console.warn("THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS."),this.texture.wrapS},set:function(i){console.warn("THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS."),this.texture.wrapS=i}},wrapT:{get:function(){return console.warn("THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT."),this.texture.wrapT},set:function(i){console.warn("THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT."),this.texture.wrapT=i}},magFilter:{get:function(){return console.warn("THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter."),this.texture.magFilter},set:function(i){console.warn("THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter."),this.texture.magFilter=i}},minFilter:{get:function(){return console.warn("THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter."),this.texture.minFilter},set:function(i){console.warn("THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter."),this.texture.minFilter=i}},anisotropy:{get:function(){return console.warn("THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy."),this.texture.anisotropy},set:function(i){console.warn("THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy."),this.texture.anisotropy=i}},offset:{get:function(){return console.warn("THREE.WebGLRenderTarget: .offset is now .texture.offset."),this.texture.offset},set:function(i){console.warn("THREE.WebGLRenderTarget: .offset is now .texture.offset."),this.texture.offset=i}},repeat:{get:function(){return console.warn("THREE.WebGLRenderTarget: .repeat is now .texture.repeat."),this.texture.repeat},set:function(i){console.warn("THREE.WebGLRenderTarget: .repeat is now .texture.repeat."),this.texture.repeat=i}},format:{get:function(){return console.warn("THREE.WebGLRenderTarget: .format is now .texture.format."),this.texture.format},set:function(i){console.warn("THREE.WebGLRenderTarget: .format is now .texture.format."),this.texture.format=i}},type:{get:function(){return console.warn("THREE.WebGLRenderTarget: .type is now .texture.type."),this.texture.type},set:function(i){console.warn("THREE.WebGLRenderTarget: .type is now .texture.type."),this.texture.type=i}},generateMipmaps:{get:function(){return console.warn("THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps."),this.texture.generateMipmaps},set:function(i){console.warn("THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps."),this.texture.generateMipmaps=i}}});B6.prototype.load=function(i){console.warn("THREE.Audio: .load has been deprecated. Use THREE.AudioLoader instead.");const e=this;return new O6().load(i,function(n){e.setBuffer(n)}),this};ox.prototype.updateCubeMap=function(i,e){return console.warn("THREE.CubeCamera: .updateCubeMap() is now .update()."),this.update(i,e)};ox.prototype.clear=function(i,e,t,n){return console.warn("THREE.CubeCamera: .clear() is now .renderTarget.clear()."),this.renderTarget.clear(i,e,t,n)};xl.crossOrigin=void 0;xl.loadTexture=function(i,e,t,n){console.warn("THREE.ImageUtils.loadTexture has been deprecated. Use THREE.TextureLoader() instead.");const r=new T2;r.setCrossOrigin(this.crossOrigin);const s=r.load(i,t,void 0,n);return e&&(s.mapping=e),s};xl.loadTextureCube=function(i,e,t,n){console.warn("THREE.ImageUtils.loadTextureCube has been deprecated. Use THREE.CubeTextureLoader() instead.");const r=new E2;r.setCrossOrigin(this.crossOrigin);const s=r.load(i,t,void 0,n);return e&&(s.mapping=e),s};xl.loadCompressedTexture=function(){console.error("THREE.ImageUtils.loadCompressedTexture has been removed. Use THREE.DDSLoader instead.")};xl.loadCompressedTextureCube=function(){console.error("THREE.ImageUtils.loadCompressedTextureCube has been removed. Use THREE.DDSLoader instead.")};typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("register",{detail:{revision:ex}}));typeof window<"u"&&(window.__THREE__?console.warn("WARNING: Multiple instances of Three.js being imported."):window.__THREE__=ex);const W2=100,Ye=1/W2,pn=W2,Qm=.1,$m=1e4,j2=Number.EPSILON,br=100*Ye,xo=br*.5;var bn=new fi(75,1,Qm,$m);const[hl,Ze]=Ge(bn),[ev,Os]=Ge([]),YS=Im(ev,Os),iz=Om(ev,Os),ZS=G4(ev,Os),X2=new WeakSet,[jh,vi]=Ge(void 0),Dx=[0],rz=new k2,q2=()=>{requestAnimationFrame(q2),Dx[0]=rz.getDelta()};q2();const[v9,Y2]=Ge(!1);var sz=!!window.chrome;const[oz,Xh]=Ge("#000000"),[az,Ix]=Ge(!1),Z2=()=>{const i=navigator.userAgent;return/(tablet|ipad|playbook|silk)|(android(?!.*mobi))/i.test(i)?!0:!!/Mobile|Android|iP(hone|od)|IEMobile|BlackBerry|Kindle|Silk-Accelerated|(hpw|web)OS|Opera M(obi|ini)/.test(i)},[lz,K2]=Ge(Z2()),cz=Mr(()=>lz(Z2()),100,"trailing");window.addEventListener("resize",cz);const J2=()=>new cn({powerPreference:"high-performance",alpha:Xh()==="transparent",logarithmicDepthBuffer:sz&&!K2()?Ix():!1,antialias:!0});let fh;const[uz,Sn]=Ge(fh=J2());Kt(()=>{const i=fh??J2();return uz(i),()=>{i.dispose(),fh=void 0}},[Xh,Ix,K2]);let Ox=Y2();Y2(i=>Ox=i);const Q2=(i,e,t)=>{let n=0;const r=setInterval(()=>{document.hidden||Ox||(t(),e!==-1&&++n>=e&&clearInterval(r))},i);return new En(()=>clearInterval(r))};let KS=0,Tc=[];const hz=(i,e)=>e-i,n_=new Set;Sn(i=>{i.setAnimationLoop(()=>{const e=1/Dx[0];if(Tc.push(e),Tc.length===60&&(Tc.sort(hz),Tc[Math.floor(Tc.length*.5)],Tc=[]),!(Ox||++KS(n_.add(i),new En(()=>n_.delete(i))),[dz,tv]=Er(),wh=Mr(dz,0,"trailing"),Li=new Set;class $2 extends $_{constructor(e){super(),this.outerObject3d=e,e.userData.manager=this,Li.add(this),wh()}get uuid(){return this.outerObject3d.uuid}_append(e){var t,n,r;Li.delete(e),wh(),(n=(t=e.parent)===null||t===void 0?void 0:t.children)===null||n===void 0||n.delete(e),e.parent=this,((r=this.children)!==null&&r!==void 0?r:this.children=new Set).add(e)}append(e){this._append(e),this.outerObject3d.add(e.outerObject3d)}attach(e){this._append(e),this.outerObject3d.attach(e.outerObject3d)}dispose(){var e,t,n;if(super.dispose(),Li.delete(this),wh(),(t=(e=this.parent)===null||e===void 0?void 0:e.children)===null||t===void 0||t.delete(this),this.parent=void 0,(n=this.outerObject3d.parent)===null||n===void 0||n.remove(this.outerObject3d),this.children)for(const r of this.children)r.dispose();return this}}const[kx,qh]=Ge([]),pz=Im(kx,qh),fz=Om(kx,qh),du={onLoop:Function,proxy:Object},Sl={},eT=bt(Me({},du),{texture:String}),tT=Me({},Sl);class Bs extends $2{get proxy(){return this._proxy}set proxy(e){this._proxy!==e&&(this._proxy&&(this._proxy.__target=void 0),this._proxy=e,e&&(e.__target=this))}timer(e,t,n){return this.watch(Q2(e,t,n))}loop(e){return this.watch(wi(e))}queueMicrotask(e){queueMicrotask(()=>!this.done&&e())}cancellable(e){return this.watch(new En(e))}createEffect(e,t){return this.watch(Kt(e,t))}get onLoop(){return this._onLoop}set onLoop(e){var t;this._onLoop=e,(t=this._loopHandle)===null||t===void 0||t.cancel(),e&&(this._loopHandle=this.loop(e))}}class pd extends Bs{constructor(){super(new ei),pz(this)}dispose(){return super.dispose(),fz(this),this}get texture(){return this._texture}set texture(e){this._texture=e,kx([...qh()])}}pd.componentName="environment";pd.defaults=tT;pd.schema=eT;const[nT,iT]=Ge(0),rT=()=>nT(iT()+1),lm=()=>nT(iT()-1),mz=[0],sT=i=>mz[0]+=i.loaded;class vz extends P6{constructor(e){super(e),this.type=Ts}parse(e){const l=function(C,A){switch(C){case 1:console.error("THREE.RGBELoader Read Error: "+(A||""));break;case 2:console.error("THREE.RGBELoader Write Error: "+(A||""));break;case 3:console.error("THREE.RGBELoader Bad File Format: "+(A||""));break;default:case 4:console.error("THREE.RGBELoader: Error: "+(A||""))}return-1},g=` `,y=function(C,A,D){A=A||1024;let F=C.pos,P=-1,k=0,j="",G=String.fromCharCode.apply(null,new Uint16Array(C.subarray(F,F+128)));for(;0>(P=G.indexOf(g))&&k=C.byteLength||!(j=y(C)))return l(1,"no header found");if(!(G=j.match(A)))return l(3,"bad initial token");for(k.valid|=1,k.programtype=G[1],k.string+=j+` `;j=y(C),j!==!1;){if(k.string+=j+` `,j.charAt(0)==="#"){k.comments+=j+` `;continue}if((G=j.match(D))&&(k.gamma=parseFloat(G[1])),(G=j.match(I))&&(k.exposure=parseFloat(G[1])),(G=j.match(F))&&(k.valid|=2,k.format=G[1]),(G=j.match(P))&&(k.valid|=4,k.height=parseInt(G[1],10),k.width=parseInt(G[2],10)),k.valid&2&&k.valid&4)break}return k.valid&2?k.valid&4?k:l(3,"missing image size specifier"):l(3,"missing format specifier")},w=function(C,A,D){const I=A;if(I<8||I>32767||C[0]!==2||C[1]!==2||C[2]&128)return new Uint8Array(C);if(I!==(C[2]<<8|C[3]))return l(3,"wrong scanline width");const F=new Uint8Array(4*A*D);if(!F.length)return l(4,"unable to allocate buffer space");let P=0,k=0;const j=4*I,G=new Uint8Array(4),ne=new Uint8Array(j);let ce=D;for(;ce>0&&kC.byteLength)return l(1);if(G[0]=C[k++],G[1]=C[k++],G[2]=C[k++],G[3]=C[k++],G[0]!=2||G[1]!=2||(G[2]<<8|G[3])!=I)return l(3,"bad rgbe scanline format");let Z=0,$;for(;Z128;if(pe&&($-=128),$===0||Z+$>j)return l(3,"bad scanline data");if(pe){const re=C[k++];for(let se=0;se<$;se++)ne[Z++]=re}else ne.set(C.subarray(k,k+$),Z),Z+=$,k+=$}const K=I;for(let pe=0;pe(e&&Sy.once(i,()=>queueMicrotask(e)),Ma(gz,i,()=>(rT(),(i.toLowerCase().toLowerCase().endsWith(".hdr")?yz:oT).load(i,r=>{r.wrapS=r.wrapT=Nh,Sy.setState(i),lm()},sT,()=>{Sy.setState(i),lm()}))));const[aT,qc]=Ge("default"),[_z,cm]=Ge(1);var $e=new cx;const Hf=new pd;Li.delete(Hf);Kt(()=>{var i;const e=(i=RE(qh()))===null||i===void 0?void 0:i.texture;if(!e)return;const t=Gi(e);return t.mapping=kh,$e.environment=t,()=>{$e.environment=null}},[qh]);Kt(()=>{const i=qc();if(!i)return;if(typeof i=="string"&&i!=="default")return i==="studio"?Hf.texture="https://unpkg.com/lingo3d-textures@1.0.0/assets/studio.jpg":Hf.texture=i,()=>{Hf.texture=void 0};const e=new Mx(16777215,6710886);$e.add(e);const t=new Tx(16777215,.5);t.position.set(0,1,1),$e.add(t);const n=cm(r=>{e.intensity=r,t.intensity=r*.5});return()=>{e.dispose(),$e.remove(e),t.dispose(),$e.remove(t),n.cancel()}},[qc]);const[lT,um]=Ge(void 0);Kt(()=>{const i=um();if(i)return $e.fog=new Gm(i,0,100),()=>{$e.fog=null}},[um]);const xz=new Map,bz=new E2;var wz=i=>Ma(xz,i.join(","),()=>(rT(),bz.load(i,lm,sT,lm)));const[Sz,i_]=Ge(void 0),[Nx,Yh]=Ge([]),Mz=Im(Nx,Yh),Ez=Om(Nx,Yh);Kt(()=>{var i;const e=i_(),t=Xh(),n=(i=RE(Yh()))===null||i===void 0?void 0:i.texture;if(n)if(Array.isArray(n))$e.background=wz(n);else{const r=Gi(n);r.mapping=kh,$e.background=r}else e?$e.background=Gi(e):t?t==="transparent"?$e.background=null:$e.background=new Pe(t):$e.background=new Pe("black")},[Xh,i_,Yh]);Kt(()=>{var i;const e=vi();if(!e||Ze()!==bn)return;const t=new V2((i=e.object3d)!==null&&i!==void 0?i:e.outerObject3d),n=requestAnimationFrame(()=>$e.add(t)),r=wi(()=>t.update());return()=>{cancelAnimationFrame(n),$e.remove(t),r.cancel()}},[vi,Ze]);Kt(()=>{const i=Os();if(!i.length||Ze()!==bn)return;const e=[];for(const n of i){const r=new V2(n.outerObject3d);$e.add(r),e.push(r)}const t=wi(()=>{for(const n of e)n.update()});return()=>{for(const n of e)$e.remove(n);t.cancel()}},[Os,Ze]);class cT{constructor(e,t){this.x=e,this.y=t}}class Sh{constructor(e,t,n){this.x=e,this.y=t,this.z=n}}const pi=180/Math.PI,xn=Math.PI/180,uT=(i,e,t,n,r,s)=>Math.sqrt((i-n)**2+(e-r)**2+(t-s)**2),Tz=(i,e,t)=>{const n=t*xn,r=i.x-e.x,s=i.y-e.y,o=r*Math.cos(n)-s*Math.sin(n),l=r*Math.sin(n)+s*Math.cos(n);return new cT(o+e.x,l+e.y)},Az=(i,e,t,n)=>{const r=t*=xn;return new cT(i+n*Math.cos(r),e+n*Math.sin(r))},Ot=new z,bo=new z,Cz=new z,hm=new ai,Pz=new ai,r_=new z(br,br,br);Object.freeze(r_);const hT=new z(xo,xo,xo);Object.freeze(hT);const Yc=new sr,dT=new Mo,Wi=new Ta(0,0,0,"YXZ"),g9=new B2,pT=new ss({wireframe:!0}),fT=new ad,Rz=new Qe,Zh=i=>new Sh(i.x*pn,i.y*pn,i.z*pn),Mh=i=>new z(i.x*Ye,i.y*Ye,i.z*Ye);var fd=i=>i instanceof hx?i.getWorldPosition(Ot):Yc.setFromObject(i).getCenter(Ot);class nv extends Bs{get x(){return this.outerObject3d.position.x*pn}set x(e){this.outerObject3d.position.x=e*Ye}get y(){return this.outerObject3d.position.y*pn}set y(e){this.outerObject3d.position.y=e*Ye}get z(){return this.outerObject3d.position.z*pn}set z(e){this.outerObject3d.position.z=e*Ye}getWorldPosition(){var e;return Zh(((e=this.object3d)!==null&&e!==void 0?e:this.outerObject3d).getWorldPosition(bo))}getCenter(){var e;return Zh(fd((e=this.object3d)!==null&&e!==void 0?e:this.outerObject3d))}}const ml=i=>i instanceof Bs&&"getWorldPosition"in i,[Lz,Gf]=Ge(1),iv=375,rv=667,Bx=5,zx=175,[Dz,mi]=Ge([iv,rv]),s_=([i,e])=>Dz([Math.max(i,1),Math.max(e,1)]),[Iz,Kh]=Ge("balanced"),[y9,Zc]=Ge(1),[_9,Kc]=Ge(!1),[o_,vl]=Ge(!1),[Oz,mT]=Ge(20),[kz,Nz]=Ge(0),[a_,l_]=Ge(!1),[Bz,c_]=Ge(10),[zz,dm]=Ge(!1),[Uz,u_]=Ge(!1),[Fz,vT]=Ge(0),[Vz,gT]=Ge(1.5),[Hz,yT]=Ge(0),[Gz,_T]=Ge(.01),[Wz,h_]=Ge(!1),[jz,xT]=Ge(.8),[Xz,d_]=Ge("#ffffff"),[qz,p_]=Ge(void 0),[Yz,f_]=Ge(void 0),[Zz,bT]=Ge(0),[Kz,wT]=Ge(3),[Jz,ST]=Ge(1),[Qz,m_]=Ge(!1),MT=bt(Me({},du),{texture:[String,Array]}),ET=Me({},Sl);class md extends Bs{constructor(){super(new ei),Mz(this)}dispose(){return super.dispose(),Ez(this),this}get texture(){return this._texture}set texture(e){this._texture=e,Nx([...Yh()])}}md.componentName="skybox";md.defaults=ET;md.schema=MT;const v_=new md;Li.delete(v_);var Cs={get performance(){return Kh()},set performance(i){Iz(i)},get defaultFog(){return um()},set defaultFog(i){lT(i)},get defaultLight(){return qc()},set defaultLight(i){aT(i)},get defaultLightScale(){return cm()},set defaultLightScale(i){_z(i)},get skybox(){return v_.texture},set skybox(i){v_.texture=i},get defaultOrbitControls(){return vl()},set defaultOrbitControls(i){o_(i)},get gridHelper(){return l_()},set gridHelper(i){a_(i)},get gridHelperSize(){return c_()},set gridHelperSize(i){Bz(i)},get gravity(){return mT()},set gravity(i){Oz(i)},get repulsion(){return Nz()},set repulsion(i){kz(i)},wasmPath:"https://unpkg.com/lingo3d-wasm@1.0.0/assets/",autoMount:!1,get logarithmicDepth(){return Ix()},set logarithmicDepth(i){az(i)},get exposure(){return Gf()},set exposure(i){Lz(i)},get pbr(){return m_()},set pbr(i){Qz(i)},get bloom(){return u_()},set bloom(i){Uz(i)},get bloomStrength(){return gT()},set bloomStrength(i){Vz(i)},get bloomRadius(){return vT()},set bloomRadius(i){Fz(i)},get bloomThreshold(){return yT()},set bloomThreshold(i){Hz(i)},get ambientOcclusion(){return dm()},set ambientOcclusion(i){zz(i)},get outlineColor(){return d_()},set outlineColor(i){Xz(i)},get outlineHiddenColor(){return p_()},set outlineHiddenColor(i){qz(i)},get outlinePattern(){return f_()},set outlinePattern(i){Yz(i)},get outlinePulse(){return bT()},set outlinePulse(i){Zz(i)},get outlineStrength(){return wT()},set outlineStrength(i){Kz(i)},get outlineThickness(){return ST()},set outlineThickness(i){Jz(i)},get lensDistortion(){return h_()},set lensDistortion(i){Wz(i)},get lensIor(){return xT()},set lensIor(i){jz(i)},get lensBand(){return _T()},set lensBand(i){Gz(i)},get texture(){return i_()},set texture(i){Sz(i)},get color(){return Xh()},set color(i){oz(i)}};const[$z,Jc]=Ge(void 0),[eU,Qc]=Ge(void 0),pm={createButton(i,e){e&&console.error('THREE.VRButton: The "options" parameter has been removed. Please set the reference space type via renderer.xr.setReferenceSpaceType() instead.');const t=document.createElement("button");function n(){let h=null;async function d(g){g.addEventListener("end",f),await i.xr.setSession(g),t.textContent="EXIT VR",h=g}function f(){h.removeEventListener("end",f),t.textContent="ENTER VR",h=null}t.style.display="",t.style.cursor="pointer",t.style.left="calc(50% - 50px)",t.style.width="100px",t.textContent="ENTER VR",t.onmouseenter=function(){t.style.opacity="1.0"},t.onmouseleave=function(){t.style.opacity="0.5"},t.onclick=function(){if(h===null){const g={optionalFeatures:["local-floor","bounded-floor","hand-tracking","layers"]};navigator.xr.requestSession("immersive-vr",g).then(d)}else h.end()}}function r(){t.style.display="",t.style.cursor="auto",t.style.left="calc(50% - 75px)",t.style.width="150px",t.onmouseenter=null,t.onmouseleave=null,t.onclick=null}function s(){r(),t.textContent="VR NOT SUPPORTED"}function o(h){r(),console.warn("Exception when trying to call xr.isSessionSupported",h),t.textContent="VR NOT ALLOWED"}function l(h){h.style.position="absolute",h.style.bottom="20px",h.style.padding="12px 6px",h.style.border="1px solid #fff",h.style.borderRadius="4px",h.style.background="rgba(0,0,0,0.1)",h.style.color="#fff",h.style.font="normal 13px sans-serif",h.style.textAlign="center",h.style.opacity="0.5",h.style.outline="none",h.style.zIndex="999"}if("xr"in navigator)return t.id="VRButton",t.style.display="none",l(t),navigator.xr.isSessionSupported("immersive-vr").then(function(h){h?n():s(),h&&pm.xrSessionIsGranted&&t.click()}).catch(o),t;{const h=document.createElement("a");return window.isSecureContext===!1?(h.href=document.location.href.replace(/^http:/,"https:"),h.innerHTML="WEBXR NEEDS HTTPS"):(h.href="https://immersiveweb.dev/",h.innerHTML="WEBXR NOT AVAILABLE"),h.style.left="calc(50% - 90px)",h.style.width="180px",h.style.textDecoration="none",l(h),h}},xrSessionIsGranted:!1,registerSessionGrantedListener(){if("xr"in navigator){if(/WebXRViewer\//i.test(navigator.userAgent))return;navigator.xr.addEventListener("sessiongranted",()=>{pm.xrSessionIsGranted=!0})}}};pm.registerSessionGrantedListener();const ga=document.createElement("div");Object.assign(ga.style,{position:"absolute",left:"0px",top:"0px",width:"100%",height:"100%"});const wn=document.createElement("div");Object.assign(wn.style,{position:"absolute",left:"0px",top:"0px",width:"100%",zIndex:"10"});ga.appendChild(wn);Qc(i=>wn.style.height=i?"50%":"100%");const TT=[wn.getBoundingClientRect()],tU=new ResizeObserver(()=>TT[0]=wn.getBoundingClientRect());tU.observe(wn);queueMicrotask(()=>{if(!(!Cs.autoMount||ga.parentElement)){if(typeof Cs.autoMount=="string"){const i=document.querySelector(Cs.autoMount);if(!i)return;i.appendChild(ga),new ResizeObserver(()=>{const t=[i.clientWidth,i.clientHeight];s_(t)}).observe(i);return}window.addEventListener("resize",()=>{s_([window.innerWidth,window.innerHeight])}),document.body.appendChild(ga)}});const Jh=document.createElement("div");Object.assign(Jh.style,{border:"1px solid blue",position:"absolute",left:"50%",top:"50%",transform:"translateX(-50%) translateY(-50%)",pointerEvents:"none"});wn.appendChild(Jh);Kt(()=>{var i;const[e,t]=(i=Jc())!==null&&i!==void 0?i:mi(),[n,r]=mi();Jh.style.display=Qc()||n===e&&r===t?"none":"block"},[mi,Jc,Qc]);Kt(()=>{const i=Sn().domElement;return ga.appendChild(i),Object.assign(i.style,{position:"absolute",left:"0px",top:"0px"}),()=>{ga.removeChild(i)}},[Sn]);Kt(()=>{const i=Sn(),[e,t]=mi();i.setSize(e,t),i.setPixelRatio(Zc())},[Sn,mi,Zc]);Kt(()=>{const i=Sn();i.shadowMap.enabled=Kh()!=="speed"},[Sn,Kh]);Kt(()=>{const i=Sn();i.physicallyCorrectLights=m_()},[Sn,m_]);Kt(()=>{const i=Sn(),e=qc(),t=typeof e=="string"&&e!=="default"?Gf()*cm()*(e==="studio"?2:1):Gf();i.toneMapping=t!==1?BE:As,i.toneMappingExposure=t},[Gf,Sn,qc,cm]);Kt(()=>{if(Kc()!=="webxr")return;const i=Sn();i.xr.enabled=!0;const e=pm.createButton(i);return wn.appendChild(e),e.ontouchstart=()=>{var t;return(t=e.onclick)===null||t===void 0?void 0:t.call(e,new MouseEvent("click"))},()=>{i.xr.enabled=!1,wn.removeChild(e)}},[Kc,Sn]);class fm{constructor(e=0,t=0,n=0,r=0,s=0,o=0,l=0){this.x=e,this.y=t,this.z=n,this.clientX=r,this.clientY=s,this.xNorm=o,this.yNorm=l}}class nU extends fm{constructor(e=0,t=0,n=0,r=0,s=0,o=0,l=0,h,d){super(e,t,n,r,s,o,l),this.point=h,this.distance=d}}const AT=bt(Me({},du),{onClick:Function,onMouseMove:Function,onMouseDown:Function,onMouseUp:Function,onMousePress:Function}),CT=Me({},Sl),[JS,mm]=Ge(!0),[x9,iU]=Ge("mouse");var PT=(i,e)=>{const t=TT[0],n=i.clientX-t.x,r=i.clientY-t.y;if(iU()==="camera"&&!e)return new fm;const s=n/t.width*2-1,o=-(r/t.height)*2+1,l=Ze();Ot.set(s,o,.5),Ot.unproject(l),Ot.sub(l.position).normalize();const{x:h,y:d,z:f}=l.position.clone().add(Ot.multiplyScalar(5));return new fm(h,d,f,n,r,s,o)};const[QS,Qh]=Ge(!1),[rU,$c]=Ge(!1);Kt(()=>{rU(Qh()&&Ze()===bn)},[Qh,Ze]);const ji=new LE;let g_=0,y_=0,__=0,x_=!1;wn.addEventListener("contextmenu",i=>{i.preventDefault(),x_=!0});ji.on("down",i=>{g_=Date.now(),y_=i.clientX,__=i.clientY});ji.on("up",i=>{const e=Date.now(),t=e-g_,n=Math.abs(i.clientX-y_),r=Math.abs(i.clientY-__);g_=e,y_=i.clientX,__=i.clientY,t<300&&n<5&&r<5&&ji.emit(x_?"rightClick":"click",i),x_=!1});const Ux=J_(PT,0,"leading");wn.addEventListener("pointermove",i=>{ji.emit("move",Ux(i))});let b_=!1;wn.addEventListener("pointerdown",i=>{b_=!0;const e=Ux(i);ji.emit("down",e),ji.emit("move",e)});const Fx=i=>{b_&&ji.emit("up",Ux(i)),b_=!1};wn.addEventListener("pointerup",Fx);wn.addEventListener("pointercancel",Fx);wn.addEventListener("pointerleave",Fx);class sv extends Bs{constructor(){super(new ei);let e=new fm;const[t,n]=Ge(!1);this.createEffect(()=>{const r=this.onMousePress;if(!n()||!r)return;const s=wi(()=>r(e));return()=>{s.cancel()}},[n]),this.createEffect(()=>{if($c()&&mm())return;const r=ji.on("move",h=>{var d;(d=this.onMouseMove)===null||d===void 0||d.call(this,h),e=h}),s=ji.on("click",h=>{var d;(d=this.onClick)===null||d===void 0||d.call(this,h),e=h}),o=ji.on("down",h=>{var d;(d=this.onMouseDown)===null||d===void 0||d.call(this,h),e=h,t(!0)}),l=ji.on("up",h=>{var d;(d=this.onMouseUp)===null||d===void 0||d.call(this,h),e=h,t(!1)});return()=>{r.cancel(),s.cancel(),o.cancel(),l.cancel()}},[$c,mm])}}sv.componentName="mouse";sv.defaults=CT;sv.schema=AT;const sU=new sv;Li.delete(sU);const[My,$S]=Ge(!1),[oU,vd]=Er(),Di=Mr((i,e)=>oU({target:i,rightClick:e}),0,"trailing");Ze(()=>Di());const[aU,So]=Ge(!1),eM=new K6,w_=new Set,tM=Mr(()=>{w_.clear(),$e.traverse(i=>{var e;const{manager:t}=i.userData;t&&w_.add((e=t.object3d)!==null&&e!==void 0?e:i)})},0,"trailing"),lU=(i,e,t)=>(eM.setFromCamera({x:i,y:e},Ze()),eM.intersectObjects([...t])[0]),il=(i,e,t)=>ji.on(i,n=>{const r=lU(n.xNorm,n.yNorm,e);if(!r)return;const s=Zh(r.point),o=r.distance*pn;t(r.object.userData.manager,new nU(n.x,n.y,n.z,n.clientX,n.clientY,n.xNorm,n.yNorm,s,o))}),RT=new Set,LT=new Set,DT=new Set,IT=new Set,OT=new Set,kT=new Set,nM=()=>{const i=new En;i.watch(il("click",RT,(n,r)=>{var s;return(s=n.onClick)===null||s===void 0?void 0:s.call(n,r)})),i.watch(il("down",LT,(n,r)=>{var s;return(s=n.onMouseDown)===null||s===void 0?void 0:s.call(n,r)})),i.watch(il("up",DT,(n,r)=>{var s;return(s=n.onMouseUp)===null||s===void 0?void 0:s.call(n,r)}));let e=new Set,t=new Set;return i.watch(il("move",IT,(n,r)=>{e.add(n),n.outerObject3d.userData.eMove=r})),i.watch(il("move",OT,(n,r)=>{e.add(n),n.outerObject3d.userData.eMove=r})),i.watch(il("move",kT,(n,r)=>{e.add(n),n.outerObject3d.userData.eMove=r})),i.watch(ji.on("move",()=>{var n,r,s;for(const o of e)t.has(o)||(n=o.onMouseOver)===null||n===void 0||n.call(o,o.outerObject3d.userData.eMove),(r=o.onMouseMove)===null||r===void 0||r.call(o,o.outerObject3d.userData.eMove);for(const o of t)e.has(o)||(s=o.onMouseOut)===null||s===void 0||s.call(o,o.outerObject3d.userData.eMove);t=e,e=new Set})),i};Kt(()=>{const i=Qh(),e=$S(),t=j4(!0);if(W4(()=>{!e&&(t.current=!0)},[e]),i&&!So()&&Ze()===bn){const r=new En;tM(),r.watch(tv(tM)),r.watch(ji.on("click",()=>Di()));let s=!1;return r.watch(ji.on("rightClick",()=>s=!0)),r.watch(il(["click","rightClick"],w_,o=>{Di(o,s),s=!1})),r.watch(vd(({target:o,rightClick:l})=>{if(e){if(!ml(o)||l)return;if(t.current){const h=vi();ml(h)&&YS(h)}t.current=!1,Os().includes(o)?iz(o):YS(o);return}ZS(),jh(l?o:o===vi()?void 0:o)})),!e&&!mm()&&r.watch(nM()),()=>{r.cancel()}}if(i)return;ZS(),jh(void 0);const n=nM();return()=>{n.cancel()}},[Qh,mm,So,Ze,$S]);const Zt={c:null,u:[new z,new z,new z],e:[]},tn={c:null,u:[new z,new z,new z],e:[]},Bn=[[],[],[]],Tt=[[],[],[]],Mn=[],Ja=new z,Qa=new z,$a=new z,si=new z,iM=new z,rM=new z,Qr=new Gn,sM=new sr,Sf=new Qe,oM=new Qe,aM=new Mo;class Vx{constructor(e=new z,t=new z,n=new Gn){this.center=e,this.halfSize=t,this.rotation=n}set(e,t,n){return this.center=e,this.halfSize=t,this.rotation=n,this}copy(e){return this.center.copy(e.center),this.halfSize.copy(e.halfSize),this.rotation.copy(e.rotation),this}clone(){return new this.constructor().copy(this)}getSize(e){return e.copy(this.halfSize).multiplyScalar(2)}clampPoint(e,t){const n=this.halfSize;si.subVectors(e,this.center),this.rotation.extractBasis(Ja,Qa,$a),t.copy(this.center);const r=G0.clamp(si.dot(Ja),-n.x,n.x);t.add(Ja.multiplyScalar(r));const s=G0.clamp(si.dot(Qa),-n.y,n.y);t.add(Qa.multiplyScalar(s));const o=G0.clamp(si.dot($a),-n.z,n.z);return t.add($a.multiplyScalar(o)),t}containsPoint(e){return si.subVectors(e,this.center),this.rotation.extractBasis(Ja,Qa,$a),Math.abs(si.dot(Ja))<=this.halfSize.x&&Math.abs(si.dot(Qa))<=this.halfSize.y&&Math.abs(si.dot($a))<=this.halfSize.z}intersectsBox3(e){return this.intersectsOBB(cU.fromBox3(e))}intersectsSphere(e){return this.clampPoint(e.center,rM),rM.distanceToSquared(e.center)<=e.radius*e.radius}intersectsOBB(e,t=Number.EPSILON){Zt.c=this.center,Zt.e[0]=this.halfSize.x,Zt.e[1]=this.halfSize.y,Zt.e[2]=this.halfSize.z,this.rotation.extractBasis(Zt.u[0],Zt.u[1],Zt.u[2]),tn.c=e.center,tn.e[0]=e.halfSize.x,tn.e[1]=e.halfSize.y,tn.e[2]=e.halfSize.z,e.rotation.extractBasis(tn.u[0],tn.u[1],tn.u[2]);for(let s=0;s<3;s++)for(let o=0;o<3;o++)Bn[s][o]=Zt.u[s].dot(tn.u[o]);si.subVectors(tn.c,Zt.c),Mn[0]=si.dot(Zt.u[0]),Mn[1]=si.dot(Zt.u[1]),Mn[2]=si.dot(Zt.u[2]);for(let s=0;s<3;s++)for(let o=0;o<3;o++)Tt[s][o]=Math.abs(Bn[s][o])+t;let n,r;for(let s=0;s<3;s++)if(n=Zt.e[s],r=tn.e[0]*Tt[s][0]+tn.e[1]*Tt[s][1]+tn.e[2]*Tt[s][2],Math.abs(Mn[s])>n+r)return!1;for(let s=0;s<3;s++)if(n=Zt.e[0]*Tt[0][s]+Zt.e[1]*Tt[1][s]+Zt.e[2]*Tt[2][s],r=tn.e[s],Math.abs(Mn[0]*Bn[0][s]+Mn[1]*Bn[1][s]+Mn[2]*Bn[2][s])>n+r)return!1;return n=Zt.e[1]*Tt[2][0]+Zt.e[2]*Tt[1][0],r=tn.e[1]*Tt[0][2]+tn.e[2]*Tt[0][1],!(Math.abs(Mn[2]*Bn[1][0]-Mn[1]*Bn[2][0])>n+r||(n=Zt.e[1]*Tt[2][1]+Zt.e[2]*Tt[1][1],r=tn.e[0]*Tt[0][2]+tn.e[2]*Tt[0][0],Math.abs(Mn[2]*Bn[1][1]-Mn[1]*Bn[2][1])>n+r)||(n=Zt.e[1]*Tt[2][2]+Zt.e[2]*Tt[1][2],r=tn.e[0]*Tt[0][1]+tn.e[1]*Tt[0][0],Math.abs(Mn[2]*Bn[1][2]-Mn[1]*Bn[2][2])>n+r)||(n=Zt.e[0]*Tt[2][0]+Zt.e[2]*Tt[0][0],r=tn.e[1]*Tt[1][2]+tn.e[2]*Tt[1][1],Math.abs(Mn[0]*Bn[2][0]-Mn[2]*Bn[0][0])>n+r)||(n=Zt.e[0]*Tt[2][1]+Zt.e[2]*Tt[0][1],r=tn.e[0]*Tt[1][2]+tn.e[2]*Tt[1][0],Math.abs(Mn[0]*Bn[2][1]-Mn[2]*Bn[0][1])>n+r)||(n=Zt.e[0]*Tt[2][2]+Zt.e[2]*Tt[0][2],r=tn.e[0]*Tt[1][1]+tn.e[1]*Tt[1][0],Math.abs(Mn[0]*Bn[2][2]-Mn[2]*Bn[0][2])>n+r)||(n=Zt.e[0]*Tt[1][0]+Zt.e[1]*Tt[0][0],r=tn.e[1]*Tt[2][2]+tn.e[2]*Tt[2][1],Math.abs(Mn[1]*Bn[0][0]-Mn[0]*Bn[1][0])>n+r)||(n=Zt.e[0]*Tt[1][1]+Zt.e[1]*Tt[0][1],r=tn.e[0]*Tt[2][2]+tn.e[2]*Tt[2][0],Math.abs(Mn[1]*Bn[0][1]-Mn[0]*Bn[1][1])>n+r)||(n=Zt.e[0]*Tt[1][2]+Zt.e[1]*Tt[0][2],r=tn.e[0]*Tt[2][1]+tn.e[1]*Tt[2][0],Math.abs(Mn[1]*Bn[0][2]-Mn[0]*Bn[1][2])>n+r))}intersectsPlane(e){this.rotation.extractBasis(Ja,Qa,$a);const t=this.halfSize.x*Math.abs(e.normal.dot(Ja))+this.halfSize.y*Math.abs(e.normal.dot(Qa))+this.halfSize.z*Math.abs(e.normal.dot($a)),n=e.normal.dot(this.center)-e.constant;return Math.abs(n)<=t}intersectRay(e,t){return this.getSize(iM),sM.setFromCenterAndSize(si.set(0,0,0),iM),Sf.setFromMatrix3(this.rotation),Sf.setPosition(this.center),oM.copy(Sf).invert(),aM.copy(e).applyMatrix4(oM),aM.intersectBox(sM,t)?t.applyMatrix4(Sf):null}intersectsRay(e){return this.intersectRay(e,si)!==null}fromBox3(e){return e.getCenter(this.center),e.getSize(this.halfSize).multiplyScalar(.5),this.rotation.identity(),this}equals(e){return e.center.equals(this.center)&&e.halfSize.equals(this.halfSize)&&e.rotation.equals(this.rotation)}applyMatrix4(e){const t=e.elements;let n=si.set(t[0],t[1],t[2]).length();const r=si.set(t[4],t[5],t[6]).length(),s=si.set(t[8],t[9],t[10]).length();e.determinant()<0&&(n=-n),Qr.setFromMatrix4(e);const l=1/n,h=1/r,d=1/s;return Qr.elements[0]*=l,Qr.elements[1]*=l,Qr.elements[2]*=l,Qr.elements[3]*=h,Qr.elements[4]*=h,Qr.elements[5]*=h,Qr.elements[6]*=d,Qr.elements[7]*=d,Qr.elements[8]*=d,this.rotation.multiply(Qr),this.halfSize.x*=n,this.halfSize.y*=r,this.halfSize.z*=s,si.setFromMatrixPosition(e),this.center.add(si),this}}const cU=new Vx,_r={uniforms:{tDiffuse:{value:null},opacity:{value:1}},vertexShader:` varying vec2 vUv; void main() { vUv = uv; gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); }`,fragmentShader:` uniform float opacity; uniform sampler2D tDiffuse; varying vec2 vUv; void main() { gl_FragColor = texture2D( tDiffuse, vUv ); gl_FragColor.a *= opacity; }`};class zs{constructor(){this.enabled=!0,this.needsSwap=!0,this.clear=!1,this.renderToScreen=!1}setSize(){}render(){console.error("THREE.Pass: .render() must be implemented in derived pass.")}}const uU=new ou(-1,1,1,-1,0,1),Hx=new zt;Hx.setAttribute("position",new xt([-1,3,0,-1,-1,0,3,-1,0],3));Hx.setAttribute("uv",new xt([0,2,0,0,2,0],2));class Ml{constructor(e){this._mesh=new In(Hx,e)}dispose(){this._mesh.geometry.dispose()}render(e){e.render(this._mesh,uU)}get material(){return this._mesh.material}set material(e){this._mesh.material=e}}class vm extends zs{constructor(e,t){super(),this.textureID=t!==void 0?t:"tDiffuse",e instanceof kt?(this.uniforms=e.uniforms,this.material=e):e&&(this.uniforms=Qn.clone(e.uniforms),this.material=new kt({defines:Object.assign({},e.defines),uniforms:this.uniforms,vertexShader:e.vertexShader,fragmentShader:e.fragmentShader})),this.fsQuad=new Ml(this.material)}render(e,t,n){this.uniforms[this.textureID]&&(this.uniforms[this.textureID].value=n.texture),this.fsQuad.material=this.material,this.renderToScreen?(e.setRenderTarget(null),this.fsQuad.render(e)):(e.setRenderTarget(t),this.clear&&e.clear(e.autoClearColor,e.autoClearDepth,e.autoClearStencil),this.fsQuad.render(e))}}class lM extends zs{constructor(e,t){super(),this.scene=e,this.camera=t,this.clear=!0,this.needsSwap=!1,this.inverse=!1}render(e,t,n){const r=e.getContext(),s=e.state;s.buffers.color.setMask(!1),s.buffers.depth.setMask(!1),s.buffers.color.setLocked(!0),s.buffers.depth.setLocked(!0);let o,l;this.inverse?(o=0,l=1):(o=1,l=0),s.buffers.stencil.setTest(!0),s.buffers.stencil.setOp(r.REPLACE,r.REPLACE,r.REPLACE),s.buffers.stencil.setFunc(r.ALWAYS,o,4294967295),s.buffers.stencil.setClear(l),s.buffers.stencil.setLocked(!0),e.setRenderTarget(n),this.clear&&e.clear(),e.render(this.scene,this.camera),e.setRenderTarget(t),this.clear&&e.clear(),e.render(this.scene,this.camera),s.buffers.color.setLocked(!1),s.buffers.depth.setLocked(!1),s.buffers.stencil.setLocked(!1),s.buffers.stencil.setFunc(r.EQUAL,1,4294967295),s.buffers.stencil.setOp(r.KEEP,r.KEEP,r.KEEP),s.buffers.stencil.setLocked(!0)}}class hU extends zs{constructor(){super(),this.needsSwap=!1}render(e){e.state.buffers.stencil.setLocked(!1),e.state.buffers.stencil.setTest(!1)}}class S_{constructor(e,t){if(this.renderer=e,t===void 0){const n=e.getSize(new ae);this._pixelRatio=e.getPixelRatio(),this._width=n.width,this._height=n.height,t=new Yt(this._width*this._pixelRatio,this._height*this._pixelRatio),t.texture.name="EffectComposer.rt1"}else this._pixelRatio=1,this._width=t.width,this._height=t.height;this.renderTarget1=t,this.renderTarget2=t.clone(),this.renderTarget2.texture.name="EffectComposer.rt2",this.writeBuffer=this.renderTarget1,this.readBuffer=this.renderTarget2,this.renderToScreen=!0,this.passes=[],_r===void 0&&console.error("THREE.EffectComposer relies on CopyShader"),vm===void 0&&console.error("THREE.EffectComposer relies on ShaderPass"),this.copyPass=new vm(_r),this.clock=new k2}swapBuffers(){const e=this.readBuffer;this.readBuffer=this.writeBuffer,this.writeBuffer=e}addPass(e){this.passes.push(e),e.setSize(this._width*this._pixelRatio,this._height*this._pixelRatio)}insertPass(e,t){this.passes.splice(t,0,e),e.setSize(this._width*this._pixelRatio,this._height*this._pixelRatio)}removePass(e){const t=this.passes.indexOf(e);t!==-1&&this.passes.splice(t,1)}isLastEnabledPass(e){for(let t=e+1;tGx.camera=i);const cM={shaderID:"luminosityHighPass",uniforms:{tDiffuse:{value:null},luminosityThreshold:{value:1},smoothWidth:{value:1},defaultColor:{value:new Pe(0)},defaultOpacity:{value:0}},vertexShader:` varying vec2 vUv; void main() { vUv = uv; gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); }`,fragmentShader:` uniform sampler2D tDiffuse; uniform vec3 defaultColor; uniform float defaultOpacity; uniform float luminosityThreshold; uniform float smoothWidth; varying vec2 vUv; void main() { vec4 texel = texture2D( tDiffuse, vUv ); vec3 luma = vec3( 0.299, 0.587, 0.114 ); float v = dot( texel.xyz, luma ); vec4 outputColor = vec4( defaultColor.rgb, defaultOpacity ); float alpha = smoothstep( luminosityThreshold, luminosityThreshold + smoothWidth, v ); gl_FragColor = mix( outputColor, texel, alpha ); }`};class eu extends zs{constructor(e,t,n,r){super(),this.strength=t!==void 0?t:1,this.radius=n,this.threshold=r,this.resolution=e!==void 0?new ae(e.x,e.y):new ae(256,256),this.clearColor=new Pe(0,0,0),this.renderTargetsHorizontal=[],this.renderTargetsVertical=[],this.nMips=5;let s=Math.round(this.resolution.x/2),o=Math.round(this.resolution.y/2);this.renderTargetBright=new Yt(s,o),this.renderTargetBright.texture.name="UnrealBloomPass.bright",this.renderTargetBright.texture.generateMipmaps=!1;for(let g=0;g varying vec2 vUv; uniform sampler2D colorTexture; uniform vec2 texSize; uniform vec2 direction; float gaussianPdf(in float x, in float sigma) { return 0.39894 * exp( -0.5 * x * x/( sigma * sigma))/sigma; } void main() { vec2 invSize = 1.0 / texSize; float fSigma = float(SIGMA); float weightSum = gaussianPdf(0.0, fSigma); vec3 diffuseSum = texture2D( colorTexture, vUv).rgb * weightSum; for( int i = 1; i < KERNEL_RADIUS; i ++ ) { float x = float(i); float w = gaussianPdf(x, fSigma); vec2 uvOffset = direction * invSize * x; vec3 sample1 = texture2D( colorTexture, vUv + uvOffset).rgb; vec3 sample2 = texture2D( colorTexture, vUv - uvOffset).rgb; diffuseSum += (sample1 + sample2) * w; weightSum += 2.0 * w; } gl_FragColor = vec4(diffuseSum/weightSum, 1.0); }`})}getCompositeMaterial(e){return new kt({defines:{NUM_MIPS:e},uniforms:{blurTexture1:{value:null},blurTexture2:{value:null},blurTexture3:{value:null},blurTexture4:{value:null},blurTexture5:{value:null},bloomStrength:{value:1},bloomFactors:{value:null},bloomTintColors:{value:null},bloomRadius:{value:0}},vertexShader:`varying vec2 vUv; void main() { vUv = uv; gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); }`,fragmentShader:`varying vec2 vUv; uniform sampler2D blurTexture1; uniform sampler2D blurTexture2; uniform sampler2D blurTexture3; uniform sampler2D blurTexture4; uniform sampler2D blurTexture5; uniform float bloomStrength; uniform float bloomRadius; uniform float bloomFactors[NUM_MIPS]; uniform vec3 bloomTintColors[NUM_MIPS]; float lerpBloomFactor(const in float factor) { float mirrorFactor = 1.2 - factor; return mix(factor, mirrorFactor, bloomRadius); } void main() { gl_FragColor = bloomStrength * ( lerpBloomFactor(bloomFactors[0]) * vec4(bloomTintColors[0], 1.0) * texture2D(blurTexture1, vUv) + lerpBloomFactor(bloomFactors[1]) * vec4(bloomTintColors[1], 1.0) * texture2D(blurTexture2, vUv) + lerpBloomFactor(bloomFactors[2]) * vec4(bloomTintColors[2], 1.0) * texture2D(blurTexture3, vUv) + lerpBloomFactor(bloomFactors[3]) * vec4(bloomTintColors[3], 1.0) * texture2D(blurTexture4, vUv) + lerpBloomFactor(bloomFactors[4]) * vec4(bloomTintColors[4], 1.0) * texture2D(blurTexture5, vUv) ); }`})}}eu.BlurDirectionX=new ae(1,0);eu.BlurDirectionY=new ae(0,1);const gd=new eu(new ae,1.5,0,0);vT(i=>gd.radius=i);gT(i=>gd.strength=i);yT(i=>gd.threshold=i);const ya=new S_(Sn());ya.renderToScreen=!1;Kt(()=>{ya.renderer=Sn();const[i,e]=mi();ya.setSize(i,e),ya.setPixelRatio(Zc())},[Sn,mi,Zc]);ya.addPass(Gx);ya.addPass(gd);const BT=[!1],Wx=i=>{i.userData.bloom=!0,BT[0]=!0},jx=i=>{i.userData.bloom=!1};let M_;const zT=i=>{for(const e of i){if(e.userData.bloom){e.renderOrder=1;continue}e.visible&&(zT(e.children),e.material&&(e.material.colorWrite=!1),e.renderOrder=0)}},pU=()=>{zT($e.children),$e.background&&(M_=$e.background,$e.background=null)},fU=i=>i.material&&(i.material.colorWrite=!0),mU=()=>{$e.traverse(fU),M_&&($e.background=M_)};var vU=()=>{pU(),ya.render(),mU()};const Mf=new WeakMap;var uM=i=>{if(Mf.has(i))return Mf.get(i);fd(i);const e=Ze();Ot.project(e);const t=(Ot.x*.5+.5)*wn.clientWidth,n=(Ot.y*-.5+.5)*wn.clientHeight,r={x:t,y:n};return Mf.set(i,r),setTimeout(()=>Mf.delete(i)),r};const $r={defines:{MAX_STEP:0,PERSPECTIVE_CAMERA:!0,DISTANCE_ATTENUATION:!0,FRESNEL:!0,INFINITE_THICK:!1,SELECTIVE:!1},uniforms:{tDiffuse:{value:null},tNormal:{value:null},tMetalness:{value:null},tDepth:{value:null},cameraNear:{value:null},cameraFar:{value:null},resolution:{value:new ae},cameraProjectionMatrix:{value:new Qe},cameraInverseProjectionMatrix:{value:new Qe},opacity:{value:.5},maxDistance:{value:180},cameraRange:{value:0},thickness:{value:.018}},vertexShader:` varying vec2 vUv; void main() { vUv = uv; gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); } `,fragmentShader:` // precision highp float; precision highp sampler2D; varying vec2 vUv; uniform sampler2D tDepth; uniform sampler2D tNormal; uniform sampler2D tMetalness; uniform sampler2D tDiffuse; uniform float cameraRange; uniform vec2 resolution; uniform float opacity; uniform float cameraNear; uniform float cameraFar; uniform float maxDistance; uniform float thickness; uniform mat4 cameraProjectionMatrix; uniform mat4 cameraInverseProjectionMatrix; #include float pointToLineDistance(vec3 x0, vec3 x1, vec3 x2) { //x0: point, x1: linePointA, x2: linePointB //https://mathworld.wolfram.com/Point-LineDistance3-Dimensional.html return length(cross(x0-x1,x0-x2))/length(x2-x1); } float pointPlaneDistance(vec3 point,vec3 planePoint,vec3 planeNormal){ // https://mathworld.wolfram.com/Point-PlaneDistance.html //// https://en.wikipedia.org/wiki/Plane_(geometry) //// http://paulbourke.net/geometry/pointlineplane/ float a=planeNormal.x,b=planeNormal.y,c=planeNormal.z; float x0=point.x,y0=point.y,z0=point.z; float x=planePoint.x,y=planePoint.y,z=planePoint.z; float d=-(a*x+b*y+c*z); float distance=(a*x0+b*y0+c*z0+d)/sqrt(a*a+b*b+c*c); return distance; } float getDepth( const in vec2 uv ) { return texture2D( tDepth, uv ).x; } float getViewZ( const in float depth ) { #ifdef PERSPECTIVE_CAMERA return perspectiveDepthToViewZ( depth, cameraNear, cameraFar ); #else return orthographicDepthToViewZ( depth, cameraNear, cameraFar ); #endif } vec3 getViewPosition( const in vec2 uv, const in float depth/*clip space*/, const in float clipW ) { vec4 clipPosition = vec4( ( vec3( uv, depth ) - 0.5 ) * 2.0, 1.0 );//ndc clipPosition *= clipW; //clip return ( cameraInverseProjectionMatrix * clipPosition ).xyz;//view } vec3 getViewNormal( const in vec2 uv ) { return unpackRGBToNormal( texture2D( tNormal, uv ).xyz ); } vec2 viewPositionToXY(vec3 viewPosition){ vec2 xy; vec4 clip=cameraProjectionMatrix*vec4(viewPosition,1); xy=clip.xy;//clip float clipW=clip.w; xy/=clipW;//NDC xy=(xy+1.)/2.;//uv xy*=resolution;//screen return xy; } void main(){ #ifdef SELECTIVE float metalness=texture2D(tMetalness,vUv).r; if(metalness==0.) return; #endif float depth = getDepth( vUv ); float viewZ = getViewZ( depth ); if(-viewZ>=cameraFar) return; float clipW = cameraProjectionMatrix[2][3] * viewZ+cameraProjectionMatrix[3][3]; vec3 viewPosition=getViewPosition( vUv, depth, clipW ); vec2 d0=gl_FragCoord.xy; vec2 d1; vec3 viewNormal=getViewNormal( vUv ); #ifdef PERSPECTIVE_CAMERA vec3 viewIncidentDir=normalize(viewPosition); vec3 viewReflectDir=reflect(viewIncidentDir,viewNormal); #else vec3 viewIncidentDir=vec3(0,0,-1); vec3 viewReflectDir=reflect(viewIncidentDir,viewNormal); #endif float maxReflectRayLen=maxDistance/dot(-viewIncidentDir,viewNormal); // dot(a,b)==length(a)*length(b)*cos(theta) // https://www.mathsisfun.com/algebra/vectors-dot-product.html // if(a.isNormalized&&b.isNormalized) dot(a,b)==cos(theta) // maxDistance/maxReflectRayLen=cos(theta) // maxDistance/maxReflectRayLen==dot(a,b) // maxReflectRayLen==maxDistance/dot(a,b) vec3 d1viewPosition=viewPosition+viewReflectDir*maxReflectRayLen; #ifdef PERSPECTIVE_CAMERA if(d1viewPosition.z>-cameraNear){ //https://tutorial.math.lamar.edu/Classes/CalcIII/EqnsOfLines.aspx float t=(-cameraNear-viewPosition.z)/viewReflectDir.z; d1viewPosition=viewPosition+viewReflectDir*t; } #endif d1=viewPositionToXY(d1viewPosition); float totalLen=length(d1-d0); float xLen=d1.x-d0.x; float yLen=d1.y-d0.y; float totalStep=max(abs(xLen),abs(yLen)); float xSpan=xLen/totalStep; float ySpan=yLen/totalStep; for(float i=0.;i=totalStep) break; vec2 xy=vec2(d0.x+i*xSpan,d0.y+i*ySpan); if(xy.x<0.||xy.x>resolution.x||xy.y<0.||xy.y>resolution.y) break; float s=length(xy-d0)/totalLen; vec2 uv=xy/resolution; float d = getDepth(uv); float vZ = getViewZ( d ); if(-vZ>=cameraFar) continue; float cW = cameraProjectionMatrix[2][3] * vZ+cameraProjectionMatrix[3][3]; vec3 vP=getViewPosition( uv, d, cW ); #ifdef PERSPECTIVE_CAMERA // https://comp.nus.edu.sg/~lowkl/publications/lowk_persp_interp_techrep.pdf float recipVPZ=1./viewPosition.z; float viewReflectRayZ=1./(recipVPZ+s*(1./d1viewPosition.z-recipVPZ)); #else float viewReflectRayZ=viewPosition.z+s*(d1viewPosition.z-viewPosition.z); #endif // if(viewReflectRayZ>vZ) continue; // will cause "npm run make-screenshot webgl_postprocessing_ssr" high probability hang. // https://github.com/mrdoob/three.js/pull/21539#issuecomment-821061164 if(viewReflectRayZ<=vZ){ bool hit; #ifdef INFINITE_THICK hit=true; #else float away=pointToLineDistance(vP,viewPosition,d1viewPosition); float minThickness; vec2 xyNeighbor=xy; xyNeighbor.x+=1.; vec2 uvNeighbor=xyNeighbor/resolution; vec3 vPNeighbor=getViewPosition(uvNeighbor,d,cW); minThickness=vPNeighbor.x-vP.x; minThickness*=3.; float tk=max(minThickness,thickness); hit=away<=tk; #endif if(hit){ vec3 vN=getViewNormal( uv ); if(dot(viewReflectDir,vN)>=0.) continue; float distance=pointPlaneDistance(vP,viewPosition,viewNormal); if(distance>maxDistance) break; float op=opacity; #ifdef DISTANCE_ATTENUATION float ratio=1.-(distance/maxDistance); float attenuation=ratio*ratio; op=opacity*attenuation; #endif #ifdef FRESNEL float fresnelCoe=(dot(viewIncidentDir,viewReflectDir)+1.)/2.; op*=fresnelCoe; #endif vec4 reflectColor=texture2D(tDiffuse,uv); gl_FragColor.xyz=reflectColor.xyz; gl_FragColor.a=op; break; } } } } `},Ef={defines:{PERSPECTIVE_CAMERA:1},uniforms:{tDepth:{value:null},cameraNear:{value:null},cameraFar:{value:null}},vertexShader:` varying vec2 vUv; void main() { vUv = uv; gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); } `,fragmentShader:` uniform sampler2D tDepth; uniform float cameraNear; uniform float cameraFar; varying vec2 vUv; #include float getLinearDepth( const in vec2 uv ) { #if PERSPECTIVE_CAMERA == 1 float fragCoordZ = texture2D( tDepth, uv ).x; float viewZ = perspectiveDepthToViewZ( fragCoordZ, cameraNear, cameraFar ); return viewZToOrthographicDepth( viewZ, cameraNear, cameraFar ); #else return texture2D( tDepth, uv ).x; #endif } void main() { float depth = getLinearDepth( vUv ); float d = 1.0 - depth; // d=(d-.999)*1000.; gl_FragColor = vec4( vec3( d ), 1.0 ); } `},la={uniforms:{tDiffuse:{value:null},resolution:{value:new ae},opacity:{value:.5}},vertexShader:` varying vec2 vUv; void main() { vUv = uv; gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); } `,fragmentShader:` uniform sampler2D tDiffuse; uniform vec2 resolution; varying vec2 vUv; void main() { //reverse engineering from PhotoShop blur filter, then change coefficient vec2 texelSize = ( 1.0 / resolution ); vec4 c=texture2D(tDiffuse,vUv); vec2 offset; offset=(vec2(-1,0))*texelSize; vec4 cl=texture2D(tDiffuse,vUv+offset); offset=(vec2(1,0))*texelSize; vec4 cr=texture2D(tDiffuse,vUv+offset); offset=(vec2(0,-1))*texelSize; vec4 cb=texture2D(tDiffuse,vUv+offset); offset=(vec2(0,1))*texelSize; vec4 ct=texture2D(tDiffuse,vUv+offset); // float coeCenter=.5; // float coeSide=.125; float coeCenter=.2; float coeSide=.2; float a=c.a*coeCenter+cl.a*coeSide+cr.a*coeSide+cb.a*coeSide+ct.a*coeSide; vec3 rgb=(c.rgb*c.a*coeCenter+cl.rgb*cl.a*coeSide+cr.rgb*cr.a*coeSide+cb.rgb*cb.a*coeSide+ct.rgb*ct.a*coeSide)/a; gl_FragColor=vec4(rgb,a); } `};class vo extends zs{constructor({renderer:e,scene:t,camera:n,width:r,height:s,selects:o,bouncing:l=!1,groundReflector:h}){super(),this.width=r!==void 0?r:512,this.height=s!==void 0?s:512,this.clear=!0,this.renderer=e,this.scene=t,this.camera=n,this.groundReflector=h,this.opacity=$r.uniforms.opacity.value,this.output=0,this.maxDistance=$r.uniforms.maxDistance.value,this.thickness=$r.uniforms.thickness.value,this.tempColor=new Pe,this._selects=o,this.selective=Array.isArray(this._selects),Object.defineProperty(this,"selects",{get(){return this._selects},set(f){this._selects!==f&&(this._selects=f,Array.isArray(f)?(this.selective=!0,this.ssrMaterial.defines.SELECTIVE=!0,this.ssrMaterial.needsUpdate=!0):(this.selective=!1,this.ssrMaterial.defines.SELECTIVE=!1,this.ssrMaterial.needsUpdate=!0))}}),this._bouncing=l,Object.defineProperty(this,"bouncing",{get(){return this._bouncing},set(f){this._bouncing!==f&&(this._bouncing=f,f?this.ssrMaterial.uniforms.tDiffuse.value=this.prevRenderTarget.texture:this.ssrMaterial.uniforms.tDiffuse.value=this.beautyRenderTarget.texture)}}),this.blur=!0,this._distanceAttenuation=$r.defines.DISTANCE_ATTENUATION,Object.defineProperty(this,"distanceAttenuation",{get(){return this._distanceAttenuation},set(f){this._distanceAttenuation!==f&&(this._distanceAttenuation=f,this.ssrMaterial.defines.DISTANCE_ATTENUATION=f,this.ssrMaterial.needsUpdate=!0)}}),this._fresnel=$r.defines.FRESNEL,Object.defineProperty(this,"fresnel",{get(){return this._fresnel},set(f){this._fresnel!==f&&(this._fresnel=f,this.ssrMaterial.defines.FRESNEL=f,this.ssrMaterial.needsUpdate=!0)}}),this._infiniteThick=$r.defines.INFINITE_THICK,Object.defineProperty(this,"infiniteThick",{get(){return this._infiniteThick},set(f){this._infiniteThick!==f&&(this._infiniteThick=f,this.ssrMaterial.defines.INFINITE_THICK=f,this.ssrMaterial.needsUpdate=!0)}});const d=new Hm;d.type=pl,d.minFilter=Xt,d.magFilter=Xt,this.beautyRenderTarget=new Yt(this.width,this.height,{minFilter:Xt,magFilter:Xt,depthTexture:d,depthBuffer:!0}),this.prevRenderTarget=new Yt(this.width,this.height,{minFilter:Xt,magFilter:Xt}),this.normalRenderTarget=new Yt(this.width,this.height,{minFilter:Xt,magFilter:Xt,type:Ts}),this.metalnessRenderTarget=new Yt(this.width,this.height,{minFilter:Xt,magFilter:Xt}),this.ssrRenderTarget=new Yt(this.width,this.height,{minFilter:Xt,magFilter:Xt}),this.blurRenderTarget=this.ssrRenderTarget.clone(),this.blurRenderTarget2=this.ssrRenderTarget.clone(),$r===void 0&&console.error("THREE.SSRPass: The pass relies on SSRShader."),this.ssrMaterial=new kt({defines:Object.assign({},$r.defines,{MAX_STEP:Math.sqrt(this.width*this.width+this.height*this.height)}),uniforms:Qn.clone($r.uniforms),vertexShader:$r.vertexShader,fragmentShader:$r.fragmentShader,blending:rn}),this.ssrMaterial.uniforms.tDiffuse.value=this.beautyRenderTarget.texture,this.ssrMaterial.uniforms.tNormal.value=this.normalRenderTarget.texture,this.ssrMaterial.defines.SELECTIVE=this.selective,this.ssrMaterial.needsUpdate=!0,this.ssrMaterial.uniforms.tMetalness.value=this.metalnessRenderTarget.texture,this.ssrMaterial.uniforms.tDepth.value=this.beautyRenderTarget.depthTexture,this.ssrMaterial.uniforms.cameraNear.value=this.camera.near,this.ssrMaterial.uniforms.cameraFar.value=this.camera.far,this.ssrMaterial.uniforms.thickness.value=this.thickness,this.ssrMaterial.uniforms.resolution.value.set(this.width,this.height),this.ssrMaterial.uniforms.cameraProjectionMatrix.value.copy(this.camera.projectionMatrix),this.ssrMaterial.uniforms.cameraInverseProjectionMatrix.value.copy(this.camera.projectionMatrixInverse),this.normalMaterial=new Jm,this.normalMaterial.blending=rn,this.metalnessOnMaterial=new ss({color:"white"}),this.metalnessOffMaterial=new ss({color:"black"}),this.blurMaterial=new kt({defines:Object.assign({},la.defines),uniforms:Qn.clone(la.uniforms),vertexShader:la.vertexShader,fragmentShader:la.fragmentShader}),this.blurMaterial.uniforms.tDiffuse.value=this.ssrRenderTarget.texture,this.blurMaterial.uniforms.resolution.value.set(this.width,this.height),this.blurMaterial2=new kt({defines:Object.assign({},la.defines),uniforms:Qn.clone(la.uniforms),vertexShader:la.vertexShader,fragmentShader:la.fragmentShader}),this.blurMaterial2.uniforms.tDiffuse.value=this.blurRenderTarget.texture,this.blurMaterial2.uniforms.resolution.value.set(this.width,this.height),this.depthRenderMaterial=new kt({defines:Object.assign({},Ef.defines),uniforms:Qn.clone(Ef.uniforms),vertexShader:Ef.vertexShader,fragmentShader:Ef.fragmentShader,blending:rn}),this.depthRenderMaterial.uniforms.tDepth.value=this.beautyRenderTarget.depthTexture,this.depthRenderMaterial.uniforms.cameraNear.value=this.camera.near,this.depthRenderMaterial.uniforms.cameraFar.value=this.camera.far,this.copyMaterial=new kt({uniforms:Qn.clone(_r.uniforms),vertexShader:_r.vertexShader,fragmentShader:_r.fragmentShader,transparent:!0,depthTest:!1,depthWrite:!1,blendSrc:$f,blendDst:em,blendEquation:Es,blendSrcAlpha:$f,blendDstAlpha:em,blendEquationAlpha:Es}),this.fsQuad=new Ml(null),this.originalClearColor=new Pe}dispose(){this.beautyRenderTarget.dispose(),this.prevRenderTarget.dispose(),this.normalRenderTarget.dispose(),this.metalnessRenderTarget.dispose(),this.ssrRenderTarget.dispose(),this.blurRenderTarget.dispose(),this.blurRenderTarget2.dispose(),this.normalMaterial.dispose(),this.metalnessOnMaterial.dispose(),this.metalnessOffMaterial.dispose(),this.blurMaterial.dispose(),this.blurMaterial2.dispose(),this.copyMaterial.dispose(),this.depthRenderMaterial.dispose(),this.fsQuad.dispose()}render(e,t){switch(e.setRenderTarget(this.beautyRenderTarget),e.clear(),this.groundReflector&&(this.groundReflector.visible=!1,this.groundReflector.doRender(this.renderer,this.scene,this.camera),this.groundReflector.visible=!0),e.render(this.scene,this.camera),this.groundReflector&&(this.groundReflector.visible=!1),this.renderOverride(e,this.normalMaterial,this.normalRenderTarget,0,0),this.selective&&this.renderMetalness(e,this.metalnessOnMaterial,this.metalnessRenderTarget,0,0),this.ssrMaterial.uniforms.opacity.value=this.opacity,this.ssrMaterial.uniforms.maxDistance.value=this.maxDistance,this.ssrMaterial.uniforms.thickness.value=this.thickness,this.renderPass(e,this.ssrMaterial,this.ssrRenderTarget),this.blur&&(this.renderPass(e,this.blurMaterial,this.blurRenderTarget),this.renderPass(e,this.blurMaterial2,this.blurRenderTarget2)),this.output){case vo.OUTPUT.Default:this.bouncing?(this.copyMaterial.uniforms.tDiffuse.value=this.beautyRenderTarget.texture,this.copyMaterial.blending=rn,this.renderPass(e,this.copyMaterial,this.prevRenderTarget),this.blur?this.copyMaterial.uniforms.tDiffuse.value=this.blurRenderTarget2.texture:this.copyMaterial.uniforms.tDiffuse.value=this.ssrRenderTarget.texture,this.copyMaterial.blending=yo,this.renderPass(e,this.copyMaterial,this.prevRenderTarget),this.copyMaterial.uniforms.tDiffuse.value=this.prevRenderTarget.texture,this.copyMaterial.blending=rn,this.renderPass(e,this.copyMaterial,this.renderToScreen?null:t)):(this.copyMaterial.uniforms.tDiffuse.value=this.beautyRenderTarget.texture,this.copyMaterial.blending=rn,this.renderPass(e,this.copyMaterial,this.renderToScreen?null:t),this.blur?this.copyMaterial.uniforms.tDiffuse.value=this.blurRenderTarget2.texture:this.copyMaterial.uniforms.tDiffuse.value=this.ssrRenderTarget.texture,this.copyMaterial.blending=yo,this.renderPass(e,this.copyMaterial,this.renderToScreen?null:t));break;case vo.OUTPUT.SSR:this.blur?this.copyMaterial.uniforms.tDiffuse.value=this.blurRenderTarget2.texture:this.copyMaterial.uniforms.tDiffuse.value=this.ssrRenderTarget.texture,this.copyMaterial.blending=rn,this.renderPass(e,this.copyMaterial,this.renderToScreen?null:t),this.bouncing&&(this.blur?this.copyMaterial.uniforms.tDiffuse.value=this.blurRenderTarget2.texture:this.copyMaterial.uniforms.tDiffuse.value=this.beautyRenderTarget.texture,this.copyMaterial.blending=rn,this.renderPass(e,this.copyMaterial,this.prevRenderTarget),this.copyMaterial.uniforms.tDiffuse.value=this.ssrRenderTarget.texture,this.copyMaterial.blending=yo,this.renderPass(e,this.copyMaterial,this.prevRenderTarget));break;case vo.OUTPUT.Beauty:this.copyMaterial.uniforms.tDiffuse.value=this.beautyRenderTarget.texture,this.copyMaterial.blending=rn,this.renderPass(e,this.copyMaterial,this.renderToScreen?null:t);break;case vo.OUTPUT.Depth:this.renderPass(e,this.depthRenderMaterial,this.renderToScreen?null:t);break;case vo.OUTPUT.Normal:this.copyMaterial.uniforms.tDiffuse.value=this.normalRenderTarget.texture,this.copyMaterial.blending=rn,this.renderPass(e,this.copyMaterial,this.renderToScreen?null:t);break;case vo.OUTPUT.Metalness:this.copyMaterial.uniforms.tDiffuse.value=this.metalnessRenderTarget.texture,this.copyMaterial.blending=rn,this.renderPass(e,this.copyMaterial,this.renderToScreen?null:t);break;default:console.warn("THREE.SSRPass: Unknown output type.")}}renderPass(e,t,n,r,s){this.originalClearColor.copy(e.getClearColor(this.tempColor));const o=e.getClearAlpha(this.tempColor),l=e.autoClear;e.setRenderTarget(n),e.autoClear=!1,r!=null&&(e.setClearColor(r),e.setClearAlpha(s||0),e.clear()),this.fsQuad.material=t,this.fsQuad.render(e),e.autoClear=l,e.setClearColor(this.originalClearColor),e.setClearAlpha(o)}renderOverride(e,t,n,r,s){this.originalClearColor.copy(e.getClearColor(this.tempColor));const o=e.getClearAlpha(this.tempColor),l=e.autoClear;e.setRenderTarget(n),e.autoClear=!1,r=t.clearColor||r,s=t.clearAlpha||s,r!=null&&(e.setClearColor(r),e.setClearAlpha(s||0),e.clear()),this.scene.overrideMaterial=t,e.render(this.scene,this.camera),this.scene.overrideMaterial=null,e.autoClear=l,e.setClearColor(this.originalClearColor),e.setClearAlpha(o)}renderMetalness(e,t,n,r,s){this.originalClearColor.copy(e.getClearColor(this.tempColor));const o=e.getClearAlpha(this.tempColor),l=e.autoClear;e.setRenderTarget(n),e.autoClear=!1,r=t.clearColor||r,s=t.clearAlpha||s,r!=null&&(e.setClearColor(r),e.setClearAlpha(s||0),e.clear()),this.scene.traverseVisible(h=>{h._SSRPassBackupMaterial=h.material,this._selects.includes(h)?h.material=this.metalnessOnMaterial:h.material=this.metalnessOffMaterial}),e.render(this.scene,this.camera),this.scene.traverseVisible(h=>{h.material=h._SSRPassBackupMaterial}),e.autoClear=l,e.setClearColor(this.originalClearColor),e.setClearAlpha(o)}setSize(e,t){this.width=e,this.height=t,this.ssrMaterial.defines.MAX_STEP=Math.sqrt(e*e+t*t),this.ssrMaterial.needsUpdate=!0,this.beautyRenderTarget.setSize(e,t),this.prevRenderTarget.setSize(e,t),this.ssrRenderTarget.setSize(e,t),this.normalRenderTarget.setSize(e,t),this.metalnessRenderTarget.setSize(e,t),this.blurRenderTarget.setSize(e,t),this.blurRenderTarget2.setSize(e,t),this.ssrMaterial.uniforms.resolution.value.set(e,t),this.ssrMaterial.uniforms.cameraProjectionMatrix.value.copy(this.camera.projectionMatrix),this.ssrMaterial.uniforms.cameraInverseProjectionMatrix.value.copy(this.camera.projectionMatrixInverse),this.blurMaterial.uniforms.resolution.value.set(e,t),this.blurMaterial2.uniforms.resolution.value.set(e,t)}}vo.OUTPUT={Default:0,SSR:1,Beauty:3,Depth:4,Normal:5,Metalness:7};const UT=[!1],Xx=[],FT=i=>{i.userData.ssr||(i.userData.ssr=!0,Xx.push(i),UT[0]=!0)},E_=i=>{i.userData.ssr&&(i.userData.ssr=!1,PE(Xx,i))},qx=new vo({renderer:Sn(),scene:$e,camera:Ze(),width:iv,height:rv,groundReflector:null,selects:Xx});Sn(i=>qx.renderer=i);Ze(i=>qx.camera=i);class pa extends zs{constructor(e,t,n,r){super(),this.renderScene=t,this.renderCamera=n,this.selectedObjects=r!==void 0?r:[],this.visibleEdgeColor=new Pe(1,1,1),this.hiddenEdgeColor=new Pe(.1,.04,.02),this.edgeGlow=0,this.usePatternTexture=!1,this.edgeThickness=1,this.edgeStrength=3,this.downSampleRatio=2,this.pulsePeriod=0,this._visibilityCache=new Map,this.resolution=e!==void 0?new ae(e.x,e.y):new ae(256,256);const s=Math.round(this.resolution.x/this.downSampleRatio),o=Math.round(this.resolution.y/this.downSampleRatio);this.renderTargetMaskBuffer=new Yt(this.resolution.x,this.resolution.y),this.renderTargetMaskBuffer.texture.name="OutlinePass.mask",this.renderTargetMaskBuffer.texture.generateMipmaps=!1,this.depthMaterial=new lu,this.depthMaterial.side=_a,this.depthMaterial.depthPacking=Bm,this.depthMaterial.blending=rn,this.prepareMaskMaterial=this.getPrepareMaskMaterial(),this.prepareMaskMaterial.side=_a,this.prepareMaskMaterial.fragmentShader=f(this.prepareMaskMaterial.fragmentShader,this.renderCamera),this.renderTargetDepthBuffer=new Yt(this.resolution.x,this.resolution.y),this.renderTargetDepthBuffer.texture.name="OutlinePass.depth",this.renderTargetDepthBuffer.texture.generateMipmaps=!1,this.renderTargetMaskDownSampleBuffer=new Yt(s,o),this.renderTargetMaskDownSampleBuffer.texture.name="OutlinePass.depthDownSample",this.renderTargetMaskDownSampleBuffer.texture.generateMipmaps=!1,this.renderTargetBlurBuffer1=new Yt(s,o),this.renderTargetBlurBuffer1.texture.name="OutlinePass.blur1",this.renderTargetBlurBuffer1.texture.generateMipmaps=!1,this.renderTargetBlurBuffer2=new Yt(Math.round(s/2),Math.round(o/2)),this.renderTargetBlurBuffer2.texture.name="OutlinePass.blur2",this.renderTargetBlurBuffer2.texture.generateMipmaps=!1,this.edgeDetectionMaterial=this.getEdgeDetectionMaterial(),this.renderTargetEdgeBuffer1=new Yt(s,o),this.renderTargetEdgeBuffer1.texture.name="OutlinePass.edge1",this.renderTargetEdgeBuffer1.texture.generateMipmaps=!1,this.renderTargetEdgeBuffer2=new Yt(Math.round(s/2),Math.round(o/2)),this.renderTargetEdgeBuffer2.texture.name="OutlinePass.edge2",this.renderTargetEdgeBuffer2.texture.generateMipmaps=!1;const l=4,h=4;this.separableBlurMaterial1=this.getSeperableBlurMaterial(l),this.separableBlurMaterial1.uniforms.texSize.value.set(s,o),this.separableBlurMaterial1.uniforms.kernelRadius.value=1,this.separableBlurMaterial2=this.getSeperableBlurMaterial(h),this.separableBlurMaterial2.uniforms.texSize.value.set(Math.round(s/2),Math.round(o/2)),this.separableBlurMaterial2.uniforms.kernelRadius.value=h,this.overlayMaterial=this.getOverlayMaterial(),_r===void 0&&console.error("THREE.OutlinePass relies on CopyShader");const d=_r;this.copyUniforms=Qn.clone(d.uniforms),this.copyUniforms.opacity.value=1,this.materialCopy=new kt({uniforms:this.copyUniforms,vertexShader:d.vertexShader,fragmentShader:d.fragmentShader,blending:rn,depthTest:!1,depthWrite:!1,transparent:!0}),this.enabled=!0,this.needsSwap=!1,this._oldClearColor=new Pe,this.oldClearAlpha=1,this.fsQuad=new Ml(null),this.tempPulseColor1=new Pe,this.tempPulseColor2=new Pe,this.textureMatrix=new Qe;function f(g,y){const _=y.isPerspectiveCamera?"perspective":"orthographic";return g.replace(/DEPTH_TO_VIEW_Z/g,_+"DepthToViewZ")}}dispose(){this.renderTargetMaskBuffer.dispose(),this.renderTargetDepthBuffer.dispose(),this.renderTargetMaskDownSampleBuffer.dispose(),this.renderTargetBlurBuffer1.dispose(),this.renderTargetBlurBuffer2.dispose(),this.renderTargetEdgeBuffer1.dispose(),this.renderTargetEdgeBuffer2.dispose()}setSize(e,t){this.renderTargetMaskBuffer.setSize(e,t),this.renderTargetDepthBuffer.setSize(e,t);let n=Math.round(e/this.downSampleRatio),r=Math.round(t/this.downSampleRatio);this.renderTargetMaskDownSampleBuffer.setSize(n,r),this.renderTargetBlurBuffer1.setSize(n,r),this.renderTargetEdgeBuffer1.setSize(n,r),this.separableBlurMaterial1.uniforms.texSize.value.set(n,r),n=Math.round(n/2),r=Math.round(r/2),this.renderTargetBlurBuffer2.setSize(n,r),this.renderTargetEdgeBuffer2.setSize(n,r),this.separableBlurMaterial2.uniforms.texSize.value.set(n,r)}changeVisibilityOfSelectedObjects(e){const t=this._visibilityCache;function n(r){r.isMesh&&(e===!0?r.visible=t.get(r):(t.set(r,r.visible),r.visible=e))}for(let r=0;r0){e.getClearColor(this._oldClearColor),this.oldClearAlpha=e.getClearAlpha();const o=e.autoClear;e.autoClear=!1,s&&e.state.buffers.stencil.setTest(!1),e.setClearColor(16777215,1),this.changeVisibilityOfSelectedObjects(!1);const l=this.renderScene.background;if(this.renderScene.background=null,this.renderScene.overrideMaterial=this.depthMaterial,e.setRenderTarget(this.renderTargetDepthBuffer),e.clear(),e.render(this.renderScene,this.renderCamera),this.changeVisibilityOfSelectedObjects(!0),this._visibilityCache.clear(),this.updateTextureMatrix(),this.changeVisibilityOfNonSelectedObjects(!1),this.renderScene.overrideMaterial=this.prepareMaskMaterial,this.prepareMaskMaterial.uniforms.cameraNearFar.value.set(this.renderCamera.near,this.renderCamera.far),this.prepareMaskMaterial.uniforms.depthTexture.value=this.renderTargetDepthBuffer.texture,this.prepareMaskMaterial.uniforms.textureMatrix.value=this.textureMatrix,e.setRenderTarget(this.renderTargetMaskBuffer),e.clear(),e.render(this.renderScene,this.renderCamera),this.renderScene.overrideMaterial=null,this.changeVisibilityOfNonSelectedObjects(!0),this._visibilityCache.clear(),this.renderScene.background=l,this.fsQuad.material=this.materialCopy,this.copyUniforms.tDiffuse.value=this.renderTargetMaskBuffer.texture,e.setRenderTarget(this.renderTargetMaskDownSampleBuffer),e.clear(),this.fsQuad.render(e),this.tempPulseColor1.copy(this.visibleEdgeColor),this.tempPulseColor2.copy(this.hiddenEdgeColor),this.pulsePeriod>0){const h=.625+Math.cos(performance.now()*.01/this.pulsePeriod)*.75/2;this.tempPulseColor1.multiplyScalar(h),this.tempPulseColor2.multiplyScalar(h)}this.fsQuad.material=this.edgeDetectionMaterial,this.edgeDetectionMaterial.uniforms.maskTexture.value=this.renderTargetMaskDownSampleBuffer.texture,this.edgeDetectionMaterial.uniforms.texSize.value.set(this.renderTargetMaskDownSampleBuffer.width,this.renderTargetMaskDownSampleBuffer.height),this.edgeDetectionMaterial.uniforms.visibleEdgeColor.value=this.tempPulseColor1,this.edgeDetectionMaterial.uniforms.hiddenEdgeColor.value=this.tempPulseColor2,e.setRenderTarget(this.renderTargetEdgeBuffer1),e.clear(),this.fsQuad.render(e),this.fsQuad.material=this.separableBlurMaterial1,this.separableBlurMaterial1.uniforms.colorTexture.value=this.renderTargetEdgeBuffer1.texture,this.separableBlurMaterial1.uniforms.direction.value=pa.BlurDirectionX,this.separableBlurMaterial1.uniforms.kernelRadius.value=this.edgeThickness,e.setRenderTarget(this.renderTargetBlurBuffer1),e.clear(),this.fsQuad.render(e),this.separableBlurMaterial1.uniforms.colorTexture.value=this.renderTargetBlurBuffer1.texture,this.separableBlurMaterial1.uniforms.direction.value=pa.BlurDirectionY,e.setRenderTarget(this.renderTargetEdgeBuffer1),e.clear(),this.fsQuad.render(e),this.fsQuad.material=this.separableBlurMaterial2,this.separableBlurMaterial2.uniforms.colorTexture.value=this.renderTargetEdgeBuffer1.texture,this.separableBlurMaterial2.uniforms.direction.value=pa.BlurDirectionX,e.setRenderTarget(this.renderTargetBlurBuffer2),e.clear(),this.fsQuad.render(e),this.separableBlurMaterial2.uniforms.colorTexture.value=this.renderTargetBlurBuffer2.texture,this.separableBlurMaterial2.uniforms.direction.value=pa.BlurDirectionY,e.setRenderTarget(this.renderTargetEdgeBuffer2),e.clear(),this.fsQuad.render(e),this.fsQuad.material=this.overlayMaterial,this.overlayMaterial.uniforms.maskTexture.value=this.renderTargetMaskBuffer.texture,this.overlayMaterial.uniforms.edgeTexture1.value=this.renderTargetEdgeBuffer1.texture,this.overlayMaterial.uniforms.edgeTexture2.value=this.renderTargetEdgeBuffer2.texture,this.overlayMaterial.uniforms.patternTexture.value=this.patternTexture,this.overlayMaterial.uniforms.edgeStrength.value=this.edgeStrength,this.overlayMaterial.uniforms.edgeGlow.value=this.edgeGlow,this.overlayMaterial.uniforms.usePatternTexture.value=this.usePatternTexture,s&&e.state.buffers.stencil.setTest(!0),e.setRenderTarget(n),this.fsQuad.render(e),e.setClearColor(this._oldClearColor,this.oldClearAlpha),e.autoClear=o}this.renderToScreen&&(this.fsQuad.material=this.materialCopy,this.copyUniforms.tDiffuse.value=n.texture,e.setRenderTarget(null),this.fsQuad.render(e))}getPrepareMaskMaterial(){return new kt({uniforms:{depthTexture:{value:null},cameraNearFar:{value:new ae(.5,.5)},textureMatrix:{value:null}},vertexShader:`#include #include varying vec4 projTexCoord; varying vec4 vPosition; uniform mat4 textureMatrix; void main() { #include #include #include #include #include vPosition = mvPosition; vec4 worldPosition = modelMatrix * vec4( transformed, 1.0 ); projTexCoord = textureMatrix * worldPosition; }`,fragmentShader:`#include varying vec4 vPosition; varying vec4 projTexCoord; uniform sampler2D depthTexture; uniform vec2 cameraNearFar; void main() { float depth = unpackRGBAToDepth(texture2DProj( depthTexture, projTexCoord )); float viewZ = - DEPTH_TO_VIEW_Z( depth, cameraNearFar.x, cameraNearFar.y ); float depthTest = (-vPosition.z > viewZ) ? 1.0 : 0.0; gl_FragColor = vec4(0.0, depthTest, 1.0, 1.0); }`})}getEdgeDetectionMaterial(){return new kt({uniforms:{maskTexture:{value:null},texSize:{value:new ae(.5,.5)},visibleEdgeColor:{value:new z(1,1,1)},hiddenEdgeColor:{value:new z(1,1,1)}},vertexShader:`varying vec2 vUv; void main() { vUv = uv; gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); }`,fragmentShader:`varying vec2 vUv; uniform sampler2D maskTexture; uniform vec2 texSize; uniform vec3 visibleEdgeColor; uniform vec3 hiddenEdgeColor; void main() { vec2 invSize = 1.0 / texSize; vec4 uvOffset = vec4(1.0, 0.0, 0.0, 1.0) * vec4(invSize, invSize); vec4 c1 = texture2D( maskTexture, vUv + uvOffset.xy); vec4 c2 = texture2D( maskTexture, vUv - uvOffset.xy); vec4 c3 = texture2D( maskTexture, vUv + uvOffset.yw); vec4 c4 = texture2D( maskTexture, vUv - uvOffset.yw); float diff1 = (c1.r - c2.r)*0.5; float diff2 = (c3.r - c4.r)*0.5; float d = length( vec2(diff1, diff2) ); float a1 = min(c1.g, c2.g); float a2 = min(c3.g, c4.g); float visibilityFactor = min(a1, a2); vec3 edgeColor = 1.0 - visibilityFactor > 0.001 ? visibleEdgeColor : hiddenEdgeColor; gl_FragColor = vec4(edgeColor, 1.0) * vec4(d); }`})}getSeperableBlurMaterial(e){return new kt({defines:{MAX_RADIUS:e},uniforms:{colorTexture:{value:null},texSize:{value:new ae(.5,.5)},direction:{value:new ae(.5,.5)},kernelRadius:{value:1}},vertexShader:`varying vec2 vUv; void main() { vUv = uv; gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); }`,fragmentShader:`#include varying vec2 vUv; uniform sampler2D colorTexture; uniform vec2 texSize; uniform vec2 direction; uniform float kernelRadius; float gaussianPdf(in float x, in float sigma) { return 0.39894 * exp( -0.5 * x * x/( sigma * sigma))/sigma; } void main() { vec2 invSize = 1.0 / texSize; float weightSum = gaussianPdf(0.0, kernelRadius); vec4 diffuseSum = texture2D( colorTexture, vUv) * weightSum; vec2 delta = direction * invSize * kernelRadius/float(MAX_RADIUS); vec2 uvOffset = delta; for( int i = 1; i <= MAX_RADIUS; i ++ ) { float w = gaussianPdf(uvOffset.x, kernelRadius); vec4 sample1 = texture2D( colorTexture, vUv + uvOffset); vec4 sample2 = texture2D( colorTexture, vUv - uvOffset); diffuseSum += ((sample1 + sample2) * w); weightSum += (2.0 * w); uvOffset += delta; } gl_FragColor = diffuseSum/weightSum; }`})}getOverlayMaterial(){return new kt({uniforms:{maskTexture:{value:null},edgeTexture1:{value:null},edgeTexture2:{value:null},patternTexture:{value:null},edgeStrength:{value:1},edgeGlow:{value:1},usePatternTexture:{value:0}},vertexShader:`varying vec2 vUv; void main() { vUv = uv; gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); }`,fragmentShader:`varying vec2 vUv; uniform sampler2D maskTexture; uniform sampler2D edgeTexture1; uniform sampler2D edgeTexture2; uniform sampler2D patternTexture; uniform float edgeStrength; uniform float edgeGlow; uniform bool usePatternTexture; void main() { vec4 edgeValue1 = texture2D(edgeTexture1, vUv); vec4 edgeValue2 = texture2D(edgeTexture2, vUv); vec4 maskColor = texture2D(maskTexture, vUv); vec4 patternColor = texture2D(patternTexture, 6.0 * vUv); float visibilityFactor = 1.0 - maskColor.g > 0.0 ? 1.0 : 0.5; vec4 edgeValue = edgeValue1 + edgeValue2 * edgeGlow; vec4 finalColor = edgeStrength * maskColor.r * edgeValue; if(usePatternTexture) finalColor += + visibilityFactor * (1.0 - maskColor.r) * (1.0 - patternColor.r); gl_FragColor = finalColor; }`,blending:Qf,depthTest:!1,depthWrite:!1,transparent:!0})}}pa.BlurDirectionX=new ae(1,0);pa.BlurDirectionY=new ae(0,1);const VT=[!1],Yx=[],HT=i=>{i.userData.outline||(i.userData.outline=!0,Yx.push(i),VT[0]=!0)},GT=i=>{i.userData.outline&&(i.userData.outline=!1,PE(Yx,i))},Ps=new pa(new ae,$e,Ze(),Yx);Ze(i=>Ps.renderCamera=i);Kt(()=>{var i;const e=d_(),t=(i=p_())!==null&&i!==void 0?i:e;Ps.visibleEdgeColor=new Pe(e),Ps.hiddenEdgeColor=new Pe(t)},[d_,p_]);Kt(()=>{const i=f_();if(i)return Ps.patternTexture=Gi(i),Ps.usePatternTexture=!0,()=>{Ps.usePatternTexture=!1}},[f_]);bT(i=>Ps.pulsePeriod=i*.001);wT(i=>Ps.edgeStrength=i);ST(i=>Ps.edgeThickness=i);const gU=new WeakMap,hM=new WeakMap,Ey=new WeakMap;class $h extends $_{constructor(e,t){super(),this.mixer=Ma(gU,t,()=>new N2(t)),typeof e=="string"?this.name=e:(this.name=e.name,this.loadClip(e))}retarget(e){const t=this.clip.clone(),n=e.name+".";return t.tracks=t.tracks.filter(r=>r.name.startsWith(n)),new $h(t,e)}dispose(){return super.dispose(),this.stop(),this}get duration(){var e,t;return(t=(e=this.clip)===null||e===void 0?void 0:e.duration)!==null&&t!==void 0?t:0}loadClip(e){this.clip=e,this.action=this.mixer.clipAction(e)}setTracks(e){const t=Object.entries(e).map(([n,r])=>new Wh("."+n,Object.keys(r).map(s=>Number(s)),Object.values(r)));this.clip&&this.mixer.uncacheClip(this.clip),this.loadClip(new e_(this.name,-1,t))}play({crossFade:e=.25,repeat:t=!0,onFinish:n}={}){var r,s;const[o,l]=(r=hM.get(this.mixer))!==null&&r!==void 0?r:[];if(o!=null&&o.isRunning()&&this.action===o){t!==l&&o.setLoop(t?Xy:jy,1/0);return}(s=Ey.get(this.mixer))===null||s===void 0||s.cancel();const h=this.watch(wi(()=>this.mixer.update(Dx[0])));Ey.set(this.mixer,h);const{action:d}=this;if(!d)return;o&&e?(d.time=0,d.enabled=!0,d.crossFadeFrom(o,e,!0)):this.mixer.stopAllAction(),hM.set(this.mixer,[d,t]),d.setLoop(t?Xy:jy,1/0),d.clampWhenFinished=!0;const f=()=>n==null?void 0:n();this.mixer.addEventListener("finished",f),h.then(()=>this.mixer.removeEventListener("finished",f)),d.paused&&d.stop(),d.play()}stop(){var e;this.action&&(this.action.paused=!0),(e=Ey.get(this.mixer))===null||e===void 0||e.cancel()}getPaused(){var e;return(e=this.action)===null||e===void 0?void 0:e.paused}setPaused(e){this.action&&(this.action.paused=e)}update(e){this.mixer.time=0,this.action&&(this.action.time=0),this.mixer.update(e)}}const yU=Mr(i=>{const e=Object.entries(i);let t=0;for(const[,{length:o}]of e)o>t&&(t=o);const r=1e3*.001/t,s={};for(const[o,l]of e)s[o]=Object.fromEntries(l.map((h,d)=>[(d*r).toFixed(2),h]));return s},0,"trailingPromise");class _U extends Bs{get animations(){var e;return(e=this.animationManagers)!==null&&e!==void 0?e:this.animationManagers={}}set animations(e){this.animationManagers=e}createAnimation(e){if(e in this.animations){const n=this.animations[e];if(typeof n!="string")return n}const t=this.watch(new $h(e,this));return this.animations[e]=t,t}buildAnimation(e){yU(e).then(t=>{const n="lingo3d-animation";this.createAnimation(n).setTracks(t),this.playAnimation(n)})}makeAnimationProxy(e){return new Proxy(e,{get:(t,n)=>t[n],set:(t,n,r)=>(t[n]=r,this.buildAnimation(t),!0)})}async playAnimation(e,t){var n;await Promise.resolve(),this.loadingAnims&&(await Promise.all(this.loadingAnims),this.loadingAnims=void 0),!this.done&&(this.animationManager=typeof e=="string"?this.animations[e]:Object.values(this.animations)[e??0],(n=this.animationManager)===null||n===void 0||n.play(t))}stopAnimation(){var e;(e=this.animationManager)===null||e===void 0||e.stop()}get animationPaused(){var e;return!!(!((e=this.animationManager)===null||e===void 0)&&e.getPaused())}set animationPaused(e){(async()=>{var t;await Promise.resolve(),this.loadingAnims&&await Promise.all(this.loadingAnims),!this.done&&((t=this.animationManager)===null||t===void 0||t.setPaused(e))})()}setAnimation(e,t){if(this._animation=e,typeof e=="string"||typeof e=="number"){this.animationName=e,this.playAnimation(e,t);return}if(typeof e=="boolean"){e?this.playAnimation(void 0,t):this.stopAnimation();return}if(!e){this.stopAnimation();return}this._animation=this.makeAnimationProxy(e),this.buildAnimation(e)}get animation(){return this._animation}set animation(e){if(Array.isArray(e)){let t=0;const n={onFinish:()=>{++t>=e.length&&(t=0),this.setAnimation(e[t],n)},repeat:!1};this.setAnimation(e[0],n);return}this.queueMicrotask(()=>this.setAnimation(e))}}const xU=["name","blending","side","vertexColors","opacity","transparent","blendSrc","blendDst","blendEquation","blendSrcAlpha","blendDstAlpha","blendEquationAlpha","depthFunc","depthTest","depthWrite","stencilWriteMask","stencilFunc","stencilRef","stencilFuncMask","stencilFail","stencilZFail","stencilZPass","stencilWrite","clipIntersection","clipShadows","shadowSide","colorWrite","precision","polygonOffset","polygonOffsetFactor","polygonOffsetUnits","dithering","alphaTest","alphaToCoverage","premultipliedAlpha","visible","toneMapped"];var WT=(i,e)=>{for(const r of xU){const s=i[r];s!=null&&(e[r]=s)}const t=i.clippingPlanes;let n=null;if(t){const r=t.length;n=new Array(r);for(let s=0;s!==r;++s)n[s]=t[s].clone()}e.clippingPlanes=n};const bU=["roughness","metalness","map","lightMap","lightMapIntensity","aoMap","aoMapIntensity","emissiveMap","emissiveIntensity","bumpMap","bumpScale","normalMap","normalMapType","displacementMap","displacementScale","displacementBias","roughnessMap","metalnessMap","alphaMap","envMap","envMapIntensity","wireframe","wireframeLinewidth","wireframeLinecap","wireframeLinejoin","flatShading","fog"];var jT=(i,e)=>{WT(i,e);for(const t of bU){const n=i[t];n!=null&&(e[t]=n)}e.defines={STANDARD:""},i.color&&e.color.copy(i.color),i.emissive&&e.emissive.copy(i.emissive),i.normalScale&&e.normalScale.copy(i.normalScale)};const wU=["map","gradientMap","lightMap","lightMapIntensity","aoMap","aoMapIntensity","emissiveMap","emissiveIntensity","bumpMap","bumpScale","normalMap","normalMapType","displacementMap","displacementScale","displacementBias","alphaMap","wireframe","wireframeLinewidth","wireframeLinecap","wireframeLinejoin","fog"];var SU=(i,e)=>{WT(i,e);for(const t of wU){const n=i[t];n!=null&&(e[t]=n)}i.color&&e.color.copy(i.color),i.emissive&&e.emissive.copy(i.emissive),i.normalScale&&e.normalScale.copy(i.normalScale)};const Ty=new Vx,ah=new Vx,MU=J_(()=>{const i=Ze();fT.setFromProjectionMatrix(Rz.multiplyMatrices(i.projectionMatrix,i.matrixWorldInverse))},200,"leading"),XT=new WeakSet,Ac=(i,e,t)=>{var n,r;const s=(n=(r=i.userData)[e])!==null&&n!==void 0?n:r[e]=i.material[e];i.material[e]=t===void 0?s:(s||(XT.has(i.material)?1:0))*t},dM=(i,e,t)=>{var n,r;const s=(n=(r=i.userData)[e])!==null&&n!==void 0?n:r[e]=i.material[e];i.material[e]=t===void 0?s:t};class ov extends Bs{constructor(e){super(e),this.object3d=e}dispose(){return super.dispose(),E_(this.object3d),this}addToRaycastSet(e,t){e.add(this.object3d),t.then(()=>e.delete(this.object3d))}get onClick(){return this._onClick}set onClick(e){var t;(t=this.clickHandle)===null||t===void 0||t.cancel(),this._onClick=e,e&&this.addToRaycastSet(RT,this.clickHandle=new En)}get onMouseDown(){return this._onMouseDown}set onMouseDown(e){var t;(t=this.mouseDownHandle)===null||t===void 0||t.cancel(),this._onMouseDown=e,e&&this.addToRaycastSet(LT,this.mouseDownHandle=new En)}get onMouseUp(){return this._onMouseUp}set onMouseUp(e){var t;(t=this.mouseUpHandle)===null||t===void 0||t.cancel(),this._onMouseUp=e,e&&this.addToRaycastSet(DT,this.mouseUpHandle=new En)}get onMouseOver(){return this._onMouseOver}set onMouseOver(e){var t;(t=this.mouseOverHandle)===null||t===void 0||t.cancel(),this._onMouseOver=e,e&&this.addToRaycastSet(IT,this.mouseOverHandle=new En)}get onMouseOut(){return this._onMouseOut}set onMouseOut(e){var t;(t=this.mouseOutHandle)===null||t===void 0||t.cancel(),this._onMouseOut=e,e&&this.addToRaycastSet(OT,this.mouseOutHandle=new En)}get onMouseMove(){return this._onMouseMove}set onMouseMove(e){var t;(t=this.mouseMoveHandle)===null||t===void 0||t.cancel(),this._onMouseMove=e,e&&this.addToRaycastSet(kT,this.mouseMoveHandle=new En)}get name(){return this.outerObject3d.name}set name(e){this.outerObject3d.name=nn.sanitizeNodeName(e)}getRay(){return dT.set(this.object3d.getWorldPosition(bo),this.object3d.getWorldDirection(Ot))}pointAt(e){return Zh(this.getRay().at(e*Ye,Ot))}rayIntersectsAt(e,t){if(this.done||e.done||this===e)return;ah.set(e.object3d.getWorldPosition(Cz),hT,new Gn().setFromMatrix4(e.object3d.matrixWorld));const n=ah.intersectRay(this.getRay(),Ot);if(n){if(t){const{x:r,y:s,z:o}=this.object3d.getWorldPosition(bo);if(uT(n.x,n.y,n.z,r,s,o)*pn>t)return}return Zh(n)}}rayIntersects(e){return!!this.rayIntersectsAt(e)}intersects(e){return this.done||e.done||this===e?!1:(Ty.set(this.object3d.getWorldPosition(Ot),r_.clone(),new Gn),Ty.applyMatrix4(this.object3d.matrixWorld),ah.set(e.object3d.getWorldPosition(bo),r_.clone(),new Gn),ah.applyMatrix4(e.object3d.matrixWorld),Ty.intersectsOBB(ah,0))}get clientX(){return uM(this.object3d).x}get clientY(){return uM(this.object3d).y}get reflection(){return!!this.object3d.userData.ssr}set reflection(e){e?FT(this.object3d):E_(this.object3d)}get bloom(){return!!this.outerObject3d.userData.bloom}set bloom(e){e?Wx(this.outerObject3d):jx(this.outerObject3d)}get outline(){return!!this.object3d.userData.outline}set outline(e){e?HT(this.object3d):GT(this.object3d)}get visible(){return this._visible!==!1}set visible(e){this._visible=e,this.outerObject3d.visible=e}get frustumCulled(){return this.outerObject3d.frustumCulled}set frustumCulled(e){this.outerObject3d.traverse(t=>t.frustumCulled=e)}refreshFactors(){if(this._refreshFactors){this._refreshFactors.set({});return}this._refreshFactors=new Tn({}),this.createEffect(()=>{const e=new En,{_toon:t,_pbr:n,_metalnessFactor:r,_roughnessFactor:s,_opacityFactor:o}=this;return this.outerObject3d.traverse(l=>{let{material:h}=l;h&&(Array.isArray(h)&&(h=h[0]),t?(l.material=new Sx,SU(h,l.material)):n&&(XT.add(l.material=new wl),jT(h,l.material)),r!==void 0&&r!==0&&Ac(l,"metalness",r),s!==void 0&&s!==1&&Ac(l,"roughness",s),o!==void 0&&o!==1&&(Ac(l,"opacity",o),dM(l,"transparent",o<1)),e.then(()=>{if(l.material===h){Ac(l,"metalness",void 0),Ac(l,"roughness",void 0),Ac(l,"opacity",void 0),dM(l,"transparent",void 0);return}l.material.dispose(),l.material=h}))}),()=>{e.cancel()}},[this._refreshFactors.get])}get metalnessFactor(){var e;return(e=this._metalnessFactor)!==null&&e!==void 0?e:0}set metalnessFactor(e){this._metalnessFactor=e,this.refreshFactors()}get roughnessFactor(){var e;return(e=this._roughnessFactor)!==null&&e!==void 0?e:1}set roughnessFactor(e){this._roughnessFactor=e,this.refreshFactors()}get opacityFactor(){var e;return(e=this._opacityFactor)!==null&&e!==void 0?e:1}set opacityFactor(e){this._opacityFactor=e,this.refreshFactors()}get toon(){var e;return(e=this._toon)!==null&&e!==void 0?e:!1}set toon(e){this._toon=e,this.refreshFactors()}get pbr(){var e;return(e=this._pbr)!==null&&e!==void 0?e:!1}set pbr(e){this._pbr=e,this.refreshFactors()}get frustumVisible(){return MU(),fT.containsPoint(fd(this.object3d))}lookAt(e){var t;"outerObject3d"in e?this.outerObject3d.lookAt(((t=e.object3d)!==null&&t!==void 0?t:e.outerObject3d).getWorldPosition(Ot)):this.outerObject3d.lookAt(Mh(e))}}ks(ov,[_U]);const Tf=new WeakMap;var El=i=>{var e;if(Tf.has(i))return Tf.get(i);const t=((e=i.object3d)!==null&&e!==void 0?e:i.outerObject3d).scale.clone().multiply(i.outerObject3d.scale);return Tf.set(i,t),setTimeout(()=>Tf.delete(i)),t};const[EU,pM]=Ge(void 0);var pu=yl(async()=>{const{World:i,GSSolver:e,SplitSolver:t,NaiveBroadphase:n,Material:r,ContactMaterial:s,Body:o,Vec3:l,Box:h,Sphere:d,Cylinder:f}=await $n(()=>import("./cannon-es.73300c7b.js"),[],import.meta.url),g=new i;mT(S=>g.gravity.set(0,-S,0)),g.quatNormalizeSkip=0,g.quatNormalizeFast=!1;const y=new e;g.defaultContactMaterial.contactEquationStiffness=1e9,g.defaultContactMaterial.contactEquationRelaxation=4,y.iterations=7,y.tolerance=.1,g.solver=new t(y),g.broadphase=new n;const[_]=g.defaultContactMaterial.materials,w=new r("slipperyMaterial");return g.addContactMaterial(new s(w,w,{friction:0,restitution:0})),g.addContactMaterial(new s(w,_,{friction:.001,restitution:0})),EU(g),{world:g,defaultMaterial:_,slipperyMaterial:w,Body:o,Vec3:l,Box:h,Sphere:d,Cylinder:f}});async function qT(){const{Box:i}=await pu();this.cannonBody.addShape(new i(El(this).multiplyScalar(.5)))}class TU extends nv{getMAV(){var e;return(e=this._mAV)!==null&&e!==void 0?e:this._mAV=new Sh(1/0,1/0,1/0)}get maxAngularVelocityX(){var e,t;return(t=(e=this._mAV)===null||e===void 0?void 0:e.x)!==null&&t!==void 0?t:1/0}set maxAngularVelocityX(e){this.getMAV().x=e}get maxAngularVelocityY(){var e,t;return(t=(e=this._mAV)===null||e===void 0?void 0:e.y)!==null&&t!==void 0?t:1/0}set maxAngularVelocityY(e){this.getMAV().y=e}get maxAngularVelocityZ(){var e,t;return(t=(e=this._mAV)===null||e===void 0?void 0:e.z)!==null&&t!==void 0?t:1/0}set maxAngularVelocityZ(e){this.getMAV().z=e}getMV(){var e;return(e=this._mV)!==null&&e!==void 0?e:this._mV=new Sh(1/0,1/0,1/0)}get maxVelocityX(){var e,t;return(t=(e=this._mV)===null||e===void 0?void 0:e.x)!==null&&t!==void 0?t:1/0}set maxVelocityX(e){this.getMV().x=e}get maxVelocityY(){var e,t;return(t=(e=this._mV)===null||e===void 0?void 0:e.y)!==null&&t!==void 0?t:1/0}set maxVelocityY(e){this.getMV().y=e}get maxVelocityZ(){var e,t;return(t=(e=this._mV)===null||e===void 0?void 0:e.z)!==null&&t!==void 0?t:1/0}set maxVelocityZ(e){this.getMV().z=e}physicsRotate(){var e,t;if(!this.physicsUpdate)return;const n=(e=(t=this.physicsUpdate).rotation)!==null&&e!==void 0?e:t.rotation={};n.x=!0,n.y=!0,n.z=!0}physicsMove(){var e,t;if(!this.physicsUpdate)return;const n=(e=(t=this.physicsUpdate).position)!==null&&e!==void 0?e:t.position={};n.x=!0,n.y=!0,n.z=!0}physicsMoveXZ(){var e,t;if(!this.physicsUpdate)return;const n=(e=(t=this.physicsUpdate).position)!==null&&e!==void 0?e:t.position={};n.x=!0,n.z=!0}applyForce(e,t,n){setTimeout(()=>{var r;return(r=this.cannonBody)===null||r===void 0?void 0:r.applyForce({x:e,y:t,z:n})})}applyImpulse(e,t,n){setTimeout(()=>{var r;return(r=this.cannonBody)===null||r===void 0?void 0:r.applyImpulse({x:e,y:t,z:n})})}applyLocalForce(e,t,n){setTimeout(()=>{var r;return(r=this.cannonBody)===null||r===void 0?void 0:r.applyLocalForce({x:e,y:t,z:n})})}applyLocalImpulse(e,t,n){setTimeout(()=>{var r;return(r=this.cannonBody)===null||r===void 0?void 0:r.applyLocalImpulse({x:e,y:t,z:n})})}applyTorque(e,t,n){setTimeout(()=>{var r;return(r=this.cannonBody)===null||r===void 0?void 0:r.applyTorque({x:e,y:t,z:n})})}get velocity(){return this.bvhVelocity?this.bvhVelocity:this.cannonBody?this.cannonBody.velocity:new Sh(0,0,0)}set velocity(e){this.bvhVelocity?Object.assign(this.bvhVelocity,e):this.cannonBody&&Object.assign(this.cannonBody.velocity,e)}refreshCannon(){var e;this.physicsUpdate&&(this.physics=(e=this._physics)!==null&&e!==void 0?e:!1)}get noTumble(){return this._noTumble}set noTumble(e){this._noTumble=e,this.refreshCannon()}get slippery(){return this._slippery}set slippery(e){this._slippery=e,this.refreshCannon()}get mass(){return this._mass}set mass(e){this._mass=e,this.refreshCannon()}get physicsGroup(){return this._physicsGroup}set physicsGroup(e){this._physicsGroup=e,this.refreshCannon()}get ignorePhysicsGroups(){return this._ignorePhysicsGroups}set ignorePhysicsGroups(e){this._ignorePhysicsGroups=e,this.refreshCannon()}get physicsShape(){var e;return(e=this._physicsShape)!==null&&e!==void 0?e:this._physicsShape=qT}set physicsShape(e){this._physicsShape=e,this.refreshCannon()}initPhysics(e,t){if(!(!e||t.done))switch(e){case!0:case"2d":$n(()=>import("./enableCannon.1b1ce179.js"),["./enableCannon.1b1ce179.js","./entry.c3abd651.js","./entry.f74844d6.css"],import.meta.url).then(n=>n.default.call(this,t));break;case"map":this.bvhMap=!0,$n(()=>import("./enableBVHMap.db0b0578.js"),["./enableBVHMap.db0b0578.js","./computeBVH.864f9198.js","./useBVHMap.e693f0f0.js","./entry.c3abd651.js","./entry.f74844d6.css"],import.meta.url).then(n=>n.default.call(this,t,!1));break;case"map-debug":this.bvhMap=!0,$n(()=>import("./enableBVHMap.db0b0578.js"),["./enableBVHMap.db0b0578.js","./computeBVH.864f9198.js","./useBVHMap.e693f0f0.js","./entry.c3abd651.js","./entry.f74844d6.css"],import.meta.url).then(n=>n.default.call(this,t,!0));break;case"character":this.bvhCharacter=!0,$n(()=>import("./enableBVHCharacter.d23b151f.js"),["./enableBVHCharacter.d23b151f.js","./useBVHMap.e693f0f0.js","./computeBVH.864f9198.js","./entry.c3abd651.js","./entry.f74844d6.css"],import.meta.url).then(n=>n.default.call(this,t));break;default:z4(e)}}get physics(){var e;return(e=this._physics)!==null&&e!==void 0?e:!1}set physics(e){var t;if(this._physics===e)return;this._physics=e,(t=this.physicsHandle)===null||t===void 0||t.cancel();const n=this.physicsHandle=this.cancellable();this.initPhysics(e,n)}}var fM=new Map;const AU=new Set,gm=new Map,mM=new WeakSet,CU=()=>new WeakSet,PU=1/60;Kt(function(){if($c())return;const i=pM();if(!i)return;const e=wi(()=>{for(const t of AU){const n=t.cannonBody;if("_mAV"in t){const{x:o,y:l,z:h}=t._mAV,{angularVelocity:d}=n;d.x>o?d.x=o:d.x<-o&&(d.x=-o),d.y>l?d.y=l:d.y<-l&&(d.y=-l),d.z>h?d.z=h:d.z<-h&&(d.z=-h)}if("_mV"in t){const{x:o,y:l,z:h}=t._mV,{velocity:d}=n;d.x>o?d.x=o:d.x<-o&&(d.x=-o),d.y>l?d.y=l:d.y<-l&&(d.y=-l),d.z>h?d.z=h:d.z<-h&&(d.z=-h)}const{position:r,rotation:s}=t.physicsUpdate;t.physicsUpdate={},r&&(r.x&&(n.position.x=t.outerObject3d.position.x,n.velocity.x=0,n.force.x=0),r.y&&(n.position.y=t.outerObject3d.position.y,n.velocity.y=0,n.force.y=0),r.z&&(n.position.z=t.outerObject3d.position.z,n.velocity.z=0,n.force.z=0)),t.outerObject3d.position.copy(n.position),s?(s.x&&(n.angularVelocity.x=0,n.torque.x=0),s.y&&(n.angularVelocity.y=0,n.torque.y=0),s.z&&(n.angularVelocity.z=0,n.torque.z=0),n.quaternion.copy(t.outerObject3d.quaternion)):t.outerObject3d.quaternion.copy(n.quaternion)}i.step(PU),gm.clear();for(const t of i.contacts)Ma(gm,t.bi,CU).add(t.bj)});return()=>{e.cancel()}},[pM,$c]);const Lc=new Map,RU=()=>new Set,vM=new WeakMap,gM=(i,e)=>{const t=vM.get(i);if(t)return t;const n=uT(i.x,i.y,i.z,e.x*pn,e.y*pn,e.z*pn);return vM.set(i,n),n};class Sa extends ov{get id(){return this._id}set id(e){this._id!==void 0&&Lc.get(this._id).delete(this),this._id=e,e!==void 0&&Ma(Lc,e,RU).add(this)}getRayIntersectionsAt(e,t){var n;const r=[];for(const s of(n=Lc.get(e))!==null&&n!==void 0?n:[]){if(s===this)continue;const o=this.rayIntersectsAt(s,t);o&&r.push([s,o])}return this.object3d.getWorldPosition(bo),r.sort((s,o)=>gM(s[1],bo)-gM(o[1],bo))}getRayIntersections(e,t){return this.getRayIntersectionsAt(e,t).map(n=>n[0])}listenToRayIntersection(e,t,n){return this.loop(()=>{for(const[r,s]of this.getRayIntersectionsAt(e,n))t(r,s)})}getIntersections(e){var t;const n=[];for(const r of(t=Lc.get(e))!==null&&t!==void 0?t:[])r!==this&&this.intersects(r)&&n.push(r);return n}listenToIntersection(e,t,n){let r=[];return this.loop(()=>{const s=this.getIntersections(e);if(t)for(const o of s)r.includes(o)||t(o);if(n)for(const o of r)s.includes(o)||n(o);r=s})}initIntersect(){this.onIntersectState||(this.onIntersectState=new Tn(void 0),this.onIntersectOutState=new Tn(void 0),this.intersectIdsState=new Tn(void 0),this.createEffect(()=>{const{onIntersect:e,onIntersectOut:t,intersectIds:n}=this;if(!n||!e&&!t)return;const r=[];for(const s of n)r.push(this.listenToIntersection(s,e,t));return()=>{for(const s of r)s.cancel()}},[this.onIntersectState.get,this.onIntersectOutState.get,this.intersectIdsState.get]))}get onIntersect(){var e;return(e=this.onIntersectState)===null||e===void 0?void 0:e.get()}set onIntersect(e){var t;this.initIntersect(),(t=this.onIntersectState)===null||t===void 0||t.set(e)}get onIntersectOut(){var e;return(e=this.onIntersectOutState)===null||e===void 0?void 0:e.get()}set onIntersectOut(e){var t;this.initIntersect(),(t=this.onIntersectOutState)===null||t===void 0||t.set(e)}get intersectIds(){var e;return(e=this.intersectIdsState)===null||e===void 0?void 0:e.get()}set intersectIds(e){var t;this.initIntersect(),(t=this.intersectIdsState)===null||t===void 0||t.set(e)}dispose(){return super.dispose(),this._id!==void 0&&Lc.get(this._id).delete(this),this}intersects(e){var t,n,r,s;return this.done||e.done||this===e?!1:this.bvhMap&&e.bvhCharacter||this.bvhCharacter&&e.bvhMap?((t=fM.get(this))===null||t===void 0?void 0:t.has(e))||((n=fM.get(e))===null||n===void 0?void 0:n.has(this))||!1:this.cannonBody&&e.cannonBody?(mM.add(this.cannonBody),mM.add(e.cannonBody),((r=gm.get(this.cannonBody))===null||r===void 0?void 0:r.has(e.cannonBody))||((s=gm.get(e.cannonBody))===null||s===void 0?void 0:s.has(this.cannonBody))||!1):super.intersects(e)}get width(){return this.object3d.scale.x*pn}set width(e){this.object3d.scale.x=e*Ye}get height(){return this.object3d.scale.y*pn}set height(e){this.object3d.scale.y=e*Ye}get depth(){return this.object3d.scale.z*pn}set depth(e){this.object3d.scale.z=e*Ye}get x(){return this.outerObject3d.position.x*pn}set x(e){var t,n;this.outerObject3d.position.x=e*Ye,this.physicsUpdate&&(((t=(n=this.physicsUpdate).position)!==null&&t!==void 0?t:n.position={}).x=!0)}get y(){return this.outerObject3d.position.y*pn}set y(e){var t,n;this.outerObject3d.position.y=e*Ye,this.physicsUpdate&&(((t=(n=this.physicsUpdate).position)!==null&&t!==void 0?t:n.position={}).y=!0)}get z(){return this.outerObject3d.position.z*pn}set z(e){var t,n;this.outerObject3d.position.z=e*Ye,this.physicsUpdate&&(((t=(n=this.physicsUpdate).position)!==null&&t!==void 0?t:n.position={}).z=!0)}get scaleX(){return this.outerObject3d.scale.x}set scaleX(e){this.outerObject3d.scale.x=e}get scaleY(){return this.outerObject3d.scale.y}set scaleY(e){this.outerObject3d.scale.y=e}get scaleZ(){return this.outerObject3d.scale.z}set scaleZ(e){this.outerObject3d.scale.z=e}get scale(){return this.scaleX}set scale(e){this.scaleX=e,this.scaleY=e,this.scaleZ=e}get rotationX(){return this.outerObject3d.rotation.x*pi}set rotationX(e){var t,n;this.outerObject3d.rotation.x=e*xn,this.physicsUpdate&&(((t=(n=this.physicsUpdate).rotation)!==null&&t!==void 0?t:n.rotation={}).x=!0)}get rotationY(){return this.outerObject3d.rotation.y*pi}set rotationY(e){var t,n,r;this.outerObject3d.rotation.y=e*xn,this.physicsUpdate&&(((t=(r=this.physicsUpdate).rotation)!==null&&t!==void 0?t:r.rotation={}).y=!0),(n=this.onRotationY)===null||n===void 0||n.call(this)}get rotationZ(){return this.outerObject3d.rotation.z*pi}set rotationZ(e){var t,n;this.outerObject3d.rotation.z=e*xn,this.physicsUpdate&&(((t=(n=this.physicsUpdate).rotation)!==null&&t!==void 0?t:n.rotation={}).z=!0)}get rotation(){return this.rotationZ}set rotation(e){this.rotationZ=e}get innerVisible(){return this.object3d.visible}set innerVisible(e){this.object3d.visible=e}lookAt(e){var t;super.lookAt(e),this.physicsRotate(),(t=this.onRotationY)===null||t===void 0||t.call(this)}translateX(e){this.outerObject3d.translateX(e*Ye),this.physicsMove()}translateY(e){this.outerObject3d.translateY(e*Ye),this.physicsMove()}translateZ(e){this.outerObject3d.translateZ(e*Ye),this.physicsMove()}placeAt(e){var t,n;"object3d"in e?(this.outerObject3d.position.copy(fd((t=e.object3d)!==null&&t!==void 0?t:e.outerObject3d)),this.outerObject3d.quaternion.copy(e.outerObject3d.getWorldQuaternion(hm))):this.outerObject3d.position.copy(Mh(e)),this.physicsMove(),this.physicsRotate(),(n=this.onRotationY)===null||n===void 0||n.call(this)}moveForward(e){e!==0&&(Ot.setFromMatrixColumn(this.outerObject3d.matrix,0),Ot.crossVectors(this.outerObject3d.up,Ot),this.outerObject3d.position.addScaledVector(Ot,e*Ye),this.physicsMoveXZ())}moveRight(e){e!==0&&(Ot.setFromMatrixColumn(this.outerObject3d.matrix,0),this.outerObject3d.position.addScaledVector(Ot,e*Ye),this.physicsMoveXZ())}}ks(Sa,[nv,TU]);const LU={animations:Object,animation:[String,Number,Array,Boolean,Object],animationPaused:Boolean},DU={animations:{},animationPaused:!1},YT=bt(Me(Me({},du),LU),{onClick:Function,onMouseDown:Function,onMouseUp:Function,onMouseOver:Function,onMouseOut:Function,onMouseMove:Function,name:String,bloom:Boolean,reflection:Boolean,outline:Boolean,visible:Boolean,frustumCulled:Boolean,metalnessFactor:Number,roughnessFactor:Number,opacityFactor:Number,toon:Boolean,pbr:Boolean}),ZT=bt(Me(Me({},Sl),DU),{name:"",bloom:!1,reflection:!1,outline:!1,visible:!0,frustumCulled:!0,metalnessFactor:0,roughnessFactor:1,opacityFactor:1,toon:!1,pbr:!1}),av={color:String,vertexColors:Boolean,fog:Boolean,opacity:Number,texture:[String,Object],videoTexture:[String,Object],alphaMap:String,textureRepeat:[Object,Number]},lv={color:"#ffffff",vertexColors:!1,fog:!0,opacity:1},Zx={color:String,flatShading:Boolean,wireframe:Boolean,envMap:String,aoMap:String,aoMapIntensity:Number,bumpMap:String,bumpScale:Number,displacementMap:String,displacementScale:Number,displacementBias:Number,emissiveColor:String,emissiveMap:String,emissiveIntensity:Number,lightMap:String,lightMapIntensity:Number,metalnessMap:String,metalness:Number,roughnessMap:String,roughness:Number,normalMap:String,normalScale:[Object,Number],normalMapType:String},Kx={color:"#ffffff",flatShading:!1,wireframe:!1,aoMapIntensity:1,bumpScale:1,displacementScale:1,displacementBias:0,emissiveColor:"#000000",emissiveIntensity:1,lightMapIntensity:1,metalness:0,roughness:1,normalScale:{x:1,y:1}},KT=Me(Me(Me({},YT),av),Zx),ym=Me(Me(Me({},ZT),lv),Kx),JT=[i=>i],IU=["map","alphaMap"],T_=new Map,OU=Mr(function(){for(const[i,e]of T_)for(const t of IU){const n=i.material[t];n&&(n.repeat=e)}T_.clear()},0,"trailing");class cv{get color(){return"#"+this.material.color.getHexString()}set color(e){this.material.color=new Pe(e)}get vertexColors(){return this.material.vertexColors}set vertexColors(e){this.material.vertexColors=e}get fog(){return this.material.fog}set fog(e){this.material.fog=e}get opacity(){var e;return(e=this._opacity)!==null&&e!==void 0?e:this._opacity=1}set opacity(e){var t;this._opacity=e,this.material.opacity=e,this.material.transparent=(t=this.transparent)!==null&&t!==void 0?t:e<1,this.object3d.visible=!!e}basicTextureRepeat(){this.material.needsUpdate=!0,this._textureRepeat&&(T_.set(this,this._textureRepeat),OU())}initTexture(){var e,t;if(this.textureState)return;const n=(e=this.videoTextureState)!==null&&e!==void 0?e:this.videoTextureState=new Tn(void 0),r=(t=this.textureState)!==null&&t!==void 0?t:this.textureState=new Tn(void 0);this.createEffect(()=>{const s=r.get();let o=n.get();if(!o&&(typeof s=="string"&&JT[0](s).toLowerCase().endsWith(".mp4")||s&&s instanceof HTMLVideoElement)&&(o=s),o){let d;o instanceof HTMLVideoElement?d=o:(d=document.createElement("video"),d.crossOrigin="anonymous",d.src=o,d.loop=!0,d.autoplay=!0,d.muted=!0,d.playsInline=!0,d.play());const f=new s2(d);f.wrapS=f.wrapT=Nh;const{material:g}=this,{map:y}=g;return g.map=f,g.needsUpdate=!0,this.basicTextureRepeat(),()=>{d.pause(),f.dispose(),g.map=y,g.needsUpdate=!0}}if(!s)return;const{material:l}=this,{map:h}=l;return l.map=Gi(s),this.basicTextureRepeat(),()=>{l.map=h,this.material.needsUpdate=!0}},[n.get,r.get])}get videoTexture(){var e;return(e=this.videoTextureState)===null||e===void 0?void 0:e.get()}set videoTexture(e){this.initTexture(),this.videoTextureState.set(e)}get texture(){var e;return(e=this.textureState)===null||e===void 0?void 0:e.get()}set texture(e){this.initTexture(),this.textureState.set(e)}get alphaMap(){return this._alphaMap}set alphaMap(e){this._alphaMap=e,this.material.alphaMap=e?Gi(e):null,this.basicTextureRepeat()}get textureRepeat(){return this._textureRepeat}set textureRepeat(e){typeof e=="number"&&(e=new ae(e,e)),this._textureRepeat=e,this.basicTextureRepeat()}}const kU=["map","alphaMap","envMap","aoMap","bumpMap","displacementMap","emissiveMap","lightMap","metalnessMap","roughnessMap","normalMap"],A_=new Map,NU=Mr(function(){for(const[i,e]of A_)for(const t of kU){const n=i.material[t];n&&(n.repeat=e)}A_.clear()},0,"trailing");class Jx{get color(){return"#"+this.material.color.getHexString()}set color(e){this.material.color=new Pe(e)}get flatShading(){return this.material.flatShading}set flatShading(e){this.material.flatShading=e}get wireframe(){return this.material.wireframe}set wireframe(e){this.material.wireframe=e}standardTextureRepeat(){this.material.needsUpdate=!0,this._textureRepeat&&(A_.set(this,this._textureRepeat),NU())}get envMap(){return this._envMap}set envMap(e){this._envMap=e,this.material.envMap=e?Gi(e):null,this.standardTextureRepeat()}get aoMap(){return this._aoMap}set aoMap(e){this._aoMap=e,this.material.aoMap=e?Gi(e):null,this.standardTextureRepeat()}get aoMapIntensity(){return this.material.aoMapIntensity}set aoMapIntensity(e){this.material.aoMapIntensity=e}get bumpMap(){return this._bumpMap}set bumpMap(e){this._bumpMap=e,this.material.bumpMap=e?Gi(e):null,this.standardTextureRepeat()}get bumpScale(){return this.material.bumpScale}set bumpScale(e){this.material.bumpScale=e}get displacementMap(){return this._displacementMap}set displacementMap(e){this._displacementMap=e,this.material.displacementMap=e?Gi(e):null,this.standardTextureRepeat()}get displacementScale(){return this.material.displacementScale}set displacementScale(e){this.material.displacementScale=e}get displacementBias(){return this.material.displacementBias}set displacementBias(e){this.material.displacementBias=e}get emissiveColor(){return"#"+this.material.emissive.getHexString()}set emissiveColor(e){this.material.emissive=new Pe(e)}get emissiveMap(){return this._emissiveMap}set emissiveMap(e){this._emissiveMap=e,this.material.emissiveMap=e?Gi(e):null,this.standardTextureRepeat()}get emissiveIntensity(){return this.material.emissiveIntensity}set emissiveIntensity(e){this.material.emissiveIntensity=e}get lightMap(){return this._lightMap}set lightMap(e){this._lightMap=e,this.material.lightMap=e?Gi(e):null,this.standardTextureRepeat()}get lightMapIntensity(){return this.material.lightMapIntensity}set lightMapIntensity(e){this.material.lightMapIntensity=e}get metalnessMap(){return this._metalnessMap}set metalnessMap(e){this._metalnessMap=e,this.material.metalnessMap=e?Gi(e):null,this.standardTextureRepeat()}get metalness(){return this.material.metalness}set metalness(e){this.material.metalness=e}get roughnessMap(){return this._roughnessMap}set roughnessMap(e){this._roughnessMap=e,this.material.roughnessMap=e?Gi(e):null,this.standardTextureRepeat()}get roughness(){return this.material.roughness}set roughness(e){this.material.roughness=e}get normalMap(){return this._normalMap}set normalMap(e){this._normalMap=e,this.material.normalMap=e?Gi(e):null,this.standardTextureRepeat()}get normalScale(){return this.material.normalScale}set normalScale(e){typeof e=="number"?this.material.normalScale=new ae(e,e):this.material.normalScale=e}get normalMapType(){return this._normalMapType}set normalMapType(e){this._normalMapType=e,this.material.normalMapType=e==="objectSpace"?FE:_l}}class tu extends ov{constructor(e){var t;super(e),this.material=(t=e.material)!==null&&t!==void 0?t:e.material=new wl,Li.delete(this)}retargetAnimations(){var e;if(!((e=this.model)===null||e===void 0)&&e.animationManagers){for(const t of Object.values(this.model.animationManagers))this.animations[t.name]=this.watch(t.retarget(this.object3d));this.model=void 0}}get animation(){return super.animation}set animation(e){this.retargetAnimations(),super.animation=e}dispose(){return super.dispose(),this.material.dispose(),this}addToRaycastSet(e,t){this.managerSet||(this.managerSet=!0,this.object3d.traverse(n=>n.userData.manager=this)),e.add(this.object3d),t.then(()=>e.delete(this.object3d))}}tu.componentName="find";tu.defaults=ym;tu.schema=KT;ks(tu,[Jx,cv]);class To extends Sa{constructor(e){super(e);const t=this.outerObject3d=new ei;t.userData.manager=this,$e.add(t),t.add(e)}get innerRotationX(){return this.object3d.rotation.x*pi}set innerRotationX(e){this.object3d.rotation.x=e*xn}get innerRotationY(){return this.object3d.rotation.y*pi}set innerRotationY(e){this.object3d.rotation.y=e*xn}get innerRotationZ(){return this.object3d.rotation.z*pi}set innerRotationZ(e){this.object3d.rotation.z=e*xn}get innerRotation(){return this.innerRotationZ}set innerRotation(e){this.innerRotationZ=e}get innerX(){return this.object3d.position.x*pn}set innerX(e){this.object3d.position.x=e*Ye}get innerY(){return this.object3d.position.y*pn}set innerY(e){this.object3d.position.y=e*Ye}get innerZ(){return this.object3d.position.z*pn}set innerZ(e){this.object3d.position.z=e*Ye}find(e,t){var n,r;const s=this.outerObject3d.getObjectByName(nn.sanitizeNodeName(e));if(!s)return;const o=(n=(r=s.userData).manager)!==null&&n!==void 0?n:r.manager=new tu(s);return!t&&this._append(o),o}findAll(e){const t=[];return this.outerObject3d.traverse(n=>{var r,s;n.name===e&&t.push((r=(s=n.userData).manager)!==null&&r!==void 0?r:s.manager=new tu(n))}),t}}const BU={maxAngularVelocityX:Number,maxAngularVelocityY:Number,maxAngularVelocityZ:Number,maxVelocityX:Number,maxVelocityY:Number,maxVelocityZ:Number,velocity:Object,noTumble:Boolean,slippery:Boolean,mass:Number,physicsGroup:Number,ignorePhysicsGroups:Array,physics:[String,Boolean],physicsShape:Function},zU={maxAngularVelocityX:1/0,maxAngularVelocityY:1/0,maxAngularVelocityZ:1/0,maxVelocityX:1/0,maxVelocityY:1/0,maxVelocityZ:1/0,velocity:{x:0,y:0,z:0},physics:!1,physicsShape:qT},Qx=bt(Me({},du),{x:Number,y:Number,z:Number}),$x=bt(Me({},Sl),{x:0,y:0,z:0}),UU=bt(Me(Me(Me({},YT),Qx),BU),{onIntersect:Function,onIntersectOut:Function,id:String,intersectIds:Array,width:Number,height:Number,depth:Number,scaleX:Number,scaleY:Number,scaleZ:Number,scale:Number,rotationX:Number,rotationY:Number,rotationZ:Number,rotation:Number,innerVisible:Boolean}),FU=bt(Me(Me(Me({},ZT),$x),zU),{width:100,height:100,depth:100,scaleX:1,scaleY:1,scaleZ:1,scale:1,rotationX:0,rotationY:0,rotationZ:0,rotation:0,innerVisible:!0}),Tl=bt(Me({},UU),{innerRotationX:Number,innerRotationY:Number,innerRotationZ:Number,innerRotation:Number,innerX:Number,innerY:Number,innerZ:Number}),fu=bt(Me({},FU),{innerRotationX:0,innerRotationY:0,innerRotationZ:0,innerRotation:0,innerX:0,innerY:0,innerZ:0}),uv=Me(Me(Me({},Tl),av),Zx),hv=Me(Me(Me({},fu),lv),Kx);class Br extends To{constructor(e,t){const n=new wl(t?{transparent:!0}:void 0),r=new In(e,n);super(r),this.material=n,this.transparent=t}dispose(){return super.dispose(),this.material.dispose(),this}}Br.defaults=hv;Br.schema=uv;ks(Br,[Jx,cv]);const QT=new bl(br,br,br,1,1,1);class dv extends Br{constructor(){super(QT)}}dv.componentName="cube";class pv extends To{constructor(){super(new In(QT,pT)),this.loadedGroup=new ei,this.loadedResolvable=new Fc,this.outerObject3d.add(this.loadedGroup)}get src(){return this._src}set src(e){this._src!==e&&(this._src=e,e&&(this.loadedResolvable.done&&(this.loadedResolvable=new Fc,this.loadedGroup.clear()),this.load(e).then(t=>{this.done||this._src!==e||(this.object3d.visible=!!this._boxVisible,this.resolveLoaded(t))})))}get onLoad(){return this._onLoad}set onLoad(e){var t;this._onLoad=e,(t=this.loadedHandle)===null||t===void 0||t.cancel(),e&&(this.loadedHandle=this.loadedResolvable.then(e))}get width(){return super.width}set width(e){super.width=e,this.widthSet=!0}get height(){return super.height}set height(e){super.height=e,this.heightSet=!0}get depth(){return super.depth}set depth(e){super.depth=e,this.depthSet=!0}get innerRotationX(){return super.innerRotationX}set innerRotationX(e){super.innerRotationX=e,this.loadedGroup.rotation.x=this.object3d.rotation.x}get innerRotationY(){return super.innerRotationY}set innerRotationY(e){super.innerRotationY=e,this.loadedGroup.rotation.y=this.object3d.rotation.y}get innerRotationZ(){return super.innerRotationZ}set innerRotationZ(e){super.innerRotationZ=e,this.loadedGroup.rotation.z=this.object3d.rotation.z}get innerX(){return super.innerX}set innerX(e){super.innerX=e,this.loadedGroup.position.x=this.object3d.position.x}get innerY(){return super.innerY}set innerY(e){super.innerY=e,this.loadedGroup.position.y=this.object3d.position.y}get innerZ(){return super.innerZ}set innerZ(e){super.innerZ=e,this.loadedGroup.position.z=this.object3d.position.z}get innerVisible(){return this.loadedGroup.visible}set innerVisible(e){this.loadedGroup.visible=e}get frustumCulled(){return this.outerObject3d.frustumCulled}set frustumCulled(e){this.outerObject3d.frustumCulled!==e&&(this.outerObject3d.frustumCulled=e,this.loadedResolvable.then(()=>super.frustumCulled=e))}get physics(){var e;return(e=this._physics)!==null&&e!==void 0?e:!1}set physics(e){var t;if(this._physics===e)return;this._physics=e,(t=this.physicsHandle)===null||t===void 0||t.cancel();const n=this.physicsHandle=this.cancellable();this.loadedResolvable.then(()=>this.initPhysics(e,n))}get boxVisible(){var e;return(e=this._boxVisible)!==null&&e!==void 0?e:this.object3d.visible}set boxVisible(e){this._boxVisible=e,this.object3d.visible=e}get outline(){return!!this._outline}set outline(e){var t;this._outline!==e&&(this._outline=e,(t=this._outlineHandle)===null||t===void 0||t.cancel(),this._outlineHandle=this.loadedResolvable.then(n=>{e?HT(n):GT(n)}))}get bloom(){return!!this._bloom}set bloom(e){var t;this._bloom!==e&&(this._bloom=e,(t=this._bloomHandle)===null||t===void 0||t.cancel(),this._bloomHandle=this.loadedResolvable.then(n=>{e?Wx(n):jx(n)}))}get reflection(){return!!this._reflection}set reflection(e){var t;this._reflection!==e&&(this._reflection=e,(t=this._reflectionHandle)===null||t===void 0||t.cancel(),this._reflectionHandle=this.loadedResolvable.then(n=>{e?FT(n):E_(n)}))}addToRaycastSet(e,t){t.watch(this.loadedResolvable.then(n=>{this.managerSet||(this.managerSet=!0,n.traverse(r=>{var s,o;return(s=(o=r.userData).manager)!==null&&s!==void 0?s:o.manager=this})),e.add(n),t.then(()=>e.delete(n))}))}refreshFactors(){this.loadedResolvable.then(()=>super.refreshFactors())}}function VU(i){const e=new Map,t=new Map,n=i.clone();return $T(i,n,function(r,s){e.set(s,r),t.set(r,s)}),n.traverse(function(r){if(!r.isSkinnedMesh)return;const s=r,o=e.get(r),l=o.skeleton.bones;s.skeleton=o.skeleton.clone(),s.bindMatrix.copy(o.bindMatrix),s.skeleton.bones=l.map(function(h){return t.get(h)}),s.bind(s.skeleton,s.bindMatrix)}),n}function $T(i,e,t){t(i,e);for(let n=0;n{const n=e?i.clone():VU(i);return!e&&eA.add(n),n.animations=t,n};Kt(()=>{const i=vi();if(!(i instanceof pv)||Ze()!==bn)return;const e=i.loadedGroup.children[0];if(!eA.has(e))return;const t=new z2(e);return $e.add(t),()=>{$e.remove(t)}},[vi,Ze]);const[w9,HU]=Ge(!0),yM={type:"change"},Ay={type:"start"},_M={type:"end"};class GU extends Ea{constructor(e,t){super(),t===void 0&&console.warn('THREE.OrbitControls: The second parameter "domElement" is now mandatory.'),t===document&&console.error('THREE.OrbitControls: "document" should not be used as the target "domElement". Please use "renderer.domElement" instead.'),this.object=e,this.domElement=t,this.domElement.style.touchAction="none",this.enabled=!0,this.target=new z,this.minDistance=0,this.maxDistance=1/0,this.minZoom=0,this.maxZoom=1/0,this.minPolarAngle=0,this.maxPolarAngle=Math.PI,this.minAzimuthAngle=-1/0,this.maxAzimuthAngle=1/0,this.enableDamping=!1,this.dampingFactor=.05,this.enableZoom=!0,this.zoomSpeed=1,this.enableRotate=!0,this.rotateSpeed=1,this.enablePan=!0,this.panSpeed=1,this.screenSpacePanning=!0,this.keyPanSpeed=7,this.autoRotate=!1,this.autoRotateSpeed=2,this.keys={LEFT:"ArrowLeft",UP:"ArrowUp",RIGHT:"ArrowRight",BOTTOM:"ArrowDown"},this.mouseButtons={LEFT:oc.ROTATE,MIDDLE:oc.DOLLY,RIGHT:oc.PAN},this.touches={ONE:ac.ROTATE,TWO:ac.DOLLY_PAN},this.target0=this.target.clone(),this.position0=this.object.position.clone(),this.zoom0=this.object.zoom,this._domElementKeyEvents=null,this.getPolarAngle=function(){return l.phi},this.getAzimuthalAngle=function(){return l.theta},this.getDistance=function(){return this.object.position.distanceTo(this.target)},this.listenToKeyEvents=function(U){U.addEventListener("keydown",yt),this._domElementKeyEvents=U},this.saveState=function(){n.target0.copy(n.target),n.position0.copy(n.object.position),n.zoom0=n.object.zoom},this.reset=function(){n.target.copy(n.target0),n.object.position.copy(n.position0),n.object.zoom=n.zoom0,n.object.updateProjectionMatrix(),n.dispatchEvent(yM),n.update(),s=r.NONE},this.update=function(){const U=new z,Ee=new ai().setFromUnitVectors(e.up,new z(0,1,0)),Je=Ee.clone().invert(),ke=new z,X=new ai,Re=2*Math.PI;return function(){const at=n.object.position;U.copy(at).sub(n.target),U.applyQuaternion(Ee),l.setFromVector3(U),n.autoRotate&&s===r.NONE&&k(F()),n.enableDamping?(l.theta+=h.theta*n.dampingFactor,l.phi+=h.phi*n.dampingFactor):(l.theta+=h.theta,l.phi+=h.phi);let ze=n.minAzimuthAngle,et=n.maxAzimuthAngle;return isFinite(ze)&&isFinite(et)&&(ze<-Math.PI?ze+=Re:ze>Math.PI&&(ze-=Re),et<-Math.PI?et+=Re:et>Math.PI&&(et-=Re),ze<=et?l.theta=Math.max(ze,Math.min(et,l.theta)):l.theta=l.theta>(ze+et)/2?Math.max(ze,l.theta):Math.min(et,l.theta)),l.phi=Math.max(n.minPolarAngle,Math.min(n.maxPolarAngle,l.phi)),l.makeSafe(),l.radius*=d,l.radius=Math.max(n.minDistance,Math.min(n.maxDistance,l.radius)),n.enableDamping===!0?n.target.addScaledVector(f,n.dampingFactor):n.target.add(f),U.setFromSpherical(l),U.applyQuaternion(Je),at.copy(n.target).add(U),n.object.lookAt(n.target),n.enableDamping===!0?(h.theta*=1-n.dampingFactor,h.phi*=1-n.dampingFactor,f.multiplyScalar(1-n.dampingFactor)):(h.set(0,0,0),f.set(0,0,0)),d=1,g||ke.distanceToSquared(n.object.position)>o||8*(1-X.dot(n.object.quaternion))>o?(n.dispatchEvent(yM),ke.copy(n.object.position),X.copy(n.object.quaternion),g=!1,!0):!1}}(),this.dispose=function(){n.domElement.removeEventListener("contextmenu",he),n.domElement.removeEventListener("pointerdown",Ae),n.domElement.removeEventListener("pointercancel",rt),n.domElement.removeEventListener("wheel",Ft),n.domElement.removeEventListener("pointermove",We),n.domElement.removeEventListener("pointerup",Be),n._domElementKeyEvents!==null&&n._domElementKeyEvents.removeEventListener("keydown",yt)};const n=this,r={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_PAN:4,TOUCH_DOLLY_PAN:5,TOUCH_DOLLY_ROTATE:6};let s=r.NONE;const o=1e-6,l=new zS,h=new zS;let d=1;const f=new z;let g=!1;const y=new ae,_=new ae,w=new ae,S=new ae,b=new ae,T=new ae,E=new ae,C=new ae,A=new ae,D=[],I={};function F(){return 2*Math.PI/60/60*n.autoRotateSpeed}function P(){return Math.pow(.95,n.zoomSpeed)}function k(U){h.theta-=U}function j(U){h.phi-=U}const G=function(){const U=new z;return function(Je,ke){U.setFromMatrixColumn(ke,0),U.multiplyScalar(-Je),f.add(U)}}(),ne=function(){const U=new z;return function(Je,ke){n.screenSpacePanning===!0?U.setFromMatrixColumn(ke,1):(U.setFromMatrixColumn(ke,0),U.crossVectors(n.object.up,U)),U.multiplyScalar(Je),f.add(U)}}(),ce=function(){const U=new z;return function(Je,ke){const X=n.domElement;if(n.object.isPerspectiveCamera){const Re=n.object.position;U.copy(Re).sub(n.target);let De=U.length();De*=Math.tan(n.object.fov/2*Math.PI/180),G(2*Je*De/X.clientHeight,n.object.matrix),ne(2*ke*De/X.clientHeight,n.object.matrix)}else n.object.isOrthographicCamera?(G(Je*(n.object.right-n.object.left)/n.object.zoom/X.clientWidth,n.object.matrix),ne(ke*(n.object.top-n.object.bottom)/n.object.zoom/X.clientHeight,n.object.matrix)):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled."),n.enablePan=!1)}}();function Z(U){n.object.isPerspectiveCamera?d/=U:n.object.isOrthographicCamera?(n.object.zoom=Math.max(n.minZoom,Math.min(n.maxZoom,n.object.zoom*U)),n.object.updateProjectionMatrix(),g=!0):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),n.enableZoom=!1)}function $(U){n.object.isPerspectiveCamera?d*=U:n.object.isOrthographicCamera?(n.object.zoom=Math.max(n.minZoom,Math.min(n.maxZoom,n.object.zoom/U)),n.object.updateProjectionMatrix(),g=!0):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),n.enableZoom=!1)}function K(U){y.set(U.clientX,U.clientY)}function pe(U){E.set(U.clientX,U.clientY)}function re(U){S.set(U.clientX,U.clientY)}function se(U){_.set(U.clientX,U.clientY),w.subVectors(_,y).multiplyScalar(n.rotateSpeed);const Ee=n.domElement;k(2*Math.PI*w.x/Ee.clientHeight),j(2*Math.PI*w.y/Ee.clientHeight),y.copy(_),n.update()}function ue(U){C.set(U.clientX,U.clientY),A.subVectors(C,E),A.y>0?Z(P()):A.y<0&&$(P()),E.copy(C),n.update()}function Te(U){b.set(U.clientX,U.clientY),T.subVectors(b,S).multiplyScalar(n.panSpeed),ce(T.x,T.y),S.copy(b),n.update()}function fe(U){U.deltaY<0?$(P()):U.deltaY>0&&Z(P()),n.update()}function Ce(U){let Ee=!1;switch(U.code){case n.keys.UP:ce(0,n.keyPanSpeed),Ee=!0;break;case n.keys.BOTTOM:ce(0,-n.keyPanSpeed),Ee=!0;break;case n.keys.LEFT:ce(n.keyPanSpeed,0),Ee=!0;break;case n.keys.RIGHT:ce(-n.keyPanSpeed,0),Ee=!0;break}Ee&&(U.preventDefault(),n.update())}function qe(){if(D.length===1)y.set(D[0].pageX,D[0].pageY);else{const U=.5*(D[0].pageX+D[1].pageX),Ee=.5*(D[0].pageY+D[1].pageY);y.set(U,Ee)}}function Ke(){if(D.length===1)S.set(D[0].pageX,D[0].pageY);else{const U=.5*(D[0].pageX+D[1].pageX),Ee=.5*(D[0].pageY+D[1].pageY);S.set(U,Ee)}}function me(){const U=D[0].pageX-D[1].pageX,Ee=D[0].pageY-D[1].pageY,Je=Math.sqrt(U*U+Ee*Ee);E.set(0,Je)}function Ut(){n.enableZoom&&me(),n.enablePan&&Ke()}function nt(){n.enableZoom&&me(),n.enableRotate&&qe()}function it(U){if(D.length==1)_.set(U.pageX,U.pageY);else{const Je=Xe(U),ke=.5*(U.pageX+Je.x),X=.5*(U.pageY+Je.y);_.set(ke,X)}w.subVectors(_,y).multiplyScalar(n.rotateSpeed);const Ee=n.domElement;k(2*Math.PI*w.x/Ee.clientHeight),j(2*Math.PI*w.y/Ee.clientHeight),y.copy(_)}function Le(U){if(D.length===1)b.set(U.pageX,U.pageY);else{const Ee=Xe(U),Je=.5*(U.pageX+Ee.x),ke=.5*(U.pageY+Ee.y);b.set(Je,ke)}T.subVectors(b,S).multiplyScalar(n.panSpeed),ce(T.x,T.y),S.copy(b)}function vt(U){const Ee=Xe(U),Je=U.pageX-Ee.x,ke=U.pageY-Ee.y,X=Math.sqrt(Je*Je+ke*ke);C.set(0,X),A.set(0,Math.pow(C.y/E.y,n.zoomSpeed)),Z(A.y),E.copy(C)}function ve(U){n.enableZoom&&vt(U),n.enablePan&&Le(U)}function xe(U){n.enableZoom&&vt(U),n.enableRotate&&it(U)}function Ae(U){n.enabled!==!1&&(D.length===0&&(n.domElement.setPointerCapture(U.pointerId),n.domElement.addEventListener("pointermove",We),n.domElement.addEventListener("pointerup",Be)),we(U),U.pointerType==="touch"?H(U):ot(U))}function We(U){n.enabled!==!1&&(U.pointerType==="touch"?B(U):st(U))}function Be(U){Ne(U),D.length===0&&(n.domElement.releasePointerCapture(U.pointerId),n.domElement.removeEventListener("pointermove",We),n.domElement.removeEventListener("pointerup",Be)),n.dispatchEvent(_M),s=r.NONE}function rt(U){Ne(U)}function ot(U){let Ee;switch(U.button){case 0:Ee=n.mouseButtons.LEFT;break;case 1:Ee=n.mouseButtons.MIDDLE;break;case 2:Ee=n.mouseButtons.RIGHT;break;default:Ee=-1}switch(Ee){case oc.DOLLY:if(n.enableZoom===!1)return;pe(U),s=r.DOLLY;break;case oc.ROTATE:if(U.ctrlKey||U.metaKey||U.shiftKey){if(n.enablePan===!1)return;re(U),s=r.PAN}else{if(n.enableRotate===!1)return;K(U),s=r.ROTATE}break;case oc.PAN:if(U.ctrlKey||U.metaKey||U.shiftKey){if(n.enableRotate===!1)return;K(U),s=r.ROTATE}else{if(n.enablePan===!1)return;re(U),s=r.PAN}break;default:s=r.NONE}s!==r.NONE&&n.dispatchEvent(Ay)}function st(U){if(n.enabled!==!1)switch(s){case r.ROTATE:if(n.enableRotate===!1)return;se(U);break;case r.DOLLY:if(n.enableZoom===!1)return;ue(U);break;case r.PAN:if(n.enablePan===!1)return;Te(U);break}}function Ft(U){n.enabled===!1||n.enableZoom===!1||s!==r.NONE||(U.preventDefault(),n.dispatchEvent(Ay),fe(U),n.dispatchEvent(_M))}function yt(U){n.enabled===!1||n.enablePan===!1||Ce(U)}function H(U){switch(Ue(U),D.length){case 1:switch(n.touches.ONE){case ac.ROTATE:if(n.enableRotate===!1)return;qe(),s=r.TOUCH_ROTATE;break;case ac.PAN:if(n.enablePan===!1)return;Ke(),s=r.TOUCH_PAN;break;default:s=r.NONE}break;case 2:switch(n.touches.TWO){case ac.DOLLY_PAN:if(n.enableZoom===!1&&n.enablePan===!1)return;Ut(),s=r.TOUCH_DOLLY_PAN;break;case ac.DOLLY_ROTATE:if(n.enableZoom===!1&&n.enableRotate===!1)return;nt(),s=r.TOUCH_DOLLY_ROTATE;break;default:s=r.NONE}break;default:s=r.NONE}s!==r.NONE&&n.dispatchEvent(Ay)}function B(U){switch(Ue(U),s){case r.TOUCH_ROTATE:if(n.enableRotate===!1)return;it(U),n.update();break;case r.TOUCH_PAN:if(n.enablePan===!1)return;Le(U),n.update();break;case r.TOUCH_DOLLY_PAN:if(n.enableZoom===!1&&n.enablePan===!1)return;ve(U),n.update();break;case r.TOUCH_DOLLY_ROTATE:if(n.enableZoom===!1&&n.enableRotate===!1)return;xe(U),n.update();break;default:s=r.NONE}}function he(U){n.enabled!==!1&&U.preventDefault()}function we(U){D.push(U)}function Ne(U){delete I[U.pointerId];for(let Ee=0;Ee{var e;return tA((e=i.userData.bokeh)!==null&&e!==void 0?e:fv)});const mv=.025,[nA,WU]=Ge(mv);Ze(i=>{var e;return nA((e=i.userData.bokehAperture)!==null&&e!==void 0?e:mv)});const vv=1,[iA,jU]=Ge(vv);Ze(i=>{var e;return iA((e=i.userData.bokehFocus)!==null&&e!==void 0?e:vv)});const gv=.01,[rA,XU]=Ge(gv);Ze(i=>{var e;return rA((e=i.userData.bokehMaxBlur)!==null&&e!==void 0?e:gv)});const[eb,tb]=Ge([]),qU=Im(eb,tb),YU=Om(eb,tb),sA=Me(Me({},Tl),av),oA=bt(Me(Me({},fu),lv),{scaleZ:0,depth:0});class Al extends To{constructor(){const e=new ud({transparent:!0});super(new ux(e)),this.material=e}dispose(){return super.dispose(),this.material.dispose(),this}get depth(){return 0}set depth(e){}get scaleZ(){return 0}set scaleZ(e){}}Al.componentName="sprite";Al.defaults=oA;Al.schema=sA;ks(Al,[cv]);var ZU=()=>{const i=new Al;return i.texture="data:image/png;base64,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",Li.delete(i),i.scale=.5,i};class aA extends Bs{initCamera(){qU(this.camera),this.then(()=>{this.active&&hl(bn),YU(this.camera)}),this.createEffect(()=>{if(Ze()!==bn||Ze()===this.camera)return;const e=new nz(this.camera);$e.add(e);const t=ZU();e.add(t.outerObject3d);const n=vd(({target:r})=>{r===t&&Di(this)});return()=>{e.dispose(),$e.remove(e),t.dispose(),n.cancel()}},[Ze])}get fov(){return this.camera.fov}set fov(e){var t,n;this.camera.fov=e,(n=(t=this.camera).updateProjectionMatrix)===null||n===void 0||n.call(t)}get zoom(){return this.camera.zoom}set zoom(e){var t,n;this.camera.zoom=e,(n=(t=this.camera).updateProjectionMatrix)===null||n===void 0||n.call(t)}get near(){return this.camera.near}set near(e){var t,n;this.camera.near=e,(n=(t=this.camera).updateProjectionMatrix)===null||n===void 0||n.call(t)}get far(){return this.camera.far}set far(e){var t,n;this.camera.far=e,(n=(t=this.camera).updateProjectionMatrix)===null||n===void 0||n.call(t)}activate(){hl(this.camera)}get active(){return Ze()===this.camera}set active(e){e&&this.activate()}get bokeh(){var e;return(e=this.camera.userData.bokeh)!==null&&e!==void 0?e:fv}set bokeh(e){Ze()===this.camera&&tA(e),this.camera.userData.bokeh=e}get bokehFocus(){var e;return(e=this.camera.userData.bokehFocus)!==null&&e!==void 0?e:vv}set bokehFocus(e){Ze()===this.camera&&iA(e),this.camera.userData.bokehFocus=e}get bokehMaxBlur(){var e;return(e=this.camera.userData.bokehMaxBlur)!==null&&e!==void 0?e:gv}set bokehMaxBlur(e){Ze()===this.camera&&rA(e),this.camera.userData.bokehMaxBlur=e}get bokehAperture(){var e;return(e=this.camera.userData.bokehAperture)!==null&&e!==void 0?e:mv}set bokehAperture(e){Ze()===this.camera&&nA(e),this.camera.userData.bokehAperture=e}}const lA={fov:Number,zoom:Number,near:Number,far:Number,active:Boolean,bokeh:Boolean,bokehFocus:Number,bokehMaxBlur:Number,bokehAperture:Number,minPolarAngle:Number,maxPolarAngle:Number},cA={fov:75,zoom:1,near:Qm,far:$m,active:!1,bokeh:fv,bokehFocus:vv,bokehMaxBlur:gv,bokehAperture:mv,minPolarAngle:Bx,maxPolarAngle:zx},uA=bt(Me(Me({},Qx),lA),{targetX:Number,targetY:Number,targetZ:Number,enableDamping:Boolean,enablePan:Boolean,enableZoom:Boolean,autoRotate:Boolean,autoRotateSpeed:Number,minAzimuthAngle:Number,maxAzimuthAngle:Number,azimuthAngle:Number,polarAngle:Number}),hA=bt(Me(Me({},$x),cA),{targetX:0,targetY:0,targetZ:0,z:500,enableDamping:!1,enablePan:!1,enableZoom:!1,autoRotate:!1,autoRotateSpeed:2,minAzimuthAngle:-1/0,maxAzimuthAngle:1/0,azimuthAngle:0,polarAngle:0}),[yd,yv]=Er();window.addEventListener("blur",()=>yd());window.addEventListener("focus",()=>yd());document.addEventListener("visibilitychange",()=>yd());const Eh=new Set;yv(()=>Eh.clear());let C_=!1;document.addEventListener("keydown",i=>{(i.key==="Shift"||i.key==="Meta")&&Eh.add(i.key),Eh.has("Meta")&&Eh.has("Shift")&&(yd(),C_=!0)});document.addEventListener("keyup",i=>{(i.key==="Shift"||i.key==="Meta")&&Eh.delete(i.key)});document.addEventListener("mousedown",()=>{C_&&(C_=!1,yd())});class Cl extends nv{constructor(e=new fi(75,1,Qm,$m)){super(e),this.camera=e,this.updateDebounced=Mr(()=>this.controls.update(),0,"trailing"),this.targetState=new Tn(void 0),this.enableZoomState=new Tn(!1),this.enableFlyState=new Tn(!1),this.enabledState=new Tn(!0),this._minPolarAngle=Bx*xn,this._maxPolarAngle=zx*xn,this._minAzimuthAngle=-1/0,this._maxAzimuthAngle=1/0,$e.add(e),this.initCamera(),this.createEffect(()=>{const n=this.targetState.get();if(!n)return;this.controls.target=n.outerObject3d.position;const r=tv(()=>n.parent!==this&&this.targetState.set(void 0));return()=>{this.controls.target=new z,r.cancel()}},[this.targetState.get]);const t=this.controls=new GU(e,wn);t.enabled=!1,t.enablePan=!1,t.enableZoom=!1,t.minPolarAngle=this._minPolarAngle,t.maxPolarAngle=this._maxPolarAngle,t.minAzimuthAngle=this._minAzimuthAngle,t.maxAzimuthAngle=this._maxAzimuthAngle,e.position.z=5,this.updateDebounced(),this.createEffect(()=>{if(So()||Ze()!==e||!this.enabledState.get())return;t.enabled=!0;const n=wi(this.updateDebounced);if(this.enableZoomState.get()){const r=s=>{s.preventDefault();const o=e.getWorldDirection(Ot);let l=e.position.clone().add(o.clone().multiplyScalar(-s.deltaY*Ye));const h=e.worldToLocal(l.clone()),d=e.worldToLocal(t.target.clone());h.z-d.z<=1&&(l=t.target.clone().add(o.multiplyScalar(-1))),e.position.copy(l),this.updateDebounced()};wn.addEventListener("wheel",r),n.then(()=>wn.removeEventListener("wheel",r))}if(this.enableFlyState.get()){const r=new Set,s=f=>{const g=e.getWorldDirection(Ot);e.position.add(g.clone().multiplyScalar(f*Ye)),this.controls.target.copy(e.position).add(g),this.updateDebounced()},o=f=>{Ot.setFromMatrixColumn(this.outerObject3d.matrix,0),e.position.addScaledVector(Ot,f*Ye),this.controls.target.addScaledVector(Ot,f*Ye),this.updateDebounced()},l=f=>{const g=f*Ye;e.position.y+=g,this.controls.target.y+=g,this.updateDebounced()};n.watch(wi(()=>{r.has("w")?s(r.has("Shift")?50:10):r.has("s")&&s(r.has("Shift")?-50:-10),r.has("a")?o(-10):r.has("d")&&o(10),r.has("ArrowDown")?l(-10):r.has("ArrowUp")&&l(10)}));const h=f=>{r.add(f.key.length===1?f.key.toLocaleLowerCase():f.key)},d=f=>{r.delete(f.key.length===1?f.key.toLowerCase():f.key)};document.addEventListener("keydown",h),document.addEventListener("keyup",d),n.watch(yv(()=>r.clear())),n.then(()=>{document.removeEventListener("keydown",h),document.removeEventListener("keyup",d)})}return()=>{t.enabled=!1,n.cancel()}},[Ze,So,this.enableZoomState.get,this.enableFlyState.get,this.enabledState.get]),this.then(()=>t.dispose())}get targetX(){var e;return(e=this._targetX)!==null&&e!==void 0?e:this._targetX=0}set targetX(e){this._targetX=e,this.controls.target.x=e*Ye}get targetY(){var e;return(e=this._targetY)!==null&&e!==void 0?e:this._targetY=0}set targetY(e){this._targetY=e,this.controls.target.y=e*Ye}get targetZ(){var e;return(e=this._targetZ)!==null&&e!==void 0?e:this._targetZ=0}set targetZ(e){this._targetZ=e,this.controls.target.z=e*Ye}append(e){var t;if(this.targetState.get()){super.append(e);return}this._append(e),(t=this.outerObject3d.parent)===null||t===void 0||t.add(e.outerObject3d),this.targetState.set(e)}attach(e){var t;if(this.targetState.get()){super.attach(e);return}this._append(e),(t=this.outerObject3d.parent)===null||t===void 0||t.attach(e.outerObject3d),this.targetState.set(e)}get x(){return this.camera.position.x*pn}set x(e){this.camera.position.x=e*Ye}get y(){return this.camera.position.y*pn}set y(e){this.camera.position.y=e*Ye}get z(){return this.camera.position.z*pn}set z(e){this.camera.position.z=e*Ye}get rotationX(){return this.camera.rotation.x*pi}get rotationY(){return this.camera.rotation.y*pi}get rotationZ(){return this.camera.rotation.z*pi}get enableDamping(){return this.controls.enableDamping}set enableDamping(e){this.controls.enableDamping=e}get enablePan(){return this.controls.enablePan}set enablePan(e){this.controls.enablePan=e}get enableZoom(){return this.enableZoomState.get()}set enableZoom(e){this.enableZoomState.set(e)}get enableFly(){return this.enableFlyState.get()}set enableFly(e){this.enableFlyState.set(e)}get enabled(){return this.enabledState.get()}set enabled(e){this.enabledState.set(e)}get autoRotate(){return this.controls.autoRotate}set autoRotate(e){this.controls.autoRotate=e}get autoRotateSpeed(){return this.controls.autoRotateSpeed}set autoRotateSpeed(e){this.controls.autoRotateSpeed=e}get minPolarAngle(){return this._minPolarAngle*pi}set minPolarAngle(e){this.controls.minPolarAngle=this._minPolarAngle=e*xn}get maxPolarAngle(){return this._maxPolarAngle*pi}set maxPolarAngle(e){this.controls.maxPolarAngle=this._maxPolarAngle=e*xn}get minAzimuthAngle(){return this._minAzimuthAngle*pi}set minAzimuthAngle(e){this.controls.minAzimuthAngle=this._minAzimuthAngle=e*xn}get maxAzimuthAngle(){return this._maxAzimuthAngle*pi}set maxAzimuthAngle(e){this.controls.maxAzimuthAngle=this._maxAzimuthAngle=e*xn}get azimuthAngle(){return this.controls.getAzimuthalAngle()*pi}set azimuthAngle(e){this.controls.minAzimuthAngle=this.controls.maxAzimuthAngle=e*xn,this.controls.update(),this.queueMicrotask(()=>{this.controls.minAzimuthAngle=this._minAzimuthAngle,this.controls.maxAzimuthAngle=this._maxAzimuthAngle})}get polarAngle(){return this.controls.getPolarAngle()*pi}set polarAngle(e){this.controls.minPolarAngle=this.controls.maxPolarAngle=e*xn,this.controls.update(),this.queueMicrotask(()=>{this.controls.minPolarAngle=this._minPolarAngle,this.controls.maxPolarAngle=this._maxPolarAngle})}get distance(){return this.controls.getDistance()*pn}set distance(e){this.controls.minDistance=this.controls.maxDistance=e*Ye,this.controls.update(),this.queueMicrotask(()=>{this.controls.minDistance=-1/0,this.controls.maxDistance=1/0})}getCenter(){return this.getWorldPosition()}}Cl.componentName="orbitCamera";Cl.defaults=hA;Cl.schema=uA;ks(Cl,[aA]);const[dA,KU]=Er(),[bM,JU]=Ge(0),rr=new Cl(bn);rr.enablePan=!0;rr.enableZoom=!0;rr.enableFly=!0;rr.enabled=!1;Li.delete(rr);KU(i=>{const e=i.getCenter();rr.targetX=e.x,rr.targetY=e.y,rr.targetZ=e.z});const{controls:pA}=rr;HU(i=>pA.screenSpacePanning=i);Kt(()=>{if(!(!vl()||Ze()!==bn||So()))return rr.enabled=!0,wn.style.cursor="grab",()=>{rr.enabled=!1,wn.style.cursor="auto"}},[vl,So,Ze]);Kt(()=>{if(!vl())return;let i=!0;return queueMicrotask(()=>i&&(rr.polarAngle=60)),()=>{i=!1,pA.reset(),rr.polarAngle=90,rr.azimuthAngle=0}},[vl]);Kt(()=>{if(Ze()!==bn||vl())return;const i=JU(e=>bn.position.z=e);return()=>{i.cancel()}},[Ze,vl]);const[wM,P_]=Er(),[QU,gl]=Ge("translate"),[$U,R_]=Ge("world"),[S9,SM]=Ge(null),eF=yl(async()=>{const{TransformControls:i}=await $n(()=>import("./TransformControls.b17a4b82.js"),["./TransformControls.b17a4b82.js","./entry.c3abd651.js","./entry.f74844d6.css"],import.meta.url),e=new i(Ze(),wn);Ze(n=>e.camera=n),e.enabled=!1;let t=!1;return e.addEventListener("dragging-changed",({value:n})=>{t=n,aU(t),wM(t?"start":"stop")}),e.addEventListener("change",()=>t&&wM("move")),e});Kt(()=>{const i=vi(),e=gl(),t=R_(),n=SM();if(!i||Ze()!==bn)return;const r=new En;return eF().then(s=>{if(e==="select"){s.enabled=!1;return}s.setMode(e),s.setSpace(t),s.setScaleSnap(n),s.setRotationSnap(n),s.setTranslationSnap(n),$e.add(s),s.attach(i.outerObject3d),s.enabled=!0,r.then(()=>{$e.remove(s),s.detach(),s.enabled=!1})}),()=>{r.cancel()}},[vi,gl,R_,SM,Ze]);Kt(()=>{if(!l_())return;const i=c_(),e=new F2(i,i);return $e.add(e),()=>{$e.remove(e)}},[l_,c_]);const[M9,MM]=Ge(!1),[Af,nb]=Er(),el=new In(new ld(br,br,4,4),pT);Kt(()=>{var i;if(!MM()||Ze()!==bn)return;$e.add(el);const[e,t]=(i=Jc())!==null&&i!==void 0?i:mi();el.scale.x=e*Ye,el.scale.y=t*Ye;const n=nb(()=>{el.quaternion.copy(bn.quaternion),el.position.copy(bn.position),el.translateZ(-4.9)});return()=>{n.cancel(),$e.remove(el)}},[MM,Jc,mi(),Ze]);const[E9,tF]=Ge({turbidity:10,rayleigh:3,mieCoefficient:.005,mieDirectionalG:.5,inclination:.49,azimuth:.25});class _d extends In{constructor(){const e=_d.SkyShader,t=new kt({name:"SkyShader",fragmentShader:e.fragmentShader,vertexShader:e.vertexShader,uniforms:Qn.clone(e.uniforms),side:xr,depthWrite:!1});super(new bl(1,1,1),t)}}_d.prototype.isSky=!0;_d.SkyShader={uniforms:{turbidity:{value:2},rayleigh:{value:1},mieCoefficient:{value:.005},mieDirectionalG:{value:.8},sunPosition:{value:new z},up:{value:new z(0,1,0)}},vertexShader:` uniform vec3 sunPosition; uniform float rayleigh; uniform float turbidity; uniform float mieCoefficient; uniform vec3 up; varying vec3 vWorldPosition; varying vec3 vSunDirection; varying float vSunfade; varying vec3 vBetaR; varying vec3 vBetaM; varying float vSunE; // constants for atmospheric scattering const float e = 2.71828182845904523536028747135266249775724709369995957; const float pi = 3.141592653589793238462643383279502884197169; // wavelength of used primaries, according to preetham const vec3 lambda = vec3( 680E-9, 550E-9, 450E-9 ); // this pre-calcuation replaces older TotalRayleigh(vec3 lambda) function: // (8.0 * pow(pi, 3.0) * pow(pow(n, 2.0) - 1.0, 2.0) * (6.0 + 3.0 * pn)) / (3.0 * N * pow(lambda, vec3(4.0)) * (6.0 - 7.0 * pn)) const vec3 totalRayleigh = vec3( 5.804542996261093E-6, 1.3562911419845635E-5, 3.0265902468824876E-5 ); // mie stuff // K coefficient for the primaries const float v = 4.0; const vec3 K = vec3( 0.686, 0.678, 0.666 ); // MieConst = pi * pow( ( 2.0 * pi ) / lambda, vec3( v - 2.0 ) ) * K const vec3 MieConst = vec3( 1.8399918514433978E14, 2.7798023919660528E14, 4.0790479543861094E14 ); // earth shadow hack // cutoffAngle = pi / 1.95; const float cutoffAngle = 1.6110731556870734; const float steepness = 1.5; const float EE = 1000.0; float sunIntensity( float zenithAngleCos ) { zenithAngleCos = clamp( zenithAngleCos, -1.0, 1.0 ); return EE * max( 0.0, 1.0 - pow( e, -( ( cutoffAngle - acos( zenithAngleCos ) ) / steepness ) ) ); } vec3 totalMie( float T ) { float c = ( 0.2 * T ) * 10E-18; return 0.434 * c * MieConst; } void main() { vec4 worldPosition = modelMatrix * vec4( position, 1.0 ); vWorldPosition = worldPosition.xyz; gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); gl_Position.z = gl_Position.w; // set z to camera.far vSunDirection = normalize( sunPosition ); vSunE = sunIntensity( dot( vSunDirection, up ) ); vSunfade = 1.0 - clamp( 1.0 - exp( ( sunPosition.y / 450000.0 ) ), 0.0, 1.0 ); float rayleighCoefficient = rayleigh - ( 1.0 * ( 1.0 - vSunfade ) ); // extinction (absorbtion + out scattering) // rayleigh coefficients vBetaR = totalRayleigh * rayleighCoefficient; // mie coefficients vBetaM = totalMie( turbidity ) * mieCoefficient; }`,fragmentShader:` varying vec3 vWorldPosition; varying vec3 vSunDirection; varying float vSunfade; varying vec3 vBetaR; varying vec3 vBetaM; varying float vSunE; uniform float mieDirectionalG; uniform vec3 up; const vec3 cameraPos = vec3( 0.0, 0.0, 0.0 ); // constants for atmospheric scattering const float pi = 3.141592653589793238462643383279502884197169; const float n = 1.0003; // refractive index of air const float N = 2.545E25; // number of molecules per unit volume for air at 288.15K and 1013mb (sea level -45 celsius) // optical length at zenith for molecules const float rayleighZenithLength = 8.4E3; const float mieZenithLength = 1.25E3; // 66 arc seconds -> degrees, and the cosine of that const float sunAngularDiameterCos = 0.999956676946448443553574619906976478926848692873900859324; // 3.0 / ( 16.0 * pi ) const float THREE_OVER_SIXTEENPI = 0.05968310365946075; // 1.0 / ( 4.0 * pi ) const float ONE_OVER_FOURPI = 0.07957747154594767; float rayleighPhase( float cosTheta ) { return THREE_OVER_SIXTEENPI * ( 1.0 + pow( cosTheta, 2.0 ) ); } float hgPhase( float cosTheta, float g ) { float g2 = pow( g, 2.0 ); float inverse = 1.0 / pow( 1.0 - 2.0 * g * cosTheta + g2, 1.5 ); return ONE_OVER_FOURPI * ( ( 1.0 - g2 ) * inverse ); } void main() { vec3 direction = normalize( vWorldPosition - cameraPos ); // optical length // cutoff angle at 90 to avoid singularity in next formula. float zenithAngle = acos( max( 0.0, dot( up, direction ) ) ); float inverse = 1.0 / ( cos( zenithAngle ) + 0.15 * pow( 93.885 - ( ( zenithAngle * 180.0 ) / pi ), -1.253 ) ); float sR = rayleighZenithLength * inverse; float sM = mieZenithLength * inverse; // combined extinction factor vec3 Fex = exp( -( vBetaR * sR + vBetaM * sM ) ); // in scattering float cosTheta = dot( direction, vSunDirection ); float rPhase = rayleighPhase( cosTheta * 0.5 + 0.5 ); vec3 betaRTheta = vBetaR * rPhase; float mPhase = hgPhase( cosTheta, mieDirectionalG ); vec3 betaMTheta = vBetaM * mPhase; vec3 Lin = pow( vSunE * ( ( betaRTheta + betaMTheta ) / ( vBetaR + vBetaM ) ) * ( 1.0 - Fex ), vec3( 1.5 ) ); Lin *= mix( vec3( 1.0 ), pow( vSunE * ( ( betaRTheta + betaMTheta ) / ( vBetaR + vBetaM ) ) * Fex, vec3( 1.0 / 2.0 ) ), clamp( pow( 1.0 - dot( up, vSunDirection ), 5.0 ), 0.0, 1.0 ) ); // nightsky float theta = acos( direction.y ); // elevation --> y-axis, [-pi/2, pi/2] float phi = atan( direction.z, direction.x ); // azimuth --> x-axis [-pi/2, pi/2] vec2 uv = vec2( phi, theta ) / vec2( 2.0 * pi, pi ) + vec2( 0.5, 0.0 ); vec3 L0 = vec3( 0.1 ) * Fex; // composition + solar disc float sundisk = smoothstep( sunAngularDiameterCos, sunAngularDiameterCos + 0.00002, cosTheta ); L0 += ( vSunE * 19000.0 * Fex ) * sundisk; vec3 texColor = ( Lin + L0 ) * 0.04 + vec3( 0.0, 0.0003, 0.00075 ); vec3 retColor = pow( texColor, vec3( 1.0 / ( 1.2 + ( 1.2 * vSunfade ) ) ) ); gl_FragColor = vec4( retColor, 1.0 ); #include #include }`};const[nF,iF]=Ge(!1),EM=yl(()=>{const i=new _d;return i.scale.setScalar(45e4),tF(e=>{const{uniforms:t}=i.material;t.turbidity.value=e.turbidity,t.rayleigh.value=e.rayleigh,t.mieCoefficient.value=e.mieCoefficient,t.mieDirectionalG.value=e.mieDirectionalG;const n=Math.PI*(e.inclination-.5),r=2*Math.PI*(e.azimuth-.5);Ot.x=Math.cos(r),Ot.y=Math.sin(r)*Math.sin(n),Ot.z=Math.sin(r)*Math.cos(n),t.sunPosition.value.copy(Ot)}),i});let TM=!1;iF(i=>{TM!==i&&(TM=i,i?$e.add(EM()):$e.remove(EM()))});const[Cf,T9]=Er(),[rF,AM]=Ge(!1),[sF,CM]=Ge(!1),[oF,PM]=Ge(!1),RM={defines:{DEPTH_PACKING:1,PERSPECTIVE_CAMERA:1},uniforms:{tColor:{value:null},tDepth:{value:null},focus:{value:1},aspect:{value:1},aperture:{value:.025},maxblur:{value:.01},nearClip:{value:1},farClip:{value:1e3}},vertexShader:` varying vec2 vUv; void main() { vUv = uv; gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); }`,fragmentShader:` #include varying vec2 vUv; uniform sampler2D tColor; uniform sampler2D tDepth; uniform float maxblur; // max blur amount uniform float aperture; // aperture - bigger values for shallower depth of field uniform float nearClip; uniform float farClip; uniform float focus; uniform float aspect; #include float getDepth( const in vec2 screenPosition ) { #if DEPTH_PACKING == 1 return unpackRGBAToDepth( texture2D( tDepth, screenPosition ) ); #else return texture2D( tDepth, screenPosition ).x; #endif } float getViewZ( const in float depth ) { #if PERSPECTIVE_CAMERA == 1 return perspectiveDepthToViewZ( depth, nearClip, farClip ); #else return orthographicDepthToViewZ( depth, nearClip, farClip ); #endif } void main() { vec2 aspectcorrect = vec2( 1.0, aspect ); float viewZ = getViewZ( getDepth( vUv ) ); float factor = ( focus + viewZ ); // viewZ is <= 0, so this is a difference equation vec2 dofblur = vec2 ( clamp( factor * aperture, -maxblur, maxblur ) ); vec2 dofblur9 = dofblur * 0.9; vec2 dofblur7 = dofblur * 0.7; vec2 dofblur4 = dofblur * 0.4; vec4 col = vec4( 0.0 ); col += texture2D( tColor, vUv.xy ); col += texture2D( tColor, vUv.xy + ( vec2( 0.0, 0.4 ) * aspectcorrect ) * dofblur ); col += texture2D( tColor, vUv.xy + ( vec2( 0.15, 0.37 ) * aspectcorrect ) * dofblur ); col += texture2D( tColor, vUv.xy + ( vec2( 0.29, 0.29 ) * aspectcorrect ) * dofblur ); col += texture2D( tColor, vUv.xy + ( vec2( -0.37, 0.15 ) * aspectcorrect ) * dofblur ); col += texture2D( tColor, vUv.xy + ( vec2( 0.40, 0.0 ) * aspectcorrect ) * dofblur ); col += texture2D( tColor, vUv.xy + ( vec2( 0.37, -0.15 ) * aspectcorrect ) * dofblur ); col += texture2D( tColor, vUv.xy + ( vec2( 0.29, -0.29 ) * aspectcorrect ) * dofblur ); col += texture2D( tColor, vUv.xy + ( vec2( -0.15, -0.37 ) * aspectcorrect ) * dofblur ); col += texture2D( tColor, vUv.xy + ( vec2( 0.0, -0.4 ) * aspectcorrect ) * dofblur ); col += texture2D( tColor, vUv.xy + ( vec2( -0.15, 0.37 ) * aspectcorrect ) * dofblur ); col += texture2D( tColor, vUv.xy + ( vec2( -0.29, 0.29 ) * aspectcorrect ) * dofblur ); col += texture2D( tColor, vUv.xy + ( vec2( 0.37, 0.15 ) * aspectcorrect ) * dofblur ); col += texture2D( tColor, vUv.xy + ( vec2( -0.4, 0.0 ) * aspectcorrect ) * dofblur ); col += texture2D( tColor, vUv.xy + ( vec2( -0.37, -0.15 ) * aspectcorrect ) * dofblur ); col += texture2D( tColor, vUv.xy + ( vec2( -0.29, -0.29 ) * aspectcorrect ) * dofblur ); col += texture2D( tColor, vUv.xy + ( vec2( 0.15, -0.37 ) * aspectcorrect ) * dofblur ); col += texture2D( tColor, vUv.xy + ( vec2( 0.15, 0.37 ) * aspectcorrect ) * dofblur9 ); col += texture2D( tColor, vUv.xy + ( vec2( -0.37, 0.15 ) * aspectcorrect ) * dofblur9 ); col += texture2D( tColor, vUv.xy + ( vec2( 0.37, -0.15 ) * aspectcorrect ) * dofblur9 ); col += texture2D( tColor, vUv.xy + ( vec2( -0.15, -0.37 ) * aspectcorrect ) * dofblur9 ); col += texture2D( tColor, vUv.xy + ( vec2( -0.15, 0.37 ) * aspectcorrect ) * dofblur9 ); col += texture2D( tColor, vUv.xy + ( vec2( 0.37, 0.15 ) * aspectcorrect ) * dofblur9 ); col += texture2D( tColor, vUv.xy + ( vec2( -0.37, -0.15 ) * aspectcorrect ) * dofblur9 ); col += texture2D( tColor, vUv.xy + ( vec2( 0.15, -0.37 ) * aspectcorrect ) * dofblur9 ); col += texture2D( tColor, vUv.xy + ( vec2( 0.29, 0.29 ) * aspectcorrect ) * dofblur7 ); col += texture2D( tColor, vUv.xy + ( vec2( 0.40, 0.0 ) * aspectcorrect ) * dofblur7 ); col += texture2D( tColor, vUv.xy + ( vec2( 0.29, -0.29 ) * aspectcorrect ) * dofblur7 ); col += texture2D( tColor, vUv.xy + ( vec2( 0.0, -0.4 ) * aspectcorrect ) * dofblur7 ); col += texture2D( tColor, vUv.xy + ( vec2( -0.29, 0.29 ) * aspectcorrect ) * dofblur7 ); col += texture2D( tColor, vUv.xy + ( vec2( -0.4, 0.0 ) * aspectcorrect ) * dofblur7 ); col += texture2D( tColor, vUv.xy + ( vec2( -0.29, -0.29 ) * aspectcorrect ) * dofblur7 ); col += texture2D( tColor, vUv.xy + ( vec2( 0.0, 0.4 ) * aspectcorrect ) * dofblur7 ); col += texture2D( tColor, vUv.xy + ( vec2( 0.29, 0.29 ) * aspectcorrect ) * dofblur4 ); col += texture2D( tColor, vUv.xy + ( vec2( 0.4, 0.0 ) * aspectcorrect ) * dofblur4 ); col += texture2D( tColor, vUv.xy + ( vec2( 0.29, -0.29 ) * aspectcorrect ) * dofblur4 ); col += texture2D( tColor, vUv.xy + ( vec2( 0.0, -0.4 ) * aspectcorrect ) * dofblur4 ); col += texture2D( tColor, vUv.xy + ( vec2( -0.29, 0.29 ) * aspectcorrect ) * dofblur4 ); col += texture2D( tColor, vUv.xy + ( vec2( -0.4, 0.0 ) * aspectcorrect ) * dofblur4 ); col += texture2D( tColor, vUv.xy + ( vec2( -0.29, -0.29 ) * aspectcorrect ) * dofblur4 ); col += texture2D( tColor, vUv.xy + ( vec2( 0.0, 0.4 ) * aspectcorrect ) * dofblur4 ); gl_FragColor = col / 41.0; gl_FragColor.a = 1.0; }`};class aF extends zs{constructor(e,t,n){super(),this.scene=e,this.camera=t;const r=n.focus!==void 0?n.focus:1,s=n.aspect!==void 0?n.aspect:t.aspect,o=n.aperture!==void 0?n.aperture:.025,l=n.maxblur!==void 0?n.maxblur:1,h=n.width||window.innerWidth||1,d=n.height||window.innerHeight||1;this.renderTargetDepth=new Yt(h,d,{minFilter:Xt,magFilter:Xt}),this.renderTargetDepth.texture.name="BokehPass.depth",this.materialDepth=new lu,this.materialDepth.depthPacking=Bm,this.materialDepth.blending=rn,RM===void 0&&console.error("THREE.BokehPass relies on BokehShader");const f=RM,g=Qn.clone(f.uniforms);g.tDepth.value=this.renderTargetDepth.texture,g.focus.value=r,g.aspect.value=s,g.aperture.value=o,g.maxblur.value=l,g.nearClip.value=t.near,g.farClip.value=t.far,this.materialBokeh=new kt({defines:Object.assign({},f.defines),uniforms:g,vertexShader:f.vertexShader,fragmentShader:f.fragmentShader}),this.uniforms=g,this.needsSwap=!1,this.fsQuad=new Ml(this.materialBokeh),this._oldClearColor=new Pe}render(e,t,n){this.scene.overrideMaterial=this.materialDepth,e.getClearColor(this._oldClearColor);const r=e.getClearAlpha(),s=e.autoClear;e.autoClear=!1,e.setClearColor(16777215),e.setClearAlpha(1),e.setRenderTarget(this.renderTargetDepth),e.clear(),e.render(this.scene,this.camera),this.uniforms.tColor.value=n.texture,this.uniforms.nearClip.value=this.camera.near,this.uniforms.farClip.value=this.camera.far,this.renderToScreen?(e.setRenderTarget(null),this.fsQuad.render(e)):(e.setRenderTarget(t),e.clear(),this.fsQuad.render(e)),this.scene.overrideMaterial=null,e.setClearColor(this._oldClearColor),e.setClearAlpha(r),e.autoClear=s}}const ib=new aF($e,Ze(),{});Ze(i=>ib.camera=i);const rb=ib.uniforms;jU(i=>rb.focus.value=i);WU(i=>rb.aperture.value=i);XU(i=>rb.maxblur.value=i);const lF=new vm(new kt({uniforms:{baseTexture:{value:null},bloomTexture:{value:ya.renderTarget2.texture}},vertexShader:` varying vec2 vUv; void main() { vUv = uv; gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0); } `,fragmentShader:` uniform sampler2D baseTexture; uniform sampler2D bloomTexture; varying vec2 vUv; void main() { gl_FragColor = texture2D(baseTexture, vUv) + texture2D(bloomTexture, vUv); } `,defines:{}}),"baseTexture"),lh={defines:{NUM_SAMPLES:7,NUM_RINGS:4,NORMAL_TEXTURE:0,DIFFUSE_TEXTURE:0,DEPTH_PACKING:1,PERSPECTIVE_CAMERA:1},uniforms:{tDepth:{value:null},tDiffuse:{value:null},tNormal:{value:null},size:{value:new ae(512,512)},cameraNear:{value:1},cameraFar:{value:100},cameraProjectionMatrix:{value:new Qe},cameraInverseProjectionMatrix:{value:new Qe},scale:{value:1},intensity:{value:.1},bias:{value:.5},minResolution:{value:0},kernelRadius:{value:100},randomSeed:{value:0}},vertexShader:` varying vec2 vUv; void main() { vUv = uv; gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); }`,fragmentShader:` #include varying vec2 vUv; #if DIFFUSE_TEXTURE == 1 uniform sampler2D tDiffuse; #endif uniform sampler2D tDepth; #if NORMAL_TEXTURE == 1 uniform sampler2D tNormal; #endif uniform float cameraNear; uniform float cameraFar; uniform mat4 cameraProjectionMatrix; uniform mat4 cameraInverseProjectionMatrix; uniform float scale; uniform float intensity; uniform float bias; uniform float kernelRadius; uniform float minResolution; uniform vec2 size; uniform float randomSeed; // RGBA depth #include vec4 getDefaultColor( const in vec2 screenPosition ) { #if DIFFUSE_TEXTURE == 1 return texture2D( tDiffuse, vUv ); #else return vec4( 1.0 ); #endif } float getDepth( const in vec2 screenPosition ) { #if DEPTH_PACKING == 1 return unpackRGBAToDepth( texture2D( tDepth, screenPosition ) ); #else return texture2D( tDepth, screenPosition ).x; #endif } float getViewZ( const in float depth ) { #if PERSPECTIVE_CAMERA == 1 return perspectiveDepthToViewZ( depth, cameraNear, cameraFar ); #else return orthographicDepthToViewZ( depth, cameraNear, cameraFar ); #endif } vec3 getViewPosition( const in vec2 screenPosition, const in float depth, const in float viewZ ) { float clipW = cameraProjectionMatrix[2][3] * viewZ + cameraProjectionMatrix[3][3]; vec4 clipPosition = vec4( ( vec3( screenPosition, depth ) - 0.5 ) * 2.0, 1.0 ); clipPosition *= clipW; // unprojection. return ( cameraInverseProjectionMatrix * clipPosition ).xyz; } vec3 getViewNormal( const in vec3 viewPosition, const in vec2 screenPosition ) { #if NORMAL_TEXTURE == 1 return unpackRGBToNormal( texture2D( tNormal, screenPosition ).xyz ); #else return normalize( cross( dFdx( viewPosition ), dFdy( viewPosition ) ) ); #endif } float scaleDividedByCameraFar; float minResolutionMultipliedByCameraFar; float getOcclusion( const in vec3 centerViewPosition, const in vec3 centerViewNormal, const in vec3 sampleViewPosition ) { vec3 viewDelta = sampleViewPosition - centerViewPosition; float viewDistance = length( viewDelta ); float scaledScreenDistance = scaleDividedByCameraFar * viewDistance; return max(0.0, (dot(centerViewNormal, viewDelta) - minResolutionMultipliedByCameraFar) / scaledScreenDistance - bias) / (1.0 + pow2( scaledScreenDistance ) ); } // moving costly divides into consts const float ANGLE_STEP = PI2 * float( NUM_RINGS ) / float( NUM_SAMPLES ); const float INV_NUM_SAMPLES = 1.0 / float( NUM_SAMPLES ); float getAmbientOcclusion( const in vec3 centerViewPosition ) { // precompute some variables require in getOcclusion. scaleDividedByCameraFar = scale / cameraFar; minResolutionMultipliedByCameraFar = minResolution * cameraFar; vec3 centerViewNormal = getViewNormal( centerViewPosition, vUv ); // jsfiddle that shows sample pattern: https://jsfiddle.net/a16ff1p7/ float angle = rand( vUv + randomSeed ) * PI2; vec2 radius = vec2( kernelRadius * INV_NUM_SAMPLES ) / size; vec2 radiusStep = radius; float occlusionSum = 0.0; float weightSum = 0.0; for( int i = 0; i < NUM_SAMPLES; i ++ ) { vec2 sampleUv = vUv + vec2( cos( angle ), sin( angle ) ) * radius; radius += radiusStep; angle += ANGLE_STEP; float sampleDepth = getDepth( sampleUv ); if( sampleDepth >= ( 1.0 - EPSILON ) ) { continue; } float sampleViewZ = getViewZ( sampleDepth ); vec3 sampleViewPosition = getViewPosition( sampleUv, sampleDepth, sampleViewZ ); occlusionSum += getOcclusion( centerViewPosition, centerViewNormal, sampleViewPosition ); weightSum += 1.0; } if( weightSum == 0.0 ) discard; return occlusionSum * ( intensity / weightSum ); } void main() { float centerDepth = getDepth( vUv ); if( centerDepth >= ( 1.0 - EPSILON ) ) { discard; } float centerViewZ = getViewZ( centerDepth ); vec3 viewPosition = getViewPosition( vUv, centerDepth, centerViewZ ); float ambientOcclusion = getAmbientOcclusion( viewPosition ); gl_FragColor = getDefaultColor( vUv ); gl_FragColor.xyz *= 1.0 - ambientOcclusion; }`},ho={defines:{KERNEL_RADIUS:4,DEPTH_PACKING:1,PERSPECTIVE_CAMERA:1},uniforms:{tDiffuse:{value:null},size:{value:new ae(512,512)},sampleUvOffsets:{value:[new ae(0,0)]},sampleWeights:{value:[1]},tDepth:{value:null},cameraNear:{value:10},cameraFar:{value:1e3},depthCutoff:{value:10}},vertexShader:` #include uniform vec2 size; varying vec2 vUv; varying vec2 vInvSize; void main() { vUv = uv; vInvSize = 1.0 / size; gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); }`,fragmentShader:` #include #include uniform sampler2D tDiffuse; uniform sampler2D tDepth; uniform float cameraNear; uniform float cameraFar; uniform float depthCutoff; uniform vec2 sampleUvOffsets[ KERNEL_RADIUS + 1 ]; uniform float sampleWeights[ KERNEL_RADIUS + 1 ]; varying vec2 vUv; varying vec2 vInvSize; float getDepth( const in vec2 screenPosition ) { #if DEPTH_PACKING == 1 return unpackRGBAToDepth( texture2D( tDepth, screenPosition ) ); #else return texture2D( tDepth, screenPosition ).x; #endif } float getViewZ( const in float depth ) { #if PERSPECTIVE_CAMERA == 1 return perspectiveDepthToViewZ( depth, cameraNear, cameraFar ); #else return orthographicDepthToViewZ( depth, cameraNear, cameraFar ); #endif } void main() { float depth = getDepth( vUv ); if( depth >= ( 1.0 - EPSILON ) ) { discard; } float centerViewZ = -getViewZ( depth ); bool rBreak = false, lBreak = false; float weightSum = sampleWeights[0]; vec4 diffuseSum = texture2D( tDiffuse, vUv ) * weightSum; for( int i = 1; i <= KERNEL_RADIUS; i ++ ) { float sampleWeight = sampleWeights[i]; vec2 sampleUvOffset = sampleUvOffsets[i] * vInvSize; vec2 sampleUv = vUv + sampleUvOffset; float viewZ = -getViewZ( getDepth( sampleUv ) ); if( abs( viewZ - centerViewZ ) > depthCutoff ) rBreak = true; if( ! rBreak ) { diffuseSum += texture2D( tDiffuse, sampleUv ) * sampleWeight; weightSum += sampleWeight; } sampleUv = vUv - sampleUvOffset; viewZ = -getViewZ( getDepth( sampleUv ) ); if( abs( viewZ - centerViewZ ) > depthCutoff ) lBreak = true; if( ! lBreak ) { diffuseSum += texture2D( tDiffuse, sampleUv ) * sampleWeight; weightSum += sampleWeight; } } gl_FragColor = diffuseSum / weightSum; }`},_m={createSampleWeights:function(i,e){const t=[];for(let n=0;n<=i;n++)t.push(cF(n,e));return t},createSampleOffsets:function(i,e){const t=[];for(let n=0;n<=i;n++)t.push(e.clone().multiplyScalar(n));return t},configure:function(i,e,t,n){i.defines.KERNEL_RADIUS=e,i.uniforms.sampleUvOffsets.value=_m.createSampleOffsets(e,n),i.uniforms.sampleWeights.value=_m.createSampleWeights(e,t),i.needsUpdate=!0}};function cF(i,e){return Math.exp(-(i*i)/(2*(e*e)))/(Math.sqrt(2*Math.PI)*e)}const Pf={uniforms:{tDiffuse:{value:null},opacity:{value:1}},vertexShader:` varying vec2 vUv; void main() { vUv = uv; gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); }`,fragmentShader:` uniform float opacity; uniform sampler2D tDiffuse; varying vec2 vUv; #include void main() { float depth = 1.0 - unpackRGBAToDepth( texture2D( tDiffuse, vUv ) ); gl_FragColor = vec4( vec3( depth ), opacity ); }`};class fA extends zs{constructor(e,t,n=!1,r=!1,s=new ae(256,256)){super(),this.scene=e,this.camera=t,this.clear=!0,this.needsSwap=!1,this.supportsDepthTextureExtension=n,this.supportsNormalTexture=r,this.originalClearColor=new Pe,this._oldClearColor=new Pe,this.oldClearAlpha=1,this.params={output:0,saoBias:.5,saoIntensity:.18,saoScale:1,saoKernelRadius:100,saoMinResolution:0,saoBlur:!0,saoBlurRadius:8,saoBlurStdDev:4,saoBlurDepthCutoff:.01},this.resolution=new ae(s.x,s.y),this.saoRenderTarget=new Yt(this.resolution.x,this.resolution.y),this.blurIntermediateRenderTarget=this.saoRenderTarget.clone(),this.beautyRenderTarget=this.saoRenderTarget.clone(),this.normalRenderTarget=new Yt(this.resolution.x,this.resolution.y,{minFilter:Xt,magFilter:Xt}),this.depthRenderTarget=this.normalRenderTarget.clone();let o;this.supportsDepthTextureExtension&&(o=new Hm,o.type=pl,this.beautyRenderTarget.depthTexture=o,this.beautyRenderTarget.depthBuffer=!0),this.depthMaterial=new lu,this.depthMaterial.depthPacking=Bm,this.depthMaterial.blending=rn,this.normalMaterial=new Jm,this.normalMaterial.blending=rn,lh===void 0&&console.error("THREE.SAOPass relies on SAOShader"),this.saoMaterial=new kt({defines:Object.assign({},lh.defines),fragmentShader:lh.fragmentShader,vertexShader:lh.vertexShader,uniforms:Qn.clone(lh.uniforms)}),this.saoMaterial.extensions.derivatives=!0,this.saoMaterial.defines.DEPTH_PACKING=this.supportsDepthTextureExtension?0:1,this.saoMaterial.defines.NORMAL_TEXTURE=this.supportsNormalTexture?1:0,this.saoMaterial.defines.PERSPECTIVE_CAMERA=this.camera.isPerspectiveCamera?1:0,this.saoMaterial.uniforms.tDepth.value=this.supportsDepthTextureExtension?o:this.depthRenderTarget.texture,this.saoMaterial.uniforms.tNormal.value=this.normalRenderTarget.texture,this.saoMaterial.uniforms.size.value.set(this.resolution.x,this.resolution.y),this.saoMaterial.uniforms.cameraInverseProjectionMatrix.value.copy(this.camera.projectionMatrixInverse),this.saoMaterial.uniforms.cameraProjectionMatrix.value=this.camera.projectionMatrix,this.saoMaterial.blending=rn,ho===void 0&&console.error("THREE.SAOPass relies on DepthLimitedBlurShader"),this.vBlurMaterial=new kt({uniforms:Qn.clone(ho.uniforms),defines:Object.assign({},ho.defines),vertexShader:ho.vertexShader,fragmentShader:ho.fragmentShader}),this.vBlurMaterial.defines.DEPTH_PACKING=this.supportsDepthTextureExtension?0:1,this.vBlurMaterial.defines.PERSPECTIVE_CAMERA=this.camera.isPerspectiveCamera?1:0,this.vBlurMaterial.uniforms.tDiffuse.value=this.saoRenderTarget.texture,this.vBlurMaterial.uniforms.tDepth.value=this.supportsDepthTextureExtension?o:this.depthRenderTarget.texture,this.vBlurMaterial.uniforms.size.value.set(this.resolution.x,this.resolution.y),this.vBlurMaterial.blending=rn,this.hBlurMaterial=new kt({uniforms:Qn.clone(ho.uniforms),defines:Object.assign({},ho.defines),vertexShader:ho.vertexShader,fragmentShader:ho.fragmentShader}),this.hBlurMaterial.defines.DEPTH_PACKING=this.supportsDepthTextureExtension?0:1,this.hBlurMaterial.defines.PERSPECTIVE_CAMERA=this.camera.isPerspectiveCamera?1:0,this.hBlurMaterial.uniforms.tDiffuse.value=this.blurIntermediateRenderTarget.texture,this.hBlurMaterial.uniforms.tDepth.value=this.supportsDepthTextureExtension?o:this.depthRenderTarget.texture,this.hBlurMaterial.uniforms.size.value.set(this.resolution.x,this.resolution.y),this.hBlurMaterial.blending=rn,_r===void 0&&console.error("THREE.SAOPass relies on CopyShader"),this.materialCopy=new kt({uniforms:Qn.clone(_r.uniforms),vertexShader:_r.vertexShader,fragmentShader:_r.fragmentShader,blending:rn}),this.materialCopy.transparent=!0,this.materialCopy.depthTest=!1,this.materialCopy.depthWrite=!1,this.materialCopy.blending=Fy,this.materialCopy.blendSrc=NE,this.materialCopy.blendDst=Vy,this.materialCopy.blendEquation=Es,this.materialCopy.blendSrcAlpha=kE,this.materialCopy.blendDstAlpha=Vy,this.materialCopy.blendEquationAlpha=Es,Pf===void 0&&console.error("THREE.SAOPass relies on UnpackDepthRGBAShader"),this.depthCopy=new kt({uniforms:Qn.clone(Pf.uniforms),vertexShader:Pf.vertexShader,fragmentShader:Pf.fragmentShader,blending:rn}),this.fsQuad=new Ml(null)}render(e,t,n){if(this.renderToScreen&&(this.materialCopy.blending=rn,this.materialCopy.uniforms.tDiffuse.value=n.texture,this.materialCopy.needsUpdate=!0,this.renderPass(e,this.materialCopy,null)),this.params.output===1)return;e.getClearColor(this._oldClearColor),this.oldClearAlpha=e.getClearAlpha();const r=e.autoClear;e.autoClear=!1,e.setRenderTarget(this.depthRenderTarget),e.clear(),this.saoMaterial.uniforms.bias.value=this.params.saoBias,this.saoMaterial.uniforms.intensity.value=this.params.saoIntensity,this.saoMaterial.uniforms.scale.value=this.params.saoScale,this.saoMaterial.uniforms.kernelRadius.value=this.params.saoKernelRadius,this.saoMaterial.uniforms.minResolution.value=this.params.saoMinResolution,this.saoMaterial.uniforms.cameraNear.value=this.camera.near,this.saoMaterial.uniforms.cameraFar.value=this.camera.far;const s=this.params.saoBlurDepthCutoff*(this.camera.far-this.camera.near);this.vBlurMaterial.uniforms.depthCutoff.value=s,this.hBlurMaterial.uniforms.depthCutoff.value=s,this.vBlurMaterial.uniforms.cameraNear.value=this.camera.near,this.vBlurMaterial.uniforms.cameraFar.value=this.camera.far,this.hBlurMaterial.uniforms.cameraNear.value=this.camera.near,this.hBlurMaterial.uniforms.cameraFar.value=this.camera.far,this.params.saoBlurRadius=Math.floor(this.params.saoBlurRadius),(this.prevStdDev!==this.params.saoBlurStdDev||this.prevNumSamples!==this.params.saoBlurRadius)&&(_m.configure(this.vBlurMaterial,this.params.saoBlurRadius,this.params.saoBlurStdDev,new ae(0,1)),_m.configure(this.hBlurMaterial,this.params.saoBlurRadius,this.params.saoBlurStdDev,new ae(1,0)),this.prevStdDev=this.params.saoBlurStdDev,this.prevNumSamples=this.params.saoBlurRadius),e.setClearColor(0),e.setRenderTarget(this.beautyRenderTarget),e.clear(),e.render(this.scene,this.camera),this.supportsDepthTextureExtension||this.renderOverride(e,this.depthMaterial,this.depthRenderTarget,0,1),this.supportsNormalTexture&&this.renderOverride(e,this.normalMaterial,this.normalRenderTarget,7829503,1),this.renderPass(e,this.saoMaterial,this.saoRenderTarget,16777215,1),this.params.saoBlur&&(this.renderPass(e,this.vBlurMaterial,this.blurIntermediateRenderTarget,16777215,1),this.renderPass(e,this.hBlurMaterial,this.saoRenderTarget,16777215,1));let o=this.materialCopy;this.params.output===3?this.supportsDepthTextureExtension?(this.materialCopy.uniforms.tDiffuse.value=this.beautyRenderTarget.depthTexture,this.materialCopy.needsUpdate=!0):(this.depthCopy.uniforms.tDiffuse.value=this.depthRenderTarget.texture,this.depthCopy.needsUpdate=!0,o=this.depthCopy):this.params.output===4?(this.materialCopy.uniforms.tDiffuse.value=this.normalRenderTarget.texture,this.materialCopy.needsUpdate=!0):(this.materialCopy.uniforms.tDiffuse.value=this.saoRenderTarget.texture,this.materialCopy.needsUpdate=!0),this.params.output===0?o.blending=Fy:o.blending=rn,this.renderPass(e,o,this.renderToScreen?null:n),e.setClearColor(this._oldClearColor,this.oldClearAlpha),e.autoClear=r}renderPass(e,t,n,r,s){e.getClearColor(this.originalClearColor);const o=e.getClearAlpha(),l=e.autoClear;e.setRenderTarget(n),e.autoClear=!1,r!=null&&(e.setClearColor(r),e.setClearAlpha(s||0),e.clear()),this.fsQuad.material=t,this.fsQuad.render(e),e.autoClear=l,e.setClearColor(this.originalClearColor),e.setClearAlpha(o)}renderOverride(e,t,n,r,s){e.getClearColor(this.originalClearColor);const o=e.getClearAlpha(),l=e.autoClear;e.setRenderTarget(n),e.autoClear=!1,r=t.clearColor||r,s=t.clearAlpha||s,r!=null&&(e.setClearColor(r),e.setClearAlpha(s||0),e.clear()),this.scene.overrideMaterial=t,e.render(this.scene,this.camera),this.scene.overrideMaterial=null,e.autoClear=l,e.setClearColor(this.originalClearColor),e.setClearAlpha(o)}setSize(e,t){this.beautyRenderTarget.setSize(e,t),this.saoRenderTarget.setSize(e,t),this.blurIntermediateRenderTarget.setSize(e,t),this.normalRenderTarget.setSize(e,t),this.depthRenderTarget.setSize(e,t),this.saoMaterial.uniforms.size.value.set(e,t),this.saoMaterial.uniforms.cameraInverseProjectionMatrix.value.copy(this.camera.projectionMatrixInverse),this.saoMaterial.uniforms.cameraProjectionMatrix.value=this.camera.projectionMatrix,this.saoMaterial.needsUpdate=!0,this.vBlurMaterial.uniforms.size.value.set(e,t),this.vBlurMaterial.needsUpdate=!0,this.hBlurMaterial.uniforms.size.value.set(e,t),this.hBlurMaterial.needsUpdate=!0}}fA.OUTPUT={Beauty:1,Default:0,SAO:2,Depth:3,Normal:4};const xd=new fA($e,Ze(),!1,!0);xd.params.saoKernelRadius=80;xd.params.saoBlurStdDev=5;dm(i=>xd.params.saoScale=i==="light"?3e3:2e3);Ze(i=>xd.camera=i);const ch={defines:{SMAA_THRESHOLD:"0.1"},uniforms:{tDiffuse:{value:null},resolution:{value:new ae(1/1024,1/512)}},vertexShader:` uniform vec2 resolution; varying vec2 vUv; varying vec4 vOffset[ 3 ]; void SMAAEdgeDetectionVS( vec2 texcoord ) { vOffset[ 0 ] = texcoord.xyxy + resolution.xyxy * vec4( -1.0, 0.0, 0.0, 1.0 ); // WebGL port note: Changed sign in W component vOffset[ 1 ] = texcoord.xyxy + resolution.xyxy * vec4( 1.0, 0.0, 0.0, -1.0 ); // WebGL port note: Changed sign in W component vOffset[ 2 ] = texcoord.xyxy + resolution.xyxy * vec4( -2.0, 0.0, 0.0, 2.0 ); // WebGL port note: Changed sign in W component } void main() { vUv = uv; SMAAEdgeDetectionVS( vUv ); gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); }`,fragmentShader:` uniform sampler2D tDiffuse; varying vec2 vUv; varying vec4 vOffset[ 3 ]; vec4 SMAAColorEdgeDetectionPS( vec2 texcoord, vec4 offset[3], sampler2D colorTex ) { vec2 threshold = vec2( SMAA_THRESHOLD, SMAA_THRESHOLD ); // Calculate color deltas: vec4 delta; vec3 C = texture2D( colorTex, texcoord ).rgb; vec3 Cleft = texture2D( colorTex, offset[0].xy ).rgb; vec3 t = abs( C - Cleft ); delta.x = max( max( t.r, t.g ), t.b ); vec3 Ctop = texture2D( colorTex, offset[0].zw ).rgb; t = abs( C - Ctop ); delta.y = max( max( t.r, t.g ), t.b ); // We do the usual threshold: vec2 edges = step( threshold, delta.xy ); // Then discard if there is no edge: if ( dot( edges, vec2( 1.0, 1.0 ) ) == 0.0 ) discard; // Calculate right and bottom deltas: vec3 Cright = texture2D( colorTex, offset[1].xy ).rgb; t = abs( C - Cright ); delta.z = max( max( t.r, t.g ), t.b ); vec3 Cbottom = texture2D( colorTex, offset[1].zw ).rgb; t = abs( C - Cbottom ); delta.w = max( max( t.r, t.g ), t.b ); // Calculate the maximum delta in the direct neighborhood: float maxDelta = max( max( max( delta.x, delta.y ), delta.z ), delta.w ); // Calculate left-left and top-top deltas: vec3 Cleftleft = texture2D( colorTex, offset[2].xy ).rgb; t = abs( C - Cleftleft ); delta.z = max( max( t.r, t.g ), t.b ); vec3 Ctoptop = texture2D( colorTex, offset[2].zw ).rgb; t = abs( C - Ctoptop ); delta.w = max( max( t.r, t.g ), t.b ); // Calculate the final maximum delta: maxDelta = max( max( maxDelta, delta.z ), delta.w ); // Local contrast adaptation in action: edges.xy *= step( 0.5 * maxDelta, delta.xy ); return vec4( edges, 0.0, 0.0 ); } void main() { gl_FragColor = SMAAColorEdgeDetectionPS( vUv, vOffset, tDiffuse ); }`},Rf={defines:{SMAA_MAX_SEARCH_STEPS:"8",SMAA_AREATEX_MAX_DISTANCE:"16",SMAA_AREATEX_PIXEL_SIZE:"( 1.0 / vec2( 160.0, 560.0 ) )",SMAA_AREATEX_SUBTEX_SIZE:"( 1.0 / 7.0 )"},uniforms:{tDiffuse:{value:null},tArea:{value:null},tSearch:{value:null},resolution:{value:new ae(1/1024,1/512)}},vertexShader:` uniform vec2 resolution; varying vec2 vUv; varying vec4 vOffset[ 3 ]; varying vec2 vPixcoord; void SMAABlendingWeightCalculationVS( vec2 texcoord ) { vPixcoord = texcoord / resolution; // We will use these offsets for the searches later on (see @PSEUDO_GATHER4): vOffset[ 0 ] = texcoord.xyxy + resolution.xyxy * vec4( -0.25, 0.125, 1.25, 0.125 ); // WebGL port note: Changed sign in Y and W components vOffset[ 1 ] = texcoord.xyxy + resolution.xyxy * vec4( -0.125, 0.25, -0.125, -1.25 ); // WebGL port note: Changed sign in Y and W components // And these for the searches, they indicate the ends of the loops: vOffset[ 2 ] = vec4( vOffset[ 0 ].xz, vOffset[ 1 ].yw ) + vec4( -2.0, 2.0, -2.0, 2.0 ) * resolution.xxyy * float( SMAA_MAX_SEARCH_STEPS ); } void main() { vUv = uv; SMAABlendingWeightCalculationVS( vUv ); gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); }`,fragmentShader:` #define SMAASampleLevelZeroOffset( tex, coord, offset ) texture2D( tex, coord + float( offset ) * resolution, 0.0 ) uniform sampler2D tDiffuse; uniform sampler2D tArea; uniform sampler2D tSearch; uniform vec2 resolution; varying vec2 vUv; varying vec4 vOffset[3]; varying vec2 vPixcoord; #if __VERSION__ == 100 vec2 round( vec2 x ) { return sign( x ) * floor( abs( x ) + 0.5 ); } #endif float SMAASearchLength( sampler2D searchTex, vec2 e, float bias, float scale ) { // Not required if searchTex accesses are set to point: // float2 SEARCH_TEX_PIXEL_SIZE = 1.0 / float2(66.0, 33.0); // e = float2(bias, 0.0) + 0.5 * SEARCH_TEX_PIXEL_SIZE + // e * float2(scale, 1.0) * float2(64.0, 32.0) * SEARCH_TEX_PIXEL_SIZE; e.r = bias + e.r * scale; return 255.0 * texture2D( searchTex, e, 0.0 ).r; } float SMAASearchXLeft( sampler2D edgesTex, sampler2D searchTex, vec2 texcoord, float end ) { /** * @PSEUDO_GATHER4 * This texcoord has been offset by (-0.25, -0.125) in the vertex shader to * sample between edge, thus fetching four edges in a row. * Sampling with different offsets in each direction allows to disambiguate * which edges are active from the four fetched ones. */ vec2 e = vec2( 0.0, 1.0 ); for ( int i = 0; i < SMAA_MAX_SEARCH_STEPS; i ++ ) { // WebGL port note: Changed while to for e = texture2D( edgesTex, texcoord, 0.0 ).rg; texcoord -= vec2( 2.0, 0.0 ) * resolution; if ( ! ( texcoord.x > end && e.g > 0.8281 && e.r == 0.0 ) ) break; } // We correct the previous (-0.25, -0.125) offset we applied: texcoord.x += 0.25 * resolution.x; // The searches are bias by 1, so adjust the coords accordingly: texcoord.x += resolution.x; // Disambiguate the length added by the last step: texcoord.x += 2.0 * resolution.x; // Undo last step texcoord.x -= resolution.x * SMAASearchLength(searchTex, e, 0.0, 0.5); return texcoord.x; } float SMAASearchXRight( sampler2D edgesTex, sampler2D searchTex, vec2 texcoord, float end ) { vec2 e = vec2( 0.0, 1.0 ); for ( int i = 0; i < SMAA_MAX_SEARCH_STEPS; i ++ ) { // WebGL port note: Changed while to for e = texture2D( edgesTex, texcoord, 0.0 ).rg; texcoord += vec2( 2.0, 0.0 ) * resolution; if ( ! ( texcoord.x < end && e.g > 0.8281 && e.r == 0.0 ) ) break; } texcoord.x -= 0.25 * resolution.x; texcoord.x -= resolution.x; texcoord.x -= 2.0 * resolution.x; texcoord.x += resolution.x * SMAASearchLength( searchTex, e, 0.5, 0.5 ); return texcoord.x; } float SMAASearchYUp( sampler2D edgesTex, sampler2D searchTex, vec2 texcoord, float end ) { vec2 e = vec2( 1.0, 0.0 ); for ( int i = 0; i < SMAA_MAX_SEARCH_STEPS; i ++ ) { // WebGL port note: Changed while to for e = texture2D( edgesTex, texcoord, 0.0 ).rg; texcoord += vec2( 0.0, 2.0 ) * resolution; // WebGL port note: Changed sign if ( ! ( texcoord.y > end && e.r > 0.8281 && e.g == 0.0 ) ) break; } texcoord.y -= 0.25 * resolution.y; // WebGL port note: Changed sign texcoord.y -= resolution.y; // WebGL port note: Changed sign texcoord.y -= 2.0 * resolution.y; // WebGL port note: Changed sign texcoord.y += resolution.y * SMAASearchLength( searchTex, e.gr, 0.0, 0.5 ); // WebGL port note: Changed sign return texcoord.y; } float SMAASearchYDown( sampler2D edgesTex, sampler2D searchTex, vec2 texcoord, float end ) { vec2 e = vec2( 1.0, 0.0 ); for ( int i = 0; i < SMAA_MAX_SEARCH_STEPS; i ++ ) { // WebGL port note: Changed while to for e = texture2D( edgesTex, texcoord, 0.0 ).rg; texcoord -= vec2( 0.0, 2.0 ) * resolution; // WebGL port note: Changed sign if ( ! ( texcoord.y < end && e.r > 0.8281 && e.g == 0.0 ) ) break; } texcoord.y += 0.25 * resolution.y; // WebGL port note: Changed sign texcoord.y += resolution.y; // WebGL port note: Changed sign texcoord.y += 2.0 * resolution.y; // WebGL port note: Changed sign texcoord.y -= resolution.y * SMAASearchLength( searchTex, e.gr, 0.5, 0.5 ); // WebGL port note: Changed sign return texcoord.y; } vec2 SMAAArea( sampler2D areaTex, vec2 dist, float e1, float e2, float offset ) { // Rounding prevents precision errors of bilinear filtering: vec2 texcoord = float( SMAA_AREATEX_MAX_DISTANCE ) * round( 4.0 * vec2( e1, e2 ) ) + dist; // We do a scale and bias for mapping to texel space: texcoord = SMAA_AREATEX_PIXEL_SIZE * texcoord + ( 0.5 * SMAA_AREATEX_PIXEL_SIZE ); // Move to proper place, according to the subpixel offset: texcoord.y += SMAA_AREATEX_SUBTEX_SIZE * offset; return texture2D( areaTex, texcoord, 0.0 ).rg; } vec4 SMAABlendingWeightCalculationPS( vec2 texcoord, vec2 pixcoord, vec4 offset[ 3 ], sampler2D edgesTex, sampler2D areaTex, sampler2D searchTex, ivec4 subsampleIndices ) { vec4 weights = vec4( 0.0, 0.0, 0.0, 0.0 ); vec2 e = texture2D( edgesTex, texcoord ).rg; if ( e.g > 0.0 ) { // Edge at north vec2 d; // Find the distance to the left: vec2 coords; coords.x = SMAASearchXLeft( edgesTex, searchTex, offset[ 0 ].xy, offset[ 2 ].x ); coords.y = offset[ 1 ].y; // offset[1].y = texcoord.y - 0.25 * resolution.y (@CROSSING_OFFSET) d.x = coords.x; // Now fetch the left crossing edges, two at a time using bilinear // filtering. Sampling at -0.25 (see @CROSSING_OFFSET) enables to // discern what value each edge has: float e1 = texture2D( edgesTex, coords, 0.0 ).r; // Find the distance to the right: coords.x = SMAASearchXRight( edgesTex, searchTex, offset[ 0 ].zw, offset[ 2 ].y ); d.y = coords.x; // We want the distances to be in pixel units (doing this here allow to // better interleave arithmetic and memory accesses): d = d / resolution.x - pixcoord.x; // SMAAArea below needs a sqrt, as the areas texture is compressed // quadratically: vec2 sqrt_d = sqrt( abs( d ) ); // Fetch the right crossing edges: coords.y -= 1.0 * resolution.y; // WebGL port note: Added float e2 = SMAASampleLevelZeroOffset( edgesTex, coords, ivec2( 1, 0 ) ).r; // Ok, we know how this pattern looks like, now it is time for getting // the actual area: weights.rg = SMAAArea( areaTex, sqrt_d, e1, e2, float( subsampleIndices.y ) ); } if ( e.r > 0.0 ) { // Edge at west vec2 d; // Find the distance to the top: vec2 coords; coords.y = SMAASearchYUp( edgesTex, searchTex, offset[ 1 ].xy, offset[ 2 ].z ); coords.x = offset[ 0 ].x; // offset[1].x = texcoord.x - 0.25 * resolution.x; d.x = coords.y; // Fetch the top crossing edges: float e1 = texture2D( edgesTex, coords, 0.0 ).g; // Find the distance to the bottom: coords.y = SMAASearchYDown( edgesTex, searchTex, offset[ 1 ].zw, offset[ 2 ].w ); d.y = coords.y; // We want the distances to be in pixel units: d = d / resolution.y - pixcoord.y; // SMAAArea below needs a sqrt, as the areas texture is compressed // quadratically: vec2 sqrt_d = sqrt( abs( d ) ); // Fetch the bottom crossing edges: coords.y -= 1.0 * resolution.y; // WebGL port note: Added float e2 = SMAASampleLevelZeroOffset( edgesTex, coords, ivec2( 0, 1 ) ).g; // Get the area for this direction: weights.ba = SMAAArea( areaTex, sqrt_d, e1, e2, float( subsampleIndices.x ) ); } return weights; } void main() { gl_FragColor = SMAABlendingWeightCalculationPS( vUv, vPixcoord, vOffset, tDiffuse, tArea, tSearch, ivec4( 0.0 ) ); }`},Cy={uniforms:{tDiffuse:{value:null},tColor:{value:null},resolution:{value:new ae(1/1024,1/512)}},vertexShader:` uniform vec2 resolution; varying vec2 vUv; varying vec4 vOffset[ 2 ]; void SMAANeighborhoodBlendingVS( vec2 texcoord ) { vOffset[ 0 ] = texcoord.xyxy + resolution.xyxy * vec4( -1.0, 0.0, 0.0, 1.0 ); // WebGL port note: Changed sign in W component vOffset[ 1 ] = texcoord.xyxy + resolution.xyxy * vec4( 1.0, 0.0, 0.0, -1.0 ); // WebGL port note: Changed sign in W component } void main() { vUv = uv; SMAANeighborhoodBlendingVS( vUv ); gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); }`,fragmentShader:` uniform sampler2D tDiffuse; uniform sampler2D tColor; uniform vec2 resolution; varying vec2 vUv; varying vec4 vOffset[ 2 ]; vec4 SMAANeighborhoodBlendingPS( vec2 texcoord, vec4 offset[ 2 ], sampler2D colorTex, sampler2D blendTex ) { // Fetch the blending weights for current pixel: vec4 a; a.xz = texture2D( blendTex, texcoord ).xz; a.y = texture2D( blendTex, offset[ 1 ].zw ).g; a.w = texture2D( blendTex, offset[ 1 ].xy ).a; // Is there any blending weight with a value greater than 0.0? if ( dot(a, vec4( 1.0, 1.0, 1.0, 1.0 )) < 1e-5 ) { return texture2D( colorTex, texcoord, 0.0 ); } else { // Up to 4 lines can be crossing a pixel (one through each edge). We // favor blending by choosing the line with the maximum weight for each // direction: vec2 offset; offset.x = a.a > a.b ? a.a : -a.b; // left vs. right offset.y = a.g > a.r ? -a.g : a.r; // top vs. bottom // WebGL port note: Changed signs // Then we go in the direction that has the maximum weight: if ( abs( offset.x ) > abs( offset.y )) { // horizontal vs. vertical offset.y = 0.0; } else { offset.x = 0.0; } // Fetch the opposite color and lerp by hand: vec4 C = texture2D( colorTex, texcoord, 0.0 ); texcoord += sign( offset ) * resolution; vec4 Cop = texture2D( colorTex, texcoord, 0.0 ); float s = abs( offset.x ) > abs( offset.y ) ? abs( offset.x ) : abs( offset.y ); // WebGL port note: Added gamma correction C.xyz = pow(C.xyz, vec3(2.2)); Cop.xyz = pow(Cop.xyz, vec3(2.2)); vec4 mixed = mix(C, Cop, s); mixed.xyz = pow(mixed.xyz, vec3(1.0 / 2.2)); return mixed; } } void main() { gl_FragColor = SMAANeighborhoodBlendingPS( vUv, vOffset, tColor, tDiffuse ); }`};class uF extends zs{constructor(e,t){super(),this.edgesRT=new Yt(e,t,{depthBuffer:!1}),this.edgesRT.texture.name="SMAAPass.edges",this.weightsRT=new Yt(e,t,{depthBuffer:!1}),this.weightsRT.texture.name="SMAAPass.weights";const n=this,r=new Image;r.src=this.getAreaTexture(),r.onload=function(){n.areaTexture.needsUpdate=!0},this.areaTexture=new ti,this.areaTexture.name="SMAAPass.area",this.areaTexture.image=r,this.areaTexture.minFilter=Hn,this.areaTexture.generateMipmaps=!1,this.areaTexture.flipY=!1;const s=new Image;s.src=this.getSearchTexture(),s.onload=function(){n.searchTexture.needsUpdate=!0},this.searchTexture=new ti,this.searchTexture.name="SMAAPass.search",this.searchTexture.image=s,this.searchTexture.magFilter=Xt,this.searchTexture.minFilter=Xt,this.searchTexture.generateMipmaps=!1,this.searchTexture.flipY=!1,ch===void 0&&console.error("THREE.SMAAPass relies on SMAAShader"),this.uniformsEdges=Qn.clone(ch.uniforms),this.uniformsEdges.resolution.value.set(1/e,1/t),this.materialEdges=new kt({defines:Object.assign({},ch.defines),uniforms:this.uniformsEdges,vertexShader:ch.vertexShader,fragmentShader:ch.fragmentShader}),this.uniformsWeights=Qn.clone(Rf.uniforms),this.uniformsWeights.resolution.value.set(1/e,1/t),this.uniformsWeights.tDiffuse.value=this.edgesRT.texture,this.uniformsWeights.tArea.value=this.areaTexture,this.uniformsWeights.tSearch.value=this.searchTexture,this.materialWeights=new kt({defines:Object.assign({},Rf.defines),uniforms:this.uniformsWeights,vertexShader:Rf.vertexShader,fragmentShader:Rf.fragmentShader}),this.uniformsBlend=Qn.clone(Cy.uniforms),this.uniformsBlend.resolution.value.set(1/e,1/t),this.uniformsBlend.tDiffuse.value=this.weightsRT.texture,this.materialBlend=new kt({uniforms:this.uniformsBlend,vertexShader:Cy.vertexShader,fragmentShader:Cy.fragmentShader}),this.needsSwap=!1,this.fsQuad=new Ml(null)}render(e,t,n){this.uniformsEdges.tDiffuse.value=n.texture,this.fsQuad.material=this.materialEdges,e.setRenderTarget(this.edgesRT),this.clear&&e.clear(),this.fsQuad.render(e),this.fsQuad.material=this.materialWeights,e.setRenderTarget(this.weightsRT),this.clear&&e.clear(),this.fsQuad.render(e),this.uniformsBlend.tColor.value=n.texture,this.fsQuad.material=this.materialBlend,this.renderToScreen?(e.setRenderTarget(null),this.fsQuad.render(e)):(e.setRenderTarget(t),this.clear&&e.clear(),this.fsQuad.render(e))}setSize(e,t){this.edgesRT.setSize(e,t),this.weightsRT.setSize(e,t),this.materialEdges.uniforms.resolution.value.set(1/e,1/t),this.materialWeights.uniforms.resolution.value.set(1/e,1/t),this.materialBlend.uniforms.resolution.value.set(1/e,1/t)}getAreaTexture(){return"data:image/png;base64,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"}getSearchTexture(){return"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEIAAAAhCAAAAABIXyLAAAAAOElEQVRIx2NgGAWjYBSMglEwEICREYRgFBZBqDCSLA2MGPUIVQETE9iNUAqLR5gIeoQKRgwXjwAAGn4AtaFeYLEAAAAASUVORK5CYII="}}var hF=new uF(iv,rv);const mA=new vm(new kt({defines:{BAND_MODE:2,CHROMA_SAMPLES:1},uniforms:{tDiffuse:{value:null},baseIor:{value:.8},bandOffset:{value:.01},jitterIntensity:{value:1},jitterOffset:{value:0}},vertexShader:` varying vec2 vUv; varying vec3 viewDir; void main() { vUv = uv; gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); viewDir = normalize( ( modelViewMatrix * vec4( position, 1.0 ) ).xyz ); } `,fragmentShader:` varying vec2 vUv; varying vec3 viewDir; uniform float baseIor; uniform float bandOffset; uniform float jitterIntensity; uniform float jitterOffset; uniform sampler2D tDiffuse; #include void main() { vec3 normal = vec3( ( 2.0 * vUv - vec2( 1.0 ) ), 1.0 ); normal.z = 1.0; normal = normalize( normal ); vec3 color; // if NO BANDS #if BAND_MODE == 0 vec3 refracted = refract( vec3( 0.0, 0.0, - 1.0 ), normal, baseIor ); color = texture2D( tDiffuse, vUv + refracted.xy ).rgb; // if RGB or RYGCBV BANDS #else float index, randValue, offsetValue; float r, g, b, r_ior, g_ior, b_ior; vec3 r_refracted, g_refracted, b_refracted; vec4 r_sample, g_sample, b_sample; #if BAND_MODE == 2 float y, c, v, y_ior, c_ior, v_ior; vec3 y_refracted, c_refracted, v_refracted; vec4 y_sample, c_sample, v_sample; #endif for ( int i = 0; i < CHROMA_SAMPLES; i ++ ) { index = float( i ); randValue = rand( sin( index + 1. ) * gl_FragCoord.xy + vec2( jitterOffset, - jitterOffset ) ) - 0.5; offsetValue = index / float( CHROMA_SAMPLES ) + randValue * jitterIntensity; #if BAND_MODE == 1 randValue *= 2.0; #endif // Paper describing functions for creating yellow, cyan, and violet bands and reforming // them into RGB: // https://web.archive.org/web/20061108181225/http://home.iitk.ac.in/~shankars/reports/dispersionraytrace.pdf r_ior = 1.0 + bandOffset * ( 0.0 + offsetValue ); g_ior = 1.0 + bandOffset * ( 2.0 + offsetValue ); b_ior = 1.0 + bandOffset * ( 4.0 + offsetValue ); r_refracted = refract( vec3( 0.0, 0.0, - 1.0 ), normal, baseIor / r_ior ); g_refracted = refract( vec3( 0.0, 0.0, - 1.0 ), normal, baseIor / g_ior ); b_refracted = refract( vec3( 0.0, 0.0, - 1.0 ), normal, baseIor / b_ior ); r_sample = texture2D( tDiffuse, vUv + r_refracted.xy ); g_sample = texture2D( tDiffuse, vUv + g_refracted.xy ); b_sample = texture2D( tDiffuse, vUv + b_refracted.xy ); #if BAND_MODE == 2 y_ior = 1.0 + bandOffset * ( 1.0 + offsetValue ); c_ior = 1.0 + bandOffset * ( 3.0 + offsetValue ); v_ior = 1.0 + bandOffset * ( 5.0 + offsetValue ); y_refracted = refract( vec3( 0.0, 0.0, - 1.0 ), normal, baseIor / y_ior ); c_refracted = refract( vec3( 0.0, 0.0, - 1.0 ), normal, baseIor / c_ior ); v_refracted = refract( vec3( 0.0, 0.0, - 1.0 ), normal, baseIor / v_ior ); y_sample = texture2D( tDiffuse, vUv + y_refracted.xy ); c_sample = texture2D( tDiffuse, vUv + c_refracted.xy ); v_sample = texture2D( tDiffuse, vUv + v_refracted.xy ); r = r_sample.r / 2.0; y = ( 2.0 * y_sample.r + 2.0 * y_sample.g - y_sample.b ) / 6.0; g = g_sample.g / 2.0; c = ( 2.0 * c_sample.g + 2.0 * c_sample.b - c_sample.r ) / 6.0; b = b_sample.b / 2.0; v = ( 2.0 * v_sample.b + 2.0 * v_sample.r - v_sample.g ) / 6.0; color.r += r + ( 2.0 * v + 2.0 * y - c ) / 3.0; color.g += g + ( 2.0 * y + 2.0 * c - v ) / 3.0; color.b += b + ( 2.0 * c + 2.0 * v - y ) / 3.0; #else color.r += r_sample.r; color.g += g_sample.g; color.b += b_sample.b; #endif } color /= float( CHROMA_SAMPLES ); #endif gl_FragColor = vec4( color, 1.0 ); } `})),{uniforms:vA}=mA;xT(i=>vA.baseIor.value=i);_T(i=>vA.bandOffset.value=i);var dF=!!window.safari;const gA=dF,Uc=(()=>{if(gA)return new S_(Sn());const i=new Yt(iv,rv,{samples:4});return mi(([e,t])=>i.setSize(e,t)),new S_(Sn(),i)})();Kt(()=>{Uc.renderer=Sn();const[i,e]=mi();Uc.setSize(i,e),Uc.setPixelRatio(Zc())},[Sn,mi,Zc]);Kt(()=>{const i=[Gx];PM()&&i.push(qx),dm()&&i.push(xd),u_()&&i.push(gd),CM()&&i.push(lF),xM()&&i.push(ib),AM()&&i.push(Ps),h_()&&i.push(mA),gA&&i.push(hF);for(const e of i)Uc.addPass(e);return()=>{for(const e of i)Uc.removePass(e)}},[PM,dm,u_,CM,xM,AM,h_]);async function pF(){const{Sphere:i,Cylinder:e,Vec3:t}=await pu(),{x:n,y:r}=El(this),s=n*.5,o=r*.5,l=new i(s),h=new i(s),d=new e(s,s,Math.abs(r-n));this.cannonBody.addShape(l,new t(0,-o+s,0)),this.cannonBody.addShape(h,new t(0,o-s,0)),this.cannonBody.addShape(d)}const LM=Math.PI*.5;class yA extends To{constructor(e){super(new ei),this._physicsShape=pF,this.updatePolarAngle=Mr(()=>this.gyrate(0,0),0,"trailing"),this._minPolarAngle=Bx*xn,this._maxPolarAngle=zx*xn,this.mouseControlState=new Tn(!1),this.camera=e,this.object3d.add(e),this.initCamera()}getRay(){return dT.set(this.camera.getWorldPosition(bo),this.camera.getWorldDirection(Ot))}append(e){this._append(e),this.camera.add(e.outerObject3d)}attach(e){this._append(e),this.camera.attach(e.outerObject3d)}get width(){return this.object3d.scale.x*pn}set width(e){const t=e*Ye;this.object3d.scale.x=t,this.camera.scale.x=1/t}get height(){return this.object3d.scale.y*pn}set height(e){const t=e*Ye;this.object3d.scale.y=t,this.camera.scale.y=1/t}get depth(){return this.object3d.scale.z*pn}set depth(e){const t=e*Ye;this.object3d.scale.z=t,this.camera.scale.z=1/t}lookAt(e){super.lookAt(e),this.rotationY+=180}_gyrate(e,t,n){const r=n?this.object3d:this.outerObject3d;Wi.setFromQuaternion(r.quaternion),Wi.y-=e*.002,Wi.x-=t*.002,Wi.x=Math.max(LM-this._maxPolarAngle,Math.min(LM-this._minPolarAngle,Wi.x)),r.setRotationFromEuler(Wi),!n&&this.physicsRotate()}gyrate(e,t){this.mouseControlMode==="orbit"?this._gyrate(e,t):(this._gyrate(e,0),this._gyrate(0,t,!0))}get minPolarAngle(){return this._minPolarAngle*pi}set minPolarAngle(e){this._minPolarAngle=e*xn,this.updatePolarAngle()}get maxPolarAngle(){return this._maxPolarAngle*pi}set maxPolarAngle(e){this._maxPolarAngle=e*xn,this.updatePolarAngle()}get mouseControl(){return this.mouseControlState.get()}set mouseControl(e){this.mouseControlState.set(e),!(!e||this.mouseControlInit)&&(this.mouseControlInit=!0,$n(()=>import("./enableMouseControl.f708247b.js"),["./enableMouseControl.f708247b.js","./entry.c3abd651.js","./entry.f74844d6.css"],import.meta.url).then(t=>t.default.call(this)))}getCenter(){return this.getWorldPosition()}}ks(yA,[aA]);const Lf=5.7,DM=(i,e)=>Math.abs(i*.5/Math.cos(e.fov*.6*xn));Kt(()=>{var i;const[e,t]=mi(),[n,r]=(i=Jc())!==null&&i!==void 0?i:mi(),s=Ze(),o=e/t;s instanceof fi&&!Kc()?(s.aspect=o,s.updateProjectionMatrix()):s instanceof ou&&([s.left,s.right,s.top,s.bottom]=[o*Lf*-.5,o*Lf*.5,Lf*.5,Lf*-.5],s.updateProjectionMatrix());const l={width:e,height:r-(n-e)*r/n},h={width:n-(r-t)*n/r,height:t},d=Math.min(e-l.width,t-l.height),f=Math.min(e-h.width,t-h.height);d>f?(bM(DM(n/o,bn)*Ye),Object.assign(Jh.style,{width:l.width+"px",height:l.height+"px"})):(bM(DM(r,bn)*Ye),Object.assign(Jh.style,{width:h.width+"px",height:h.height+"px"}))},[mi,Jc,Ze,Kc]);Kt(()=>{const i=Kc(),e=Ze(),t=Qc(),n=Sn();if(t){const[h,d]=mi(),f=h*1,g=d*.5;t.aspect=e.aspect=f/g,e.updateProjectionMatrix(),t.updateProjectionMatrix();const y=wi(()=>{Af(),n.setViewport(0,0,f,g),n.setScissor(0,0,f,g),n.setScissorTest(!0),n.render($e,t),n.setViewport(0,g,f,g),n.setScissor(0,g,f,g),n.render($e,e),Cf()});return()=>{y.cancel(),n.setViewport(0,0,h,d),n.setScissor(0,0,h,d),n.setScissorTest(!1),e.aspect=h/d,e.updateProjectionMatrix()}}if(Kh()==="speed"||i==="webxr"){const h=wi(()=>{Af(),n.render($e,e),Cf()});return()=>{h.cancel()}}if(i){const h=new dv;h.scale=.5,h.visible=!1;const d=1e3,f=-d*.5,[g,y]=mi(),_=g*.5,w=y*1;e.aspect=_/w,e.updateProjectionMatrix();const S=new Sa(e),b=wi(()=>{Af(),n.setViewport(0,0,_,w),n.setScissor(0,0,_,w),n.setScissorTest(!0),h.outerObject3d.position.copy(e.getWorldPosition(Ot)),h.outerObject3d.quaternion.copy(e.quaternion),h.translateZ(-d);const T=h.outerObject3d.position.clone(),E=e.quaternion.clone(),C=e.position.clone();h.moveRight(f),S.moveRight(-3),e.lookAt(h.outerObject3d.position),n.render($e,e),h.outerObject3d.position.copy(T),e.quaternion.copy(E),e.position.copy(C),n.setViewport(_,0,_,w),n.setScissor(_,0,_,w),h.moveRight(-f),S.moveRight(3),e.lookAt(h.outerObject3d.position),n.render($e,e),h.outerObject3d.position.copy(T),e.quaternion.copy(E),e.position.copy(C),Cf()});return()=>{h.dispose(),b.cancel(),n.setViewport(0,0,g,y),n.setScissor(0,0,g,y),n.setScissorTest(!1),e.aspect=g/y,e.updateProjectionMatrix()}}let r=!1,s=!1,o=!1;const l=wi(()=>{Af(),BT[0]&&(r||(sF(!0),r=!0),vU()),UT[0]&&!s&&(oF(!0),s=!0),VT[0]&&!o&&(rF(!0),o=!0),Uc.render(),Cf()});return()=>{l.cancel()}},[Kh,Kc,Ze,Qc,mi,Sn]);async function fF(){const{Sphere:i}=await pu(),e=new i(El(this).x*.5);this.cannonBody.addShape(e)}const mF=new Km(xo,16,16);class sb extends Br{constructor(){super(mF),this._physicsShape=fF}}sb.componentName="sphere";const vF=new _x(xo,br,16);class _A extends Br{constructor(){super(vF)}}_A.componentName="cone";async function gF(){const{Cylinder:i}=await pu(),{x:e,y:t}=El(this),n=e*.5,r=new i(n,n,t);this.cannonBody.addShape(r)}const yF=new Xm(xo,xo,br,16);class ob extends Br{constructor(){super(yF),this._physicsShape=gF}}ob.componentName="cylinder";const _F=new Zm(xo);class xA extends Br{constructor(){super(_F)}}xA.componentName="octahedron";const _v=new bx(61*Ye);_v.rotateY(45*xn);_v.rotateX(125*xn);_v.translate(0,-.2,.2);class bA extends Br{constructor(){super(_v)}}bA.componentName="tetrahedron";async function xF(){const{Box:i,Vec3:e}=await pu(),t=El(this),n=t.clone().multiply(Ot.set(.15,.5,.1)),r=t.clone().multiply(bo.set(.5,.15,.1)),s=new i(n),o=new i(r);this.cannonBody.addShape(s,new e(-r.x,0,0)),this.cannonBody.addShape(s,new e(r.x,0,0)),this.cannonBody.addShape(o,new e(0,-n.y,0)),this.cannonBody.addShape(o,new e(0,n.y,0))}const bF=new wx(40*Ye,10*Ye,8,16);class wA extends Br{constructor(){super(bF),this._physicsShape=xF}}wA.componentName="torus";const SA=Me({},uv),MA=bt(Me({},hv),{scaleZ:0,depth:0}),wF=new ld(br,br,1,1);class bd extends Br{constructor(){super(wF,!0),this.object3d.scale.z=j2}get depth(){return 0}set depth(e){}get scaleZ(){return 0}set scaleZ(e){}}bd.componentName="plane";bd.defaults=MA;bd.schema=SA;async function SF(){const{Sphere:i}=await pu();this.cannonBody.addShape(new i(El(this).x*.5))}const MF=Me({},uv),EF=bt(Me({},hv),{scaleZ:0,depth:0}),TF=new yx(xo,32);class xv extends Br{constructor(){super(TF,!0),this._physicsShape=SF,this.object3d.scale.z=j2}get depth(){return 0}set depth(e){}get scaleZ(){return 0}set scaleZ(e){}}xv.componentName="circle";xv.defaults=EF;xv.schema=MF;const EA=[],tl=new Pe,Df=new Pe;let IM="",OM="";const AF=()=>{var i;return(i=EA.pop())!==null&&i!==void 0?i:new CF},L_=new Set;wi(()=>{for(const i of L_)i.update()});class CF{constructor(){this.material=new ud,this.sprite=new ux(this.material)}init(e,t,n,r=n,s,o=s,l,h=l,d,f,g,y,_,w,S,b,T,E){L_.add(this),this.material.map=e,t?Wx(this.sprite):jx(this.sprite),this.accelX=y*Ye,this.accelY=_*Ye,this.accelZ=w*Ye,this.speedX=S*Ye,this.speedY=b*Ye,this.speedZ=T*Ye,this.lifeTime=E,this.startTime=Date.now(),$e.add(this.sprite),this.scaleStart=this.sprite.scale.x=this.sprite.scale.y=n*Ye,this.sizeRange=(r-n)*Ye,this.opacityStart=this.material.opacity=s,this.opacityRange=o-s,l!==IM&&(IM=l,tl.set(l)),OM!==h&&(OM=h,Df.set(h)),this.rStart=this.material.color.r=tl.r,this.rRange=Df.r-tl.r,this.gStart=this.material.color.g=tl.g,this.gRange=Df.g-tl.g,this.bStart=this.material.color.b=tl.b,this.bRange=Df.b-tl.b,this.sprite.position.set(d,f,g)}update(){const e=Date.now()-this.startTime;if(e>this.lifeTime){this.dispose();return}this.sprite.position.x+=this.speedX+=this.accelX,this.sprite.position.y+=this.speedY+=this.accelY,this.sprite.position.z+=this.speedZ+=this.accelZ;const t=e/this.lifeTime,n=t*this.sizeRange;this.sprite.scale.x=this.sprite.scale.y=this.scaleStart+n;const r=t*this.opacityRange;this.material.opacity=this.opacityStart+r;const s=t*this.rRange;this.material.color.r=this.rStart+s;const o=t*this.gRange;this.material.color.g=this.gStart+o;const l=t*this.bRange;this.material.color.b=this.bStart+l}dispose(){$e.remove(this.sprite),L_.delete(this),EA.push(this)}}var PF="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAErklEQVRoQ92aiZNUNRDGu9NJRgUKESguFZQVEFg5ZAWLv9+SZZH7dhEQQSxEpcDjJem09Y1vqGFh2cNZljepSqVezZskv/elO52DacTJzISIekMZz0hKRM0gMzOeR5Z4FDWZ2Xoi2kRE60opa4noXWYGTCAi17ZRiSibGWD+9t4/I6KnRPQrMz/5v/1YNoiZRSLaTkSbSykba63vA6jWutbM3oMizPwCiJllKMLMfznnngHAOfeH9/4xET0iogfMnJYDtWQQM0PnPi6lbKu1bjWzzaq6ycw2ENF6M1tba10DEMAyc18RM6ttJxvn3J/MDEWeMPPvIgJVHjnnHnrvfyaiH5kZ0ItOSwIxs22ASCl9ZGbbVRUgW2qtAPmgVWWdma0xs3faoTVsI5mZ/2FmgDyFGsz8m3MOIL+IyENmfhBjvNfCAGpRaVEgrQFPlFI+UdWdqgqQHaq6vda6BarUWjeaGexi0YmZoc7jVg2AYGjdF5F7InLXe3+biGYX4xgWBGm/7L6U0oSZAWRXKWVnrfXDWusOqLHonr/mRajinLvvnPvJe39XRO4w8+0Y4ywRXYeSr2vntSAYIkS0P6W0p9Y6kXPeDZhSyi6AjAJgbh0tSB8ihHDLOTcbY7xJRFcxJOdrc16QVonJnPO+nPNeVd2jqhO11k9rrXC3K5acc/BmP4jIrIjcDCHcCCFcJ6JL8ynzSpDWJiZTSgdKKZ+r6j5VBcxnS7WD5dLCfkTkexG5ISLXvffXYoxXWpiXJtP5QPamlCZrrQdyzgdUtQ9jZn65HVvO/5i5AEJEroUQrjjnrsQYocqNufW9BAIXW0o5pKpQZFJVD6rq/jelxEsd/E+ZqyJyGRAicsl7f4GZX3DNL4C0k93RpmkOq+oXpRRkKLOiNrGQWrAZ7z0ALorIxV6vd56Izg5PmnNBdqeUjpRSDrf50Ep5p4U6P483u+C9P48cYzzHzLcG7z0HQThRSvlKVY+WUo7knAF0aKkNruT7GFIhhHPe+3MictZ7f3oQmw2D7EopHSulAORLlKOa7EYFh0nTew+A71DGGM8w8x3UPwwy1TQNQI7lnAHyVqkx+BitKgA50+v1ADLzHAThdynl65TSlKr2YRBHjepLjrIexGOAEJEzMcYZ7/23WA70FTEzGPlUzhk2gnJqtdztQtCYKEMIMyIyE0I4DRgY/QDkcNM0x2HsgCmlHFyowtX83Xt/GRAw9l6vN83M5xnhCIZVzvm4qgIE5c7V7OhCbSPEDyFMi8hplP3hhWVpKeVkSulEKQWqHH/bvNUr5hR4LwBMxxhPee+/AcgGVT3ZNE0fJOd8AsvVhb7Kav6OZXIIAQDTvV7vlIj0QbaqKjzWiYEqb6uhP5/FmZuBGlBERPpDC0vWPgTUaBV5o1HuUtVFVAxFkFuQU2MFMjZDa2yMfWzc73hMiG2s1f0QZdyCxvEI41tVur+wakHGZqk7HpsPQ0bf7e2gFgSnUd3foGthur9lOginzaz7m9itKjj36/6xQguDw8xuH/QMDbHuH70NwUCZbh+GDsHAZrp9PD28MdD5CwNzYLp/hWMOULcv1bxqD6rT15zm21RbrYtn/wLboDECn0+AWAAAAABJRU5ErkJggg==";const RF=oT.load(PF),uh=(i,e)=>Uy(i-e,i+e);class LF extends dv{constructor(){super(),this.speed=0,this.speedRange=.5,this.accel=0,this.accelRange=0,this.lifeTime=500,this.lifeTimeRange=0,this.spread=0,this.size=20,this.sizeRange=0,this.opacityRange=0,this._frequency=50,this.width=this.height=this.depth=20,this.object3d.visible=!1,this.start()}get frequency(){return this._frequency}set frequency(e){this._frequency=e,this.handle&&this.start()}start(){var e;(e=this.handle)===null||e===void 0||e.cancel(),this.handle=this.timer(1e3/this._frequency,-1,()=>{const[,,,,t,n,r]=this.outerObject3d.matrixWorld.elements,s=uh(this.speed,this.speedRange),[o,l,h]=[s*t,s*n,s*r],d=uh(this.accel,this.accelRange),[f,g,y]=[d*t,d*n,d*r],_=uh(this.size,this.sizeRange),w=uh(this.opacity,this.opacityRange);this.outerObject3d.getWorldPosition(Ot),AF().init(RF,this.bloom,_,this.sizeEnd,w,this.opacityEnd,this.color,this.colorEnd,Ot.x,Ot.y,Ot.z,f,g,y,o+Uy(-this.spread,this.spread),l,h+Uy(-this.spread,this.spread),uh(this.lifeTime,this.lifeTimeRange))})}stop(){var e;(e=this.handle)===null||e===void 0||e.cancel(),this.handle=void 0}}LF.componentName="particleSystem";var TA=i=>{const e=new z;return Yc.setFromObject(i).getSize(e),e};const kM=new Map;var AA=(i,e)=>{const t=kM.get(e);if(t){const[l,h,d]=t;return i.scale.multiplyScalar(l),i.position.copy(h).multiplyScalar(-1),d}const n=TA(i),r=1/n.y;i.scale.multiplyScalar(r);const s=fd(i);i.position.copy(s).multiplyScalar(-1);const o=n.multiplyScalar(r);return kM.set(e,[r,s.clone(),o.clone()]),o};const CA=bt(Me({},Tl),{src:String,onLoad:Function,boxVisible:Boolean}),PA=bt(Me({},fu),{boxVisible:!1}),ab=bt(Me({},CA),{loadedScale:Number,loadedX:Number,loadedY:Number,loadedZ:Number}),lb=Me({},PA),DF=yl(()=>$n(()=>import("./loadFBX.eb70df6d.js"),["./loadFBX.eb70df6d.js","./entry.c3abd651.js","./entry.f74844d6.css"],import.meta.url)),IF=yl(()=>$n(()=>import("./loadGLTF.0f71ad9a.js"),["./loadGLTF.0f71ad9a.js","./entry.c3abd651.js","./entry.f74844d6.css"],import.meta.url));class Ao extends pv{async loadAnimation(e,t=e){var n,r;((n=this.loadedAnims)!==null&&n!==void 0?n:this.loadedAnims={})[t]=e;const s=new Fc;((r=this.loadingAnims)!==null&&r!==void 0?r:this.loadingAnims=[]).push(s);let o;try{o=await this.load(e)}catch{s.resolve();return}const l=o.animations[0];l&&(this.animations[t]=this.watch(new $h(l,await this.loadedResolvable))),s.resolve()}get animations(){var e;return(e=this.animationManagers)!==null&&e!==void 0?e:this.animationManagers={}}set animations(e){for(const[t,n]of Object.entries(e))typeof n=="string"?this.loadAnimation(n,t):this.animations[t]=n}async load(e){var t;const n=new Fc;((t=this.loadingAnims)!==null&&t!==void 0?t:this.loadingAnims=[]).push(n);let r;try{JT[0](e).toLowerCase().endsWith(".fbx")?r=await(await DF()).default(e,!0):r=await(await IF()).default(e,!0)}catch{return n.resolve(),new ei}return n.resolve(),r}get loadedScale(){return this._loadedScale}set loadedScale(e){this._loadedScale=e}get loadedX(){return this._loadedX}set loadedX(e){this._loadedX=e,this._loadedPos=!0}get loadedY(){return this._loadedY}set loadedY(e){this._loadedY=e,this._loadedPos=!0}get loadedZ(){return this._loadedZ}set loadedZ(e){this._loadedZ=e,this._loadedPos=!0}resolveLoaded(e){for(const t of e.animations)this.animations[t.name]=this.watch(new $h(t,e));if(this._loadedScale)e.scale.multiplyScalar(this._loadedScale);else{const t=AA(e,this._src);!this.widthSet&&(this.object3d.scale.x=t.x),!this.heightSet&&(this.object3d.scale.y=t.y),!this.depthSet&&(this.object3d.scale.z=t.z)}if(this._loadedPos){let{x:t,y:n,z:r}=e.position;this._loadedX&&(t=this._loadedX*Ye),this._loadedY&&(n=this._loadedY*Ye),this._loadedZ&&(r=this._loadedZ*Ye),e.position.set(t,n,r)}this.loadedGroup.add(e),this.loadedResolvable.resolve(e)}find(e,t){const n=super.find(e,t);return n&&(n.model=this),n}findAll(e){const t=super.findAll(e);for(const n of t)n.model=this;return t}}Ao.componentName="model";Ao.defaults=lb;Ao.schema=ab;/*! ***************************************************************************** Copyright (c) Microsoft Corporation. Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted. THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ***************************************************************************** */var Fe=function(){return Fe=Object.assign||function(e){for(var t,n=1,r=arguments.length;n=i.length&&(i=void 0),{value:i&&i[n++],done:!i}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function on(i,e){var t=typeof Symbol=="function"&&i[Symbol.iterator];if(!t)return i;var n=t.call(i),r,s=[],o;try{for(;(e===void 0||e-- >0)&&!(r=n.next()).done;)s.push(r.value)}catch(l){o={error:l}}finally{try{r&&!r.done&&(t=n.return)&&t.call(n)}finally{if(o)throw o.error}}return s}function Vn(i,e,t){if(t||arguments.length===2)for(var n=0,r=e.length,s;n"u"||typeof n=="string"||nu(n)?{target:n,event:i}:Fe(Fe({},n),{event:i})});return t}function ZF(i){if(!(i===void 0||i===UF))return ns(i)}function UA(i,e,t,n,r){var s=i.options.guards,o={state:r,cond:e,_event:n};if(e.type===O_)return((s==null?void 0:s[e.name])||e.predicate)(t,n.data,o);var l=s==null?void 0:s[e.type];if(!l)throw new Error("Guard '".concat(e.type,"' is not implemented on machine '").concat(i.id,"'."));return l(t,n.data,o)}function FA(i){return typeof i=="string"?{type:i}:i}function N_(i,e,t){if(typeof i=="object")return i;var n=function(){};return{next:i,error:e||n,complete:t||n}}function If(i,e){return"".concat(i,":invocation[").concat(e,"]")}var wm=Ri({type:kF});function B_(i,e){return e&&e[i]||void 0}function td(i,e){var t;if(an(i)||typeof i=="number"){var n=B_(i,e);fn(n)?t={type:i,exec:n}:n?t=n:t={type:i,exec:void 0}}else if(fn(i))t={type:i.name||i.toString(),exec:i};else{var n=B_(i.type,e);if(fn(n))t=Fe(Fe({},i),{exec:n});else if(n){var r=n.type||i.type;t=Fe(Fe(Fe({},n),i),{type:r})}else t=i}return t}var Sm=function(i,e){if(!i)return[];var t=mu(i)?i:[i];return t.map(function(n){return td(n,e)})};function pb(i){var e=td(i);return Fe(Fe({id:an(i)?i:e.id},e),{type:e.type})}function KF(i){return an(i)?{type:bv,event:i}:VA(i,{to:ed.Internal})}function JF(i){return{type:bv,_event:Ri(i.event)}}function VA(i,e){return{to:e?e.to:void 0,type:wv,event:fn(i)?i:db(i),delay:e?e.delay:void 0,id:e&&e.id!==void 0?e.id:fn(i)?i.name:OA(i)}}function QF(i,e,t,n){var r={_event:t},s=Ri(fn(i.event)?i.event(e,t.data,r):i.event),o;if(an(i.delay)){var l=n&&n[i.delay];o=fn(l)?l(e,t.data,r):l}else o=fn(i.delay)?i.delay(e,t.data,r):i.delay;var h=fn(i.to)?i.to(e,t.data,r):i.to;return Fe(Fe({},i),{to:h,_event:s,event:s.data,delay:o})}var $F=function(i,e,t){return Fe(Fe({},i),{value:an(i.expr)?i.expr:i.expr(e,t.data,{_event:t})})},eV=function(i){return{type:RA,sendId:i}};function tV(i){var e=pb(i);return{type:mn.Start,activity:e,exec:void 0}}function nV(i){var e=fn(i)?i:pb(i);return{type:mn.Stop,activity:e,exec:void 0}}function iV(i,e,t){var n=fn(i.activity)?i.activity(e,t.data):i.activity,r=typeof n=="string"?{id:n}:n,s={type:mn.Stop,activity:r};return s}function rV(i,e){var t=e?"#".concat(e):"";return"".concat(mn.After,"(").concat(i,")").concat(t)}function Of(i,e){var t="".concat(mn.DoneState,".").concat(i),n={type:t,data:e};return n.toString=function(){return t},n}function jf(i,e){var t="".concat(mn.DoneInvoke,".").concat(i),n={type:t,data:e};return n.toString=function(){return t},n}function vh(i,e){var t="".concat(mn.ErrorPlatform,".").concat(i),n={type:t,data:e};return n.toString=function(){return t},n}function z_(i,e,t,n,r,s){s===void 0&&(s=!1);var o=on(s?[[],r]:NA(r,function(y){return y.type===NM}),2),l=o[0],h=o[1],d=l.length?VM(t,n,l,e):t,f=s?[t]:void 0,g=Rn(h.map(function(y){var _;switch(y.type){case bv:return JF(y);case wv:var w=QF(y,d,n,i.options.delays);return w;case LA:return $F(y,d,n);case BF:{var S=y,b=(_=S.conds.find(function(j){var G=zA(j.cond,i.options.guards);return!G||UA(i,G,d,n,e)}))===null||_===void 0?void 0:_.actions;if(!b)return[];var T=on(z_(i,e,d,n,Sm(ns(b),i.options.actions),s),2),E=T[0],C=T[1];return d=C,f==null||f.push(d),E}case zF:{var b=y.get(d,n.data);if(!b)return[];var A=on(z_(i,e,d,n,Sm(ns(b),i.options.actions),s),2),D=A[0],I=A[1];return d=I,f==null||f.push(d),D}case ub:return iV(y,d,n);case NM:{d=VM(d,n,[y],e),f==null||f.push(d);break}default:var F=td(y,i.options.actions),P=F.exec;if(P&&f){var k=f.length-1;F=Fe(Fe({},F),{exec:function(j){for(var G=[],ne=1;ne0;){var d=r.shift();t=i.transition(t,d,h),n.forEach(function(f){return f.next(t)})}s=!1}},l=cV({id:e.id,send:function(d){r.push(d),o()},getSnapshot:function(){return t},subscribe:function(d,f,g){var y=N_(d,f,g);return n.add(y),y.next(t),{unsubscribe:function(){n.delete(y)}}}}),h={parent:e.parent,self:l,id:e.id||"anonymous",observers:n};return t=i.start?i.start(h):t,l}var xV={sync:!1,autoForward:!1},Vi;(function(i){i[i.NotStarted=0]="NotStarted",i[i.Running=1]="Running",i[i.Stopped=2]="Stopped"})(Vi||(Vi={}));var bV=function(){function i(e,t){var n=this;t===void 0&&(t=i.defaultOptions),this.machine=e,this.delayedEventsMap={},this.listeners=new Set,this.contextListeners=new Set,this.stopListeners=new Set,this.doneListeners=new Set,this.eventListeners=new Set,this.sendListeners=new Set,this.initialized=!1,this.status=Vi.NotStarted,this.children=new Map,this.forwardTo=new Set,this.init=this.start,this.send=function(f,g){if(mu(f))return n.batch(f),n.state;var y=Ri(db(f,g));if(n.status===Vi.Stopped)return n.state;if(n.status!==Vi.Running&&!n.options.deferEvents)throw new Error('Event "'.concat(y.name,'" was sent to uninitialized service "').concat(n.machine.id,`". Make sure .start() is called for this service, or set { deferEvents: true } in the service options. Event: `).concat(JSON.stringify(y.data)));return n.scheduler.schedule(function(){n.forward(y);var _=n.nextState(y);n.update(_,y)}),n._state},this.sendTo=function(f,g){var y=n.parent&&(g===ed.Parent||n.parent.id===g),_=y?n.parent:an(g)?n.children.get(g)||kf.get(g):YF(g)?g:void 0;if(!_){if(!y)throw new Error("Unable to send event to child '".concat(g,"' from service '").concat(n.id,"'."));return}"machine"in _?_.send(Fe(Fe({},f),{name:f.name===NF?"".concat(vh(n.id)):f.name,origin:n.sessionId})):_.send(f.data)};var r=Fe(Fe({},i.defaultOptions),t),s=r.clock,o=r.logger,l=r.parent,h=r.id,d=h!==void 0?h:e.id;this.id=d,this.logger=o,this.clock=s,this.parent=l,this.options=r,this.scheduler=new GM({deferEvents:this.options.deferEvents}),this.sessionId=kf.bookId()}return Object.defineProperty(i.prototype,"initialState",{get:function(){var e=this;return this._initialState?this._initialState:gh(this,function(){return e._initialState=e.machine.initialState,e._initialState})},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"state",{get:function(){return this._state},enumerable:!1,configurable:!0}),i.prototype.execute=function(e,t){var n,r;try{for(var s=Qt(e.actions),o=s.next();!o.done;o=s.next()){var l=o.value;this.exec(l,e,t)}}catch(h){n={error:h}}finally{try{o&&!o.done&&(r=s.return)&&r.call(s)}finally{if(n)throw n.error}}},i.prototype.update=function(e,t){var n,r,s,o,l,h,d,f,g=this;if(e._sessionid=this.sessionId,this._state=e,this.options.execute&&this.execute(this.state),this.children.forEach(function(k){g.state.children[k.id]=k}),this.devTools&&this.devTools.send(t.data,e),e.event)try{for(var y=Qt(this.eventListeners),_=y.next();!_.done;_=y.next()){var w=_.value;w(e.event)}}catch(k){n={error:k}}finally{try{_&&!_.done&&(r=y.return)&&r.call(y)}finally{if(n)throw n.error}}try{for(var S=Qt(this.listeners),b=S.next();!b.done;b=S.next()){var w=b.value;w(e,e.event)}}catch(k){s={error:k}}finally{try{b&&!b.done&&(o=S.return)&&o.call(S)}finally{if(s)throw s.error}}try{for(var T=Qt(this.contextListeners),E=T.next();!E.done;E=T.next()){var C=E.value;C(this.state.context,this.state.history?this.state.history.context:void 0)}}catch(k){l={error:k}}finally{try{E&&!E.done&&(h=T.return)&&h.call(T)}finally{if(l)throw l.error}}var A=Ah(e.configuration||[],this.machine);if(this.state.configuration&&A){var D=e.configuration.find(function(k){return k.type==="final"&&k.parent===g.machine}),I=D&&D.doneData?bm(D.doneData,e.context,t):void 0;try{for(var F=Qt(this.doneListeners),P=F.next();!P.done;P=F.next()){var w=P.value;w(jf(this.id,I))}}catch(k){d={error:k}}finally{try{P&&!P.done&&(f=F.return)&&f.call(F)}finally{if(d)throw d.error}}this.stop()}},i.prototype.onTransition=function(e){return this.listeners.add(e),this.status===Vi.Running&&e(this.state,this.state.event),this},i.prototype.subscribe=function(e,t,n){var r=this;if(!e)return{unsubscribe:function(){}};var s,o=n;return typeof e=="function"?s=e:(s=e.next.bind(e),o=e.complete.bind(e)),this.listeners.add(s),this.status!==Vi.NotStarted&&s(this.state),o&&(this.status===Vi.Stopped?o():this.onDone(o)),{unsubscribe:function(){s&&r.listeners.delete(s),o&&r.doneListeners.delete(o)}}},i.prototype.onEvent=function(e){return this.eventListeners.add(e),this},i.prototype.onSend=function(e){return this.sendListeners.add(e),this},i.prototype.onChange=function(e){return this.contextListeners.add(e),this},i.prototype.onStop=function(e){return this.stopListeners.add(e),this},i.prototype.onDone=function(e){return this.doneListeners.add(e),this},i.prototype.off=function(e){return this.listeners.delete(e),this.eventListeners.delete(e),this.sendListeners.delete(e),this.stopListeners.delete(e),this.doneListeners.delete(e),this.contextListeners.delete(e),this},i.prototype.start=function(e){var t=this;if(this.status===Vi.Running)return this;this.machine._init(),kf.register(this.sessionId,this),this.initialized=!0,this.status=Vi.Running;var n=e===void 0?this.initialState:gh(this,function(){return pV(e)?t.machine.resolveState(e):t.machine.resolveState(po.from(e,t.machine.context))});return this.options.devTools&&this.attachDev(),this.scheduler.initialize(function(){t.update(n,wm)}),this},i.prototype.stop=function(){var e,t,n,r,s,o,l,h,d,f,g=this;try{for(var y=Qt(this.listeners),_=y.next();!_.done;_=y.next()){var w=_.value;this.listeners.delete(w)}}catch(P){e={error:P}}finally{try{_&&!_.done&&(t=y.return)&&t.call(y)}finally{if(e)throw e.error}}try{for(var S=Qt(this.stopListeners),b=S.next();!b.done;b=S.next()){var w=b.value;w(),this.stopListeners.delete(w)}}catch(P){n={error:P}}finally{try{b&&!b.done&&(r=S.return)&&r.call(S)}finally{if(n)throw n.error}}try{for(var T=Qt(this.contextListeners),E=T.next();!E.done;E=T.next()){var w=E.value;this.contextListeners.delete(w)}}catch(P){s={error:P}}finally{try{E&&!E.done&&(o=T.return)&&o.call(T)}finally{if(s)throw s.error}}try{for(var C=Qt(this.doneListeners),A=C.next();!A.done;A=C.next()){var w=A.value;this.doneListeners.delete(w)}}catch(P){l={error:P}}finally{try{A&&!A.done&&(h=C.return)&&h.call(C)}finally{if(l)throw l.error}}if(!this.initialized)return this;Vn([],on(this.state.configuration),!1).sort(function(P,k){return k.order-P.order}).forEach(function(P){var k,j;try{for(var G=Qt(P.definition.exit),ne=G.next();!ne.done;ne=G.next()){var ce=ne.value;g.exec(ce,g.state)}}catch(Z){k={error:Z}}finally{try{ne&&!ne.done&&(j=G.return)&&j.call(G)}finally{if(k)throw k.error}}}),this.children.forEach(function(P){fn(P.stop)&&P.stop()}),this.children.clear();try{for(var D=Qt(Object.keys(this.delayedEventsMap)),I=D.next();!I.done;I=D.next()){var F=I.value;this.clock.clearTimeout(this.delayedEventsMap[F])}}catch(P){d={error:P}}finally{try{I&&!I.done&&(f=D.return)&&f.call(D)}finally{if(d)throw d.error}}return this.scheduler.clear(),this.scheduler=new GM({deferEvents:this.options.deferEvents}),this.initialized=!1,this.status=Vi.Stopped,this._initialState=void 0,kf.free(this.sessionId),this},i.prototype.batch=function(e){var t=this;if(!(this.status===Vi.NotStarted&&this.options.deferEvents)){if(this.status!==Vi.Running)throw new Error("".concat(e.length,' event(s) were sent to uninitialized service "').concat(this.machine.id,'". Make sure .start() is called for this service, or set { deferEvents: true } in the service options.'))}this.scheduler.schedule(function(){var n,r,s=t.state,o=!1,l=[],h=function(y){var _=Ri(y);t.forward(_),s=gh(t,function(){return t.machine.transition(s,_)}),l.push.apply(l,Vn([],on(s.actions.map(function(w){return fV(w,s)})),!1)),o=o||!!s.changed};try{for(var d=Qt(e),f=d.next();!f.done;f=d.next()){var g=f.value;h(g)}}catch(y){n={error:y}}finally{try{f&&!f.done&&(r=d.return)&&r.call(d)}finally{if(n)throw n.error}}s.changed=o,s.actions=l,t.update(s,Ri(e[e.length-1]))})},i.prototype.sender=function(e){return this.send.bind(this,e)},i.prototype.nextState=function(e){var t=this,n=Ri(e);if(n.name.indexOf(BM)===0&&!this.state.nextEvents.some(function(s){return s.indexOf(BM)===0}))throw n.data.data;var r=gh(this,function(){return t.machine.transition(t.state,n)});return r},i.prototype.forward=function(e){var t,n;try{for(var r=Qt(this.forwardTo),s=r.next();!s.done;s=r.next()){var o=s.value,l=this.children.get(o);if(!l)throw new Error("Unable to forward event '".concat(e,"' from interpreter '").concat(this.id,"' to nonexistant child '").concat(o,"'."));l.send(e)}}catch(h){t={error:h}}finally{try{s&&!s.done&&(n=r.return)&&n.call(r)}finally{if(t)throw t.error}}},i.prototype.defer=function(e){var t=this;this.delayedEventsMap[e.id]=this.clock.setTimeout(function(){e.to?t.sendTo(e._event,e.to):t.send(e._event)},e.delay)},i.prototype.cancel=function(e){this.clock.clearTimeout(this.delayedEventsMap[e]),delete this.delayedEventsMap[e]},i.prototype.exec=function(e,t,n){n===void 0&&(n=this.machine.options.actions);var r=t.context,s=t._event,o=e.exec||B_(e.type,n),l=fn(o)?o:o?o.exec:e.exec;if(l)try{return l(r,s.data,{action:e,state:this.state,_event:s})}catch(A){throw this.parent&&this.parent.send({type:"xstate.error",data:A}),A}switch(e.type){case wv:var h=e;if(typeof h.delay=="number"){this.defer(h);return}else h.to?this.sendTo(h._event,h.to):this.send(h._event);break;case RA:this.cancel(e.sendId);break;case D_:{if(this.status!==Vi.Running)return;var d=e.activity;if(!this.state.activities[d.id||d.type])break;if(d.type===mn.Invoke){var f=FA(d.src),g=this.machine.options.services?this.machine.options.services[f.type]:void 0,y=d.id,_=d.data,w="autoForward"in d?d.autoForward:!!d.forward;if(!g)return;var S=_?bm(_,r,s):void 0;if(typeof g=="string")return;var b=fn(g)?g(r,s.data,{data:S,src:f,meta:d.meta}):g;if(!b)return;var T=void 0;nu(b)&&(b=S?b.withContext(S):b,T={autoForward:w}),this.spawn(b,y,T)}else this.spawnActivity(d);break}case ub:{this.stopChild(e.activity.id);break}case LA:var E=e.label,C=e.value;E?this.logger(E,C):this.logger(C);break}},i.prototype.removeChild=function(e){var t;this.children.delete(e),this.forwardTo.delete(e),(t=this.state)===null||t===void 0||delete t.children[e]},i.prototype.stopChild=function(e){var t=this.children.get(e);t&&(this.removeChild(e),fn(t.stop)&&t.stop())},i.prototype.spawn=function(e,t,n){if(FM(e))return this.spawnPromise(Promise.resolve(e),t);if(fn(e))return this.spawnCallback(e,t);if(lV(e))return this.spawnActor(e,t);if(qF(e))return this.spawnObservable(e,t);if(nu(e))return this.spawnMachine(e,Fe(Fe({},n),{id:t}));if(WF(e))return this.spawnBehavior(e,t);throw new Error('Unable to spawn entity "'.concat(t,'" of type "').concat(typeof e,'".'))},i.prototype.spawnMachine=function(e,t){var n=this;t===void 0&&(t={});var r=new i(e,Fe(Fe({},this.options),{parent:this,id:t.id||e.id})),s=Fe(Fe({},xV),t);s.sync&&r.onTransition(function(l){n.send(DA,{state:l,id:r.id})});var o=r;return this.children.set(r.id,o),s.autoForward&&this.forwardTo.add(r.id),r.onDone(function(l){n.removeChild(r.id),n.send(Ri(l,{origin:r.id}))}).start(),o},i.prototype.spawnBehavior=function(e,t){var n=_V(e,{id:t,parent:this});return this.children.set(t,n),n},i.prototype.spawnPromise=function(e,t){var n,r=this,s=!1,o;e.then(function(h){s||(o=h,r.removeChild(t),r.send(Ri(jf(t,h),{origin:t})))},function(h){if(!s){r.removeChild(t);var d=vh(t,h);try{r.send(Ri(d,{origin:t}))}catch{r.devTools&&r.devTools.send(d,r.state),r.machine.strict&&r.stop()}}});var l=(n={id:t,send:function(){},subscribe:function(h,d,f){var g=N_(h,d,f),y=!1;return e.then(function(_){y||(g.next(_),!y&&g.complete())},function(_){y||g.error(_)}),{unsubscribe:function(){return y=!0}}},stop:function(){s=!0},toJSON:function(){return{id:t}},getSnapshot:function(){return o}},n[da]=function(){return this},n);return this.children.set(t,l),l},i.prototype.spawnCallback=function(e,t){var n,r=this,s=!1,o=new Set,l=new Set,h,d=function(y){h=y,l.forEach(function(_){return _(y)}),!s&&r.send(Ri(y,{origin:t}))},f;try{f=e(d,function(y){o.add(y)})}catch(y){this.send(vh(t,y))}if(FM(f))return this.spawnPromise(f,t);var g=(n={id:t,send:function(y){return o.forEach(function(_){return _(y)})},subscribe:function(y){var _=N_(y);return l.add(_.next),{unsubscribe:function(){l.delete(_.next)}}},stop:function(){s=!0,fn(f)&&f()},toJSON:function(){return{id:t}},getSnapshot:function(){return h}},n[da]=function(){return this},n);return this.children.set(t,g),g},i.prototype.spawnObservable=function(e,t){var n,r=this,s,o=e.subscribe(function(h){s=h,r.send(Ri(h,{origin:t}))},function(h){r.removeChild(t),r.send(Ri(vh(t,h),{origin:t}))},function(){r.removeChild(t),r.send(Ri(jf(t),{origin:t}))}),l=(n={id:t,send:function(){},subscribe:function(h,d,f){return e.subscribe(h,d,f)},stop:function(){return o.unsubscribe()},getSnapshot:function(){return s},toJSON:function(){return{id:t}}},n[da]=function(){return this},n);return this.children.set(t,l),l},i.prototype.spawnActor=function(e,t){return this.children.set(t,e),e},i.prototype.spawnActivity=function(e){var t=this.machine.options&&this.machine.options.activities?this.machine.options.activities[e.type]:void 0;if(t){var n=t(this.state.context,e);this.spawnEffect(e.id,n)}},i.prototype.spawnEffect=function(e,t){var n;this.children.set(e,(n={id:e,send:function(){},subscribe:function(){return{unsubscribe:function(){}}},stop:t||void 0,getSnapshot:function(){},toJSON:function(){return{id:e}}},n[da]=function(){return this},n))},i.prototype.attachDev=function(){var e=fb();if(this.options.devTools&&e){if(e.__REDUX_DEVTOOLS_EXTENSION__){var t=typeof this.options.devTools=="object"?this.options.devTools:void 0;this.devTools=e.__REDUX_DEVTOOLS_EXTENSION__.connect(Fe(Fe({name:this.id,autoPause:!0,stateSanitizer:function(n){return{value:n.value,context:n.context,actions:n.actions}}},t),{features:Fe({jump:!1,skip:!1},t?t.features:void 0)}),this.machine),this.devTools.init(this.state)}yV(this)}},i.prototype.toJSON=function(){return{id:this.id}},i.prototype[da]=function(){return this},i.prototype.getSnapshot=function(){return this.status===Vi.NotStarted?this.initialState:this._state},i.defaultOptions={execute:!0,deferEvents:!0,clock:{setTimeout:function(e,t){return setTimeout(e,t)},clearTimeout:function(e){return clearTimeout(e)}},logger:console.log.bind(console),devTools:!1},i.interpret=XA,i}();function XA(i,e){var t=new bV(i,e);return t}function wV(i){if(typeof i=="string"){var e={type:i};return e.toString=function(){return i},e}return i}function Nf(i){return Fe(Fe({type:I_},i),{toJSON:function(){i.onDone,i.onError;var e=cb(i,["onDone","onError"]);return Fe(Fe({},e),{type:I_,src:wV(i.src)})}})}var Bf="",F_="#",Ly="*",Pc={},Rc=function(i){return i[0]===F_},SV=function(){return{actions:{},guards:{},services:{},activities:{},delays:{}}},MV=function(){function i(e,t,n,r){var s=this;n===void 0&&(n="context"in e?e.context:void 0);var o;this.config=e,this._context=n,this.order=-1,this.__xstatenode=!0,this.__cache={events:void 0,relativeValue:new Map,initialStateValue:void 0,initialState:void 0,on:void 0,transitions:void 0,candidates:{},delayedTransitions:void 0},this.idMap={},this.tags=[],this.options=Object.assign(SV(),t),this.parent=r==null?void 0:r.parent,this.key=this.config.key||(r==null?void 0:r.key)||this.config.id||"(machine)",this.machine=this.parent?this.parent.machine:this,this.path=this.parent?this.parent.path.concat(this.key):[],this.delimiter=this.config.delimiter||(this.parent?this.parent.delimiter:IA),this.id=this.config.id||Vn([this.machine.key],on(this.path),!1).join(this.delimiter),this.version=this.parent?this.parent.version:this.config.version,this.type=this.config.type||(this.config.parallel?"parallel":this.config.states&&Object.keys(this.config.states).length?"compound":this.config.history?"history":"atomic"),this.schema=this.parent?this.machine.schema:(o=this.config.schema)!==null&&o!==void 0?o:{},this.description=this.config.description,this.initial=this.config.initial,this.states=this.config.states?mh(this.config.states,function(d,f){var g,y=new i(d,{},void 0,{parent:s,key:f});return Object.assign(s.idMap,Fe((g={},g[y.id]=y,g),y.idMap)),y}):Pc;var l=0;function h(d){var f,g;d.order=l++;try{for(var y=Qt(iu(d)),_=y.next();!_.done;_=y.next()){var w=_.value;h(w)}}catch(S){f={error:S}}finally{try{_&&!_.done&&(g=y.return)&&g.call(y)}finally{if(f)throw f.error}}}h(this),this.history=this.config.history===!0?"shallow":this.config.history||!1,this._transient=!!this.config.always||(this.config.on?Array.isArray(this.config.on)?this.config.on.some(function(d){var f=d.event;return f===Bf}):Bf in this.config.on:!1),this.strict=!!this.config.strict,this.onEntry=ns(this.config.entry||this.config.onEntry).map(function(d){return td(d)}),this.onExit=ns(this.config.exit||this.config.onExit).map(function(d){return td(d)}),this.meta=this.config.meta,this.doneData=this.type==="final"?this.config.data:void 0,this.invoke=ns(this.config.invoke).map(function(d,f){var g,y;if(nu(d)){var _=If(s.id,f);return s.machine.options.services=Fe((g={},g[_]=d,g),s.machine.options.services),Nf({src:_,id:_})}else if(an(d.src)){var _=d.id||If(s.id,f);return Nf(Fe(Fe({},d),{id:_,src:d.src}))}else if(nu(d.src)||fn(d.src)){var _=d.id||If(s.id,f);return s.machine.options.services=Fe((y={},y[_]=d.src,y),s.machine.options.services),Nf(Fe(Fe({id:_},d),{src:_}))}else{var w=d.src;return Nf(Fe(Fe({id:If(s.id,f)},d),{src:w}))}}),this.activities=ns(this.config.activities).concat(this.invoke).map(function(d){return pb(d)}),this.transition=this.transition.bind(this),this.tags=ns(this.config.tags)}return i.prototype._init=function(){this.__cache.transitions||GA(this).forEach(function(e){return e.on})},i.prototype.withConfig=function(e,t){var n=this.options,r=n.actions,s=n.activities,o=n.guards,l=n.services,h=n.delays;return new i(this.config,{actions:Fe(Fe({},r),e.actions),activities:Fe(Fe({},s),e.activities),guards:Fe(Fe({},o),e.guards),services:Fe(Fe({},l),e.services),delays:Fe(Fe({},h),e.delays)},t??this.context)},i.prototype.withContext=function(e){return new i(this.config,this.options,e)},Object.defineProperty(i.prototype,"context",{get:function(){return fn(this._context)?this._context():this._context},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"definition",{get:function(){return{id:this.id,key:this.key,version:this.version,context:this.context,type:this.type,initial:this.initial,history:this.history,states:mh(this.states,function(e){return e.definition}),on:this.on,transitions:this.transitions,entry:this.onEntry,exit:this.onExit,activities:this.activities||[],meta:this.meta,order:this.order||-1,data:this.doneData,invoke:this.invoke,description:this.description,tags:this.tags}},enumerable:!1,configurable:!0}),i.prototype.toJSON=function(){return this.definition},Object.defineProperty(i.prototype,"on",{get:function(){if(this.__cache.on)return this.__cache.on;var e=this.transitions;return this.__cache.on=e.reduce(function(t,n){return t[n.eventType]=t[n.eventType]||[],t[n.eventType].push(n),t},{})},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"after",{get:function(){return this.__cache.delayedTransitions||(this.__cache.delayedTransitions=this.getDelayedTransitions(),this.__cache.delayedTransitions)},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"transitions",{get:function(){return this.__cache.transitions||(this.__cache.transitions=this.formatTransitions(),this.__cache.transitions)},enumerable:!1,configurable:!0}),i.prototype.getCandidates=function(e){if(this.__cache.candidates[e])return this.__cache.candidates[e];var t=e===Bf,n=this.transitions.filter(function(r){var s=r.eventType===e;return t?s:s||r.eventType===Ly});return this.__cache.candidates[e]=n,n},i.prototype.getDelayedTransitions=function(){var e=this,t=this.config.after;if(!t)return[];var n=function(s,o){var l=fn(s)?"".concat(e.id,":delay[").concat(o,"]"):s,h=rV(l,e.id);return e.onEntry.push(VA(h,{delay:s})),e.onExit.push(eV(h)),h},r=mu(t)?t.map(function(s,o){var l=n(s.delay,o);return Fe(Fe({},s),{event:l})}):Rn(Object.keys(t).map(function(s,o){var l=t[s],h=an(l)?{target:l}:l,d=isNaN(+s)?s:+s,f=n(d,o);return ns(h).map(function(g){return Fe(Fe({},g),{event:f,delay:d})})}));return r.map(function(s){var o=s.delay;return Fe(Fe({},e.formatTransition(s)),{delay:o})})},i.prototype.getStateNodes=function(e){var t,n=this;if(!e)return[];var r=e instanceof po?e.value:Th(e,this.delimiter);if(an(r)){var s=this.getStateNode(r).initial;return s!==void 0?this.getStateNodes((t={},t[r]=s,t)):[this,this.states[r]]}var o=Object.keys(r),l=[this];return l.push.apply(l,Vn([],on(Rn(o.map(function(h){return n.getStateNode(h).getStateNodes(r[h])}))),!1)),l},i.prototype.handles=function(e){var t=OA(e);return this.events.includes(t)},i.prototype.resolveState=function(e){var t=e instanceof po?e:po.create(e),n=Array.from(Dc([],this.getStateNodes(t.value)));return new po(Fe(Fe({},t),{value:this.resolve(t.value),configuration:n,done:Ah(n,this),tags:HM(n),machine:this.machine}))},i.prototype.transitionLeafNode=function(e,t,n){var r=this.getStateNode(e),s=r.next(t,n);return!s||!s.transitions.length?this.next(t,n):s},i.prototype.transitionCompoundNode=function(e,t,n){var r=Object.keys(e),s=this.getStateNode(r[0]),o=s._transition(e[r[0]],t,n);return!o||!o.transitions.length?this.next(t,n):o},i.prototype.transitionParallelNode=function(e,t,n){var r,s,o={};try{for(var l=Qt(Object.keys(e)),h=l.next();!h.done;h=l.next()){var d=h.value,f=e[d];if(f){var g=this.getStateNode(d),y=g._transition(f,t,n);y&&(o[d]=y)}}}catch(E){r={error:E}}finally{try{h&&!h.done&&(s=l.return)&&s.call(l)}finally{if(r)throw r.error}}var _=Object.keys(o).map(function(E){return o[E]}),w=Rn(_.map(function(E){return E.transitions})),S=_.some(function(E){return E.transitions.length>0});if(!S)return this.next(t,n);var b=Rn(_.map(function(E){return E.entrySet})),T=Rn(Object.keys(o).map(function(E){return o[E].configuration}));return{transitions:w,entrySet:b,exitSet:Rn(_.map(function(E){return E.exitSet})),configuration:T,source:t,actions:Rn(Object.keys(o).map(function(E){return o[E].actions}))}},i.prototype._transition=function(e,t,n){return an(e)?this.transitionLeafNode(e,t,n):Object.keys(e).length===1?this.transitionCompoundNode(e,t,n):this.transitionParallelNode(e,t,n)},i.prototype.getTransitionData=function(e,t){return this._transition(e.value,e,Ri(t))},i.prototype.next=function(e,t){var n,r,s=this,o=t.name,l=[],h=[],d;try{for(var f=Qt(this.getCandidates(o)),g=f.next();!g.done;g=f.next()){var y=g.value,_=y.cond,w=y.in,S=e.context,b=w?an(w)&&Rc(w)?e.matches(Th(this.getStateNodeById(w).path,this.delimiter)):hb(Th(w,this.delimiter),VF(this.path.slice(0,-2))(e.value)):!0,T=!1;try{T=!_||UA(this.machine,_,S,t,e)}catch(D){throw new Error("Unable to evaluate guard '".concat(_.name||_.type,"' in transition for event '").concat(o,"' in state node '").concat(this.id,`': `).concat(D.message))}if(T&&b){y.target!==void 0&&(h=y.target),l.push.apply(l,Vn([],on(y.actions),!1)),d=y;break}}}catch(D){n={error:D}}finally{try{g&&!g.done&&(r=f.return)&&r.call(f)}finally{if(n)throw n.error}}if(d){if(!h.length)return{transitions:[d],entrySet:[],exitSet:[],configuration:e.value?[this]:[],source:e,actions:l};var E=Rn(h.map(function(D){return s.getRelativeStateNodes(D,e.historyValue)})),C=!!d.internal,A=C?[]:Rn(E.map(function(D){return s.nodesFromChild(D)}));return{transitions:[d],entrySet:A,exitSet:C?[]:[this],configuration:E,source:e,actions:l}}},i.prototype.nodesFromChild=function(e){if(e.escapes(this))return[];for(var t=[],n=e;n&&n!==this;)t.push(n),n=n.parent;return t.push(this),t},i.prototype.escapes=function(e){if(this===e)return!1;for(var t=this.parent;t;){if(t===e)return!1;t=t.parent}return!0},i.prototype.getActions=function(e,t,n,r){var s,o,l,h,d=Dc([],r?this.getStateNodes(r.value):[this]),f=e.configuration.length?Dc(d,e.configuration):d;try{for(var g=Qt(f),y=g.next();!y.done;y=g.next()){var _=y.value;Xf(d,_)||e.entrySet.push(_)}}catch(F){s={error:F}}finally{try{y&&!y.done&&(o=g.return)&&o.call(g)}finally{if(s)throw s.error}}try{for(var w=Qt(d),S=w.next();!S.done;S=w.next()){var _=S.value;(!Xf(f,_)||Xf(e.exitSet,_.parent))&&e.exitSet.push(_)}}catch(F){l={error:F}}finally{try{S&&!S.done&&(h=w.return)&&h.call(w)}finally{if(l)throw l.error}}var b=Rn(e.entrySet.map(function(F){var P=[];if(F.type!=="final")return P;var k=F.parent;if(!k.parent)return P;P.push(Of(F.id,F.doneData),Of(k.id,F.doneData?bm(F.doneData,t,n):void 0));var j=k.parent;return j.type==="parallel"&&iu(j).every(function(G){return Ah(e.configuration,G)})&&P.push(Of(j.id)),P}));e.exitSet.sort(function(F,P){return P.order-F.order}),e.entrySet.sort(function(F,P){return F.order-P.order});var T=new Set(e.entrySet),E=new Set(e.exitSet),C=on([Rn(Array.from(T).map(function(F){return Vn(Vn([],on(F.activities.map(function(P){return tV(P)})),!1),on(F.onEntry),!1)})).concat(b.map(KF)),Rn(Array.from(E).map(function(F){return Vn(Vn([],on(F.onExit),!1),on(F.activities.map(function(P){return nV(P)})),!1)}))],2),A=C[0],D=C[1],I=Sm(D.concat(e.actions).concat(A),this.machine.options.actions);return I},i.prototype.transition=function(e,t,n){e===void 0&&(e=this.initialState);var r=Ri(t),s;if(e instanceof po)s=n===void 0?e:this.resolveState(po.from(e,n));else{var o=an(e)?this.resolve(xm(this.getResolvedPath(e))):this.resolve(e),l=n??this.machine.context;s=this.resolveState(po.from(o,l))}if(this.strict&&!this.events.includes(r.name)&&!GF(r.name))throw new Error("Machine '".concat(this.id,"' does not accept event '").concat(r.name,"'"));var h=this._transition(s.value,s,r)||{transitions:[],configuration:[],entrySet:[],exitSet:[],source:s,actions:[]},d=Dc([],this.getStateNodes(s.value)),f=h.configuration.length?Dc(d,h.configuration):d;return h.configuration=Vn([],on(f),!1),this.resolveTransition(h,s,s.context,r)},i.prototype.resolveRaisedTransition=function(e,t,n){var r,s=e.actions;return e=this.transition(e,t),e._event=n,e.event=n.data,(r=e.actions).unshift.apply(r,Vn([],on(s),!1)),e},i.prototype.resolveTransition=function(e,t,n,r){var s,o,l=this;r===void 0&&(r=wm);var h=e.configuration,d=!t||e.transitions.length>0,f=d?uV(this.machine,h):void 0,g=t?t.historyValue?t.historyValue:e.source?this.machine.historyValue(t.value):void 0:void 0,y=this.getActions(e,n,r,t),_=t?Fe({},t.activities):{};try{for(var w=Qt(y),S=w.next();!S.done;S=w.next()){var b=S.value;b.type===D_?_[b.activity.id||b.activity.type]=b:b.type===ub&&(_[b.activity.id||b.activity.type]=!1)}}catch(re){s={error:re}}finally{try{S&&!S.done&&(o=w.return)&&o.call(w)}finally{if(s)throw s.error}}var T=on(z_(this,t,n,r,y,this.machine.config.preserveActionOrder),2),E=T[0],C=T[1],A=on(NA(E,function(re){return re.type===bv||re.type===wv&&re.to===ed.Internal}),2),D=A[0],I=A[1],F=E.filter(function(re){var se;return re.type===D_&&((se=re.activity)===null||se===void 0?void 0:se.type)===I_}),P=F.reduce(function(re,se){return re[se.activity.id]=sV(se.activity,l.machine,C,r),re},t?Fe({},t.children):{}),k=d?e.configuration:t?t.configuration:[],j=Ah(k,this),G=new po({value:f||t.value,context:C,_event:r,_sessionid:t?t._sessionid:null,historyValue:f?g?jF(g,f):void 0:t?t.historyValue:void 0,history:!f||e.source?t:void 0,actions:f?I:[],activities:f?_:t?t.activities:{},events:[],configuration:k,transitions:e.transitions,children:P,done:j,tags:HM(k),machine:this}),ne=n!==C;G.changed=r.name===DA||ne;var ce=G.history;ce&&delete ce.history;var Z=!j&&(this._transient||h.some(function(re){return re._transient}));if(!d&&(!Z||r.name===Bf))return G;var $=G;if(!j)for(Z&&($=this.resolveRaisedTransition($,{type:OF},r));D.length;){var K=D.shift();$=this.resolveRaisedTransition($,K._event,r)}var pe=$.changed||(ce?!!$.actions.length||ne||typeof ce.value!=typeof $.value||!jA($.value,ce.value):void 0);return $.changed=pe,$.history=ce,$},i.prototype.getStateNode=function(e){if(Rc(e))return this.machine.getStateNodeById(e);if(!this.states)throw new Error("Unable to retrieve child state '".concat(e,"' from '").concat(this.id,"'; no child states exist."));var t=this.states[e];if(!t)throw new Error("Child state '".concat(e,"' does not exist on '").concat(this.id,"'"));return t},i.prototype.getStateNodeById=function(e){var t=Rc(e)?e.slice(F_.length):e;if(t===this.id)return this;var n=this.machine.idMap[t];if(!n)throw new Error("Child state node '#".concat(t,"' does not exist on machine '").concat(this.id,"'"));return n},i.prototype.getStateNodeByPath=function(e){if(typeof e=="string"&&Rc(e))try{return this.getStateNodeById(e.slice(1))}catch{}for(var t=k_(e,this.delimiter).slice(),n=this;t.length;){var r=t.shift();if(!r.length)break;n=n.getStateNode(r)}return n},i.prototype.resolve=function(e){var t,n=this;if(!e)return this.initialStateValue||Pc;switch(this.type){case"parallel":return mh(this.initialStateValue,function(s,o){return s?n.getStateNode(o).resolve(e[o]||s):Pc});case"compound":if(an(e)){var r=this.getStateNode(e);return r.type==="parallel"||r.type==="compound"?(t={},t[e]=r.initialStateValue,t):e}return Object.keys(e).length?mh(e,function(s,o){return s?n.getStateNode(o).resolve(s):Pc}):this.initialStateValue||{};default:return e||Pc}},i.prototype.getResolvedPath=function(e){if(Rc(e)){var t=this.machine.idMap[e.slice(F_.length)];if(!t)throw new Error("Unable to find state node '".concat(e,"'"));return t.path}return k_(e,this.delimiter)},Object.defineProperty(i.prototype,"initialStateValue",{get:function(){var e;if(this.__cache.initialStateValue)return this.__cache.initialStateValue;var t;if(this.type==="parallel")t=UM(this.states,function(n){return n.initialStateValue||Pc},function(n){return n.type!=="history"});else if(this.initial!==void 0){if(!this.states[this.initial])throw new Error("Initial state '".concat(this.initial,"' not found on '").concat(this.key,"'"));t=Mm(this.states[this.initial])?this.initial:(e={},e[this.initial]=this.states[this.initial].initialStateValue,e)}else t={};return this.__cache.initialStateValue=t,this.__cache.initialStateValue},enumerable:!1,configurable:!0}),i.prototype.getInitialState=function(e,t){this._init();var n=this.getStateNodes(e);return this.resolveTransition({configuration:n,entrySet:n,exitSet:[],transitions:[],source:void 0,actions:[]},void 0,t??this.machine.context,void 0)},Object.defineProperty(i.prototype,"initialState",{get:function(){var e=this.initialStateValue;if(!e)throw new Error("Cannot retrieve initial state from simple state '".concat(this.id,"'."));return this.getInitialState(e)},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"target",{get:function(){var e;if(this.type==="history"){var t=this.config;an(t.target)?e=Rc(t.target)?xm(this.machine.getStateNodeById(t.target).path.slice(this.path.length-1)):t.target:e=t.target}return e},enumerable:!1,configurable:!0}),i.prototype.getRelativeStateNodes=function(e,t,n){return n===void 0&&(n=!0),n?e.type==="history"?e.resolveHistory(t):e.initialStateNodes:[e]},Object.defineProperty(i.prototype,"initialStateNodes",{get:function(){var e=this;if(Mm(this))return[this];if(this.type==="compound"&&!this.initial)return[this];var t=Wf(this.initialStateValue);return Rn(t.map(function(n){return e.getFromRelativePath(n)}))},enumerable:!1,configurable:!0}),i.prototype.getFromRelativePath=function(e){if(!e.length)return[this];var t=on(e),n=t[0],r=t.slice(1);if(!this.states)throw new Error("Cannot retrieve subPath '".concat(n,"' from node with no states"));var s=this.getStateNode(n);if(s.type==="history")return s.resolveHistory();if(!this.states[n])throw new Error("Child state '".concat(n,"' does not exist on '").concat(this.id,"'"));return this.states[n].getFromRelativePath(r)},i.prototype.historyValue=function(e){if(Object.keys(this.states).length)return{current:e||this.initialStateValue,states:UM(this.states,function(t,n){if(!e)return t.historyValue();var r=an(e)?void 0:e[n];return t.historyValue(r||t.initialStateValue)},function(t){return!t.history})}},i.prototype.resolveHistory=function(e){var t=this;if(this.type!=="history")return[this];var n=this.parent;if(!e){var r=this.target;return r?Rn(Wf(r).map(function(o){return n.getFromRelativePath(o)})):n.initialStateNodes}var s=HF(n.path,"states")(e).current;return an(s)?[n.getStateNode(s)]:Rn(Wf(s).map(function(o){return t.history==="deep"?n.getFromRelativePath(o):[n.states[o[0]]]}))},Object.defineProperty(i.prototype,"stateIds",{get:function(){var e=this,t=Rn(Object.keys(this.states).map(function(n){return e.states[n].stateIds}));return[this.id].concat(t)},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"events",{get:function(){var e,t,n,r;if(this.__cache.events)return this.__cache.events;var s=this.states,o=new Set(this.ownEvents);if(s)try{for(var l=Qt(Object.keys(s)),h=l.next();!h.done;h=l.next()){var d=h.value,f=s[d];if(f.states)try{for(var g=(n=void 0,Qt(f.events)),y=g.next();!y.done;y=g.next()){var _=y.value;o.add("".concat(_))}}catch(w){n={error:w}}finally{try{y&&!y.done&&(r=g.return)&&r.call(g)}finally{if(n)throw n.error}}}}catch(w){e={error:w}}finally{try{h&&!h.done&&(t=l.return)&&t.call(l)}finally{if(e)throw e.error}}return this.__cache.events=Array.from(o)},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"ownEvents",{get:function(){var e=new Set(this.transitions.filter(function(t){return!(!t.target&&!t.actions.length&&t.internal)}).map(function(t){return t.eventType}));return Array.from(e)},enumerable:!1,configurable:!0}),i.prototype.resolveTarget=function(e){var t=this;if(e!==void 0)return e.map(function(n){if(!an(n))return n;var r=n[0]===t.delimiter;if(r&&!t.parent)return t.getStateNodeByPath(n.slice(1));var s=r?t.key+n:n;if(t.parent)try{var o=t.parent.getStateNodeByPath(s);return o}catch(l){throw new Error("Invalid transition definition for state node '".concat(t.id,`': `).concat(l.message))}else return t.getStateNodeByPath(s)})},i.prototype.formatTransition=function(e){var t=this,n=ZF(e.target),r="internal"in e?e.internal:n?n.some(function(h){return an(h)&&h[0]===t.delimiter}):!0,s=this.machine.options.guards,o=this.resolveTarget(n),l=Fe(Fe({},e),{actions:Sm(ns(e.actions)),cond:zA(e.cond,s),target:o,source:this,internal:r,eventType:e.event,toJSON:function(){return Fe(Fe({},l),{target:l.target?l.target.map(function(h){return"#".concat(h.id)}):void 0,source:"#".concat(t.id)})}});return l},i.prototype.formatTransitions=function(){var e,t,n=this,r;if(!this.config.on)r=[];else if(Array.isArray(this.config.on))r=this.config.on;else{var s=this.config.on,o=Ly,l=s[o],h=l===void 0?[]:l,d=cb(s,[typeof o=="symbol"?o:o+""]);r=Rn(Object.keys(d).map(function(E){var C=Cc(E,d[E]);return C}).concat(Cc(Ly,h)))}var f=this.config.always?Cc("",this.config.always):[],g=this.config.onDone?Cc(String(Of(this.id)),this.config.onDone):[],y=Rn(this.invoke.map(function(E){var C=[];return E.onDone&&C.push.apply(C,Vn([],on(Cc(String(jf(E.id)),E.onDone)),!1)),E.onError&&C.push.apply(C,Vn([],on(Cc(String(vh(E.id)),E.onError)),!1)),C})),_=this.after,w=Rn(Vn(Vn(Vn(Vn([],on(g),!1),on(y),!1),on(r),!1),on(f),!1).map(function(E){return ns(E).map(function(C){return n.formatTransition(C)})}));try{for(var S=Qt(_),b=S.next();!b.done;b=S.next()){var T=b.value;w.push(T)}}catch(E){e={error:E}}finally{try{b&&!b.done&&(t=S.return)&&t.call(S)}finally{if(e)throw e.error}}return w},i}();function EV(i,e){return new MV(i,e)}const mb=bt(Me({},ab),{preset:String,strideForward:Number,strideRight:Number,strideMove:Boolean}),qA=bt(Me({},lb),{preset:"default",strideForward:0,strideRight:0,strideMove:!1});var TV=EV({states:{idle:{on:{RUN_START:"running",RUN_BACKWARDS_START:"runningBackwards",JUMP_START:"jumping"}},running:{on:{RUN_STOP:"idle",RUN_BACKWARDS_START:"runningBackwards",JUMP_START:"jumping"}},runningBackwards:{on:{RUN_STOP:"idle",RUN_START:"running",JUMP_START:"jumping"}},jumping:{on:{JUMP_STOP:"idle"}}},initial:"idle"});const hh="https://unpkg.com/lingo3d-dummy@1.0.1/assets/";class Sv extends Ao{constructor(){super(),this.poseService=XA(TV),this.srcState=new Tn(hh+"ybot.fbx"),this.presetState=new Tn("default"),this.strideForwardState=new Tn(0),this.strideRightState=new Tn(0),this.strideMoveState=new Tn(!1),this.jumpHeight=10,this.width=20,this.depth=20,this.pbr=!0,this.createEffect(()=>{super.src=this.srcState.get();const l=this.presetState.get()==="rifle"?"rifle-":"";this.animations={idle:hh+l+"idle.fbx",running:hh+l+"running.fbx",runningBackwards:hh+l+"running-backwards.fbx",jumping:hh+l+"falling.fbx"},this.animation="idle"},[this.presetState.get,this.srcState.get]);const{poseService:e}=this,[t,n]=Ge("idle");this.createEffect(()=>{if((this.animation=n())!=="jumping")return;this.velocity.y=this.jumpHeight;const l=wi(()=>{this.velocity.y===0&&e.send("JUMP_STOP")});return()=>{l.cancel()}},[n]),e.onTransition(o=>o.changed&&t(o.value)).start(),this.then(()=>e.stop());const[r,s]=Ge(void 0);this.loadedResolvable.then(()=>r({spine:this.find("mixamorigSpine",!0)})),this.createEffect(()=>{const o=s();if(!o)return;const{spine:l}=o,{strideForward:h,strideRight:d,strideMove:f}=this;if(!h&&!d){const b=this.pointAt(1e3);this.loadedGroup.lookAt(Mh(b)),e.send("RUN_STOP");return}const g=h>0,y=g?-h:h,_=g?-d:d,w=90-Math.atan2(-y,-_)*pi,S=nb(()=>{e.send(g?"RUN_BACKWARDS_START":"RUN_START");const b=this.pointAt(1e3);this.loadedGroup.lookAt(Mh(b));const T=l.pointAt(1e3),E=this.getWorldPosition(),C=Tz({x:b.x,y:b.z},{x:E.x,y:E.z},w),A=new Sh(C.x,b.y,C.y);if(this.loadedGroup.lookAt(Mh(A)),l.lookAt(T),!f)return;const{x:D,y:I}=Az(0,0,w+90,Math.max(Math.abs(h),Math.abs(d)));this.moveForward(g?I:-I),this.moveRight(g?-D:D)});return()=>{S.cancel()}},[this.strideMoveState.get,this.strideForwardState.get,this.strideRightState.get,s])}get src(){return this.srcState.get()}set src(e){this.srcState.set(e)}get preset(){return this.presetState.get()}set preset(e){this.presetState.set(e)}get strideForward(){return this.strideForwardState.get()}set strideForward(e){this.strideForwardState.set(e)}get strideRight(){return this.strideRightState.get()}set strideRight(e){this.strideRightState.set(e)}get strideMove(){return this.strideMoveState.get()}set strideMove(e){this.strideMoveState.set(e)}jump(e=10){this.jumpHeight=e,this.poseService.send("JUMP_START")}}Sv.componentName="dummy";Sv.defaults=qA;Sv.schema=mb;const YA=Me(Me(Me({},CA),av),Zx),ZA=Me(Me(Me({},PA),lv),Kx),AV=yl(()=>$n(()=>import("./loadSVG.b44fe156.js"),["./loadSVG.b44fe156.js","./entry.c3abd651.js","./entry.f74844d6.css"],import.meta.url)),CV=new WeakMap;class wd extends pv{constructor(){super(...arguments),this.material=new wl}dispose(){return super.dispose(),this.material.dispose(),this}load(e){return AV().then(t=>t.default(e))}resolveLoaded(e){const t=new ei;t.scale.y*=-1;const n=Ma(CV,e,()=>{const s=[];for(const d of e.paths)for(const f of d.toShapes(!0))s.push(f);if(!s.length)return[];const o=new ei;for(const d of s){const f=new ba(d,{depth:0,bevelEnabled:!1});f.dispose(),o.add(new In(f))}const l=TA(o),h=[];for(const d of s)h.push(new ba(d,{depth:l.y,bevelEnabled:!1}));return h});for(const s of n){const o=new In(s,this.material);t.add(o)}const r=AA(t,this._src);!this.widthSet&&(this.object3d.scale.x=r.x),!this.heightSet&&(this.object3d.scale.y=r.y),!this.depthSet&&(this.object3d.scale.z=r.z),this.loadedGroup.add(t),this.loadedResolvable.resolve(t)}}wd.componentName="svgMesh";wd.defaults=ZA;wd.schema=YA;ks(wd,[Jx,cv]);const KA=bt(Me({},SA),{resolution:Number,blur:Number,contrast:Number,mirror:Number}),JA=bt(Me({},MA),{resolution:512,blur:1024,contrast:1.5,mirror:1});class Mv extends bd{constructor(){super(),this.resolutionState=new Tn(512),this.blurState=new Tn(1024),this.contrastState=new Tn(1.5),this.mirrorState=new Tn(1),this.rotationX=-90;const[e,t]=Ge(void 0);$n(()=>import("./MeshReflectorMaterial.df3912f0.js"),["./MeshReflectorMaterial.df3912f0.js","./entry.c3abd651.js","./entry.f74844d6.css"],import.meta.url).then(n=>e(n.default)),this.createEffect(()=>{if(this.done)return;const n=t();if(!n)return;const r=new n(Sn(),Ze(),$e,this.object3d,{resolution:this.resolutionState.get(),blur:[this.blurState.get(),this.blurState.get()],mixBlur:2.5,mixContrast:this.contrastState.get(),mirror:this.mirrorState.get()});jT(this.material,r),this.material.dispose(),this.material=this.object3d.material=r;const s=nb(()=>{r.update()});return()=>{r.dispose(),s.cancel()}},[Sn,t,Ze,this.resolutionState.get,this.blurState.get,this.contrastState.get,this.mirrorState.get])}get resolution(){return this.resolutionState.get()}set resolution(e){this.resolutionState.set(e)}get blur(){return this.blurState.get()}set blur(e){this.blurState.set(e)}get contrast(){return this.contrastState.get()}set contrast(e){this.contrastState.set(e)}get mirror(){return this.mirrorState.get()}set mirror(e){this.mirrorState.set(e)}}Mv.componentName="reflector";Mv.defaults=JA;Mv.schema=KA;const[PV,RV]=Er(),QA=Me({},Tl),$A=Me({},fu),[A9,WM]=Ge(!0),V_=new Set,LV=J_(()=>{for(const i of V_){const{parent:e}=i.outerObject3d;e==null||e.remove(i.outerObject3d),Yc.setFromObject(i.outerObject3d),i.object3d.scale.copy(Yc.getSize(Ot)),e==null||e.add(i.outerObject3d)}V_.clear()},0,"trailing");var jM=i=>{V_.add(i),LV()};class Sd extends To{constructor(){super(new ei)}append(e){super.append(e),jM(this)}attach(e){super.attach(e),jM(this)}}Sd.componentName="group";Sd.defaults=$A;Sd.schema=QA;Kt(()=>{const i=WM(),e=Os();if(!e.length||!i)return;const t=new ei;$e.add(t);const n=new Sa(t);X2.add(n),jh(n);const r=[];for(const{outerObject3d:l}of e)l.parent&&(r.push([l,l.parent]),t.attach(l));Yc.setFromObject(t);for(const[l,h]of r)h.attach(l);t.position.copy(Yc.getCenter(Ot));for(const[l]of r)t.attach(l);let s=!1;const o=RV(()=>{if(!e.length||s)return;s=!0;const l=new Sd;l.outerObject3d.position.copy(t.position);for(const h of e)l.attach(h);Di(l)});return()=>{if(Di(),!n.done&&!s)for(const[l,h]of r)h.attach(l);jh(void 0),n.dispose(),$e.remove(t),o.cancel()}},[Os,WM]);const DV=Me({},Sl);class eC extends Bs{constructor(){super(new ei),nF(!0)}}eC.componentName="sky";eC.defaults=DV;const IV=bt(Me(Me({},Tl),lA),{mouseControl:[Boolean,String],mouseControlMode:String}),OV=bt(Me(Me({},fu),cA),{mouseControl:!1}),vb=Me({},IV),gb=Me({},OV);class Md extends yA{constructor(e=new fi(75,1,Qm,$m)){super(e)}}Md.componentName="camera";Md.defaults=gb;Md.schema=vb;const yb=bt(Me({},vb),{target:Object,lockTargetRotation:[Boolean,String]}),_b=bt(Me({},gb),{lockTargetRotation:!0}),kV=i=>!!i&&(ml(i)||i instanceof ov),zf=new WeakSet;class Ev extends Md{constructor(){super(),this.lockTargetRotation=!0,this.targetState=new Tn(void 0),this.retarget=Mr(()=>{var r;let s;for(const o of(r=this.children)!==null&&r!==void 0?r:[])if(s)o.outerObject3d.parent!==this.camera&&this.camera[zf.has(o)?"attach":"add"](o.outerObject3d);else if(kV(o)){s=o;const{parent:l}=this.outerObject3d;l&&o.outerObject3d.parent!==l&&l[zf.has(s)?"attach":"add"](s.outerObject3d)}this.targetState.set(s)},0,"trailing");const e=this.camera;$e.attach(e),this.then(()=>$e.remove(e)),this.createEffect(()=>{const r=this.targetState.get();if(!r)return;"frustumCulled"in r&&(r.frustumCulled=!1);const s=tv(()=>r.parent!==this&&this.retarget());return()=>{s.cancel()}},[this.targetState.get]);const t=r=>{Wi.setFromQuaternion(r.outerObject3d.quaternion),Wi.y+=Math.PI,this.outerObject3d.setRotationFromEuler(Wi),this.updatePolarAngle()};let n=!1;this.createEffect(()=>{const r=this.targetState.get();if(!r)return;t(r);let s=!1;r.onRotationY=()=>s=!0;const o=wi(()=>{if(this.outerObject3d.position.copy(r.outerObject3d.position),!!this.lockTargetRotation){if(this.lockTargetRotation==="follow"||n||s){s=!1,t(r);return}Wi.setFromQuaternion(this.outerObject3d.quaternion),Wi.x=0,Wi.z=0,Wi.y+=Math.PI,r.outerObject3d.setRotationFromEuler(Wi)}});return()=>{o.cancel(),r.onRotationY=void 0}},[this.targetState.get]),this.createEffect(()=>{const r=this.targetState.get(),s=vi(),o=So(),l=gl();if(r&&r===s&&o&&l==="rotate")return n=!0,()=>{n=!1}},[this.targetState.get,vi,So,gl])}append(e){this._append(e),zf.delete(e),this.retarget()}attach(e){this._append(e),zf.add(e),this.retarget()}get gyroControl(){return!!this._gyroControl}set gyroControl(e){var t;if(this._gyroControl===e)return;this._gyroControl,(t=this.gyroControlHandle)===null||t===void 0||t.cancel();const n=Wi,r=hm,s=Pz,o=new ai(-Math.sqrt(.5),0,0,Math.sqrt(.5)),l=this.object3d.getWorldQuaternion(hm).clone(),h=0,d=f=>{var g,y,_;this.object3d.quaternion.copy(l),n.set(((g=f.beta)!==null&&g!==void 0?g:0)*xn,((y=f.alpha)!==null&&y!==void 0?y:0)*xn,-((_=f.gamma)!==null&&_!==void 0?_:0)*xn,"YXZ"),this.object3d.quaternion.multiply(r.setFromEuler(n));const w=-h*.5;s.set(0,Math.sin(w),0,Math.cos(w)),this.object3d.quaternion.multiply(s),this.object3d.quaternion.multiply(o)};window.addEventListener("deviceorientation",d),this.gyroControlHandle=this.cancellable(()=>window.removeEventListener("deviceorientation",d))}}Ev.defaults=_b;Ev.schema=yb;class tC extends Ev{constructor(){super(),this.innerZ=200,this.mouseControlMode="orbit",$n(()=>import("./enableBVHCamera.b097eb62.js"),["./enableBVHCamera.b097eb62.js","./useBVHMap.e693f0f0.js","./entry.c3abd651.js","./entry.f74844d6.css"],import.meta.url).then(e=>e.default.call(this))}}tC.componentName="thirdPersonCamera";class nC extends Ev{constructor(){super();const e=this.camera;this.loop(()=>{e.position.copy(this.object3d.getWorldPosition(Ot)),e.quaternion.copy(this.object3d.getWorldQuaternion(hm))}),this.createEffect(()=>{const t=this.targetState.get();if(!(!t||!(t instanceof Sa)||this._innerY!==void 0))return this.innerY=t.height*.4,()=>{this.innerY=0}},[this.targetState.get])}get innerY(){return this.object3d.position.y*pn}set innerY(e){this._innerY=this.object3d.position.y=e*Ye}}nC.componentName="firstPersonCamera";var NV=()=>{const i=new Al;return i.texture="data:image/png;base64,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",Li.delete(i),i.scale=.5,i};class Ed extends To{constructor(e,t){super(e),t&&this.createEffect(()=>{if(Ze()!==bn)return;const n=new t(this.object3d);$e.add(n);const r=NV();n.add(r.outerObject3d);const s=vd(({target:o})=>{o===r&&Di(this)});return()=>{n.dispose(),$e.remove(n),r.dispose(),s.cancel()}},[Ze])}dispose(){return super.dispose(),this.object3d.dispose(),this}lookAt(e){super.lookAt(e),this.rotationY+=180}get color(){return"#"+this.object3d.color.getHexString()}set color(e){this.object3d.color=new Pe(e)}get intensity(){return this.object3d.intensity}set intensity(e){this.object3d.intensity=e}getCenter(){return this.getWorldPosition()}}const Td=bt(Me({},Tl),{color:String,intensity:Number}),Ad=bt(Me({},fu),{color:"#ffffff",intensity:1}),iC=Me({},Td),rC=Me({},Ad),sC=Me({},iC),oC=Me({},rC);class Tv extends Ed{constructor(){super(new D2)}}Tv.componentName="ambientLight";Tv.defaults=oC;Tv.schema=sC;class BV extends jc{constructor(e,t){const n=[1,1,0,-1,1,0,-1,-1,0,1,-1,0,1,1,0],r=new zt;r.setAttribute("position",new xt(n,3)),r.computeBoundingSphere();const s=new os({fog:!1});super(r,s),this.light=e,this.color=t,this.type="RectAreaLightHelper";const o=[1,1,0,-1,1,0,-1,-1,0,1,1,0,-1,-1,0,1,-1,0],l=new zt;l.setAttribute("position",new xt(o,3)),l.computeBoundingSphere(),this.add(new In(l,new ss({side:xr,fog:!1})))}updateMatrixWorld(){if(this.scale.set(.5*this.light.width,.5*this.light.height,1),this.color!==void 0)this.material.color.set(this.color),this.children[0].material.color.set(this.color);else{this.material.color.copy(this.light.color).multiplyScalar(this.light.intensity);const e=this.material.color,t=Math.max(e.r,e.g,e.b);t>1&&e.multiplyScalar(1/t),this.children[0].material.color.copy(this.material.color)}this.matrixWorld.extractRotation(this.light.matrixWorld).scale(this.scale).copyPosition(this.light.matrixWorld),this.children[0].matrixWorld.copy(this.matrixWorld)}dispose(){this.geometry.dispose(),this.material.dispose(),this.children[0].geometry.dispose(),this.children[0].material.dispose()}}const aC=bt(Me({},Td),{helper:Boolean}),ha=bt(Me({},Ad),{depth:0,scaleZ:0,helper:!0}),zV=yl(async()=>{const{RectAreaLightUniformsLib:i}=await $n(()=>import("./RectAreaLightUniformsLib.68857814.js"),["./RectAreaLightUniformsLib.68857814.js","./entry.c3abd651.js","./entry.f74844d6.css"],import.meta.url);i.init()});class Av extends To{constructor(){super(new ei),this.helperState=new Tn(!0),(async()=>{if(await zV(),this.done)return;const e=this.light=new I2(this._color,this._intensity,this.width*this.scaleX*Ye,this.height*this.scaleY*Ye);this.object3d.add(e),this.then(()=>e.dispose()),this.createEffect(()=>{if(gl()!=="scale"||vi()!==this)return;const t=P_(()=>{const{x:n,y:r}=this.outerObject3d.scale;console.log(n,r),this.scaleX=n,this.scaleY=r});return()=>{t.cancel()}},[gl,vi]),this.createEffect(()=>{if(Ze()!==bn||!this.helperState.get())return;const t=new BV(e);return $e.add(t),()=>{t.dispose(),$e.remove(t)}},[Ze,this.helperState.get])})()}get helper(){return this.helperState.get()}set helper(e){this.helperState.set(e)}lookAt(e){super.lookAt(e),this.rotationY+=180}get color(){var e;return(e=this._color)!==null&&e!==void 0?e:ha.color}set color(e){this._color=e,this.light&&(this.light.color=new Pe(e))}get intensity(){var e;return(e=this._intensity)!==null&&e!==void 0?e:ha.intensity}set intensity(e){this._intensity=e,this.light&&(this.light.intensity=e)}get width(){var e;return(e=this._width)!==null&&e!==void 0?e:ha.width}set width(e){this._width=e,this.light&&(this.light.width=e*this.scaleX*Ye)}get height(){var e;return(e=this._height)!==null&&e!==void 0?e:ha.height}set height(e){this._height=e,this.light&&(this.light.height=e*this.scaleY*Ye)}get scaleX(){var e;return(e=this._scaleX)!==null&&e!==void 0?e:ha.scaleX}set scaleX(e){this._scaleX=e,this.light&&(this.light.width=e*this.width*Ye)}get scaleY(){var e;return(e=this._scaleY)!==null&&e!==void 0?e:ha.scaleY}set scaleY(e){this._scaleY=e,this.light&&(this.light.height=e*this.height*Ye)}get depth(){return 0}set depth(e){}get scaleZ(){return 0}set scaleZ(e){}getCenter(){return this.getWorldPosition()}}Av.componentName="areaLight";Av.defaults=ha;Av.schema=aC;const lC=Me({},iC),cC=Me({},rC);class Cv extends Ed{constructor(){super(new Tx,tz)}}Cv.componentName="directionalLight";Cv.defaults=cC;Cv.schema=lC;const uC=bt(Me({},Td),{groundColor:String}),hC=bt(Me({},Ad),{groundColor:"#ffffff"});class Pv extends Ed{constructor(){super(new Mx,ez)}get groundColor(){return"#"+this.object3d.groundColor.getHexString()}set groundColor(e){this.object3d.groundColor=new Pe(e)}}Pv.componentName="skyLight";Pv.defaults=hC;Pv.schema=uC;const dC=bt(Me({},Td),{decay:Number,distance:Number}),pC=bt(Me({},Ad),{decay:1,distance:0});class fC{get decay(){return this.object3d.decay}set decay(e){this.object3d.decay=e}get distance(){return this.object3d.distance}set distance(e){this.object3d.distance=e}}class Cd extends Ed{constructor(){super(new R2,Q6)}}Cd.componentName="pointLight";Cd.defaults=pC;Cd.schema=dC;ks(Cd,[fC]);const mC=bt(Me({},Td),{angle:Number,penumbra:Number}),vC=bt(Me({},Ad),{angle:1,penumbra:0});class Pd extends Ed{constructor(){super(new C2,J6)}get angle(){return this.object3d.angle}set angle(e){this.object3d.angle=e}get penumbra(){return this.object3d.penumbra}set penumbra(e){this.object3d.penumbra=e}}Pd.componentName="spotLight";Pd.defaults=vC;Pd.schema=mC;ks(Pd,[fC]);const Uf=new WeakMap;var XM=i=>{if(Uf.has(i))return Uf.get(i);const e=i.getWorldPosition(new z);return Uf.set(i,e),setTimeout(()=>Uf.delete(i)),e};const gC=bt(Me({},Qx),{onEnter:Function,onExit:Function,targetIds:[String,Array],pad:Boolean,radius:Number,interval:Number,helper:Boolean}),ol=bt(Me({},$x),{onEnter:void 0,onExit:void 0,pad:!1,radius:50,interval:300,helper:!0}),qM=i=>{var e;return[...(e=Lc.get(i))!==null&&e!==void 0?e:[]]};class Rv extends nv{constructor(){const e=new ei;super(e),this.refresh=new Tn({}),this._pad=ol.pad,this._radius=ol.radius,this._interval=ol.interval,this._helper=ol.helper,this._targetIds=ol.targetIds,$e.add(e);let t;this.createEffect(()=>{const{_radius:n,_interval:r,_targetIds:s,_pad:o}=this;if(!s)return;const l=n*Ye,h=l*.2;let d=!1;const f=Q2(r,-1,()=>{var g,y;const{x:_,y:w,z:S}=XM(this.outerObject3d),b=typeof s=="string"?qM(s):s.map(qM).flat();let T=!1;for(const E of b){const{x:C,y:A,z:D}=XM(E.object3d);if(o){const{y:I}=El(E);T=Math.abs(_-C){f.cancel()}},[this.refresh.get]),this.createEffect(()=>{const{_radius:n,_helper:r,_pad:s}=this;if(!r||Ze()!==bn)return;const o=t=s?new ob:new sb;Li.delete(o),e.add(o.outerObject3d),o.scale=n*Ye*2,o.opacity=.5,o.height=s?10:100;const l=vd(({target:h})=>h===o&&Di(this));return()=>{o.dispose(),t=void 0,l.cancel()}},[this.refresh.get,Ze])}get pad(){return this._pad}set pad(e){this._pad=e,this.refresh.set({})}get radius(){return this._radius}set radius(e){this._radius=e,this.refresh.set({})}get interval(){return this._interval}set interval(e){this._interval=e,this.refresh.set({})}get helper(){return this._helper}set helper(e){this._helper=e,this.refresh.set({})}get targetIds(){return this._targetIds}set targetIds(e){this._targetIds=e,this.refresh.set({})}}Rv.componentName="trigger";Rv.defaults=ol;Rv.schema=gC;const yC=bt(Me({},du),{onKeyPress:Function,onKeyUp:Function,onKeyDown:Function}),_C=Me({},Sl),[YM,ZM]=Ge(!0),[UV,FV]=Er(),[KM,VV]=Er(),[JM,HV]=Er(),gr=new Set,QM=i=>(i=i.length===1?i.toLowerCase():i,i===" "&&(i="Space"),i);Kt(()=>{if($c()&&ZM())return;const i=wi(()=>gr.size>0&&JM()),e=n=>{const r=QM(n.key);gr.add(r),UV(r)},t=n=>{const r=QM(n.key);gr.delete(r),KM(r),!gr.size&&JM()};return i.watch(yv(()=>{if(!gr.size)return;const n=[...gr];gr.clear();for(const r of n)KM(r)})),document.addEventListener("keydown",e),document.addEventListener("keyup",t),()=>{i.cancel(),document.removeEventListener("keydown",e),document.removeEventListener("keyup",t)}},[$c,ZM]);class Lv extends Bs{constructor(){super(new ei),this.watch(HV(()=>{if(this.onKeyPress){if(!gr.size){this.onKeyPress("",gr);return}for(const e of gr)this.onKeyPress(e,gr)}})),this.watch(VV(e=>{var t;return(t=this.onKeyUp)===null||t===void 0?void 0:t.call(this,e,gr)})),this.watch(FV(e=>{var t;return(t=this.onKeyDown)===null||t===void 0?void 0:t.call(this,e,gr)}))}}Lv.componentName="keyboard";Lv.defaults=_C;Lv.schema=yC;const GV=new Lv;Li.delete(GV);"getGamepads"in navigator&&wi(()=>{for(const i of navigator.getGamepads())if(i){for(let e=0;e{for(const t of e)WV.set(t,i);return e};Rd("image",["jpg","jpeg","gif","png","svg","tiff","webp","hdr"]);Rd("audio",["m4a","mp3","wav","wma","ogg","flax","flac","aac"]);Rd("plainText",["ls","js","ts","jsx","tsx","py","txt","md","json","yaml","c","cpp","h","hpp","css","scss","sass","html"]);Rd("model",["gltf","glb","fbx"]);Rd("scene",["l3d"]);const xC={onPlay:Function,onPause:Function,onEnded:Function,stream:Boolean,src:String,loop:Boolean,autoplay:Boolean,muted:Boolean,playbackRate:Number,volume:Number,paused:Boolean},bC={paused:!0};class xb extends $_{constructor(){super(...arguments),this._paused=!0,this.soundResolvable=new Fc}dispose(){var e,t;return super.dispose(),(e=this.sound)===null||e===void 0||e.stop(),(t=this.sound)===null||t===void 0||t.unload(),this}get paused(){return this._paused}set paused(e){this._paused=e,e?this.play():this.pause()}get src(){return this._src}set src(e){var t;this._src=e,(t=this.sound)===null||t===void 0||t.stop(),this.sound=void 0,this.soundResolvable.done&&(this.soundResolvable=new Fc),e&&$n(()=>import("./howler.873203e3.js"),["./howler.873203e3.js","./entry.c3abd651.js","./entry.f74844d6.css"],import.meta.url).then(function(n){return n.h}).then(n=>{this.done||e!==this.src||(this.sound=new n.default.Howl({src:e,onplay:this.onPlay,onpause:this.onPause,onend:this.onEnded,loop:this._loop,autoplay:this._autoplay,mute:this._muted,rate:this._playbackRate,volume:this._volume,html5:this.stream}),this.soundResolvable.resolve(this.sound))})}get loop(){return this._loop}set loop(e){var t;this._loop=e,(t=this.sound)===null||t===void 0||t.loop(!!e)}get autoplay(){return this._autoplay}set autoplay(e){this._autoplay=e,e&&this.play()}get muted(){return this._muted}set muted(e){var t;this._muted=e,(t=this.sound)===null||t===void 0||t.mute(!!e)}get playbackRate(){return this._playbackRate}set playbackRate(e){var t;this._playbackRate=e,(t=this.sound)===null||t===void 0||t.rate(e??1)}get volume(){return this._volume}set volume(e){var t;this._volume=e,(t=this.sound)===null||t===void 0||t.volume(e??1)}get duration(){var e;return(e=this.sound)===null||e===void 0?void 0:e.duration()}fade(e,t,n=1e3){this.soundResolvable.then(r=>r.fade(e,t,n))}play(){this.soundResolvable.then(e=>e.play()),this._paused=!1}pause(){this.soundResolvable.then(e=>e.pause()),this._paused=!0}stop(){this.soundResolvable.then(e=>e.stop()),this._paused=!0}}xb.componentName="sound";xb.defaults=bC;xb.schema=xC;const[jV,XV]=Er(),qV={performance:String,skybox:[String,Array],defaultLight:[String,Boolean],defaultLightScale:Number,defaultOrbitControls:Boolean,defaultFog:String,gridHelper:Boolean,gridHelperSize:Number,gravity:Number,repulsion:Number,wasmPath:String,autoMount:[Boolean,String],logarithmicDepth:Boolean,exposure:Number,pbr:Boolean,bloom:Boolean,bloomStrength:Number,bloomRadius:Number,bloomThreshold:Number,ambientOcclusion:[Boolean,String],outlineColor:String,outlineHiddenColor:String,outlinePattern:String,outlinePulse:Number,outlineStrength:Number,outlineThickness:Number,lensDistortion:Boolean,lensIor:Number,lensBand:Number,texture:String,color:String},bb=Me({},Cs);var H_=Mr(i=>{var e;for(const t of Object.keys(Cs))Cs[t]=(e=i[t])!==null&&e!==void 0?e:bb[t];jV()},0,"trailing");const wC=["type","children","scale","velocity","target"],SC=["performance","defaultOrbitControls","wasmPath","autoMount","texture","color","gridHelper","gridHelperSize"],MC=i=>{const e=[];for(const t of i){const{componentName:n,schema:r,defaults:s}=t.constructor,o={type:n};for(const l of Object.keys(r)){if(wC.includes(l))continue;let h;if(l==="animations"){if(h=t.loadedAnims,!h)continue}else if(l==="animation"){if(h=t.animationName,h===void 0)continue}else h=t[l];h===s[l]||typeof h=="function"||(typeof h=="number"&&(h=Number(h.toFixed(2))),o[l]=h)}t.children&&(o.children=MC(t.children)),e.push(o)}return e};var Dv=(i=Li)=>{const e=MC(i instanceof $2?[i]:i),t={type:"setup"};for(const[n,r]of Object.entries(rs.exports.omit(Cs,SC)))bb[n]!==r&&(t[n]=r);return Object.keys(t).length&&e.push(t),e};const YV=F4({group:()=>new Sd,trigger:()=>new Rv,model:()=>new Ao,svgMesh:()=>new wd,dummy:()=>new Sv,reflector:()=>new Mv,sprite:()=>new Al,camera:()=>new Md,thirdPersonCamera:()=>new tC,firstPersonCamera:()=>new nC,orbitCamera:()=>new Cl,ambientLight:()=>new Tv,areaLight:()=>new Av,directionalLight:()=>new Cv,skyLight:()=>new Pv,pointLight:()=>new Cd,spotLight:()=>new Pd,circle:()=>new xv,cone:()=>new _A,cube:()=>new dv,cylinder:()=>new ob,octahedron:()=>new xA,plane:()=>new bd,sphere:()=>new sb,tetrahedron:()=>new bA,torus:()=>new wA,skybox:()=>new md,environment:()=>new pd});var EC=i=>YV[i]();const TC=(i,e)=>{var t;if(i.type==="setup"){H_(i);return}if(i.type==="animation")return;const n=EC(i.type);return e&&n instanceof pv&&e.push(n.loadedResolvable),Object.assign(n,rs.exports.omit(i,wC)),(t=i.children)===null||t===void 0||t.map(r=>TC(r,e)).forEach(r=>r&&n.append(r)),n};var AC=(i,e)=>i.map(t=>TC(t,e)),An=(i,e)=>Object.fromEntries(Object.entries(i).map(([t,n])=>[t,{type:n===Number?[Number,Object]:n,default:e[t]}])),ZV=An(qV,bb);const CC=document.createElement("div");Object.assign(CC.style,{position:"absolute",left:"0px",top:"0px",width:"100%",height:"100%",pointerEvents:"none",userSelect:"none"});const KV={style:{height:"100%"}},JV=rd({name:"World",props:bt(Me({},ZV),{position:String}),setup(i){const e=i,t=sd();Rs(r=>{const s=Ih(t.value);if(!s)return;s.appendChild(ga),s.appendChild(CC);const o=new ResizeObserver(()=>{const l=[s.clientWidth,s.clientHeight];s_(l),$z(l)});o.observe(s),r(()=>{o.disconnect()})}),Rs(r=>{H_(e),r(()=>{H_({})})});const n=document.createElement("style");return n.innerHTML=`.lingo3d { position: absolute; width: 100%; height: 100%; top: 0px; left: 0px; display: flex; }`,document.head.appendChild(n),(r,s)=>(SE(),ME("div",{class:"lingo3d",style:P4({position:e.position})},[e1("div",KV,[Dm(r.$slots,"default")]),e1("div",{ref_key:"divRef",ref:t,style:{height:"100%","flex-grow":"1",position:"relative","z-index":"0"}},null,512)],4))}});var Ld,At,PC,Ch,RC,$M,Em={},LC=[],QV=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;function go(i,e){for(var t in e)i[t]=e[t];return i}function DC(i){var e=i.parentNode;e&&e.removeChild(i)}function Bc(i,e,t){var n,r,s,o={};for(s in e)s=="key"?n=e[s]:s=="ref"?r=e[s]:o[s]=e[s];if(arguments.length>2&&(o.children=arguments.length>3?Ld.call(arguments,2):t),typeof i=="function"&&i.defaultProps!=null)for(s in i.defaultProps)o[s]===void 0&&(o[s]=i.defaultProps[s]);return Ph(i,o,n,r,null)}function Ph(i,e,t,n,r){var s={type:i,props:e,key:t,ref:n,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:r??++PC};return r==null&&At.vnode!=null&&At.vnode(s),s}function vu(i){return i.children}function qf(i,e){this.props=i,this.context=e}function ru(i,e){if(e==null)return i.__?ru(i.__,i.__.__k.indexOf(i)+1):null;for(var t;e0?Ph(_.type,_.props,_.key,null,_.__v):_)!=null){if(_.__=t,_.__b=t.__b+1,(y=T[f])===null||y&&_.key==y.key&&_.type===y.type)T[f]=void 0;else for(g=0;g2&&(o.children=arguments.length>3?Ld.call(arguments,2):t),Ph(i.type,o,n||i.key,r||i.ref,null)}Ld=LC.slice,At={__e:function(i,e,t,n){for(var r,s,o;e=e.__;)if((r=e.__c)&&!r.__)try{if((s=r.constructor)&&s.getDerivedStateFromError!=null&&(r.setState(s.getDerivedStateFromError(i)),o=r.__d),r.componentDidCatch!=null&&(r.componentDidCatch(i,n||{}),o=r.__d),o)return r.__E=r}catch(l){i=l}throw i}},PC=0,qf.prototype.setState=function(i,e){var t;t=this.__s!=null&&this.__s!==this.state?this.__s:this.__s=go({},this.state),typeof i=="function"&&(i=i(go({},t),this.props)),i&&go(t,i),i!=null&&this.__v&&(e&&this.__h.push(e),eE(this))},qf.prototype.forceUpdate=function(i){this.__v&&(this.__e=!0,i&&this.__h.push(i),eE(this))},qf.prototype.render=vu,Ch=[],RC=typeof Promise=="function"?Promise.prototype.then.bind(Promise.resolve()):setTimeout,Tm.__r=0;var n8=0;function ye(i,e,t,n,r){var s,o,l={};for(o in e)o=="ref"?s=e[o]:l[o]=e[o];var h={type:i,props:l,key:t,ref:s,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:--n8,__source:r,__self:n};if(typeof i=="function"&&(s=i.defaultProps))for(o in s)l[o]===void 0&&(l[o]=s[o]);return At.vnode&&At.vnode(h),h}var G_={exports:{}};/*! Tweakpane 3.0.8 (c) 2016 cocopon, licensed under the MIT license. */(function(i,e){(function(t,n){n(e)})(rl,function(t){class n{constructor(c){const[p,x]=c.split("-"),L=p.split(".");this.major=parseInt(L[0],10),this.minor=parseInt(L[1],10),this.patch=parseInt(L[2],10),this.prerelease=x??null}toString(){const c=[this.major,this.minor,this.patch].join(".");return this.prerelease!==null?[c,this.prerelease].join("-"):c}}class r{constructor(c){this.controller_=c}get disabled(){return this.controller_.viewProps.get("disabled")}set disabled(c){this.controller_.viewProps.set("disabled",c)}get hidden(){return this.controller_.viewProps.get("hidden")}set hidden(c){this.controller_.viewProps.set("hidden",c)}dispose(){this.controller_.viewProps.set("disposed",!0)}}class s{constructor(c){this.target=c}}class o extends s{constructor(c,p,x,L){super(c),this.value=p,this.presetKey=x,this.last=L??!0}}class l extends s{constructor(c,p,x){super(c),this.value=p,this.presetKey=x}}class h extends s{constructor(c,p){super(c),this.expanded=p}}function d(m){return m}function f(m){return m==null}function g(m,c){if(m.length!==c.length)return!1;for(let p=0;p"View has been already disposed",invalidparams:m=>`Invalid parameters for '${m.name}'`,nomatchingcontroller:m=>`No matching controller for '${m.key}'`,nomatchingview:m=>`No matching view for '${JSON.stringify(m.params)}'`,notbindable:()=>"Value is not bindable",propertynotfound:m=>`Property '${m.name}' not found`,shouldneverhappen:()=>"This error should never happen"};class _{constructor(c){var p;this.message=(p=y[c.type](c.context))!==null&&p!==void 0?p:"Unexpected error",this.name=this.constructor.name,this.stack=new Error(this.message).stack,this.type=c.type}static alreadyDisposed(){return new _({type:"alreadydisposed"})}static notBindable(){return new _({type:"notbindable"})}static propertyNotFound(c){return new _({type:"propertynotfound",context:{name:c}})}static shouldNeverHappen(){return new _({type:"shouldneverhappen"})}}class w{constructor(c,p,x){this.obj_=c,this.key_=p,this.presetKey_=x??p}static isBindable(c){return!(c===null||typeof c!="object")}get key(){return this.key_}get presetKey(){return this.presetKey_}read(){return this.obj_[this.key_]}write(c){this.obj_[this.key_]=c}writeProperty(c,p){const x=this.read();if(!w.isBindable(x))throw _.notBindable();if(!(c in x))throw _.propertyNotFound(c);x[c]=p}}class S extends r{get label(){return this.controller_.props.get("label")}set label(c){this.controller_.props.set("label",c)}get title(){var c;return(c=this.controller_.valueController.props.get("title"))!==null&&c!==void 0?c:""}set title(c){this.controller_.valueController.props.set("title",c)}on(c,p){const x=p.bind(this);return this.controller_.valueController.emitter.on(c,()=>{x(new s(this))}),this}}class b{constructor(){this.observers_={}}on(c,p){let x=this.observers_[c];return x||(x=this.observers_[c]=[]),x.push({handler:p}),this}off(c,p){const x=this.observers_[c];return x&&(this.observers_[c]=x.filter(L=>L.handler!==p)),this}emit(c,p){const x=this.observers_[c];x&&x.forEach(L=>{L.handler(p)})}}const T="tp";function E(m){return(p,x)=>[T,"-",m,"v",p?`_${p}`:"",x?`-${x}`:""].join("")}function C(m,c){return p=>c(m(p))}function A(m){return m.rawValue}function D(m,c){m.emitter.on("change",C(A,c)),c(m.rawValue)}function I(m,c,p){D(m.value(c),p)}function F(m,c,p){p?m.classList.add(c):m.classList.remove(c)}function P(m,c){return p=>{F(m,c,p)}}function k(m,c){D(m,p=>{c.textContent=p??""})}const j=E("btn");class G{constructor(c,p){this.element=c.createElement("div"),this.element.classList.add(j()),p.viewProps.bindClassModifiers(this.element);const x=c.createElement("button");x.classList.add(j("b")),p.viewProps.bindDisabled(x),this.element.appendChild(x),this.buttonElement=x;const L=c.createElement("div");L.classList.add(j("t")),k(p.props.value("title"),L),this.buttonElement.appendChild(L)}}class ne{constructor(c,p){this.emitter=new b,this.onClick_=this.onClick_.bind(this),this.props=p.props,this.viewProps=p.viewProps,this.view=new G(c,{props:this.props,viewProps:this.viewProps}),this.view.buttonElement.addEventListener("click",this.onClick_)}onClick_(){this.emitter.emit("click",{sender:this})}}class ce{constructor(c,p){var x;this.constraint_=p==null?void 0:p.constraint,this.equals_=(x=p==null?void 0:p.equals)!==null&&x!==void 0?x:(L,q)=>L===q,this.emitter=new b,this.rawValue_=c}get constraint(){return this.constraint_}get rawValue(){return this.rawValue_}set rawValue(c){this.setRawValue(c,{forceEmit:!1,last:!0})}setRawValue(c,p){const x=p??{forceEmit:!1,last:!0},L=this.constraint_?this.constraint_.constrain(c):c;this.equals_(this.rawValue_,L)&&!x.forceEmit||(this.emitter.emit("beforechange",{sender:this}),this.rawValue_=L,this.emitter.emit("change",{options:x,rawValue:L,sender:this}))}}class Z{constructor(c){this.emitter=new b,this.value_=c}get rawValue(){return this.value_}set rawValue(c){this.setRawValue(c,{forceEmit:!1,last:!0})}setRawValue(c,p){const x=p??{forceEmit:!1,last:!0};this.value_===c&&!x.forceEmit||(this.emitter.emit("beforechange",{sender:this}),this.value_=c,this.emitter.emit("change",{options:x,rawValue:this.value_,sender:this}))}}function $(m,c){const p=c==null?void 0:c.constraint,x=c==null?void 0:c.equals;return!p&&!x?new Z(m):new ce(m,c)}class K{constructor(c){this.emitter=new b,this.valMap_=c;for(const p in this.valMap_)this.valMap_[p].emitter.on("change",()=>{this.emitter.emit("change",{key:p,sender:this})})}static createCore(c){return Object.keys(c).reduce((x,L)=>Object.assign(x,{[L]:$(c[L])}),{})}static fromObject(c){const p=this.createCore(c);return new K(p)}get(c){return this.valMap_[c].rawValue}set(c,p){this.valMap_[c].rawValue=p}value(c){return this.valMap_[c]}}function pe(m,c){const x=Object.keys(c).reduce((L,q)=>{if(L===void 0)return;const ee=c[q],Oe=ee(m[q]);return Oe.succeeded?Object.assign(Object.assign({},L),{[q]:Oe.value}):void 0},{});return x}function re(m,c){return m.reduce((p,x)=>{if(p===void 0)return;const L=c(x);if(!(!L.succeeded||L.value===void 0))return[...p,L.value]},[])}function se(m){return m===null?!1:typeof m=="object"}function ue(m){return c=>p=>{if(!c&&p===void 0)return{succeeded:!1,value:void 0};if(c&&p===void 0)return{succeeded:!0,value:void 0};const x=m(p);return x!==void 0?{succeeded:!0,value:x}:{succeeded:!1,value:void 0}}}function Te(m){return{custom:c=>ue(c)(m),boolean:ue(c=>typeof c=="boolean"?c:void 0)(m),number:ue(c=>typeof c=="number"?c:void 0)(m),string:ue(c=>typeof c=="string"?c:void 0)(m),function:ue(c=>typeof c=="function"?c:void 0)(m),constant:c=>ue(p=>p===c?c:void 0)(m),raw:ue(c=>c)(m),object:c=>ue(p=>{if(se(p))return pe(p,c)})(m),array:c=>ue(p=>{if(Array.isArray(p))return re(p,c)})(m)}}const fe={optional:Te(!0),required:Te(!1)};function Ce(m,c){const p=fe.required.object(c)(m);return p.succeeded?p.value:void 0}function qe(m){return m&&m.parentElement&&m.parentElement.removeChild(m),null}function Ke(){return["veryfirst","first","last","verylast"]}const me=E(""),Ut={veryfirst:"vfst",first:"fst",last:"lst",verylast:"vlst"};class nt{constructor(c){this.parent_=null,this.blade=c.blade,this.view=c.view,this.viewProps=c.viewProps;const p=this.view.element;this.blade.value("positions").emitter.on("change",()=>{Ke().forEach(x=>{p.classList.remove(me(void 0,Ut[x]))}),this.blade.get("positions").forEach(x=>{p.classList.add(me(void 0,Ut[x]))})}),this.viewProps.handleDispose(()=>{qe(p)})}get parent(){return this.parent_}}const it="http://www.w3.org/2000/svg";function Le(m){m.offsetHeight}function vt(m,c){const p=m.style.transition;m.style.transition="none",c(),m.style.transition=p}function ve(m){return m.ontouchstart!==void 0}function xe(){return new Function("return this")()}function Ae(){return xe().document}function We(m){const c=m.ownerDocument.defaultView;return c&&"document"in c?m.getContext("2d"):null}const Be={check:'',dropdown:'',p2dpad:''};function rt(m,c){const p=m.createElementNS(it,"svg");return p.innerHTML=Be[c],p}function ot(m,c,p){m.insertBefore(c,m.children[p])}function st(m){m.parentElement&&m.parentElement.removeChild(m)}function Ft(m){for(;m.children.length>0;)m.removeChild(m.children[0])}function yt(m){for(;m.childNodes.length>0;)m.removeChild(m.childNodes[0])}function H(m){return m.relatedTarget?m.relatedTarget:"explicitOriginalTarget"in m?m.explicitOriginalTarget:null}const B=E("lbl");function he(m,c){const p=m.createDocumentFragment();return c.split(` `).map(L=>m.createTextNode(L)).forEach((L,q)=>{q>0&&p.appendChild(m.createElement("br")),p.appendChild(L)}),p}class we{constructor(c,p){this.element=c.createElement("div"),this.element.classList.add(B()),p.viewProps.bindClassModifiers(this.element);const x=c.createElement("div");x.classList.add(B("l")),I(p.props,"label",q=>{f(q)?this.element.classList.add(B(void 0,"nol")):(this.element.classList.remove(B(void 0,"nol")),yt(x),x.appendChild(he(c,q)))}),this.element.appendChild(x),this.labelElement=x;const L=c.createElement("div");L.classList.add(B("v")),this.element.appendChild(L),this.valueElement=L}}class Ne extends nt{constructor(c,p){const x=p.valueController.viewProps;super(Object.assign(Object.assign({},p),{view:new we(c,{props:p.props,viewProps:x}),viewProps:x})),this.props=p.props,this.valueController=p.valueController,this.view.valueElement.appendChild(this.valueController.view.element)}}const Ue={id:"button",type:"blade",accept(m){const c=fe,p=Ce(m,{title:c.required.string,view:c.required.constant("button"),label:c.optional.string});return p?{params:p}:null},controller(m){return new Ne(m.document,{blade:m.blade,props:K.fromObject({label:m.params.label}),valueController:new ne(m.document,{props:K.fromObject({title:m.params.title}),viewProps:m.viewProps})})},api(m){return!(m.controller instanceof Ne)||!(m.controller.valueController instanceof ne)?null:new S(m.controller)}};class Xe extends nt{constructor(c){super(c),this.value=c.value}}function U(){return new K({positions:$([],{equals:g})})}class Ee extends K{constructor(c){super(c)}static create(c){const p={completed:!0,expanded:c,expandedHeight:null,shouldFixHeight:!1,temporaryExpanded:null},x=K.createCore(p);return new Ee(x)}get styleExpanded(){var c;return(c=this.get("temporaryExpanded"))!==null&&c!==void 0?c:this.get("expanded")}get styleHeight(){if(!this.styleExpanded)return"0";const c=this.get("expandedHeight");return this.get("shouldFixHeight")&&!f(c)?`${c}px`:"auto"}bindExpandedClass(c,p){const x=()=>{this.styleExpanded?c.classList.add(p):c.classList.remove(p)};I(this,"expanded",x),I(this,"temporaryExpanded",x)}cleanUpTransition(){this.set("shouldFixHeight",!1),this.set("expandedHeight",null),this.set("completed",!0)}}function Je(m,c){let p=0;return vt(c,()=>{m.set("expandedHeight",null),m.set("temporaryExpanded",!0),Le(c),p=c.clientHeight,m.set("temporaryExpanded",null),Le(c)}),p}function ke(m,c){c.style.height=m.styleHeight}function X(m,c){m.value("expanded").emitter.on("beforechange",()=>{m.set("completed",!1),f(m.get("expandedHeight"))&&m.set("expandedHeight",Je(m,c)),m.set("shouldFixHeight",!0),Le(c)}),m.emitter.on("change",()=>{ke(m,c)}),ke(m,c),c.addEventListener("transitionend",p=>{p.propertyName==="height"&&m.cleanUpTransition()})}class Re extends r{constructor(c,p){super(c),this.rackApi_=p}}function De(m,c){return m.addBlade(Object.assign(Object.assign({},c),{view:"button"}))}function at(m,c){return m.addBlade(Object.assign(Object.assign({},c),{view:"folder"}))}function ze(m,c){const p=c||{};return m.addBlade(Object.assign(Object.assign({},p),{view:"separator"}))}function et(m,c){return m.addBlade(Object.assign(Object.assign({},c),{view:"tab"}))}class Ie{constructor(c){this.emitter=new b,this.items_=[],this.cache_=new Set,this.onSubListAdd_=this.onSubListAdd_.bind(this),this.onSubListRemove_=this.onSubListRemove_.bind(this),this.extract_=c}get items(){return this.items_}allItems(){return Array.from(this.cache_)}find(c){for(const p of this.allItems())if(c(p))return p;return null}includes(c){return this.cache_.has(c)}add(c,p){if(this.includes(c))throw _.shouldNeverHappen();const x=p!==void 0?p:this.items_.length;this.items_.splice(x,0,c),this.cache_.add(c);const L=this.extract_(c);L&&(L.emitter.on("add",this.onSubListAdd_),L.emitter.on("remove",this.onSubListRemove_),L.allItems().forEach(q=>{this.cache_.add(q)})),this.emitter.emit("add",{index:x,item:c,root:this,target:this})}remove(c){const p=this.items_.indexOf(c);if(p<0)return;this.items_.splice(p,1),this.cache_.delete(c);const x=this.extract_(c);x&&(x.emitter.off("add",this.onSubListAdd_),x.emitter.off("remove",this.onSubListRemove_)),this.emitter.emit("remove",{index:p,item:c,root:this,target:this})}onSubListAdd_(c){this.cache_.add(c.item),this.emitter.emit("add",{index:c.index,item:c.item,root:this,target:c.target})}onSubListRemove_(c){this.cache_.delete(c.item),this.emitter.emit("remove",{index:c.index,item:c.item,root:this,target:c.target})}}class ct extends r{constructor(c){super(c),this.onBindingChange_=this.onBindingChange_.bind(this),this.emitter_=new b,this.controller_.binding.emitter.on("change",this.onBindingChange_)}get label(){return this.controller_.props.get("label")}set label(c){this.controller_.props.set("label",c)}on(c,p){const x=p.bind(this);return this.emitter_.on(c,L=>{x(L.event)}),this}refresh(){this.controller_.binding.read()}onBindingChange_(c){const p=c.sender.target.read();this.emitter_.emit("change",{event:new o(this,p,this.controller_.binding.target.presetKey,c.options.last)})}}class wt extends Ne{constructor(c,p){super(c,p),this.binding=p.binding}}class Ct extends r{constructor(c){super(c),this.onBindingUpdate_=this.onBindingUpdate_.bind(this),this.emitter_=new b,this.controller_.binding.emitter.on("update",this.onBindingUpdate_)}get label(){return this.controller_.props.get("label")}set label(c){this.controller_.props.set("label",c)}on(c,p){const x=p.bind(this);return this.emitter_.on(c,L=>{x(L.event)}),this}refresh(){this.controller_.binding.read()}onBindingUpdate_(c){const p=c.sender.target.read();this.emitter_.emit("update",{event:new l(this,p,this.controller_.binding.target.presetKey)})}}class jn extends Ne{constructor(c,p){super(c,p),this.binding=p.binding,this.viewProps.bindDisabled(this.binding.ticker),this.viewProps.handleDispose(()=>{this.binding.dispose()})}}function Yi(m){return m instanceof Vs?m.apiSet_:m instanceof Re?m.rackApi_.apiSet_:null}function Us(m,c){const p=m.find(x=>x.controller_===c);if(!p)throw _.shouldNeverHappen();return p}function Fs(m,c,p){if(!w.isBindable(m))throw _.notBindable();return new w(m,c,p)}class Vs extends r{constructor(c,p){super(c),this.onRackAdd_=this.onRackAdd_.bind(this),this.onRackRemove_=this.onRackRemove_.bind(this),this.onRackInputChange_=this.onRackInputChange_.bind(this),this.onRackMonitorUpdate_=this.onRackMonitorUpdate_.bind(this),this.emitter_=new b,this.apiSet_=new Ie(Yi),this.pool_=p;const x=this.controller_.rack;x.emitter.on("add",this.onRackAdd_),x.emitter.on("remove",this.onRackRemove_),x.emitter.on("inputchange",this.onRackInputChange_),x.emitter.on("monitorupdate",this.onRackMonitorUpdate_),x.children.forEach(L=>{this.setUpApi_(L)})}get children(){return this.controller_.rack.children.map(c=>Us(this.apiSet_,c))}addInput(c,p,x){const L=x||{},q=this.controller_.view.element.ownerDocument,ee=this.pool_.createInput(q,Fs(c,p,L.presetKey),L),Oe=new ct(ee);return this.add(Oe,L.index)}addMonitor(c,p,x){const L=x||{},q=this.controller_.view.element.ownerDocument,ee=this.pool_.createMonitor(q,Fs(c,p),L),Oe=new Ct(ee);return this.add(Oe,L.index)}addFolder(c){return at(this,c)}addButton(c){return De(this,c)}addSeparator(c){return ze(this,c)}addTab(c){return et(this,c)}add(c,p){this.controller_.rack.add(c.controller_,p);const x=this.apiSet_.find(L=>L.controller_===c.controller_);return x&&this.apiSet_.remove(x),this.apiSet_.add(c),c}remove(c){this.controller_.rack.remove(c.controller_)}addBlade(c){const p=this.controller_.view.element.ownerDocument,x=this.pool_.createBlade(p,c),L=this.pool_.createBladeApi(x);return this.add(L,c.index)}on(c,p){const x=p.bind(this);return this.emitter_.on(c,L=>{x(L.event)}),this}setUpApi_(c){this.apiSet_.find(x=>x.controller_===c)||this.apiSet_.add(this.pool_.createBladeApi(c))}onRackAdd_(c){this.setUpApi_(c.bladeController)}onRackRemove_(c){if(c.isRoot){const p=Us(this.apiSet_,c.bladeController);this.apiSet_.remove(p)}}onRackInputChange_(c){const p=c.bladeController;if(p instanceof wt){const x=Us(this.apiSet_,p),L=p.binding;this.emitter_.emit("change",{event:new o(x,L.target.read(),L.target.presetKey,c.options.last)})}else if(p instanceof Xe){const x=Us(this.apiSet_,p);this.emitter_.emit("change",{event:new o(x,p.value.rawValue,void 0,c.options.last)})}}onRackMonitorUpdate_(c){if(!(c.bladeController instanceof jn))throw _.shouldNeverHappen();const p=Us(this.apiSet_,c.bladeController),x=c.bladeController.binding;this.emitter_.emit("update",{event:new l(p,x.target.read(),x.target.presetKey)})}}class Hs extends Re{constructor(c,p){super(c,new Vs(c.rackController,p)),this.emitter_=new b,this.controller_.foldable.value("expanded").emitter.on("change",x=>{this.emitter_.emit("fold",{event:new h(this,x.sender.rawValue)})}),this.rackApi_.on("change",x=>{this.emitter_.emit("change",{event:x})}),this.rackApi_.on("update",x=>{this.emitter_.emit("update",{event:x})})}get expanded(){return this.controller_.foldable.get("expanded")}set expanded(c){this.controller_.foldable.set("expanded",c)}get title(){return this.controller_.props.get("title")}set title(c){this.controller_.props.set("title",c)}get children(){return this.rackApi_.children}addInput(c,p,x){return this.rackApi_.addInput(c,p,x)}addMonitor(c,p,x){return this.rackApi_.addMonitor(c,p,x)}addFolder(c){return this.rackApi_.addFolder(c)}addButton(c){return this.rackApi_.addButton(c)}addSeparator(c){return this.rackApi_.addSeparator(c)}addTab(c){return this.rackApi_.addTab(c)}add(c,p){return this.rackApi_.add(c,p)}remove(c){this.rackApi_.remove(c)}addBlade(c){return this.rackApi_.addBlade(c)}on(c,p){const x=p.bind(this);return this.emitter_.on(c,L=>{x(L.event)}),this}}class Co extends nt{constructor(c){super({blade:c.blade,view:c.view,viewProps:c.rackController.viewProps}),this.rackController=c.rackController}}class gu{constructor(c,p){const x=E(p.viewName);this.element=c.createElement("div"),this.element.classList.add(x()),p.viewProps.bindClassModifiers(this.element)}}function Aa(m,c){for(let p=0;pp instanceof c)}onSetAdd_(c){this.updatePositions_();const p=c.target===c.root;if(this.emitter.emit("add",{bladeController:c.item,index:c.index,isRoot:p,sender:this}),!p)return;const x=c.item;if(x.viewProps.emitter.on("change",this.onChildViewPropsChange_),x.blade.value("positions").emitter.on("change",this.onChildPositionsChange_),x.viewProps.handleDispose(this.onChildDispose_),x instanceof wt)x.binding.emitter.on("change",this.onChildInputChange_);else if(x instanceof jn)x.binding.emitter.on("update",this.onChildMonitorUpdate_);else if(x instanceof Xe)x.value.emitter.on("change",this.onChildValueChange_);else{const L=te(x);if(L){const q=L.emitter;q.on("layout",this.onDescendantLayout_),q.on("inputchange",this.onDescendantInputChange_),q.on("monitorupdate",this.onDescendantMonitorUpdate_)}}}onSetRemove_(c){this.updatePositions_();const p=c.target===c.root;if(this.emitter.emit("remove",{bladeController:c.item,isRoot:p,sender:this}),!p)return;const x=c.item;if(x instanceof wt)x.binding.emitter.off("change",this.onChildInputChange_);else if(x instanceof jn)x.binding.emitter.off("update",this.onChildMonitorUpdate_);else if(x instanceof Xe)x.value.emitter.off("change",this.onChildValueChange_);else{const L=te(x);if(L){const q=L.emitter;q.off("layout",this.onDescendantLayout_),q.off("inputchange",this.onDescendantInputChange_),q.off("monitorupdate",this.onDescendantMonitorUpdate_)}}}updatePositions_(){const c=this.bcSet_.items.filter(L=>!L.viewProps.get("hidden")),p=c[0],x=c[c.length-1];this.bcSet_.items.forEach(L=>{const q=[];L===p&&(q.push("first"),(!this.blade_||this.blade_.get("positions").includes("veryfirst"))&&q.push("veryfirst")),L===x&&(q.push("last"),(!this.blade_||this.blade_.get("positions").includes("verylast"))&&q.push("verylast")),L.blade.set("positions",q)})}onChildPositionsChange_(){this.updatePositions_(),this.emitter.emit("layout",{sender:this})}onChildViewPropsChange_(c){this.updatePositions_(),this.emitter.emit("layout",{sender:this})}onChildDispose_(){this.bcSet_.items.filter(p=>p.viewProps.get("disposed")).forEach(p=>{this.bcSet_.remove(p)})}onChildInputChange_(c){const p=Aa(this.find(wt),c.sender);if(!p)throw _.shouldNeverHappen();this.emitter.emit("inputchange",{bladeController:p,options:c.options,sender:this})}onChildMonitorUpdate_(c){const p=yu(this.find(jn),c.sender);if(!p)throw _.shouldNeverHappen();this.emitter.emit("monitorupdate",{bladeController:p,sender:this})}onChildValueChange_(c){const p=V(this.find(Xe),c.sender);if(!p)throw _.shouldNeverHappen();this.emitter.emit("inputchange",{bladeController:p,options:c.options,sender:this})}onDescendantLayout_(c){this.updatePositions_(),this.emitter.emit("layout",{sender:this})}onDescendantInputChange_(c){this.emitter.emit("inputchange",{bladeController:c.bladeController,options:c.options,sender:this})}onDescendantMonitorUpdate_(c){this.emitter.emit("monitorupdate",{bladeController:c.bladeController,sender:this})}onBladePositionsChange_(){this.updatePositions_()}}class ge extends nt{constructor(c,p){super(Object.assign(Object.assign({},p),{view:new gu(c,{viewName:"brk",viewProps:p.viewProps})})),this.onRackAdd_=this.onRackAdd_.bind(this),this.onRackRemove_=this.onRackRemove_.bind(this);const x=new oe(p.root?void 0:p.blade);x.emitter.on("add",this.onRackAdd_),x.emitter.on("remove",this.onRackRemove_),this.rack=x,this.viewProps.handleDispose(()=>{for(let L=this.rack.children.length-1;L>=0;L--)this.rack.children[L].viewProps.set("disposed",!0)})}onRackAdd_(c){c.isRoot&&ot(this.view.element,c.bladeController.view.element,c.index)}onRackRemove_(c){c.isRoot&&st(c.bladeController.view.element)}}const ht=E("cnt");class gt{constructor(c,p){this.className_=E(p.viewName||"fld"),this.element=c.createElement("div"),this.element.classList.add(this.className_(),ht()),p.viewProps.bindClassModifiers(this.element),this.foldable_=p.foldable,this.foldable_.bindExpandedClass(this.element,this.className_(void 0,"expanded")),I(this.foldable_,"completed",P(this.element,this.className_(void 0,"cpl")));const x=c.createElement("button");x.classList.add(this.className_("b")),I(p.props,"title",Oe=>{f(Oe)?this.element.classList.add(this.className_(void 0,"not")):this.element.classList.remove(this.className_(void 0,"not"))}),p.viewProps.bindDisabled(x),this.element.appendChild(x),this.buttonElement=x;const L=c.createElement("div");L.classList.add(this.className_("t")),k(p.props.value("title"),L),this.buttonElement.appendChild(L),this.titleElement=L;const q=c.createElement("div");q.classList.add(this.className_("m")),this.buttonElement.appendChild(q);const ee=p.containerElement;ee.classList.add(this.className_("c")),this.element.appendChild(ee),this.containerElement=ee}}class _t extends Co{constructor(c,p){var x;const L=Ee.create((x=p.expanded)!==null&&x!==void 0?x:!0),q=new ge(c,{blade:p.blade,root:p.root,viewProps:p.viewProps});super(Object.assign(Object.assign({},p),{rackController:q,view:new gt(c,{containerElement:q.view.element,foldable:L,props:p.props,viewName:p.root?"rot":void 0,viewProps:p.viewProps})})),this.onTitleClick_=this.onTitleClick_.bind(this),this.props=p.props,this.foldable=L,X(this.foldable,this.view.containerElement),this.rackController.rack.emitter.on("add",()=>{this.foldable.cleanUpTransition()}),this.rackController.rack.emitter.on("remove",()=>{this.foldable.cleanUpTransition()}),this.view.buttonElement.addEventListener("click",this.onTitleClick_)}get document(){return this.view.element.ownerDocument}onTitleClick_(){this.foldable.set("expanded",!this.foldable.get("expanded"))}}const St={id:"folder",type:"blade",accept(m){const c=fe,p=Ce(m,{title:c.required.string,view:c.required.constant("folder"),expanded:c.optional.boolean});return p?{params:p}:null},controller(m){return new _t(m.document,{blade:m.blade,expanded:m.params.expanded,props:K.fromObject({title:m.params.title}),viewProps:m.viewProps})},api(m){return m.controller instanceof _t?new Hs(m.controller,m.pool):null}};class Dt extends Xe{constructor(c,p){const x=p.valueController.viewProps;super(Object.assign(Object.assign({},p),{value:p.valueController.value,view:new we(c,{props:p.props,viewProps:x}),viewProps:x})),this.props=p.props,this.valueController=p.valueController,this.view.valueElement.appendChild(this.valueController.view.element)}}class Nt extends r{}const Vt=E("spr");class yn{constructor(c,p){this.element=c.createElement("div"),this.element.classList.add(Vt()),p.viewProps.bindClassModifiers(this.element);const x=c.createElement("hr");x.classList.add(Vt("r")),this.element.appendChild(x)}}class Tr extends nt{constructor(c,p){super(Object.assign(Object.assign({},p),{view:new yn(c,{viewProps:p.viewProps})}))}}const ls={id:"separator",type:"blade",accept(m){const p=Ce(m,{view:fe.required.constant("separator")});return p?{params:p}:null},controller(m){return new Tr(m.document,{blade:m.blade,viewProps:m.viewProps})},api(m){return m.controller instanceof Tr?new Nt(m.controller):null}},cs=E("");function ci(m,c){return P(m,cs(void 0,c))}class Pt extends K{constructor(c){super(c)}static create(c){var p,x;const L=c??{},q={disabled:(p=L.disabled)!==null&&p!==void 0?p:!1,disposed:!1,hidden:(x=L.hidden)!==null&&x!==void 0?x:!1},ee=K.createCore(q);return new Pt(ee)}bindClassModifiers(c){I(this,"disabled",ci(c,"disabled")),I(this,"hidden",ci(c,"hidden"))}bindDisabled(c){I(this,"disabled",p=>{c.disabled=p})}bindTabIndex(c){I(this,"disabled",p=>{c.tabIndex=p?-1:0})}handleDispose(c){this.value("disposed").emitter.on("change",p=>{p&&c()})}}const gi=E("tbi");class Cn{constructor(c,p){this.element=c.createElement("div"),this.element.classList.add(gi()),p.viewProps.bindClassModifiers(this.element),I(p.props,"selected",q=>{q?this.element.classList.add(gi(void 0,"sel")):this.element.classList.remove(gi(void 0,"sel"))});const x=c.createElement("button");x.classList.add(gi("b")),p.viewProps.bindDisabled(x),this.element.appendChild(x),this.buttonElement=x;const L=c.createElement("div");L.classList.add(gi("t")),k(p.props.value("title"),L),this.buttonElement.appendChild(L),this.titleElement=L}}class Zi{constructor(c,p){this.emitter=new b,this.onClick_=this.onClick_.bind(this),this.props=p.props,this.viewProps=p.viewProps,this.view=new Cn(c,{props:p.props,viewProps:p.viewProps}),this.view.buttonElement.addEventListener("click",this.onClick_)}onClick_(){this.emitter.emit("click",{sender:this})}}class or{constructor(c,p){this.onItemClick_=this.onItemClick_.bind(this),this.ic_=new Zi(c,{props:p.itemProps,viewProps:Pt.create()}),this.ic_.emitter.on("click",this.onItemClick_),this.cc_=new ge(c,{blade:U(),viewProps:Pt.create()}),this.props=p.props,I(this.props,"selected",x=>{this.itemController.props.set("selected",x),this.contentController.viewProps.set("hidden",!x)})}get itemController(){return this.ic_}get contentController(){return this.cc_}onItemClick_(){this.props.set("selected",!0)}}class zr{constructor(c,p){this.controller_=c,this.rackApi_=p}get title(){var c;return(c=this.controller_.itemController.props.get("title"))!==null&&c!==void 0?c:""}set title(c){this.controller_.itemController.props.set("title",c)}get selected(){return this.controller_.props.get("selected")}set selected(c){this.controller_.props.set("selected",c)}get children(){return this.rackApi_.children}addButton(c){return this.rackApi_.addButton(c)}addFolder(c){return this.rackApi_.addFolder(c)}addSeparator(c){return this.rackApi_.addSeparator(c)}addTab(c){return this.rackApi_.addTab(c)}add(c,p){this.rackApi_.add(c,p)}remove(c){this.rackApi_.remove(c)}addInput(c,p,x){return this.rackApi_.addInput(c,p,x)}addMonitor(c,p,x){return this.rackApi_.addMonitor(c,p,x)}addBlade(c){return this.rackApi_.addBlade(c)}}class Gs extends Re{constructor(c,p){super(c,new Vs(c.rackController,p)),this.onPageAdd_=this.onPageAdd_.bind(this),this.onPageRemove_=this.onPageRemove_.bind(this),this.emitter_=new b,this.pageApiMap_=new Map,this.rackApi_.on("change",x=>{this.emitter_.emit("change",{event:x})}),this.rackApi_.on("update",x=>{this.emitter_.emit("update",{event:x})}),this.controller_.pageSet.emitter.on("add",this.onPageAdd_),this.controller_.pageSet.emitter.on("remove",this.onPageRemove_),this.controller_.pageSet.items.forEach(x=>{this.setUpPageApi_(x)})}get pages(){return this.controller_.pageSet.items.map(c=>{const p=this.pageApiMap_.get(c);if(!p)throw _.shouldNeverHappen();return p})}addPage(c){const p=this.controller_.view.element.ownerDocument,x=new or(p,{itemProps:K.fromObject({selected:!1,title:c.title}),props:K.fromObject({selected:!1})});this.controller_.add(x,c.index);const L=this.pageApiMap_.get(x);if(!L)throw _.shouldNeverHappen();return L}removePage(c){this.controller_.remove(c)}on(c,p){const x=p.bind(this);return this.emitter_.on(c,L=>{x(L.event)}),this}setUpPageApi_(c){const p=this.rackApi_.apiSet_.find(L=>L.controller_===c.contentController);if(!p)throw _.shouldNeverHappen();const x=new zr(c,p);this.pageApiMap_.set(c,x)}onPageAdd_(c){this.setUpPageApi_(c.item)}onPageRemove_(c){if(!this.pageApiMap_.get(c.item))throw _.shouldNeverHappen();this.pageApiMap_.delete(c.item)}}const On=E("tab");class Ws{constructor(c,p){this.element=c.createElement("div"),this.element.classList.add(On(),ht()),p.viewProps.bindClassModifiers(this.element),D(p.empty,P(this.element,On(void 0,"nop")));const x=c.createElement("div");x.classList.add(On("i")),this.element.appendChild(x),this.itemsElement=x;const L=p.contentsElement;L.classList.add(On("c")),this.element.appendChild(L),this.contentsElement=L}}class Po extends Co{constructor(c,p){const x=new ge(c,{blade:p.blade,viewProps:p.viewProps}),L=$(!0);super({blade:p.blade,rackController:x,view:new Ws(c,{contentsElement:x.view.element,empty:L,viewProps:p.viewProps})}),this.onPageAdd_=this.onPageAdd_.bind(this),this.onPageRemove_=this.onPageRemove_.bind(this),this.onPageSelectedChange_=this.onPageSelectedChange_.bind(this),this.pageSet_=new Ie(()=>null),this.pageSet_.emitter.on("add",this.onPageAdd_),this.pageSet_.emitter.on("remove",this.onPageRemove_),this.empty_=L,this.applyPages_()}get pageSet(){return this.pageSet_}add(c,p){this.pageSet_.add(c,p??this.pageSet_.items.length)}remove(c){this.pageSet_.remove(this.pageSet_.items[c])}applyPages_(){this.keepSelection_(),this.empty_.rawValue=this.pageSet_.items.length===0}onPageAdd_(c){const p=c.item;ot(this.view.itemsElement,p.itemController.view.element,c.index),this.rackController.rack.add(p.contentController,c.index),p.props.value("selected").emitter.on("change",this.onPageSelectedChange_),this.applyPages_()}onPageRemove_(c){const p=c.item;st(p.itemController.view.element),this.rackController.rack.remove(p.contentController),p.props.value("selected").emitter.off("change",this.onPageSelectedChange_),this.applyPages_()}keepSelection_(){if(this.pageSet_.items.length===0)return;const c=this.pageSet_.items.findIndex(p=>p.props.get("selected"));c<0?this.pageSet_.items.forEach((p,x)=>{p.props.set("selected",x===0)}):this.pageSet_.items.forEach((p,x)=>{p.props.set("selected",x===c)})}onPageSelectedChange_(c){if(c.rawValue){const p=this.pageSet_.items.findIndex(x=>x.props.value("selected")===c.sender);this.pageSet_.items.forEach((x,L)=>{x.props.set("selected",L===p)})}else this.keepSelection_()}}const Ii={id:"tab",type:"blade",accept(m){const c=fe,p=Ce(m,{pages:c.required.array(c.required.object({title:c.required.string})),view:c.required.constant("tab")});return!p||p.pages.length===0?null:{params:p}},controller(m){const c=new Po(m.document,{blade:m.blade,viewProps:m.viewProps});return m.params.pages.forEach(p=>{const x=new or(m.document,{itemProps:K.fromObject({selected:!1,title:p.title}),props:K.fromObject({selected:!1})});c.add(x)}),c},api(m){return m.controller instanceof Po?new Gs(m.controller,m.pool):null}};function Hv(m,c){const p=m.accept(c.params);if(!p)return null;const x=fe.optional.boolean(c.params.disabled).value,L=fe.optional.boolean(c.params.hidden).value;return m.controller({blade:U(),document:c.document,params:Object.assign(Object.assign({},p.params),{disabled:x,hidden:L}),viewProps:Pt.create({disabled:x,hidden:L})})}class kd{constructor(){this.disabled=!1,this.emitter=new b}dispose(){}tick(){this.disabled||this.emitter.emit("tick",{sender:this})}}class Nd{constructor(c,p){this.disabled_=!1,this.timerId_=null,this.onTick_=this.onTick_.bind(this),this.doc_=c,this.emitter=new b,this.interval_=p,this.setTimer_()}get disabled(){return this.disabled_}set disabled(c){this.disabled_=c,this.disabled_?this.clearTimer_():this.setTimer_()}dispose(){this.clearTimer_()}clearTimer_(){if(this.timerId_===null)return;const c=this.doc_.defaultView;c&&c.clearInterval(this.timerId_),this.timerId_=null}setTimer_(){if(this.clearTimer_(),this.interval_<=0)return;const c=this.doc_.defaultView;c&&(this.timerId_=c.setInterval(this.onTick_,this.interval_))}onTick_(){this.disabled_||this.emitter.emit("tick",{sender:this})}}class us{constructor(c){this.constraints=c}constrain(c){return this.constraints.reduce((p,x)=>x.constrain(p),c)}}function Ki(m,c){if(m instanceof c)return m;if(m instanceof us){const p=m.constraints.reduce((x,L)=>x||(L instanceof c?L:null),null);if(p)return p}return null}class Ca{constructor(c){this.options=c}constrain(c){const p=this.options;return p.length===0||p.filter(L=>L.value===c).length>0?c:p[0].value}}class Si{constructor(c){this.maxValue=c.max,this.minValue=c.min}constrain(c){let p=c;return f(this.minValue)||(p=Math.max(p,this.minValue)),f(this.maxValue)||(p=Math.min(p,this.maxValue)),p}}class Ar{constructor(c){this.step=c}constrain(c){return(c<0?-Math.round(-c/this.step):Math.round(c/this.step))*this.step}}const Pl=E("lst");class Gv{constructor(c,p){this.onValueChange_=this.onValueChange_.bind(this),this.props_=p.props,this.element=c.createElement("div"),this.element.classList.add(Pl()),p.viewProps.bindClassModifiers(this.element);const x=c.createElement("select");x.classList.add(Pl("s")),I(this.props_,"options",q=>{Ft(x),q.forEach((ee,Oe)=>{const lt=c.createElement("option");lt.dataset.index=String(Oe),lt.textContent=ee.text,lt.value=String(ee.value),x.appendChild(lt)})}),p.viewProps.bindDisabled(x),this.element.appendChild(x),this.selectElement=x;const L=c.createElement("div");L.classList.add(Pl("m")),L.appendChild(rt(c,"dropdown")),this.element.appendChild(L),p.value.emitter.on("change",this.onValueChange_),this.value_=p.value,this.update_()}update_(){this.selectElement.value=String(this.value_.rawValue)}onValueChange_(){this.update_()}}class Ro{constructor(c,p){this.onSelectChange_=this.onSelectChange_.bind(this),this.props=p.props,this.value=p.value,this.viewProps=p.viewProps,this.view=new Gv(c,{props:this.props,value:this.value,viewProps:this.viewProps}),this.view.selectElement.addEventListener("change",this.onSelectChange_)}onSelectChange_(c){const x=c.currentTarget.selectedOptions.item(0);if(!x)return;const L=Number(x.dataset.index);this.value.rawValue=this.props.get("options")[L].value}}const _u=E("pop");class xu{constructor(c,p){this.element=c.createElement("div"),this.element.classList.add(_u()),p.viewProps.bindClassModifiers(this.element),D(p.shows,P(this.element,_u(void 0,"v")))}}class Bd{constructor(c,p){this.shows=$(!1),this.viewProps=p.viewProps,this.view=new xu(c,{shows:this.shows,viewProps:this.viewProps})}}const bu=E("txt");class wu{constructor(c,p){this.onChange_=this.onChange_.bind(this),this.element=c.createElement("div"),this.element.classList.add(bu()),p.viewProps.bindClassModifiers(this.element),this.props_=p.props,this.props_.emitter.on("change",this.onChange_);const x=c.createElement("input");x.classList.add(bu("i")),x.type="text",p.viewProps.bindDisabled(x),this.element.appendChild(x),this.inputElement=x,p.value.emitter.on("change",this.onChange_),this.value_=p.value,this.refresh()}refresh(){const c=this.props_.get("formatter");this.inputElement.value=c(this.value_.rawValue)}onChange_(){this.refresh()}}class Lo{constructor(c,p){this.onInputChange_=this.onInputChange_.bind(this),this.parser_=p.parser,this.props=p.props,this.value=p.value,this.viewProps=p.viewProps,this.view=new wu(c,{props:p.props,value:this.value,viewProps:this.viewProps}),this.view.inputElement.addEventListener("change",this.onInputChange_)}onInputChange_(c){const x=c.currentTarget.value,L=this.parser_(x);f(L)||(this.value.rawValue=L),this.view.refresh()}}function Do(m){return String(m)}function Su(m){return m==="false"?!1:!!m}function Mu(m){return Do(m)}class Wv{constructor(c){this.text=c}evaluate(){return Number(this.text)}toString(){return this.text}}const zd={"**":(m,c)=>Math.pow(m,c),"*":(m,c)=>m*c,"/":(m,c)=>m/c,"%":(m,c)=>m%c,"+":(m,c)=>m+c,"-":(m,c)=>m-c,"<<":(m,c)=>m<>":(m,c)=>m>>c,">>>":(m,c)=>m>>>c,"&":(m,c)=>m&c,"^":(m,c)=>m^c,"|":(m,c)=>m|c};class Ud{constructor(c,p,x){this.left=p,this.operator=c,this.right=x}evaluate(){const c=zd[this.operator];if(!c)throw new Error(`unexpected binary operator: '${this.operator}`);return c(this.left.evaluate(),this.right.evaluate())}toString(){return["b(",this.left.toString(),this.operator,this.right.toString(),")"].join(" ")}}const Fd={"+":m=>m,"-":m=>-m,"~":m=>~m};class Vd{constructor(c,p){this.operator=c,this.expression=p}evaluate(){const c=Fd[this.operator];if(!c)throw new Error(`unexpected unary operator: '${this.operator}`);return c(this.expression.evaluate())}toString(){return["u(",this.operator,this.expression.toString(),")"].join(" ")}}function Eu(m){return(c,p)=>{for(let x=0;xc.startsWith(L,p))[0];return x?(p+=x.length,p+=Pa(c,p).length,{cursor:p,operator:x}):null}function ni(m,c){return(p,x)=>{const L=m(p,x);if(!L)return null;x=L.cursor;let q=L.evaluable;for(;;){const ee=sg(c,p,x);if(!ee)break;x=ee.cursor;const Oe=m(p,x);if(!Oe)return null;x=Oe.cursor,q=new Ud(ee.operator,q,Oe.evaluable)}return q?{cursor:x,evaluable:q}:null}}const Pu=[["**"],["*","/","%"],["+","-"],["<<",">>>",">>"],["&"],["^"],["|"]].reduce((m,c)=>ni(m,c),Cu);function hs(m,c){return c+=Pa(m,c).length,Pu(m,c)}function Gd(m){const c=hs(m,0);return!c||c.cursor+Pa(m,c.cursor).length!==m.length?null:c.evaluable}function ar(m){var c;const p=Gd(m);return(c=p==null?void 0:p.evaluate())!==null&&c!==void 0?c:null}function Oi(m){if(typeof m=="number")return m;if(typeof m=="string"){const c=ar(m);if(!f(c))return c}return 0}function Wd(m){return String(m)}function yi(m){return c=>c.toFixed(Math.max(Math.min(m,20),0))}const jd=yi(0);function Ra(m){return jd(m)+"%"}function Ru(m){return String(m)}function Rl(m){return m}function Mi(m,c){for(;m.lengthm.length?p.splice(0,p.length-m.length):Mi(p,m.length),p}function Oo({primary:m,secondary:c,forward:p,backward:x}){let L=!1;function q(ee){L||(L=!0,ee(),L=!1)}m.emitter.on("change",ee=>{q(()=>{c.setRawValue(p(m,c),ee.options)})}),c.emitter.on("change",ee=>{q(()=>{m.setRawValue(x(m,c),ee.options)}),q(()=>{c.setRawValue(p(m,c),ee.options)})}),q(()=>{c.setRawValue(p(m,c),{forceEmit:!1,last:!0})})}function kn(m,c){const p=m*(c.altKey?.1:1)*(c.shiftKey?10:1);return c.upKey?+p:c.downKey?-p:0}function ds(m){return{altKey:m.altKey,downKey:m.key==="ArrowDown",shiftKey:m.shiftKey,upKey:m.key==="ArrowUp"}}function lr(m){return{altKey:m.altKey,downKey:m.key==="ArrowLeft",shiftKey:m.shiftKey,upKey:m.key==="ArrowRight"}}function _n(m){return m==="ArrowUp"||m==="ArrowDown"}function Ur(m){return _n(m)||m==="ArrowLeft"||m==="ArrowRight"}function La(m,c){const p=c.ownerDocument.defaultView,x=c.getBoundingClientRect();return{x:m.pageX-((p&&p.scrollX||0)+x.left),y:m.pageY-((p&&p.scrollY||0)+x.top)}}class js{constructor(c){this.lastTouch_=null,this.onDocumentMouseMove_=this.onDocumentMouseMove_.bind(this),this.onDocumentMouseUp_=this.onDocumentMouseUp_.bind(this),this.onMouseDown_=this.onMouseDown_.bind(this),this.onTouchEnd_=this.onTouchEnd_.bind(this),this.onTouchMove_=this.onTouchMove_.bind(this),this.onTouchStart_=this.onTouchStart_.bind(this),this.elem_=c,this.emitter=new b,c.addEventListener("touchstart",this.onTouchStart_,{passive:!1}),c.addEventListener("touchmove",this.onTouchMove_,{passive:!0}),c.addEventListener("touchend",this.onTouchEnd_),c.addEventListener("mousedown",this.onMouseDown_)}computePosition_(c){const p=this.elem_.getBoundingClientRect();return{bounds:{width:p.width,height:p.height},point:c?{x:c.x,y:c.y}:null}}onMouseDown_(c){var p;c.preventDefault(),(p=c.currentTarget)===null||p===void 0||p.focus();const x=this.elem_.ownerDocument;x.addEventListener("mousemove",this.onDocumentMouseMove_),x.addEventListener("mouseup",this.onDocumentMouseUp_),this.emitter.emit("down",{altKey:c.altKey,data:this.computePosition_(La(c,this.elem_)),sender:this,shiftKey:c.shiftKey})}onDocumentMouseMove_(c){this.emitter.emit("move",{altKey:c.altKey,data:this.computePosition_(La(c,this.elem_)),sender:this,shiftKey:c.shiftKey})}onDocumentMouseUp_(c){const p=this.elem_.ownerDocument;p.removeEventListener("mousemove",this.onDocumentMouseMove_),p.removeEventListener("mouseup",this.onDocumentMouseUp_),this.emitter.emit("up",{altKey:c.altKey,data:this.computePosition_(La(c,this.elem_)),sender:this,shiftKey:c.shiftKey})}onTouchStart_(c){c.preventDefault();const p=c.targetTouches.item(0),x=this.elem_.getBoundingClientRect();this.emitter.emit("down",{altKey:c.altKey,data:this.computePosition_(p?{x:p.clientX-x.left,y:p.clientY-x.top}:void 0),sender:this,shiftKey:c.shiftKey}),this.lastTouch_=p}onTouchMove_(c){const p=c.targetTouches.item(0),x=this.elem_.getBoundingClientRect();this.emitter.emit("move",{altKey:c.altKey,data:this.computePosition_(p?{x:p.clientX-x.left,y:p.clientY-x.top}:void 0),sender:this,shiftKey:c.shiftKey}),this.lastTouch_=p}onTouchEnd_(c){var p;const x=(p=c.targetTouches.item(0))!==null&&p!==void 0?p:this.lastTouch_,L=this.elem_.getBoundingClientRect();this.emitter.emit("up",{altKey:c.altKey,data:this.computePosition_(x?{x:x.clientX-L.left,y:x.clientY-L.top}:void 0),sender:this,shiftKey:c.shiftKey})}}function hn(m,c,p,x,L){const q=(m-c)/(p-c);return x+q*(L-x)}function Xd(m){return String(m.toFixed(10)).split(".")[1].replace(/0+$/,"").length}function gn(m,c,p){return Math.min(Math.max(m,c),p)}function Lu(m,c){return(m%c+c)%c}const ki=E("txt");class Ll{constructor(c,p){this.onChange_=this.onChange_.bind(this),this.props_=p.props,this.props_.emitter.on("change",this.onChange_),this.element=c.createElement("div"),this.element.classList.add(ki(),ki(void 0,"num")),p.arrayPosition&&this.element.classList.add(ki(void 0,p.arrayPosition)),p.viewProps.bindClassModifiers(this.element);const x=c.createElement("input");x.classList.add(ki("i")),x.type="text",p.viewProps.bindDisabled(x),this.element.appendChild(x),this.inputElement=x,this.onDraggingChange_=this.onDraggingChange_.bind(this),this.dragging_=p.dragging,this.dragging_.emitter.on("change",this.onDraggingChange_),this.element.classList.add(ki()),this.inputElement.classList.add(ki("i"));const L=c.createElement("div");L.classList.add(ki("k")),this.element.appendChild(L),this.knobElement=L;const q=c.createElementNS(it,"svg");q.classList.add(ki("g")),this.knobElement.appendChild(q);const ee=c.createElementNS(it,"path");ee.classList.add(ki("gb")),q.appendChild(ee),this.guideBodyElem_=ee;const Oe=c.createElementNS(it,"path");Oe.classList.add(ki("gh")),q.appendChild(Oe),this.guideHeadElem_=Oe;const lt=c.createElement("div");lt.classList.add(E("tt")()),this.knobElement.appendChild(lt),this.tooltipElem_=lt,p.value.emitter.on("change",this.onChange_),this.value=p.value,this.refresh()}onDraggingChange_(c){if(c.rawValue===null){this.element.classList.remove(ki(void 0,"drg"));return}this.element.classList.add(ki(void 0,"drg"));const p=c.rawValue/this.props_.get("draggingScale"),x=p+(p>0?-1:p<0?1:0),L=gn(-x,-4,4);this.guideHeadElem_.setAttributeNS(null,"d",[`M ${x+L},0 L${x},4 L${x+L},8`,`M ${p},-1 L${p},9`].join(" ")),this.guideBodyElem_.setAttributeNS(null,"d",`M 0,4 L${p},4`);const q=this.props_.get("formatter");this.tooltipElem_.textContent=q(this.value.rawValue),this.tooltipElem_.style.left=`${p}px`}refresh(){const c=this.props_.get("formatter");this.inputElement.value=c(this.value.rawValue)}onChange_(){this.refresh()}}class Cr{constructor(c,p){this.originRawValue_=0,this.onInputChange_=this.onInputChange_.bind(this),this.onInputKeyDown_=this.onInputKeyDown_.bind(this),this.onInputKeyUp_=this.onInputKeyUp_.bind(this),this.onPointerDown_=this.onPointerDown_.bind(this),this.onPointerMove_=this.onPointerMove_.bind(this),this.onPointerUp_=this.onPointerUp_.bind(this),this.baseStep_=p.baseStep,this.parser_=p.parser,this.props=p.props,this.value=p.value,this.viewProps=p.viewProps,this.dragging_=$(null),this.view=new Ll(c,{arrayPosition:p.arrayPosition,dragging:this.dragging_,props:this.props,value:this.value,viewProps:this.viewProps}),this.view.inputElement.addEventListener("change",this.onInputChange_),this.view.inputElement.addEventListener("keydown",this.onInputKeyDown_),this.view.inputElement.addEventListener("keyup",this.onInputKeyUp_);const x=new js(this.view.knobElement);x.emitter.on("down",this.onPointerDown_),x.emitter.on("move",this.onPointerMove_),x.emitter.on("up",this.onPointerUp_)}onInputChange_(c){const x=c.currentTarget.value,L=this.parser_(x);f(L)||(this.value.rawValue=L),this.view.refresh()}onInputKeyDown_(c){const p=kn(this.baseStep_,ds(c));p!==0&&this.value.setRawValue(this.value.rawValue+p,{forceEmit:!1,last:!1})}onInputKeyUp_(c){kn(this.baseStep_,ds(c))!==0&&this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}onPointerDown_(){this.originRawValue_=this.value.rawValue,this.dragging_.rawValue=0}computeDraggingValue_(c){if(!c.point)return null;const p=c.point.x-c.bounds.width/2;return this.originRawValue_+p*this.props.get("draggingScale")}onPointerMove_(c){const p=this.computeDraggingValue_(c.data);p!==null&&(this.value.setRawValue(p,{forceEmit:!1,last:!1}),this.dragging_.rawValue=this.value.rawValue-this.originRawValue_)}onPointerUp_(c){const p=this.computeDraggingValue_(c.data);p!==null&&(this.value.setRawValue(p,{forceEmit:!0,last:!0}),this.dragging_.rawValue=null)}}const Du=E("sld");class qd{constructor(c,p){this.onChange_=this.onChange_.bind(this),this.props_=p.props,this.props_.emitter.on("change",this.onChange_),this.element=c.createElement("div"),this.element.classList.add(Du()),p.viewProps.bindClassModifiers(this.element);const x=c.createElement("div");x.classList.add(Du("t")),p.viewProps.bindTabIndex(x),this.element.appendChild(x),this.trackElement=x;const L=c.createElement("div");L.classList.add(Du("k")),this.trackElement.appendChild(L),this.knobElement=L,p.value.emitter.on("change",this.onChange_),this.value=p.value,this.update_()}update_(){const c=gn(hn(this.value.rawValue,this.props_.get("minValue"),this.props_.get("maxValue"),0,100),0,100);this.knobElement.style.width=`${c}%`}onChange_(){this.update_()}}class Yd{constructor(c,p){this.onKeyDown_=this.onKeyDown_.bind(this),this.onKeyUp_=this.onKeyUp_.bind(this),this.onPointerDownOrMove_=this.onPointerDownOrMove_.bind(this),this.onPointerUp_=this.onPointerUp_.bind(this),this.baseStep_=p.baseStep,this.value=p.value,this.viewProps=p.viewProps,this.props=p.props,this.view=new qd(c,{props:this.props,value:this.value,viewProps:this.viewProps}),this.ptHandler_=new js(this.view.trackElement),this.ptHandler_.emitter.on("down",this.onPointerDownOrMove_),this.ptHandler_.emitter.on("move",this.onPointerDownOrMove_),this.ptHandler_.emitter.on("up",this.onPointerUp_),this.view.trackElement.addEventListener("keydown",this.onKeyDown_),this.view.trackElement.addEventListener("keyup",this.onKeyUp_)}handlePointerEvent_(c,p){c.point&&this.value.setRawValue(hn(gn(c.point.x,0,c.bounds.width),0,c.bounds.width,this.props.get("minValue"),this.props.get("maxValue")),p)}onPointerDownOrMove_(c){this.handlePointerEvent_(c.data,{forceEmit:!1,last:!1})}onPointerUp_(c){this.handlePointerEvent_(c.data,{forceEmit:!0,last:!0})}onKeyDown_(c){const p=kn(this.baseStep_,lr(c));p!==0&&this.value.setRawValue(this.value.rawValue+p,{forceEmit:!1,last:!1})}onKeyUp_(c){kn(this.baseStep_,lr(c))!==0&&this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}}const Da=E("sldtxt");class Iu{constructor(c,p){this.element=c.createElement("div"),this.element.classList.add(Da());const x=c.createElement("div");x.classList.add(Da("s")),this.sliderView_=p.sliderView,x.appendChild(this.sliderView_.element),this.element.appendChild(x);const L=c.createElement("div");L.classList.add(Da("t")),this.textView_=p.textView,L.appendChild(this.textView_.element),this.element.appendChild(L)}}class Dl{constructor(c,p){this.value=p.value,this.viewProps=p.viewProps,this.sliderC_=new Yd(c,{baseStep:p.baseStep,props:p.sliderProps,value:p.value,viewProps:this.viewProps}),this.textC_=new Cr(c,{baseStep:p.baseStep,parser:p.parser,props:p.textProps,value:p.value,viewProps:p.viewProps}),this.view=new Iu(c,{sliderView:this.sliderC_.view,textView:this.textC_.view})}get sliderController(){return this.sliderC_}get textController(){return this.textC_}}function Ia(m,c){m.write(c)}function ko(m){const c=fe;if(Array.isArray(m))return c.required.array(c.required.object({text:c.required.string,value:c.required.raw}))(m).value;if(typeof m=="object")return c.required.raw(m).value}function Il(m){if(m==="inline"||m==="popup")return m}function ps(m){const c=fe;return c.required.object({max:c.optional.number,min:c.optional.number,step:c.optional.number})(m).value}function Ou(m){if(Array.isArray(m))return m;const c=[];return Object.keys(m).forEach(p=>{c.push({text:p,value:m[p]})}),c}function _i(m){return f(m)?null:new Ca(Ou(m))}function Oa(m){const c=m?Ki(m,Ca):null;return c?c.options:null}function ka(m){const c=m?Ki(m,Ar):null;return c?c.step:null}function Na(m,c){const p=m&&Ki(m,Ar);return p?Xd(p.step):Math.max(Xd(c),2)}function Xs(m){const c=ka(m);return c??1}function No(m,c){var p;const x=m&&Ki(m,Ar),L=Math.abs((p=x==null?void 0:x.step)!==null&&p!==void 0?p:c);return L===0?.1:Math.pow(10,Math.floor(Math.log10(L))-1)}const Ol=E("ckb");class lg{constructor(c,p){this.onValueChange_=this.onValueChange_.bind(this),this.element=c.createElement("div"),this.element.classList.add(Ol()),p.viewProps.bindClassModifiers(this.element);const x=c.createElement("label");x.classList.add(Ol("l")),this.element.appendChild(x);const L=c.createElement("input");L.classList.add(Ol("i")),L.type="checkbox",x.appendChild(L),this.inputElement=L,p.viewProps.bindDisabled(this.inputElement);const q=c.createElement("div");q.classList.add(Ol("w")),x.appendChild(q);const ee=rt(c,"check");q.appendChild(ee),p.value.emitter.on("change",this.onValueChange_),this.value=p.value,this.update_()}update_(){this.inputElement.checked=this.value.rawValue}onValueChange_(){this.update_()}}class cg{constructor(c,p){this.onInputChange_=this.onInputChange_.bind(this),this.value=p.value,this.viewProps=p.viewProps,this.view=new lg(c,{value:this.value,viewProps:this.viewProps}),this.view.inputElement.addEventListener("change",this.onInputChange_)}onInputChange_(c){const p=c.currentTarget;this.value.rawValue=p.checked}}function ug(m){const c=[],p=_i(m.options);return p&&c.push(p),new us(c)}const Bo={id:"input-bool",type:"input",accept:(m,c)=>{if(typeof m!="boolean")return null;const x=Ce(c,{options:fe.optional.custom(ko)});return x?{initialValue:m,params:x}:null},binding:{reader:m=>Su,constraint:m=>ug(m.params),writer:m=>Ia},controller:m=>{var c;const p=m.document,x=m.value,L=m.constraint;return L&&Ki(L,Ca)?new Ro(p,{props:K.fromObject({options:(c=Oa(L))!==null&&c!==void 0?c:[]}),value:x,viewProps:m.viewProps}):new cg(p,{value:x,viewProps:m.viewProps})}},qs=E("col");class hg{constructor(c,p){this.element=c.createElement("div"),this.element.classList.add(qs()),p.foldable.bindExpandedClass(this.element,qs(void 0,"expanded")),I(p.foldable,"completed",P(this.element,qs(void 0,"cpl")));const x=c.createElement("div");x.classList.add(qs("h")),this.element.appendChild(x);const L=c.createElement("div");L.classList.add(qs("s")),x.appendChild(L),this.swatchElement=L;const q=c.createElement("div");if(q.classList.add(qs("t")),x.appendChild(q),this.textElement=q,p.pickerLayout==="inline"){const ee=c.createElement("div");ee.classList.add(qs("p")),this.element.appendChild(ee),this.pickerElement=ee}else this.pickerElement=null}}function ku(m,c,p){const x=gn(m/255,0,1),L=gn(c/255,0,1),q=gn(p/255,0,1),ee=Math.max(x,L,q),Oe=Math.min(x,L,q),lt=ee-Oe;let mt=0,jt=0;const Jt=(Oe+ee)/2;return lt!==0&&(jt=lt/(1-Math.abs(ee+Oe-1)),x===ee?mt=(L-q)/lt:L===ee?mt=2+(q-x)/lt:mt=4+(x-L)/lt,mt=mt/6+(mt<0?1:0)),[mt*360,jt*100,Jt*100]}function Zd(m,c,p){const x=(m%360+360)%360,L=gn(c/100,0,1),q=gn(p/100,0,1),ee=(1-Math.abs(2*q-1))*L,Oe=ee*(1-Math.abs(x/60%2-1)),lt=q-ee/2;let mt,jt,Jt;return x>=0&&x<60?[mt,jt,Jt]=[ee,Oe,0]:x>=60&&x<120?[mt,jt,Jt]=[Oe,ee,0]:x>=120&&x<180?[mt,jt,Jt]=[0,ee,Oe]:x>=180&&x<240?[mt,jt,Jt]=[0,Oe,ee]:x>=240&&x<300?[mt,jt,Jt]=[Oe,0,ee]:[mt,jt,Jt]=[ee,0,Oe],[(mt+lt)*255,(jt+lt)*255,(Jt+lt)*255]}function fs(m,c,p){const x=gn(m/255,0,1),L=gn(c/255,0,1),q=gn(p/255,0,1),ee=Math.max(x,L,q),Oe=Math.min(x,L,q),lt=ee-Oe;let mt;lt===0?mt=0:ee===x?mt=60*(((L-q)/lt%6+6)%6):ee===L?mt=60*((q-x)/lt+2):mt=60*((x-L)/lt+4);const jt=ee===0?0:lt/ee,Jt=ee;return[mt,jt*100,Jt*100]}function Ba(m,c,p){const x=Lu(m,360),L=gn(c/100,0,1),q=gn(p/100,0,1),ee=q*L,Oe=ee*(1-Math.abs(x/60%2-1)),lt=q-ee;let mt,jt,Jt;return x>=0&&x<60?[mt,jt,Jt]=[ee,Oe,0]:x>=60&&x<120?[mt,jt,Jt]=[Oe,ee,0]:x>=120&&x<180?[mt,jt,Jt]=[0,ee,Oe]:x>=180&&x<240?[mt,jt,Jt]=[0,Oe,ee]:x>=240&&x<300?[mt,jt,Jt]=[Oe,0,ee]:[mt,jt,Jt]=[ee,0,Oe],[(mt+lt)*255,(jt+lt)*255,(Jt+lt)*255]}function dg(m,c,p){const x=p+c*(100-Math.abs(2*p-100))/200;return[m,x!==0?c*(100-Math.abs(2*p-100))/x:0,p+c*(100-Math.abs(2*p-100))/(2*100)]}function pg(m,c,p){const x=100-Math.abs(p*(200-c)/100-100);return[m,x!==0?c*p/x:0,p*(200-c)/(2*100)]}function zo(m){return[m[0],m[1],m[2]]}function Ys(m,c){return[m[0],m[1],m[2],c]}const cr={hsl:{hsl:(m,c,p)=>[m,c,p],hsv:dg,rgb:Zd},hsv:{hsl:pg,hsv:(m,c,p)=>[m,c,p],rgb:Ba},rgb:{hsl:ku,hsv:fs,rgb:(m,c,p)=>[m,c,p]}};function Kd(m,c,p){return cr[c][p](...m)}const fg={hsl:m=>{var c;return[Lu(m[0],360),gn(m[1],0,100),gn(m[2],0,100),gn((c=m[3])!==null&&c!==void 0?c:1,0,1)]},hsv:m=>{var c;return[Lu(m[0],360),gn(m[1],0,100),gn(m[2],0,100),gn((c=m[3])!==null&&c!==void 0?c:1,0,1)]},rgb:m=>{var c;return[gn(m[0],0,255),gn(m[1],0,255),gn(m[2],0,255),gn((c=m[3])!==null&&c!==void 0?c:1,0,1)]}};function kl(m,c){return typeof m!="object"||f(m)?!1:c in m&&typeof m[c]=="number"}class Bt{constructor(c,p){this.mode_=p,this.comps_=fg[p](c)}static black(){return new Bt([0,0,0],"rgb")}static fromObject(c){const p="a"in c?[c.r,c.g,c.b,c.a]:[c.r,c.g,c.b];return new Bt(p,"rgb")}static toRgbaObject(c){return c.toRgbaObject()}static isRgbColorObject(c){return kl(c,"r")&&kl(c,"g")&&kl(c,"b")}static isRgbaColorObject(c){return this.isRgbColorObject(c)&&kl(c,"a")}static isColorObject(c){return this.isRgbColorObject(c)}static equals(c,p){if(c.mode_!==p.mode_)return!1;const x=c.comps_,L=p.comps_;for(let q=0;qp.inputElement)];return this.alphaViews_&&c.push(this.alphaViews_.palette.element,this.alphaViews_.text.inputElement),c}}function vs(m){const c=fe;return Ce(m,{alpha:c.optional.boolean,expanded:c.optional.boolean,picker:c.optional.custom(Il)})}function J(m){return m?.1:1}function le(m,c){const p=m.match(/^(.+)%$/);return Math.min(p?parseFloat(p[1])*.01*c:parseFloat(m),c)}const ie={deg:m=>m,grad:m=>m*360/400,rad:m=>m*360/(2*Math.PI),turn:m=>m*360};function je(m){const c=m.match(/^([0-9.]+?)(deg|grad|rad|turn)$/);if(!c)return parseFloat(m);const p=parseFloat(c[1]),x=c[2];return ie[x](p)}const ft={"func.rgb":m=>{const c=m.match(/^rgb\(\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*\)$/);if(!c)return null;const p=[le(c[1],255),le(c[2],255),le(c[3],255)];return isNaN(p[0])||isNaN(p[1])||isNaN(p[2])?null:new Bt(p,"rgb")},"func.rgba":m=>{const c=m.match(/^rgba\(\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*\)$/);if(!c)return null;const p=[le(c[1],255),le(c[2],255),le(c[3],255),le(c[4],1)];return isNaN(p[0])||isNaN(p[1])||isNaN(p[2])||isNaN(p[3])?null:new Bt(p,"rgb")},"func.hsl":m=>{const c=m.match(/^hsl\(\s*([0-9A-Fa-f.]+(?:deg|grad|rad|turn)?)\s*,\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*\)$/);if(!c)return null;const p=[je(c[1]),le(c[2],100),le(c[3],100)];return isNaN(p[0])||isNaN(p[1])||isNaN(p[2])?null:new Bt(p,"hsl")},"func.hsla":m=>{const c=m.match(/^hsla\(\s*([0-9A-Fa-f.]+(?:deg|grad|rad|turn)?)\s*,\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*,\s*([0-9A-Fa-f.]+%?)\s*\)$/);if(!c)return null;const p=[je(c[1]),le(c[2],100),le(c[3],100),le(c[4],1)];return isNaN(p[0])||isNaN(p[1])||isNaN(p[2])||isNaN(p[3])?null:new Bt(p,"hsl")},"hex.rgb":m=>{const c=m.match(/^#([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])$/);if(c)return new Bt([parseInt(c[1]+c[1],16),parseInt(c[2]+c[2],16),parseInt(c[3]+c[3],16)],"rgb");const p=m.match(/^(?:#|0x)([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})$/);return p?new Bt([parseInt(p[1],16),parseInt(p[2],16),parseInt(p[3],16)],"rgb"):null},"hex.rgba":m=>{const c=m.match(/^#?([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])$/);if(c)return new Bt([parseInt(c[1]+c[1],16),parseInt(c[2]+c[2],16),parseInt(c[3]+c[3],16),hn(parseInt(c[4]+c[4],16),0,255,0,1)],"rgb");const p=m.match(/^(?:#|0x)?([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})$/);return p?new Bt([parseInt(p[1],16),parseInt(p[2],16),parseInt(p[3],16),hn(parseInt(p[4],16),0,255,0,1)],"rgb"):null}};function Wt(m){return Object.keys(ft).reduce((p,x)=>{if(p)return p;const L=ft[x];return L(m)?x:null},null)}const Pn=m=>{const c=Wt(m);return c?ft[c](m):null};function ln(m){return m==="func.hsla"||m==="func.rgba"||m==="hex.rgba"}function Nu(m){if(typeof m=="string"){const c=Pn(m);if(c)return c}return Bt.black()}function Jd(m){const c=gn(Math.floor(m),0,255).toString(16);return c.length===1?`0${c}`:c}function Ei(m,c="#"){const p=zo(m.getComponents("rgb")).map(Jd).join("");return`${c}${p}`}function Zs(m,c="#"){const p=m.getComponents("rgb"),x=[p[0],p[1],p[2],p[3]*255].map(Jd).join("");return`${c}${x}`}function Qd(m){const c=yi(0);return`rgb(${zo(m.getComponents("rgb")).map(x=>c(x)).join(", ")})`}function Fr(m){const c=yi(2),p=yi(0);return`rgba(${m.getComponents("rgb").map((L,q)=>(q===3?c:p)(L)).join(", ")})`}function Nl(m){const c=[yi(0),Ra,Ra];return`hsl(${zo(m.getComponents("hsl")).map((x,L)=>c[L](x)).join(", ")})`}function Bl(m){const c=[yi(0),Ra,Ra,yi(2)];return`hsla(${m.getComponents("hsl").map((x,L)=>c[L](x)).join(", ")})`}const en={"func.hsl":Nl,"func.hsla":Bl,"func.rgb":Qd,"func.rgba":Fr,"hex.rgb":Ei,"hex.rgba":Zs};function $d(m){return en[m]}const Uo=E("apl");class zl{constructor(c,p){this.onValueChange_=this.onValueChange_.bind(this),this.value=p.value,this.value.emitter.on("change",this.onValueChange_),this.element=c.createElement("div"),this.element.classList.add(Uo()),p.viewProps.bindTabIndex(this.element);const x=c.createElement("div");x.classList.add(Uo("b")),this.element.appendChild(x);const L=c.createElement("div");L.classList.add(Uo("c")),x.appendChild(L),this.colorElem_=L;const q=c.createElement("div");q.classList.add(Uo("m")),this.element.appendChild(q),this.markerElem_=q;const ee=c.createElement("div");ee.classList.add(Uo("p")),this.markerElem_.appendChild(ee),this.previewElem_=ee,this.update_()}update_(){const c=this.value.rawValue,p=c.getComponents("rgb"),x=new Bt([p[0],p[1],p[2],0],"rgb"),L=new Bt([p[0],p[1],p[2],255],"rgb"),q=["to right",Fr(x),Fr(L)];this.colorElem_.style.background=`linear-gradient(${q.join(",")})`,this.previewElem_.style.backgroundColor=Fr(c);const ee=hn(p[3],0,1,0,100);this.markerElem_.style.left=`${ee}%`}onValueChange_(){this.update_()}}class vg{constructor(c,p){this.onKeyDown_=this.onKeyDown_.bind(this),this.onKeyUp_=this.onKeyUp_.bind(this),this.onPointerDown_=this.onPointerDown_.bind(this),this.onPointerMove_=this.onPointerMove_.bind(this),this.onPointerUp_=this.onPointerUp_.bind(this),this.value=p.value,this.viewProps=p.viewProps,this.view=new zl(c,{value:this.value,viewProps:this.viewProps}),this.ptHandler_=new js(this.view.element),this.ptHandler_.emitter.on("down",this.onPointerDown_),this.ptHandler_.emitter.on("move",this.onPointerMove_),this.ptHandler_.emitter.on("up",this.onPointerUp_),this.view.element.addEventListener("keydown",this.onKeyDown_),this.view.element.addEventListener("keyup",this.onKeyUp_)}handlePointerEvent_(c,p){if(!c.point)return;const x=c.point.x/c.bounds.width,L=this.value.rawValue,[q,ee,Oe]=L.getComponents("hsv");this.value.setRawValue(new Bt([q,ee,Oe,x],"hsv"),p)}onPointerDown_(c){this.handlePointerEvent_(c.data,{forceEmit:!1,last:!1})}onPointerMove_(c){this.handlePointerEvent_(c.data,{forceEmit:!1,last:!1})}onPointerUp_(c){this.handlePointerEvent_(c.data,{forceEmit:!0,last:!0})}onKeyDown_(c){const p=kn(J(!0),lr(c));if(p===0)return;const x=this.value.rawValue,[L,q,ee,Oe]=x.getComponents("hsv");this.value.setRawValue(new Bt([L,q,ee,Oe+p],"hsv"),{forceEmit:!1,last:!1})}onKeyUp_(c){kn(J(!0),lr(c))!==0&&this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}}const Fo=E("coltxt");function gg(m){const c=m.createElement("select"),p=[{text:"RGB",value:"rgb"},{text:"HSL",value:"hsl"},{text:"HSV",value:"hsv"}];return c.appendChild(p.reduce((x,L)=>{const q=m.createElement("option");return q.textContent=L.text,q.value=L.value,x.appendChild(q),x},m.createDocumentFragment())),c}class Ul{constructor(c,p){this.element=c.createElement("div"),this.element.classList.add(Fo());const x=c.createElement("div");x.classList.add(Fo("m")),this.modeElem_=gg(c),this.modeElem_.classList.add(Fo("ms")),x.appendChild(this.modeSelectElement);const L=c.createElement("div");L.classList.add(Fo("mm")),L.appendChild(rt(c,"dropdown")),x.appendChild(L),this.element.appendChild(x);const q=c.createElement("div");q.classList.add(Fo("w")),this.element.appendChild(q),this.textsElem_=q,this.textViews_=p.textViews,this.applyTextViews_(),D(p.colorMode,ee=>{this.modeElem_.value=ee})}get modeSelectElement(){return this.modeElem_}get textViews(){return this.textViews_}set textViews(c){this.textViews_=c,this.applyTextViews_()}applyTextViews_(){Ft(this.textsElem_);const c=this.element.ownerDocument;this.textViews_.forEach(p=>{const x=c.createElement("div");x.classList.add(Fo("c")),x.appendChild(p.element),this.textsElem_.appendChild(x)})}}const gs=yi(0),Fl={rgb:()=>new Si({min:0,max:255}),hsl:m=>m===0?new Si({min:0,max:360}):new Si({min:0,max:100}),hsv:m=>m===0?new Si({min:0,max:360}):new Si({min:0,max:100})};function Vl(m,c,p){return new Cr(m,{arrayPosition:p===0?"fst":p===3-1?"lst":"mid",baseStep:J(!1),parser:c.parser,props:K.fromObject({draggingScale:1,formatter:gs}),value:$(0,{constraint:Fl[c.colorMode](p)}),viewProps:c.viewProps})}class Hl{constructor(c,p){this.onModeSelectChange_=this.onModeSelectChange_.bind(this),this.parser_=p.parser,this.value=p.value,this.viewProps=p.viewProps,this.colorMode=$(this.value.rawValue.mode),this.ccs_=this.createComponentControllers_(c),this.view=new Ul(c,{colorMode:this.colorMode,textViews:[this.ccs_[0].view,this.ccs_[1].view,this.ccs_[2].view]}),this.view.modeSelectElement.addEventListener("change",this.onModeSelectChange_)}createComponentControllers_(c){const p={colorMode:this.colorMode.rawValue,parser:this.parser_,viewProps:this.viewProps},x=[Vl(c,p,0),Vl(c,p,1),Vl(c,p,2)];return x.forEach((L,q)=>{Oo({primary:this.value,secondary:L.value,forward:ee=>ee.rawValue.getComponents(this.colorMode.rawValue)[q],backward:(ee,Oe)=>{const lt=this.colorMode.rawValue,mt=ee.rawValue.getComponents(lt);return mt[q]=Oe.rawValue,new Bt(Ys(zo(mt),mt[3]),lt)}})}),x}onModeSelectChange_(c){const p=c.currentTarget;this.colorMode.rawValue=p.value,this.ccs_=this.createComponentControllers_(this.view.element.ownerDocument),this.view.textViews=[this.ccs_[0].view,this.ccs_[1].view,this.ccs_[2].view]}}const Gl=E("hpl");class ep{constructor(c,p){this.onValueChange_=this.onValueChange_.bind(this),this.value=p.value,this.value.emitter.on("change",this.onValueChange_),this.element=c.createElement("div"),this.element.classList.add(Gl()),p.viewProps.bindTabIndex(this.element);const x=c.createElement("div");x.classList.add(Gl("c")),this.element.appendChild(x);const L=c.createElement("div");L.classList.add(Gl("m")),this.element.appendChild(L),this.markerElem_=L,this.update_()}update_(){const c=this.value.rawValue,[p]=c.getComponents("hsv");this.markerElem_.style.backgroundColor=Qd(new Bt([p,100,100],"hsv"));const x=hn(p,0,360,0,100);this.markerElem_.style.left=`${x}%`}onValueChange_(){this.update_()}}class Wl{constructor(c,p){this.onKeyDown_=this.onKeyDown_.bind(this),this.onKeyUp_=this.onKeyUp_.bind(this),this.onPointerDown_=this.onPointerDown_.bind(this),this.onPointerMove_=this.onPointerMove_.bind(this),this.onPointerUp_=this.onPointerUp_.bind(this),this.value=p.value,this.viewProps=p.viewProps,this.view=new ep(c,{value:this.value,viewProps:this.viewProps}),this.ptHandler_=new js(this.view.element),this.ptHandler_.emitter.on("down",this.onPointerDown_),this.ptHandler_.emitter.on("move",this.onPointerMove_),this.ptHandler_.emitter.on("up",this.onPointerUp_),this.view.element.addEventListener("keydown",this.onKeyDown_),this.view.element.addEventListener("keyup",this.onKeyUp_)}handlePointerEvent_(c,p){if(!c.point)return;const x=hn(gn(c.point.x,0,c.bounds.width),0,c.bounds.width,0,359),L=this.value.rawValue,[,q,ee,Oe]=L.getComponents("hsv");this.value.setRawValue(new Bt([x,q,ee,Oe],"hsv"),p)}onPointerDown_(c){this.handlePointerEvent_(c.data,{forceEmit:!1,last:!1})}onPointerMove_(c){this.handlePointerEvent_(c.data,{forceEmit:!1,last:!1})}onPointerUp_(c){this.handlePointerEvent_(c.data,{forceEmit:!0,last:!0})}onKeyDown_(c){const p=kn(J(!1),lr(c));if(p===0)return;const x=this.value.rawValue,[L,q,ee,Oe]=x.getComponents("hsv");this.value.setRawValue(new Bt([L+p,q,ee,Oe],"hsv"),{forceEmit:!1,last:!1})}onKeyUp_(c){kn(J(!1),lr(c))!==0&&this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}}const jl=E("svp"),Vo=64;class Ks{constructor(c,p){this.onValueChange_=this.onValueChange_.bind(this),this.value=p.value,this.value.emitter.on("change",this.onValueChange_),this.element=c.createElement("div"),this.element.classList.add(jl()),p.viewProps.bindTabIndex(this.element);const x=c.createElement("canvas");x.height=Vo,x.width=Vo,x.classList.add(jl("c")),this.element.appendChild(x),this.canvasElement=x;const L=c.createElement("div");L.classList.add(jl("m")),this.element.appendChild(L),this.markerElem_=L,this.update_()}update_(){const c=We(this.canvasElement);if(!c)return;const x=this.value.rawValue.getComponents("hsv"),L=this.canvasElement.width,q=this.canvasElement.height,ee=c.getImageData(0,0,L,q),Oe=ee.data;for(let jt=0;jtx.rawValue.getComponents()[3],backward:(x,L)=>{const q=x.rawValue.getComponents();return q[3]=L.rawValue,new Bt(q,x.rawValue.mode)}}),this.textC_=new Hl(c,{parser:ar,value:this.value,viewProps:this.viewProps}),this.view=new mg(c,{alphaViews:this.alphaIcs_?{palette:this.alphaIcs_.palette.view,text:this.alphaIcs_.text.view}:null,hPaletteView:this.hPaletteC_.view,supportsAlpha:p.supportsAlpha,svPaletteView:this.svPaletteC_.view,textView:this.textC_.view})}get textController(){return this.textC_}}const Bu=E("colsw");class _g{constructor(c,p){this.onValueChange_=this.onValueChange_.bind(this),p.value.emitter.on("change",this.onValueChange_),this.value=p.value,this.element=c.createElement("div"),this.element.classList.add(Bu()),p.viewProps.bindClassModifiers(this.element);const x=c.createElement("div");x.classList.add(Bu("sw")),this.element.appendChild(x),this.swatchElem_=x;const L=c.createElement("button");L.classList.add(Bu("b")),p.viewProps.bindDisabled(L),this.element.appendChild(L),this.buttonElement=L,this.update_()}update_(){const c=this.value.rawValue;this.swatchElem_.style.backgroundColor=Zs(c)}onValueChange_(){this.update_()}}class ql{constructor(c,p){this.value=p.value,this.viewProps=p.viewProps,this.view=new _g(c,{value:this.value,viewProps:this.viewProps})}}class Ho{constructor(c,p){this.onButtonBlur_=this.onButtonBlur_.bind(this),this.onButtonClick_=this.onButtonClick_.bind(this),this.onPopupChildBlur_=this.onPopupChildBlur_.bind(this),this.onPopupChildKeydown_=this.onPopupChildKeydown_.bind(this),this.value=p.value,this.viewProps=p.viewProps,this.foldable_=Ee.create(p.expanded),this.swatchC_=new ql(c,{value:this.value,viewProps:this.viewProps});const x=this.swatchC_.view.buttonElement;x.addEventListener("blur",this.onButtonBlur_),x.addEventListener("click",this.onButtonClick_),this.textC_=new Lo(c,{parser:p.parser,props:K.fromObject({formatter:p.formatter}),value:this.value,viewProps:this.viewProps}),this.view=new hg(c,{foldable:this.foldable_,pickerLayout:p.pickerLayout}),this.view.swatchElement.appendChild(this.swatchC_.view.element),this.view.textElement.appendChild(this.textC_.view.element),this.popC_=p.pickerLayout==="popup"?new Bd(c,{viewProps:this.viewProps}):null;const L=new yg(c,{supportsAlpha:p.supportsAlpha,value:this.value,viewProps:this.viewProps});L.view.allFocusableElements.forEach(q=>{q.addEventListener("blur",this.onPopupChildBlur_),q.addEventListener("keydown",this.onPopupChildKeydown_)}),this.pickerC_=L,this.popC_?(this.view.element.appendChild(this.popC_.view.element),this.popC_.view.element.appendChild(L.view.element),Oo({primary:this.foldable_.value("expanded"),secondary:this.popC_.shows,forward:q=>q.rawValue,backward:(q,ee)=>ee.rawValue})):this.view.pickerElement&&(this.view.pickerElement.appendChild(this.pickerC_.view.element),X(this.foldable_,this.view.pickerElement))}get textController(){return this.textC_}onButtonBlur_(c){if(!this.popC_)return;const p=this.view.element,x=c.relatedTarget;(!x||!p.contains(x))&&(this.popC_.shows.rawValue=!1)}onButtonClick_(){this.foldable_.set("expanded",!this.foldable_.get("expanded")),this.foldable_.get("expanded")&&this.pickerC_.view.allFocusableElements[0].focus()}onPopupChildBlur_(c){if(!this.popC_)return;const p=this.popC_.view.element,x=H(c);x&&p.contains(x)||x&&x===this.swatchC_.view.buttonElement&&!ve(p.ownerDocument)||(this.popC_.shows.rawValue=!1)}onPopupChildKeydown_(c){this.popC_?c.key==="Escape"&&(this.popC_.shows.rawValue=!1):this.view.pickerElement&&c.key==="Escape"&&this.swatchC_.view.buttonElement.focus()}}function zu(m){return Bt.isColorObject(m)?Bt.fromObject(m):Bt.black()}function xg(m){return zo(m.getComponents("rgb")).reduce((c,p)=>c<<8|Math.floor(p)&255,0)}function tp(m){return m.getComponents("rgb").reduce((c,p,x)=>{const L=Math.floor(x===3?p*255:p)&255;return c<<8|L},0)>>>0}function bg(m){return new Bt([m>>16&255,m>>8&255,m&255],"rgb")}function wg(m){return new Bt([m>>24&255,m>>16&255,m>>8&255,hn(m&255,0,255,0,1)],"rgb")}function Xn(m){return typeof m!="number"?Bt.black():bg(m)}function ui(m){return typeof m!="number"?Bt.black():wg(m)}function Sg(m){const c=$d(m);return(p,x)=>{Ia(p,c(x))}}function Mg(m){const c=m?tp:xg;return(p,x)=>{Ia(p,c(x))}}function np(m,c){const p=c.toRgbaObject();m.writeProperty("r",p.r),m.writeProperty("g",p.g),m.writeProperty("b",p.b),m.writeProperty("a",p.a)}function Eg(m,c){const p=c.toRgbaObject();m.writeProperty("r",p.r),m.writeProperty("g",p.g),m.writeProperty("b",p.b)}function Uu(m){return m?np:Eg}function Js(m){return"alpha"in m&&m.alpha===!0}function Fu(m){return m?c=>Zs(c,"0x"):c=>Ei(c,"0x")}const Go={id:"input-color-number",type:"input",accept:(m,c)=>{if(typeof m!="number"||!("view"in c)||c.view!=="color")return null;const p=vs(c);return p?{initialValue:m,params:p}:null},binding:{reader:m=>Js(m.params)?ui:Xn,equals:Bt.equals,writer:m=>Mg(Js(m.params))},controller:m=>{const c=Js(m.params),p="expanded"in m.params?m.params.expanded:void 0,x="picker"in m.params?m.params.picker:void 0;return new Ho(m.document,{expanded:p??!1,formatter:Fu(c),parser:Pn,pickerLayout:x??"popup",supportsAlpha:c,value:m.value,viewProps:m.viewProps})}};function za(m){return Bt.isRgbaColorObject(m)}const Ua={id:"input-color-object",type:"input",accept:(m,c)=>{if(!Bt.isColorObject(m))return null;const p=vs(c);return p?{initialValue:m,params:p}:null},binding:{reader:m=>zu,equals:Bt.equals,writer:m=>Uu(za(m.initialValue))},controller:m=>{const c=Bt.isRgbaColorObject(m.initialValue),p="expanded"in m.params?m.params.expanded:void 0,x="picker"in m.params?m.params.picker:void 0,L=c?Zs:Ei;return new Ho(m.document,{expanded:p??!1,formatter:L,parser:Pn,pickerLayout:x??"popup",supportsAlpha:c,value:m.value,viewProps:m.viewProps})}},Yl={id:"input-color-string",type:"input",accept:(m,c)=>{if(typeof m!="string"||"view"in c&&c.view==="text"||!Wt(m))return null;const x=vs(c);return x?{initialValue:m,params:x}:null},binding:{reader:m=>Nu,equals:Bt.equals,writer:m=>{const c=Wt(m.initialValue);if(!c)throw _.shouldNeverHappen();return Sg(c)}},controller:m=>{const c=Wt(m.initialValue);if(!c)throw _.shouldNeverHappen();const p=$d(c),x="expanded"in m.params?m.params.expanded:void 0,L="picker"in m.params?m.params.picker:void 0;return new Ho(m.document,{expanded:x??!1,formatter:p,parser:Pn,pickerLayout:L??"popup",supportsAlpha:ln(c),value:m.value,viewProps:m.viewProps})}};class Ni{constructor(c){this.components=c.components,this.asm_=c.assembly}constrain(c){const p=this.asm_.toComponents(c).map((x,L)=>{var q,ee;return(ee=(q=this.components[L])===null||q===void 0?void 0:q.constrain(x))!==null&&ee!==void 0?ee:x});return this.asm_.fromComponents(p)}}const ip=E("pndtxt");class Tg{constructor(c,p){this.textViews=p.textViews,this.element=c.createElement("div"),this.element.classList.add(ip()),this.textViews.forEach(x=>{const L=c.createElement("div");L.classList.add(ip("a")),L.appendChild(x.element),this.element.appendChild(L)})}}function Ag(m,c,p){return new Cr(m,{arrayPosition:p===0?"fst":p===c.axes.length-1?"lst":"mid",baseStep:c.axes[p].baseStep,parser:c.parser,props:c.axes[p].textProps,value:$(0,{constraint:c.axes[p].constraint}),viewProps:c.viewProps})}class Vu{constructor(c,p){this.value=p.value,this.viewProps=p.viewProps,this.acs_=p.axes.map((x,L)=>Ag(c,p,L)),this.acs_.forEach((x,L)=>{Oo({primary:this.value,secondary:x.value,forward:q=>p.assembly.toComponents(q.rawValue)[L],backward:(q,ee)=>{const Oe=p.assembly.toComponents(q.rawValue);return Oe[L]=ee.rawValue,p.assembly.fromComponents(Oe)}})}),this.view=new Tg(c,{textViews:this.acs_.map(x=>x.view)})}}function Cg(m){return"step"in m&&!f(m.step)?new Ar(m.step):null}function Zl(m){return"max"in m&&!f(m.max)||"min"in m&&!f(m.min)?new Si({max:m.max,min:m.min}):null}function Fa(m){const c=[],p=Cg(m);p&&c.push(p);const x=Zl(m);x&&c.push(x);const L=_i(m.options);return L&&c.push(L),new us(c)}function rp(m){const c=m?Ki(m,Si):null;return c?[c.minValue,c.maxValue]:[void 0,void 0]}function O(m){const[c,p]=rp(m);return[c??0,p??100]}const Wo={id:"input-number",type:"input",accept:(m,c)=>{if(typeof m!="number")return null;const p=fe,x=Ce(c,{format:p.optional.function,max:p.optional.number,min:p.optional.number,options:p.optional.custom(ko),step:p.optional.number});return x?{initialValue:m,params:x}:null},binding:{reader:m=>Oi,constraint:m=>Fa(m.params),writer:m=>Ia},controller:m=>{var c,p;const x=m.value,L=m.constraint;if(L&&Ki(L,Ca))return new Ro(m.document,{props:K.fromObject({options:(c=Oa(L))!==null&&c!==void 0?c:[]}),value:x,viewProps:m.viewProps});const q=(p="format"in m.params?m.params.format:void 0)!==null&&p!==void 0?p:yi(Na(L,x.rawValue));if(L&&Ki(L,Si)){const[ee,Oe]=O(L);return new Dl(m.document,{baseStep:Xs(L),parser:ar,sliderProps:K.fromObject({maxValue:Oe,minValue:ee}),textProps:K.fromObject({draggingScale:No(L,x.rawValue),formatter:q}),value:x,viewProps:m.viewProps})}return new Cr(m.document,{baseStep:Xs(L),parser:ar,props:K.fromObject({draggingScale:No(L,x.rawValue),formatter:q}),value:x,viewProps:m.viewProps})}};class ur{constructor(c=0,p=0){this.x=c,this.y=p}getComponents(){return[this.x,this.y]}static isObject(c){if(f(c))return!1;const p=c.x,x=c.y;return!(typeof p!="number"||typeof x!="number")}static equals(c,p){return c.x===p.x&&c.y===p.y}toObject(){return{x:this.x,y:this.y}}}const Bi={toComponents:m=>m.getComponents(),fromComponents:m=>new ur(...m)},Mt=E("p2d");class Pg{constructor(c,p){this.element=c.createElement("div"),this.element.classList.add(Mt()),p.viewProps.bindClassModifiers(this.element),D(p.expanded,P(this.element,Mt(void 0,"expanded")));const x=c.createElement("div");x.classList.add(Mt("h")),this.element.appendChild(x);const L=c.createElement("button");L.classList.add(Mt("b")),L.appendChild(rt(c,"p2dpad")),p.viewProps.bindDisabled(L),x.appendChild(L),this.buttonElement=L;const q=c.createElement("div");if(q.classList.add(Mt("t")),x.appendChild(q),this.textElement=q,p.pickerLayout==="inline"){const ee=c.createElement("div");ee.classList.add(Mt("p")),this.element.appendChild(ee),this.pickerElement=ee}else this.pickerElement=null}}const ys=E("p2dp");class Rg{constructor(c,p){this.onFoldableChange_=this.onFoldableChange_.bind(this),this.onValueChange_=this.onValueChange_.bind(this),this.invertsY_=p.invertsY,this.maxValue_=p.maxValue,this.element=c.createElement("div"),this.element.classList.add(ys()),p.layout==="popup"&&this.element.classList.add(ys(void 0,"p"));const x=c.createElement("div");x.classList.add(ys("p")),p.viewProps.bindTabIndex(x),this.element.appendChild(x),this.padElement=x;const L=c.createElementNS(it,"svg");L.classList.add(ys("g")),this.padElement.appendChild(L),this.svgElem_=L;const q=c.createElementNS(it,"line");q.classList.add(ys("ax")),q.setAttributeNS(null,"x1","0"),q.setAttributeNS(null,"y1","50%"),q.setAttributeNS(null,"x2","100%"),q.setAttributeNS(null,"y2","50%"),this.svgElem_.appendChild(q);const ee=c.createElementNS(it,"line");ee.classList.add(ys("ax")),ee.setAttributeNS(null,"x1","50%"),ee.setAttributeNS(null,"y1","0"),ee.setAttributeNS(null,"x2","50%"),ee.setAttributeNS(null,"y2","100%"),this.svgElem_.appendChild(ee);const Oe=c.createElementNS(it,"line");Oe.classList.add(ys("l")),Oe.setAttributeNS(null,"x1","50%"),Oe.setAttributeNS(null,"y1","50%"),this.svgElem_.appendChild(Oe),this.lineElem_=Oe;const lt=c.createElement("div");lt.classList.add(ys("m")),this.padElement.appendChild(lt),this.markerElem_=lt,p.value.emitter.on("change",this.onValueChange_),this.value=p.value,this.update_()}get allFocusableElements(){return[this.padElement]}update_(){const[c,p]=this.value.rawValue.getComponents(),x=this.maxValue_,L=hn(c,-x,+x,0,100),q=hn(p,-x,+x,0,100),ee=this.invertsY_?100-q:q;this.lineElem_.setAttributeNS(null,"x2",`${L}%`),this.lineElem_.setAttributeNS(null,"y2",`${ee}%`),this.markerElem_.style.left=`${L}%`,this.markerElem_.style.top=`${ee}%`}onValueChange_(){this.update_()}onFoldableChange_(){this.update_()}}function _s(m,c,p){return[kn(c[0],lr(m)),kn(c[1],ds(m))*(p?1:-1)]}class Lg{constructor(c,p){this.onPadKeyDown_=this.onPadKeyDown_.bind(this),this.onPadKeyUp_=this.onPadKeyUp_.bind(this),this.onPointerDown_=this.onPointerDown_.bind(this),this.onPointerMove_=this.onPointerMove_.bind(this),this.onPointerUp_=this.onPointerUp_.bind(this),this.value=p.value,this.viewProps=p.viewProps,this.baseSteps_=p.baseSteps,this.maxValue_=p.maxValue,this.invertsY_=p.invertsY,this.view=new Rg(c,{invertsY:this.invertsY_,layout:p.layout,maxValue:this.maxValue_,value:this.value,viewProps:this.viewProps}),this.ptHandler_=new js(this.view.padElement),this.ptHandler_.emitter.on("down",this.onPointerDown_),this.ptHandler_.emitter.on("move",this.onPointerMove_),this.ptHandler_.emitter.on("up",this.onPointerUp_),this.view.padElement.addEventListener("keydown",this.onPadKeyDown_),this.view.padElement.addEventListener("keyup",this.onPadKeyUp_)}handlePointerEvent_(c,p){if(!c.point)return;const x=this.maxValue_,L=hn(c.point.x,0,c.bounds.width,-x,+x),q=hn(this.invertsY_?c.bounds.height-c.point.y:c.point.y,0,c.bounds.height,-x,+x);this.value.setRawValue(new ur(L,q),p)}onPointerDown_(c){this.handlePointerEvent_(c.data,{forceEmit:!1,last:!1})}onPointerMove_(c){this.handlePointerEvent_(c.data,{forceEmit:!1,last:!1})}onPointerUp_(c){this.handlePointerEvent_(c.data,{forceEmit:!0,last:!0})}onPadKeyDown_(c){Ur(c.key)&&c.preventDefault();const[p,x]=_s(c,this.baseSteps_,this.invertsY_);p===0&&x===0||this.value.setRawValue(new ur(this.value.rawValue.x+p,this.value.rawValue.y+x),{forceEmit:!1,last:!1})}onPadKeyUp_(c){const[p,x]=_s(c,this.baseSteps_,this.invertsY_);p===0&&x===0||this.value.setRawValue(this.value.rawValue,{forceEmit:!0,last:!0})}}class Dg{constructor(c,p){var x,L;this.onPopupChildBlur_=this.onPopupChildBlur_.bind(this),this.onPopupChildKeydown_=this.onPopupChildKeydown_.bind(this),this.onPadButtonBlur_=this.onPadButtonBlur_.bind(this),this.onPadButtonClick_=this.onPadButtonClick_.bind(this),this.value=p.value,this.viewProps=p.viewProps,this.foldable_=Ee.create(p.expanded),this.popC_=p.pickerLayout==="popup"?new Bd(c,{viewProps:this.viewProps}):null;const q=new Lg(c,{baseSteps:[p.axes[0].baseStep,p.axes[1].baseStep],invertsY:p.invertsY,layout:p.pickerLayout,maxValue:p.maxValue,value:this.value,viewProps:this.viewProps});q.view.allFocusableElements.forEach(ee=>{ee.addEventListener("blur",this.onPopupChildBlur_),ee.addEventListener("keydown",this.onPopupChildKeydown_)}),this.pickerC_=q,this.textC_=new Vu(c,{assembly:Bi,axes:p.axes,parser:p.parser,value:this.value,viewProps:this.viewProps}),this.view=new Pg(c,{expanded:this.foldable_.value("expanded"),pickerLayout:p.pickerLayout,viewProps:this.viewProps}),this.view.textElement.appendChild(this.textC_.view.element),(x=this.view.buttonElement)===null||x===void 0||x.addEventListener("blur",this.onPadButtonBlur_),(L=this.view.buttonElement)===null||L===void 0||L.addEventListener("click",this.onPadButtonClick_),this.popC_?(this.view.element.appendChild(this.popC_.view.element),this.popC_.view.element.appendChild(this.pickerC_.view.element),Oo({primary:this.foldable_.value("expanded"),secondary:this.popC_.shows,forward:ee=>ee.rawValue,backward:(ee,Oe)=>Oe.rawValue})):this.view.pickerElement&&(this.view.pickerElement.appendChild(this.pickerC_.view.element),X(this.foldable_,this.view.pickerElement))}onPadButtonBlur_(c){if(!this.popC_)return;const p=this.view.element,x=c.relatedTarget;(!x||!p.contains(x))&&(this.popC_.shows.rawValue=!1)}onPadButtonClick_(){this.foldable_.set("expanded",!this.foldable_.get("expanded")),this.foldable_.get("expanded")&&this.pickerC_.view.allFocusableElements[0].focus()}onPopupChildBlur_(c){if(!this.popC_)return;const p=this.popC_.view.element,x=H(c);x&&p.contains(x)||x&&x===this.view.buttonElement&&!ve(p.ownerDocument)||(this.popC_.shows.rawValue=!1)}onPopupChildKeydown_(c){this.popC_?c.key==="Escape"&&(this.popC_.shows.rawValue=!1):this.view.pickerElement&&c.key==="Escape"&&this.view.buttonElement.focus()}}function Ig(m){return ur.isObject(m)?new ur(m.x,m.y):new ur}function Og(m,c){m.writeProperty("x",c.x),m.writeProperty("y",c.y)}function sp(m){if(!m)return;const c=[];return f(m.step)||c.push(new Ar(m.step)),(!f(m.max)||!f(m.min))&&c.push(new Si({max:m.max,min:m.min})),new us(c)}function Vr(m){return new Ni({assembly:Bi,components:[sp("x"in m?m.x:void 0),sp("y"in m?m.y:void 0)]})}function op(m,c){const p=m&&Ki(m,Si);if(p)return Math.max(Math.abs(p.minValue||0),Math.abs(p.maxValue||0));const x=Xs(m);return Math.max(Math.abs(x)*10,Math.abs(c)*10)}function kg(m,c){const p=c instanceof Ni?c.components[0]:void 0,x=c instanceof Ni?c.components[1]:void 0,L=op(p,m.x),q=op(x,m.y);return Math.max(L,q)}function ap(m,c){return{baseStep:Xs(c),constraint:c,textProps:K.fromObject({draggingScale:No(c,m),formatter:yi(Na(c,m))})}}function Ng(m){if(!("y"in m))return!1;const c=m.y;return c&&"inverted"in c?!!c.inverted:!1}const Bg={id:"input-point2d",type:"input",accept:(m,c)=>{if(!ur.isObject(m))return null;const p=fe,x=Ce(c,{expanded:p.optional.boolean,picker:p.optional.custom(Il),x:p.optional.custom(ps),y:p.optional.object({inverted:p.optional.boolean,max:p.optional.number,min:p.optional.number,step:p.optional.number})});return x?{initialValue:m,params:x}:null},binding:{reader:m=>Ig,constraint:m=>Vr(m.params),equals:ur.equals,writer:m=>Og},controller:m=>{const c=m.document,p=m.value,x=m.constraint;if(!(x instanceof Ni))throw _.shouldNeverHappen();const L="expanded"in m.params?m.params.expanded:void 0,q="picker"in m.params?m.params.picker:void 0;return new Dg(c,{axes:[ap(p.rawValue.x,x.components[0]),ap(p.rawValue.y,x.components[1])],expanded:L??!1,invertsY:Ng(m.params),maxValue:kg(p.rawValue,x),parser:ar,pickerLayout:q??"popup",value:p,viewProps:m.viewProps})}};class Ti{constructor(c=0,p=0,x=0){this.x=c,this.y=p,this.z=x}getComponents(){return[this.x,this.y,this.z]}static isObject(c){if(f(c))return!1;const p=c.x,x=c.y,L=c.z;return!(typeof p!="number"||typeof x!="number"||typeof L!="number")}static equals(c,p){return c.x===p.x&&c.y===p.y&&c.z===p.z}toObject(){return{x:this.x,y:this.y,z:this.z}}}const lp={toComponents:m=>m.getComponents(),fromComponents:m=>new Ti(...m)};function zg(m){return Ti.isObject(m)?new Ti(m.x,m.y,m.z):new Ti}function Ug(m,c){m.writeProperty("x",c.x),m.writeProperty("y",c.y),m.writeProperty("z",c.z)}function Hu(m){if(!m)return;const c=[];return f(m.step)||c.push(new Ar(m.step)),(!f(m.max)||!f(m.min))&&c.push(new Si({max:m.max,min:m.min})),new us(c)}function Fg(m){return new Ni({assembly:lp,components:[Hu("x"in m?m.x:void 0),Hu("y"in m?m.y:void 0),Hu("z"in m?m.z:void 0)]})}function Hr(m,c){return{baseStep:Xs(c),constraint:c,textProps:K.fromObject({draggingScale:No(c,m),formatter:yi(Na(c,m))})}}const Vg={id:"input-point3d",type:"input",accept:(m,c)=>{if(!Ti.isObject(m))return null;const p=fe,x=Ce(c,{x:p.optional.custom(ps),y:p.optional.custom(ps),z:p.optional.custom(ps)});return x?{initialValue:m,params:x}:null},binding:{reader:m=>zg,constraint:m=>Fg(m.params),equals:Ti.equals,writer:m=>Ug},controller:m=>{const c=m.value,p=m.constraint;if(!(p instanceof Ni))throw _.shouldNeverHappen();return new Vu(m.document,{assembly:lp,axes:[Hr(c.rawValue.x,p.components[0]),Hr(c.rawValue.y,p.components[1]),Hr(c.rawValue.z,p.components[2])],parser:ar,value:c,viewProps:m.viewProps})}};class jo{constructor(c=0,p=0,x=0,L=0){this.x=c,this.y=p,this.z=x,this.w=L}getComponents(){return[this.x,this.y,this.z,this.w]}static isObject(c){if(f(c))return!1;const p=c.x,x=c.y,L=c.z,q=c.w;return!(typeof p!="number"||typeof x!="number"||typeof L!="number"||typeof q!="number")}static equals(c,p){return c.x===p.x&&c.y===p.y&&c.z===p.z&&c.w===p.w}toObject(){return{x:this.x,y:this.y,z:this.z,w:this.w}}}const Qi={toComponents:m=>m.getComponents(),fromComponents:m=>new jo(...m)};function Hg(m){return jo.isObject(m)?new jo(m.x,m.y,m.z,m.w):new jo}function Gg(m,c){m.writeProperty("x",c.x),m.writeProperty("y",c.y),m.writeProperty("z",c.z),m.writeProperty("w",c.w)}function Kl(m){if(!m)return;const c=[];return f(m.step)||c.push(new Ar(m.step)),(!f(m.max)||!f(m.min))&&c.push(new Si({max:m.max,min:m.min})),new us(c)}function Wg(m){return new Ni({assembly:Qi,components:[Kl("x"in m?m.x:void 0),Kl("y"in m?m.y:void 0),Kl("z"in m?m.z:void 0),Kl("w"in m?m.w:void 0)]})}function jg(m,c){return{baseStep:Xs(c),constraint:c,textProps:K.fromObject({draggingScale:No(c,m),formatter:yi(Na(c,m))})}}const cp={id:"input-point4d",type:"input",accept:(m,c)=>{if(!jo.isObject(m))return null;const p=fe,x=Ce(c,{x:p.optional.custom(ps),y:p.optional.custom(ps),z:p.optional.custom(ps),w:p.optional.custom(ps)});return x?{initialValue:m,params:x}:null},binding:{reader:m=>Hg,constraint:m=>Wg(m.params),equals:jo.equals,writer:m=>Gg},controller:m=>{const c=m.value,p=m.constraint;if(!(p instanceof Ni))throw _.shouldNeverHappen();return new Vu(m.document,{assembly:Qi,axes:c.rawValue.getComponents().map((x,L)=>jg(x,p.components[L])),parser:ar,value:c,viewProps:m.viewProps})}};function up(m){const c=[],p=_i(m.options);return p&&c.push(p),new us(c)}const Xg={id:"input-string",type:"input",accept:(m,c)=>{if(typeof m!="string")return null;const x=Ce(c,{options:fe.optional.custom(ko)});return x?{initialValue:m,params:x}:null},binding:{reader:m=>Ru,constraint:m=>up(m.params),writer:m=>Ia},controller:m=>{var c;const p=m.document,x=m.value,L=m.constraint;return L&&Ki(L,Ca)?new Ro(p,{props:K.fromObject({options:(c=Oa(L))!==null&&c!==void 0?c:[]}),value:x,viewProps:m.viewProps}):new Lo(p,{parser:q=>q,props:K.fromObject({formatter:Rl}),value:x,viewProps:m.viewProps})}},Va={monitor:{defaultInterval:200,defaultLineCount:3}},Jl=E("mll");class Ha{constructor(c,p){this.onValueUpdate_=this.onValueUpdate_.bind(this),this.formatter_=p.formatter,this.element=c.createElement("div"),this.element.classList.add(Jl()),p.viewProps.bindClassModifiers(this.element);const x=c.createElement("textarea");x.classList.add(Jl("i")),x.style.height=`calc(var(--bld-us) * ${p.lineCount})`,x.readOnly=!0,p.viewProps.bindDisabled(x),this.element.appendChild(x),this.textareaElem_=x,p.value.emitter.on("change",this.onValueUpdate_),this.value=p.value,this.update_()}update_(){const c=this.textareaElem_,p=c.scrollTop===c.scrollHeight-c.clientHeight,x=[];this.value.rawValue.forEach(L=>{L!==void 0&&x.push(this.formatter_(L))}),c.textContent=x.join(` `),p&&(c.scrollTop=c.scrollHeight)}onValueUpdate_(){this.update_()}}class Xo{constructor(c,p){this.value=p.value,this.viewProps=p.viewProps,this.view=new Ha(c,{formatter:p.formatter,lineCount:p.lineCount,value:this.value,viewProps:this.viewProps})}}const hp=E("sgl");class dp{constructor(c,p){this.onValueUpdate_=this.onValueUpdate_.bind(this),this.formatter_=p.formatter,this.element=c.createElement("div"),this.element.classList.add(hp()),p.viewProps.bindClassModifiers(this.element);const x=c.createElement("input");x.classList.add(hp("i")),x.readOnly=!0,x.type="text",p.viewProps.bindDisabled(x),this.element.appendChild(x),this.inputElement=x,p.value.emitter.on("change",this.onValueUpdate_),this.value=p.value,this.update_()}update_(){const c=this.value.rawValue,p=c[c.length-1];this.inputElement.value=p!==void 0?this.formatter_(p):""}onValueUpdate_(){this.update_()}}class Gu{constructor(c,p){this.value=p.value,this.viewProps=p.viewProps,this.view=new dp(c,{formatter:p.formatter,value:this.value,viewProps:this.viewProps})}}const Gr={id:"monitor-bool",type:"monitor",accept:(m,c)=>{if(typeof m!="boolean")return null;const x=Ce(c,{lineCount:fe.optional.number});return x?{initialValue:m,params:x}:null},binding:{reader:m=>Su},controller:m=>{var c;return m.value.rawValue.length===1?new Gu(m.document,{formatter:Mu,value:m.value,viewProps:m.viewProps}):new Xo(m.document,{formatter:Mu,lineCount:(c=m.params.lineCount)!==null&&c!==void 0?c:Va.monitor.defaultLineCount,value:m.value,viewProps:m.viewProps})}};class Wu{constructor(){this.emitter=new b,this.index_=-1}get index(){return this.index_}set index(c){this.index_!==c&&(this.index_=c,this.emitter.emit("change",{index:c,sender:this}))}}const Ai=E("grl");class $i{constructor(c,p){this.onCursorChange_=this.onCursorChange_.bind(this),this.onValueUpdate_=this.onValueUpdate_.bind(this),this.element=c.createElement("div"),this.element.classList.add(Ai()),p.viewProps.bindClassModifiers(this.element),this.formatter_=p.formatter,this.minValue_=p.minValue,this.maxValue_=p.maxValue,this.cursor_=p.cursor,this.cursor_.emitter.on("change",this.onCursorChange_);const x=c.createElementNS(it,"svg");x.classList.add(Ai("g")),x.style.height=`calc(var(--bld-us) * ${p.lineCount})`,this.element.appendChild(x),this.svgElem_=x;const L=c.createElementNS(it,"polyline");this.svgElem_.appendChild(L),this.lineElem_=L;const q=c.createElement("div");q.classList.add(Ai("t"),E("tt")()),this.element.appendChild(q),this.tooltipElem_=q,p.value.emitter.on("change",this.onValueUpdate_),this.value=p.value,this.update_()}get graphElement(){return this.svgElem_}update_(){const c=this.svgElem_.getBoundingClientRect(),p=this.value.rawValue.length-1,x=this.minValue_,L=this.maxValue_,q=[];this.value.rawValue.forEach((jt,Jt)=>{if(jt===void 0)return;const jr=hn(Jt,0,p,0,c.width),Yo=hn(jt,x,L,c.height,0);q.push([jr,Yo].join(","))}),this.lineElem_.setAttributeNS(null,"points",q.join(" "));const ee=this.tooltipElem_,Oe=this.value.rawValue[this.cursor_.index];if(Oe===void 0){ee.classList.remove(Ai("t","a"));return}const lt=hn(this.cursor_.index,0,p,0,c.width),mt=hn(Oe,x,L,c.height,0);ee.style.left=`${lt}px`,ee.style.top=`${mt}px`,ee.textContent=`${this.formatter_(Oe)}`,ee.classList.contains(Ai("t","a"))||(ee.classList.add(Ai("t","a"),Ai("t","in")),Le(ee),ee.classList.remove(Ai("t","in")))}onValueUpdate_(){this.update_()}onCursorChange_(){this.update_()}}class qg{constructor(c,p){if(this.onGraphMouseMove_=this.onGraphMouseMove_.bind(this),this.onGraphMouseLeave_=this.onGraphMouseLeave_.bind(this),this.onGraphPointerDown_=this.onGraphPointerDown_.bind(this),this.onGraphPointerMove_=this.onGraphPointerMove_.bind(this),this.onGraphPointerUp_=this.onGraphPointerUp_.bind(this),this.value=p.value,this.viewProps=p.viewProps,this.cursor_=new Wu,this.view=new $i(c,{cursor:this.cursor_,formatter:p.formatter,lineCount:p.lineCount,maxValue:p.maxValue,minValue:p.minValue,value:this.value,viewProps:this.viewProps}),!ve(c))this.view.element.addEventListener("mousemove",this.onGraphMouseMove_),this.view.element.addEventListener("mouseleave",this.onGraphMouseLeave_);else{const x=new js(this.view.element);x.emitter.on("down",this.onGraphPointerDown_),x.emitter.on("move",this.onGraphPointerMove_),x.emitter.on("up",this.onGraphPointerUp_)}}onGraphMouseLeave_(){this.cursor_.index=-1}onGraphMouseMove_(c){const p=this.view.element.getBoundingClientRect();this.cursor_.index=Math.floor(hn(c.offsetX,0,p.width,0,this.value.rawValue.length))}onGraphPointerDown_(c){this.onGraphPointerMove_(c)}onGraphPointerMove_(c){if(!c.data.point){this.cursor_.index=-1;return}this.cursor_.index=Math.floor(hn(c.data.point.x,0,c.data.bounds.width,0,this.value.rawValue.length))}onGraphPointerUp_(){this.cursor_.index=-1}}function Ql(m){return"format"in m&&!f(m.format)?m.format:yi(2)}function pp(m){var c;return m.value.rawValue.length===1?new Gu(m.document,{formatter:Ql(m.params),value:m.value,viewProps:m.viewProps}):new Xo(m.document,{formatter:Ql(m.params),lineCount:(c=m.params.lineCount)!==null&&c!==void 0?c:Va.monitor.defaultLineCount,value:m.value,viewProps:m.viewProps})}function Ga(m){var c,p,x;return new qg(m.document,{formatter:Ql(m.params),lineCount:(c=m.params.lineCount)!==null&&c!==void 0?c:Va.monitor.defaultLineCount,maxValue:(p="max"in m.params?m.params.max:null)!==null&&p!==void 0?p:100,minValue:(x="min"in m.params?m.params.min:null)!==null&&x!==void 0?x:0,value:m.value,viewProps:m.viewProps})}function Wr(m){return"view"in m&&m.view==="graph"}const fp={id:"monitor-number",type:"monitor",accept:(m,c)=>{if(typeof m!="number")return null;const p=fe,x=Ce(c,{format:p.optional.function,lineCount:p.optional.number,max:p.optional.number,min:p.optional.number,view:p.optional.string});return x?{initialValue:m,params:x}:null},binding:{defaultBufferSize:m=>Wr(m)?64:1,reader:m=>Oi},controller:m=>Wr(m.params)?Ga(m):pp(m)},Yg={id:"monitor-string",type:"monitor",accept:(m,c)=>{if(typeof m!="string")return null;const p=fe,x=Ce(c,{lineCount:p.optional.number,multiline:p.optional.boolean});return x?{initialValue:m,params:x}:null},binding:{reader:m=>Ru},controller:m=>{var c;const p=m.value;return p.rawValue.length>1||"multiline"in m.params&&m.params.multiline?new Xo(m.document,{formatter:Rl,lineCount:(c=m.params.lineCount)!==null&&c!==void 0?c:Va.monitor.defaultLineCount,value:p,viewProps:m.viewProps}):new Gu(m.document,{formatter:Rl,value:p,viewProps:m.viewProps})}};class $l{constructor(c){this.onValueChange_=this.onValueChange_.bind(this),this.reader=c.reader,this.writer=c.writer,this.emitter=new b,this.value=c.value,this.value.emitter.on("change",this.onValueChange_),this.target=c.target,this.read()}read(){const c=this.target.read();c!==void 0&&(this.value.rawValue=this.reader(c))}write_(c){this.writer(this.target,c)}onValueChange_(c){this.write_(c.rawValue),this.emitter.emit("change",{options:c.options,rawValue:c.rawValue,sender:this})}}function Zg(m,c){const p=m.accept(c.target.read(),c.params);if(f(p))return null;const x=fe,L={target:c.target,initialValue:p.initialValue,params:p.params},q=m.binding.reader(L),ee=m.binding.constraint?m.binding.constraint(L):void 0,Oe=$(q(p.initialValue),{constraint:ee,equals:m.binding.equals}),lt=new $l({reader:q,target:c.target,value:Oe,writer:m.binding.writer(L)}),mt=x.optional.boolean(c.params.disabled).value,jt=x.optional.boolean(c.params.hidden).value,Jt=m.controller({constraint:ee,document:c.document,initialValue:p.initialValue,params:p.params,value:lt.value,viewProps:Pt.create({disabled:mt,hidden:jt})}),jr=x.optional.string(c.params.label).value;return new wt(c.document,{binding:lt,blade:U(),props:K.fromObject({label:jr||c.target.key}),valueController:Jt})}class mp{constructor(c){this.onTick_=this.onTick_.bind(this),this.reader_=c.reader,this.target=c.target,this.emitter=new b,this.value=c.value,this.ticker=c.ticker,this.ticker.emitter.on("tick",this.onTick_),this.read()}dispose(){this.ticker.dispose()}read(){const c=this.target.read();if(c===void 0)return;const p=this.value.rawValue,x=this.reader_(c);this.value.rawValue=ag(p,x),this.emitter.emit("update",{rawValue:x,sender:this})}onTick_(c){this.read()}}function ii(m,c){return c===0?new kd:new Nd(m,c??Va.monitor.defaultInterval)}function ju(m,c){var p,x,L;const q=fe,ee=m.accept(c.target.read(),c.params);if(f(ee))return null;const Oe={target:c.target,initialValue:ee.initialValue,params:ee.params},lt=m.binding.reader(Oe),mt=(x=(p=q.optional.number(c.params.bufferSize).value)!==null&&p!==void 0?p:m.binding.defaultBufferSize&&m.binding.defaultBufferSize(ee.params))!==null&&x!==void 0?x:1,jt=q.optional.number(c.params.interval).value,Jt=new mp({reader:lt,target:c.target,ticker:ii(c.document,jt),value:og(mt)}),jr=q.optional.boolean(c.params.disabled).value,Yo=q.optional.boolean(c.params.hidden).value,Zo=m.controller({document:c.document,params:ee.params,value:Jt.value,viewProps:Pt.create({disabled:jr,hidden:Yo})}),Qs=(L=q.optional.string(c.params.label).value)!==null&&L!==void 0?L:c.target.key;return new jn(c.document,{binding:Jt,blade:U(),props:K.fromObject({label:Qs}),valueController:Zo})}class vp{constructor(){this.pluginsMap_={blades:[],inputs:[],monitors:[]}}getAll(){return[...this.pluginsMap_.blades,...this.pluginsMap_.inputs,...this.pluginsMap_.monitors]}register(c){c.type==="blade"?this.pluginsMap_.blades.unshift(c):c.type==="input"?this.pluginsMap_.inputs.unshift(c):c.type==="monitor"&&this.pluginsMap_.monitors.unshift(c)}createInput(c,p,x){const L=p.read();if(f(L))throw new _({context:{key:p.key},type:"nomatchingcontroller"});const q=this.pluginsMap_.inputs.reduce((ee,Oe)=>ee||Zg(Oe,{document:c,target:p,params:x}),null);if(q)return q;throw new _({context:{key:p.key},type:"nomatchingcontroller"})}createMonitor(c,p,x){const L=this.pluginsMap_.monitors.reduce((q,ee)=>q||ju(ee,{document:c,params:x,target:p}),null);if(L)return L;throw new _({context:{key:p.key},type:"nomatchingcontroller"})}createBlade(c,p){const x=this.pluginsMap_.blades.reduce((L,q)=>L||Hv(q,{document:c,params:p}),null);if(!x)throw new _({type:"nomatchingview",context:{params:p}});return x}createBladeApi(c){if(c instanceof wt)return new ct(c);if(c instanceof jn)return new Ct(c);if(c instanceof ge)return new Vs(c,this);const p=this.pluginsMap_.blades.reduce((x,L)=>x||L.api({controller:c,pool:this}),null);if(!p)throw _.shouldNeverHappen();return p}}function Pr(){const m=new vp;return[Bg,Vg,cp,Xg,Wo,Yl,Ua,Go,Bo,Gr,Yg,fp,Ue,St,ls,Ii].forEach(c=>{m.register(c)}),m}class ec extends r{constructor(c){super(c),this.emitter_=new b,this.controller_.valueController.value.emitter.on("change",p=>{this.emitter_.emit("change",{event:new o(this,p.rawValue)})})}get label(){return this.controller_.props.get("label")}set label(c){this.controller_.props.set("label",c)}get options(){return this.controller_.valueController.props.get("options")}set options(c){this.controller_.valueController.props.set("options",c)}get value(){return this.controller_.valueController.value.rawValue}set value(c){this.controller_.valueController.value.rawValue=c}on(c,p){const x=p.bind(this);return this.emitter_.on(c,L=>{x(L.event)}),this}}class Wa extends r{constructor(c){super(c),this.emitter_=new b,this.controller_.valueController.value.emitter.on("change",p=>{this.emitter_.emit("change",{event:new o(this,p.rawValue)})})}get label(){return this.controller_.props.get("label")}set label(c){this.controller_.props.set("label",c)}get maxValue(){return this.controller_.valueController.sliderController.props.get("maxValue")}set maxValue(c){this.controller_.valueController.sliderController.props.set("maxValue",c)}get minValue(){return this.controller_.valueController.sliderController.props.get("minValue")}set minValue(c){this.controller_.valueController.sliderController.props.set("minValue",c)}get value(){return this.controller_.valueController.value.rawValue}set value(c){this.controller_.valueController.value.rawValue=c}on(c,p){const x=p.bind(this);return this.emitter_.on(c,L=>{x(L.event)}),this}}class xs extends r{constructor(c){super(c),this.emitter_=new b,this.controller_.valueController.value.emitter.on("change",p=>{this.emitter_.emit("change",{event:new o(this,p.rawValue)})})}get label(){return this.controller_.props.get("label")}set label(c){this.controller_.props.set("label",c)}get formatter(){return this.controller_.valueController.props.get("formatter")}set formatter(c){this.controller_.valueController.props.set("formatter",c)}get value(){return this.controller_.valueController.value.rawValue}set value(c){this.controller_.valueController.value.rawValue=c}on(c,p){const x=p.bind(this);return this.emitter_.on(c,L=>{x(L.event)}),this}}const gp=function(){return{id:"list",type:"blade",accept(m){const c=fe,p=Ce(m,{options:c.required.custom(ko),value:c.required.raw,view:c.required.constant("list"),label:c.optional.string});return p?{params:p}:null},controller(m){const c=new Ro(m.document,{props:K.fromObject({options:Ou(m.params.options)}),value:$(m.params.value),viewProps:m.viewProps});return new Dt(m.document,{blade:m.blade,props:K.fromObject({label:m.params.label}),valueController:c})},api(m){return!(m.controller instanceof Dt)||!(m.controller.valueController instanceof Ro)?null:new ec(m.controller)}}}();function xi(m){return m.reduce((c,p)=>Object.assign(c,{[p.presetKey]:p.read()}),{})}function Xu(m,c){m.forEach(p=>{const x=c[p.presetKey];x!==void 0&&p.write(x)})}class Kg extends Hs{constructor(c,p){super(c,p)}get element(){return this.controller_.view.element}importPreset(c){const p=this.controller_.rackController.rack.find(wt).map(x=>x.binding.target);Xu(p,c),this.refresh()}exportPreset(){const c=this.controller_.rackController.rack.find(wt).map(p=>p.binding.target);return xi(c)}refresh(){this.controller_.rackController.rack.find(wt).forEach(c=>{c.binding.read()}),this.controller_.rackController.rack.find(jn).forEach(c=>{c.binding.read()})}}class Jg extends _t{constructor(c,p){super(c,{expanded:p.expanded,blade:p.blade,props:p.props,root:!0,viewProps:p.viewProps})}}const Qg={id:"slider",type:"blade",accept(m){const c=fe,p=Ce(m,{max:c.required.number,min:c.required.number,view:c.required.constant("slider"),format:c.optional.function,label:c.optional.string,value:c.optional.number});return p?{params:p}:null},controller(m){var c,p;const x=(c=m.params.value)!==null&&c!==void 0?c:0,L=new Dl(m.document,{baseStep:1,parser:ar,sliderProps:K.fromObject({maxValue:m.params.max,minValue:m.params.min}),textProps:K.fromObject({draggingScale:No(void 0,x),formatter:(p=m.params.format)!==null&&p!==void 0?p:Wd}),value:$(x),viewProps:m.viewProps});return new Dt(m.document,{blade:m.blade,props:K.fromObject({label:m.params.label}),valueController:L})},api(m){return!(m.controller instanceof Dt)||!(m.controller.valueController instanceof Dl)?null:new Wa(m.controller)}},qu=function(){return{id:"text",type:"blade",accept(m){const c=fe,p=Ce(m,{parse:c.required.function,value:c.required.raw,view:c.required.constant("text"),format:c.optional.function,label:c.optional.string});return p?{params:p}:null},controller(m){var c;const p=new Lo(m.document,{parser:m.params.parse,props:K.fromObject({formatter:(c=m.params.format)!==null&&c!==void 0?c:x=>String(x)}),value:$(m.params.value),viewProps:m.viewProps});return new Dt(m.document,{blade:m.blade,props:K.fromObject({label:m.params.label}),valueController:p})},api(m){return!(m.controller instanceof Dt)||!(m.controller.valueController instanceof Lo)?null:new xs(m.controller)}}}();function $g(m){const c=m.createElement("div");return c.classList.add(E("dfw")()),m.body&&m.body.appendChild(c),c}function qo(m,c,p){if(m.querySelector(`style[data-tp-style=${c}]`))return;const x=m.createElement("style");x.dataset.tpStyle=c,x.textContent=p,m.head.appendChild(x)}class yp extends Kg{constructor(c){var p;const x=c||{},L=(p=x.document)!==null&&p!==void 0?p:Ae(),q=Pr(),ee=new Jg(L,{expanded:x.expanded,blade:U(),props:K.fromObject({title:x.title}),viewProps:Pt.create()});super(ee,q),this.pool_=q,this.containerElem_=x.container||$g(L),this.containerElem_.appendChild(this.element),this.doc_=L,this.usesDefaultWrapper_=!x.container,this.setUpDefaultPlugins_()}get document(){if(!this.doc_)throw _.alreadyDisposed();return this.doc_}dispose(){const c=this.containerElem_;if(!c)throw _.alreadyDisposed();if(this.usesDefaultWrapper_){const p=c.parentElement;p&&p.removeChild(c)}this.containerElem_=null,this.doc_=null,super.dispose()}registerPlugin(c){("plugin"in c?[c.plugin]:"plugins"in c?c.plugins:[]).forEach(x=>{this.pool_.register(x),this.embedPluginStyle_(x)})}embedPluginStyle_(c){c.css&&qo(this.document,`plugin-${c.id}`,c.css)}setUpDefaultPlugins_(){qo(this.document,"default",'.tp-tbiv_b,.tp-coltxtv_ms,.tp-ckbv_i,.tp-rotv_b,.tp-fldv_b,.tp-mllv_i,.tp-sglv_i,.tp-grlv_g,.tp-txtv_i,.tp-p2dpv_p,.tp-colswv_sw,.tp-p2dv_b,.tp-btnv_b,.tp-lstv_s{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;border-width:0;font-family:inherit;font-size:inherit;font-weight:inherit;margin:0;outline:none;padding:0}.tp-p2dv_b,.tp-btnv_b,.tp-lstv_s{background-color:var(--btn-bg);border-radius:var(--elm-br);color:var(--btn-fg);cursor:pointer;display:block;font-weight:bold;height:var(--bld-us);line-height:var(--bld-us);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tp-p2dv_b:hover,.tp-btnv_b:hover,.tp-lstv_s:hover{background-color:var(--btn-bg-h)}.tp-p2dv_b:focus,.tp-btnv_b:focus,.tp-lstv_s:focus{background-color:var(--btn-bg-f)}.tp-p2dv_b:active,.tp-btnv_b:active,.tp-lstv_s:active{background-color:var(--btn-bg-a)}.tp-p2dv_b:disabled,.tp-btnv_b:disabled,.tp-lstv_s:disabled{opacity:.5}.tp-txtv_i,.tp-p2dpv_p,.tp-colswv_sw{background-color:var(--in-bg);border-radius:var(--elm-br);box-sizing:border-box;color:var(--in-fg);font-family:inherit;height:var(--bld-us);line-height:var(--bld-us);min-width:0;width:100%}.tp-txtv_i:hover,.tp-p2dpv_p:hover,.tp-colswv_sw:hover{background-color:var(--in-bg-h)}.tp-txtv_i:focus,.tp-p2dpv_p:focus,.tp-colswv_sw:focus{background-color:var(--in-bg-f)}.tp-txtv_i:active,.tp-p2dpv_p:active,.tp-colswv_sw:active{background-color:var(--in-bg-a)}.tp-txtv_i:disabled,.tp-p2dpv_p:disabled,.tp-colswv_sw:disabled{opacity:.5}.tp-mllv_i,.tp-sglv_i,.tp-grlv_g{background-color:var(--mo-bg);border-radius:var(--elm-br);box-sizing:border-box;color:var(--mo-fg);height:var(--bld-us);scrollbar-color:currentColor transparent;scrollbar-width:thin;width:100%}.tp-mllv_i::-webkit-scrollbar,.tp-sglv_i::-webkit-scrollbar,.tp-grlv_g::-webkit-scrollbar{height:8px;width:8px}.tp-mllv_i::-webkit-scrollbar-corner,.tp-sglv_i::-webkit-scrollbar-corner,.tp-grlv_g::-webkit-scrollbar-corner{background-color:transparent}.tp-mllv_i::-webkit-scrollbar-thumb,.tp-sglv_i::-webkit-scrollbar-thumb,.tp-grlv_g::-webkit-scrollbar-thumb{background-clip:padding-box;background-color:currentColor;border:transparent solid 2px;border-radius:4px}.tp-rotv{--font-family: var(--tp-font-family, Roboto Mono, Source Code Pro, Menlo, Courier, monospace);--bs-br: var(--tp-base-border-radius, 6px);--cnt-h-p: var(--tp-container-horizontal-padding, 4px);--cnt-v-p: var(--tp-container-vertical-padding, 4px);--elm-br: var(--tp-element-border-radius, 2px);--bld-s: var(--tp-blade-spacing, 4px);--bld-us: var(--tp-blade-unit-size, 20px);--bs-bg: var(--tp-base-background-color, #28292e);--bs-sh: var(--tp-base-shadow-color, rgba(0, 0, 0, 0.2));--btn-bg: var(--tp-button-background-color, #adafb8);--btn-bg-a: var(--tp-button-background-color-active, #d6d7db);--btn-bg-f: var(--tp-button-background-color-focus, #c8cad0);--btn-bg-h: var(--tp-button-background-color-hover, #bbbcc4);--btn-fg: var(--tp-button-foreground-color, #28292e);--cnt-bg: var(--tp-container-background-color, rgba(187, 188, 196, 0.1));--cnt-bg-a: var(--tp-container-background-color-active, rgba(187, 188, 196, 0.25));--cnt-bg-f: var(--tp-container-background-color-focus, rgba(187, 188, 196, 0.2));--cnt-bg-h: var(--tp-container-background-color-hover, rgba(187, 188, 196, 0.15));--cnt-fg: var(--tp-container-foreground-color, #bbbcc4);--in-bg: var(--tp-input-background-color, rgba(187, 188, 196, 0.1));--in-bg-a: var(--tp-input-background-color-active, rgba(187, 188, 196, 0.25));--in-bg-f: var(--tp-input-background-color-focus, rgba(187, 188, 196, 0.2));--in-bg-h: var(--tp-input-background-color-hover, rgba(187, 188, 196, 0.15));--in-fg: var(--tp-input-foreground-color, #bbbcc4);--lbl-fg: var(--tp-label-foreground-color, rgba(187, 188, 196, 0.7));--mo-bg: var(--tp-monitor-background-color, rgba(0, 0, 0, 0.2));--mo-fg: var(--tp-monitor-foreground-color, rgba(187, 188, 196, 0.7));--grv-fg: var(--tp-groove-foreground-color, rgba(187, 188, 196, 0.1))}.tp-rotv_c>.tp-cntv.tp-v-lst,.tp-tabv_c .tp-brkv>.tp-cntv.tp-v-lst,.tp-fldv_c>.tp-cntv.tp-v-lst{margin-bottom:calc(-1*var(--cnt-v-p))}.tp-rotv_c>.tp-fldv.tp-v-lst .tp-fldv_c,.tp-tabv_c .tp-brkv>.tp-fldv.tp-v-lst .tp-fldv_c,.tp-fldv_c>.tp-fldv.tp-v-lst .tp-fldv_c{border-bottom-left-radius:0}.tp-rotv_c>.tp-fldv.tp-v-lst .tp-fldv_b,.tp-tabv_c .tp-brkv>.tp-fldv.tp-v-lst .tp-fldv_b,.tp-fldv_c>.tp-fldv.tp-v-lst .tp-fldv_b{border-bottom-left-radius:0}.tp-rotv_c>*:not(.tp-v-fst),.tp-tabv_c .tp-brkv>*:not(.tp-v-fst),.tp-fldv_c>*:not(.tp-v-fst){margin-top:var(--bld-s)}.tp-rotv_c>.tp-sprv:not(.tp-v-fst),.tp-tabv_c .tp-brkv>.tp-sprv:not(.tp-v-fst),.tp-fldv_c>.tp-sprv:not(.tp-v-fst),.tp-rotv_c>.tp-cntv:not(.tp-v-fst),.tp-tabv_c .tp-brkv>.tp-cntv:not(.tp-v-fst),.tp-fldv_c>.tp-cntv:not(.tp-v-fst){margin-top:var(--cnt-v-p)}.tp-rotv_c>.tp-sprv+*:not(.tp-v-hidden),.tp-tabv_c .tp-brkv>.tp-sprv+*:not(.tp-v-hidden),.tp-fldv_c>.tp-sprv+*:not(.tp-v-hidden),.tp-rotv_c>.tp-cntv+*:not(.tp-v-hidden),.tp-tabv_c .tp-brkv>.tp-cntv+*:not(.tp-v-hidden),.tp-fldv_c>.tp-cntv+*:not(.tp-v-hidden){margin-top:var(--cnt-v-p)}.tp-rotv_c>.tp-sprv:not(.tp-v-hidden)+.tp-sprv,.tp-tabv_c .tp-brkv>.tp-sprv:not(.tp-v-hidden)+.tp-sprv,.tp-fldv_c>.tp-sprv:not(.tp-v-hidden)+.tp-sprv,.tp-rotv_c>.tp-cntv:not(.tp-v-hidden)+.tp-cntv,.tp-tabv_c .tp-brkv>.tp-cntv:not(.tp-v-hidden)+.tp-cntv,.tp-fldv_c>.tp-cntv:not(.tp-v-hidden)+.tp-cntv{margin-top:0}.tp-tabv_c .tp-brkv>.tp-cntv,.tp-fldv_c>.tp-cntv{margin-left:4px}.tp-tabv_c .tp-brkv>.tp-fldv>.tp-fldv_b,.tp-fldv_c>.tp-fldv>.tp-fldv_b{border-top-left-radius:var(--elm-br);border-bottom-left-radius:var(--elm-br)}.tp-tabv_c .tp-brkv>.tp-fldv.tp-fldv-expanded>.tp-fldv_b,.tp-fldv_c>.tp-fldv.tp-fldv-expanded>.tp-fldv_b{border-bottom-left-radius:0}.tp-tabv_c .tp-brkv .tp-fldv>.tp-fldv_c,.tp-fldv_c .tp-fldv>.tp-fldv_c{border-bottom-left-radius:var(--elm-br)}.tp-tabv_c .tp-brkv>.tp-tabv>.tp-tabv_i,.tp-fldv_c>.tp-tabv>.tp-tabv_i{border-top-left-radius:var(--elm-br)}.tp-tabv_c .tp-brkv .tp-tabv>.tp-tabv_c,.tp-fldv_c .tp-tabv>.tp-tabv_c{border-bottom-left-radius:var(--elm-br)}.tp-rotv_b,.tp-fldv_b{background-color:var(--cnt-bg);color:var(--cnt-fg);cursor:pointer;display:block;height:calc(var(--bld-us) + 4px);line-height:calc(var(--bld-us) + 4px);overflow:hidden;padding-left:var(--cnt-h-p);padding-right:calc(4px + var(--bld-us) + var(--cnt-h-p));position:relative;text-align:left;text-overflow:ellipsis;white-space:nowrap;width:100%;transition:border-radius .2s ease-in-out .2s}.tp-rotv_b:hover,.tp-fldv_b:hover{background-color:var(--cnt-bg-h)}.tp-rotv_b:focus,.tp-fldv_b:focus{background-color:var(--cnt-bg-f)}.tp-rotv_b:active,.tp-fldv_b:active{background-color:var(--cnt-bg-a)}.tp-rotv_b:disabled,.tp-fldv_b:disabled{opacity:.5}.tp-rotv_m,.tp-fldv_m{background:linear-gradient(to left, var(--cnt-fg), var(--cnt-fg) 2px, transparent 2px, transparent 4px, var(--cnt-fg) 4px);border-radius:2px;bottom:0;content:"";display:block;height:6px;right:calc(var(--cnt-h-p) + (var(--bld-us) + 4px - 6px)/2 - 2px);margin:auto;opacity:.5;position:absolute;top:0;transform:rotate(90deg);transition:transform .2s ease-in-out;width:6px}.tp-rotv.tp-rotv-expanded .tp-rotv_m,.tp-fldv.tp-fldv-expanded>.tp-fldv_b>.tp-fldv_m{transform:none}.tp-rotv_c,.tp-fldv_c{box-sizing:border-box;height:0;opacity:0;overflow:hidden;padding-bottom:0;padding-top:0;position:relative;transition:height .2s ease-in-out,opacity .2s linear,padding .2s ease-in-out}.tp-rotv.tp-rotv-cpl:not(.tp-rotv-expanded) .tp-rotv_c,.tp-fldv.tp-fldv-cpl:not(.tp-fldv-expanded)>.tp-fldv_c{display:none}.tp-rotv.tp-rotv-expanded .tp-rotv_c,.tp-fldv.tp-fldv-expanded>.tp-fldv_c{opacity:1;padding-bottom:var(--cnt-v-p);padding-top:var(--cnt-v-p);transform:none;overflow:visible;transition:height .2s ease-in-out,opacity .2s linear .2s,padding .2s ease-in-out}.tp-lstv,.tp-coltxtv_m{position:relative}.tp-lstv_s{padding:0 20px 0 4px;width:100%}.tp-lstv_m,.tp-coltxtv_mm{bottom:0;margin:auto;pointer-events:none;position:absolute;right:2px;top:0}.tp-lstv_m svg,.tp-coltxtv_mm svg{bottom:0;height:16px;margin:auto;position:absolute;right:0;top:0;width:16px}.tp-lstv_m svg path,.tp-coltxtv_mm svg path{fill:currentColor}.tp-pndtxtv,.tp-coltxtv_w{display:flex}.tp-pndtxtv_a,.tp-coltxtv_c{width:100%}.tp-pndtxtv_a+.tp-pndtxtv_a,.tp-coltxtv_c+.tp-pndtxtv_a,.tp-pndtxtv_a+.tp-coltxtv_c,.tp-coltxtv_c+.tp-coltxtv_c{margin-left:2px}.tp-btnv_b{width:100%}.tp-btnv_t{text-align:center}.tp-ckbv_l{display:block;position:relative}.tp-ckbv_i{left:0;opacity:0;position:absolute;top:0}.tp-ckbv_w{background-color:var(--in-bg);border-radius:var(--elm-br);cursor:pointer;display:block;height:var(--bld-us);position:relative;width:var(--bld-us)}.tp-ckbv_w svg{bottom:0;display:block;height:16px;left:0;margin:auto;opacity:0;position:absolute;right:0;top:0;width:16px}.tp-ckbv_w svg path{fill:none;stroke:var(--in-fg);stroke-width:2}.tp-ckbv_i:hover+.tp-ckbv_w{background-color:var(--in-bg-h)}.tp-ckbv_i:focus+.tp-ckbv_w{background-color:var(--in-bg-f)}.tp-ckbv_i:active+.tp-ckbv_w{background-color:var(--in-bg-a)}.tp-ckbv_i:checked+.tp-ckbv_w svg{opacity:1}.tp-ckbv.tp-v-disabled .tp-ckbv_w{opacity:.5}.tp-colv{position:relative}.tp-colv_h{display:flex}.tp-colv_s{flex-grow:0;flex-shrink:0;width:var(--bld-us)}.tp-colv_t{flex:1;margin-left:4px}.tp-colv_p{height:0;margin-top:0;opacity:0;overflow:hidden;transition:height .2s ease-in-out,opacity .2s linear,margin .2s ease-in-out}.tp-colv.tp-colv-cpl .tp-colv_p{overflow:visible}.tp-colv.tp-colv-expanded .tp-colv_p{margin-top:var(--bld-s);opacity:1}.tp-colv .tp-popv{left:calc(-1*var(--cnt-h-p));right:calc(-1*var(--cnt-h-p));top:var(--bld-us)}.tp-colpv_h,.tp-colpv_ap{margin-left:6px;margin-right:6px}.tp-colpv_h{margin-top:var(--bld-s)}.tp-colpv_rgb{display:flex;margin-top:var(--bld-s);width:100%}.tp-colpv_a{display:flex;margin-top:var(--cnt-v-p);padding-top:calc(var(--cnt-v-p) + 2px);position:relative}.tp-colpv_a:before{background-color:var(--grv-fg);content:"";height:2px;left:calc(-1*var(--cnt-h-p));position:absolute;right:calc(-1*var(--cnt-h-p));top:0}.tp-colpv_ap{align-items:center;display:flex;flex:3}.tp-colpv_at{flex:1;margin-left:4px}.tp-svpv{border-radius:var(--elm-br);outline:none;overflow:hidden;position:relative}.tp-svpv_c{cursor:crosshair;display:block;height:calc(var(--bld-us)*4);width:100%}.tp-svpv_m{border-radius:100%;border:rgba(255,255,255,.75) solid 2px;box-sizing:border-box;filter:drop-shadow(0 0 1px rgba(0, 0, 0, 0.3));height:12px;margin-left:-6px;margin-top:-6px;pointer-events:none;position:absolute;width:12px}.tp-svpv:focus .tp-svpv_m{border-color:#fff}.tp-hplv{cursor:pointer;height:var(--bld-us);outline:none;position:relative}.tp-hplv_c{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAAABCAYAAABubagXAAAAQ0lEQVQoU2P8z8Dwn0GCgQEDi2OK/RBgYHjBgIpfovFh8j8YBIgzFGQxuqEgPhaDOT5gOhPkdCxOZeBg+IDFZZiGAgCaSSMYtcRHLgAAAABJRU5ErkJggg==);background-position:left top;background-repeat:no-repeat;background-size:100% 100%;border-radius:2px;display:block;height:4px;left:0;margin-top:-2px;position:absolute;top:50%;width:100%}.tp-hplv_m{border-radius:var(--elm-br);border:rgba(255,255,255,.75) solid 2px;box-shadow:0 0 2px rgba(0,0,0,.1);box-sizing:border-box;height:12px;left:50%;margin-left:-6px;margin-top:-6px;pointer-events:none;position:absolute;top:50%;width:12px}.tp-hplv:focus .tp-hplv_m{border-color:#fff}.tp-aplv{cursor:pointer;height:var(--bld-us);outline:none;position:relative;width:100%}.tp-aplv_b{background-color:#fff;background-image:linear-gradient(to top right, #ddd 25%, transparent 25%, transparent 75%, #ddd 75%),linear-gradient(to top right, #ddd 25%, transparent 25%, transparent 75%, #ddd 75%);background-size:4px 4px;background-position:0 0,2px 2px;border-radius:2px;display:block;height:4px;left:0;margin-top:-2px;overflow:hidden;position:absolute;top:50%;width:100%}.tp-aplv_c{bottom:0;left:0;position:absolute;right:0;top:0}.tp-aplv_m{background-color:#fff;background-image:linear-gradient(to top right, #ddd 25%, transparent 25%, transparent 75%, #ddd 75%),linear-gradient(to top right, #ddd 25%, transparent 25%, transparent 75%, #ddd 75%);background-size:12px 12px;background-position:0 0,6px 6px;border-radius:var(--elm-br);box-shadow:0 0 2px rgba(0,0,0,.1);height:12px;left:50%;margin-left:-6px;margin-top:-6px;overflow:hidden;pointer-events:none;position:absolute;top:50%;width:12px}.tp-aplv_p{border-radius:var(--elm-br);border:rgba(255,255,255,.75) solid 2px;box-sizing:border-box;bottom:0;left:0;position:absolute;right:0;top:0}.tp-aplv:focus .tp-aplv_p{border-color:#fff}.tp-colswv{background-color:#fff;background-image:linear-gradient(to top right, #ddd 25%, transparent 25%, transparent 75%, #ddd 75%),linear-gradient(to top right, #ddd 25%, transparent 25%, transparent 75%, #ddd 75%);background-size:10px 10px;background-position:0 0,5px 5px;border-radius:var(--elm-br);overflow:hidden}.tp-colswv.tp-v-disabled{opacity:.5}.tp-colswv_sw{border-radius:0}.tp-colswv_b{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;border-width:0;cursor:pointer;display:block;height:var(--bld-us);left:0;margin:0;outline:none;padding:0;position:absolute;top:0;width:var(--bld-us)}.tp-colswv_b:focus::after{border:rgba(255,255,255,.75) solid 2px;border-radius:var(--elm-br);bottom:0;content:"";display:block;left:0;position:absolute;right:0;top:0}.tp-coltxtv{display:flex;width:100%}.tp-coltxtv_m{margin-right:4px}.tp-coltxtv_ms{border-radius:var(--elm-br);color:var(--lbl-fg);cursor:pointer;height:var(--bld-us);line-height:var(--bld-us);padding:0 18px 0 4px}.tp-coltxtv_ms:hover{background-color:var(--in-bg-h)}.tp-coltxtv_ms:focus{background-color:var(--in-bg-f)}.tp-coltxtv_ms:active{background-color:var(--in-bg-a)}.tp-coltxtv_mm{color:var(--lbl-fg)}.tp-coltxtv_w{flex:1}.tp-dfwv{position:absolute;top:8px;right:8px;width:256px}.tp-fldv.tp-fldv-not .tp-fldv_b{display:none}.tp-fldv_t{padding-left:4px}.tp-fldv_c{border-left:var(--cnt-bg) solid 4px}.tp-fldv_b:hover+.tp-fldv_c{border-left-color:var(--cnt-bg-h)}.tp-fldv_b:focus+.tp-fldv_c{border-left-color:var(--cnt-bg-f)}.tp-fldv_b:active+.tp-fldv_c{border-left-color:var(--cnt-bg-a)}.tp-grlv{position:relative}.tp-grlv_g{display:block;height:calc(var(--bld-us)*3)}.tp-grlv_g polyline{fill:none;stroke:var(--mo-fg);stroke-linejoin:round}.tp-grlv_t{margin-top:-4px;transition:left .05s,top .05s;visibility:hidden}.tp-grlv_t.tp-grlv_t-a{visibility:visible}.tp-grlv_t.tp-grlv_t-in{transition:none}.tp-grlv.tp-v-disabled .tp-grlv_g{opacity:.5}.tp-grlv .tp-ttv{background-color:var(--mo-fg)}.tp-grlv .tp-ttv::before{border-top-color:var(--mo-fg)}.tp-lblv{align-items:center;display:flex;line-height:1.3;padding-left:var(--cnt-h-p);padding-right:var(--cnt-h-p)}.tp-lblv.tp-lblv-nol{display:block}.tp-lblv_l{color:var(--lbl-fg);flex:1;-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto;overflow:hidden;padding-left:4px;padding-right:16px}.tp-lblv.tp-v-disabled .tp-lblv_l{opacity:.5}.tp-lblv.tp-lblv-nol .tp-lblv_l{display:none}.tp-lblv_v{align-self:flex-start;flex-grow:0;flex-shrink:0;width:160px}.tp-lblv.tp-lblv-nol .tp-lblv_v{width:100%}.tp-lstv_s{padding:0 20px 0 4px;width:100%}.tp-lstv_m{color:var(--btn-fg)}.tp-sglv_i{padding:0 4px}.tp-sglv.tp-v-disabled .tp-sglv_i{opacity:.5}.tp-mllv_i{display:block;height:calc(var(--bld-us)*3);line-height:var(--bld-us);padding:0 4px;resize:none;white-space:pre}.tp-mllv.tp-v-disabled .tp-mllv_i{opacity:.5}.tp-p2dv{position:relative}.tp-p2dv_h{display:flex}.tp-p2dv_b{height:var(--bld-us);margin-right:4px;position:relative;width:var(--bld-us)}.tp-p2dv_b svg{display:block;height:16px;left:50%;margin-left:-8px;margin-top:-8px;position:absolute;top:50%;width:16px}.tp-p2dv_b svg path{stroke:currentColor;stroke-width:2}.tp-p2dv_b svg circle{fill:currentColor}.tp-p2dv_t{flex:1}.tp-p2dv_p{height:0;margin-top:0;opacity:0;overflow:hidden;transition:height .2s ease-in-out,opacity .2s linear,margin .2s ease-in-out}.tp-p2dv.tp-p2dv-expanded .tp-p2dv_p{margin-top:var(--bld-s);opacity:1}.tp-p2dv .tp-popv{left:calc(-1*var(--cnt-h-p));right:calc(-1*var(--cnt-h-p));top:var(--bld-us)}.tp-p2dpv{padding-left:calc(var(--bld-us) + 4px)}.tp-p2dpv_p{cursor:crosshair;height:0;overflow:hidden;padding-bottom:100%;position:relative}.tp-p2dpv_g{display:block;height:100%;left:0;pointer-events:none;position:absolute;top:0;width:100%}.tp-p2dpv_ax{opacity:.1;stroke:var(--in-fg);stroke-dasharray:1}.tp-p2dpv_l{opacity:.5;stroke:var(--in-fg);stroke-dasharray:1}.tp-p2dpv_m{border:var(--in-fg) solid 1px;border-radius:50%;box-sizing:border-box;height:4px;margin-left:-2px;margin-top:-2px;position:absolute;width:4px}.tp-p2dpv_p:focus .tp-p2dpv_m{background-color:var(--in-fg);border-width:0}.tp-popv{background-color:var(--bs-bg);border-radius:6px;box-shadow:0 2px 4px var(--bs-sh);display:none;max-width:168px;padding:var(--cnt-v-p) var(--cnt-h-p);position:absolute;visibility:hidden;z-index:1000}.tp-popv.tp-popv-v{display:block;visibility:visible}.tp-sprv_r{background-color:var(--grv-fg);border-width:0;display:block;height:2px;margin:0;width:100%}.tp-sldv.tp-v-disabled{opacity:.5}.tp-sldv_t{box-sizing:border-box;cursor:pointer;height:var(--bld-us);margin:0 6px;outline:none;position:relative}.tp-sldv_t::before{background-color:var(--in-bg);border-radius:1px;bottom:0;content:"";display:block;height:2px;left:0;margin:auto;position:absolute;right:0;top:0}.tp-sldv_k{height:100%;left:0;position:absolute;top:0}.tp-sldv_k::before{background-color:var(--in-fg);border-radius:1px;bottom:0;content:"";display:block;height:2px;left:0;margin-bottom:auto;margin-top:auto;position:absolute;right:0;top:0}.tp-sldv_k::after{background-color:var(--btn-bg);border-radius:var(--elm-br);bottom:0;content:"";display:block;height:12px;margin-bottom:auto;margin-top:auto;position:absolute;right:-6px;top:0;width:12px}.tp-sldv_t:hover .tp-sldv_k::after{background-color:var(--btn-bg-h)}.tp-sldv_t:focus .tp-sldv_k::after{background-color:var(--btn-bg-f)}.tp-sldv_t:active .tp-sldv_k::after{background-color:var(--btn-bg-a)}.tp-sldtxtv{display:flex}.tp-sldtxtv_s{flex:2}.tp-sldtxtv_t{flex:1;margin-left:4px}.tp-tabv.tp-v-disabled{opacity:.5}.tp-tabv_i{align-items:flex-end;display:flex;overflow:hidden}.tp-tabv.tp-tabv-nop .tp-tabv_i{height:calc(var(--bld-us) + 4px);position:relative}.tp-tabv.tp-tabv-nop .tp-tabv_i::before{background-color:var(--cnt-bg);bottom:0;content:"";height:2px;left:0;position:absolute;right:0}.tp-tabv_c{border-left:var(--cnt-bg) solid 4px;padding-bottom:var(--cnt-v-p);padding-top:var(--cnt-v-p)}.tp-tbiv{flex:1;min-width:0;position:relative}.tp-tbiv+.tp-tbiv{margin-left:2px}.tp-tbiv+.tp-tbiv::before{background-color:var(--cnt-bg);bottom:0;content:"";height:2px;left:-2px;position:absolute;width:2px}.tp-tbiv_b{background-color:var(--cnt-bg);display:block;padding-left:calc(var(--cnt-h-p) + 4px);padding-right:calc(var(--cnt-h-p) + 4px);width:100%}.tp-tbiv_b:hover{background-color:var(--cnt-bg-h)}.tp-tbiv_b:focus{background-color:var(--cnt-bg-f)}.tp-tbiv_b:active{background-color:var(--cnt-bg-a)}.tp-tbiv_b:disabled{opacity:.5}.tp-tbiv_t{color:var(--cnt-fg);height:calc(var(--bld-us) + 4px);line-height:calc(var(--bld-us) + 4px);opacity:.5;overflow:hidden;text-overflow:ellipsis}.tp-tbiv.tp-tbiv-sel .tp-tbiv_t{opacity:1}.tp-txtv{position:relative}.tp-txtv_i{padding:0 4px}.tp-txtv.tp-txtv-fst .tp-txtv_i{border-bottom-right-radius:0;border-top-right-radius:0}.tp-txtv.tp-txtv-mid .tp-txtv_i{border-radius:0}.tp-txtv.tp-txtv-lst .tp-txtv_i{border-bottom-left-radius:0;border-top-left-radius:0}.tp-txtv.tp-txtv-num .tp-txtv_i{text-align:right}.tp-txtv.tp-txtv-drg .tp-txtv_i{opacity:.3}.tp-txtv_k{cursor:pointer;height:100%;left:-3px;position:absolute;top:0;width:12px}.tp-txtv_k::before{background-color:var(--in-fg);border-radius:1px;bottom:0;content:"";height:calc(var(--bld-us) - 4px);left:50%;margin-bottom:auto;margin-left:-1px;margin-top:auto;opacity:.1;position:absolute;top:0;transition:border-radius .1s,height .1s,transform .1s,width .1s;width:2px}.tp-txtv_k:hover::before,.tp-txtv.tp-txtv-drg .tp-txtv_k::before{opacity:1}.tp-txtv.tp-txtv-drg .tp-txtv_k::before{border-radius:50%;height:4px;transform:translateX(-1px);width:4px}.tp-txtv_g{bottom:0;display:block;height:8px;left:50%;margin:auto;overflow:visible;pointer-events:none;position:absolute;top:0;visibility:hidden;width:100%}.tp-txtv.tp-txtv-drg .tp-txtv_g{visibility:visible}.tp-txtv_gb{fill:none;stroke:var(--in-fg);stroke-dasharray:1}.tp-txtv_gh{fill:none;stroke:var(--in-fg)}.tp-txtv .tp-ttv{margin-left:6px;visibility:hidden}.tp-txtv.tp-txtv-drg .tp-ttv{visibility:visible}.tp-ttv{background-color:var(--in-fg);border-radius:var(--elm-br);color:var(--bs-bg);padding:2px 4px;pointer-events:none;position:absolute;transform:translate(-50%, -100%)}.tp-ttv::before{border-color:var(--in-fg) transparent transparent transparent;border-style:solid;border-width:2px;box-sizing:border-box;content:"";font-size:.9em;height:4px;left:50%;margin-left:-2px;position:absolute;top:100%;width:4px}.tp-rotv{background-color:var(--bs-bg);border-radius:var(--bs-br);box-shadow:0 2px 4px var(--bs-sh);font-family:var(--font-family);font-size:11px;font-weight:500;line-height:1;text-align:left}.tp-rotv_b{border-bottom-left-radius:var(--bs-br);border-bottom-right-radius:var(--bs-br);border-top-left-radius:var(--bs-br);border-top-right-radius:var(--bs-br);padding-left:calc(4px + var(--bld-us) + var(--cnt-h-p));text-align:center}.tp-rotv.tp-rotv-expanded .tp-rotv_b{border-bottom-left-radius:0;border-bottom-right-radius:0}.tp-rotv.tp-rotv-not .tp-rotv_b{display:none}.tp-rotv_c>.tp-fldv.tp-v-lst>.tp-fldv_c,.tp-rotv_c>.tp-tabv.tp-v-lst>.tp-tabv_c{border-bottom-left-radius:var(--bs-br);border-bottom-right-radius:var(--bs-br)}.tp-rotv_c>.tp-fldv.tp-v-lst:not(.tp-fldv-expanded)>.tp-fldv_b{border-bottom-left-radius:var(--bs-br);border-bottom-right-radius:var(--bs-br)}.tp-rotv_c .tp-fldv.tp-v-vlst:not(.tp-fldv-expanded)>.tp-fldv_b{border-bottom-right-radius:var(--bs-br)}.tp-rotv.tp-rotv-not .tp-rotv_c>.tp-fldv.tp-v-fst{margin-top:calc(-1*var(--cnt-v-p))}.tp-rotv.tp-rotv-not .tp-rotv_c>.tp-fldv.tp-v-fst>.tp-fldv_b{border-top-left-radius:var(--bs-br);border-top-right-radius:var(--bs-br)}.tp-rotv.tp-rotv-not .tp-rotv_c>.tp-tabv.tp-v-fst{margin-top:calc(-1*var(--cnt-v-p))}.tp-rotv.tp-rotv-not .tp-rotv_c>.tp-tabv.tp-v-fst>.tp-tabv_i{border-top-left-radius:var(--bs-br);border-top-right-radius:var(--bs-br)}.tp-rotv.tp-v-disabled,.tp-rotv .tp-v-disabled{pointer-events:none}.tp-rotv.tp-v-hidden,.tp-rotv .tp-v-hidden{display:none}'),this.pool_.getAll().forEach(c=>{this.embedPluginStyle_(c)}),this.registerPlugin({plugins:[Qg,gp,Ii,qu]})}}const e0=new n("3.0.8");t.BladeApi=r,t.ButtonApi=S,t.FolderApi=Hs,t.InputBindingApi=ct,t.ListApi=ec,t.MonitorBindingApi=Ct,t.Pane=yp,t.SeparatorApi=Nt,t.SliderApi=Wa,t.TabApi=Gs,t.TabPageApi=zr,t.TextApi=xs,t.TpChangeEvent=o,t.VERSION=e0,Object.defineProperty(t,"__esModule",{value:!0})})})(G_,G_.exports);var Dd,wr,rE,Cm=0,HC=[],sE=At.__b,oE=At.__r,aE=At.diffed,lE=At.__c,cE=At.unmount;function Ov(i,e){At.__h&&At.__h(wr,i,Cm||e),Cm=0;var t=wr.__H||(wr.__H={__:[],__h:[]});return i>=t.__.length&&t.__.push({}),t.__[i]}function Sr(i){return Cm=1,i8(GC,i)}function i8(i,e,t){var n=Ov(Dd++,2);return n.t=i,n.__c||(n.__=[t?t(e):GC(void 0,e),function(r){var s=n.t(n.__[0],r);n.__[0]!==s&&(n.__=[s,n.__[1]],n.__c.setState({}))}],n.__c=wr),n.__}function wo(i,e){var t=Ov(Dd++,3);!At.__s&&Mb(t.__H,e)&&(t.__=i,t.__H=e,wr.__H.__h.push(t))}function Sb(i,e){var t=Ov(Dd++,4);!At.__s&&Mb(t.__H,e)&&(t.__=i,t.__H=e,wr.__h.push(t))}function nd(i){return Cm=5,kv(function(){return{current:i}},[])}function kv(i,e){var t=Ov(Dd++,7);return Mb(t.__H,e)&&(t.__=i(),t.__H=e,t.__h=i),t.__}function r8(){for(var i;i=HC.shift();)if(i.__P)try{i.__H.__h.forEach(Yf),i.__H.__h.forEach(W_),i.__H.__h=[]}catch(e){i.__H.__h=[],At.__e(e,i.__v)}}At.__b=function(i){wr=null,sE&&sE(i)},At.__r=function(i){oE&&oE(i),Dd=0;var e=(wr=i.__c).__H;e&&(e.__h.forEach(Yf),e.__h.forEach(W_),e.__h=[])},At.diffed=function(i){aE&&aE(i);var e=i.__c;e&&e.__H&&e.__H.__h.length&&(HC.push(e)!==1&&rE===At.requestAnimationFrame||((rE=At.requestAnimationFrame)||function(t){var n,r=function(){clearTimeout(s),uE&&cancelAnimationFrame(n),setTimeout(t)},s=setTimeout(r,100);uE&&(n=requestAnimationFrame(r))})(r8)),wr=null},At.__c=function(i,e){e.some(function(t){try{t.__h.forEach(Yf),t.__h=t.__h.filter(function(n){return!n.__||W_(n)})}catch(n){e.some(function(r){r.__h&&(r.__h=[])}),e=[],At.__e(n,t.__v)}}),lE&&lE(i,e)},At.unmount=function(i){cE&&cE(i);var e,t=i.__c;t&&t.__H&&(t.__H.__.forEach(function(n){try{Yf(n)}catch(r){e=r}}),e&&At.__e(e,t.__v))};var uE=typeof requestAnimationFrame=="function";function Yf(i){var e=wr,t=i.__c;typeof t=="function"&&(i.__c=void 0,t()),wr=e}function W_(i){var e=wr;i.__c=i.__(),wr=e}function Mb(i,e){return!i||i.length!==e.length||e.some(function(t,n){return t!==i[n]})}function GC(i,e){return typeof e=="function"?e(i):e}function Eb(){return(Eb=Object.assign||function(i){for(var e=1;e=0||(l[s]=n[s]);return l}(i,["context","children"]);return VC(e,t)}function o8(){var i=new CustomEvent("_preact",{detail:{},bubbles:!0,cancelable:!0});this.dispatchEvent(i),this._vdom=Bc(s8,Eb({},this._props,{context:i.detail.context}),function e(t,n){if(t.nodeType===3)return t.data;if(t.nodeType!==1)return null;var r=[],s={},o=0,l=t.attributes,h=t.childNodes;for(o=l.length;o--;)l[o].name!=="slot"&&(s[l[o].name]=l[o].value,s[WC(l[o].name)]=l[o].value);for(o=h.length;o--;){var d=e(h[o],null),f=h[o].slot;f?s[f]=Bc(hE,{name:f},d):r[o]=d}var g=n?Bc(hE,null,r):r;return Bc(n||t.nodeName.toLowerCase(),s,g)}(this,this._vdomComponent)),(this.hasAttribute("hydrate")?FC:Iv)(this._vdom,this._root)}function WC(i){return i.replace(/-(\w)/g,function(e,t){return t?t.toUpperCase():""})}function a8(i,e,t){if(this._vdom){var n={};n[i]=t=t??void 0,n[WC(i)]=t,this._vdom=VC(this._vdom,n),Iv(this._vdom,this._root)}}function l8(){Iv(this._vdom=null,this._root)}function hE(i,e){var t=this;return Bc("slot",Eb({},i,{ref:function(n){n?(t.ref=n,t._listener||(t._listener=function(r){r.stopPropagation(),r.detail.context=e},n.addEventListener("_preact",t._listener))):t.ref.removeEventListener("_preact",t._listener)}}))}function Nv(i,e,t,n){function r(){var s=Reflect.construct(HTMLElement,[],r);return s._vdomComponent=i,s._root=n&&n.shadow?s.attachShadow({mode:"open"}):s,s}return(r.prototype=Object.create(HTMLElement.prototype)).constructor=r,r.prototype.connectedCallback=o8,r.prototype.attributeChangedCallback=a8,r.prototype.disconnectedCallback=l8,t=t||i.observedAttributes||Object.keys(i.propTypes||{}),r.observedAttributes=t,t.forEach(function(s){Object.defineProperty(r.prototype,s,{get:function(){return this._vdom.props[s]},set:function(o){this._vdom?this.attributeChangedCallback(s,null,o):(this._props||(this._props={}),this._props[s]=o,this.connectedCallback());var l=typeof o;o!=null&&l!=="string"&&l!=="boolean"&&l!=="number"||this.setAttribute(s,o)}})}),customElements.define(e||i.tagName||i.displayName||i.name,r)}var as=(i,e)=>()=>{const[n,r]=Sr(()=>e());return wo(()=>{const s=e(r);return()=>{s.cancel()}},[]),[n,i]};const[Bv,c8]=Ge(void 0);vi(()=>Bv(void 0));const[jC,u8]=Ge(void 0),[Tb,h8]=Ge(!1),zv=as(jh,vi),Ab=as(ev,Os),d8=as(eb,tb),XC=as(hl,Ze),p8=as(QU,gl),f8=as($U,R_),m8=as(aT,qc),v8=as(lT,um),qC=as(Bv,c8),YC=as(jC,u8),g8=as(Tb,h8);var ZC=()=>{if(So())return;const i=vi(),e=Os();i==null||i.dispose();for(const t of e)t.dispose();Di()};const ca=i=>typeof i=="number"?Number(i.toFixed(2)):i;let Pm=!1;const dE=Mr(()=>Pm=!1,100,"trailing"),ua=(i,e,t,n=Me({},t),r)=>{const s=i.addFolder({title:e});for(const[o,l]of Object.entries(n))switch(typeof l){case"undefined":n[o]="";break;case"number":n[o]=ca(l);break;case"object":if(Array.isArray(l)){n[o]=JSON.stringify(l);break}typeof(l==null?void 0:l.x)=="number"&&(l.x=ca(l.x)),typeof(l==null?void 0:l.y)=="number"&&(l.y=ca(l.y)),typeof(l==null?void 0:l.z)=="number"&&(l.z=ca(l.z));break}return Object.fromEntries(Object.keys(n).map(o=>{const l=s.addInput(n,o);return l.on("change",({value:h})=>{if(!Pm){if(r!=null&&r[o]){const[d,f,g]=r[o],{x:y,y:_,z:w}=h;t[d]=ca(y),t[f]=ca(_),t[g]=ca(w);return}if(typeof h=="string"){if(h==="true"||h==="false"){t[o]=h==="true";return}const d=parseFloat(h);if(!Number.isNaN(d)){t[o]=d;return}}t[o]=ca(h)}}),[o,l]}))},y8=({mouse:i,keyboard:e})=>{const t=nd(null);wo(()=>(JS(i!=="enabled"),YM(e!=="enabled"),()=>{YM(!0),JS(!0)}),[i,e]);const[n,r]=Sr({});wo(()=>{const C=Ze(),A=()=>{hl(bn),o_(!0),QS(!0),a_(!0),r({})};A();const D=XV(A),I=k=>{k.key!=="Shift"&&k.key!=="Meta"&&k.key!=="Control"||My(!0)},F=k=>{k.key!=="Shift"&&k.key!=="Meta"&&k.key!=="Control"||My(!1)};document.addEventListener("keydown",I),document.addEventListener("keyup",F);const P=yv(()=>My(!1));return()=>{hl(C),o_(!1),QS(!1),a_(!1),document.removeEventListener("keydown",I),document.removeEventListener("keyup",F),D.cancel(),P.cancel()}},[]);const[s]=zv(),[o]=Ab(),[l]=d8(),[h]=XC(),[d,f]=Sr(),[g,y]=Sr();Sb(()=>{var C;if(!d||!g)return;const A=l.reduce((P,k,j)=>(P["camera "+j]=j,P),{}),D=d.addInput({camera:l.indexOf(Ze())},"camera",{options:A});g.add(D),D.on("change",({value:P})=>hl(l[P]));const I=Me({none:0},rs.exports.omit(A,"camera 0")),F=d.addInput({"secondary camera":l.indexOf((C=Qc())!==null&&C!==void 0?C:bn)},"secondary camera",{options:I});return g.add(F),F.on("change",({value:P})=>eU(P===0?void 0:l[P])),()=>{D.dispose(),F.dispose()}},[d,g,l,h]);const[_,w]=m8(),S=!!_,[b,T]=v8(),E=!!b;return wo(()=>{const C=t.current;if(!C)return;const A=new G_.exports.Pane({container:C});if(f(A),y(A.addFolder({title:"camera"})),!s){const G=["defaultFog","defaultLight","defaultLightScale"],{defaultLightEnabled:ne,defaultFogEnabled:ce}=ua(A,"settings",Cs,Object.assign(Me(bt(Me({defaultLightEnabled:S},S&&{defaultLight:_,defaultLightScale:Cs.defaultLightScale}),{defaultFogEnabled:E}),E&&{defaultFog:b}),rs.exports.omit(Cs,[...SC,...G])));return ne.on("change",({value:Z})=>w(Z?"default":!1)),ce.on("change",({value:Z})=>T(Z?"white":void 0)),()=>{A.dispose()}}const D=G=>{if(G.key==="Backspace"){G.preventDefault(),ZC();return}if(G.key.toLocaleLowerCase()!=="c")return;const ne=vi();if(ne){if(G.metaKey||G.ctrlKey){const[ce]=AC(Dv(ne));if(!ne.parent||!ce)return;ne.parent.attach(ce),Di(ce);return}ml(ne)&&dA(ne)}};document.addEventListener("keydown",D);const I=s,F=new En,P=G=>({x:I[G+"X"],y:I[G+"Y"],z:I[G+"Z"]}),k=(G,ne,ce)=>({x:I[G],y:I[ne],z:I[ce]}),j=G=>[G+"X",G+"Y",G+"Z"];if(!o.length){const{name:G}=ua(A,"general",I,{name:I.name,id:I.id});G.on("change",()=>wh())}if(s instanceof Sa){const G={scale:I.scale,"scale xyz":P("scale"),position:k("x","y","z"),rotation:P("rotation")};ua(A,"transform",I,G,{"scale xyz":j("scale"),position:["x","y","z"],rotation:j("rotation")}),F.watch(P_(()=>{Pm=!0,dE(),Object.assign(G,{"scale xyz":P("scale"),position:k("x","y","z"),rotation:P("rotation")}),A.refresh()}))}else if(ml(s)){const G={position:k("x","y","z")};ua(A,"transform",I,G,{position:["x","y","z"]}),F.watch(P_(()=>{Pm=!0,dE(),Object.assign(G,{position:k("x","y","z")}),A.refresh()}))}if(s instanceof To&&ua(A,"inner transform",I,{size:k("width","height","depth"),"inner position":P("inner"),"inner rotation":P("innerRotation")},{size:["width","height","depth"],"inner position":j("inner"),"inner rotation":j("innerRotation")}),!o.length){s instanceof Sa&&ua(A,"display",I,{bloom:I.bloom,reflection:I.reflection,outline:I.outline,visible:I.visible,innerVisible:I.innerVisible,frustumCulled:I.frustumCulled,metalnessFactor:I.metalnessFactor,roughnessFactor:I.roughnessFactor,opacityFactor:I.opacityFactor,toon:I.toon,pbr:I.pbr});const{schema:G,componentName:ne}=I.constructor,ce={};for(const[Z,$]of Object.entries(G)){if(Z in Tl||$===Function)continue;let K=I[Z];K===1/0?K=9999:K===-1/0?K=-9999:Array.isArray(K)&&(K=JSON.stringify(K)),ce[Z]=K}if(G===mb){ce.stride={x:0,y:0};const{stride:Z}=ua(A,ne,I,ce);Z.on("change",({value:$})=>{Object.assign(ce,{strideForward:-$.y,strideRight:$.x}),A.refresh()})}else ua(A,ne,I,ce)}return()=>{F.cancel(),A.dispose(),document.removeEventListener("keydown",D)}},[s,o,n,E,S]),ye("div",{ref:t,onKeyDown:C=>C.stopPropagation(),onKeyUp:C=>C.stopPropagation(),className:"lingo3d-ui",style:{width:300,height:"100%",background:"rgb(40, 41, 46)"}})};Nv(y8,"lingo3d-editor",["mouse","keyboard"]);const _8=()=>ye("svg",{xmlns:"http://www.w3.org/2000/svg",width:"14",height:"14",viewBox:"0 0 1024 1024",style:{margin:2,opacity:.25,flexShrink:0},children:ye("path",{fill:"#fff",d:"M838.4 325.12L554.24 479.36C528 493.44 512 521.6 512 552.96V851.2c0 32 31.36 53.12 57.6 38.4l284.16-154.24c25.6-14.08 42.24-42.24 42.24-73.6v-297.6c0-32.64-31.36-53.12-57.6-39.04zm-432.64 153.6L121.6 325.12c-26.24-14.08-57.6 6.4-57.6 38.4v299.52c0 31.36 16 59.52 42.24 73.6l284.16 153.6c26.24 14.08 57.6-7.04 57.6-39.04V552.32c0-31.36-16-59.52-42.24-73.6zm406.4-223.36c13.44-7.04 19.84-19.2 18.56-30.72 1.28-12.16-5.12-23.68-18.56-30.72L522.88 42.88c-12.8-7.04-28.16-10.24-43.52-10.24-15.36 0-30.72 3.2-43.52 10.24l-289.28 150.4c-13.44 7.04-19.2 19.2-18.56 30.72-.64 12.16 5.12 24.32 18.56 31.36l289.28 150.4C448.64 412.8 464 416 479.36 416c15.36 0 30.72-3.2 43.52-10.24l289.28-150.4z"})}),KC=({style:i,onClick:e})=>ye("svg",{xmlns:"http://www.w3.org/2000/svg",width:"14",height:"14",viewBox:"0 0 1024 1024",style:Me({margin:2,flexShrink:0},i),onMouseDown:t=>t.stopPropagation(),onClick:t=>(t.stopPropagation(),e==null?void 0:e()),children:ye("path",{fill:"#fff",d:"M928.1 928.2H98v-830h830.1v830zm-104.8-415c0-24.6-19.9-44.5-44.5-44.5H556.5V246.4c0-24.6-19.9-44.5-44.5-44.5s-44.5 19.9-44.5 44.5v222.3H245.2c-24.6 0-44.5 19.9-44.5 44.5s19.9 44.5 44.5 44.5h222.3V780c0 24.6 19.9 44.5 44.5 44.5s44.5-19.9 44.5-44.5V557.7h222.3c24.6 0 44.5-20 44.5-44.5z"})}),JC=({style:i,onClick:e})=>ye("svg",{xmlns:"http://www.w3.org/2000/svg",width:"14",height:"14",viewBox:"0 0 1024 1024",style:Me({margin:2,flexShrink:0},i),onMouseDown:t=>t.stopPropagation(),onClick:t=>(t.stopPropagation(),e==null?void 0:e()),children:ye("path",{fill:"#fff",d:"M752 240H144c-17.7 0-32 14.3-32 32v608c0 17.7 14.3 32 32 32h608c17.7 0 32-14.3 32-32V272c0-17.7-14.3-32-32-32zM596 606c0 4.4-3.6 8-8 8H308c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h280c4.4 0 8 3.6 8 8v48zm284-494H264c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h576v576c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V144c0-17.7-14.3-32-32-32z"})});var QC=()=>ye("path",{fill:"#fff",d:"M914.5 653.5c-5.5 0-11 1.1-16 3.3l-.2.1h-.2L510.2 822.2 122.2 657h-.2l-.2-.1c-5-2.1-10.3-3.3-16-3.3-23.1 0-41.8 19.3-41.8 43.1 0 18 10.7 33.3 25.8 39.8l403.9 172.1.4.1c10.2 4.4 21.8 4.4 32 0l.2-.1c.1 0 .1-.1.2-.1l403.9-172.1c15.1-6.5 25.8-21.8 25.8-39.8.1-23.8-18.6-43.1-41.7-43.1zm0-186.5c-7.9-.2-16 3.2-16 3.2L510.2 635.6 121.8 470.2s-10.3-3.2-16-3.2C82.7 467 64 486.2 64 510c0 17.9 10.7 33.3 25.8 39.7l403.9 172c.1 0 .1.1.2.1l.1.1c5 2.1 10.3 3.3 16 3.3 5.7 0 11.1-1.2 16-3.3l.2-.1c.1 0 .1 0 .2-.1l403.9-172c15.1-6.4 25.8-21.8 25.9-39.7.1-23.8-18.6-43-41.7-43zM89.8 363.2l403.9 172.1c.1 0 .1 0 .2.1l.1.1c5 2.1 10.3 3.2 16 3.2 5.5 0 10.9-1.1 16-3.2l.2-.1.2-.1 403.9-172c15.1-6.5 25.8-21.8 25.9-39.7 0-18-10.7-33.3-25.8-39.8L526.5 111.6c-.1 0-.1 0-.2-.1l-.2-.1c-10.2-4.4-21.8-4.4-32 0l-.1.1L89.8 283.7C74.7 290.1 64 305.5 64 323.5c0 17.9 10.7 33.2 25.8 39.7z"});const x8=()=>ye("svg",{xmlns:"http://www.w3.org/2000/svg",width:"14",height:"14",viewBox:"0 0 1024 1024",style:{margin:2,opacity:.25,flexShrink:0},children:ye(QC,{})});document.addEventListener("mouseup",()=>Tb(!1));const $C=({appendable:i,object3d:e,level:t})=>{const n={opacity:e.children.length?.5:.05,cursor:"pointer"},[r,s]=Sr(!1),[o]=qC(),{setClickEl:l,handleClick:h,handleDoubleClick:d}=t3(e,i),[f,g]=YC();wo(()=>{f&&f.has(e)&&s(!0)},[f]);const y=nd(null),_=nd(null),w=o===e,S=kv(()=>{if(!w||!y.current||!_.current)return;const b=y.current.getBoundingClientRect();return _.current.getBoundingClientRect().right-b.left+4},[w,r]);return ye("div",{ref:l,onClick:h,onDblClick:d,onMouseDown:()=>Tb(!0),style:{color:"rgba(255, 255, 255, 0.75)",marginLeft:8,borderLeft:"1px solid rgba(255, 255, 255, 0.05)"},children:[ye("div",{ref:y,style:{display:"flex",alignItems:"center",border:w?"1px solid rgba(255, 255, 255, 0.5)":void 0,width:S,minWidth:"100%",cursor:"default"},children:[r?ye(JC,{style:n,onClick:()=>(s(!1),g(void 0))}):ye(KC,{style:n,onClick:()=>s(!0)}),ye(x8,{}),ye("div",{ref:_,children:e.name})]}),r&&e.children.map(b=>ye($C,{object3d:b,appendable:i,level:t+1},b.uuid))]})},e3=({appendable:i,level:e})=>{const[t,n]=Sr(),{loadedResolvable:r}=i;return wo(()=>{n(void 0);const s=r.then(()=>n(i.loadedGroup.children[0]));return()=>{s.cancel()}},[r]),ye(Cb,{appendable:i,level:e,children:t&&ye($C,{appendable:i,level:e+1,object3d:t})})};var b8=i=>{const[e,t]=Sr(null);return wo(()=>{if(!e)return;let n=0,r=0,s=0;const o=h=>{n=Date.now(),r=h.clientX,s=h.clientY},l=h=>{const d=Date.now(),f=d-n,g=Math.abs(h.clientX-r),y=Math.abs(h.clientY-s);n=d,r=h.clientX,s=h.clientY,f<300&&g<5&&y<5&&i(h)};return e.addEventListener("mousedown",o),e.addEventListener("mouseup",l),()=>{e.removeEventListener("mousedown",o),e.removeEventListener("mouseup",l)}},[e]),t};const t3=(i,e)=>({setClickEl:b8(s=>{s.stopPropagation(),hl(bn),ml(e)&&vi()!==e&&Di(e),i instanceof $t?queueMicrotask(()=>Bv(i)):Di(i)}),handleClick:s=>s.stopPropagation(),handleDoubleClick:s=>{s.stopPropagation(),ml(i)&&(dA(i),Di(i))}}),Hi=[void 0],Cb=({appendable:i,level:e,children:t})=>{const n=i.name||rs.exports.upperFirst(i.constructor.componentName),r=i.children?[...i.children]:void 0,s={opacity:r!=null&&r.length||t?.5:.05,cursor:"pointer"},[o,l]=Sr(!1),[h,d]=Sr(!1),[f]=zv(),[g]=Ab(),y=f===i||g.includes(i),{setClickEl:_,handleClick:w,handleDoubleClick:S}=t3(i),[b,T]=YC();wo(()=>{b&&b.has(i.outerObject3d)&&d(!0)},[b]);const E=nd(null),C=nd(null),A=kv(()=>{if(!y||!E.current||!C.current)return;const I=E.current.getBoundingClientRect();return C.current.getBoundingClientRect().right-I.left+4},[y,h]),[D]=g8();return ye("div",{ref:_,onClick:w,onDblClick:S,draggable:!D,onDragStart:I=>(I.stopPropagation(),Hi[0]=i),onDragEnd:I=>(I.stopPropagation(),Hi[0]=void 0),onDragOver:I=>{I.stopPropagation(),I.preventDefault(),!(!Hi[0]||Hi[0]===i)&&l(!0)},onDragEnter:I=>{I.stopPropagation(),I.preventDefault(),!(!Hi[0]||Hi[0]===i)&&l(!0)},onDragLeave:I=>{I.stopPropagation(),!(!Hi[0]||Hi[0]===i)&&l(!1)},onDrop:I=>{I.stopPropagation(),!(!Hi[0]||Hi[0]===i)&&(l(!1),i.attach(Hi[0]))},style:{color:"rgba(255, 255, 255, 0.75)",marginLeft:8,borderLeft:"1px solid rgba(255, 255, 255, 0.05)",background:o?"rgba(255, 255, 255, 0.5)":"none"},children:[ye("div",{ref:E,style:{display:"flex",alignItems:"center",backgroundColor:y?"rgba(255, 255, 255, 0.1)":void 0,width:A,minWidth:"100%",cursor:"default"},children:[h?ye(JC,{style:s,onClick:()=>(d(!1),T(void 0))}):ye(KC,{style:s,onClick:()=>d(!0)}),ye(_8,{}),ye("div",{ref:C,children:n})]}),h&&(r==null?void 0:r.map(I=>I instanceof Ao?ye(e3,{appendable:I,level:e+1}):ye(Cb,{appendable:I,level:e+1},I.uuid))),h&&t]})},w8=()=>ye("svg",{xmlns:"http://www.w3.org/2000/svg",width:"18",height:"18",viewBox:"0 0 1024 1024",children:ye("path",{fill:"#fff",d:"M640 384h224a32 32 0 0132 32v384h-96v96H416a32 32 0 01-32-32V640H160a32 32 0 01-32-32V224h96v-96h384a32 32 0 0132 32v224zm0 32v192a32 32 0 01-32 32H416v224h352v-96h96V416H640zM96 96h96v96H96V96zm736 0h96v96h-96V96zM96 832h96v96H96v-96zm736 0h96v96h-96v-96z"})}),S8=()=>ye("svg",{xmlns:"http://www.w3.org/2000/svg",width:"14",height:"14",viewBox:"0 0 1024 1024",children:ye("path",{fill:"#fff",d:"M630.09 151.91V62.16H361.84v89.74H93.6v134.62h89.41v673.11h625.93v-673.1h89.42V151.91H630.09zM361.84 869.89h-89.43V286.53h89.43v583.36zm178.84 0h-89.43V286.53h89.43v583.36zm178.84 0h-89.43V286.53h89.43v583.36z"})}),Dy=({children:i,onClick:e,active:t})=>ye("div",{onClick:t?e:void 0,style:{width:24,height:24,display:"flex",justifyContent:"center",alignItems:"center",marginRight:2,opacity:t?1:.1,cursor:t?"pointer":"default"},children:i}),M8=()=>{const[i,e]=Sr(!1);return ye("div",{onDragOver:t=>{t.stopPropagation(),t.preventDefault(),Hi[0]&&e(!0)},onDragEnter:t=>{t.stopPropagation(),t.preventDefault(),Hi[0]&&e(!0)},onDragLeave:t=>{t.stopPropagation(),Hi[0]&&e(!1)},onDrop:t=>{var n,r;t.stopPropagation(),e(!1);const s=Hi[0];s&&(wh(),Li.add(s),$e.attach(s.outerObject3d),(r=(n=s.parent)===null||n===void 0?void 0:n.children)===null||r===void 0||r.delete(s),s.parent=void 0)},style:{background:i?"rgba(255, 255, 255, 0.5)":"none",width:"100%",height:18}})},E8=()=>ye("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 1024 1024",children:ye(QC,{})}),n3=(i,e)=>{var t,n,r;e.add(i);const s=(r=(n=(t=i.userData.manager)===null||t===void 0?void 0:t.parent)===null||n===void 0?void 0:n.outerObject3d)!==null&&r!==void 0?r:i.parent;s&&n3(s,e)},T8=i=>{const e=vi();if(!(e instanceof Ao))return;const t=i.toLowerCase();let n;if(e.loadedGroup.traverse(s=>{n||s.name.toLowerCase().includes(t)&&(n=s)}),!n)return;const r=new Set;n3(n,r),jC(r),Bv(n)},A8=()=>{const[i,e]=Sr(void 0),[t,n]=Sr(!1);return wo(()=>{let[r,s]=[0,0];const o=h=>[r,s]=[h.clientX,h.clientY];document.addEventListener("mousemove",o);const l=vd(({target:h,rightClick:d})=>{d&&h&&e({x:r,y:s,target:h})});return()=>{l.cancel(),document.removeEventListener("mousemove",o)}},[]),i?ye("div",{className:"lingo3d-ui",onMouseDown:()=>e(void 0),style:{zIndex:9999,position:"absolute",left:0,top:0,width:"100%",height:"100%",overflow:"hidden"},children:ye("div",{onMouseDown:r=>r.stopPropagation(),style:{position:"absolute",left:i.x,top:i.y,background:"rgb(40, 41, 46)",padding:6},children:t?ye("input",{ref:r=>r==null?void 0:r.focus(),style:{all:"unset",padding:6},onKeyDown:r=>{r.stopPropagation(),!(r.key!=="Enter"&&r.key!=="Escape")&&(r.key==="Enter"&&T8(r.target.value),n(!1),e(void 0))}}):ye("div",{style:{padding:6,whiteSpace:"nowrap"},onClick:()=>n(!0),children:"Search children"})})}):null},C8=()=>{const[i,e]=Sr({});Sb(()=>{const h=tv(()=>e({}));return()=>{h.cancel()}},[]);const t=kv(()=>[...Li].filter(h=>!X2.has(h)),[i]),[n]=Ab(),[r]=zv(),[s]=qC(),[o]=XC(),l=()=>{s!=null&&s.name&&r instanceof To&&setTimeout(()=>Di(r.find(s.name)))};return ye(vu,{children:[ye("div",{className:"lingo3d-ui",onClick:()=>Di(),style:{width:200,height:"100%",background:"rgb(40, 41, 46)",padding:4,paddingTop:0,display:"flex",flexDirection:"column",overflow:"hidden"},children:[ye("div",{style:{height:24,borderBottom:"1px solid rgb(255,255,255,0.1)",opacity:o===bn?.5:.25,display:"flex",alignItems:"center",paddingLeft:12},children:[ye("div",{children:"scenegraph"}),ye("div",{style:{flexGrow:1}}),ye(Dy,{active:!!s,onClick:l,children:ye(E8,{})}),ye(Dy,{active:!!n.length,onClick:PV,children:ye(w8,{})}),ye(Dy,{active:!!r,onClick:ZC,children:ye(S8,{})})]}),ye("div",{style:{overflow:"scroll",opacity:o===bn?1:.5},className:"lingo3d-ui",children:[t.map(h=>h instanceof Ao?ye(e3,{appendable:h,level:0}):ye(Cb,{appendable:h,level:0},h.uuid)),ye(M8,{})]})]}),ye(A8,{})]})};Nv(C8,"lingo3d-scenegraph");const P8=()=>ye("svg",{xmlns:"http://www.w3.org/2000/svg",width:"20",height:"20",viewBox:"0 0 1024 1024",children:ye("path",{fill:"#fff",d:"M960 480L768 320v128H512V192h128L480 0 320 192h128v256H192V320L0 480l192 160V512h256v256H320l160 192 160-192H512V512h256v128l192-160z"})}),R8=()=>ye("svg",{xmlns:"http://www.w3.org/2000/svg",width:"20",height:"20",viewBox:"0 0 1024 1024",children:ye("path",{fill:"#fff",d:"M929 849a30 30 0 01-30-30v-83.137a447.514 447.514 0 01-70.921 92.209C722.935 933.225 578.442 975.008 442 953.482a444.917 444.917 0 01-241.139-120.591 30 30 0 1137.258-47.01l.231-.231A385.175 385.175 0 00442 892.625v-.006c120.855 22.123 250.206-13.519 343.656-106.975a386.646 386.646 0 0070.6-96.653h-87.247a30 30 0 010-60H929a30 30 0 0130 30V819a30 30 0 01-30 30zM512 392a120 120 0 11-120 120 120 120 0 01120-120zm293.005-147.025a29.87 29.87 0 01-19.117-6.882l-.232.231A386.5 386.5 0 00689.478 168h-.011c-145.646-75.182-329.021-51.747-451.117 70.35a386.615 386.615 0 00-70.6 96.65H255a30 30 0 010 60H95a30 30 0 01-30-30V205a30 30 0 0160 0v83.129a447.534 447.534 0 0170.923-92.206C317.981 73.866 493.048 37.2 647 85.836v-.045a444.883 444.883 0 01176.143 105.291 30 30 0 01-18.138 53.893z"})}),L8=()=>ye("svg",{xmlns:"http://www.w3.org/2000/svg",width:"20",height:"20",viewBox:"0 0 1024 1024",children:ye("path",{fill:"#fff",d:"M609.52 584.92a35.309 35.309 0 0124.98-10.36c9.37 0 18.36 3.73 24.98 10.36l189.29 189.22-.07-114.3.57-6.35c3.25-17.98 19.7-30.5 37.9-28.85 18.2 1.65 32.12 16.92 32.09 35.2v200.23c-.05 1.49-.19 2.97-.42 4.45l-.21 1.13c-.22 1.44-.55 2.85-.99 4.24l-.57 1.62-.56 1.41a34.163 34.163 0 01-7.62 11.36l2.12-2.4-.14.14-.92 1.06-1.06 1.2-.57.57-.56.57a36.378 36.378 0 01-16.23 8.39l-3.53.5-4.02.35h-199.6l-6.35-.63c-16.73-3.06-28.9-17.63-28.93-34.64l.56-6.35c3.07-16.76 17.67-28.93 34.71-28.92l114.29-.14-189.07-189.1-4.09-4.94c-9.71-14.01-8.01-32.95 4.02-45.02zm-162.06 0c12.06 12.05 13.78 30.99 4.09 45.01l-4.09 4.94-189.15 189.08 114.3.14c17.04-.01 31.65 12.17 34.71 28.92l.57 6.35c-.03 17.01-12.19 31.58-28.92 34.64l-6.35.63H173.09l-4.23-.42-3.39-.49a36.38 36.38 0 01-17.36-9.52l-1.06-1.13-.98-1.13.98 1.06-1.97-2.26.85 1.06-.42-.56a35.137 35.137 0 01-3.74-5.64l-1.13-2.68a34.71 34.71 0 01-2.11-7.33l-.28-1.13c-.21-1.47-.33-2.96-.36-4.45V659.78c-.03-18.28 13.89-33.55 32.09-35.2 18.2-1.65 34.65 10.87 37.9 28.85l.57 6.35-.07 114.36 189.29-189.22c13.77-13.77 36.11-13.77 49.88 0h-.09zm-74.71-471.71l6.35.57c16.76 3.06 28.93 17.67 28.92 34.71l-.63 6.35c-3.07 16.76-17.67 28.93-34.71 28.92l-114.3.14 189.15 189.08 4.09 4.94c10.26 15.02 7.42 35.37-6.55 47.01-13.98 11.63-34.51 10.74-47.42-2.07L208.29 233.71l.07 114.3-.57 6.35c-3.25 17.98-19.7 30.5-37.9 28.85-18.2-1.65-32.12-16.92-32.09-35.2V147.78c0-1.55.14-3.03.35-4.51l.21-1.13c.24-1.44.59-2.85 1.06-4.23a34.97 34.97 0 018.68-14.39l-2.12 2.4-.42.57 1.55-1.84-.99 1.06.92-.98 2.26-2.33c3.04-2.73 6.52-4.92 10.3-6.49l2.82-1.06c3.45-1.07 7.04-1.62 10.65-1.62l-3.6.14h.49l1.48-.14h201.31zm512.91 0l1.41.14h.42c2.43.29 4.84.79 7.19 1.48l2.82 1.06 2.61 1.2 3.04 1.76c2.09 1.33 4.03 2.89 5.78 4.66l1.13 1.2.78.98.21.14.49.64 2.33 3.17c2.35 3.83 3.98 8.07 4.8 12.49l.21 1.13c.21 1.48.35 2.96.35 4.44v200.37c-.16 18.13-14.03 33.19-32.08 34.83-18.06 1.64-34.42-10.67-37.83-28.48l-.57-6.35V233.65L659.54 422.87c-12.9 12.95-33.56 13.91-47.59 2.2-14.04-11.71-16.81-32.2-6.38-47.22l4.02-4.86 189.22-189.08-114.29-.14c-17.06.04-31.71-12.14-34.78-28.92l-.63-6.35c-.01-17.04 12.16-31.65 28.93-34.71l6.35-.57h201.27zm0 0"})}),D8=()=>ye("svg",{xmlns:"http://www.w3.org/2000/svg",width:"20",height:"20",viewBox:"0 0 1024 1024",children:[ye("path",{fill:"#fff",d:"M96 892.8V121.6c0-16 12.8-28.8 28.8-28.8h774.4c16 0 28.8 12.8 28.8 28.8v771.2c0 16-12.8 28.8-28.8 28.8H124.8c-16 3.2-28.8-9.6-28.8-28.8zm64-736v704h704v-704H160z"}),ye("path",{fill:"#fff",d:"M352 656V358.4c0-6.4 6.4-12.8 9.6-12.8h297.6c6.4 0 9.6 6.4 9.6 12.8V656c0 6.4-6.4 12.8-9.6 12.8H361.6c-3.2 0-9.6-6.4-9.6-12.8zm80-227.2v160h160v-160H432zm240 108.8v-48h192v48H672zm121.6-48H736v48h57.6v-48zm-633.6 48v-48h192v48H160zm124.8-48H224v48h57.6v-48z"}),ye("path",{fill:"#fff",d:"M489.6 156.8h48v192h-48v-192zm48 121.6v-57.6h-48v57.6h48zm-48 387.2h48v195.2h-48V665.6zm48 124.8v-57.6h-48v57.6h48z"})]}),I8=()=>ye("svg",{xmlns:"http://www.w3.org/2000/svg",width:"20",height:"20",viewBox:"0 0 1024 1024",children:ye("path",{fill:"#fff",d:"M185.6 489.6h-48c-3.2 0-9.6 3.2-9.6 9.6v384c0 3.2 3.2 9.6 9.6 9.6h48c3.2 0 9.6-3.2 9.6-9.6v-384c-3.2-6.4-6.4-9.6-9.6-9.6zm217.6 236.8c6.4 0 12.8-3.2 12.8-9.6v-48c0-3.2-6.4-9.6-12.8-9.6H140.8c-6.4 0-12.8 3.2-12.8 9.6v48c0 3.2 6.4 9.6 12.8 9.6h262.4zm512-547.2v-48c0-3.2-3.2-9.6-9.6-9.6h-384c-3.2 0-9.6 3.2-9.6 9.6v48c0 3.2 3.2 9.6 9.6 9.6h384c6.4 0 9.6-6.4 9.6-9.6zM678.4 377.6c0 6.4 3.2 9.6 9.6 9.6h48c3.2 0 9.6-3.2 9.6-9.6V134.4c0-6.4-3.2-9.6-9.6-9.6h-48c-3.2 0-9.6 3.2-9.6 9.6v243.2zm-195.2 89.6v416c0 9.6 6.4 16 16 16h400c9.6 0 16-6.4 16-16v-416c0-9.6-6.4-16-16-16h-400c-9.6 0-16 9.6-16 16zm361.6 57.6v304h-288v-304h288z"})}),Ss=({children:i,onClick:e,active:t,disabled:n})=>ye("div",{style:{margin:6,padding:6,background:t?"rgba(255, 255, 255, 0.1)":void 0,borderRadius:4,opacity:n?.25:t?1:.75,cursor:"pointer"},onClick:n||t?void 0:e,children:i}),O8=()=>ye("svg",{xmlns:"http://www.w3.org/2000/svg",width:"20",height:"20",viewBox:"0 0 1024 1024",style:{left:-2},children:ye("path",{fill:"#fff",d:"M279.552 198.879a22.26 22.26 0 0135.217-20.347L933.265 628.47a22.26 22.26 0 01-11.799 40.248l-324.43 19.456a22.26 22.26 0 00-17.23 9.972l-179.11 271.227a22.26 22.26 0 01-40.738-9.929L279.597 198.88z"})}),Iy=()=>ye("div",{style:{width:"60%",height:2,background:"rgba(255, 255, 255, 0.1)",margin:12}}),k8=()=>ye("svg",{xmlns:"http://www.w3.org/2000/svg",width:"20",height:"20",viewBox:"0 0 1024 1024",children:[ye("path",{fill:"#fff",d:"M808.192 246.528a320.16 320.16 0 00-592.352 0A238.592 238.592 0 0032 479.936c0 132.352 107.648 240 240 240h91.488a32 32 0 100-64H272a176.192 176.192 0 01-176-176 175.04 175.04 0 01148.48-173.888l19.04-2.976 6.24-18.24C305.248 181.408 402.592 111.936 512 111.936a256 256 0 01242.208 172.896l6.272 18.24 19.04 2.976A175.04 175.04 0 01928 479.936c0 97.024-78.976 176-176 176h-97.28a32 32 0 100 64H752c132.352 0 240-107.648 240-240a238.592 238.592 0 00-183.808-233.408z"}),ye("path",{fill:"#fff",d:"M649.792 789.888L544 876.48V447.936a32 32 0 00-64 0V876.48l-106.752-87.424a31.968 31.968 0 10-40.544 49.504l159.04 130.24a32 32 0 0040.576 0l158.048-129.44a32 32 0 10-40.576-49.472z"})]}),N8=()=>ye("svg",{xmlns:"http://www.w3.org/2000/svg",width:"20",height:"20",viewBox:"0 0 1024 1024",children:[ye("path",{fill:"#fff",d:"M870.4 342.4c-12.8 0-24-11.2-24-24V153.6c0-12.8 11.2-24 24-24s24 11.2 24 24v164.8c0 12.8-11.2 24-24 24z"}),ye("path",{fill:"#fff",d:"M870.4 177.6H705.6c-12.8 0-24-11.2-24-24s11.2-24 24-24h164.8c12.8 0 24 11.2 24 24s-11.2 24-24 24zm-96 716.8H249.6c-65.6 0-120-54.4-120-120V249.6c0-65.6 54.4-120 120-120H512c12.8 0 24 11.2 24 24s-11.2 24-24 24H249.6c-40 0-72 32-72 72v524.8c0 40 32 72 72 72h524.8c40 0 72-32 72-72V512c0-12.8 11.2-24 24-24s24 11.2 24 24v262.4c0 65.6-54.4 120-120 120z"}),ye("path",{fill:"#fff",d:"M526.4 521.6c-6.4 0-12.8-1.6-17.6-6.4-9.6-9.6-9.6-24 0-33.6l344-344c9.6-9.6 24-9.6 33.6 0 9.6 9.6 9.6 24 0 33.6l-344 344c-4.8 4.8-11.2 6.4-16 6.4z"})]}),Pb=(()=>{if(typeof self>"u")return!1;if("top"in self&&self!==top)try{}catch{return!1}else if("showOpenFilePicker"in self)return"showOpenFilePicker";return!1})(),B8=Pb?Promise.resolve().then(function(){return V8}):Promise.resolve().then(function(){return q8});async function z8(...i){return(await B8).default(...i)}Pb?Promise.resolve().then(function(){return G8}):Promise.resolve().then(function(){return Z8});Pb?Promise.resolve().then(function(){return j8}):Promise.resolve().then(function(){return J8});const U8=async i=>{const e=await i.getFile();return e.handle=i,e};var F8=async(i=[{}])=>{Array.isArray(i)||(i=[i]);const e=[];i.forEach((r,s)=>{e[s]={description:r.description||"",accept:{}},r.mimeTypes?r.mimeTypes.map(o=>{e[s].accept[o]=r.extensions||[]}):e[s].accept["*/*"]=r.extensions||[]});const t=await window.showOpenFilePicker({id:i[0].id,startIn:i[0].startIn,types:e,multiple:i[0].multiple||!1,excludeAcceptAllOption:i[0].excludeAcceptAllOption||!1}),n=await Promise.all(t.map(U8));return i[0].multiple?n:n[0]},V8={__proto__:null,default:F8};function Zf(i){function e(t){if(Object(t)!==t)return Promise.reject(new TypeError(t+" is not an object."));var n=t.done;return Promise.resolve(t.value).then(function(r){return{value:r,done:n}})}return Zf=function(t){this.s=t,this.n=t.next},Zf.prototype={s:null,n:null,next:function(){return e(this.n.apply(this.s,arguments))},return:function(t){var n=this.s.return;return n===void 0?Promise.resolve({value:t,done:!0}):e(n.apply(this.s,arguments))},throw:function(t){var n=this.s.return;return n===void 0?Promise.reject(t):e(n.apply(this.s,arguments))}},new Zf(i)}const i3=async(i,e,t=i.name,n)=>{const r=[],s=[];var o,l=!1,h=!1;try{for(var d,f=function(g){var y,_,w,S=2;for(typeof Symbol<"u"&&(_=Symbol.asyncIterator,w=Symbol.iterator);S--;){if(_&&(y=g[_])!=null)return y.call(g);if(w&&(y=g[w])!=null)return new Zf(y.call(g));_="@@asyncIterator",w="@@iterator"}throw new TypeError("Object is not async iterable")}(i.values());l=!(d=await f.next()).done;l=!1){const g=d.value,y=`${t}/${g.name}`;g.kind==="file"?s.push(g.getFile().then(_=>(_.directoryHandle=i,_.handle=g,Object.defineProperty(_,"webkitRelativePath",{configurable:!0,enumerable:!0,get:()=>y})))):g.kind!=="directory"||!e||n&&n(g)||r.push(i3(g,e,y,n))}}catch(g){h=!0,o=g}finally{try{l&&f.return!=null&&await f.return()}finally{if(h)throw o}}return[...(await Promise.all(r)).flat(),...await Promise.all(s)]};var H8=async(i={})=>{i.recursive=i.recursive||!1;const e=await window.showDirectoryPicker({id:i.id,startIn:i.startIn});return i3(e,i.recursive,void 0,i.skipDirectory)},G8={__proto__:null,default:H8},W8=async(i,e=[{}],t=null,n=!1,r=null)=>{Array.isArray(e)||(e=[e]),e[0].fileName=e[0].fileName||"Untitled";const s=[];let o=null;if(i instanceof Blob&&i.type?o=i.type:i.headers&&i.headers.get("content-type")&&(o=i.headers.get("content-type")),e.forEach((d,f)=>{s[f]={description:d.description||"",accept:{}},d.mimeTypes?(f===0&&o&&d.mimeTypes.push(o),d.mimeTypes.map(g=>{s[f].accept[g]=d.extensions||[]})):o?s[f].accept[o]=d.extensions||[]:s[f].accept["*/*"]=d.extensions||[]}),t)try{await t.getFile()}catch(d){if(t=null,n)throw d}const l=t||await window.showSaveFilePicker({suggestedName:e[0].fileName,id:e[0].id,startIn:e[0].startIn,types:s,excludeAcceptAllOption:e[0].excludeAcceptAllOption||!1});!t&&r&&r();const h=await l.createWritable();return"stream"in i?(await i.stream().pipeTo(h),l):"body"in i?(await i.body.pipeTo(h),l):(await h.write(await i),await h.close(),l)},j8={__proto__:null,default:W8},X8=async(i=[{}])=>(Array.isArray(i)||(i=[i]),new Promise((e,t)=>{const n=document.createElement("input");n.type="file";const r=[...i.map(l=>l.mimeTypes||[]),...i.map(l=>l.extensions||[])].join();n.multiple=i[0].multiple||!1,n.accept=r||"";const s=l=>{typeof o=="function"&&o(),e(l)},o=i[0].legacySetup&&i[0].legacySetup(s,()=>o(t),n);n.addEventListener("change",()=>{s(n.multiple?Array.from(n.files):n.files[0])}),n.click()})),q8={__proto__:null,default:X8},Y8=async(i=[{}])=>(Array.isArray(i)||(i=[i]),i[0].recursive=i[0].recursive||!1,new Promise((e,t)=>{const n=document.createElement("input");n.type="file",n.webkitdirectory=!0;const r=o=>{typeof s=="function"&&s(),e(o)},s=i[0].legacySetup&&i[0].legacySetup(r,()=>s(t),n);n.addEventListener("change",()=>{let o=Array.from(n.files);i[0].recursive?i[0].recursive&&i[0].skipDirectory&&(o=o.filter(l=>l.webkitRelativePath.split("/").every(h=>!i[0].skipDirectory({name:h,kind:"directory"})))):o=o.filter(l=>l.webkitRelativePath.split("/").length===2),r(o)}),n.click()})),Z8={__proto__:null,default:Y8},K8=async(i,e={})=>{Array.isArray(e)&&(e=e[0]);const t=document.createElement("a");let n=i;"body"in i&&(n=await async function(o,l){const h=o.getReader(),d=new ReadableStream({start:y=>async function _(){return h.read().then(({done:w,value:S})=>{if(!w)return y.enqueue(S),_();y.close()})}()}),f=new Response(d),g=await f.blob();return h.releaseLock(),new Blob([g],{type:l})}(i.body,i.headers.get("content-type"))),t.download=e.fileName||"Untitled",t.href=URL.createObjectURL(await n);const r=()=>{typeof s=="function"&&s()},s=e.legacySetup&&e.legacySetup(r,()=>s(),t);return t.addEventListener("click",()=>{setTimeout(()=>URL.revokeObjectURL(t.href),3e4),r()}),t.click(),null},J8={__proto__:null,default:K8};const Q8=()=>ye("svg",{xmlns:"http://www.w3.org/2000/svg",width:"20",height:"20",viewBox:"0 0 1024 1024",children:ye("path",{fill:"#fff",d:"M836.8 353.6c-11.2-3.2-20.8-6.4-32-9.6 1.6-8 3.2-14.4 4.8-22.4 24-118.4 8-214.4-46.4-246.4C710.4 44.8 624 76.8 537.6 152c-8 8-17.6 14.4-25.6 22.4-4.8-4.8-11.2-9.6-16-16-91.2-81.6-182.4-115.2-236.8-83.2-52.8 30.4-68.8 120-46.4 233.6 1.6 11.2 4.8 22.4 8 33.6-12.8 3.2-25.6 8-36.8 11.2C76.8 392 0 451.2 0 510.4c0 62.4 81.6 124.8 192 163.2 9.6 3.2 17.6 6.4 27.2 8-3.2 12.8-6.4 24-8 36.8-20.8 110.4-4.8 198.4 48 228.8 54.4 32 145.6 0 233.6-78.4 6.4-6.4 14.4-12.8 20.8-19.2 8 8 17.6 16 27.2 24 84.8 73.6 169.6 104 222.4 73.6 54.4-32 72-126.4 48-241.6-1.6-8-3.2-17.6-6.4-27.2 6.4-1.6 12.8-3.2 19.2-6.4 116.8-35.2 200-97.6 200-161.6 0-59.2-78.4-118.4-187.2-156.8zM566.4 184c75.2-65.6 144-89.6 176-72 33.6 19.2 46.4 97.6 25.6 201.6-1.6 6.4-3.2 12.8-4.8 20.8-44.8-9.6-89.6-17.6-134.4-20.8C603.2 276.8 574.4 240 544 208c6.4-9.6 14.4-16 22.4-24zm-232 430.4c9.6 17.6 20.8 35.2 32 51.2-32-3.2-62.4-8-92.8-14.4 8-28.8 19.2-59.2 32-89.6 9.6 19.2 19.2 36.8 28.8 52.8zm-60.8-240c28.8-6.4 59.2-11.2 91.2-16-11.2 16-20.8 33.6-30.4 51.2-9.6 17.6-19.2 33.6-28.8 52.8-12.8-30.4-22.4-59.2-32-88zM328 512c12.8-27.2 27.2-54.4 43.2-81.6s32-52.8 48-78.4c30.4-1.6 60.8-3.2 91.2-3.2s62.4 1.6 91.2 3.2c17.6 25.6 33.6 51.2 48 76.8s30.4 52.8 43.2 81.6c-12.8 27.2-27.2 54.4-43.2 81.6-16 27.2-32 52.8-48 78.4-30.4 1.6-60.8 3.2-92.8 3.2s-62.4-1.6-91.2-3.2C400 644.8 384 619.2 368 592s-25.6-52.8-40-80zm361.6 102.4l28.8-52.8c12.8 28.8 24 59.2 33.6 88-30.4 6.4-62.4 12.8-94.4 16 11.2-16 22.4-33.6 32-51.2zm28.8-153.6L689.6 408c-9.6-17.6-20.8-33.6-30.4-49.6 32 4.8 62.4 9.6 91.2 16-8 30.4-19.2 59.2-32 86.4zM512 236.8c20.8 22.4 40 46.4 59.2 72-40-1.6-80-1.6-118.4 0 19.2-27.2 40-51.2 59.2-72zM280 113.6c33.6-19.2 108.8 8 187.2 78.4 4.8 4.8 9.6 9.6 16 14.4C452.8 240 424 275.2 396.8 312c-44.8 4.8-89.6 11.2-134.4 20.8-3.2-9.6-4.8-20.8-6.4-30.4-19.2-97.6-6.4-169.6 24-188.8zm-48 528c-8-3.2-16-4.8-25.6-8-43.2-12.8-91.2-35.2-126.4-62.4C59.2 556.8 46.4 536 41.6 512c0-36.8 64-83.2 155.2-115.2 11.2-4.8 22.4-8 35.2-11.2 14.4 43.2 30.4 86.4 49.6 128-19.2 40-36.8 83.2-49.6 128zm232 195.2c-33.6 30.4-72 54.4-113.6 70.4-22.4 11.2-48 11.2-70.4 3.2-32-19.2-44.8-89.6-27.2-184 1.6-11.2 4.8-22.4 8-33.6 44.8 9.6 89.6 16 136 19.2 25.6 36.8 56 73.6 86.4 107.2-6.4 6.4-12.8 12.8-19.2 17.6zm49.6-48c-20.8-22.4-40-46.4-60.8-72 19.2 0 38.4 1.6 59.2 1.6 20.8 0 41.6 0 60.8-1.6-19.2 24-38.4 48-59.2 72zM774.4 848c-1.6 24-14.4 48-33.6 62.4-32 19.2-99.2-4.8-172.8-68.8-8-8-16-14.4-25.6-22.4 30.4-33.6 59.2-68.8 84.8-107.2 46.4-3.2 91.2-11.2 136-20.8l4.8 24c11.2 43.2 12.8 89.6 6.4 132.8zm36.8-214.4c-4.8 1.6-11.2 3.2-17.6 4.8-14.4-43.2-32-86.4-51.2-128 19.2-40 35.2-83.2 49.6-126.4 11.2 3.2 20.8 6.4 30.4 9.6 92.8 32 158.4 80 158.4 116.8 0 40-68.8 89.6-169.6 123.2zM512 603.2c51.2 0 91.2-41.6 91.2-91.2s-41.6-91.2-91.2-91.2-91.2 41.6-91.2 91.2 40 91.2 91.2 91.2z"})}),$8=()=>ye("svg",{xmlns:"http://www.w3.org/2000/svg",width:"20",height:"20",viewBox:"0 0 1024 1024",children:ye("path",{fill:"#fff",d:"M777.8 128.6H624L512 305.8l-96-177.2H64L512 896l448-767.4H777.8zm-602.4 64H283L512 589l228.8-396.4h107.6L512 769 175.4 192.6z"})});var Rb=(i,e)=>{const t=new Blob([e],{type:"text/plain"}),n=document.createElement("a"),r=n.href=URL.createObjectURL(t);n.download=i,document.body.appendChild(n),n.click(),document.body.removeChild(n),URL.revokeObjectURL(r)};const r3=i=>{let e="";for(const t of i){const n=rs.exports.upperFirst(t.type);let r="";for(const[s,o]of Object.entries(t))s==="children"||s==="type"||!o||(typeof o=="string"?r+=` ${s}="${o}"`:o===!0?r+=` ${s}`:typeof o=="object"?r+=` ${s}={${JSON.stringify(o)}}`:r+=` ${s}={${o}}`);e+="children"in t&&t.children?`<${n}${r}>${r3(t.children)}`:`<${n}${r} />`}return e};var eH=async()=>{const i=(await $n(()=>import("./standalone.536d1d41.js"),["./standalone.536d1d41.js","./entry.c3abd651.js","./entry.f74844d6.css"],import.meta.url).then(function(n){return n.s})).default,e=(await $n(()=>import("./parser-babel.96f1b09f.js"),["./parser-babel.96f1b09f.js","./entry.c3abd651.js","./entry.f74844d6.css"],import.meta.url).then(function(n){return n.p})).default,t=i.format(` const App = () => { return ( ${r3(Dv())} ) } `,{parser:"babel",plugins:[e]});Rb("App.jsx",t)};const s3=i=>{let e="";for(const t of i){const n=rs.exports.upperFirst(t.type);let r="";for(let[s,o]of Object.entries(t))s==="children"||s==="type"||!o||(s=rs.exports.kebabCase(s),typeof o=="string"?r+=` ${s}='${o}'`:o===!0?r+=` ${s}`:typeof o=="object"?r+=` :${s}='${JSON.stringify(o)}'`:r+=` :${s}='${o}'`);e+="children"in t&&t.children?`<${n}${r}> ${s3(t.children)} `:`<${n}${r} /> `}return e};var tH=async()=>{const i=(await $n(()=>import("./standalone.536d1d41.js"),["./standalone.536d1d41.js","./entry.c3abd651.js","./entry.f74844d6.css"],import.meta.url).then(function(n){return n.s})).default,e=(await $n(()=>import("./parser-html.51027de1.js"),["./parser-html.51027de1.js","./entry.c3abd651.js","./entry.f74844d6.css"],import.meta.url).then(function(n){return n.p})).default,t=i.format(` `,{parser:"vue",plugins:[e]});Rb("App.vue",t)};const nH=async()=>{const i=(await $n(()=>import("./standalone.536d1d41.js"),["./standalone.536d1d41.js","./entry.c3abd651.js","./entry.f74844d6.css"],import.meta.url).then(function(n){return n.s})).default,e=(await $n(()=>import("./parser-babel.96f1b09f.js"),["./parser-babel.96f1b09f.js","./entry.c3abd651.js","./entry.f74844d6.css"],import.meta.url).then(function(n){return n.p})).default,t=i.format(JSON.stringify(Dv()),{parser:"json",plugins:[e]});Rb("scene.json",t)},iH=async()=>{const e=await(await z8({extensions:[".json"]})).text();for(const t of Li)t.dispose();try{AC(JSON.parse(e))}catch{}},rH=()=>{const[i,e]=p8();let[t,n]=f8();i==="scale"&&(t="local");const[r]=zv(),s=r&&!(r instanceof Sa);return Sb(()=>{s&&i==="scale"&&e("translate")},[s]),ye("div",{className:"lingo3d-ui",style:{width:50,height:"100%",background:"rgb(40, 41, 46)",borderRight:"1px solid rgba(255, 255, 255, 0.05)",overflow:"hidden"},children:ye("div",{style:{display:"flex",flexDirection:"column",alignItems:"center",opacity:.75,paddingTop:12},children:[ye(Ss,{active:i==="select",onClick:()=>e("select"),children:ye(O8,{})}),ye(Ss,{active:i==="translate",onClick:()=>e("translate"),children:ye(P8,{})}),ye(Ss,{active:i==="rotate",onClick:()=>e("rotate"),children:ye(R8,{})}),ye(Ss,{active:i==="scale",disabled:s,onClick:()=>e("scale"),children:ye(L8,{})}),ye(Iy,{}),ye(Ss,{active:t==="world",onClick:()=>n("world"),disabled:i==="scale"||i==="select",children:ye(D8,{})}),ye(Ss,{active:t==="local",onClick:()=>n("local"),disabled:i==="select",children:ye(I8,{})}),ye(Iy,{}),ye(Ss,{onClick:iH,children:ye(N8,{})}),ye(Ss,{onClick:nH,children:ye(k8,{})}),ye(Iy,{}),ye(Ss,{onClick:eH,children:ye(Q8,{})}),ye(Ss,{onClick:tH,children:ye($8,{})})]})})};Nv(rH,"lingo3d-toolbar");let Rm;wn.addEventListener("dragover",i=>i.preventDefault());wn.addEventListener("dragenter",i=>i.preventDefault());wn.addEventListener("drop",i=>{if(!Rm||!Qh())return;const e=EC(Rm),{x:t,y:n,z:r}=PT(i,!0);e.outerObject3d.position.set(t,n,r),Di(e)});const pE=({name:i,iconName:e=i})=>ye("div",{onDragStart:()=>Rm=i,onDragEnd:()=>Rm=void 0,style:{width:"50%",display:"flex",flexDirection:"column",alignItems:"center",paddingTop:20,paddingBottom:20},children:[ye("img",{style:{width:50},src:`https://unpkg.com/lingo3d-editor@1.0.1/assets/${e}.png`}),ye("div",{style:{marginTop:6,opacity:.75,overflow:"hidden",textOverflow:"ellipsis",maxWidth:"100%"},children:rs.exports.upperFirst(i)})]}),fE=i=>typeof i=="string"?i.endsWith("Camera")?"camera":i.endsWith("Light")?"light":i:Object.values(i)[0],mE=i=>typeof i=="string"?i:Object.keys(i)[0],sH=({names:i})=>{const e=[];let t=[],n=0;for(const r of i)n===0&&e.push(t=[]),t.push(r),++n===2&&(n=0);return ye(vu,{children:e.map(([r,s],o)=>ye("div",{style:{display:"flex"},children:[ye(pE,{name:mE(r),iconName:fE(r)}),s&&ye(pE,{name:mE(s),iconName:fE(s)})]},o))})},oH=()=>ye("div",{className:"lingo3d-ui",style:{width:200,height:"100%",background:"rgb(40, 41, 46)",padding:10},children:ye(sH,{names:["model","dummy","svgMesh","trigger","reflector","cube","sphere","cone","cylinder","octahedron","tetrahedron","torus","plane","circle","areaLight","ambientLight","skyLight","directionalLight","pointLight","spotLight","camera","thirdPersonCamera","firstPersonCamera","orbitCamera"]})});Nv(oH,"lingo3d-library");const o3=document.createElement("style");document.head.appendChild(o3);o3.innerHTML=`.lingo3d-ui * { user-select: none; -webkit-user-select: none; position: relative; box-sizing: border-box; font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji" !important; } .lingo3d-ui { position: relative; box-sizing: border-box; overflow-x: hidden; overflow-y: scroll; float: left; color: white; font-size: 11px; } .lingo3d-ui::-webkit-scrollbar { display: none; } .tp-rotv { box-shadow: none !important; background-color: transparent !important; } .tp-brkv { border-left: none !important; } `;var aH={exports:{}};(function(i,e){(function(t,n){i.exports=n()})(rl,function(){var t=function(){function n(_){return o.appendChild(_.dom),_}function r(_){for(var w=0;wh+1e3&&(f.update(1e3*d/(_-h),100),h=_,d=0,y)){var w=performance.memory;y.update(w.usedJSHeapSize/1048576,w.jsHeapSizeLimit/1048576)}return _},update:function(){l=this.end()},domElement:o,setMode:r}};return t.Panel=function(n,r,s){var o=1/0,l=0,h=Math.round,d=h(window.devicePixelRatio||1),f=80*d,g=48*d,y=3*d,_=2*d,w=3*d,S=15*d,b=74*d,T=30*d,E=document.createElement("canvas");E.width=f,E.height=g,E.style.cssText="width:80px;height:48px";var C=E.getContext("2d");return C.font="bold "+9*d+"px Helvetica,Arial,sans-serif",C.textBaseline="top",C.fillStyle=s,C.fillRect(0,0,f,g),C.fillStyle=r,C.fillText(n,y,_),C.fillRect(w,S,b,T),C.fillStyle=s,C.globalAlpha=.9,C.fillRect(w,S,b,T),{dom:E,update:function(A,D){o=Math.min(o,A),l=Math.max(l,A),C.fillStyle=s,C.globalAlpha=1,C.fillRect(0,0,f,S),C.fillStyle=r,C.fillText(h(A)+" "+n+" ("+h(o)+"-"+h(l)+")",y,_),C.drawImage(E,w+d,S,b-d,T,w,S,b-d,T),C.fillRect(w+b-d,S,d,T),C.fillStyle=s,C.globalAlpha=.9,C.fillRect(w+b-d,S,d,h((1-A/D)*T))}}},t})})(aH);var a3=(i,e,t)=>{let n=e;const r=sd([]);return Rs(()=>{if(t!=null&&t.value)return;const s=r.value=[];for(const[o,l]of Object.entries(i)){const h=n[o];h!==l&&(l&&typeof l=="object"?JSON.stringify(l)!==JSON.stringify(h)&&s.push([o,l]):s.push([o,l]))}n=Me({},i)}),r};const l3=new WeakMap,lH=()=>new Map,c3=(i,e,t,n)=>{Rs(()=>{var r;if(e??(e=Ih(i==null?void 0:i.value)),!e)return;const s=Ma(l3,e,lH);for(const[o,l]of Ih(t.value)){if((r=s.get(o))==null||r.cancel(),l instanceof Tn){s.set(o,l.get(h=>e[o]=h));continue}e[o]=l??n[o]}})};var u3=(i,e)=>{const t=new e,n=sd(t);TE("parent",n);const r=EE("parent",void 0);Rs(()=>{var o;(o=Ih(r==null?void 0:r.value))==null||o.append(t)}),e.defaults||console.error("ManagerClass has no defaults",e);const s=a3(i,e.defaults);return c3(void 0,t,s,e.defaults),L4(()=>{const o=l3.get(t);if(o)for(const l of o.values())l.cancel();t.dispose()}),t};An(yC,_C);An(AT,CT);An(gC,ol);An(xC,bC);An(QA,$A);var cH=An(ab,lb);const uH=rd({name:"Model",props:cH,setup(i,{expose:e}){const n=u3(i,Ao);return e(n),(r,s)=>Dm(r.$slots,"default")}});An(mb,qA);An(YA,ZA);An(KA,JA);An(MT,ET);An(eT,tT);An(sA,oA);An(vb,gb);var hH=An(uA,hA);const dH=rd({name:"OrbitCamera",props:hH,setup(i,{expose:e}){const n=u3(i,Cl);return e(n),(r,s)=>Dm(r.$slots,"default")}});An(yb,_b);An(yb,_b);An(sC,oC);An(aC,ha);An(lC,cC);An(dC,pC);An(uC,hC);An(mC,vC);An(uv,hv);var pH=An(KT,ym);bt(Me({},pH),{onLoad:Function});function h3(i,e){var t={};for(var n in i)Object.prototype.hasOwnProperty.call(i,n)&&e.indexOf(n)<0&&(t[n]=i[n]);if(i!=null&&typeof Object.getOwnPropertySymbols=="function")for(var r=0,n=Object.getOwnPropertySymbols(i);rMath.min(Math.max(t,i),e),Oy=.001,fH=.01,mH=10,vH=.05,gH=1;function yH({duration:i=800,bounce:e=.25,velocity:t=0,mass:n=1}){let r,s,o=1-e;o=j_(vH,gH,o),i=j_(fH,mH,i/1e3),o<1?(r=d=>{const f=d*o,g=f*i,y=f-t,_=X_(d,o),w=Math.exp(-g);return Oy-y/_*w},s=d=>{const g=d*o*i,y=g*t+t,_=Math.pow(o,2)*Math.pow(d,2)*i,w=Math.exp(-g),S=X_(Math.pow(d,2),o);return(-r(d)+Oy>0?-1:1)*((y-_)*w)/S}):(r=d=>{const f=Math.exp(-d*i),g=(d-t)*i+1;return-Oy+f*g},s=d=>{const f=Math.exp(-d*i),g=(t-d)*(i*i);return f*g});const l=5/i,h=xH(r,s,l);if(i=i*1e3,isNaN(h))return{stiffness:100,damping:10,duration:i};{const d=Math.pow(h,2)*n;return{stiffness:d,damping:o*2*Math.sqrt(n*d),duration:i}}}const _H=12;function xH(i,e,t){let n=t;for(let r=1;r<_H;r++)n=n-i(n)/e(n);return n}function X_(i,e){return i*Math.sqrt(1-e*e)}const bH=["duration","bounce"],wH=["stiffness","damping","mass"];function gE(i,e){return e.some(t=>i[t]!==void 0)}function SH(i){let e=Object.assign({velocity:0,stiffness:100,damping:10,mass:1,isResolvedFromDuration:!1},i);if(!gE(i,wH)&&gE(i,bH)){const t=yH(i);e=Object.assign(Object.assign(Object.assign({},e),t),{velocity:0,mass:1}),e.isResolvedFromDuration=!0}return e}function Lb(i){var{from:e=0,to:t=1,restSpeed:n=2,restDelta:r}=i,s=h3(i,["from","to","restSpeed","restDelta"]);const o={done:!1,value:e};let{stiffness:l,damping:h,mass:d,velocity:f,duration:g,isResolvedFromDuration:y}=SH(s),_=yE,w=yE;function S(){const b=f?-(f/1e3):0,T=t-e,E=h/(2*Math.sqrt(l*d)),C=Math.sqrt(l/d)/1e3;if(r===void 0&&(r=Math.min(Math.abs(t-e)/100,.4)),E<1){const A=X_(C,E);_=D=>{const I=Math.exp(-E*C*D);return t-I*((b+E*C*T)/A*Math.sin(A*D)+T*Math.cos(A*D))},w=D=>{const I=Math.exp(-E*C*D);return E*C*I*(Math.sin(A*D)*(b+E*C*T)/A+T*Math.cos(A*D))-I*(Math.cos(A*D)*(b+E*C*T)-A*T*Math.sin(A*D))}}else if(E===1)_=A=>t-Math.exp(-C*A)*(T+(b+C*T)*A);else{const A=C*Math.sqrt(E*E-1);_=D=>{const I=Math.exp(-E*C*D),F=Math.min(A*D,300);return t-I*((b+E*C*T)*Math.sinh(F)+A*T*Math.cosh(F))/A}}}return S(),{next:b=>{const T=_(b);if(y)o.done=b>=g;else{const E=w(b)*1e3,C=Math.abs(E)<=n,A=Math.abs(t-T)<=r;o.done=C&&A}return o.value=o.done?t:T,o},flipTarget:()=>{f=-f,[e,t]=[t,e],S()}}}Lb.needsInterpolation=(i,e)=>typeof i=="string"||typeof e=="string";const yE=i=>0,d3=(i,e,t)=>{const n=e-i;return n===0?1:(t-i)/n},Db=(i,e,t)=>-t*i+t*e+i,p3=(i,e)=>t=>Math.max(Math.min(t,e),i),Rh=i=>i%1?Number(i.toFixed(5)):i,Lm=/(-)?([\d]*\.?[\d])+/g,q_=/(#[0-9a-f]{6}|#[0-9a-f]{3}|#(?:[0-9a-f]{2}){2,4}|(rgb|hsl)a?\((-?[\d\.]+%?[,\s]+){2,3}\s*\/*\s*[\d\.]+%?\))/gi,MH=/^(#[0-9a-f]{3}|#(?:[0-9a-f]{2}){2,4}|(rgb|hsl)a?\((-?[\d\.]+%?[,\s]+){2,3}\s*\/*\s*[\d\.]+%?\))$/i;function Id(i){return typeof i=="string"}const Uv={test:i=>typeof i=="number",parse:parseFloat,transform:i=>i},f3=Object.assign(Object.assign({},Uv),{transform:p3(0,1)});Object.assign(Object.assign({},Uv),{default:1});const EH=i=>({test:e=>Id(e)&&e.endsWith(i)&&e.split(" ").length===1,parse:parseFloat,transform:e=>`${e}${i}`}),Lh=EH("%");Object.assign(Object.assign({},Lh),{parse:i=>Lh.parse(i)/100,transform:i=>Lh.transform(i*100)});const Ib=(i,e)=>t=>!!(Id(t)&&MH.test(t)&&t.startsWith(i)||e&&Object.prototype.hasOwnProperty.call(t,e)),m3=(i,e,t)=>n=>{if(!Id(n))return n;const[r,s,o,l]=n.match(Lm);return{[i]:parseFloat(r),[e]:parseFloat(s),[t]:parseFloat(o),alpha:l!==void 0?parseFloat(l):1}},ll={test:Ib("hsl","hue"),parse:m3("hue","saturation","lightness"),transform:({hue:i,saturation:e,lightness:t,alpha:n=1})=>"hsla("+Math.round(i)+", "+Lh.transform(Rh(e))+", "+Lh.transform(Rh(t))+", "+Rh(f3.transform(n))+")"},TH=p3(0,255),ky=Object.assign(Object.assign({},Uv),{transform:i=>Math.round(TH(i))}),fa={test:Ib("rgb","red"),parse:m3("red","green","blue"),transform:({red:i,green:e,blue:t,alpha:n=1})=>"rgba("+ky.transform(i)+", "+ky.transform(e)+", "+ky.transform(t)+", "+Rh(f3.transform(n))+")"};function AH(i){let e="",t="",n="",r="";return i.length>5?(e=i.substr(1,2),t=i.substr(3,2),n=i.substr(5,2),r=i.substr(7,2)):(e=i.substr(1,1),t=i.substr(2,1),n=i.substr(3,1),r=i.substr(4,1),e+=e,t+=t,n+=n,r+=r),{red:parseInt(e,16),green:parseInt(t,16),blue:parseInt(n,16),alpha:r?parseInt(r,16)/255:1}}const Y_={test:Ib("#"),parse:AH,transform:fa.transform},Fv={test:i=>fa.test(i)||Y_.test(i)||ll.test(i),parse:i=>fa.test(i)?fa.parse(i):ll.test(i)?ll.parse(i):Y_.parse(i),transform:i=>Id(i)?i:i.hasOwnProperty("red")?fa.transform(i):ll.transform(i)},v3="${c}",g3="${n}";function CH(i){var e,t,n,r;return isNaN(i)&&Id(i)&&((t=(e=i.match(Lm))===null||e===void 0?void 0:e.length)!==null&&t!==void 0?t:0)+((r=(n=i.match(q_))===null||n===void 0?void 0:n.length)!==null&&r!==void 0?r:0)>0}function y3(i){typeof i=="number"&&(i=`${i}`);const e=[];let t=0;const n=i.match(q_);n&&(t=n.length,i=i.replace(q_,v3),e.push(...n.map(Fv.parse)));const r=i.match(Lm);return r&&(i=i.replace(Lm,g3),e.push(...r.map(Uv.parse))),{values:e,numColors:t,tokenised:i}}function _3(i){return y3(i).values}function x3(i){const{values:e,numColors:t,tokenised:n}=y3(i),r=e.length;return s=>{let o=n;for(let l=0;ltypeof i=="number"?0:i;function RH(i){const e=_3(i);return x3(i)(e.map(PH))}const b3={test:CH,parse:_3,createTransformer:x3,getAnimatableNone:RH};function Ny(i,e,t){return t<0&&(t+=1),t>1&&(t-=1),t<1/6?i+(e-i)*6*t:t<1/2?e:t<2/3?i+(e-i)*(2/3-t)*6:i}function _E({hue:i,saturation:e,lightness:t,alpha:n}){i/=360,e/=100,t/=100;let r=0,s=0,o=0;if(!e)r=s=o=t;else{const l=t<.5?t*(1+e):t+e-t*e,h=2*t-l;r=Ny(h,l,i+1/3),s=Ny(h,l,i),o=Ny(h,l,i-1/3)}return{red:Math.round(r*255),green:Math.round(s*255),blue:Math.round(o*255),alpha:n}}const LH=(i,e,t)=>{const n=i*i,r=e*e;return Math.sqrt(Math.max(0,t*(r-n)+n))},DH=[Y_,fa,ll],xE=i=>DH.find(e=>e.test(i)),w3=(i,e)=>{let t=xE(i),n=xE(e),r=t.parse(i),s=n.parse(e);t===ll&&(r=_E(r),t=fa),n===ll&&(s=_E(s),n=fa);const o=Object.assign({},r);return l=>{for(const h in o)h!=="alpha"&&(o[h]=LH(r[h],s[h],l));return o.alpha=Db(r.alpha,s.alpha,l),t.transform(o)}},IH=i=>typeof i=="number",OH=(i,e)=>t=>e(i(t)),S3=(...i)=>i.reduce(OH);function M3(i,e){return IH(i)?t=>Db(i,e,t):Fv.test(i)?w3(i,e):T3(i,e)}const E3=(i,e)=>{const t=[...i],n=t.length,r=i.map((s,o)=>M3(s,e[o]));return s=>{for(let o=0;o{const t=Object.assign(Object.assign({},i),e),n={};for(const r in t)i[r]!==void 0&&e[r]!==void 0&&(n[r]=M3(i[r],e[r]));return r=>{for(const s in n)t[s]=n[s](r);return t}};function bE(i){const e=b3.parse(i),t=e.length;let n=0,r=0,s=0;for(let o=0;o{const t=b3.createTransformer(e),n=bE(i),r=bE(e);return n.numHSL===r.numHSL&&n.numRGB===r.numRGB&&n.numNumbers>=r.numNumbers?S3(E3(n.parsed,r.parsed),t):o=>`${o>0?e:i}`},NH=(i,e)=>t=>Db(i,e,t);function BH(i){if(typeof i=="number")return NH;if(typeof i=="string")return Fv.test(i)?w3:T3;if(Array.isArray(i))return E3;if(typeof i=="object")return kH}function zH(i,e,t){const n=[],r=t||BH(i[0]),s=i.length-1;for(let o=0;ot(d3(i,e,n))}function FH(i,e){const t=i.length,n=t-1;return r=>{let s=0,o=!1;if(r<=i[0]?o=!0:r>=i[n]&&(s=n-1,o=!0),!o){let h=1;for(;hr||h===n);h++);s=h-1}const l=d3(i[s],i[s+1],r);return e[s](l)}}function A3(i,e,{clamp:t=!0,ease:n,mixer:r}={}){const s=i.length;vE(s===e.length),vE(!n||!Array.isArray(n)||n.length===s-1),i[0]>i[s-1]&&(i=[].concat(i),e=[].concat(e),i.reverse(),e.reverse());const o=zH(e,n,r),l=s===2?UH(i,o):FH(i,o);return t?h=>l(j_(i[0],i[s-1],h)):l}const VH=i=>e=>e<=.5?i(2*e)/2:(2-i(2*(1-e)))/2,HH=i=>e=>Math.pow(e,i),GH=HH(2),WH=VH(GH);function jH(i,e){return i.map(()=>e||WH).splice(0,i.length-1)}function XH(i){const e=i.length;return i.map((t,n)=>n!==0?n/(e-1):0)}function qH(i,e){return i.map(t=>t*e)}function Kf({from:i=0,to:e=1,ease:t,offset:n,duration:r=300}){const s={done:!1,value:i},o=Array.isArray(e)?e:[i,e],l=qH(n&&n.length===o.length?n:XH(o),r);function h(){return A3(l,o,{ease:Array.isArray(t)?t:jH(o,t)})}let d=h();return{next:f=>(s.value=d(f),s.done=f>=r,s),flipTarget:()=>{o.reverse(),d=h()}}}function YH({velocity:i=0,from:e=0,power:t=.8,timeConstant:n=350,restDelta:r=.5,modifyTarget:s}){const o={done:!1,value:e};let l=t*i;const h=e+l,d=s===void 0?h:s(h);return d!==h&&(l=d-e),{next:f=>{const g=-l*Math.exp(-f/n);return o.done=!(g>r||g<-r),o.value=o.done?d:d+g,o},flipTarget:()=>{}}}const wE={keyframes:Kf,spring:Lb,decay:YH};function ZH(i){if(Array.isArray(i.to))return Kf;if(wE[i.type])return wE[i.type];const e=new Set(Object.keys(i));return e.has("ease")||e.has("duration")&&!e.has("dampingRatio")?Kf:e.has("dampingRatio")||e.has("stiffness")||e.has("mass")||e.has("damping")||e.has("restSpeed")||e.has("restDelta")?Lb:Kf}const C3=1/60*1e3,KH=typeof performance<"u"?()=>performance.now():()=>Date.now(),P3=typeof window<"u"?i=>window.requestAnimationFrame(i):i=>setTimeout(()=>i(KH()),C3);function JH(i){let e=[],t=[],n=0,r=!1,s=!1;const o=new WeakSet,l={schedule:(h,d=!1,f=!1)=>{const g=f&&r,y=g?e:t;return d&&o.add(h),y.indexOf(h)===-1&&(y.push(h),g&&r&&(n=e.length)),h},cancel:h=>{const d=t.indexOf(h);d!==-1&&t.splice(d,1),o.delete(h)},process:h=>{if(r){s=!0;return}if(r=!0,[e,t]=[t,e],t.length=0,n=e.length,n)for(let d=0;d(i[e]=JH(()=>id=!0),i),{}),$H=Od.reduce((i,e)=>{const t=Vv[e];return i[e]=(n,r=!1,s=!1)=>(id||n9(),t.schedule(n,r,s)),i},{}),e9=Od.reduce((i,e)=>(i[e]=Vv[e].cancel,i),{});Od.reduce((i,e)=>(i[e]=()=>Vv[e].process(Dh),i),{});const t9=i=>Vv[i].process(Dh),R3=i=>{id=!1,Dh.delta=Z_?C3:Math.max(Math.min(i-Dh.timestamp,QH),1),Dh.timestamp=i,K_=!0,Od.forEach(t9),K_=!1,id&&(Z_=!1,P3(R3))},n9=()=>{id=!0,Z_=!0,K_||P3(R3)};function L3(i,e,t=0){return i-e-t}function i9(i,e,t=0,n=!0){return n?L3(e+-i,e,t):e-(i-e)+t}function r9(i,e,t,n){return n?i>=e+t:i<=-t}const s9=i=>{const e=({delta:t})=>i(t);return{start:()=>$H.update(e,!0),stop:()=>e9.update(e)}};function o9(i){var e,t,{from:n,autoplay:r=!0,driver:s=s9,elapsed:o=0,repeat:l=0,repeatType:h="loop",repeatDelay:d=0,onPlay:f,onStop:g,onComplete:y,onRepeat:_,onUpdate:w}=i,S=h3(i,["from","autoplay","driver","elapsed","repeat","repeatType","repeatDelay","onPlay","onStop","onComplete","onRepeat","onUpdate"]);let{to:b}=S,T,E=0,C=S.duration,A,D=!1,I=!0,F;const P=ZH(S);!((t=(e=P).needsInterpolation)===null||t===void 0)&&t.call(e,n,b)&&(F=A3([0,100],[n,b],{clamp:!1}),n=0,b=100);const k=P(Object.assign(Object.assign({},S),{from:n,to:b}));function j(){E++,h==="reverse"?(I=E%2===0,o=i9(o,C,d,I)):(o=L3(o,C,d),h==="mirror"&&k.flipTarget()),D=!1,_&&_()}function G(){T.stop(),y&&y()}function ne(Z){if(I||(Z=-Z),o+=Z,!D){const $=k.next(Math.max(0,o));A=$.value,F&&(A=F(A)),D=I?$.done:o<=0}w==null||w(A),D&&(E===0&&(C??(C=o)),E{g==null||g(),T.stop()}}}class a9 extends Tn{constructor(){super(...arguments),B4(this,"restart")}}var l9=i=>{var e,t,n;const r=typeof(i==null?void 0:i.from)=="function"?i.from():(e=i==null?void 0:i.from)!=null?e:0,s=new a9((n=(t=i==null?void 0:i.map)==null?void 0:t.call(i,r))!=null?n:r);return Rs(o=>{if(typeof(i==null?void 0:i.from)!="function")return;const{map:l}=i;if(l){const d=i.from(f=>s.set(l(f)));return o(()=>{d.cancel()})}const h=i.from(s.set);o(()=>{h.cancel()})}),Rs(o=>{const l=i==null?void 0:i.step;if(!l)return;const h=s.get(l);o(()=>{h.cancel()})}),s},c9=i=>{var e=i,{from:t,to:n,duration:r=1e3,stopped:s,step:o}=e,l=N4(e,["from","to","duration","stopped","step"]);const h=l9({from:t,step:o}),d=sd({});let f=d;return h.restart=()=>d.value={},Rs(g=>{if(typeof s=="boolean"?s:s!=null&&s.value)return;const y=typeof n=="number"||Array.isArray(n)?n:n.value,_=o9(bt(Me({from:f===d?h.get():t,to:y,duration:r},l),{onUpdate:h.set}));g(()=>{_.stop()})}),h};const u9={class:"relative h-96 w-full bg-transparent"},C9=rd({__name:"model",props:{src:null},setup(i){const e=c9({from:180,to:0,duration:5e3});return(t,n)=>(SE(),ME("div",u9,[N0(zp(JV),{color:"transparent","default-light":"studio"},{default:D4(()=>[N0(zp(uH),{src:i.src,y:0,"rotation-z":zp(e),"box-visible":!1},null,8,["src","rotation-z"]),N0(zp(dH),{active:"",z:100,y:80,zoom:1,"auto-rotate":"","enable-damping":""})]),_:1})]))}});export{ji as $,Ot as A,sr as B,bo as C,_a as D,Xm as E,Oh as F,ei as G,bl as H,xt as I,Zm as J,jc as K,B2 as L,In as M,Km as N,$t as O,Br as P,ai as Q,wx as R,su as S,oi as T,ld as U,z as V,K6 as W,Ta as X,Ze as Y,x9 as Z,C9 as _,Qe as a,va as a$,wn as a0,b9 as a1,Eo as a2,R6 as a3,S2 as a4,T2 as a5,Nh as a6,yr as a7,ti as a8,g2 as a9,Nr as aA,Cs as aB,v2 as aC,_l as aD,D6 as aE,cd as aF,Hn as aG,od as aH,px as aI,li as aJ,wl as aK,fl as aL,VB as aM,HB as aN,nm as aO,f9 as aP,Xt as aQ,l1 as aR,vI as aS,c1 as aT,Wy as aU,tm as aV,Fh as aW,p9 as aX,wa as aY,_o as aZ,dd as a_,y2 as aa,Pe as ab,Ln as ac,kh as ad,hx as ae,nn as af,ou as ag,fi as ah,R2 as ai,G0 as aj,C2 as ak,Tx as al,i2 as am,r2 as an,D2 as ao,WE as ap,Gn as aq,dn as ar,e_ as as,am as at,hd as au,Wh as av,rT as aw,lm as ax,Ds as ay,sT as az,os as b,om as b0,m9 as b1,Um as b2,Yt as b3,Hm as b4,cl as b5,pl as b6,dl as b7,kt as b8,Rx as b9,rn as ba,cx as bb,OI as bc,Ea as bd,hm as be,Er as bf,He as bg,dx as bh,Or as bi,is as bj,zE as bk,wf as bl,Ts as bm,rl as bn,d9 as bo,AU as c,ss as d,mo as e,Wn as f,zt as g,ae as h,xr as i,Ge as j,Om as k,pu as l,Kt as m,mT as n,Nz as o,Im as p,$c as q,wi as r,$e as s,fM as t,Yc as u,Cz as v,pT as w,g9 as x,Ma as y,El as z};