hytopia 0.5.6-dev7 → 0.5.6-dev8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/server.js +2 -2
package/server.js
CHANGED
@@ -402,7 +402,7 @@ For example, you can use the \`pathToFileURL()\` method of the \`url\` core modu
|
|
402
402
|
`,concatBytes:fR},MW1=(J,Z)=>{let Y=new Uint8Array(J.length+Z.length);return Y.set(J,0),Y.set(Z,J.length),Y},RW1={windowsNewline:new Uint8Array([13,10]),unixNewline:new Uint8Array([10]),LF:10,concatBytes:MW1};import{Buffer as NW1}from"buffer";var Gg=(J,Z)=>J?void 0:PW1.bind(void 0,Z),PW1=function*(J,Z){if(typeof Z!=="string"&&!C8(Z)&&!NW1.isBuffer(Z))throw new TypeError(`The \`${J}\` option's transform must use "objectMode: true" to receive as input: ${typeof Z}.`);yield Z},zg=(J,Z)=>J?jW1.bind(void 0,Z):DW1.bind(void 0,Z),jW1=function*(J,Z){Fg(J,Z),yield Z},DW1=function*(J,Z){if(Fg(J,Z),typeof Z!=="string"&&!C8(Z))throw new TypeError(`The \`${J}\` option's function must yield a string or an Uint8Array, not ${typeof Z}.`);yield Z},Fg=(J,Z)=>{if(Z===null||Z===void 0)throw new TypeError(`The \`${J}\` option's function must not call \`yield ${Z}\`.
|
403
403
|
Instead, \`yield\` should either be called with a value, or not be called at all. For example:
|
404
404
|
if (condition) { yield value; }`)};import{Buffer as CW1}from"buffer";import{StringDecoder as TW1}from"string_decoder";var Jq=(J,Z,Y)=>{if(Y)return;if(J)return{transform:kW1.bind(void 0,new TextEncoder)};let $=new TW1(Z);return{transform:EW1.bind(void 0,$),final:IW1.bind(void 0,$)}},kW1=function*(J,Z){if(CW1.isBuffer(Z))yield X7(Z);else if(typeof Z==="string")yield J.encode(Z);else yield Z},EW1=function*(J,Z){yield C8(Z)?J.write(Z):Z},IW1=function*(J){let Z=J.end();if(Z!=="")yield Z};import{callbackify as Vg}from"util";var bR=Vg(async(J,Z,Y,$)=>{Z.currentIterable=J(...Y);try{for await(let W of Z.currentIterable)$.push(W)}finally{delete Z.currentIterable}}),Zq=async function*(J,Z,Y){if(Y===Z.length){yield J;return}let{transform:$=SW1}=Z[Y];for await(let W of $(J))yield*Zq(W,Z,Y+1)},Hg=async function*(J){for(let[Z,{final:Y}]of Object.entries(J))yield*vW1(Y,Number(Z),J)},vW1=async function*(J,Z,Y){if(J===void 0)return;for await(let $ of J())yield*Zq($,Y,Z+1)},qg=Vg(async({currentIterable:J},Z)=>{if(J!==void 0){await(Z?J.throw(Z):J.return());return}if(Z)throw Z}),SW1=function*(J){yield J};var gR=(J,Z,Y,$)=>{try{for(let W of J(...Z))Y.push(W);$()}catch(W){$(W)}},Ug=(J,Z)=>[...Z.flatMap((Y)=>[...sZ(Y,J,0)]),...uK(J)],sZ=function*(J,Z,Y){if(Y===Z.length){yield J;return}let{transform:$=xW1}=Z[Y];for(let W of $(J))yield*sZ(W,Z,Y+1)},uK=function*(J){for(let[Z,{final:Y}]of Object.entries(J))yield*_W1(Y,Number(Z),J)},_W1=function*(J,Z,Y){if(J===void 0)return;for(let $ of J())yield*sZ($,Y,Z+1)},xW1=function*(J){yield J};var mR=({value:J,value:{transform:Z,final:Y,writableObjectMode:$,readableObjectMode:W},optionName:Q},{encoding:X})=>{let K={},G=Lg(J,X,Q),z=aZ(Z),F=aZ(Y),V=z?bR.bind(void 0,Zq,K):gR.bind(void 0,sZ),H=z||F?bR.bind(void 0,Hg,K):gR.bind(void 0,uK),q=z||F?qg.bind(void 0,K):void 0;return{stream:new AW1({writableObjectMode:$,writableHighWaterMark:wg($),readableObjectMode:W,readableHighWaterMark:wg(W),transform(L,w,O){V([L,G,0],this,O)},flush(L){H([G],this,L)},destroy:q})}},Yq=(J,Z,Y,$)=>{let W=Z.filter(({type:X})=>X==="generator"),Q=$?W.reverse():W;for(let{value:X,optionName:K}of Q){let G=Lg(X,Y,K);J=Ug(G,J)}return J},Lg=({transform:J,final:Z,binary:Y,writableObjectMode:$,readableObjectMode:W,preserveNewlines:Q},X,K)=>{let G={};return[{transform:Gg($,K)},Jq(Y,X,$),eH(Y,Q,$,G),{transform:J,final:Z},{transform:zg(W,K)},Kg({binary:Y,preserveNewlines:Q,readableObjectMode:W,state:G})].filter(Boolean)};var Bg=(J,Z)=>{for(let Y of hW1(J))fW1(J,Y,Z)},hW1=(J)=>new Set(Object.entries(J).filter(([,{direction:Z}])=>Z==="input").map(([Z])=>Number(Z))),fW1=(J,Z,Y)=>{let{stdioItems:$}=J[Z],W=$.filter(({contents:K})=>K!==void 0);if(W.length===0)return;if(Z!==0){let[{type:K,optionName:G}]=W;throw new TypeError(`Only the \`stdin\` option, not \`${G}\`, can be ${KJ[K]} with synchronous methods.`)}let X=W.map(({contents:K})=>K).map((K)=>yW1(K,$));Y.input=xK(X)},yW1=(J,Z)=>{let Y=Yq(J,Z,"utf8",!0);return bW1(Y),xK(Y)},bW1=(J)=>{let Z=J.find((Y)=>typeof Y!=="string"&&!C8(Y));if(Z!==void 0)throw new TypeError(`The \`stdin\` option is invalid: when passing objects as input, a transform must be used to serialize them to strings or Uint8Arrays: ${Z}.`)};import{writeFileSync as dW1,appendFileSync as cW1}from"fs";var $q=({stdioItems:J,encoding:Z,verboseInfo:Y,fdNumber:$})=>$!=="all"&&LW(Y,$)&&!U5.has(Z)&&gW1($)&&(J.some(({type:W,value:Q})=>W==="native"&&mW1.has(Q))||J.every(({type:W})=>h5.has(W))),gW1=(J)=>J===1||J===2,mW1=new Set(["pipe","overlapped"]),Og=async(J,Z,Y,$)=>{for await(let W of J)if(!uW1(Z))Rg(W,Y,$)},Mg=(J,Z,Y)=>{for(let $ of J)Rg($,Z,Y)},uW1=(J)=>J._readableState.pipes.length>0,Rg=(J,Z,Y)=>{let $=UH(J);W4({type:"output",verboseMessage:$,fdNumber:Z,verboseInfo:Y})};var Ng=({fileDescriptors:J,syncResult:{output:Z},options:Y,isMaxBuffer:$,verboseInfo:W})=>{if(Z===null)return{output:Array.from({length:3})};let Q={},X=new Set([]);return{output:Z.map((G,z)=>lW1({result:G,fileDescriptors:J,fdNumber:z,state:Q,outputFiles:X,isMaxBuffer:$,verboseInfo:W},Y)),...Q}},lW1=({result:J,fileDescriptors:Z,fdNumber:Y,state:$,outputFiles:W,isMaxBuffer:Q,verboseInfo:X},{buffer:K,encoding:G,lines:z,stripFinalNewline:F,maxBuffer:V})=>{if(J===null)return;let H=Pb(J,Q,V),q=X7(H),{stdioItems:U,objectMode:L}=Z[Y],w=pW1([q],U,G,$),{serializedResult:O,finalResult:R=O}=iW1({chunks:w,objectMode:L,encoding:G,lines:z,stripFinalNewline:F,fdNumber:Y});nW1({serializedResult:O,fdNumber:Y,state:$,verboseInfo:X,encoding:G,stdioItems:U,objectMode:L});let N=K[Y]?R:void 0;try{if($.error===void 0)aW1(O,U,W);return N}catch(P){return $.error=P,N}},pW1=(J,Z,Y,$)=>{try{return Yq(J,Z,Y,!1)}catch(W){return $.error=W,J}},iW1=({chunks:J,objectMode:Z,encoding:Y,lines:$,stripFinalNewline:W,fdNumber:Q})=>{if(Z)return{serializedResult:J};if(Y==="buffer")return{serializedResult:xK(J)};let X=hh(J,Y);if($[Q])return{serializedResult:X,finalResult:yR(X,!W[Q],Z)};return{serializedResult:X}},nW1=({serializedResult:J,fdNumber:Z,state:Y,verboseInfo:$,encoding:W,stdioItems:Q,objectMode:X})=>{if(!$q({stdioItems:Q,encoding:W,verboseInfo:$,fdNumber:Z}))return;let K=yR(J,!1,X);try{Mg(K,Z,$)}catch(G){Y.error??=G}},aW1=(J,Z,Y)=>{for(let{path:$,append:W}of Z.filter(({type:Q})=>rH.has(Q))){let Q=typeof $==="string"?$:$.toString();if(W||Y.has(Q))cW1($,J);else Y.add(Q),dW1($,J)}};var Pg=([,J,Z],Y)=>{if(!Y.all)return;if(J===void 0)return Z;if(Z===void 0)return J;if(Array.isArray(J))return Array.isArray(Z)?[...J,...Z]:[...J,F7(Z,Y,"all")];if(Array.isArray(Z))return[F7(J,Y,"all"),...Z];if(C8(J)&&C8(Z))return iM([J,Z]);return`${J}${Z}`};import{once as uR}from"events";var jg=async(J,Z)=>{let[Y,$]=await sW1(J);return Z.isForcefullyTerminated??=!1,[Y,$]},sW1=async(J)=>{let[Z,Y]=await Promise.allSettled([uR(J,"spawn"),uR(J,"exit")]);if(Z.status==="rejected")return[];return Y.status==="rejected"?Dg(J):Y.value},Dg=async(J)=>{try{return await uR(J,"exit")}catch{return Dg(J)}},Cg=async(J)=>{let[Z,Y]=await J;if(!oW1(Z,Y)&&dR(Z,Y))throw new Q4;return[Z,Y]},oW1=(J,Z)=>J===void 0&&Z===void 0,dR=(J,Z)=>J!==0||Z!==null;var Tg=({error:J,status:Z,signal:Y,output:$},{maxBuffer:W})=>{let Q=rW1(J,Z,Y),X=Q?.code==="ETIMEDOUT",K=Nb(Q,$,W);return{resultError:Q,exitCode:Z,signal:Y,timedOut:X,isMaxBuffer:K}},rW1=(J,Z,Y)=>{if(J!==void 0)return J;return dR(Z,Y)?new Q4:void 0};var kg=(J,Z,Y)=>{let{file:$,commandArguments:W,command:Q,escapedCommand:X,startTime:K,verboseInfo:G,options:z,fileDescriptors:F}=eW1(J,Z,Y),V=YQ1({file:$,commandArguments:W,options:z,command:Q,escapedCommand:X,verboseInfo:G,fileDescriptors:F,startTime:K});return CW(V,G,z)},eW1=(J,Z,Y)=>{let{command:$,escapedCommand:W,startTime:Q,verboseInfo:X}=LH(J,Z,Y),K=JQ1(Y),{file:G,commandArguments:z,options:F}=gH(J,Z,K);ZQ1(F);let V=$g(F,X);return{file:G,commandArguments:z,command:$,escapedCommand:W,startTime:Q,verboseInfo:X,options:F,fileDescriptors:V}},JQ1=(J)=>J.node&&!J.ipc?{...J,ipc:!1}:J,ZQ1=({ipc:J,ipcInput:Z,detached:Y,cancelSignal:$})=>{if(Z)Wq("ipcInput");if(J)Wq("ipc: true");if(Y)Wq("detached: true");if($)Wq("cancelSignal")},Wq=(J)=>{throw new TypeError(`The "${J}" option cannot be used with synchronous methods.`)},YQ1=({file:J,commandArguments:Z,options:Y,command:$,escapedCommand:W,verboseInfo:Q,fileDescriptors:X,startTime:K})=>{let G=$Q1({file:J,commandArguments:Z,options:Y,command:$,escapedCommand:W,fileDescriptors:X,startTime:K});if(G.failed)return G;let{resultError:z,exitCode:F,signal:V,timedOut:H,isMaxBuffer:q}=Tg(G,Y),{output:U,error:L=z}=Ng({fileDescriptors:X,syncResult:G,options:Y,isMaxBuffer:q,verboseInfo:Q}),w=U.map((R,N)=>F7(R,Y,N)),O=F7(Pg(U,Y),Y,"all");return QQ1({error:L,exitCode:F,signal:V,timedOut:H,isMaxBuffer:q,stdio:w,all:O,options:Y,command:$,escapedCommand:W,startTime:K})},$Q1=({file:J,commandArguments:Z,options:Y,command:$,escapedCommand:W,fileDescriptors:Q,startTime:X})=>{try{Bg(Q,Y);let K=WQ1(Y);return tW1(J,Z,K)}catch(K){return DW({error:K,command:$,escapedCommand:W,fileDescriptors:Q,options:Y,startTime:X,isSync:!0})}},WQ1=({encoding:J,maxBuffer:Z,...Y})=>({...Y,encoding:"buffer",maxBuffer:nH(Z)}),QQ1=({error:J,exitCode:Z,signal:Y,timedOut:$,isMaxBuffer:W,stdio:Q,all:X,options:K,command:G,escapedCommand:z,startTime:F})=>J===void 0?aH({command:G,escapedCommand:z,stdio:Q,all:X,ipcOutput:[],options:K,startTime:F}):mK({error:J,command:G,escapedCommand:z,timedOut:$,isCanceled:!1,isGracefullyCanceled:!1,isMaxBuffer:W,isForcefullyTerminated:!1,exitCode:Z,signal:Y,stdio:Q,all:X,ipcOutput:[],options:K,startTime:F,isSync:!0});import{setMaxListeners as iX1}from"events";import{spawn as nX1}from"child_process";import _g from"process";import{once as cR,on as XQ1}from"events";var Eg=({anyProcess:J,channel:Z,isSubprocess:Y,ipc:$},{reference:W=!0,filter:Q}={})=>{return MW({methodName:"getOneMessage",isSubprocess:Y,ipc:$,isConnected:xH(J)}),KQ1({anyProcess:J,channel:Z,isSubprocess:Y,filter:Q,reference:W})},KQ1=async({anyProcess:J,channel:Z,isSubprocess:Y,filter:$,reference:W})=>{IH(Z,W);let Q=XJ(J,Z,Y),X=new AbortController;try{return await Promise.race([GQ1(Q,$,X),zQ1(Q,Y,X),FQ1(Q,Y,X)])}catch(K){throw RW(J),K}finally{X.abort(),vH(Z,W)}},GQ1=async(J,Z,{signal:Y})=>{if(Z===void 0){let[$]=await cR(J,"message",{signal:Y});return $}for await(let[$]of XQ1(J,"message",{signal:Y}))if(Z($))return $},zQ1=async(J,Z,{signal:Y})=>{await cR(J,"disconnect",{signal:Y}),qy(Z)},FQ1=async(J,Z,{signal:Y})=>{let[$]=await cR(J,"strict:error",{signal:Y});throw TH($,Z)};import{once as vg,on as VQ1}from"events";var Sg=({anyProcess:J,channel:Z,isSubprocess:Y,ipc:$},{reference:W=!0}={})=>lR({anyProcess:J,channel:Z,isSubprocess:Y,ipc:$,shouldAwait:!Y,reference:W}),lR=({anyProcess:J,channel:Z,isSubprocess:Y,ipc:$,shouldAwait:W,reference:Q})=>{MW({methodName:"getEachMessage",isSubprocess:Y,ipc:$,isConnected:xH(J)}),IH(Z,Q);let X=XJ(J,Z,Y),K=new AbortController,G={};return HQ1(J,X,K),qQ1({ipcEmitter:X,isSubprocess:Y,controller:K,state:G}),UQ1({anyProcess:J,channel:Z,ipcEmitter:X,isSubprocess:Y,shouldAwait:W,controller:K,state:G,reference:Q})},HQ1=async(J,Z,Y)=>{try{await vg(Z,"disconnect",{signal:Y.signal}),Y.abort()}catch{}},qQ1=async({ipcEmitter:J,isSubprocess:Z,controller:Y,state:$})=>{try{let[W]=await vg(J,"strict:error",{signal:Y.signal});$.error=TH(W,Z),Y.abort()}catch{}},UQ1=async function*({anyProcess:J,channel:Z,ipcEmitter:Y,isSubprocess:$,shouldAwait:W,controller:Q,state:X,reference:K}){try{for await(let[G]of VQ1(Y,"message",{signal:Q.signal}))Ig(X),yield G}catch{Ig(X)}finally{if(Q.abort(),vH(Z,K),!$)RW(J);if(W)await J}},Ig=({error:J})=>{if(J)throw J};var xg=(J,{ipc:Z})=>{Object.assign(J,hg(J,!1,Z))},Ag=()=>{let J=_g,Z=!0,Y=_g.channel!==void 0;return{...hg(J,!0,Y),getCancelSignal:my.bind(void 0,{anyProcess:J,channel:J.channel,isSubprocess:!0,ipc:Y})}},hg=(J,Z,Y)=>({sendMessage:yH.bind(void 0,{anyProcess:J,channel:J.channel,isSubprocess:Z,ipc:Y}),getOneMessage:Eg.bind(void 0,{anyProcess:J,channel:J.channel,isSubprocess:Z,ipc:Y}),getEachMessage:Sg.bind(void 0,{anyProcess:J,channel:J.channel,isSubprocess:Z,ipc:Y})});import{ChildProcess as wQ1}from"child_process";import{PassThrough as LQ1,Readable as BQ1,Writable as OQ1,Duplex as MQ1}from"stream";var fg=({error:J,command:Z,escapedCommand:Y,fileDescriptors:$,options:W,startTime:Q,verboseInfo:X})=>{AR($);let K=new wQ1;RQ1(K,$),Object.assign(K,{readable:NQ1,writable:PQ1,duplex:jQ1});let G=DW({error:J,command:Z,escapedCommand:Y,fileDescriptors:$,options:W,startTime:Q,isSync:!1}),z=DQ1(G,X,W);return{subprocess:K,promise:z}},RQ1=(J,Z)=>{let Y=dK(),$=dK(),W=dK(),Q=Array.from({length:Z.length-3},dK),X=dK(),K=[Y,$,W,...Q];Object.assign(J,{stdin:Y,stdout:$,stderr:W,all:X,stdio:K})},dK=()=>{let J=new LQ1;return J.end(),J},NQ1=()=>new BQ1({read(){}}),PQ1=()=>new OQ1({write(){}}),jQ1=()=>new MQ1({read(){},write(){}}),DQ1=async(J,Z,Y)=>CW(J,Z,Y);import{createReadStream as yg,createWriteStream as bg}from"fs";import{Buffer as CQ1}from"buffer";import{Readable as cK,Writable as TQ1,Duplex as kQ1}from"stream";var mg=(J,Z)=>tH(EQ1,J,Z,!1),lK=({type:J,optionName:Z})=>{throw new TypeError(`The \`${Z}\` option cannot be ${KJ[J]}.`)},gg={fileNumber:lK,generator:mR,asyncGenerator:mR,nodeStream:({value:J})=>({stream:J}),webTransform({value:{transform:J,writableObjectMode:Z,readableObjectMode:Y}}){let $=Z||Y;return{stream:kQ1.fromWeb(J,{objectMode:$})}},duplex:({value:{transform:J}})=>({stream:J}),native(){}},EQ1={input:{...gg,fileUrl:({value:J})=>({stream:yg(J)}),filePath:({value:{file:J}})=>({stream:yg(J)}),webStream:({value:J})=>({stream:cK.fromWeb(J)}),iterable:({value:J})=>({stream:cK.from(J)}),asyncIterable:({value:J})=>({stream:cK.from(J)}),string:({value:J})=>({stream:cK.from(J)}),uint8Array:({value:J})=>({stream:cK.from(CQ1.from(J))})},output:{...gg,fileUrl:({value:J})=>({stream:bg(J)}),filePath:({value:{file:J,append:Z}})=>({stream:bg(J,Z?{flags:"a"}:{})}),webStream:({value:J})=>({stream:TQ1.fromWeb(J)}),iterable:lK,asyncIterable:lK,string:lK,uint8Array:lK}};import{on as IQ1,once as ug}from"events";import{PassThrough as vQ1,getDefaultHighWaterMark as SQ1}from"stream";import{finished as lg}from"stream/promises";function oZ(J){if(!Array.isArray(J))throw new TypeError(`Expected an array, got \`${typeof J}\`.`);for(let W of J)pR(W);let Z=J.some(({readableObjectMode:W})=>W),Y=_Q1(J,Z),$=new pg({objectMode:Z,writableHighWaterMark:Y,readableHighWaterMark:Y});for(let W of J)$.add(W);return $}var _Q1=(J,Z)=>{if(J.length===0)return SQ1(Z);let Y=J.filter(({readableObjectMode:$})=>$===Z).map(({readableHighWaterMark:$})=>$);return Math.max(...Y)};class pg extends vQ1{#Y=new Set([]);#$=new Set([]);#Z=new Set([]);#J;#W=Symbol("unpipe");#Q=new WeakMap;add(J){if(pR(J),this.#Y.has(J))return;this.#Y.add(J),this.#J??=xQ1(this,this.#Y,this.#W);let Z=fQ1({passThroughStream:this,stream:J,streams:this.#Y,ended:this.#$,aborted:this.#Z,onFinished:this.#J,unpipeEvent:this.#W});this.#Q.set(J,Z),J.pipe(this,{end:!1})}async remove(J){if(pR(J),!this.#Y.has(J))return!1;let Z=this.#Q.get(J);if(Z===void 0)return!1;return this.#Q.delete(J),J.unpipe(this),await Z,!0}}var xQ1=async(J,Z,Y)=>{Qq(J,dg);let $=new AbortController;try{await Promise.race([AQ1(J,$),hQ1(J,Z,Y,$)])}finally{$.abort(),Qq(J,-dg)}},AQ1=async(J,{signal:Z})=>{try{await lg(J,{signal:Z,cleanup:!0})}catch(Y){throw ig(J,Y),Y}},hQ1=async(J,Z,Y,{signal:$})=>{for await(let[W]of IQ1(J,"unpipe",{signal:$}))if(Z.has(W))W.emit(Y)},pR=(J)=>{if(typeof J?.pipe!=="function")throw new TypeError(`Expected a readable stream, got: \`${typeof J}\`.`)},fQ1=async({passThroughStream:J,stream:Z,streams:Y,ended:$,aborted:W,onFinished:Q,unpipeEvent:X})=>{Qq(J,cg);let K=new AbortController;try{await Promise.race([yQ1(Q,Z,K),bQ1({passThroughStream:J,stream:Z,streams:Y,ended:$,aborted:W,controller:K}),gQ1({stream:Z,streams:Y,ended:$,aborted:W,unpipeEvent:X,controller:K})])}finally{K.abort(),Qq(J,-cg)}if(Y.size>0&&Y.size===$.size+W.size)if($.size===0&&W.size>0)iR(J);else mQ1(J)},yQ1=async(J,Z,{signal:Y})=>{try{if(await J,!Y.aborted)iR(Z)}catch($){if(!Y.aborted)ig(Z,$)}},bQ1=async({passThroughStream:J,stream:Z,streams:Y,ended:$,aborted:W,controller:{signal:Q}})=>{try{if(await lg(Z,{signal:Q,cleanup:!0,readable:!0,writable:!1}),Y.has(Z))$.add(Z)}catch(X){if(Q.aborted||!Y.has(Z))return;if(ng(X))W.add(Z);else ag(J,X)}},gQ1=async({stream:J,streams:Z,ended:Y,aborted:$,unpipeEvent:W,controller:{signal:Q}})=>{if(await ug(J,W,{signal:Q}),!J.readable)return ug(Q,"abort",{signal:Q});Z.delete(J),Y.delete(J),$.delete(J)},mQ1=(J)=>{if(J.writable)J.end()},ig=(J,Z)=>{if(ng(Z))iR(J);else ag(J,Z)},ng=(J)=>J?.code==="ERR_STREAM_PREMATURE_CLOSE",iR=(J)=>{if(J.readable||J.writable)J.destroy()},ag=(J,Z)=>{if(!J.destroyed)J.once("error",uQ1),J.destroy(Z)},uQ1=()=>{},Qq=(J,Z)=>{let Y=J.getMaxListeners();if(Y!==0&&Y!==Number.POSITIVE_INFINITY)J.setMaxListeners(Y+Z)},dg=2,cg=1;import{finished as sg}from"stream/promises";var kW=(J,Z)=>{J.pipe(Z),dQ1(J,Z),cQ1(J,Z)},dQ1=async(J,Z)=>{if(C9(J)||C9(Z))return;try{await sg(J,{cleanup:!0,readable:!0,writable:!1})}catch{}nR(Z)},nR=(J)=>{if(J.writable)J.end()},cQ1=async(J,Z)=>{if(C9(J)||C9(Z))return;try{await sg(Z,{cleanup:!0,readable:!1,writable:!0})}catch{}aR(J)},aR=(J)=>{if(J.readable)J.destroy()};var og=(J,Z,Y)=>{let $=new Map;for(let[W,{stdioItems:Q,direction:X}]of Object.entries(Z)){for(let{stream:K}of Q.filter(({type:G})=>h5.has(G)))lQ1(J,K,X,W);for(let{stream:K}of Q.filter(({type:G})=>!h5.has(G)))iQ1({subprocess:J,stream:K,direction:X,fdNumber:W,pipeGroups:$,controller:Y})}for(let[W,Q]of $.entries()){let X=Q.length===1?Q[0]:oZ(Q);kW(X,W)}},lQ1=(J,Z,Y,$)=>{if(Y==="output")kW(J.stdio[$],Z);else kW(Z,J.stdio[$]);let W=pQ1[$];if(W!==void 0)J[W]=Z;J.stdio[$]=Z},pQ1=["stdin","stdout","stderr"],iQ1=({subprocess:J,stream:Z,direction:Y,fdNumber:$,pipeGroups:W,controller:Q})=>{if(Z===void 0)return;nQ1(Z,Q);let[X,K]=Y==="output"?[Z,J.stdio[$]]:[J.stdio[$],Z],G=W.get(X)??[];W.set(X,[...G,K])},nQ1=(J,{signal:Z})=>{if(C9(J))iZ(J,aQ1,Z)},aQ1=2;import{addAbortListener as rQ1}from"events";var rZ=[];rZ.push("SIGHUP","SIGINT","SIGTERM");if(process.platform!=="win32")rZ.push("SIGALRM","SIGABRT","SIGVTALRM","SIGXCPU","SIGXFSZ","SIGUSR2","SIGTRAP","SIGSYS","SIGQUIT","SIGIOT");if(process.platform==="linux")rZ.push("SIGIO","SIGPOLL","SIGPWR","SIGSTKFLT");var Xq=(J)=>!!J&&typeof J==="object"&&typeof J.removeListener==="function"&&typeof J.emit==="function"&&typeof J.reallyExit==="function"&&typeof J.listeners==="function"&&typeof J.kill==="function"&&typeof J.pid==="number"&&typeof J.on==="function",sR=Symbol.for("signal-exit emitter"),oR=globalThis,sQ1=Object.defineProperty.bind(Object);class rg{emitted={afterExit:!1,exit:!1};listeners={afterExit:[],exit:[]};count=0;id=Math.random();constructor(){if(oR[sR])return oR[sR];sQ1(oR,sR,{value:this,writable:!1,enumerable:!1,configurable:!1})}on(J,Z){this.listeners[J].push(Z)}removeListener(J,Z){let Y=this.listeners[J],$=Y.indexOf(Z);if($===-1)return;if($===0&&Y.length===1)Y.length=0;else Y.splice($,1)}emit(J,Z,Y){if(this.emitted[J])return!1;this.emitted[J]=!0;let $=!1;for(let W of this.listeners[J])$=W(Z,Y)===!0||$;if(J==="exit")$=this.emit("afterExit",Z,Y)||$;return $}}class tR{}var oQ1=(J)=>{return{onExit(Z,Y){return J.onExit(Z,Y)},load(){return J.load()},unload(){return J.unload()}}};class tg extends tR{onExit(){return()=>{}}load(){}unload(){}}class eg extends tR{#Y=rR.platform==="win32"?"SIGINT":"SIGHUP";#$=new rg;#Z;#J;#W;#Q={};#X=!1;constructor(J){super();this.#Z=J,this.#Q={};for(let Z of rZ)this.#Q[Z]=()=>{let Y=this.#Z.listeners(Z),{count:$}=this.#$,W=J;if(typeof W.__signal_exit_emitter__==="object"&&typeof W.__signal_exit_emitter__.count==="number")$+=W.__signal_exit_emitter__.count;if(Y.length===$){this.unload();let Q=this.#$.emit("exit",null,Z),X=Z==="SIGHUP"?this.#Y:Z;if(!Q)J.kill(J.pid,X)}};this.#W=J.reallyExit,this.#J=J.emit}onExit(J,Z){if(!Xq(this.#Z))return()=>{};if(this.#X===!1)this.load();let Y=Z?.alwaysLast?"afterExit":"exit";return this.#$.on(Y,J),()=>{if(this.#$.removeListener(Y,J),this.#$.listeners.exit.length===0&&this.#$.listeners.afterExit.length===0)this.unload()}}load(){if(this.#X)return;this.#X=!0,this.#$.count+=1;for(let J of rZ)try{let Z=this.#Q[J];if(Z)this.#Z.on(J,Z)}catch(Z){}this.#Z.emit=(J,...Z)=>{return this.#K(J,...Z)},this.#Z.reallyExit=(J)=>{return this.#G(J)}}unload(){if(!this.#X)return;this.#X=!1,rZ.forEach((J)=>{let Z=this.#Q[J];if(!Z)throw new Error("Listener not defined for signal: "+J);try{this.#Z.removeListener(J,Z)}catch(Y){}}),this.#Z.emit=this.#J,this.#Z.reallyExit=this.#W,this.#$.count-=1}#G(J){if(!Xq(this.#Z))return 0;return this.#Z.exitCode=J||0,this.#$.emit("exit",this.#Z.exitCode,null),this.#W.call(this.#Z,this.#Z.exitCode)}#K(J,...Z){let Y=this.#J;if(J==="exit"&&Xq(this.#Z)){if(typeof Z[0]==="number")this.#Z.exitCode=Z[0];let $=Y.call(this.#Z,J,...Z);return this.#$.emit("exit",this.#Z.exitCode,null),$}else return Y.call(this.#Z,J,...Z)}}var rR=globalThis.process,{onExit:Jm,load:SZ6,unload:_Z6}=oQ1(Xq(rR)?new eg(rR):new tg);var Zm=(J,{cleanup:Z,detached:Y},{signal:$})=>{if(!Z||Y)return;let W=Jm(()=>{J.kill()});rQ1($,()=>{W()})};var $m=({source:J,sourcePromise:Z,boundOptions:Y,createNested:$},...W)=>{let Q=wH(),{destination:X,destinationStream:K,destinationError:G,from:z,unpipeSignal:F}=tQ1(Y,$,W),{sourceStream:V,sourceError:H}=JX1(J,z),{options:q,fileDescriptors:U}=K4.get(J);return{sourcePromise:Z,sourceStream:V,sourceOptions:q,sourceError:H,destination:X,destinationStream:K,destinationError:G,unpipeSignal:F,fileDescriptors:U,startTime:Q}},tQ1=(J,Z,Y)=>{try{let{destination:$,pipeOptions:{from:W,to:Q,unpipeSignal:X}={}}=eQ1(J,Z,...Y),K=EH($,Q);return{destination:$,destinationStream:K,from:W,unpipeSignal:X}}catch($){return{destinationError:$}}},eQ1=(J,Z,Y,...$)=>{if(Array.isArray(Y))return{destination:Z(Ym,J)(Y,...$),pipeOptions:J};if(typeof Y==="string"||Y instanceof URL||lM(Y)){if(Object.keys(J).length>0)throw new TypeError('Please use .pipe("file", ..., options) or .pipe(execa("file", ..., options)) instead of .pipe(options)("file", ...).');let[W,Q,X]=QH(Y,...$);return{destination:Z(Ym)(W,Q,X),pipeOptions:X}}if(K4.has(Y)){if(Object.keys(J).length>0)throw new TypeError("Please use .pipe(options)`command` or .pipe($(options)`command`) instead of .pipe(options)($`command`).");return{destination:Y,pipeOptions:$[0]}}throw new TypeError(`The first argument must be a template string, an options object, or an Execa subprocess: ${Y}`)},Ym=({options:J})=>({options:{...J,stdin:"pipe",piped:!0}}),JX1=(J,Z)=>{try{return{sourceStream:NW(J,Z)}}catch(Y){return{sourceError:Y}}};var Qm=({sourceStream:J,sourceError:Z,destinationStream:Y,destinationError:$,fileDescriptors:W,sourceOptions:Q,startTime:X})=>{let K=ZX1({sourceStream:J,sourceError:Z,destinationStream:Y,destinationError:$});if(K!==void 0)throw eR({error:K,fileDescriptors:W,sourceOptions:Q,startTime:X})},ZX1=({sourceStream:J,sourceError:Z,destinationStream:Y,destinationError:$})=>{if(Z!==void 0&&$!==void 0)return $;if($!==void 0)return aR(J),$;if(Z!==void 0)return nR(Y),Z},eR=({error:J,fileDescriptors:Z,sourceOptions:Y,startTime:$})=>DW({error:J,command:Wm,escapedCommand:Wm,fileDescriptors:Z,options:Y,startTime:$,isSync:!1}),Wm="source.pipe(destination)";var Xm=async(J)=>{let[{status:Z,reason:Y,value:$=Y},{status:W,reason:Q,value:X=Q}]=await J;if(!X.pipedFrom.includes($))X.pipedFrom.push($);if(W==="rejected")throw X;if(Z==="rejected")throw $;return X};import{finished as YX1}from"stream/promises";var Km=(J,Z,Y)=>{let $=Kq.has(Z)?WX1(J,Z):$X1(J,Z);return iZ(J,XX1,Y.signal),iZ(Z,KX1,Y.signal),QX1(Z),$},$X1=(J,Z)=>{let Y=oZ([J]);return kW(Y,Z),Kq.set(Z,Y),Y},WX1=(J,Z)=>{let Y=Kq.get(Z);return Y.add(J),Y},QX1=async(J)=>{try{await YX1(J,{cleanup:!0,readable:!1,writable:!0})}catch{}Kq.delete(J)},Kq=new WeakMap,XX1=2,KX1=1;import{aborted as GX1}from"util";var Gm=(J,Z)=>J===void 0?[]:[zX1(J,Z)],zX1=async(J,{sourceStream:Z,mergedStream:Y,fileDescriptors:$,sourceOptions:W,startTime:Q})=>{await GX1(J,Z),await Y.remove(Z);let X=new Error("Pipe canceled by `unpipeSignal` option.");throw eR({error:X,fileDescriptors:$,sourceOptions:W,startTime:Q})};var Gq=(J,...Z)=>{if(K8(Z[0]))return Gq.bind(void 0,{...J,boundOptions:{...J.boundOptions,...Z[0]}});let{destination:Y,...$}=$m(J,...Z),W=FX1({...$,destination:Y});return W.pipe=Gq.bind(void 0,{...J,source:Y,sourcePromise:W,boundOptions:{}}),W},FX1=async({sourcePromise:J,sourceStream:Z,sourceOptions:Y,sourceError:$,destination:W,destinationStream:Q,destinationError:X,unpipeSignal:K,fileDescriptors:G,startTime:z})=>{let F=VX1(J,W);Qm({sourceStream:Z,sourceError:$,destinationStream:Q,destinationError:X,fileDescriptors:G,sourceOptions:Y,startTime:z});let V=new AbortController;try{let H=Km(Z,Q,V);return await Promise.race([Xm(F),...Gm(K,{sourceStream:Z,mergedStream:H,sourceOptions:Y,fileDescriptors:G,startTime:z})])}finally{V.abort()}},VX1=(J,Z)=>Promise.allSettled([J,Z]);import{setImmediate as OX1}from"timers/promises";import{on as HX1}from"events";import{getDefaultHighWaterMark as qX1}from"stream";var zq=({subprocessStdout:J,subprocess:Z,binary:Y,shouldEncode:$,encoding:W,preserveNewlines:Q})=>{let X=new AbortController;return UX1(Z,X),Fm({stream:J,controller:X,binary:Y,shouldEncode:!J.readableObjectMode&&$,encoding:W,shouldSplit:!J.readableObjectMode,preserveNewlines:Q})},UX1=async(J,Z)=>{try{await J}catch{}finally{Z.abort()}},JN=({stream:J,onStreamEnd:Z,lines:Y,encoding:$,stripFinalNewline:W,allMixed:Q})=>{let X=new AbortController;wX1(Z,X,J);let K=J.readableObjectMode&&!Q;return Fm({stream:J,controller:X,binary:$==="buffer",shouldEncode:!K,encoding:$,shouldSplit:!K&&Y,preserveNewlines:!W})},wX1=async(J,Z,Y)=>{try{await J}catch{Y.destroy()}finally{Z.abort()}},Fm=({stream:J,controller:Z,binary:Y,shouldEncode:$,encoding:W,shouldSplit:Q,preserveNewlines:X})=>{let K=HX1(J,"data",{signal:Z.signal,highWaterMark:zm,highWatermark:zm});return LX1({onStdoutChunk:K,controller:Z,binary:Y,shouldEncode:$,encoding:W,shouldSplit:Q,preserveNewlines:X})},ZN=qX1(!0),zm=ZN,LX1=async function*({onStdoutChunk:J,controller:Z,binary:Y,shouldEncode:$,encoding:W,shouldSplit:Q,preserveNewlines:X}){let K=BX1({binary:Y,shouldEncode:$,encoding:W,shouldSplit:Q,preserveNewlines:X});try{for await(let[G]of J)yield*sZ(G,K,0)}catch(G){if(!Z.signal.aborted)throw G}finally{yield*uK(K)}},BX1=({binary:J,shouldEncode:Z,encoding:Y,shouldSplit:$,preserveNewlines:W})=>[Jq(J,Y,!Z),eH(J,W,!$,{})].filter(Boolean);var Vm=async({stream:J,onStreamEnd:Z,fdNumber:Y,encoding:$,buffer:W,maxBuffer:Q,lines:X,allMixed:K,stripFinalNewline:G,verboseInfo:z,streamInfo:F})=>{let V=MX1({stream:J,onStreamEnd:Z,fdNumber:Y,encoding:$,allMixed:K,verboseInfo:z,streamInfo:F});if(!W){await Promise.all([RX1(J),V]);return}let H=hR(G,Y),q=JN({stream:J,onStreamEnd:Z,lines:X,encoding:$,stripFinalNewline:H,allMixed:K}),[U]=await Promise.all([NX1({stream:J,iterable:q,fdNumber:Y,encoding:$,maxBuffer:Q,lines:X}),V]);return U},MX1=async({stream:J,onStreamEnd:Z,fdNumber:Y,encoding:$,allMixed:W,verboseInfo:Q,streamInfo:{fileDescriptors:X}})=>{if(!$q({stdioItems:X[Y]?.stdioItems,encoding:$,verboseInfo:Q,fdNumber:Y}))return;let K=JN({stream:J,onStreamEnd:Z,lines:!0,encoding:$,stripFinalNewline:!0,allMixed:W});await Og(K,J,Y,Q)},RX1=async(J)=>{if(await OX1(),J.readableFlowing===null)J.resume()},NX1=async({stream:J,stream:{readableObjectMode:Z},iterable:Y,fdNumber:$,encoding:W,maxBuffer:Q,lines:X})=>{try{if(Z||X)return await cH(Y,{maxBuffer:Q});if(W==="buffer")return new Uint8Array(await lH(Y,{maxBuffer:Q}));return await iH(Y,{maxBuffer:Q})}catch(K){return Hm(Ob({error:K,stream:J,readableObjectMode:Z,lines:X,encoding:W,fdNumber:$}))}},YN=async(J)=>{try{return await J}catch(Z){return Hm(Z)}},Hm=({bufferedData:J})=>xh(J)?new Uint8Array(J):J;import{finished as PX1}from"stream/promises";var pK=async(J,Z,Y,{isSameDirection:$,stopOnExit:W=!1}={})=>{let Q=jX1(J,Y),X=new AbortController;try{await Promise.race([...W?[Y.exitPromise]:[],PX1(J,{cleanup:!0,signal:X.signal})])}catch(K){if(!Q.stdinCleanedUp)TX1(K,Z,Y,$)}finally{X.abort()}},jX1=(J,{originalStreams:[Z],subprocess:Y})=>{let $={stdinCleanedUp:!1};if(J===Z)DX1(J,Y,$);return $},DX1=(J,Z,Y)=>{let{_destroy:$}=J;J._destroy=(...W)=>{CX1(Z,Y),$.call(J,...W)}},CX1=({exitCode:J,signalCode:Z},Y)=>{if(J!==null||Z!==null)Y.stdinCleanedUp=!0},TX1=(J,Z,Y,$)=>{if(!kX1(J,Z,Y,$))throw J},kX1=(J,Z,Y,$=!0)=>{if(Y.propagating)return qm(J)||Fq(J);return Y.propagating=!0,$N(Y,Z)===$?qm(J):Fq(J)},$N=({fileDescriptors:J},Z)=>Z!=="all"&&J[Z].direction==="input",Fq=(J)=>J?.code==="ERR_STREAM_PREMATURE_CLOSE",qm=(J)=>J?.code==="EPIPE";var Um=({subprocess:J,encoding:Z,buffer:Y,maxBuffer:$,lines:W,stripFinalNewline:Q,verboseInfo:X,streamInfo:K})=>J.stdio.map((G,z)=>WN({stream:G,fdNumber:z,encoding:Z,buffer:Y[z],maxBuffer:$[z],lines:W[z],allMixed:!1,stripFinalNewline:Q,verboseInfo:X,streamInfo:K})),WN=async({stream:J,fdNumber:Z,encoding:Y,buffer:$,maxBuffer:W,lines:Q,allMixed:X,stripFinalNewline:K,verboseInfo:G,streamInfo:z})=>{if(!J)return;let F=pK(J,Z,z);if($N(z,Z)){await F;return}let[V]=await Promise.all([Vm({stream:J,onStreamEnd:F,fdNumber:Z,encoding:Y,buffer:$,maxBuffer:W,lines:Q,allMixed:X,stripFinalNewline:K,verboseInfo:G,streamInfo:z}),F]);return V};var wm=({stdout:J,stderr:Z},{all:Y})=>Y&&(J||Z)?oZ([J,Z].filter(Boolean)):void 0,Lm=({subprocess:J,encoding:Z,buffer:Y,maxBuffer:$,lines:W,stripFinalNewline:Q,verboseInfo:X,streamInfo:K})=>WN({...EX1(J,Y),fdNumber:"all",encoding:Z,maxBuffer:$[1]+$[2],lines:W[1]||W[2],allMixed:IX1(J),stripFinalNewline:Q,verboseInfo:X,streamInfo:K}),EX1=({stdout:J,stderr:Z,all:Y},[,$,W])=>{let Q=$||W;if(!Q)return{stream:Y,buffer:Q};if(!$)return{stream:Z,buffer:Q};if(!W)return{stream:J,buffer:Q};return{stream:Y,buffer:Q}},IX1=({all:J,stdout:Z,stderr:Y})=>J&&Z&&Y&&Z.readableObjectMode!==Y.readableObjectMode;import{once as vX1}from"events";var Bm=(J)=>LW(J,"ipc"),Om=(J,Z)=>{let Y=UH(J);W4({type:"ipc",verboseMessage:Y,fdNumber:"ipc",verboseInfo:Z})};var Mm=async({subprocess:J,buffer:Z,maxBuffer:Y,ipc:$,ipcOutput:W,verboseInfo:Q})=>{if(!$)return W;let X=Bm(Q),K=K7(Z,"ipc"),G=K7(Y,"ipc");for await(let z of lR({anyProcess:J,channel:J.channel,isSubprocess:!1,ipc:$,shouldAwait:!1,reference:!0})){if(K)Mb(J,W,G),W.push(z);if(X)Om(z,Q)}return W},Rm=async(J,Z)=>{return await Promise.allSettled([J]),Z};var Nm=async({subprocess:J,options:{encoding:Z,buffer:Y,maxBuffer:$,lines:W,timeoutDuration:Q,cancelSignal:X,gracefulCancel:K,forceKillAfterDelay:G,stripFinalNewline:z,ipc:F,ipcInput:V},context:H,verboseInfo:q,fileDescriptors:U,originalStreams:L,onInternalError:w,controller:O})=>{let R=jg(J,H),N={originalStreams:L,fileDescriptors:U,subprocess:J,exitPromise:R,propagating:!1},P=Um({subprocess:J,encoding:Z,buffer:Y,maxBuffer:$,lines:W,stripFinalNewline:z,verboseInfo:q,streamInfo:N}),D=Lm({subprocess:J,encoding:Z,buffer:Y,maxBuffer:$,lines:W,stripFinalNewline:z,verboseInfo:q,streamInfo:N}),j=[],C=Mm({subprocess:J,buffer:Y,maxBuffer:$,ipc:F,ipcOutput:j,verboseInfo:q}),k=SX1(L,J,N),I=_X1(U,N);try{return await Promise.race([Promise.all([{},Cg(R),Promise.all(P),D,C,oy(J,V),...k,...I]),w,xX1(J,O),...py(J,Q,H,O),...Hy({subprocess:J,cancelSignal:X,gracefulCancel:K,context:H,controller:O}),...cy({subprocess:J,cancelSignal:X,gracefulCancel:K,forceKillAfterDelay:G,context:H,controller:O})])}catch(A){return H.terminationReason??="other",Promise.all([{error:A},R,Promise.all(P.map((v)=>YN(v))),YN(D),Rm(C,j),Promise.allSettled(k),Promise.allSettled(I)])}},SX1=(J,Z,Y)=>J.map(($,W)=>$===Z.stdio[W]?void 0:pK($,W,Y)),_X1=(J,Z)=>J.flatMap(({stdioItems:Y},$)=>Y.filter(({value:W,stream:Q=W})=>k9(Q,{checkOpen:!1})&&!C9(Q)).map(({type:W,value:Q,stream:X=Q})=>pK(X,$,Z,{isSameDirection:h5.has(W),stopOnExit:W==="native"}))),xX1=async(J,{signal:Z})=>{let[Y]=await vX1(J,"error",{signal:Z});throw Y};var Pm=()=>({readableDestroy:new WeakMap,writableFinal:new WeakMap,writableDestroy:new WeakMap}),iK=(J,Z,Y)=>{let $=J[Y];if(!$.has(Z))$.set(Z,[]);let W=$.get(Z),Q=X4();return W.push(Q),{resolve:Q.resolve.bind(Q),promises:W}},EW=async({resolve:J,promises:Z},Y)=>{J();let[$]=await Promise.race([Promise.allSettled([!0,Y]),Promise.all([!1,...Z])]);return!$};import{Readable as AX1}from"stream";import{callbackify as hX1}from"util";import{finished as jm}from"stream/promises";var QN=async(J)=>{if(J===void 0)return;try{await XN(J)}catch{}},Dm=async(J)=>{if(J===void 0)return;try{await KN(J)}catch{}},XN=async(J)=>{await jm(J,{cleanup:!0,readable:!1,writable:!0})},KN=async(J)=>{await jm(J,{cleanup:!0,readable:!0,writable:!1})},Vq=async(J,Z)=>{if(await J,Z)throw Z},Hq=(J,Z,Y)=>{if(Y&&!Fq(Y))J.destroy(Y);else if(Z)J.destroy()};var Cm=({subprocess:J,concurrentStreams:Z,encoding:Y},{from:$,binary:W=!0,preserveNewlines:Q=!0}={})=>{let X=W||U5.has(Y),{subprocessStdout:K,waitReadableDestroy:G}=GN(J,$,Z),{readableEncoding:z,readableObjectMode:F,readableHighWaterMark:V}=zN(K,X),{read:H,onStdoutDataDone:q}=FN({subprocessStdout:K,subprocess:J,binary:X,encoding:Y,preserveNewlines:Q}),U=new AX1({read:H,destroy:hX1(HN.bind(void 0,{subprocessStdout:K,subprocess:J,waitReadableDestroy:G})),highWaterMark:V,objectMode:F,encoding:z});return VN({subprocessStdout:K,onStdoutDataDone:q,readable:U,subprocess:J}),U},GN=(J,Z,Y)=>{let $=NW(J,Z),W=iK(Y,$,"readableDestroy");return{subprocessStdout:$,waitReadableDestroy:W}},zN=({readableEncoding:J,readableObjectMode:Z,readableHighWaterMark:Y},$)=>$?{readableEncoding:J,readableObjectMode:Z,readableHighWaterMark:Y}:{readableEncoding:J,readableObjectMode:!0,readableHighWaterMark:ZN},FN=({subprocessStdout:J,subprocess:Z,binary:Y,encoding:$,preserveNewlines:W})=>{let Q=X4(),X=zq({subprocessStdout:J,subprocess:Z,binary:Y,shouldEncode:!Y,encoding:$,preserveNewlines:W});return{read(){fX1(this,X,Q)},onStdoutDataDone:Q}},fX1=async(J,Z,Y)=>{try{let{value:$,done:W}=await Z.next();if(W)Y.resolve();else J.push($)}catch{}},VN=async({subprocessStdout:J,onStdoutDataDone:Z,readable:Y,subprocess:$,subprocessStdin:W})=>{try{if(await KN(J),await $,await QN(W),await Z,Y.readable)Y.push(null)}catch(Q){await QN(W),Tm(Y,Q)}},HN=async({subprocessStdout:J,subprocess:Z,waitReadableDestroy:Y},$)=>{if(await EW(Y,Z))Tm(J,$),await Vq(Z,$)},Tm=(J,Z)=>{Hq(J,J.readable,Z)};import{Writable as yX1}from"stream";import{callbackify as km}from"util";var Em=({subprocess:J,concurrentStreams:Z},{to:Y}={})=>{let{subprocessStdin:$,waitWritableFinal:W,waitWritableDestroy:Q}=qN(J,Y,Z),X=new yX1({...UN($,J,W),destroy:km(LN.bind(void 0,{subprocessStdin:$,subprocess:J,waitWritableFinal:W,waitWritableDestroy:Q})),highWaterMark:$.writableHighWaterMark,objectMode:$.writableObjectMode});return wN($,X),X},qN=(J,Z,Y)=>{let $=EH(J,Z),W=iK(Y,$,"writableFinal"),Q=iK(Y,$,"writableDestroy");return{subprocessStdin:$,waitWritableFinal:W,waitWritableDestroy:Q}},UN=(J,Z,Y)=>({write:bX1.bind(void 0,J),final:km(gX1.bind(void 0,J,Z,Y))}),bX1=(J,Z,Y,$)=>{if(J.write(Z,Y))$();else J.once("drain",$)},gX1=async(J,Z,Y)=>{if(await EW(Y,Z)){if(J.writable)J.end();await Z}},wN=async(J,Z,Y)=>{try{if(await XN(J),Z.writable)Z.end()}catch($){await Dm(Y),Im(Z,$)}},LN=async({subprocessStdin:J,subprocess:Z,waitWritableFinal:Y,waitWritableDestroy:$},W)=>{if(await EW(Y,Z),await EW($,Z))Im(J,W),await Vq(Z,W)},Im=(J,Z)=>{Hq(J,J.writable,Z)};import{Duplex as mX1}from"stream";import{callbackify as uX1}from"util";var vm=({subprocess:J,concurrentStreams:Z,encoding:Y},{from:$,to:W,binary:Q=!0,preserveNewlines:X=!0}={})=>{let K=Q||U5.has(Y),{subprocessStdout:G,waitReadableDestroy:z}=GN(J,$,Z),{subprocessStdin:F,waitWritableFinal:V,waitWritableDestroy:H}=qN(J,W,Z),{readableEncoding:q,readableObjectMode:U,readableHighWaterMark:L}=zN(G,K),{read:w,onStdoutDataDone:O}=FN({subprocessStdout:G,subprocess:J,binary:K,encoding:Y,preserveNewlines:X}),R=new mX1({read:w,...UN(F,J,V),destroy:uX1(dX1.bind(void 0,{subprocessStdout:G,subprocessStdin:F,subprocess:J,waitReadableDestroy:z,waitWritableFinal:V,waitWritableDestroy:H})),readableHighWaterMark:L,writableHighWaterMark:F.writableHighWaterMark,readableObjectMode:U,writableObjectMode:F.writableObjectMode,encoding:q});return VN({subprocessStdout:G,onStdoutDataDone:O,readable:R,subprocess:J,subprocessStdin:F}),wN(F,R,G),R},dX1=async({subprocessStdout:J,subprocessStdin:Z,subprocess:Y,waitReadableDestroy:$,waitWritableFinal:W,waitWritableDestroy:Q},X)=>{await Promise.all([HN({subprocessStdout:J,subprocess:Y,waitReadableDestroy:$},X),LN({subprocessStdin:Z,subprocess:Y,waitWritableFinal:W,waitWritableDestroy:Q},X)])};var BN=(J,Z,{from:Y,binary:$=!1,preserveNewlines:W=!1}={})=>{let Q=$||U5.has(Z),X=NW(J,Y),K=zq({subprocessStdout:X,subprocess:J,binary:Q,shouldEncode:!0,encoding:Z,preserveNewlines:W});return cX1(K,X,J)},cX1=async function*(J,Z,Y){try{yield*J}finally{if(Z.readable)Z.destroy();await Y}};var Sm=(J,{encoding:Z})=>{let Y=Pm();J.readable=Cm.bind(void 0,{subprocess:J,concurrentStreams:Y,encoding:Z}),J.writable=Em.bind(void 0,{subprocess:J,concurrentStreams:Y}),J.duplex=vm.bind(void 0,{subprocess:J,concurrentStreams:Y,encoding:Z}),J.iterable=BN.bind(void 0,J,Z),J[Symbol.asyncIterator]=BN.bind(void 0,J,Z,{})};var _m=(J,Z)=>{for(let[Y,$]of pX1){let W=$.value.bind(Z);Reflect.defineProperty(J,Y,{...$,value:W})}},lX1=(async()=>{})().constructor.prototype,pX1=["then","catch","finally"].map((J)=>[J,Reflect.getOwnPropertyDescriptor(lX1,J)]);var xm=(J,Z,Y,$)=>{let{file:W,commandArguments:Q,command:X,escapedCommand:K,startTime:G,verboseInfo:z,options:F,fileDescriptors:V}=aX1(J,Z,Y),{subprocess:H,promise:q}=oX1({file:W,commandArguments:Q,options:F,startTime:G,verboseInfo:z,command:X,escapedCommand:K,fileDescriptors:V});return H.pipe=Gq.bind(void 0,{source:H,sourcePromise:q,boundOptions:{},createNested:$}),_m(H,q),K4.set(H,{options:F,fileDescriptors:V}),H},aX1=(J,Z,Y)=>{let{command:$,escapedCommand:W,startTime:Q,verboseInfo:X}=LH(J,Z,Y),{file:K,commandArguments:G,options:z}=gH(J,Z,Y),F=sX1(z),V=mg(F,X);return{file:K,commandArguments:G,command:$,escapedCommand:W,startTime:Q,verboseInfo:X,options:F,fileDescriptors:V}},sX1=({timeout:J,signal:Z,...Y})=>{if(Z!==void 0)throw new TypeError('The "signal" option has been renamed to "cancelSignal" instead.');return{...Y,timeoutDuration:J}},oX1=({file:J,commandArguments:Z,options:Y,startTime:$,verboseInfo:W,command:Q,escapedCommand:X,fileDescriptors:K})=>{let G;try{G=nX1(J,Z,Y)}catch(U){return fg({error:U,command:Q,escapedCommand:X,fileDescriptors:K,options:Y,startTime:$,verboseInfo:W})}let z=new AbortController;iX1(Number.POSITIVE_INFINITY,z.signal);let F=[...G.stdio];og(G,K,z),Zm(G,Y,z);let V={},H=X4();G.kill=Fy.bind(void 0,{kill:G.kill.bind(G),options:Y,onInternalError:H,context:V,controller:z}),G.all=wm(G,Y),Sm(G,Y),xg(G,Y);let q=rX1({subprocess:G,options:Y,startTime:$,verboseInfo:W,fileDescriptors:K,originalStreams:F,command:Q,escapedCommand:X,context:V,onInternalError:H,controller:z});return{subprocess:G,promise:q}},rX1=async({subprocess:J,options:Z,startTime:Y,verboseInfo:$,fileDescriptors:W,originalStreams:Q,command:X,escapedCommand:K,context:G,onInternalError:z,controller:F})=>{let[V,[H,q],U,L,w]=await Nm({subprocess:J,options:Z,context:G,verboseInfo:$,fileDescriptors:W,originalStreams:Q,onInternalError:z,controller:F});F.abort(),z.resolve();let O=U.map((P,D)=>F7(P,Z,D)),R=F7(L,Z,"all"),N=tX1({errorInfo:V,exitCode:H,signal:q,stdio:O,all:R,ipcOutput:w,context:G,options:Z,command:X,escapedCommand:K,startTime:Y});return CW(N,$,Z)},tX1=({errorInfo:J,exitCode:Z,signal:Y,stdio:$,all:W,ipcOutput:Q,context:X,options:K,command:G,escapedCommand:z,startTime:F})=>("error"in J)?mK({error:J.error,command:G,escapedCommand:z,timedOut:X.terminationReason==="timeout",isCanceled:X.terminationReason==="cancel"||X.terminationReason==="gracefulCancel",isGracefullyCanceled:X.terminationReason==="gracefulCancel",isMaxBuffer:J.error instanceof G7,isForcefullyTerminated:X.isForcefullyTerminated,exitCode:Z,signal:Y,stdio:$,all:W,ipcOutput:Q,options:K,startTime:F,isSync:!1}):aH({command:G,escapedCommand:z,stdio:$,all:W,ipcOutput:Q,options:K,startTime:F});var qq=(J,Z)=>{let Y=Object.fromEntries(Object.entries(Z).map(([$,W])=>[$,eX1($,J[$],W)]));return{...J,...Y}},eX1=(J,Z,Y)=>{if(JK1.has(J)&&K8(Z)&&K8(Y))return{...Z,...Y};return Y},JK1=new Set(["env",...oM]);var GJ=(J,Z,Y,$)=>{let W=(X,K,G)=>GJ(X,K,Y,G),Q=(...X)=>ZK1({mapArguments:J,deepOptions:Y,boundOptions:Z,setBoundExeca:$,createNested:W},...X);if($!==void 0)$(Q,W,Z);return Q},ZK1=({mapArguments:J,deepOptions:Z={},boundOptions:Y={},setBoundExeca:$,createNested:W},Q,...X)=>{if(K8(Q))return W(J,qq(Y,Q),$);let{file:K,commandArguments:G,options:z,isSync:F}=YK1({mapArguments:J,firstArgument:Q,nextArguments:X,deepOptions:Z,boundOptions:Y});return F?kg(K,G,z):xm(K,G,z,W)},YK1=({mapArguments:J,firstArgument:Z,nextArguments:Y,deepOptions:$,boundOptions:W})=>{let Q=gh(Z)?mh(Z,Y):[Z,...Y],[X,K,G]=QH(...Q),z=qq(qq($,W),G),{file:F=X,commandArguments:V=K,options:H=z,isSync:q=!1}=J({file:X,commandArguments:K,options:z});return{file:F,commandArguments:V,options:H,isSync:q}};var Am=({file:J,commandArguments:Z})=>fm(J,Z),hm=({file:J,commandArguments:Z})=>({...fm(J,Z),isSync:!0}),fm=(J,Z)=>{if(Z.length>0)throw new TypeError(`The command and its arguments must be passed as a single string: ${J} ${Z}.`);let[Y,...$]=$K1(J);return{file:Y,commandArguments:$}},$K1=(J)=>{if(typeof J!=="string")throw new TypeError(`The command must be a string: ${String(J)}.`);let Z=J.trim();if(Z==="")return[];let Y=[];for(let $ of Z.split(WK1)){let W=Y.at(-1);if(W&&W.endsWith("\\"))Y[Y.length-1]=`${W.slice(0,-1)} ${$}`;else Y.push($)}return Y},WK1=/ +/g;var ym=(J,Z,Y)=>{J.sync=Z(QK1,Y),J.s=J.sync},bm=({options:J})=>gm(J),QK1=({options:J})=>({...gm(J),isSync:!0}),gm=(J)=>({options:{...XK1(J),...J}}),XK1=({input:J,inputFile:Z,stdio:Y})=>J===void 0&&Z===void 0&&Y===void 0?{stdin:"inherit"}:{},mm={preferLocal:!0};var um=GJ(()=>({})),RW6=GJ(()=>({isSync:!0})),NW6=GJ(Am),PW6=GJ(hm),jW6=GJ(ny),DW6=GJ(bm,{},mm,ym),{sendMessage:CW6,getOneMessage:TW6,getEachMessage:kW6,getCancelSignal:EW6}=Ag();var{Glob:DU1}=globalThis.Bun;class ON{constructor(){this._listeners={}}addEventListener(J,Z){let Y=this._listeners;if(Y[J]===void 0)Y[J]=[];if(Y[J].indexOf(Z)===-1)Y[J].push(Z);return this}removeEventListener(J,Z){let $=this._listeners[J];if($!==void 0){let W=$.indexOf(Z);if(W!==-1)$.splice(W,1)}return this}dispatchEvent(J){let Y=this._listeners[J.type];if(Y!==void 0){let $=Y.slice(0);for(let W=0,Q=$.length;W<Q;W++)$[W].call(this,J)}return this}dispose(){for(let J in this._listeners)delete this._listeners[J]}}class p6{constructor(J,Z,Y,$={}){if(this._name=void 0,this._parent=void 0,this._child=void 0,this._attributes=void 0,this._disposed=!1,this._name=J,this._parent=Z,this._child=Y,this._attributes=$,!Z.isOnGraph(Y))throw new Error("Cannot connect disconnected graphs.")}getName(){return this._name}getParent(){return this._parent}getChild(){return this._child}setChild(J){return this._child=J,this}getAttributes(){return this._attributes}dispose(){if(this._disposed)return;this._parent._destroyRef(this),this._disposed=!0}isDisposed(){return this._disposed}}class IW extends ON{constructor(...J){super(...J);this._emptySet=new Set,this._edges=new Set,this._parentEdges=new Map,this._childEdges=new Map}listEdges(){return Array.from(this._edges)}listParentEdges(J){return Array.from(this._childEdges.get(J)||this._emptySet)}listParents(J){let Z=new Set;for(let Y of this.listParentEdges(J))Z.add(Y.getParent());return Array.from(Z)}listChildEdges(J){return Array.from(this._parentEdges.get(J)||this._emptySet)}listChildren(J){let Z=new Set;for(let Y of this.listChildEdges(J))Z.add(Y.getChild());return Array.from(Z)}disconnectParents(J,Z){for(let Y of this.listParentEdges(J))if(!Z||Z(Y.getParent()))Y.dispose();return this}_createEdge(J,Z,Y,$){let W=new p6(J,Z,Y,$);this._edges.add(W);let Q=W.getParent();if(!this._parentEdges.has(Q))this._parentEdges.set(Q,new Set);this._parentEdges.get(Q).add(W);let X=W.getChild();if(!this._childEdges.has(X))this._childEdges.set(X,new Set);return this._childEdges.get(X).add(W),W}_destroyEdge(J){return this._edges.delete(J),this._parentEdges.get(J.getParent()).delete(J),this._childEdges.get(J.getChild()).delete(J),this}}function nK(){return nK=Object.assign||function(J){for(var Z=1;Z<arguments.length;Z++){var Y=arguments[Z];for(var $ in Y)if(Object.prototype.hasOwnProperty.call(Y,$))J[$]=Y[$]}return J},nK.apply(this,arguments)}class Z6{constructor(J){if(this.list=[],J)for(let Z of J)this.list.push(Z)}add(J){this.list.push(J)}remove(J){let Z=this.list.indexOf(J);if(Z>=0)this.list.splice(Z,1)}removeChild(J){let Z=[];for(let Y of this.list)if(Y.getChild()===J)Z.push(Y);for(let Y of Z)this.remove(Y);return Z}listRefsByChild(J){let Z=[];for(let Y of this.list)if(Y.getChild()===J)Z.push(Y);return Z}values(){return this.list}}class w0{constructor(J){if(this.set=new Set,this.map=new Map,J)for(let Z of J)this.add(Z)}add(J){let Z=J.getChild();this.removeChild(Z),this.set.add(J),this.map.set(Z,J)}remove(J){this.set.delete(J),this.map.delete(J.getChild())}removeChild(J){let Z=this.map.get(J)||null;if(Z)this.remove(Z);return Z}getRefByChild(J){return this.map.get(J)||null}values(){return Array.from(this.set)}}class u1{constructor(J){if(this.map={},J)Object.assign(this.map,J)}set(J,Z){this.map[J]=Z}delete(J){delete this.map[J]}get(J){return this.map[J]||null}keys(){return Object.keys(this.map)}values(){return Object.values(this.map)}}var C0=Symbol("attributes"),E9=Symbol("immutableKeys");class vW extends ON{constructor(J){super();this._disposed=!1,this.graph=void 0,this[C0]=void 0,this[E9]=void 0,this.graph=J,this[E9]=new Set,this[C0]=this._createAttributes()}getDefaults(){return{}}_createAttributes(){let J=this.getDefaults(),Z={};for(let Y in J){let $=J[Y];if($ instanceof vW){let W=this.graph._createEdge(Y,this,$);this[E9].add(Y),Z[Y]=W}else Z[Y]=$}return Z}isOnGraph(J){return this.graph===J.graph}isDisposed(){return this._disposed}dispose(){if(this._disposed)return;this.graph.listChildEdges(this).forEach((J)=>J.dispose()),this.graph.disconnectParents(this),this._disposed=!0,this.dispatchEvent({type:"dispose"})}detach(){return this.graph.disconnectParents(this),this}swap(J,Z){for(let Y in this[C0]){let $=this[C0][Y];if($ instanceof p6){let W=$;if(W.getChild()===J)this.setRef(Y,Z,W.getAttributes())}else if($ instanceof Z6)for(let W of $.listRefsByChild(J)){let Q=W.getAttributes();this.removeRef(Y,J),this.addRef(Y,Z,Q)}else if($ instanceof w0){let W=$.getRefByChild(J);if(W){let Q=W.getAttributes();this.removeRef(Y,J),this.addRef(Y,Z,Q)}}else if($ instanceof u1)for(let W of $.keys()){let Q=$.get(W);if(Q.getChild()===J)this.setRefMap(Y,W,Z,Q.getAttributes())}}return this}get(J){return this[C0][J]}set(J,Z){return this[C0][J]=Z,this.dispatchEvent({type:"change",attribute:J})}getRef(J){let Z=this[C0][J];return Z?Z.getChild():null}setRef(J,Z,Y){if(this[E9].has(J))throw new Error(`Cannot overwrite immutable attribute, "${J}".`);let $=this[C0][J];if($)$.dispose();if(!Z)return this;let W=this.graph._createEdge(J,this,Z,Y);return this[C0][J]=W,this.dispatchEvent({type:"change",attribute:J})}listRefs(J){return this.assertRefList(J).values().map((Y)=>Y.getChild())}addRef(J,Z,Y){let $=this.graph._createEdge(J,this,Z,Y);return this.assertRefList(J).add($),this.dispatchEvent({type:"change",attribute:J})}removeRef(J,Z){let Y=this.assertRefList(J);if(Y instanceof Z6)for(let $ of Y.listRefsByChild(Z))$.dispose();else{let $=Y.getRefByChild(Z);if($)$.dispose()}return this}assertRefList(J){let Z=this[C0][J];if(Z instanceof Z6||Z instanceof w0)return Z;throw new Error(`Expected RefList or RefSet for attribute "${J}"`)}listRefMapKeys(J){return this.assertRefMap(J).keys()}listRefMapValues(J){return this.assertRefMap(J).values().map((Z)=>Z.getChild())}getRefMap(J,Z){let $=this.assertRefMap(J).get(Z);return $?$.getChild():null}setRefMap(J,Z,Y,$){let W=this.assertRefMap(J),Q=W.get(Z);if(Q)Q.dispose();if(!Y)return this;$=Object.assign($||{},{key:Z});let X=this.graph._createEdge(J,this,Y,nK({},$,{key:Z}));return W.set(Z,X),this.dispatchEvent({type:"change",attribute:J,key:Z})}assertRefMap(J){let Z=this[C0][J];if(Z instanceof u1)return Z;throw new Error(`Expected RefMap for attribute "${J}"`)}dispatchEvent(J){return super.dispatchEvent(nK({},J,{target:this})),this.graph.dispatchEvent(nK({},J,{target:this,type:`node:${J.type}`})),this}_destroyRef(J){let Z=J.getName();if(this[C0][Z]===J){if(this[C0][Z]=null,this[E9].has(Z))J.getChild().dispose()}else if(this[C0][Z]instanceof Z6)this[C0][Z].remove(J);else if(this[C0][Z]instanceof w0)this[C0][Z].remove(J);else if(this[C0][Z]instanceof u1){let Y=this[C0][Z];for(let $ of Y.keys())if(Y.get($)===J)Y.delete($)}else return;this.graph._destroyEdge(J),this.dispatchEvent({type:"change",attribute:Z})}}var am="v4.1.1",Mq="@glb.bin",c;(function(J){J.ACCESSOR="Accessor",J.ANIMATION="Animation",J.ANIMATION_CHANNEL="AnimationChannel",J.ANIMATION_SAMPLER="AnimationSampler",J.BUFFER="Buffer",J.CAMERA="Camera",J.MATERIAL="Material",J.MESH="Mesh",J.PRIMITIVE="Primitive",J.PRIMITIVE_TARGET="PrimitiveTarget",J.NODE="Node",J.ROOT="Root",J.SCENE="Scene",J.SKIN="Skin",J.TEXTURE="Texture",J.TEXTURE_INFO="TextureInfo"})(c||(c={}));var Rq;(function(J){J.INTERLEAVED="interleaved",J.SEPARATE="separate"})(Rq||(Rq={}));var w5;(function(J){J.ARRAY_BUFFER="ARRAY_BUFFER",J.ELEMENT_ARRAY_BUFFER="ELEMENT_ARRAY_BUFFER",J.INVERSE_BIND_MATRICES="INVERSE_BIND_MATRICES",J.OTHER="OTHER",J.SPARSE="SPARSE"})(w5||(w5={}));var Nq;(function(J){J[J.R=4096]="R",J[J.G=256]="G",J[J.B=16]="B",J[J.A=1]="A"})(Nq||(Nq={}));var V7;(function(J){J.GLTF="GLTF",J.GLB="GLB"})(V7||(V7={}));var VJ={"5120":Int8Array,"5121":Uint8Array,"5122":Int16Array,"5123":Uint16Array,"5125":Uint32Array,"5126":Float32Array},RN=typeof Float32Array!=="undefined"?Float32Array:Array;if(!Math.hypot)Math.hypot=function(){var J=0,Z=arguments.length;while(Z--)J+=arguments[Z]*arguments[Z];return Math.sqrt(J)};function KK1(){var J=new RN(3);if(RN!=Float32Array)J[0]=0,J[1]=0,J[2]=0;return J}function MN(J){var Z=J[0],Y=J[1],$=J[2];return Math.hypot(Z,Y,$)}function GK1(J,Z,Y){var $=Z[0],W=Z[1],Q=Z[2],X=Y[3]*$+Y[7]*W+Y[11]*Q+Y[15];return X=X||1,J[0]=(Y[0]*$+Y[4]*W+Y[8]*Q+Y[12])/X,J[1]=(Y[1]*$+Y[5]*W+Y[9]*Q+Y[13])/X,J[2]=(Y[2]*$+Y[6]*W+Y[10]*Q+Y[14])/X,J}(function(){var J=KK1();return function(Z,Y,$,W,Q,X){var K,G;if(!Y)Y=3;if(!$)$=0;if(W)G=Math.min(W*Y+$,Z.length);else G=Z.length;for(K=$;K<G;K+=Y)J[0]=Z[K],J[1]=Z[K+1],J[2]=Z[K+2],Q(J,J,X),Z[K]=J[0],Z[K+1]=J[1],Z[K+2]=J[2];return Z}})();function DN(J){let Z=sm(),Y=J.propertyType===c.NODE?[J]:J.listChildren();for(let $ of Y)$.traverse((W)=>{let Q=W.getMesh();if(!Q)return;let X=zK1(Q,W.getWorldMatrix());if(X.min.every(isFinite)&&X.max.every(isFinite))NN(X.min,Z),NN(X.max,Z)});return Z}function zK1(J,Z){let Y=sm();for(let $ of J.listPrimitives()){let W=$.getAttribute("POSITION"),Q=$.getIndices();if(!W)continue;let X=[0,0,0],K=[0,0,0];for(let G=0,z=Q?Q.getCount():W.getCount();G<z;G++){let F=Q?Q.getScalar(G):G;X=W.getElement(F,X),K=GK1(K,X,Z),NN(K,Y)}}return Y}function NN(J,Z){for(let Y=0;Y<3;Y++)Z.min[Y]=Math.min(J[Y],Z.min[Y]),Z.max[Y]=Math.max(J[Y],Z.max[Y])}function sm(){return{min:[1/0,1/0,1/0],max:[-1/0,-1/0,-1/0]}}class m0{static createBufferFromDataURI(J){if(typeof Buffer==="undefined"){let Z=atob(J.split(",")[1]),Y=new Uint8Array(Z.length);for(let $=0;$<Z.length;$++)Y[$]=Z.charCodeAt($);return Y}else{let Z=J.split(",")[1],Y=J.indexOf("base64")>=0;return Buffer.from(Z,Y?"base64":"utf8")}}static encodeText(J){return new TextEncoder().encode(J)}static decodeText(J){return new TextDecoder().decode(J)}static concat(J){let Z=0;for(let W of J)Z+=W.byteLength;let Y=new Uint8Array(Z),$=0;for(let W of J)Y.set(W,$),$+=W.byteLength;return Y}static pad(J,Z=0){let Y=this.padNumber(J.byteLength);if(Y===J.byteLength)return J;let $=new Uint8Array(Y);if($.set(J),Z!==0)for(let W=J.byteLength;W<Y;W++)$[W]=Z;return $}static padNumber(J){return Math.ceil(J/4)*4}static equals(J,Z){if(J===Z)return!0;if(J.byteLength!==Z.byteLength)return!1;let Y=J.byteLength;while(Y--)if(J[Y]!==Z[Y])return!1;return!0}static toView(J,Z=0,Y=1/0){return new Uint8Array(J.buffer,J.byteOffset+Z,Math.min(J.byteLength,Y))}static assertView(J){if(J&&!ArrayBuffer.isView(J))throw new Error(`Method requires Uint8Array parameter; received "${typeof J}".`);return J}}class CN{static hexToFactor(J,Z){J=Math.floor(J);let Y=Z;return Y[0]=(J>>16&255)/255,Y[1]=(J>>8&255)/255,Y[2]=(J&255)/255,this.convertSRGBToLinear(Z,Z)}static factorToHex(J){let Z=[...J],[Y,$,W]=this.convertLinearToSRGB(J,Z);return Y*255<<16^$*255<<8^W*255<<0}static convertSRGBToLinear(J,Z){let Y=J,$=Z;for(let W=0;W<3;W++)$[W]=Y[W]<0.04045?Y[W]*0.0773993808:Math.pow(Y[W]*0.9478672986+0.0521327014,2.4);return Z}static convertLinearToSRGB(J,Z){let Y=J,$=Z;for(let W=0;W<3;W++)$[W]=Y[W]<0.0031308?Y[W]*12.92:1.055*Math.pow(Y[W],0.41666)-0.055;return Z}}class om{match(J){return J.length>=3&&J[0]===255&&J[1]===216&&J[2]===255}getSize(J){let Z=new DataView(J.buffer,J.byteOffset+4),Y,$;while(Z.byteLength){if(Y=Z.getUint16(0,!1),FK1(Z,Y),$=Z.getUint8(Y+1),$===192||$===193||$===194)return[Z.getUint16(Y+7,!1),Z.getUint16(Y+5,!1)];Z=new DataView(J.buffer,Z.byteOffset+Y+2)}throw new TypeError("Invalid JPG, no size found")}getChannels(J){return 3}}class Dq{match(J){return J.length>=8&&J[0]===137&&J[1]===80&&J[2]===78&&J[3]===71&&J[4]===13&&J[5]===10&&J[6]===26&&J[7]===10}getSize(J){let Z=new DataView(J.buffer,J.byteOffset);if(m0.decodeText(J.slice(12,16))===Dq.PNG_FRIED_CHUNK_NAME)return[Z.getUint32(32,!1),Z.getUint32(36,!1)];return[Z.getUint32(16,!1),Z.getUint32(20,!1)]}getChannels(J){return 4}}Dq.PNG_FRIED_CHUNK_NAME="CgBI";class H7{static registerFormat(J,Z){this.impls[J]=Z}static getMimeType(J){for(let Z in this.impls)if(this.impls[Z].match(J))return Z;return null}static getSize(J,Z){if(!this.impls[Z])return null;return this.impls[Z].getSize(J)}static getChannels(J,Z){if(!this.impls[Z])return null;return this.impls[Z].getChannels(J)}static getVRAMByteLength(J,Z){if(!this.impls[Z])return null;if(this.impls[Z].getVRAMByteLength)return this.impls[Z].getVRAMByteLength(J);let Y=0,$=4,W=this.getSize(J,Z);if(!W)return null;while(W[0]>1||W[1]>1)Y+=W[0]*W[1]*$,W[0]=Math.max(Math.floor(W[0]/2),1),W[1]=Math.max(Math.floor(W[1]/2),1);return Y+=1*$,Y}static mimeTypeToExtension(J){if(J==="image/jpeg")return"jpg";return J.split("/").pop()}static extensionToMimeType(J){if(J==="jpg")return"image/jpeg";if(!J)return"";return`image/${J}`}}H7.impls={"image/jpeg":new om,"image/png":new Dq};function FK1(J,Z){if(Z>J.byteLength)throw new TypeError("Corrupt JPG, exceeded buffer limits");if(J.getUint8(Z)!==255)throw new TypeError("Invalid JPG, marker table corrupted");return J}class q7{static basename(J){let Z=J.split(/[\\/]/).pop();return Z.substring(0,Z.lastIndexOf("."))}static extension(J){if(J.startsWith("data:image/")){let Z=J.match(/data:(image\/\w+)/)[1];return H7.mimeTypeToExtension(Z)}else if(J.startsWith("data:model/gltf+json"))return"gltf";else if(J.startsWith("data:model/gltf-binary"))return"glb";else if(J.startsWith("data:application/"))return"bin";return J.split(/[\\/]/).pop().split(/[.]/).pop()}}function dm(J){return Object.prototype.toString.call(J)==="[object Object]"}function tZ(J){if(dm(J)===!1)return!1;let Z=J.constructor;if(Z===void 0)return!0;let Y=Z.prototype;if(dm(Y)===!1)return!1;if(Object.prototype.hasOwnProperty.call(Y,"isPrototypeOf")===!1)return!1;return!0}var PN,aK;(function(J){J[J.SILENT=4]="SILENT",J[J.ERROR=3]="ERROR",J[J.WARN=2]="WARN",J[J.INFO=1]="INFO",J[J.DEBUG=0]="DEBUG"})(aK||(aK={}));class n6{constructor(J){this.verbosity=void 0,this.verbosity=J}debug(J){if(this.verbosity<=n6.Verbosity.DEBUG)console.debug(J)}info(J){if(this.verbosity<=n6.Verbosity.INFO)console.info(J)}warn(J){if(this.verbosity<=n6.Verbosity.WARN)console.warn(J)}error(J){if(this.verbosity<=n6.Verbosity.ERROR)console.error(J)}}PN=n6;n6.Verbosity=aK;n6.DEFAULT_INSTANCE=new PN(PN.Verbosity.INFO);function VK1(J){var Z=J[0],Y=J[1],$=J[2],W=J[3],Q=J[4],X=J[5],K=J[6],G=J[7],z=J[8],F=J[9],V=J[10],H=J[11],q=J[12],U=J[13],L=J[14],w=J[15],O=Z*X-Y*Q,R=Z*K-$*Q,N=Z*G-W*Q,P=Y*K-$*X,D=Y*G-W*X,j=$*G-W*K,C=z*U-F*q,k=z*L-V*q,I=z*w-H*q,A=F*L-V*U,v=F*w-H*U,x=V*w-H*L;return O*x-R*v+N*A+P*I-D*k+j*C}function HK1(J,Z,Y){var $=Z[0],W=Z[1],Q=Z[2],X=Z[3],K=Z[4],G=Z[5],z=Z[6],F=Z[7],V=Z[8],H=Z[9],q=Z[10],U=Z[11],L=Z[12],w=Z[13],O=Z[14],R=Z[15],N=Y[0],P=Y[1],D=Y[2],j=Y[3];return J[0]=N*$+P*K+D*V+j*L,J[1]=N*W+P*G+D*H+j*w,J[2]=N*Q+P*z+D*q+j*O,J[3]=N*X+P*F+D*U+j*R,N=Y[4],P=Y[5],D=Y[6],j=Y[7],J[4]=N*$+P*K+D*V+j*L,J[5]=N*W+P*G+D*H+j*w,J[6]=N*Q+P*z+D*q+j*O,J[7]=N*X+P*F+D*U+j*R,N=Y[8],P=Y[9],D=Y[10],j=Y[11],J[8]=N*$+P*K+D*V+j*L,J[9]=N*W+P*G+D*H+j*w,J[10]=N*Q+P*z+D*q+j*O,J[11]=N*X+P*F+D*U+j*R,N=Y[12],P=Y[13],D=Y[14],j=Y[15],J[12]=N*$+P*K+D*V+j*L,J[13]=N*W+P*G+D*H+j*w,J[14]=N*Q+P*z+D*q+j*O,J[15]=N*X+P*F+D*U+j*R,J}function qK1(J,Z){var Y=Z[0],$=Z[1],W=Z[2],Q=Z[4],X=Z[5],K=Z[6],G=Z[8],z=Z[9],F=Z[10];return J[0]=Math.hypot(Y,$,W),J[1]=Math.hypot(Q,X,K),J[2]=Math.hypot(G,z,F),J}function UK1(J,Z){var Y=new RN(3);qK1(Y,Z);var $=1/Y[0],W=1/Y[1],Q=1/Y[2],X=Z[0]*$,K=Z[1]*W,G=Z[2]*Q,z=Z[4]*$,F=Z[5]*W,V=Z[6]*Q,H=Z[8]*$,q=Z[9]*W,U=Z[10]*Q,L=X+F+U,w=0;if(L>0)w=Math.sqrt(L+1)*2,J[3]=0.25*w,J[0]=(V-q)/w,J[1]=(H-G)/w,J[2]=(K-z)/w;else if(X>F&&X>U)w=Math.sqrt(1+X-F-U)*2,J[3]=(V-q)/w,J[0]=0.25*w,J[1]=(K+z)/w,J[2]=(H+G)/w;else if(F>U)w=Math.sqrt(1+F-X-U)*2,J[3]=(H-G)/w,J[0]=(K+z)/w,J[1]=0.25*w,J[2]=(V+q)/w;else w=Math.sqrt(1+U-X-F)*2,J[3]=(K-z)/w,J[0]=(H+G)/w,J[1]=(V+q)/w,J[2]=0.25*w;return J}class A0{static identity(J){return J}static eq(J,Z,Y=0.00001){if(J.length!==Z.length)return!1;for(let $=0;$<J.length;$++)if(Math.abs(J[$]-Z[$])>Y)return!1;return!0}static clamp(J,Z,Y){if(J<Z)return Z;if(J>Y)return Y;return J}static decodeNormalizedInt(J,Z){switch(Z){case 5126:return J;case 5123:return J/65535;case 5121:return J/255;case 5122:return Math.max(J/32767,-1);case 5120:return Math.max(J/127,-1);default:throw new Error("Invalid component type.")}}static encodeNormalizedInt(J,Z){switch(Z){case 5126:return J;case 5123:return Math.round(A0.clamp(J,0,1)*65535);case 5121:return Math.round(A0.clamp(J,0,1)*255);case 5122:return Math.round(A0.clamp(J,-1,1)*32767);case 5120:return Math.round(A0.clamp(J,-1,1)*127);default:throw new Error("Invalid component type.")}}static decompose(J,Z,Y,$){let W=MN([J[0],J[1],J[2]]),Q=MN([J[4],J[5],J[6]]),X=MN([J[8],J[9],J[10]]);if(VK1(J)<0)W=-W;Z[0]=J[12],Z[1]=J[13],Z[2]=J[14];let G=J.slice(),z=1/W,F=1/Q,V=1/X;G[0]*=z,G[1]*=z,G[2]*=z,G[4]*=F,G[5]*=F,G[6]*=F,G[8]*=V,G[9]*=V,G[10]*=V,UK1(Y,G),$[0]=W,$[1]=Q,$[2]=X}static compose(J,Z,Y,$){let W=$,Q=Z[0],X=Z[1],K=Z[2],G=Z[3],z=Q+Q,F=X+X,V=K+K,H=Q*z,q=Q*F,U=Q*V,L=X*F,w=X*V,O=K*V,R=G*z,N=G*F,P=G*V,D=Y[0],j=Y[1],C=Y[2];return W[0]=(1-(L+O))*D,W[1]=(q+P)*D,W[2]=(U-N)*D,W[3]=0,W[4]=(q-P)*j,W[5]=(1-(H+O))*j,W[6]=(w+R)*j,W[7]=0,W[8]=(U+N)*C,W[9]=(w-R)*C,W[10]=(1-(H+L))*C,W[11]=0,W[12]=J[0],W[13]=J[1],W[14]=J[2],W[15]=1,W}}function wK1(J,Z){if(!!J!==!!Z)return!1;let Y=J.getChild(),$=Z.getChild();return Y===$||Y.equals($)}function LK1(J,Z){if(!!J!==!!Z)return!1;let Y=J.values(),$=Z.values();if(Y.length!==$.length)return!1;for(let W=0;W<Y.length;W++){let Q=Y[W],X=$[W];if(Q.getChild()===X.getChild())continue;if(!Q.getChild().equals(X.getChild()))return!1}return!0}function BK1(J,Z){if(!!J!==!!Z)return!1;let Y=J.keys(),$=Z.keys();if(Y.length!==$.length)return!1;for(let W of Y){let Q=J.get(W),X=Z.get(W);if(!!Q!==!!X)return!1;let K=Q.getChild(),G=X.getChild();if(K===G)continue;if(!K.equals(G))return!1}return!0}function rm(J,Z){if(J===Z)return!0;if(!!J!==!!Z||!J||!Z)return!1;if(J.length!==Z.length)return!1;for(let Y=0;Y<J.length;Y++)if(J[Y]!==Z[Y])return!1;return!0}function tm(J,Z){if(J===Z)return!0;if(!!J!==!!Z)return!1;if(!tZ(J)||!tZ(Z))return J===Z;let Y=J,$=Z,W=0,Q=0,X;for(X in Y)W++;for(X in $)Q++;if(W!==Q)return!1;for(X in Y){let K=Y[X],G=$[X];if(Pq(K)&&Pq(G)){if(!rm(K,G))return!1}else if(tZ(K)&&tZ(G)){if(!tm(K,G))return!1}else if(K!==G)return!1}return!0}function Pq(J){return Array.isArray(J)||ArrayBuffer.isView(J)}var cm="23456789abdegjkmnpqrvwxyzABDEGJKMNPQRVWXYZ",OK1=999,MK1=6,lm=new Set,RK1=function J(){let Z="";for(let Y=0;Y<MK1;Y++)Z+=cm.charAt(Math.floor(Math.random()*cm.length));return Z},em=function J(){for(let Z=0;Z<OK1;Z++){let Y=RK1();if(!lm.has(Y))return lm.add(Y),Y}return""},pm="https://null.example";class f5{static dirname(J){let Z=J.lastIndexOf("/");if(Z===-1)return"./";return J.substring(0,Z+1)}static basename(J){return q7.basename(new URL(J,pm).pathname)}static extension(J){return q7.extension(new URL(J,pm).pathname)}static resolve(J,Z){if(!this.isRelativePath(Z))return Z;let Y=J.split("/"),$=Z.split("/");Y.pop();for(let W=0;W<$.length;W++){if($[W]===".")continue;if($[W]==="..")Y.pop();else Y.push($[W])}return Y.join("/")}static isAbsoluteURL(J){return this.PROTOCOL_REGEXP.test(J)}static isRelativePath(J){return!/^(?:[a-zA-Z]+:)?\//.test(J)}}f5.DEFAULT_INIT={};f5.PROTOCOL_REGEXP=/^[a-zA-Z]+:\/\//;var FJ=(J)=>J,NK1=new Set;class Cq extends vW{constructor(J,Z=""){super(J);this[C0].name=Z,this.init(),this.dispatchEvent({type:"create"})}getGraph(){return this.graph}getDefaults(){return Object.assign(super.getDefaults(),{name:"",extras:{}})}set(J,Z){if(Array.isArray(Z))Z=Z.slice();return super.set(J,Z)}getName(){return this.get("name")}setName(J){return this.set("name",J)}getExtras(){return this.get("extras")}setExtras(J){return this.set("extras",J)}clone(){return new this.constructor(this.graph).copy(this,FJ)}copy(J,Z=FJ){for(let Y in this[C0]){let $=this[C0][Y];if($ instanceof p6){if(!this[E9].has(Y))$.dispose()}else if($ instanceof Z6||$ instanceof w0)for(let W of $.values())W.dispose();else if($ instanceof u1)for(let W of $.values())W.dispose()}for(let Y in J[C0]){let $=this[C0][Y],W=J[C0][Y];if(W instanceof p6)if(this[E9].has(Y))$.getChild().copy(Z(W.getChild()),Z);else this.setRef(Y,Z(W.getChild()),W.getAttributes());else if(W instanceof w0||W instanceof Z6)for(let Q of W.values())this.addRef(Y,Z(Q.getChild()),Q.getAttributes());else if(W instanceof u1)for(let Q of W.keys()){let X=W.get(Q);this.setRefMap(Y,Q,Z(X.getChild()),X.getAttributes())}else if(tZ(W))this[C0][Y]=JSON.parse(JSON.stringify(W));else if(Array.isArray(W)||W instanceof ArrayBuffer||ArrayBuffer.isView(W))this[C0][Y]=W.slice();else this[C0][Y]=W}return this}equals(J,Z=NK1){if(this===J)return!0;if(this.propertyType!==J.propertyType)return!1;for(let Y in this[C0]){if(Z.has(Y))continue;let $=this[C0][Y],W=J[C0][Y];if($ instanceof p6||W instanceof p6){if(!wK1($,W))return!1}else if($ instanceof w0||W instanceof w0||$ instanceof Z6||W instanceof Z6){if(!LK1($,W))return!1}else if($ instanceof u1||W instanceof u1){if(!BK1($,W))return!1}else if(tZ($)||tZ(W)){if(!tm($,W))return!1}else if(Pq($)||Pq(W)){if(!rm($,W))return!1}else if($!==W)return!1}return!0}detach(){return this.graph.disconnectParents(this,(J)=>J.propertyType!=="Root"),this}listParents(){return this.graph.listParents(this)}}class $6 extends Cq{getDefaults(){return Object.assign(super.getDefaults(),{extensions:new u1})}getExtension(J){return this.getRefMap("extensions",J)}setExtension(J,Z){if(Z)Z._validateParent(this);return this.setRefMap("extensions",J,Z)}listExtensions(){return this.listRefMapValues("extensions")}}class N0 extends $6{init(){this.propertyType=c.ACCESSOR}getDefaults(){return Object.assign(super.getDefaults(),{array:null,type:N0.Type.SCALAR,componentType:N0.ComponentType.FLOAT,normalized:!1,sparse:!1,buffer:null})}static getElementSize(J){switch(J){case N0.Type.SCALAR:return 1;case N0.Type.VEC2:return 2;case N0.Type.VEC3:return 3;case N0.Type.VEC4:return 4;case N0.Type.MAT2:return 4;case N0.Type.MAT3:return 9;case N0.Type.MAT4:return 16;default:throw new Error("Unexpected type: "+J)}}static getComponentSize(J){switch(J){case N0.ComponentType.BYTE:return 1;case N0.ComponentType.UNSIGNED_BYTE:return 1;case N0.ComponentType.SHORT:return 2;case N0.ComponentType.UNSIGNED_SHORT:return 2;case N0.ComponentType.UNSIGNED_INT:return 4;case N0.ComponentType.FLOAT:return 4;default:throw new Error("Unexpected component type: "+J)}}getMinNormalized(J){let Z=this.getNormalized(),Y=this.getElementSize(),$=this.getComponentType();if(this.getMin(J),Z)for(let W=0;W<Y;W++)J[W]=A0.decodeNormalizedInt(J[W],$);return J}getMin(J){let Z=this.getArray(),Y=this.getCount(),$=this.getElementSize();for(let W=0;W<$;W++)J[W]=1/0;for(let W=0;W<Y*$;W+=$)for(let Q=0;Q<$;Q++){let X=Z[W+Q];if(Number.isFinite(X))J[Q]=Math.min(J[Q],X)}return J}getMaxNormalized(J){let Z=this.getNormalized(),Y=this.getElementSize(),$=this.getComponentType();if(this.getMax(J),Z)for(let W=0;W<Y;W++)J[W]=A0.decodeNormalizedInt(J[W],$);return J}getMax(J){let Z=this.get("array"),Y=this.getCount(),$=this.getElementSize();for(let W=0;W<$;W++)J[W]=-1/0;for(let W=0;W<Y*$;W+=$)for(let Q=0;Q<$;Q++){let X=Z[W+Q];if(Number.isFinite(X))J[Q]=Math.max(J[Q],X)}return J}getCount(){let J=this.get("array");return J?J.length/this.getElementSize():0}getType(){return this.get("type")}setType(J){return this.set("type",J)}getElementSize(){return N0.getElementSize(this.get("type"))}getComponentSize(){return this.get("array").BYTES_PER_ELEMENT}getComponentType(){return this.get("componentType")}getNormalized(){return this.get("normalized")}setNormalized(J){return this.set("normalized",J)}getScalar(J){let Z=this.getElementSize(),Y=this.getComponentType(),$=this.getArray();if(this.getNormalized())return A0.decodeNormalizedInt($[J*Z],Y);return $[J*Z]}setScalar(J,Z){let Y=this.getElementSize(),$=this.getComponentType(),W=this.getArray();if(this.getNormalized())W[J*Y]=A0.encodeNormalizedInt(Z,$);else W[J*Y]=Z;return this}getElement(J,Z){let Y=this.getNormalized(),$=this.getElementSize(),W=this.getComponentType(),Q=this.getArray();for(let X=0;X<$;X++)if(Y)Z[X]=A0.decodeNormalizedInt(Q[J*$+X],W);else Z[X]=Q[J*$+X];return Z}setElement(J,Z){let Y=this.getNormalized(),$=this.getElementSize(),W=this.getComponentType(),Q=this.getArray();for(let X=0;X<$;X++)if(Y)Q[J*$+X]=A0.encodeNormalizedInt(Z[X],W);else Q[J*$+X]=Z[X];return this}getSparse(){return this.get("sparse")}setSparse(J){return this.set("sparse",J)}getBuffer(){return this.getRef("buffer")}setBuffer(J){return this.setRef("buffer",J)}getArray(){return this.get("array")}setArray(J){return this.set("componentType",J?PK1(J):N0.ComponentType.FLOAT),this.set("array",J),this}getByteLength(){let J=this.get("array");return J?J.byteLength:0}}N0.Type={SCALAR:"SCALAR",VEC2:"VEC2",VEC3:"VEC3",VEC4:"VEC4",MAT2:"MAT2",MAT3:"MAT3",MAT4:"MAT4"};N0.ComponentType={BYTE:5120,UNSIGNED_BYTE:5121,SHORT:5122,UNSIGNED_SHORT:5123,UNSIGNED_INT:5125,FLOAT:5126};function PK1(J){switch(J.constructor){case Float32Array:return N0.ComponentType.FLOAT;case Uint32Array:return N0.ComponentType.UNSIGNED_INT;case Uint16Array:return N0.ComponentType.UNSIGNED_SHORT;case Uint8Array:return N0.ComponentType.UNSIGNED_BYTE;case Int16Array:return N0.ComponentType.SHORT;case Int8Array:return N0.ComponentType.BYTE;default:throw new Error("Unknown accessor componentType.")}}class TN extends $6{init(){this.propertyType=c.ANIMATION}getDefaults(){return Object.assign(super.getDefaults(),{channels:new w0,samplers:new w0})}addChannel(J){return this.addRef("channels",J)}removeChannel(J){return this.removeRef("channels",J)}listChannels(){return this.listRefs("channels")}addSampler(J){return this.addRef("samplers",J)}removeSampler(J){return this.removeRef("samplers",J)}listSamplers(){return this.listRefs("samplers")}}class eZ extends $6{init(){this.propertyType=c.ANIMATION_CHANNEL}getDefaults(){return Object.assign(super.getDefaults(),{targetPath:null,targetNode:null,sampler:null})}getTargetPath(){return this.get("targetPath")}setTargetPath(J){return this.set("targetPath",J)}getTargetNode(){return this.getRef("targetNode")}setTargetNode(J){return this.setRef("targetNode",J)}getSampler(){return this.getRef("sampler")}setSampler(J){return this.setRef("sampler",J)}}eZ.TargetPath={TRANSLATION:"translation",ROTATION:"rotation",SCALE:"scale",WEIGHTS:"weights"};class SW extends $6{init(){this.propertyType=c.ANIMATION_SAMPLER}getDefaultAttributes(){return Object.assign(super.getDefaults(),{interpolation:SW.Interpolation.LINEAR,input:null,output:null})}getInterpolation(){return this.get("interpolation")}setInterpolation(J){return this.set("interpolation",J)}getInput(){return this.getRef("input")}setInput(J){return this.setRef("input",J,{usage:w5.OTHER})}getOutput(){return this.getRef("output")}setOutput(J){return this.setRef("output",J,{usage:w5.OTHER})}}SW.Interpolation={LINEAR:"LINEAR",STEP:"STEP",CUBICSPLINE:"CUBICSPLINE"};class kN extends $6{init(){this.propertyType=c.BUFFER}getDefaults(){return Object.assign(super.getDefaults(),{uri:""})}getURI(){return this.get("uri")}setURI(J){return this.set("uri",J)}}class JY extends $6{init(){this.propertyType=c.CAMERA}getDefaults(){return Object.assign(super.getDefaults(),{type:JY.Type.PERSPECTIVE,znear:0.1,zfar:100,aspectRatio:null,yfov:Math.PI*2*50/360,xmag:1,ymag:1})}getType(){return this.get("type")}setType(J){return this.set("type",J)}getZNear(){return this.get("znear")}setZNear(J){return this.set("znear",J)}getZFar(){return this.get("zfar")}setZFar(J){return this.set("zfar",J)}getAspectRatio(){return this.get("aspectRatio")}setAspectRatio(J){return this.set("aspectRatio",J)}getYFov(){return this.get("yfov")}setYFov(J){return this.set("yfov",J)}getXMag(){return this.get("xmag")}setXMag(J){return this.set("xmag",J)}getYMag(){return this.get("ymag")}setYMag(J){return this.set("ymag",J)}}JY.Type={PERSPECTIVE:"perspective",ORTHOGRAPHIC:"orthographic"};class _W extends Cq{_validateParent(J){if(!this.parentTypes.includes(J.propertyType))throw new Error(`Parent "${J.propertyType}" invalid for child "${this.propertyType}".`)}}_W.EXTENSION_NAME=void 0;class i6 extends $6{init(){this.propertyType=c.TEXTURE_INFO}getDefaults(){return Object.assign(super.getDefaults(),{texCoord:0,magFilter:null,minFilter:null,wrapS:i6.WrapMode.REPEAT,wrapT:i6.WrapMode.REPEAT})}getTexCoord(){return this.get("texCoord")}setTexCoord(J){return this.set("texCoord",J)}getMagFilter(){return this.get("magFilter")}setMagFilter(J){return this.set("magFilter",J)}getMinFilter(){return this.get("minFilter")}setMinFilter(J){return this.set("minFilter",J)}getWrapS(){return this.get("wrapS")}setWrapS(J){return this.set("wrapS",J)}getWrapT(){return this.get("wrapT")}setWrapT(J){return this.set("wrapT",J)}}i6.WrapMode={CLAMP_TO_EDGE:33071,MIRRORED_REPEAT:33648,REPEAT:10497};i6.MagFilter={NEAREST:9728,LINEAR:9729};i6.MinFilter={NEAREST:9728,LINEAR:9729,NEAREST_MIPMAP_NEAREST:9984,LINEAR_MIPMAP_NEAREST:9985,NEAREST_MIPMAP_LINEAR:9986,LINEAR_MIPMAP_LINEAR:9987};var{R:Uq,G:wq,B:Lq,A:jK1}=Nq;class z4 extends $6{init(){this.propertyType=c.MATERIAL}getDefaults(){return Object.assign(super.getDefaults(),{alphaMode:z4.AlphaMode.OPAQUE,alphaCutoff:0.5,doubleSided:!1,baseColorFactor:[1,1,1,1],baseColorTexture:null,baseColorTextureInfo:new i6(this.graph,"baseColorTextureInfo"),emissiveFactor:[0,0,0],emissiveTexture:null,emissiveTextureInfo:new i6(this.graph,"emissiveTextureInfo"),normalScale:1,normalTexture:null,normalTextureInfo:new i6(this.graph,"normalTextureInfo"),occlusionStrength:1,occlusionTexture:null,occlusionTextureInfo:new i6(this.graph,"occlusionTextureInfo"),roughnessFactor:1,metallicFactor:1,metallicRoughnessTexture:null,metallicRoughnessTextureInfo:new i6(this.graph,"metallicRoughnessTextureInfo")})}getDoubleSided(){return this.get("doubleSided")}setDoubleSided(J){return this.set("doubleSided",J)}getAlpha(){return this.get("baseColorFactor")[3]}setAlpha(J){let Z=this.get("baseColorFactor").slice();return Z[3]=J,this.set("baseColorFactor",Z)}getAlphaMode(){return this.get("alphaMode")}setAlphaMode(J){return this.set("alphaMode",J)}getAlphaCutoff(){return this.get("alphaCutoff")}setAlphaCutoff(J){return this.set("alphaCutoff",J)}getBaseColorFactor(){return this.get("baseColorFactor")}setBaseColorFactor(J){return this.set("baseColorFactor",J)}getBaseColorTexture(){return this.getRef("baseColorTexture")}getBaseColorTextureInfo(){return this.getRef("baseColorTexture")?this.getRef("baseColorTextureInfo"):null}setBaseColorTexture(J){return this.setRef("baseColorTexture",J,{channels:Uq|wq|Lq|jK1,isColor:!0})}getEmissiveFactor(){return this.get("emissiveFactor")}setEmissiveFactor(J){return this.set("emissiveFactor",J)}getEmissiveTexture(){return this.getRef("emissiveTexture")}getEmissiveTextureInfo(){return this.getRef("emissiveTexture")?this.getRef("emissiveTextureInfo"):null}setEmissiveTexture(J){return this.setRef("emissiveTexture",J,{channels:Uq|wq|Lq,isColor:!0})}getNormalScale(){return this.get("normalScale")}setNormalScale(J){return this.set("normalScale",J)}getNormalTexture(){return this.getRef("normalTexture")}getNormalTextureInfo(){return this.getRef("normalTexture")?this.getRef("normalTextureInfo"):null}setNormalTexture(J){return this.setRef("normalTexture",J,{channels:Uq|wq|Lq})}getOcclusionStrength(){return this.get("occlusionStrength")}setOcclusionStrength(J){return this.set("occlusionStrength",J)}getOcclusionTexture(){return this.getRef("occlusionTexture")}getOcclusionTextureInfo(){return this.getRef("occlusionTexture")?this.getRef("occlusionTextureInfo"):null}setOcclusionTexture(J){return this.setRef("occlusionTexture",J,{channels:Uq})}getRoughnessFactor(){return this.get("roughnessFactor")}setRoughnessFactor(J){return this.set("roughnessFactor",J)}getMetallicFactor(){return this.get("metallicFactor")}setMetallicFactor(J){return this.set("metallicFactor",J)}getMetallicRoughnessTexture(){return this.getRef("metallicRoughnessTexture")}getMetallicRoughnessTextureInfo(){return this.getRef("metallicRoughnessTexture")?this.getRef("metallicRoughnessTextureInfo"):null}setMetallicRoughnessTexture(J){return this.setRef("metallicRoughnessTexture",J,{channels:wq|Lq})}}z4.AlphaMode={OPAQUE:"OPAQUE",MASK:"MASK",BLEND:"BLEND"};class oK extends $6{init(){this.propertyType=c.MESH}getDefaults(){return Object.assign(super.getDefaults(),{weights:[],primitives:new w0})}addPrimitive(J){return this.addRef("primitives",J)}removePrimitive(J){return this.removeRef("primitives",J)}listPrimitives(){return this.listRefs("primitives")}getWeights(){return this.get("weights")}setWeights(J){return this.set("weights",J)}}class Tq extends $6{init(){this.propertyType=c.NODE}getDefaults(){return Object.assign(super.getDefaults(),{translation:[0,0,0],rotation:[0,0,0,1],scale:[1,1,1],weights:[],camera:null,mesh:null,skin:null,children:new w0})}copy(J,Z=FJ){if(Z===FJ)throw new Error("Node cannot be copied.");return super.copy(J,Z)}getTranslation(){return this.get("translation")}getRotation(){return this.get("rotation")}getScale(){return this.get("scale")}setTranslation(J){return this.set("translation",J)}setRotation(J){return this.set("rotation",J)}setScale(J){return this.set("scale",J)}getMatrix(){return A0.compose(this.get("translation"),this.get("rotation"),this.get("scale"),[])}setMatrix(J){let Z=this.get("translation").slice(),Y=this.get("rotation").slice(),$=this.get("scale").slice();return A0.decompose(J,Z,Y,$),this.set("translation",Z).set("rotation",Y).set("scale",$)}getWorldTranslation(){let J=[0,0,0];return A0.decompose(this.getWorldMatrix(),J,[0,0,0,1],[1,1,1]),J}getWorldRotation(){let J=[0,0,0,1];return A0.decompose(this.getWorldMatrix(),[0,0,0],J,[1,1,1]),J}getWorldScale(){let J=[1,1,1];return A0.decompose(this.getWorldMatrix(),[0,0,0],[0,0,0,1],J),J}getWorldMatrix(){let J=[];for(let $=this;$!=null;$=$.getParentNode())J.push($);let Z,Y=J.pop().getMatrix();while(Z=J.pop())HK1(Y,Y,Z.getMatrix());return Y}addChild(J){let Z=J.getParentNode();if(Z)Z.removeChild(J);for(let Y of J.listParents())if(Y.propertyType===c.SCENE)Y.removeChild(J);return this.addRef("children",J)}removeChild(J){return this.removeRef("children",J)}listChildren(){return this.listRefs("children")}getParentNode(){for(let J of this.listParents())if(J.propertyType===c.NODE)return J;return null}getMesh(){return this.getRef("mesh")}setMesh(J){return this.setRef("mesh",J)}getCamera(){return this.getRef("camera")}setCamera(J){return this.setRef("camera",J)}getSkin(){return this.getRef("skin")}setSkin(J){return this.setRef("skin",J)}getWeights(){return this.get("weights")}setWeights(J){return this.set("weights",J)}traverse(J){J(this);for(let Z of this.listChildren())Z.traverse(J);return this}}class G8 extends $6{init(){this.propertyType=c.PRIMITIVE}getDefaults(){return Object.assign(super.getDefaults(),{mode:G8.Mode.TRIANGLES,material:null,indices:null,attributes:new u1,targets:new w0})}getIndices(){return this.getRef("indices")}setIndices(J){return this.setRef("indices",J,{usage:w5.ELEMENT_ARRAY_BUFFER})}getAttribute(J){return this.getRefMap("attributes",J)}setAttribute(J,Z){return this.setRefMap("attributes",J,Z,{usage:w5.ARRAY_BUFFER})}listAttributes(){return this.listRefMapValues("attributes")}listSemantics(){return this.listRefMapKeys("attributes")}getMaterial(){return this.getRef("material")}setMaterial(J){return this.setRef("material",J)}getMode(){return this.get("mode")}setMode(J){return this.set("mode",J)}listTargets(){return this.listRefs("targets")}addTarget(J){return this.addRef("targets",J)}removeTarget(J){return this.removeRef("targets",J)}}G8.Mode={POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6};class EN extends Cq{init(){this.propertyType=c.PRIMITIVE_TARGET}getDefaults(){return Object.assign(super.getDefaults(),{attributes:new u1})}getAttribute(J){return this.getRefMap("attributes",J)}setAttribute(J,Z){return this.setRefMap("attributes",J,Z,{usage:w5.ARRAY_BUFFER})}listAttributes(){return this.listRefMapValues("attributes")}listSemantics(){return this.listRefMapKeys("attributes")}}function O6(){return O6=Object.assign?Object.assign.bind():function(J){for(var Z=1;Z<arguments.length;Z++){var Y=arguments[Z];for(var $ in Y)({}).hasOwnProperty.call(Y,$)&&(J[$]=Y[$])}return J},O6.apply(null,arguments)}class xW extends $6{init(){this.propertyType=c.SCENE}getDefaults(){return Object.assign(super.getDefaults(),{children:new w0})}copy(J,Z=FJ){if(Z===FJ)throw new Error("Scene cannot be copied.");return super.copy(J,Z)}addChild(J){let Z=J.getParentNode();if(Z)Z.removeChild(J);return this.addRef("children",J)}removeChild(J){return this.removeRef("children",J)}listChildren(){return this.listRefs("children")}traverse(J){for(let Z of this.listChildren())Z.traverse(J);return this}}class IN extends $6{init(){this.propertyType=c.SKIN}getDefaults(){return Object.assign(super.getDefaults(),{skeleton:null,inverseBindMatrices:null,joints:new w0})}getSkeleton(){return this.getRef("skeleton")}setSkeleton(J){return this.setRef("skeleton",J)}getInverseBindMatrices(){return this.getRef("inverseBindMatrices")}setInverseBindMatrices(J){return this.setRef("inverseBindMatrices",J,{usage:w5.INVERSE_BIND_MATRICES})}addJoint(J){return this.addRef("joints",J)}removeJoint(J){return this.removeRef("joints",J)}listJoints(){return this.listRefs("joints")}}class ZY extends $6{init(){this.propertyType=c.TEXTURE}getDefaults(){return Object.assign(super.getDefaults(),{image:null,mimeType:"",uri:""})}getMimeType(){return this.get("mimeType")||H7.extensionToMimeType(q7.extension(this.get("uri")))}setMimeType(J){return this.set("mimeType",J)}getURI(){return this.get("uri")}setURI(J){this.set("uri",J);let Z=H7.extensionToMimeType(q7.extension(J));if(Z)this.set("mimeType",Z);return this}getImage(){return this.get("image")}setImage(J){return this.set("image",m0.assertView(J))}getSize(){let J=this.get("image");if(!J)return null;return H7.getSize(J,this.getMimeType())}}class YY extends $6{init(){this.propertyType=c.ROOT}getDefaults(){return Object.assign(super.getDefaults(),{asset:{generator:`glTF-Transform ${am}`,version:"2.0"},defaultScene:null,accessors:new w0,animations:new w0,buffers:new w0,cameras:new w0,materials:new w0,meshes:new w0,nodes:new w0,scenes:new w0,skins:new w0,textures:new w0})}constructor(J){super(J);this._extensions=new Set,J.addEventListener("node:create",(Z)=>{this._addChildOfRoot(Z.target)})}clone(){throw new Error("Root cannot be cloned.")}copy(J,Z=FJ){if(Z===FJ)throw new Error("Root cannot be copied.");this.set("asset",O6({},J.get("asset"))),this.setName(J.getName()),this.setExtras(O6({},J.getExtras())),this.setDefaultScene(J.getDefaultScene()?Z(J.getDefaultScene()):null);for(let Y of J.listRefMapKeys("extensions")){let $=J.getExtension(Y);this.setExtension(Y,Z($))}return this}_addChildOfRoot(J){if(J instanceof xW)this.addRef("scenes",J);else if(J instanceof Tq)this.addRef("nodes",J);else if(J instanceof JY)this.addRef("cameras",J);else if(J instanceof IN)this.addRef("skins",J);else if(J instanceof oK)this.addRef("meshes",J);else if(J instanceof z4)this.addRef("materials",J);else if(J instanceof ZY)this.addRef("textures",J);else if(J instanceof TN)this.addRef("animations",J);else if(J instanceof N0)this.addRef("accessors",J);else if(J instanceof kN)this.addRef("buffers",J);return this}getAsset(){return this.get("asset")}listExtensionsUsed(){return Array.from(this._extensions)}listExtensionsRequired(){return this.listExtensionsUsed().filter((J)=>J.isRequired())}_enableExtension(J){return this._extensions.add(J),this}_disableExtension(J){return this._extensions.delete(J),this}listScenes(){return this.listRefs("scenes")}setDefaultScene(J){return this.setRef("defaultScene",J)}getDefaultScene(){return this.getRef("defaultScene")}listNodes(){return this.listRefs("nodes")}listCameras(){return this.listRefs("cameras")}listSkins(){return this.listRefs("skins")}listMeshes(){return this.listRefs("meshes")}listMaterials(){return this.listRefs("materials")}listTextures(){return this.listRefs("textures")}listAnimations(){return this.listRefs("animations")}listAccessors(){return this.listRefs("accessors")}listBuffers(){return this.listRefs("buffers")}}class Y6{static fromGraph(J){return Y6._GRAPH_DOCUMENTS.get(J)||null}constructor(){this._graph=new IW,this._root=new YY(this._graph),this._logger=n6.DEFAULT_INSTANCE,Y6._GRAPH_DOCUMENTS.set(this._graph,this)}getRoot(){return this._root}getGraph(){return this._graph}getLogger(){return this._logger}setLogger(J){return this._logger=J,this}clone(){throw new Error("Use 'cloneDocument(source)' from '@gltf-transform/functions'.")}merge(J){throw new Error("Use 'mergeDocuments(target, source)' from '@gltf-transform/functions'.")}async transform(...J){let Z=J.map((Y)=>Y.name);for(let Y of J)await Y(this,{stack:Z});return this}createExtension(J){let Z=J.EXTENSION_NAME;return this.getRoot().listExtensionsUsed().find(($)=>$.extensionName===Z)||new J(this)}createScene(J=""){return new xW(this._graph,J)}createNode(J=""){return new Tq(this._graph,J)}createCamera(J=""){return new JY(this._graph,J)}createSkin(J=""){return new IN(this._graph,J)}createMesh(J=""){return new oK(this._graph,J)}createPrimitive(){return new G8(this._graph)}createPrimitiveTarget(J=""){return new EN(this._graph,J)}createMaterial(J=""){return new z4(this._graph,J)}createTexture(J=""){return new ZY(this._graph,J)}createAnimation(J=""){return new TN(this._graph,J)}createAnimationChannel(J=""){return new eZ(this._graph,J)}createAnimationSampler(J=""){return new SW(this._graph,J)}createAccessor(J="",Z=null){if(!Z)Z=this.getRoot().listBuffers()[0];return new N0(this._graph,J).setBuffer(Z)}createBuffer(J=""){return new kN(this._graph,J)}}Y6._GRAPH_DOCUMENTS=new WeakMap;class Ju{constructor(J){this.extensionName="",this.prereadTypes=[],this.prewriteTypes=[],this.readDependencies=[],this.writeDependencies=[],this.document=void 0,this.required=!1,this.properties=new Set,this._listener=void 0,this.document=J,J.getRoot()._enableExtension(this),this._listener=(Y)=>{let $=Y,W=$.target;if(W instanceof _W&&W.extensionName===this.extensionName){if($.type==="node:create")this._addExtensionProperty(W);if($.type==="node:dispose")this._removeExtensionProperty(W)}};let Z=J.getGraph();Z.addEventListener("node:create",this._listener),Z.addEventListener("node:dispose",this._listener)}dispose(){this.document.getRoot()._disableExtension(this);let J=this.document.getGraph();J.removeEventListener("node:create",this._listener),J.removeEventListener("node:dispose",this._listener);for(let Z of this.properties)Z.dispose()}static register(){}isRequired(){return this.required}setRequired(J){return this.required=J,this}listProperties(){return Array.from(this.properties)}_addExtensionProperty(J){return this.properties.add(J),this}_removeExtensionProperty(J){return this.properties.delete(J),this}install(J,Z){return this}preread(J,Z){return this}prewrite(J,Z){return this}}Ju.EXTENSION_NAME=void 0;class Zu{constructor(J){this.jsonDoc=void 0,this.buffers=[],this.bufferViews=[],this.bufferViewBuffers=[],this.accessors=[],this.textures=[],this.textureInfos=new Map,this.materials=[],this.meshes=[],this.cameras=[],this.nodes=[],this.skins=[],this.animations=[],this.scenes=[],this.jsonDoc=J}setTextureInfo(J,Z){if(this.textureInfos.set(J,Z),Z.texCoord!==void 0)J.setTexCoord(Z.texCoord);if(Z.extras!==void 0)J.setExtras(Z.extras);let Y=this.jsonDoc.json.textures[Z.index];if(Y.sampler===void 0)return;let $=this.jsonDoc.json.samplers[Y.sampler];if($.magFilter!==void 0)J.setMagFilter($.magFilter);if($.minFilter!==void 0)J.setMinFilter($.minFilter);if($.wrapS!==void 0)J.setWrapS($.wrapS);if($.wrapT!==void 0)J.setWrapT($.wrapT)}}var im={logger:n6.DEFAULT_INSTANCE,extensions:[],dependencies:{}},DK1=new Set([c.BUFFER,c.TEXTURE,c.MATERIAL,c.MESH,c.PRIMITIVE,c.NODE,c.SCENE]);class Yu{static read(J,Z=im){let Y=O6({},im,Z),{json:$}=J,W=new Y6().setLogger(Y.logger);this.validate(J,Y);let Q=new Zu(J),X=$.asset,K=W.getRoot().getAsset();if(X.copyright)K.copyright=X.copyright;if(X.extras)K.extras=X.extras;if($.extras!==void 0)W.getRoot().setExtras(O6({},$.extras));let G=$.extensionsUsed||[],z=$.extensionsRequired||[];Y.extensions.sort((j,C)=>j.EXTENSION_NAME>C.EXTENSION_NAME?1:-1);for(let j of Y.extensions)if(G.includes(j.EXTENSION_NAME)){let C=W.createExtension(j).setRequired(z.includes(j.EXTENSION_NAME)),k=C.prereadTypes.filter((I)=>!DK1.has(I));if(k.length)Y.logger.warn(`Preread hooks for some types (${k.join()}), requested by extension ${C.extensionName}, are unsupported. Please file an issue or a PR.`);for(let I of C.readDependencies)C.install(I,Y.dependencies[I])}let F=$.buffers||[];W.getRoot().listExtensionsUsed().filter((j)=>j.prereadTypes.includes(c.BUFFER)).forEach((j)=>j.preread(Q,c.BUFFER)),Q.buffers=F.map((j)=>{let C=W.createBuffer(j.name);if(j.extras)C.setExtras(j.extras);if(j.uri&&j.uri.indexOf("__")!==0)C.setURI(j.uri);return C});let V=$.bufferViews||[];Q.bufferViewBuffers=V.map((j,C)=>{if(!Q.bufferViews[C]){let k=J.json.buffers[j.buffer],I=k.uri?J.resources[k.uri]:J.resources[Mq],A=j.byteOffset||0;Q.bufferViews[C]=m0.toView(I,A,j.byteLength)}return Q.buffers[j.buffer]});let H=$.accessors||[];Q.accessors=H.map((j)=>{let C=Q.bufferViewBuffers[j.bufferView],k=W.createAccessor(j.name,C).setType(j.type);if(j.extras)k.setExtras(j.extras);if(j.normalized!==void 0)k.setNormalized(j.normalized);if(j.bufferView===void 0)return k;return k.setArray(Oq(j,Q)),k});let q=$.images||[],U=$.textures||[];W.getRoot().listExtensionsUsed().filter((j)=>j.prereadTypes.includes(c.TEXTURE)).forEach((j)=>j.preread(Q,c.TEXTURE)),Q.textures=q.map((j)=>{let C=W.createTexture(j.name);if(j.extras)C.setExtras(j.extras);if(j.bufferView!==void 0){let k=$.bufferViews[j.bufferView],I=J.json.buffers[k.buffer],A=I.uri?J.resources[I.uri]:J.resources[Mq],v=k.byteOffset||0,x=k.byteLength,u=A.slice(v,v+x);C.setImage(u)}else if(j.uri!==void 0){if(C.setImage(J.resources[j.uri]),j.uri.indexOf("__")!==0)C.setURI(j.uri)}if(j.mimeType!==void 0)C.setMimeType(j.mimeType);else if(j.uri){let k=q7.extension(j.uri);C.setMimeType(H7.extensionToMimeType(k))}return C}),W.getRoot().listExtensionsUsed().filter((j)=>j.prereadTypes.includes(c.MATERIAL)).forEach((j)=>j.preread(Q,c.MATERIAL));let L=$.materials||[];Q.materials=L.map((j)=>{let C=W.createMaterial(j.name);if(j.extras)C.setExtras(j.extras);if(j.alphaMode!==void 0)C.setAlphaMode(j.alphaMode);if(j.alphaCutoff!==void 0)C.setAlphaCutoff(j.alphaCutoff);if(j.doubleSided!==void 0)C.setDoubleSided(j.doubleSided);let k=j.pbrMetallicRoughness||{};if(k.baseColorFactor!==void 0)C.setBaseColorFactor(k.baseColorFactor);if(j.emissiveFactor!==void 0)C.setEmissiveFactor(j.emissiveFactor);if(k.metallicFactor!==void 0)C.setMetallicFactor(k.metallicFactor);if(k.roughnessFactor!==void 0)C.setRoughnessFactor(k.roughnessFactor);if(k.baseColorTexture!==void 0){let I=k.baseColorTexture,A=Q.textures[U[I.index].source];C.setBaseColorTexture(A),Q.setTextureInfo(C.getBaseColorTextureInfo(),I)}if(j.emissiveTexture!==void 0){let I=j.emissiveTexture,A=Q.textures[U[I.index].source];C.setEmissiveTexture(A),Q.setTextureInfo(C.getEmissiveTextureInfo(),I)}if(j.normalTexture!==void 0){let I=j.normalTexture,A=Q.textures[U[I.index].source];if(C.setNormalTexture(A),Q.setTextureInfo(C.getNormalTextureInfo(),I),j.normalTexture.scale!==void 0)C.setNormalScale(j.normalTexture.scale)}if(j.occlusionTexture!==void 0){let I=j.occlusionTexture,A=Q.textures[U[I.index].source];if(C.setOcclusionTexture(A),Q.setTextureInfo(C.getOcclusionTextureInfo(),I),j.occlusionTexture.strength!==void 0)C.setOcclusionStrength(j.occlusionTexture.strength)}if(k.metallicRoughnessTexture!==void 0){let I=k.metallicRoughnessTexture,A=Q.textures[U[I.index].source];C.setMetallicRoughnessTexture(A),Q.setTextureInfo(C.getMetallicRoughnessTextureInfo(),I)}return C}),W.getRoot().listExtensionsUsed().filter((j)=>j.prereadTypes.includes(c.MESH)).forEach((j)=>j.preread(Q,c.MESH));let w=$.meshes||[];W.getRoot().listExtensionsUsed().filter((j)=>j.prereadTypes.includes(c.PRIMITIVE)).forEach((j)=>j.preread(Q,c.PRIMITIVE)),Q.meshes=w.map((j)=>{let C=W.createMesh(j.name);if(j.extras)C.setExtras(j.extras);if(j.weights!==void 0)C.setWeights(j.weights);return(j.primitives||[]).forEach((I)=>{let A=W.createPrimitive();if(I.extras)A.setExtras(I.extras);if(I.material!==void 0)A.setMaterial(Q.materials[I.material]);if(I.mode!==void 0)A.setMode(I.mode);for(let[u,h]of Object.entries(I.attributes||{}))A.setAttribute(u,Q.accessors[h]);if(I.indices!==void 0)A.setIndices(Q.accessors[I.indices]);let v=j.extras&&j.extras.targetNames||[];(I.targets||[]).forEach((u,h)=>{let d=v[h]||h.toString(),W0=W.createPrimitiveTarget(d);for(let[U0,B0]of Object.entries(u))W0.setAttribute(U0,Q.accessors[B0]);A.addTarget(W0)}),C.addPrimitive(A)}),C});let O=$.cameras||[];Q.cameras=O.map((j)=>{let C=W.createCamera(j.name).setType(j.type);if(j.extras)C.setExtras(j.extras);if(j.type===JY.Type.PERSPECTIVE){let k=j.perspective;if(C.setYFov(k.yfov),C.setZNear(k.znear),k.zfar!==void 0)C.setZFar(k.zfar);if(k.aspectRatio!==void 0)C.setAspectRatio(k.aspectRatio)}else{let k=j.orthographic;C.setZNear(k.znear).setZFar(k.zfar).setXMag(k.xmag).setYMag(k.ymag)}return C});let R=$.nodes||[];W.getRoot().listExtensionsUsed().filter((j)=>j.prereadTypes.includes(c.NODE)).forEach((j)=>j.preread(Q,c.NODE)),Q.nodes=R.map((j)=>{let C=W.createNode(j.name);if(j.extras)C.setExtras(j.extras);if(j.translation!==void 0)C.setTranslation(j.translation);if(j.rotation!==void 0)C.setRotation(j.rotation);if(j.scale!==void 0)C.setScale(j.scale);if(j.matrix!==void 0){let k=[0,0,0],I=[0,0,0,1],A=[1,1,1];A0.decompose(j.matrix,k,I,A),C.setTranslation(k),C.setRotation(I),C.setScale(A)}if(j.weights!==void 0)C.setWeights(j.weights);return C});let N=$.skins||[];Q.skins=N.map((j)=>{let C=W.createSkin(j.name);if(j.extras)C.setExtras(j.extras);if(j.inverseBindMatrices!==void 0)C.setInverseBindMatrices(Q.accessors[j.inverseBindMatrices]);if(j.skeleton!==void 0)C.setSkeleton(Q.nodes[j.skeleton]);for(let k of j.joints)C.addJoint(Q.nodes[k]);return C}),R.map((j,C)=>{let k=Q.nodes[C];if((j.children||[]).forEach((A)=>k.addChild(Q.nodes[A])),j.mesh!==void 0)k.setMesh(Q.meshes[j.mesh]);if(j.camera!==void 0)k.setCamera(Q.cameras[j.camera]);if(j.skin!==void 0)k.setSkin(Q.skins[j.skin])});let P=$.animations||[];Q.animations=P.map((j)=>{let C=W.createAnimation(j.name);if(j.extras)C.setExtras(j.extras);let I=(j.samplers||[]).map((v)=>{let x=W.createAnimationSampler().setInput(Q.accessors[v.input]).setOutput(Q.accessors[v.output]).setInterpolation(v.interpolation||SW.Interpolation.LINEAR);if(v.extras)x.setExtras(v.extras);return C.addSampler(x),x});return(j.channels||[]).forEach((v)=>{let x=W.createAnimationChannel().setSampler(I[v.sampler]).setTargetPath(v.target.path);if(v.target.node!==void 0)x.setTargetNode(Q.nodes[v.target.node]);if(v.extras)x.setExtras(v.extras);C.addChannel(x)}),C});let D=$.scenes||[];if(W.getRoot().listExtensionsUsed().filter((j)=>j.prereadTypes.includes(c.SCENE)).forEach((j)=>j.preread(Q,c.SCENE)),Q.scenes=D.map((j)=>{let C=W.createScene(j.name);if(j.extras)C.setExtras(j.extras);return(j.nodes||[]).map((I)=>Q.nodes[I]).forEach((I)=>C.addChild(I)),C}),$.scene!==void 0)W.getRoot().setDefaultScene(Q.scenes[$.scene]);return W.getRoot().listExtensionsUsed().forEach((j)=>j.read(Q)),H.forEach((j,C)=>{let k=Q.accessors[C],I=!!j.sparse,A=!j.bufferView&&!k.getArray();if(I||A)k.setSparse(!0).setArray(TK1(j,Q))}),W}static validate(J,Z){let Y=J.json;if(Y.asset.version!=="2.0")throw new Error(`Unsupported glTF version, "${Y.asset.version}".`);if(Y.extensionsRequired){for(let $ of Y.extensionsRequired)if(!Z.extensions.find((W)=>W.EXTENSION_NAME===$))throw new Error(`Missing required extension, "${$}".`)}if(Y.extensionsUsed){for(let $ of Y.extensionsUsed)if(!Z.extensions.find((W)=>W.EXTENSION_NAME===$))Z.logger.warn(`Missing optional extension, "${$}".`)}}}function CK1(J,Z){let Y=Z.jsonDoc,$=Z.bufferViews[J.bufferView],W=Y.json.bufferViews[J.bufferView],Q=VJ[J.componentType],X=N0.getElementSize(J.type),K=Q.BYTES_PER_ELEMENT,G=J.byteOffset||0,z=new Q(J.count*X),F=new DataView($.buffer,$.byteOffset,$.byteLength),V=W.byteStride;for(let H=0;H<J.count;H++)for(let q=0;q<X;q++){let U=G+H*V+q*K,L;switch(J.componentType){case N0.ComponentType.FLOAT:L=F.getFloat32(U,!0);break;case N0.ComponentType.UNSIGNED_INT:L=F.getUint32(U,!0);break;case N0.ComponentType.UNSIGNED_SHORT:L=F.getUint16(U,!0);break;case N0.ComponentType.UNSIGNED_BYTE:L=F.getUint8(U);break;case N0.ComponentType.SHORT:L=F.getInt16(U,!0);break;case N0.ComponentType.BYTE:L=F.getInt8(U);break;default:throw new Error(`Unexpected componentType "${J.componentType}".`)}z[H*X+q]=L}return z}function Oq(J,Z){let Y=Z.jsonDoc,$=Z.bufferViews[J.bufferView],W=Y.json.bufferViews[J.bufferView],Q=VJ[J.componentType],X=N0.getElementSize(J.type),K=Q.BYTES_PER_ELEMENT,G=X*K;if(W.byteStride!==void 0&&W.byteStride!==G)return CK1(J,Z);let z=$.byteOffset+(J.byteOffset||0),F=J.count*X*K;return new Q($.buffer.slice(z,z+F))}function TK1(J,Z){let Y=VJ[J.componentType],$=N0.getElementSize(J.type),W;if(J.bufferView!==void 0)W=Oq(J,Z);else W=new Y(J.count*$);let Q=J.sparse;if(!Q)return W;let X=Q.count,K=O6({},J,Q.indices,{count:X,type:"SCALAR"}),G=O6({},J,Q.values,{count:X}),z=Oq(K,Z),F=Oq(G,Z);for(let V=0;V<K.count;V++)for(let H=0;H<$;H++)W[z[V]*$+H]=F[V*$+H];return W}var sK;(function(J){J[J.ARRAY_BUFFER=34962]="ARRAY_BUFFER",J[J.ELEMENT_ARRAY_BUFFER=34963]="ELEMENT_ARRAY_BUFFER"})(sK||(sK={}));class zJ{constructor(J,Z,Y){this._doc=void 0,this.jsonDoc=void 0,this.options=void 0,this.accessorIndexMap=new Map,this.animationIndexMap=new Map,this.bufferIndexMap=new Map,this.cameraIndexMap=new Map,this.skinIndexMap=new Map,this.materialIndexMap=new Map,this.meshIndexMap=new Map,this.nodeIndexMap=new Map,this.imageIndexMap=new Map,this.textureDefIndexMap=new Map,this.textureInfoDefMap=new Map,this.samplerDefIndexMap=new Map,this.sceneIndexMap=new Map,this.imageBufferViews=[],this.otherBufferViews=new Map,this.otherBufferViewsIndexMap=new Map,this.extensionData={},this.bufferURIGenerator=void 0,this.imageURIGenerator=void 0,this.logger=void 0,this._accessorUsageMap=new Map,this.accessorUsageGroupedByParent=new Set(["ARRAY_BUFFER"]),this.accessorParents=new Map,this._doc=J,this.jsonDoc=Z,this.options=Y;let $=J.getRoot(),W=$.listBuffers().length,Q=$.listTextures().length;this.bufferURIGenerator=new jN(W>1,()=>Y.basename||"buffer"),this.imageURIGenerator=new jN(Q>1,(X)=>kK1(J,X)||Y.basename||"texture"),this.logger=J.getLogger()}createTextureInfoDef(J,Z){let Y={magFilter:Z.getMagFilter()||void 0,minFilter:Z.getMinFilter()||void 0,wrapS:Z.getWrapS(),wrapT:Z.getWrapT()},$=JSON.stringify(Y);if(!this.samplerDefIndexMap.has($))this.samplerDefIndexMap.set($,this.jsonDoc.json.samplers.length),this.jsonDoc.json.samplers.push(Y);let W={source:this.imageIndexMap.get(J),sampler:this.samplerDefIndexMap.get($)},Q=JSON.stringify(W);if(!this.textureDefIndexMap.has(Q))this.textureDefIndexMap.set(Q,this.jsonDoc.json.textures.length),this.jsonDoc.json.textures.push(W);let X={index:this.textureDefIndexMap.get(Q)};if(Z.getTexCoord()!==0)X.texCoord=Z.getTexCoord();if(Object.keys(Z.getExtras()).length>0)X.extras=Z.getExtras();return this.textureInfoDefMap.set(Z,X),X}createPropertyDef(J){let Z={};if(J.getName())Z.name=J.getName();if(Object.keys(J.getExtras()).length>0)Z.extras=J.getExtras();return Z}createAccessorDef(J){let Z=this.createPropertyDef(J);if(Z.type=J.getType(),Z.componentType=J.getComponentType(),Z.count=J.getCount(),this._doc.getGraph().listParentEdges(J).some(($)=>$.getName()==="attributes"&&$.getAttributes().key==="POSITION"||$.getName()==="input"))Z.max=J.getMax([]).map(Math.fround),Z.min=J.getMin([]).map(Math.fround);if(J.getNormalized())Z.normalized=J.getNormalized();return Z}createImageData(J,Z,Y){if(this.options.format===V7.GLB)this.imageBufferViews.push(Z),J.bufferView=this.jsonDoc.json.bufferViews.length,this.jsonDoc.json.bufferViews.push({buffer:0,byteOffset:-1,byteLength:Z.byteLength});else{let $=H7.mimeTypeToExtension(Y.getMimeType());J.uri=this.imageURIGenerator.createURI(Y,$),this.assignResourceURI(J.uri,Z,!1)}}assignResourceURI(J,Z,Y){let $=this.jsonDoc.resources;if(!(J in $)){$[J]=Z;return}if(Z===$[J]){this.logger.warn(`Duplicate resource URI, "${J}".`);return}let W=`Resource URI "${J}" already assigned to different data.`;if(!Y){this.logger.warn(W);return}throw new Error(W)}getAccessorUsage(J){let Z=this._accessorUsageMap.get(J);if(Z)return Z;if(J.getSparse())return w5.SPARSE;for(let Y of this._doc.getGraph().listParentEdges(J)){let{usage:$}=Y.getAttributes();if($)return $;if(Y.getParent().propertyType!==c.ROOT)this.logger.warn(`Missing attribute ".usage" on edge, "${Y.getName()}".`)}return w5.OTHER}addAccessorToUsageGroup(J,Z){let Y=this._accessorUsageMap.get(J);if(Y&&Y!==Z)throw new Error(`Accessor with usage "${Y}" cannot be reused as "${Z}".`);return this._accessorUsageMap.set(J,Z),this}}zJ.BufferViewTarget=sK;zJ.BufferViewUsage=w5;zJ.USAGE_TO_TARGET={[w5.ARRAY_BUFFER]:sK.ARRAY_BUFFER,[w5.ELEMENT_ARRAY_BUFFER]:sK.ELEMENT_ARRAY_BUFFER};class jN{constructor(J,Z){this.multiple=void 0,this.basename=void 0,this.counter={},this.multiple=J,this.basename=Z}createURI(J,Z){if(J.getURI())return J.getURI();else if(!this.multiple)return`${this.basename(J)}.${Z}`;else{let Y=this.basename(J);return this.counter[Y]=this.counter[Y]||1,`${Y}_${this.counter[Y]++}.${Z}`}}}function kK1(J,Z){let Y=J.getGraph().listParentEdges(Z).find(($)=>$.getParent()!==J.getRoot());return Y?Y.getName().replace(/texture$/i,""):""}var{BufferViewUsage:Bq}=zJ,{UNSIGNED_INT:EK1,UNSIGNED_SHORT:IK1,UNSIGNED_BYTE:vK1}=N0.ComponentType,SK1=new Set([c.ACCESSOR,c.BUFFER,c.MATERIAL,c.MESH]);class $u{static write(J,Z){let Y=J.getGraph(),$=J.getRoot(),W={asset:O6({generator:`glTF-Transform ${am}`},$.getAsset()),extras:O6({},$.getExtras())},Q={json:W,resources:{}},X=new zJ(J,Q,Z),K=Z.logger||n6.DEFAULT_INSTANCE,G=new Set(Z.extensions.map((w)=>w.EXTENSION_NAME)),z=J.getRoot().listExtensionsUsed().filter((w)=>G.has(w.extensionName)).sort((w,O)=>w.extensionName>O.extensionName?1:-1),F=J.getRoot().listExtensionsRequired().filter((w)=>G.has(w.extensionName)).sort((w,O)=>w.extensionName>O.extensionName?1:-1);if(z.length<J.getRoot().listExtensionsUsed().length)K.warn("Some extensions were not registered for I/O, and will not be written.");for(let w of z){let O=w.prewriteTypes.filter((R)=>!SK1.has(R));if(O.length)K.warn(`Prewrite hooks for some types (${O.join()}), requested by extension ${w.extensionName}, are unsupported. Please file an issue or a PR.`);for(let R of w.writeDependencies)w.install(R,Z.dependencies[R])}function V(w,O,R,N){let P=[],D=0;for(let k of w){let I=X.createAccessorDef(k);I.bufferView=W.bufferViews.length;let A=k.getArray(),v=m0.pad(m0.toView(A));I.byteOffset=D,D+=v.byteLength,P.push(v),X.accessorIndexMap.set(k,W.accessors.length),W.accessors.push(I)}let j=m0.concat(P),C={buffer:O,byteOffset:R,byteLength:j.byteLength};if(N)C.target=N;return W.bufferViews.push(C),{buffers:P,byteLength:D}}function H(w,O,R){let N=w[0].getCount(),P=0;for(let I of w){let A=X.createAccessorDef(I);A.bufferView=W.bufferViews.length,A.byteOffset=P;let v=I.getElementSize(),x=I.getComponentSize();P+=m0.padNumber(v*x),X.accessorIndexMap.set(I,W.accessors.length),W.accessors.push(A)}let D=N*P,j=new ArrayBuffer(D),C=new DataView(j);for(let I=0;I<N;I++){let A=0;for(let v of w){let x=v.getElementSize(),u=v.getComponentSize(),h=v.getComponentType(),d=v.getArray();for(let W0=0;W0<x;W0++){let U0=I*P+A+W0*u,B0=d[I*x+W0];switch(h){case N0.ComponentType.FLOAT:C.setFloat32(U0,B0,!0);break;case N0.ComponentType.BYTE:C.setInt8(U0,B0);break;case N0.ComponentType.SHORT:C.setInt16(U0,B0,!0);break;case N0.ComponentType.UNSIGNED_BYTE:C.setUint8(U0,B0);break;case N0.ComponentType.UNSIGNED_SHORT:C.setUint16(U0,B0,!0);break;case N0.ComponentType.UNSIGNED_INT:C.setUint32(U0,B0,!0);break;default:throw new Error("Unexpected component type: "+h)}}A+=m0.padNumber(x*u)}}let k={buffer:O,byteOffset:R,byteLength:D,byteStride:P,target:zJ.BufferViewTarget.ARRAY_BUFFER};return W.bufferViews.push(k),{byteLength:D,buffers:[new Uint8Array(j)]}}function q(w,O,R){let N=[],P=0,D=new Map,j=-1/0,C=!1;for(let h of w){let d=X.createAccessorDef(h);W.accessors.push(d),X.accessorIndexMap.set(h,W.accessors.length-1);let W0=[],U0=[],B0=[],y0=new Array(h.getElementSize()).fill(0);for(let O1=0,O9=h.getCount();O1<O9;O1++){if(h.getElement(O1,B0),A0.eq(B0,y0,0))continue;j=Math.max(O1,j),W0.push(O1);for(let p8=0;p8<B0.length;p8++)U0.push(B0[p8])}let B1=W0.length,L8={accessorDef:d,count:B1};if(D.set(h,L8),B1===0)continue;if(B1>h.getCount()/2)C=!0;let B8=VJ[h.getComponentType()];L8.indices=W0,L8.values=new B8(U0)}if(!Number.isFinite(j))return{buffers:N,byteLength:P};if(C)K.warn("Some sparse accessors have >50% non-zero elements, which may increase file size.");let k=j<255?Uint8Array:j<65535?Uint16Array:Uint32Array,I=j<255?vK1:j<65535?IK1:EK1,A={buffer:O,byteOffset:R+P,byteLength:0};for(let h of w){let d=D.get(h);if(d.count===0)continue;d.indicesByteOffset=A.byteLength;let W0=m0.pad(m0.toView(new k(d.indices)));N.push(W0),P+=W0.byteLength,A.byteLength+=W0.byteLength}W.bufferViews.push(A);let v=W.bufferViews.length-1,x={buffer:O,byteOffset:R+P,byteLength:0};for(let h of w){let d=D.get(h);if(d.count===0)continue;d.valuesByteOffset=x.byteLength;let W0=m0.pad(m0.toView(d.values));N.push(W0),P+=W0.byteLength,x.byteLength+=W0.byteLength}W.bufferViews.push(x);let u=W.bufferViews.length-1;for(let h of w){let d=D.get(h);if(d.count===0)continue;d.accessorDef.sparse={count:d.count,indices:{bufferView:v,byteOffset:d.indicesByteOffset,componentType:I},values:{bufferView:u,byteOffset:d.valuesByteOffset}}}return{buffers:N,byteLength:P}}if(W.accessors=[],W.bufferViews=[],W.samplers=[],W.textures=[],W.images=$.listTextures().map((w,O)=>{let R=X.createPropertyDef(w);if(w.getMimeType())R.mimeType=w.getMimeType();let N=w.getImage();if(N)X.createImageData(R,N,w);return X.imageIndexMap.set(w,O),R}),z.filter((w)=>w.prewriteTypes.includes(c.ACCESSOR)).forEach((w)=>w.prewrite(X,c.ACCESSOR)),$.listAccessors().forEach((w)=>{let{accessorUsageGroupedByParent:O,accessorParents:R}=X;if(X.accessorIndexMap.has(w))return;let N=X.getAccessorUsage(w);if(X.addAccessorToUsageGroup(w,N),O.has(N)){let P=Y.listParents(w).find((D)=>D.propertyType!==c.ROOT);R.set(w,P)}}),z.filter((w)=>w.prewriteTypes.includes(c.BUFFER)).forEach((w)=>w.prewrite(X,c.BUFFER)),($.listAccessors().length>0||X.otherBufferViews.size>0||$.listTextures().length>0&&Z.format===V7.GLB)&&$.listBuffers().length===0)throw new Error("Buffer required for Document resources, but none was found.");if(W.buffers=[],$.listBuffers().forEach((w,O)=>{let R=X.createPropertyDef(w),N=X.accessorUsageGroupedByParent,P=w.listParents().filter((x)=>x instanceof N0),D=new Set(P.map((x)=>X.accessorParents.get(x))),j=new Map(Array.from(D).map((x,u)=>[x,u])),C={};for(let x of P){var k;if(X.accessorIndexMap.has(x))continue;let u=X.getAccessorUsage(x),h=u;if(N.has(u)){let d=X.accessorParents.get(x);h+=`:${j.get(d)}`}C[k=h]||(C[k]={usage:u,accessors:[]}),C[h].accessors.push(x)}let I=[],A=W.buffers.length,v=0;for(let{usage:x,accessors:u}of Object.values(C))if(x===Bq.ARRAY_BUFFER&&Z.vertexLayout===Rq.INTERLEAVED){let h=H(u,A,v);v+=h.byteLength;for(let d of h.buffers)I.push(d)}else if(x===Bq.ARRAY_BUFFER)for(let h of u){let d=H([h],A,v);v+=d.byteLength;for(let W0 of d.buffers)I.push(W0)}else if(x===Bq.SPARSE){let h=q(u,A,v);v+=h.byteLength;for(let d of h.buffers)I.push(d)}else if(x===Bq.ELEMENT_ARRAY_BUFFER){let h=zJ.BufferViewTarget.ELEMENT_ARRAY_BUFFER,d=V(u,A,v,h);v+=d.byteLength;for(let W0 of d.buffers)I.push(W0)}else{let h=V(u,A,v);v+=h.byteLength;for(let d of h.buffers)I.push(d)}if(X.imageBufferViews.length&&O===0){for(let x=0;x<X.imageBufferViews.length;x++)if(W.bufferViews[W.images[x].bufferView].byteOffset=v,v+=X.imageBufferViews[x].byteLength,I.push(X.imageBufferViews[x]),v%8){let u=8-v%8;v+=u,I.push(new Uint8Array(u))}}if(X.otherBufferViews.has(w))for(let x of X.otherBufferViews.get(w))W.bufferViews.push({buffer:A,byteOffset:v,byteLength:x.byteLength}),X.otherBufferViewsIndexMap.set(x,W.bufferViews.length-1),v+=x.byteLength,I.push(x);if(v){let x;if(Z.format===V7.GLB)x=Mq;else x=X.bufferURIGenerator.createURI(w,"bin"),R.uri=x;R.byteLength=v,X.assignResourceURI(x,m0.concat(I),!0)}W.buffers.push(R),X.bufferIndexMap.set(w,O)}),$.listAccessors().find((w)=>!w.getBuffer()))K.warn("Skipped writing one or more Accessors: no Buffer assigned.");z.filter((w)=>w.prewriteTypes.includes(c.MATERIAL)).forEach((w)=>w.prewrite(X,c.MATERIAL)),W.materials=$.listMaterials().map((w,O)=>{let R=X.createPropertyDef(w);if(w.getAlphaMode()!==z4.AlphaMode.OPAQUE)R.alphaMode=w.getAlphaMode();if(w.getAlphaMode()===z4.AlphaMode.MASK)R.alphaCutoff=w.getAlphaCutoff();if(w.getDoubleSided())R.doubleSided=!0;if(R.pbrMetallicRoughness={},!A0.eq(w.getBaseColorFactor(),[1,1,1,1]))R.pbrMetallicRoughness.baseColorFactor=w.getBaseColorFactor();if(!A0.eq(w.getEmissiveFactor(),[0,0,0]))R.emissiveFactor=w.getEmissiveFactor();if(w.getRoughnessFactor()!==1)R.pbrMetallicRoughness.roughnessFactor=w.getRoughnessFactor();if(w.getMetallicFactor()!==1)R.pbrMetallicRoughness.metallicFactor=w.getMetallicFactor();if(w.getBaseColorTexture()){let N=w.getBaseColorTexture(),P=w.getBaseColorTextureInfo();R.pbrMetallicRoughness.baseColorTexture=X.createTextureInfoDef(N,P)}if(w.getEmissiveTexture()){let N=w.getEmissiveTexture(),P=w.getEmissiveTextureInfo();R.emissiveTexture=X.createTextureInfoDef(N,P)}if(w.getNormalTexture()){let N=w.getNormalTexture(),P=w.getNormalTextureInfo(),D=X.createTextureInfoDef(N,P);if(w.getNormalScale()!==1)D.scale=w.getNormalScale();R.normalTexture=D}if(w.getOcclusionTexture()){let N=w.getOcclusionTexture(),P=w.getOcclusionTextureInfo(),D=X.createTextureInfoDef(N,P);if(w.getOcclusionStrength()!==1)D.strength=w.getOcclusionStrength();R.occlusionTexture=D}if(w.getMetallicRoughnessTexture()){let N=w.getMetallicRoughnessTexture(),P=w.getMetallicRoughnessTextureInfo();R.pbrMetallicRoughness.metallicRoughnessTexture=X.createTextureInfoDef(N,P)}return X.materialIndexMap.set(w,O),R}),z.filter((w)=>w.prewriteTypes.includes(c.MESH)).forEach((w)=>w.prewrite(X,c.MESH)),W.meshes=$.listMeshes().map((w,O)=>{let R=X.createPropertyDef(w),N=null;if(R.primitives=w.listPrimitives().map((P)=>{let D={attributes:{}};D.mode=P.getMode();let j=P.getMaterial();if(j)D.material=X.materialIndexMap.get(j);if(Object.keys(P.getExtras()).length)D.extras=P.getExtras();let C=P.getIndices();if(C)D.indices=X.accessorIndexMap.get(C);for(let k of P.listSemantics())D.attributes[k]=X.accessorIndexMap.get(P.getAttribute(k));for(let k of P.listTargets()){let I={};for(let A of k.listSemantics())I[A]=X.accessorIndexMap.get(k.getAttribute(A));D.targets=D.targets||[],D.targets.push(I)}if(P.listTargets().length&&!N)N=P.listTargets().map((k)=>k.getName());return D}),w.getWeights().length)R.weights=w.getWeights();if(N)R.extras=R.extras||{},R.extras.targetNames=N;return X.meshIndexMap.set(w,O),R}),W.cameras=$.listCameras().map((w,O)=>{let R=X.createPropertyDef(w);if(R.type=w.getType(),R.type===JY.Type.PERSPECTIVE){R.perspective={znear:w.getZNear(),zfar:w.getZFar(),yfov:w.getYFov()};let N=w.getAspectRatio();if(N!==null)R.perspective.aspectRatio=N}else R.orthographic={znear:w.getZNear(),zfar:w.getZFar(),xmag:w.getXMag(),ymag:w.getYMag()};return X.cameraIndexMap.set(w,O),R}),W.nodes=$.listNodes().map((w,O)=>{let R=X.createPropertyDef(w);if(!A0.eq(w.getTranslation(),[0,0,0]))R.translation=w.getTranslation();if(!A0.eq(w.getRotation(),[0,0,0,1]))R.rotation=w.getRotation();if(!A0.eq(w.getScale(),[1,1,1]))R.scale=w.getScale();if(w.getWeights().length)R.weights=w.getWeights();return X.nodeIndexMap.set(w,O),R}),W.skins=$.listSkins().map((w,O)=>{let R=X.createPropertyDef(w),N=w.getInverseBindMatrices();if(N)R.inverseBindMatrices=X.accessorIndexMap.get(N);let P=w.getSkeleton();if(P)R.skeleton=X.nodeIndexMap.get(P);return R.joints=w.listJoints().map((D)=>X.nodeIndexMap.get(D)),X.skinIndexMap.set(w,O),R}),$.listNodes().forEach((w,O)=>{let R=W.nodes[O],N=w.getMesh();if(N)R.mesh=X.meshIndexMap.get(N);let P=w.getCamera();if(P)R.camera=X.cameraIndexMap.get(P);let D=w.getSkin();if(D)R.skin=X.skinIndexMap.get(D);if(w.listChildren().length>0)R.children=w.listChildren().map((j)=>X.nodeIndexMap.get(j))}),W.animations=$.listAnimations().map((w,O)=>{let R=X.createPropertyDef(w),N=new Map;return R.samplers=w.listSamplers().map((P,D)=>{let j=X.createPropertyDef(P);return j.input=X.accessorIndexMap.get(P.getInput()),j.output=X.accessorIndexMap.get(P.getOutput()),j.interpolation=P.getInterpolation(),N.set(P,D),j}),R.channels=w.listChannels().map((P)=>{let D=X.createPropertyDef(P);return D.sampler=N.get(P.getSampler()),D.target={node:X.nodeIndexMap.get(P.getTargetNode()),path:P.getTargetPath()},D}),X.animationIndexMap.set(w,O),R}),W.scenes=$.listScenes().map((w,O)=>{let R=X.createPropertyDef(w);return R.nodes=w.listChildren().map((N)=>X.nodeIndexMap.get(N)),X.sceneIndexMap.set(w,O),R});let L=$.getDefaultScene();if(L)W.scene=$.listScenes().indexOf(L);return W.extensionsUsed=z.map((w)=>w.extensionName),W.extensionsRequired=F.map((w)=>w.extensionName),z.forEach((w)=>w.write(X)),_K1(W),Q}}function _K1(J){let Z=[];for(let Y in J){let $=J[Y];if(Array.isArray($)&&$.length===0)Z.push(Y);else if($===null||$==="")Z.push(Y);else if($&&typeof $==="object"&&Object.keys($).length===0)Z.push(Y)}for(let Y of Z)delete J[Y]}var jq;(function(J){J[J.JSON=1313821514]="JSON",J[J.BIN=5130562]="BIN"})(jq||(jq={}));class Wu{constructor(){this._logger=n6.DEFAULT_INSTANCE,this._extensions=new Set,this._dependencies={},this._vertexLayout=Rq.INTERLEAVED,this.lastReadBytes=0,this.lastWriteBytes=0}setLogger(J){return this._logger=J,this}registerExtensions(J){for(let Z of J)this._extensions.add(Z),Z.register();return this}registerDependencies(J){return Object.assign(this._dependencies,J),this}setVertexLayout(J){return this._vertexLayout=J,this}async read(J){return await this.readJSON(await this.readAsJSON(J))}async readAsJSON(J){let Z=await this.readURI(J,"view");this.lastReadBytes=Z.byteLength;let Y=nm(Z)?this._binaryToJSON(Z):{json:JSON.parse(m0.decodeText(Z)),resources:{}};return await this._readResourcesExternal(Y,this.dirname(J)),this._readResourcesInternal(Y),Y}async readJSON(J){return J=this._copyJSON(J),this._readResourcesInternal(J),Yu.read(J,{extensions:Array.from(this._extensions),dependencies:this._dependencies,logger:this._logger})}async binaryToJSON(J){let Z=this._binaryToJSON(m0.assertView(J));this._readResourcesInternal(Z);let Y=Z.json;if(Y.buffers&&Y.buffers.some(($)=>xK1(Z,$)))throw new Error("Cannot resolve external buffers with binaryToJSON().");else if(Y.images&&Y.images.some(($)=>AK1(Z,$)))throw new Error("Cannot resolve external images with binaryToJSON().");return Z}async readBinary(J){return this.readJSON(await this.binaryToJSON(m0.assertView(J)))}async writeJSON(J,Z={}){if(Z.format===V7.GLB&&J.getRoot().listBuffers().length>1)throw new Error("GLB must have 0\u20131 buffers.");return $u.write(J,{format:Z.format||V7.GLTF,basename:Z.basename||"",logger:this._logger,vertexLayout:this._vertexLayout,dependencies:O6({},this._dependencies),extensions:Array.from(this._extensions)})}async writeBinary(J){let{json:Z,resources:Y}=await this.writeJSON(J,{format:V7.GLB}),$=new Uint32Array([1179937895,2,12]),W=JSON.stringify(Z),Q=m0.pad(m0.encodeText(W),32),X=m0.toView(new Uint32Array([Q.byteLength,1313821514])),K=m0.concat([X,Q]);$[$.length-1]+=K.byteLength;let G=Object.values(Y)[0];if(!G||!G.byteLength)return m0.concat([m0.toView($),K]);let z=m0.pad(G,0),F=m0.toView(new Uint32Array([z.byteLength,5130562])),V=m0.concat([F,z]);return $[$.length-1]+=V.byteLength,m0.concat([m0.toView($),K,V])}async _readResourcesExternal(J,Z){var Y=this;let $=J.json.images||[],W=J.json.buffers||[],Q=[...$,...W].map(async function(X){let K=X.uri;if(!K||K.match(/data:/))return Promise.resolve();J.resources[K]=await Y.readURI(Y.resolve(Z,K),"view"),Y.lastReadBytes+=J.resources[K].byteLength});await Promise.all(Q)}_readResourcesInternal(J){function Z(W){if(!W.uri)return;if(W.uri in J.resources){m0.assertView(J.resources[W.uri]);return}if(W.uri.match(/data:/)){let Q=`__${em()}.${q7.extension(W.uri)}`;J.resources[Q]=m0.createBufferFromDataURI(W.uri),W.uri=Q}}(J.json.images||[]).forEach((W)=>{if(W.bufferView===void 0&&W.uri===void 0)throw new Error("Missing resource URI or buffer view.");Z(W)}),(J.json.buffers||[]).forEach(Z)}_copyJSON(J){let{images:Z,buffers:Y}=J.json;if(J={json:O6({},J.json),resources:O6({},J.resources)},Z)J.json.images=Z.map(($)=>O6({},$));if(Y)J.json.buffers=Y.map(($)=>O6({},$));return J}_binaryToJSON(J){if(!nm(J))throw new Error("Invalid glTF 2.0 binary.");let Z=new Uint32Array(J.buffer,J.byteOffset+12,2);if(Z[1]!==jq.JSON)throw new Error("Missing required GLB JSON chunk.");let Y=20,$=Z[0],W=m0.decodeText(m0.toView(J,Y,$)),Q=JSON.parse(W),X=Y+$;if(J.byteLength<=X)return{json:Q,resources:{}};let K=new Uint32Array(J.buffer,J.byteOffset+X,2);if(K[1]!==jq.BIN)return{json:Q,resources:{}};let G=K[0],z=m0.toView(J,X+8,G);return{json:Q,resources:{[Mq]:z}}}}function xK1(J,Z){return Z.uri!==void 0&&!(Z.uri in J.resources)}function AK1(J,Z){return Z.uri!==void 0&&!(Z.uri in J.resources)&&Z.bufferView===void 0}function nm(J){if(J.byteLength<3*Uint32Array.BYTES_PER_ELEMENT)return!1;let Z=new Uint32Array(J.buffer,J.byteOffset,3);return Z[0]===1179937895&&Z[1]===2}class vN extends Wu{constructor(J=null,Z=f5.DEFAULT_INIT){super();this._fetch=void 0,this._fetchConfig=void 0,this._init=void 0,this._fetchEnabled=!1,this._fetch=J,this._fetchConfig=Z,this._init=this.init()}async init(){if(this._init)return this._init;return Promise.all([import("fs"),import("path")]).then(([J,Z])=>{this._fs=J.promises,this._path=Z})}setAllowNetwork(J){if(J&&!this._fetch)throw new Error("NodeIO requires a Fetch API implementation for HTTP requests.");return this._fetchEnabled=J,this}async readURI(J,Z){if(await this.init(),f5.isAbsoluteURL(J)){if(!this._fetchEnabled||!this._fetch)throw new Error("Network request blocked. Allow HTTP requests explicitly, if needed.");let Y=await this._fetch(J,this._fetchConfig);switch(Z){case"view":return new Uint8Array(await Y.arrayBuffer());case"text":return Y.text()}}else switch(Z){case"view":return this._fs.readFile(J);case"text":return this._fs.readFile(J,"utf8")}}resolve(J,Z){if(f5.isAbsoluteURL(J)||f5.isAbsoluteURL(Z))return f5.resolve(J,Z);return this._path.resolve(J,decodeURIComponent(Z))}dirname(J){if(f5.isAbsoluteURL(J))return f5.dirname(J);return this._path.dirname(J)}async write(J,Z){await this.init(),await(!!J.match(/\.glb$/)?this._writeGLB(J,Z):this._writeGLTF(J,Z))}async _writeGLTF(J,Z){var Y=this;this.lastWriteBytes=0;let{json:$,resources:W}=await this.writeJSON(Z,{format:V7.GLTF,basename:q7.basename(J)}),{_fs:Q,_path:X}=this,K=X.dirname(J),G=JSON.stringify($,null,2);await Q.writeFile(J,G),this.lastWriteBytes+=G.length;for(let z of hK1(Object.keys(W),10))await Promise.all(z.map(async function(F){if(f5.isAbsoluteURL(F)){if(f5.extension(F)==="bin")throw new Error(`Cannot write buffer to path "${F}".`);return}let V=X.join(K,decodeURIComponent(F));await Q.mkdir(X.dirname(V),{recursive:!0}),await Q.writeFile(V,W[F]),Y.lastWriteBytes+=W[F].byteLength}))}async _writeGLB(J,Z){let Y=await this.writeBinary(Z);await this._fs.writeFile(J,Y),this.lastWriteBytes=Y.byteLength}}function hK1(J,Z){let Y=[];for(let $=0,W=J.length;$<W;$+=Z){let Q=[];for(let X=0;X<Z&&$+X<W;X++)Q.push(J[$+X]);Y.push(Q)}return Y}var Jl=i(SN(),1),Zl=i(yc(),1),TV1=i(ec(),1);async function kV1(J,Z){if(!(J instanceof Uint8Array))throw new Error("[ndarray-pixels] Input must be Uint8Array or Buffer.");let{data:Y,info:$}=await Zl.default(J).ensureAlpha().raw().toBuffer({resolveWithObject:!0});return Jl.default(new Uint8Array(Y),[$.width,$.height,4],[4,4*$.width|0,1],0)}async function Yl(J,Z){return kV1(J)}var EV1="v4.1.3",zP="@glb.bin",l;(function(J){J.ACCESSOR="Accessor",J.ANIMATION="Animation",J.ANIMATION_CHANNEL="AnimationChannel",J.ANIMATION_SAMPLER="AnimationSampler",J.BUFFER="Buffer",J.CAMERA="Camera",J.MATERIAL="Material",J.MESH="Mesh",J.PRIMITIVE="Primitive",J.PRIMITIVE_TARGET="PrimitiveTarget",J.NODE="Node",J.ROOT="Root",J.SCENE="Scene",J.SKIN="Skin",J.TEXTURE="Texture",J.TEXTURE_INFO="TextureInfo"})(l||(l={}));var $l;(function(J){J.INTERLEAVED="interleaved",J.SEPARATE="separate"})($l||($l={}));var O5;(function(J){J.ARRAY_BUFFER="ARRAY_BUFFER",J.ELEMENT_ARRAY_BUFFER="ELEMENT_ARRAY_BUFFER",J.INVERSE_BIND_MATRICES="INVERSE_BIND_MATRICES",J.OTHER="OTHER",J.SPARSE="SPARSE"})(O5||(O5={}));var M5;(function(J){J[J.R=4096]="R",J[J.G=256]="G",J[J.B=16]="B",J[J.A=1]="A"})(M5||(M5={}));var $P;(function(J){J.GLTF="GLTF",J.GLB="GLB"})($P||($P={}));var WP=typeof Float32Array!=="undefined"?Float32Array:Array;if(!Math.hypot)Math.hypot=function(){var J=0,Z=arguments.length;while(Z--)J+=arguments[Z]*arguments[Z];return Math.sqrt(J)};function IV1(){var J=new WP(3);if(WP!=Float32Array)J[0]=0,J[1]=0,J[2]=0;return J}function YP(J){var Z=J[0],Y=J[1],$=J[2];return Math.hypot(Z,Y,$)}function vV1(J,Z,Y){var $=Z[0],W=Z[1],Q=Z[2],X=Y[3]*$+Y[7]*W+Y[11]*Q+Y[15];return X=X||1,J[0]=(Y[0]*$+Y[4]*W+Y[8]*Q+Y[12])/X,J[1]=(Y[1]*$+Y[5]*W+Y[9]*Q+Y[13])/X,J[2]=(Y[2]*$+Y[6]*W+Y[10]*Q+Y[14])/X,J}(function(){var J=IV1();return function(Z,Y,$,W,Q,X){var K,G;if(!Y)Y=3;if(!$)$=0;if(W)G=Math.min(W*Y+$,Z.length);else G=Z.length;for(K=$;K<G;K+=Y)J[0]=Z[K],J[1]=Z[K+1],J[2]=Z[K+2],Q(J,J,X),Z[K]=J[0],Z[K+1]=J[1],Z[K+2]=J[2];return Z}})();function Kl(J){let Z=Gl(),Y=J.propertyType===l.NODE?[J]:J.listChildren();for(let $ of Y)$.traverse((W)=>{let Q=W.getMesh();if(!Q)return;let X=SV1(Q,W.getWorldMatrix());if(X.min.every(isFinite)&&X.max.every(isFinite))QP(X.min,Z),QP(X.max,Z)});return Z}function SV1(J,Z){let Y=Gl();for(let $ of J.listPrimitives()){let W=$.getAttribute("POSITION"),Q=$.getIndices();if(!W)continue;let X=[0,0,0],K=[0,0,0];for(let G=0,z=Q?Q.getCount():W.getCount();G<z;G++){let F=Q?Q.getScalar(G):G;X=W.getElement(F,X),K=vV1(K,X,Z),QP(K,Y)}}return Y}function QP(J,Z){for(let Y=0;Y<3;Y++)Z.min[Y]=Math.min(J[Y],Z.min[Y]),Z.max[Y]=Math.max(J[Y],Z.max[Y])}function Gl(){return{min:[1/0,1/0,1/0],max:[-1/0,-1/0,-1/0]}}class W6{static createBufferFromDataURI(J){if(typeof Buffer==="undefined"){let Z=atob(J.split(",")[1]),Y=new Uint8Array(Z.length);for(let $=0;$<Z.length;$++)Y[$]=Z.charCodeAt($);return Y}else{let Z=J.split(",")[1],Y=J.indexOf("base64")>=0;return Buffer.from(Z,Y?"base64":"utf8")}}static encodeText(J){return new TextEncoder().encode(J)}static decodeText(J){return new TextDecoder().decode(J)}static concat(J){let Z=0;for(let W of J)Z+=W.byteLength;let Y=new Uint8Array(Z),$=0;for(let W of J)Y.set(W,$),$+=W.byteLength;return Y}static pad(J,Z=0){let Y=this.padNumber(J.byteLength);if(Y===J.byteLength)return J;let $=new Uint8Array(Y);if($.set(J),Z!==0)for(let W=J.byteLength;W<Y;W++)$[W]=Z;return $}static padNumber(J){return Math.ceil(J/4)*4}static equals(J,Z){if(J===Z)return!0;if(J.byteLength!==Z.byteLength)return!1;let Y=J.byteLength;while(Y--)if(J[Y]!==Z[Y])return!1;return!0}static toView(J,Z=0,Y=1/0){return new Uint8Array(J.buffer,J.byteOffset+Z,Math.min(J.byteLength,Y))}static assertView(J){if(J&&!ArrayBuffer.isView(J))throw new Error(`Method requires Uint8Array parameter; received "${typeof J}".`);return J}}class zl{match(J){return J.length>=3&&J[0]===255&&J[1]===216&&J[2]===255}getSize(J){let Z=new DataView(J.buffer,J.byteOffset+4),Y,$;while(Z.byteLength){if(Y=Z.getUint16(0,!1),_V1(Z,Y),$=Z.getUint8(Y+1),$===192||$===193||$===194)return[Z.getUint16(Y+7,!1),Z.getUint16(Y+5,!1)];Z=new DataView(J.buffer,Z.byteOffset+Y+2)}throw new TypeError("Invalid JPG, no size found")}getChannels(J){return 3}}class ZU{match(J){return J.length>=8&&J[0]===137&&J[1]===80&&J[2]===78&&J[3]===71&&J[4]===13&&J[5]===10&&J[6]===26&&J[7]===10}getSize(J){let Z=new DataView(J.buffer,J.byteOffset);if(W6.decodeText(J.slice(12,16))===ZU.PNG_FRIED_CHUNK_NAME)return[Z.getUint32(32,!1),Z.getUint32(36,!1)];return[Z.getUint32(16,!1),Z.getUint32(20,!1)]}getChannels(J){return 4}}ZU.PNG_FRIED_CHUNK_NAME="CgBI";class v9{static registerFormat(J,Z){this.impls[J]=Z}static getMimeType(J){for(let Z in this.impls)if(this.impls[Z].match(J))return Z;return null}static getSize(J,Z){if(!this.impls[Z])return null;return this.impls[Z].getSize(J)}static getChannels(J,Z){if(!this.impls[Z])return null;return this.impls[Z].getChannels(J)}static getVRAMByteLength(J,Z){if(!this.impls[Z])return null;if(this.impls[Z].getVRAMByteLength)return this.impls[Z].getVRAMByteLength(J);let Y=0,$=4,W=this.getSize(J,Z);if(!W)return null;while(W[0]>1||W[1]>1)Y+=W[0]*W[1]*$,W[0]=Math.max(Math.floor(W[0]/2),1),W[1]=Math.max(Math.floor(W[1]/2),1);return Y+=1*$,Y}static mimeTypeToExtension(J){if(J==="image/jpeg")return"jpg";return J.split("/").pop()}static extensionToMimeType(J){if(J==="jpg")return"image/jpeg";if(!J)return"";return`image/${J}`}}v9.impls={"image/jpeg":new zl,"image/png":new ZU};function _V1(J,Z){if(Z>J.byteLength)throw new TypeError("Corrupt JPG, exceeded buffer limits");if(J.getUint8(Z)!==255)throw new TypeError("Invalid JPG, marker table corrupted");return J}class XG{static basename(J){let Z=J.split(/[\\/]/).pop();return Z.substring(0,Z.lastIndexOf("."))}static extension(J){if(J.startsWith("data:image/")){let Z=J.match(/data:(image\/\w+)/)[1];return v9.mimeTypeToExtension(Z)}else if(J.startsWith("data:model/gltf+json"))return"gltf";else if(J.startsWith("data:model/gltf-binary"))return"glb";else if(J.startsWith("data:application/"))return"bin";return J.split(/[\\/]/).pop().split(/[.]/).pop()}}function Wl(J){return Object.prototype.toString.call(J)==="[object Object]"}function XY(J){if(Wl(J)===!1)return!1;let Z=J.constructor;if(Z===void 0)return!0;let Y=Z.prototype;if(Wl(Y)===!1)return!1;if(Object.prototype.hasOwnProperty.call(Y,"isPrototypeOf")===!1)return!1;return!0}var XP,KP;(function(J){J[J.SILENT=4]="SILENT",J[J.ERROR=3]="ERROR",J[J.WARN=2]="WARN",J[J.INFO=1]="INFO",J[J.DEBUG=0]="DEBUG"})(KP||(KP={}));class w4{constructor(J){this.verbosity=void 0,this.verbosity=J}debug(J){if(this.verbosity<=w4.Verbosity.DEBUG)console.debug(J)}info(J){if(this.verbosity<=w4.Verbosity.INFO)console.info(J)}warn(J){if(this.verbosity<=w4.Verbosity.WARN)console.warn(J)}error(J){if(this.verbosity<=w4.Verbosity.ERROR)console.error(J)}}XP=w4;w4.Verbosity=KP;w4.DEFAULT_INSTANCE=new XP(XP.Verbosity.INFO);function xV1(J){var Z=J[0],Y=J[1],$=J[2],W=J[3],Q=J[4],X=J[5],K=J[6],G=J[7],z=J[8],F=J[9],V=J[10],H=J[11],q=J[12],U=J[13],L=J[14],w=J[15],O=Z*X-Y*Q,R=Z*K-$*Q,N=Z*G-W*Q,P=Y*K-$*X,D=Y*G-W*X,j=$*G-W*K,C=z*U-F*q,k=z*L-V*q,I=z*w-H*q,A=F*L-V*U,v=F*w-H*U,x=V*w-H*L;return O*x-R*v+N*A+P*I-D*k+j*C}function AV1(J,Z,Y){var $=Z[0],W=Z[1],Q=Z[2],X=Z[3],K=Z[4],G=Z[5],z=Z[6],F=Z[7],V=Z[8],H=Z[9],q=Z[10],U=Z[11],L=Z[12],w=Z[13],O=Z[14],R=Z[15],N=Y[0],P=Y[1],D=Y[2],j=Y[3];return J[0]=N*$+P*K+D*V+j*L,J[1]=N*W+P*G+D*H+j*w,J[2]=N*Q+P*z+D*q+j*O,J[3]=N*X+P*F+D*U+j*R,N=Y[4],P=Y[5],D=Y[6],j=Y[7],J[4]=N*$+P*K+D*V+j*L,J[5]=N*W+P*G+D*H+j*w,J[6]=N*Q+P*z+D*q+j*O,J[7]=N*X+P*F+D*U+j*R,N=Y[8],P=Y[9],D=Y[10],j=Y[11],J[8]=N*$+P*K+D*V+j*L,J[9]=N*W+P*G+D*H+j*w,J[10]=N*Q+P*z+D*q+j*O,J[11]=N*X+P*F+D*U+j*R,N=Y[12],P=Y[13],D=Y[14],j=Y[15],J[12]=N*$+P*K+D*V+j*L,J[13]=N*W+P*G+D*H+j*w,J[14]=N*Q+P*z+D*q+j*O,J[15]=N*X+P*F+D*U+j*R,J}function hV1(J,Z){var Y=Z[0],$=Z[1],W=Z[2],Q=Z[4],X=Z[5],K=Z[6],G=Z[8],z=Z[9],F=Z[10];return J[0]=Math.hypot(Y,$,W),J[1]=Math.hypot(Q,X,K),J[2]=Math.hypot(G,z,F),J}function fV1(J,Z){var Y=new WP(3);hV1(Y,Z);var $=1/Y[0],W=1/Y[1],Q=1/Y[2],X=Z[0]*$,K=Z[1]*W,G=Z[2]*Q,z=Z[4]*$,F=Z[5]*W,V=Z[6]*Q,H=Z[8]*$,q=Z[9]*W,U=Z[10]*Q,L=X+F+U,w=0;if(L>0)w=Math.sqrt(L+1)*2,J[3]=0.25*w,J[0]=(V-q)/w,J[1]=(H-G)/w,J[2]=(K-z)/w;else if(X>F&&X>U)w=Math.sqrt(1+X-F-U)*2,J[3]=(V-q)/w,J[0]=0.25*w,J[1]=(K+z)/w,J[2]=(H+G)/w;else if(F>U)w=Math.sqrt(1+F-X-U)*2,J[3]=(H-G)/w,J[0]=(K+z)/w,J[1]=0.25*w,J[2]=(V+q)/w;else w=Math.sqrt(1+U-X-F)*2,J[3]=(K-z)/w,J[0]=(H+G)/w,J[1]=(V+q)/w,J[2]=0.25*w;return J}class o1{static identity(J){return J}static eq(J,Z,Y=0.00001){if(J.length!==Z.length)return!1;for(let $=0;$<J.length;$++)if(Math.abs(J[$]-Z[$])>Y)return!1;return!0}static clamp(J,Z,Y){if(J<Z)return Z;if(J>Y)return Y;return J}static decodeNormalizedInt(J,Z){switch(Z){case 5126:return J;case 5123:return J/65535;case 5121:return J/255;case 5122:return Math.max(J/32767,-1);case 5120:return Math.max(J/127,-1);default:throw new Error("Invalid component type.")}}static encodeNormalizedInt(J,Z){switch(Z){case 5126:return J;case 5123:return Math.round(o1.clamp(J,0,1)*65535);case 5121:return Math.round(o1.clamp(J,0,1)*255);case 5122:return Math.round(o1.clamp(J,-1,1)*32767);case 5120:return Math.round(o1.clamp(J,-1,1)*127);default:throw new Error("Invalid component type.")}}static decompose(J,Z,Y,$){let W=YP([J[0],J[1],J[2]]),Q=YP([J[4],J[5],J[6]]),X=YP([J[8],J[9],J[10]]);if(xV1(J)<0)W=-W;Z[0]=J[12],Z[1]=J[13],Z[2]=J[14];let G=J.slice(),z=1/W,F=1/Q,V=1/X;G[0]*=z,G[1]*=z,G[2]*=z,G[4]*=F,G[5]*=F,G[6]*=F,G[8]*=V,G[9]*=V,G[10]*=V,fV1(Y,G),$[0]=W,$[1]=Q,$[2]=X}static compose(J,Z,Y,$){let W=$,Q=Z[0],X=Z[1],K=Z[2],G=Z[3],z=Q+Q,F=X+X,V=K+K,H=Q*z,q=Q*F,U=Q*V,L=X*F,w=X*V,O=K*V,R=G*z,N=G*F,P=G*V,D=Y[0],j=Y[1],C=Y[2];return W[0]=(1-(L+O))*D,W[1]=(q+P)*D,W[2]=(U-N)*D,W[3]=0,W[4]=(q-P)*j,W[5]=(1-(H+O))*j,W[6]=(w+R)*j,W[7]=0,W[8]=(U+N)*C,W[9]=(w-R)*C,W[10]=(1-(H+L))*C,W[11]=0,W[12]=J[0],W[13]=J[1],W[14]=J[2],W[15]=1,W}}function yV1(J,Z){if(!!J!==!!Z)return!1;let Y=J.getChild(),$=Z.getChild();return Y===$||Y.equals($)}function bV1(J,Z){if(!!J!==!!Z)return!1;let Y=J.values(),$=Z.values();if(Y.length!==$.length)return!1;for(let W=0;W<Y.length;W++){let Q=Y[W],X=$[W];if(Q.getChild()===X.getChild())continue;if(!Q.getChild().equals(X.getChild()))return!1}return!0}function gV1(J,Z){if(!!J!==!!Z)return!1;let Y=J.keys(),$=Z.keys();if(Y.length!==$.length)return!1;for(let W of Y){let Q=J.get(W),X=Z.get(W);if(!!Q!==!!X)return!1;let K=Q.getChild(),G=X.getChild();if(K===G)continue;if(!K.equals(G))return!1}return!0}function Fl(J,Z){if(J===Z)return!0;if(!!J!==!!Z||!J||!Z)return!1;if(J.length!==Z.length)return!1;for(let Y=0;Y<J.length;Y++)if(J[Y]!==Z[Y])return!1;return!0}function Vl(J,Z){if(J===Z)return!0;if(!!J!==!!Z)return!1;if(!XY(J)||!XY(Z))return J===Z;let Y=J,$=Z,W=0,Q=0,X;for(X in Y)W++;for(X in $)Q++;if(W!==Q)return!1;for(X in Y){let K=Y[X],G=$[X];if(tq(K)&&tq(G)){if(!Fl(K,G))return!1}else if(XY(K)&&XY(G)){if(!Vl(K,G))return!1}else if(K!==G)return!1}return!0}function tq(J){return Array.isArray(J)||ArrayBuffer.isView(J)}var Ql="https://null.example";class FP{static dirname(J){let Z=J.lastIndexOf("/");if(Z===-1)return"./";return J.substring(0,Z+1)}static basename(J){return XG.basename(new URL(J,Ql).pathname)}static extension(J){return XG.extension(new URL(J,Ql).pathname)}static resolve(J,Z){if(!this.isRelativePath(Z))return Z;let Y=J.split("/"),$=Z.split("/");Y.pop();for(let W=0;W<$.length;W++){if($[W]===".")continue;if($[W]==="..")Y.pop();else Y.push($[W])}return Y.join("/")}static isAbsoluteURL(J){return this.PROTOCOL_REGEXP.test(J)}static isRelativePath(J){return!/^(?:[a-zA-Z]+:)?\//.test(J)}}FP.DEFAULT_INIT={};FP.PROTOCOL_REGEXP=/^[a-zA-Z]+:\/\//;var BJ=(J)=>J,mV1=new Set;class YU extends vW{constructor(J,Z=""){super(J);this[C0].name=Z,this.init(),this.dispatchEvent({type:"create"})}getGraph(){return this.graph}getDefaults(){return Object.assign(super.getDefaults(),{name:"",extras:{}})}set(J,Z){if(Array.isArray(Z))Z=Z.slice();return super.set(J,Z)}getName(){return this.get("name")}setName(J){return this.set("name",J)}getExtras(){return this.get("extras")}setExtras(J){return this.set("extras",J)}clone(){return new this.constructor(this.graph).copy(this,BJ)}copy(J,Z=BJ){for(let Y in this[C0]){let $=this[C0][Y];if($ instanceof p6){if(!this[E9].has(Y))$.dispose()}else if($ instanceof Z6||$ instanceof w0)for(let W of $.values())W.dispose();else if($ instanceof u1)for(let W of $.values())W.dispose()}for(let Y in J[C0]){let $=this[C0][Y],W=J[C0][Y];if(W instanceof p6)if(this[E9].has(Y))$.getChild().copy(Z(W.getChild()),Z);else this.setRef(Y,Z(W.getChild()),W.getAttributes());else if(W instanceof w0||W instanceof Z6)for(let Q of W.values())this.addRef(Y,Z(Q.getChild()),Q.getAttributes());else if(W instanceof u1)for(let Q of W.keys()){let X=W.get(Q);this.setRefMap(Y,Q,Z(X.getChild()),X.getAttributes())}else if(XY(W))this[C0][Y]=JSON.parse(JSON.stringify(W));else if(Array.isArray(W)||W instanceof ArrayBuffer||ArrayBuffer.isView(W))this[C0][Y]=W.slice();else this[C0][Y]=W}return this}equals(J,Z=mV1){if(this===J)return!0;if(this.propertyType!==J.propertyType)return!1;for(let Y in this[C0]){if(Z.has(Y))continue;let $=this[C0][Y],W=J[C0][Y];if($ instanceof p6||W instanceof p6){if(!yV1($,W))return!1}else if($ instanceof w0||W instanceof w0||$ instanceof Z6||W instanceof Z6){if(!bV1($,W))return!1}else if($ instanceof u1||W instanceof u1){if(!gV1($,W))return!1}else if(XY($)||XY(W)){if(!Vl($,W))return!1}else if(tq($)||tq(W)){if(!Fl($,W))return!1}else if($!==W)return!1}return!0}detach(){return this.graph.disconnectParents(this,(J)=>J.propertyType!=="Root"),this}listParents(){return this.graph.listParents(this)}}class Q6 extends YU{getDefaults(){return Object.assign(super.getDefaults(),{extensions:new u1})}getExtension(J){return this.getRefMap("extensions",J)}setExtension(J,Z){if(Z)Z._validateParent(this);return this.setRefMap("extensions",J,Z)}listExtensions(){return this.listRefMapValues("extensions")}}class H0 extends Q6{init(){this.propertyType=l.ACCESSOR}getDefaults(){return Object.assign(super.getDefaults(),{array:null,type:H0.Type.SCALAR,componentType:H0.ComponentType.FLOAT,normalized:!1,sparse:!1,buffer:null})}static getElementSize(J){switch(J){case H0.Type.SCALAR:return 1;case H0.Type.VEC2:return 2;case H0.Type.VEC3:return 3;case H0.Type.VEC4:return 4;case H0.Type.MAT2:return 4;case H0.Type.MAT3:return 9;case H0.Type.MAT4:return 16;default:throw new Error("Unexpected type: "+J)}}static getComponentSize(J){switch(J){case H0.ComponentType.BYTE:return 1;case H0.ComponentType.UNSIGNED_BYTE:return 1;case H0.ComponentType.SHORT:return 2;case H0.ComponentType.UNSIGNED_SHORT:return 2;case H0.ComponentType.UNSIGNED_INT:return 4;case H0.ComponentType.FLOAT:return 4;default:throw new Error("Unexpected component type: "+J)}}getMinNormalized(J){let Z=this.getNormalized(),Y=this.getElementSize(),$=this.getComponentType();if(this.getMin(J),Z)for(let W=0;W<Y;W++)J[W]=o1.decodeNormalizedInt(J[W],$);return J}getMin(J){let Z=this.getArray(),Y=this.getCount(),$=this.getElementSize();for(let W=0;W<$;W++)J[W]=1/0;for(let W=0;W<Y*$;W+=$)for(let Q=0;Q<$;Q++){let X=Z[W+Q];if(Number.isFinite(X))J[Q]=Math.min(J[Q],X)}return J}getMaxNormalized(J){let Z=this.getNormalized(),Y=this.getElementSize(),$=this.getComponentType();if(this.getMax(J),Z)for(let W=0;W<Y;W++)J[W]=o1.decodeNormalizedInt(J[W],$);return J}getMax(J){let Z=this.get("array"),Y=this.getCount(),$=this.getElementSize();for(let W=0;W<$;W++)J[W]=-1/0;for(let W=0;W<Y*$;W+=$)for(let Q=0;Q<$;Q++){let X=Z[W+Q];if(Number.isFinite(X))J[Q]=Math.max(J[Q],X)}return J}getCount(){let J=this.get("array");return J?J.length/this.getElementSize():0}getType(){return this.get("type")}setType(J){return this.set("type",J)}getElementSize(){return H0.getElementSize(this.get("type"))}getComponentSize(){return this.get("array").BYTES_PER_ELEMENT}getComponentType(){return this.get("componentType")}getNormalized(){return this.get("normalized")}setNormalized(J){return this.set("normalized",J)}getScalar(J){let Z=this.getElementSize(),Y=this.getComponentType(),$=this.getArray();if(this.getNormalized())return o1.decodeNormalizedInt($[J*Z],Y);return $[J*Z]}setScalar(J,Z){let Y=this.getElementSize(),$=this.getComponentType(),W=this.getArray();if(this.getNormalized())W[J*Y]=o1.encodeNormalizedInt(Z,$);else W[J*Y]=Z;return this}getElement(J,Z){let Y=this.getNormalized(),$=this.getElementSize(),W=this.getComponentType(),Q=this.getArray();for(let X=0;X<$;X++)if(Y)Z[X]=o1.decodeNormalizedInt(Q[J*$+X],W);else Z[X]=Q[J*$+X];return Z}setElement(J,Z){let Y=this.getNormalized(),$=this.getElementSize(),W=this.getComponentType(),Q=this.getArray();for(let X=0;X<$;X++)if(Y)Q[J*$+X]=o1.encodeNormalizedInt(Z[X],W);else Q[J*$+X]=Z[X];return this}getSparse(){return this.get("sparse")}setSparse(J){return this.set("sparse",J)}getBuffer(){return this.getRef("buffer")}setBuffer(J){return this.setRef("buffer",J)}getArray(){return this.get("array")}setArray(J){return this.set("componentType",J?uV1(J):H0.ComponentType.FLOAT),this.set("array",J),this}getByteLength(){let J=this.get("array");return J?J.byteLength:0}}H0.Type={SCALAR:"SCALAR",VEC2:"VEC2",VEC3:"VEC3",VEC4:"VEC4",MAT2:"MAT2",MAT3:"MAT3",MAT4:"MAT4"};H0.ComponentType={BYTE:5120,UNSIGNED_BYTE:5121,SHORT:5122,UNSIGNED_SHORT:5123,UNSIGNED_INT:5125,FLOAT:5126};function uV1(J){switch(J.constructor){case Float32Array:return H0.ComponentType.FLOAT;case Uint32Array:return H0.ComponentType.UNSIGNED_INT;case Uint16Array:return H0.ComponentType.UNSIGNED_SHORT;case Uint8Array:return H0.ComponentType.UNSIGNED_BYTE;case Int16Array:return H0.ComponentType.SHORT;case Int8Array:return H0.ComponentType.BYTE;default:throw new Error("Unknown accessor componentType.")}}class VP extends Q6{init(){this.propertyType=l.ANIMATION}getDefaults(){return Object.assign(super.getDefaults(),{channels:new w0,samplers:new w0})}addChannel(J){return this.addRef("channels",J)}removeChannel(J){return this.removeRef("channels",J)}listChannels(){return this.listRefs("channels")}addSampler(J){return this.addRef("samplers",J)}removeSampler(J){return this.removeRef("samplers",J)}listSamplers(){return this.listRefs("samplers")}}class GG extends Q6{init(){this.propertyType=l.ANIMATION_CHANNEL}getDefaults(){return Object.assign(super.getDefaults(),{targetPath:null,targetNode:null,sampler:null})}getTargetPath(){return this.get("targetPath")}setTargetPath(J){return this.set("targetPath",J)}getTargetNode(){return this.getRef("targetNode")}setTargetNode(J){return this.setRef("targetNode",J)}getSampler(){return this.getRef("sampler")}setSampler(J){return this.setRef("sampler",J)}}GG.TargetPath={TRANSLATION:"translation",ROTATION:"rotation",SCALE:"scale",WEIGHTS:"weights"};class cW extends Q6{init(){this.propertyType=l.ANIMATION_SAMPLER}getDefaultAttributes(){return Object.assign(super.getDefaults(),{interpolation:cW.Interpolation.LINEAR,input:null,output:null})}getInterpolation(){return this.get("interpolation")}setInterpolation(J){return this.set("interpolation",J)}getInput(){return this.getRef("input")}setInput(J){return this.setRef("input",J,{usage:O5.OTHER})}getOutput(){return this.getRef("output")}setOutput(J){return this.setRef("output",J,{usage:O5.OTHER})}}cW.Interpolation={LINEAR:"LINEAR",STEP:"STEP",CUBICSPLINE:"CUBICSPLINE"};class HP extends Q6{init(){this.propertyType=l.BUFFER}getDefaults(){return Object.assign(super.getDefaults(),{uri:""})}getURI(){return this.get("uri")}setURI(J){return this.set("uri",J)}}class zG extends Q6{init(){this.propertyType=l.CAMERA}getDefaults(){return Object.assign(super.getDefaults(),{type:zG.Type.PERSPECTIVE,znear:0.1,zfar:100,aspectRatio:null,yfov:Math.PI*2*50/360,xmag:1,ymag:1})}getType(){return this.get("type")}setType(J){return this.set("type",J)}getZNear(){return this.get("znear")}setZNear(J){return this.set("znear",J)}getZFar(){return this.get("zfar")}setZFar(J){return this.set("zfar",J)}getAspectRatio(){return this.get("aspectRatio")}setAspectRatio(J){return this.set("aspectRatio",J)}getYFov(){return this.get("yfov")}setYFov(J){return this.set("yfov",J)}getXMag(){return this.get("xmag")}setXMag(J){return this.set("xmag",J)}getYMag(){return this.get("ymag")}setYMag(J){return this.set("ymag",J)}}zG.Type={PERSPECTIVE:"perspective",ORTHOGRAPHIC:"orthographic"};class f1 extends YU{_validateParent(J){if(!this.parentTypes.includes(J.propertyType))throw new Error(`Parent "${J.propertyType}" invalid for child "${this.propertyType}".`)}}f1.EXTENSION_NAME=void 0;class U1 extends Q6{init(){this.propertyType=l.TEXTURE_INFO}getDefaults(){return Object.assign(super.getDefaults(),{texCoord:0,magFilter:null,minFilter:null,wrapS:U1.WrapMode.REPEAT,wrapT:U1.WrapMode.REPEAT})}getTexCoord(){return this.get("texCoord")}setTexCoord(J){return this.set("texCoord",J)}getMagFilter(){return this.get("magFilter")}setMagFilter(J){return this.set("magFilter",J)}getMinFilter(){return this.get("minFilter")}setMinFilter(J){return this.set("minFilter",J)}getWrapS(){return this.get("wrapS")}setWrapS(J){return this.set("wrapS",J)}getWrapT(){return this.get("wrapT")}setWrapT(J){return this.set("wrapT",J)}}U1.WrapMode={CLAMP_TO_EDGE:33071,MIRRORED_REPEAT:33648,REPEAT:10497};U1.MagFilter={NEAREST:9728,LINEAR:9729};U1.MinFilter={NEAREST:9728,LINEAR:9729,NEAREST_MIPMAP_NEAREST:9984,LINEAR_MIPMAP_NEAREST:9985,NEAREST_MIPMAP_LINEAR:9986,LINEAR_MIPMAP_LINEAR:9987};var{R:sq,G:oq,B:rq,A:dV1}=M5;class FG extends Q6{init(){this.propertyType=l.MATERIAL}getDefaults(){return Object.assign(super.getDefaults(),{alphaMode:FG.AlphaMode.OPAQUE,alphaCutoff:0.5,doubleSided:!1,baseColorFactor:[1,1,1,1],baseColorTexture:null,baseColorTextureInfo:new U1(this.graph,"baseColorTextureInfo"),emissiveFactor:[0,0,0],emissiveTexture:null,emissiveTextureInfo:new U1(this.graph,"emissiveTextureInfo"),normalScale:1,normalTexture:null,normalTextureInfo:new U1(this.graph,"normalTextureInfo"),occlusionStrength:1,occlusionTexture:null,occlusionTextureInfo:new U1(this.graph,"occlusionTextureInfo"),roughnessFactor:1,metallicFactor:1,metallicRoughnessTexture:null,metallicRoughnessTextureInfo:new U1(this.graph,"metallicRoughnessTextureInfo")})}getDoubleSided(){return this.get("doubleSided")}setDoubleSided(J){return this.set("doubleSided",J)}getAlpha(){return this.get("baseColorFactor")[3]}setAlpha(J){let Z=this.get("baseColorFactor").slice();return Z[3]=J,this.set("baseColorFactor",Z)}getAlphaMode(){return this.get("alphaMode")}setAlphaMode(J){return this.set("alphaMode",J)}getAlphaCutoff(){return this.get("alphaCutoff")}setAlphaCutoff(J){return this.set("alphaCutoff",J)}getBaseColorFactor(){return this.get("baseColorFactor")}setBaseColorFactor(J){return this.set("baseColorFactor",J)}getBaseColorTexture(){return this.getRef("baseColorTexture")}getBaseColorTextureInfo(){return this.getRef("baseColorTexture")?this.getRef("baseColorTextureInfo"):null}setBaseColorTexture(J){return this.setRef("baseColorTexture",J,{channels:sq|oq|rq|dV1,isColor:!0})}getEmissiveFactor(){return this.get("emissiveFactor")}setEmissiveFactor(J){return this.set("emissiveFactor",J)}getEmissiveTexture(){return this.getRef("emissiveTexture")}getEmissiveTextureInfo(){return this.getRef("emissiveTexture")?this.getRef("emissiveTextureInfo"):null}setEmissiveTexture(J){return this.setRef("emissiveTexture",J,{channels:sq|oq|rq,isColor:!0})}getNormalScale(){return this.get("normalScale")}setNormalScale(J){return this.set("normalScale",J)}getNormalTexture(){return this.getRef("normalTexture")}getNormalTextureInfo(){return this.getRef("normalTexture")?this.getRef("normalTextureInfo"):null}setNormalTexture(J){return this.setRef("normalTexture",J,{channels:sq|oq|rq})}getOcclusionStrength(){return this.get("occlusionStrength")}setOcclusionStrength(J){return this.set("occlusionStrength",J)}getOcclusionTexture(){return this.getRef("occlusionTexture")}getOcclusionTextureInfo(){return this.getRef("occlusionTexture")?this.getRef("occlusionTextureInfo"):null}setOcclusionTexture(J){return this.setRef("occlusionTexture",J,{channels:sq})}getRoughnessFactor(){return this.get("roughnessFactor")}setRoughnessFactor(J){return this.set("roughnessFactor",J)}getMetallicFactor(){return this.get("metallicFactor")}setMetallicFactor(J){return this.set("metallicFactor",J)}getMetallicRoughnessTexture(){return this.getRef("metallicRoughnessTexture")}getMetallicRoughnessTextureInfo(){return this.getRef("metallicRoughnessTexture")?this.getRef("metallicRoughnessTextureInfo"):null}setMetallicRoughnessTexture(J){return this.setRef("metallicRoughnessTexture",J,{channels:oq|rq})}}FG.AlphaMode={OPAQUE:"OPAQUE",MASK:"MASK",BLEND:"BLEND"};class qP extends Q6{init(){this.propertyType=l.MESH}getDefaults(){return Object.assign(super.getDefaults(),{weights:[],primitives:new w0})}addPrimitive(J){return this.addRef("primitives",J)}removePrimitive(J){return this.removeRef("primitives",J)}listPrimitives(){return this.listRefs("primitives")}getWeights(){return this.get("weights")}setWeights(J){return this.set("weights",J)}}class UP extends Q6{init(){this.propertyType=l.NODE}getDefaults(){return Object.assign(super.getDefaults(),{translation:[0,0,0],rotation:[0,0,0,1],scale:[1,1,1],weights:[],camera:null,mesh:null,skin:null,children:new w0})}copy(J,Z=BJ){if(Z===BJ)throw new Error("Node cannot be copied.");return super.copy(J,Z)}getTranslation(){return this.get("translation")}getRotation(){return this.get("rotation")}getScale(){return this.get("scale")}setTranslation(J){return this.set("translation",J)}setRotation(J){return this.set("rotation",J)}setScale(J){return this.set("scale",J)}getMatrix(){return o1.compose(this.get("translation"),this.get("rotation"),this.get("scale"),[])}setMatrix(J){let Z=this.get("translation").slice(),Y=this.get("rotation").slice(),$=this.get("scale").slice();return o1.decompose(J,Z,Y,$),this.set("translation",Z).set("rotation",Y).set("scale",$)}getWorldTranslation(){let J=[0,0,0];return o1.decompose(this.getWorldMatrix(),J,[0,0,0,1],[1,1,1]),J}getWorldRotation(){let J=[0,0,0,1];return o1.decompose(this.getWorldMatrix(),[0,0,0],J,[1,1,1]),J}getWorldScale(){let J=[1,1,1];return o1.decompose(this.getWorldMatrix(),[0,0,0],[0,0,0,1],J),J}getWorldMatrix(){let J=[];for(let $=this;$!=null;$=$.getParentNode())J.push($);let Z,Y=J.pop().getMatrix();while(Z=J.pop())AV1(Y,Y,Z.getMatrix());return Y}addChild(J){let Z=J.getParentNode();if(Z)Z.removeChild(J);for(let Y of J.listParents())if(Y.propertyType===l.SCENE)Y.removeChild(J);return this.addRef("children",J)}removeChild(J){return this.removeRef("children",J)}listChildren(){return this.listRefs("children")}getParentNode(){for(let J of this.listParents())if(J.propertyType===l.NODE)return J;return null}getMesh(){return this.getRef("mesh")}setMesh(J){return this.setRef("mesh",J)}getCamera(){return this.getRef("camera")}setCamera(J){return this.setRef("camera",J)}getSkin(){return this.getRef("skin")}setSkin(J){return this.setRef("skin",J)}getWeights(){return this.get("weights")}setWeights(J){return this.set("weights",J)}traverse(J){J(this);for(let Z of this.listChildren())Z.traverse(J);return this}}class OJ extends Q6{init(){this.propertyType=l.PRIMITIVE}getDefaults(){return Object.assign(super.getDefaults(),{mode:OJ.Mode.TRIANGLES,material:null,indices:null,attributes:new u1,targets:new w0})}getIndices(){return this.getRef("indices")}setIndices(J){return this.setRef("indices",J,{usage:O5.ELEMENT_ARRAY_BUFFER})}getAttribute(J){return this.getRefMap("attributes",J)}setAttribute(J,Z){return this.setRefMap("attributes",J,Z,{usage:O5.ARRAY_BUFFER})}listAttributes(){return this.listRefMapValues("attributes")}listSemantics(){return this.listRefMapKeys("attributes")}getMaterial(){return this.getRef("material")}setMaterial(J){return this.setRef("material",J)}getMode(){return this.get("mode")}setMode(J){return this.set("mode",J)}listTargets(){return this.listRefs("targets")}addTarget(J){return this.addRef("targets",J)}removeTarget(J){return this.removeRef("targets",J)}}OJ.Mode={POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6};class Hl extends YU{init(){this.propertyType=l.PRIMITIVE_TARGET}getDefaults(){return Object.assign(super.getDefaults(),{attributes:new u1})}getAttribute(J){return this.getRefMap("attributes",J)}setAttribute(J,Z){return this.setRefMap("attributes",J,Z,{usage:O5.ARRAY_BUFFER})}listAttributes(){return this.listRefMapValues("attributes")}listSemantics(){return this.listRefMapKeys("attributes")}}function eq(){return eq=Object.assign?Object.assign.bind():function(J){for(var Z=1;Z<arguments.length;Z++){var Y=arguments[Z];for(var $ in Y)({}).hasOwnProperty.call(Y,$)&&(J[$]=Y[$])}return J},eq.apply(null,arguments)}class wP extends Q6{init(){this.propertyType=l.SCENE}getDefaults(){return Object.assign(super.getDefaults(),{children:new w0})}copy(J,Z=BJ){if(Z===BJ)throw new Error("Scene cannot be copied.");return super.copy(J,Z)}addChild(J){let Z=J.getParentNode();if(Z)Z.removeChild(J);return this.addRef("children",J)}removeChild(J){return this.removeRef("children",J)}listChildren(){return this.listRefs("children")}traverse(J){for(let Z of this.listChildren())Z.traverse(J);return this}}class LP extends Q6{init(){this.propertyType=l.SKIN}getDefaults(){return Object.assign(super.getDefaults(),{skeleton:null,inverseBindMatrices:null,joints:new w0})}getSkeleton(){return this.getRef("skeleton")}setSkeleton(J){return this.setRef("skeleton",J)}getInverseBindMatrices(){return this.getRef("inverseBindMatrices")}setInverseBindMatrices(J){return this.setRef("inverseBindMatrices",J,{usage:O5.INVERSE_BIND_MATRICES})}addJoint(J){return this.addRef("joints",J)}removeJoint(J){return this.removeRef("joints",J)}listJoints(){return this.listRefs("joints")}}class BP extends Q6{init(){this.propertyType=l.TEXTURE}getDefaults(){return Object.assign(super.getDefaults(),{image:null,mimeType:"",uri:""})}getMimeType(){return this.get("mimeType")||v9.extensionToMimeType(XG.extension(this.get("uri")))}setMimeType(J){return this.set("mimeType",J)}getURI(){return this.get("uri")}setURI(J){this.set("uri",J);let Z=v9.extensionToMimeType(XG.extension(J));if(Z)this.set("mimeType",Z);return this}getImage(){return this.get("image")}setImage(J){return this.set("image",W6.assertView(J))}getSize(){let J=this.get("image");if(!J)return null;return v9.getSize(J,this.getMimeType())}}class $U extends Q6{init(){this.propertyType=l.ROOT}getDefaults(){return Object.assign(super.getDefaults(),{asset:{generator:`glTF-Transform ${EV1}`,version:"2.0"},defaultScene:null,accessors:new w0,animations:new w0,buffers:new w0,cameras:new w0,materials:new w0,meshes:new w0,nodes:new w0,scenes:new w0,skins:new w0,textures:new w0})}constructor(J){super(J);this._extensions=new Set,J.addEventListener("node:create",(Z)=>{this._addChildOfRoot(Z.target)})}clone(){throw new Error("Root cannot be cloned.")}copy(J,Z=BJ){if(Z===BJ)throw new Error("Root cannot be copied.");this.set("asset",eq({},J.get("asset"))),this.setName(J.getName()),this.setExtras(eq({},J.getExtras())),this.setDefaultScene(J.getDefaultScene()?Z(J.getDefaultScene()):null);for(let Y of J.listRefMapKeys("extensions")){let $=J.getExtension(Y);this.setExtension(Y,Z($))}return this}_addChildOfRoot(J){if(J instanceof wP)this.addRef("scenes",J);else if(J instanceof UP)this.addRef("nodes",J);else if(J instanceof zG)this.addRef("cameras",J);else if(J instanceof LP)this.addRef("skins",J);else if(J instanceof qP)this.addRef("meshes",J);else if(J instanceof FG)this.addRef("materials",J);else if(J instanceof BP)this.addRef("textures",J);else if(J instanceof VP)this.addRef("animations",J);else if(J instanceof H0)this.addRef("accessors",J);else if(J instanceof HP)this.addRef("buffers",J);return this}getAsset(){return this.get("asset")}listExtensionsUsed(){return Array.from(this._extensions)}listExtensionsRequired(){return this.listExtensionsUsed().filter((J)=>J.isRequired())}_enableExtension(J){return this._extensions.add(J),this}_disableExtension(J){return this._extensions.delete(J),this}listScenes(){return this.listRefs("scenes")}setDefaultScene(J){return this.setRef("defaultScene",J)}getDefaultScene(){return this.getRef("defaultScene")}listNodes(){return this.listRefs("nodes")}listCameras(){return this.listRefs("cameras")}listSkins(){return this.listRefs("skins")}listMeshes(){return this.listRefs("meshes")}listMaterials(){return this.listRefs("materials")}listTextures(){return this.listRefs("textures")}listAnimations(){return this.listRefs("animations")}listAccessors(){return this.listRefs("accessors")}listBuffers(){return this.listRefs("buffers")}}class JU{static fromGraph(J){return JU._GRAPH_DOCUMENTS.get(J)||null}constructor(){this._graph=new IW,this._root=new $U(this._graph),this._logger=w4.DEFAULT_INSTANCE,JU._GRAPH_DOCUMENTS.set(this._graph,this)}getRoot(){return this._root}getGraph(){return this._graph}getLogger(){return this._logger}setLogger(J){return this._logger=J,this}clone(){throw new Error("Use 'cloneDocument(source)' from '@gltf-transform/functions'.")}merge(J){throw new Error("Use 'mergeDocuments(target, source)' from '@gltf-transform/functions'.")}async transform(...J){let Z=J.map((Y)=>Y.name);for(let Y of J)await Y(this,{stack:Z});return this}createExtension(J){let Z=J.EXTENSION_NAME;return this.getRoot().listExtensionsUsed().find(($)=>$.extensionName===Z)||new J(this)}createScene(J=""){return new wP(this._graph,J)}createNode(J=""){return new UP(this._graph,J)}createCamera(J=""){return new zG(this._graph,J)}createSkin(J=""){return new LP(this._graph,J)}createMesh(J=""){return new qP(this._graph,J)}createPrimitive(){return new OJ(this._graph)}createPrimitiveTarget(J=""){return new Hl(this._graph,J)}createMaterial(J=""){return new FG(this._graph,J)}createTexture(J=""){return new BP(this._graph,J)}createAnimation(J=""){return new VP(this._graph,J)}createAnimationChannel(J=""){return new GG(this._graph,J)}createAnimationSampler(J=""){return new cW(this._graph,J)}createAccessor(J="",Z=null){if(!Z)Z=this.getRoot().listBuffers()[0];return new H0(this._graph,J).setBuffer(Z)}createBuffer(J=""){return new HP(this._graph,J)}}JU._GRAPH_DOCUMENTS=new WeakMap;class R1{constructor(J){this.extensionName="",this.prereadTypes=[],this.prewriteTypes=[],this.readDependencies=[],this.writeDependencies=[],this.document=void 0,this.required=!1,this.properties=new Set,this._listener=void 0,this.document=J,J.getRoot()._enableExtension(this),this._listener=(Y)=>{let $=Y,W=$.target;if(W instanceof f1&&W.extensionName===this.extensionName){if($.type==="node:create")this._addExtensionProperty(W);if($.type==="node:dispose")this._removeExtensionProperty(W)}};let Z=J.getGraph();Z.addEventListener("node:create",this._listener),Z.addEventListener("node:dispose",this._listener)}dispose(){this.document.getRoot()._disableExtension(this);let J=this.document.getGraph();J.removeEventListener("node:create",this._listener),J.removeEventListener("node:dispose",this._listener);for(let Z of this.properties)Z.dispose()}static register(){}isRequired(){return this.required}setRequired(J){return this.required=J,this}listProperties(){return Array.from(this.properties)}_addExtensionProperty(J){return this.properties.add(J),this}_removeExtensionProperty(J){return this.properties.delete(J),this}install(J,Z){return this}preread(J,Z){return this}prewrite(J,Z){return this}}R1.EXTENSION_NAME=void 0;var fQ6={logger:w4.DEFAULT_INSTANCE,extensions:[],dependencies:{}},yQ6=new Set([l.BUFFER,l.TEXTURE,l.MATERIAL,l.MESH,l.PRIMITIVE,l.NODE,l.SCENE]);var KG;(function(J){J[J.ARRAY_BUFFER=34962]="ARRAY_BUFFER",J[J.ELEMENT_ARRAY_BUFFER=34963]="ELEMENT_ARRAY_BUFFER"})(KG||(KG={}));class MJ{constructor(J,Z,Y){this._doc=void 0,this.jsonDoc=void 0,this.options=void 0,this.accessorIndexMap=new Map,this.animationIndexMap=new Map,this.bufferIndexMap=new Map,this.cameraIndexMap=new Map,this.skinIndexMap=new Map,this.materialIndexMap=new Map,this.meshIndexMap=new Map,this.nodeIndexMap=new Map,this.imageIndexMap=new Map,this.textureDefIndexMap=new Map,this.textureInfoDefMap=new Map,this.samplerDefIndexMap=new Map,this.sceneIndexMap=new Map,this.imageBufferViews=[],this.otherBufferViews=new Map,this.otherBufferViewsIndexMap=new Map,this.extensionData={},this.bufferURIGenerator=void 0,this.imageURIGenerator=void 0,this.logger=void 0,this._accessorUsageMap=new Map,this.accessorUsageGroupedByParent=new Set(["ARRAY_BUFFER"]),this.accessorParents=new Map,this._doc=J,this.jsonDoc=Z,this.options=Y;let $=J.getRoot(),W=$.listBuffers().length,Q=$.listTextures().length;this.bufferURIGenerator=new GP(W>1,()=>Y.basename||"buffer"),this.imageURIGenerator=new GP(Q>1,(X)=>cV1(J,X)||Y.basename||"texture"),this.logger=J.getLogger()}createTextureInfoDef(J,Z){let Y={magFilter:Z.getMagFilter()||void 0,minFilter:Z.getMinFilter()||void 0,wrapS:Z.getWrapS(),wrapT:Z.getWrapT()},$=JSON.stringify(Y);if(!this.samplerDefIndexMap.has($))this.samplerDefIndexMap.set($,this.jsonDoc.json.samplers.length),this.jsonDoc.json.samplers.push(Y);let W={source:this.imageIndexMap.get(J),sampler:this.samplerDefIndexMap.get($)},Q=JSON.stringify(W);if(!this.textureDefIndexMap.has(Q))this.textureDefIndexMap.set(Q,this.jsonDoc.json.textures.length),this.jsonDoc.json.textures.push(W);let X={index:this.textureDefIndexMap.get(Q)};if(Z.getTexCoord()!==0)X.texCoord=Z.getTexCoord();if(Object.keys(Z.getExtras()).length>0)X.extras=Z.getExtras();return this.textureInfoDefMap.set(Z,X),X}createPropertyDef(J){let Z={};if(J.getName())Z.name=J.getName();if(Object.keys(J.getExtras()).length>0)Z.extras=J.getExtras();return Z}createAccessorDef(J){let Z=this.createPropertyDef(J);if(Z.type=J.getType(),Z.componentType=J.getComponentType(),Z.count=J.getCount(),this._doc.getGraph().listParentEdges(J).some(($)=>$.getName()==="attributes"&&$.getAttributes().key==="POSITION"||$.getName()==="input"))Z.max=J.getMax([]).map(Math.fround),Z.min=J.getMin([]).map(Math.fround);if(J.getNormalized())Z.normalized=J.getNormalized();return Z}createImageData(J,Z,Y){if(this.options.format===$P.GLB)this.imageBufferViews.push(Z),J.bufferView=this.jsonDoc.json.bufferViews.length,this.jsonDoc.json.bufferViews.push({buffer:0,byteOffset:-1,byteLength:Z.byteLength});else{let $=v9.mimeTypeToExtension(Y.getMimeType());J.uri=this.imageURIGenerator.createURI(Y,$),this.assignResourceURI(J.uri,Z,!1)}}assignResourceURI(J,Z,Y){let $=this.jsonDoc.resources;if(!(J in $)){$[J]=Z;return}if(Z===$[J]){this.logger.warn(`Duplicate resource URI, "${J}".`);return}let W=`Resource URI "${J}" already assigned to different data.`;if(!Y){this.logger.warn(W);return}throw new Error(W)}getAccessorUsage(J){let Z=this._accessorUsageMap.get(J);if(Z)return Z;if(J.getSparse())return O5.SPARSE;for(let Y of this._doc.getGraph().listParentEdges(J)){let{usage:$}=Y.getAttributes();if($)return $;if(Y.getParent().propertyType!==l.ROOT)this.logger.warn(`Missing attribute ".usage" on edge, "${Y.getName()}".`)}return O5.OTHER}addAccessorToUsageGroup(J,Z){let Y=this._accessorUsageMap.get(J);if(Y&&Y!==Z)throw new Error(`Accessor with usage "${Y}" cannot be reused as "${Z}".`);return this._accessorUsageMap.set(J,Z),this}}MJ.BufferViewTarget=KG;MJ.BufferViewUsage=O5;MJ.USAGE_TO_TARGET={[O5.ARRAY_BUFFER]:KG.ARRAY_BUFFER,[O5.ELEMENT_ARRAY_BUFFER]:KG.ELEMENT_ARRAY_BUFFER};class GP{constructor(J,Z){this.multiple=void 0,this.basename=void 0,this.counter={},this.multiple=J,this.basename=Z}createURI(J,Z){if(J.getURI())return J.getURI();else if(!this.multiple)return`${this.basename(J)}.${Z}`;else{let Y=this.basename(J);return this.counter[Y]=this.counter[Y]||1,`${Y}_${this.counter[Y]++}.${Z}`}}}function cV1(J,Z){let Y=J.getGraph().listParentEdges(Z).find(($)=>$.getParent()!==J.getRoot());return Y?Y.getName().replace(/texture$/i,""):""}var{UNSIGNED_INT:bQ6,UNSIGNED_SHORT:gQ6,UNSIGNED_BYTE:mQ6}=H0.ComponentType,uQ6=new Set([l.ACCESSOR,l.BUFFER,l.MATERIAL,l.MESH]);var Xl;(function(J){J[J.JSON=1313821514]="JSON",J[J.BIN=5130562]="BIN"})(Xl||(Xl={}));var Ul=163,wl=166;function lV1(){return{vkFormat:0,typeSize:1,pixelWidth:0,pixelHeight:0,pixelDepth:0,layerCount:0,faceCount:1,supercompressionScheme:0,levels:[],dataFormatDescriptor:[{vendorId:0,descriptorType:0,versionNumber:2,colorModel:0,colorPrimaries:1,transferFunction:2,flags:0,texelBlockDimension:[0,0,0,0],bytesPlane:[0,0,0,0,0,0,0,0],samples:[]}],keyValue:{},globalData:null}}class lW{constructor(J,Z,Y,$){this._dataView=void 0,this._littleEndian=void 0,this._offset=void 0,this._dataView=new DataView(J.buffer,J.byteOffset+Z,Y),this._littleEndian=$,this._offset=0}_nextUint8(){let J=this._dataView.getUint8(this._offset);return this._offset+=1,J}_nextUint16(){let J=this._dataView.getUint16(this._offset,this._littleEndian);return this._offset+=2,J}_nextUint32(){let J=this._dataView.getUint32(this._offset,this._littleEndian);return this._offset+=4,J}_nextUint64(){let J=this._dataView.getUint32(this._offset,this._littleEndian),Z=this._dataView.getUint32(this._offset+4,this._littleEndian),Y=J+4294967296*Z;return this._offset+=8,Y}_nextInt32(){let J=this._dataView.getInt32(this._offset,this._littleEndian);return this._offset+=4,J}_nextUint8Array(J){let Z=new Uint8Array(this._dataView.buffer,this._dataView.byteOffset+this._offset,J);return this._offset+=J,Z}_skip(J){return this._offset+=J,this}_scan(J,Z=0){let Y=this._offset,$=0;while(this._dataView.getUint8(this._offset)!==Z&&$<J)$++,this._offset++;if($<J)this._offset++;return new Uint8Array(this._dataView.buffer,this._dataView.byteOffset+Y,$)}}var lQ6=new Uint8Array([0]),P6=[171,75,84,88,32,50,48,187,13,10,26,10];function ql(J){return new TextDecoder().decode(J)}function WU(J){let Z=new Uint8Array(J.buffer,J.byteOffset,P6.length);if(Z[0]!==P6[0]||Z[1]!==P6[1]||Z[2]!==P6[2]||Z[3]!==P6[3]||Z[4]!==P6[4]||Z[5]!==P6[5]||Z[6]!==P6[6]||Z[7]!==P6[7]||Z[8]!==P6[8]||Z[9]!==P6[9]||Z[10]!==P6[10]||Z[11]!==P6[11])throw new Error("Missing KTX 2.0 identifier.");let Y=lV1(),$=17*Uint32Array.BYTES_PER_ELEMENT,W=new lW(J,P6.length,$,!0);Y.vkFormat=W._nextUint32(),Y.typeSize=W._nextUint32(),Y.pixelWidth=W._nextUint32(),Y.pixelHeight=W._nextUint32(),Y.pixelDepth=W._nextUint32(),Y.layerCount=W._nextUint32(),Y.faceCount=W._nextUint32();let Q=W._nextUint32();Y.supercompressionScheme=W._nextUint32();let X=W._nextUint32(),K=W._nextUint32(),G=W._nextUint32(),z=W._nextUint32(),F=W._nextUint64(),V=W._nextUint64(),H=Q*3*8,q=new lW(J,P6.length+$,H,!0);for(let i8=0;i8<Q;i8++)Y.levels.push({levelData:new Uint8Array(J.buffer,J.byteOffset+q._nextUint64(),q._nextUint64()),uncompressedByteLength:q._nextUint64()});let U=new lW(J,X,K,!0);U._skip(4);let L=U._nextUint16(),w=U._nextUint16(),O=U._nextUint16(),R=U._nextUint16(),N=U._nextUint8(),P=U._nextUint8(),D=U._nextUint8(),j=U._nextUint8(),C=[U._nextUint8(),U._nextUint8(),U._nextUint8(),U._nextUint8()],k=[U._nextUint8(),U._nextUint8(),U._nextUint8(),U._nextUint8(),U._nextUint8(),U._nextUint8(),U._nextUint8(),U._nextUint8()],A={vendorId:L,descriptorType:w,versionNumber:O,colorModel:N,colorPrimaries:P,transferFunction:D,flags:j,texelBlockDimension:C,bytesPlane:k,samples:[]},v=6,x=4,u=(R/4-v)/x;for(let i8=0;i8<u;i8++){let Z7={bitOffset:U._nextUint16(),bitLength:U._nextUint8(),channelType:U._nextUint8(),samplePosition:[U._nextUint8(),U._nextUint8(),U._nextUint8(),U._nextUint8()],sampleLower:Number.NEGATIVE_INFINITY,sampleUpper:Number.POSITIVE_INFINITY};if(Z7.channelType&64)Z7.sampleLower=U._nextInt32(),Z7.sampleUpper=U._nextInt32();else Z7.sampleLower=U._nextUint32(),Z7.sampleUpper=U._nextUint32();A.samples[i8]=Z7}Y.dataFormatDescriptor.length=0,Y.dataFormatDescriptor.push(A);let h=new lW(J,G,z,!0);while(h._offset<z){let i8=h._nextUint32(),Z7=h._scan(i8),RV=ql(Z7);if(Y.keyValue[RV]=h._nextUint8Array(i8-Z7.byteLength-1),RV.match(/^ktx/i)){let fA=ql(Y.keyValue[RV]);Y.keyValue[RV]=fA.substring(0,fA.lastIndexOf("\x00"))}let R71=i8%4?4-i8%4:0;h._skip(R71)}if(V<=0)return Y;let d=new lW(J,F,V,!0),W0=d._nextUint16(),U0=d._nextUint16(),B0=d._nextUint32(),y0=d._nextUint32(),B1=d._nextUint32(),L8=d._nextUint32(),B8=[];for(let i8=0;i8<Q;i8++)B8.push({imageFlags:d._nextUint32(),rgbSliceByteOffset:d._nextUint32(),rgbSliceByteLength:d._nextUint32(),alphaSliceByteOffset:d._nextUint32(),alphaSliceByteLength:d._nextUint32()});let O1=F+d._offset,O9=O1+B0,p8=O9+y0,Y4=p8+B1,M9=new Uint8Array(J.buffer,J.byteOffset+O1,B0),GW=new Uint8Array(J.buffer,J.byteOffset+O9,y0),zW=new Uint8Array(J.buffer,J.byteOffset+p8,B1),bZ=new Uint8Array(J.buffer,J.byteOffset+Y4,L8);return Y.globalData={endpointCount:W0,selectorCount:U0,imageDescs:B8,endpointsData:M9,selectorsData:GW,tablesData:zW,extendedData:bZ},Y}var PP="EXT_mesh_gpu_instancing",MP="EXT_meshopt_compression",pV1="EXT_texture_webp",iV1="EXT_texture_avif",Il="KHR_draco_mesh_compression",jP="KHR_lights_punctual",DP="KHR_materials_anisotropy",CP="KHR_materials_clearcoat",TP="KHR_materials_diffuse_transmission",kP="KHR_materials_dispersion",EP="KHR_materials_emissive_strength",IP="KHR_materials_ior",vP="KHR_materials_iridescence",SP="KHR_materials_pbrSpecularGlossiness",_P="KHR_materials_sheen",xP="KHR_materials_specular",AP="KHR_materials_transmission",hP="KHR_materials_unlit",fP="KHR_materials_volume",NY="KHR_materials_variants",nV1="KHR_mesh_quantization",aV1="KHR_texture_basisu",yP="KHR_texture_transform",QU="KHR_xmp_json_ld",RP="INSTANCE_ATTRIBUTE";class bP extends f1{init(){this.extensionName=PP,this.propertyType="InstancedMesh",this.parentTypes=[l.NODE]}getDefaults(){return Object.assign(super.getDefaults(),{attributes:new u1})}getAttribute(J){return this.getRefMap("attributes",J)}setAttribute(J,Z){return this.setRefMap("attributes",J,Z,{usage:RP})}listAttributes(){return this.listRefMapValues("attributes")}listSemantics(){return this.listRefMapKeys("attributes")}}bP.EXTENSION_NAME=PP;var KY=PP;class GU extends R1{constructor(...J){super(...J);this.extensionName=KY,this.provideTypes=[l.NODE],this.prewriteTypes=[l.ACCESSOR]}createInstancedMesh(){return new bP(this.document.getGraph())}read(J){return(J.jsonDoc.json.nodes||[]).forEach(($,W)=>{if(!$.extensions||!$.extensions[KY])return;let Q=$.extensions[KY],X=this.createInstancedMesh();for(let K in Q.attributes)X.setAttribute(K,J.accessors[Q.attributes[K]]);J.nodes[W].setExtension(KY,X)}),this}prewrite(J){J.accessorUsageGroupedByParent.add(RP);for(let Z of this.properties)for(let Y of Z.listAttributes())J.addAccessorToUsageGroup(Y,RP);return this}write(J){let Z=J.jsonDoc;return this.document.getRoot().listNodes().forEach((Y)=>{let $=Y.getExtension(KY);if($){let W=J.nodeIndexMap.get(Y),Q=Z.json.nodes[W],X={attributes:{}};$.listSemantics().forEach((K)=>{let G=$.getAttribute(K);X.attributes[K]=J.accessorIndexMap.get(G)}),Q.extensions=Q.extensions||{},Q.extensions[KY]=X}}),this}}GU.EXTENSION_NAME=KY;function B7(){return B7=Object.assign?Object.assign.bind():function(J){for(var Z=1;Z<arguments.length;Z++){var Y=arguments[Z];for(var $ in Y)({}).hasOwnProperty.call(Y,$)&&(J[$]=Y[$])}return J},B7.apply(null,arguments)}var UG;(function(J){J.QUANTIZE="quantize",J.FILTER="filter"})(UG||(UG={}));var iW;(function(J){J.ATTRIBUTES="ATTRIBUTES",J.TRIANGLES="TRIANGLES",J.INDICES="INDICES"})(iW||(iW={}));var r1;(function(J){J.NONE="NONE",J.OCTAHEDRAL="OCTAHEDRAL",J.QUATERNION="QUATERNION",J.EXPONENTIAL="EXPONENTIAL"})(r1||(r1={}));var{BYTE:sV1,SHORT:Ll,FLOAT:oV1}=H0.ComponentType,{encodeNormalizedInt:Bl,decodeNormalizedInt:NP}=o1;function rV1(J,Z,Y,$){let{filter:W,bits:Q}=$,X={array:J.getArray(),byteStride:J.getElementSize()*J.getComponentSize(),componentType:J.getComponentType(),normalized:J.getNormalized()};if(Y!==iW.ATTRIBUTES)return X;if(W!==r1.NONE){let K=J.getNormalized()?tV1(J):new Float32Array(X.array);switch(W){case r1.EXPONENTIAL:X.byteStride=J.getElementSize()*4,X.componentType=oV1,X.normalized=!1,X.array=Z.encodeFilterExp(K,J.getCount(),X.byteStride,Q);break;case r1.OCTAHEDRAL:X.byteStride=Q>8?8:4,X.componentType=Q>8?Ll:sV1,X.normalized=!0,K=J.getElementSize()===3?JH1(K):K,X.array=Z.encodeFilterOct(K,J.getCount(),X.byteStride,Q);break;case r1.QUATERNION:X.byteStride=8,X.componentType=Ll,X.normalized=!0,X.array=Z.encodeFilterQuat(K,J.getCount(),X.byteStride,Q);break;default:throw new Error("Invalid filter.")}if(X.min=J.getMin([]),X.max=J.getMax([]),J.getNormalized())X.min=X.min.map((G)=>NP(G,J.getComponentType())),X.max=X.max.map((G)=>NP(G,J.getComponentType()));if(X.normalized)X.min=X.min.map((G)=>Bl(G,X.componentType)),X.max=X.max.map((G)=>Bl(G,X.componentType))}else if(X.byteStride%4)X.array=eV1(X.array,J.getElementSize()),X.byteStride=X.array.byteLength/J.getCount();return X}function tV1(J){let Z=J.getComponentType(),Y=J.getArray(),$=new Float32Array(Y.length);for(let W=0;W<Y.length;W++)$[W]=NP(Y[W],Z);return $}function eV1(J,Z){let $=W6.padNumber(J.BYTES_PER_ELEMENT*Z)/J.BYTES_PER_ELEMENT,W=J.length/Z,Q=new J.constructor(W*$);for(let X=0;X*Z<J.length;X++)for(let K=0;K<Z;K++)Q[X*$+K]=J[X*Z+K];return Q}function JH1(J){let Z=new Float32Array(J.length*4/3);for(let Y=0,$=J.length/3;Y<$;Y++)Z[Y*4]=J[Y*3],Z[Y*4+1]=J[Y*3+1],Z[Y*4+2]=J[Y*3+2];return Z}function ZH1(J,Z){if(Z===MJ.BufferViewUsage.ELEMENT_ARRAY_BUFFER)return J.listParents().some(($)=>{return $ instanceof OJ&&$.getMode()===OJ.Mode.TRIANGLES})?iW.TRIANGLES:iW.INDICES;return iW.ATTRIBUTES}function YH1(J,Z){let Y=Z.getGraph().listParentEdges(J).filter(($)=>!($.getParent()instanceof $U));for(let $ of Y){let W=$.getName(),Q=$.getAttributes().key||"",X=$.getParent().propertyType===l.PRIMITIVE_TARGET;if(W==="indices")return{filter:r1.NONE};if(W==="attributes"){if(Q==="POSITION")return{filter:r1.NONE};if(Q==="TEXCOORD_0")return{filter:r1.NONE};if(Q.startsWith("JOINTS_"))return{filter:r1.NONE};if(Q.startsWith("WEIGHTS_"))return{filter:r1.NONE};if(Q==="NORMAL"||Q==="TANGENT")return X?{filter:r1.NONE}:{filter:r1.OCTAHEDRAL,bits:8}}if(W==="output"){let K=vl(J);if(K==="rotation")return{filter:r1.QUATERNION,bits:16};if(K==="translation")return{filter:r1.EXPONENTIAL,bits:12};if(K==="scale")return{filter:r1.EXPONENTIAL,bits:12};return{filter:r1.NONE}}if(W==="input")return{filter:r1.NONE};if(W==="inverseBindMatrices")return{filter:r1.NONE}}return{filter:r1.NONE}}function vl(J){for(let Z of J.listParents()){if(!(Z instanceof cW))continue;for(let Y of Z.listParents()){if(!(Y instanceof GG))continue;return Y.getTargetPath()}}return null}function $H1(J){if(!J.extensions||!J.extensions[MP])return!1;return!!J.extensions[MP].fallback}var j6=MP,Ol={method:UG.QUANTIZE};class LG extends R1{constructor(...J){super(...J);this.extensionName=j6,this.prereadTypes=[l.BUFFER,l.PRIMITIVE],this.prewriteTypes=[l.BUFFER,l.ACCESSOR],this.readDependencies=["meshopt.decoder"],this.writeDependencies=["meshopt.encoder"],this._decoder=null,this._decoderFallbackBufferMap=new Map,this._encoder=null,this._encoderOptions=Ol,this._encoderFallbackBuffer=null,this._encoderBufferViews={},this._encoderBufferViewData={},this._encoderBufferViewAccessors={}}install(J,Z){if(J==="meshopt.decoder")this._decoder=Z;if(J==="meshopt.encoder")this._encoder=Z;return this}setEncoderOptions(J){return this._encoderOptions=B7({},Ol,J),this}preread(J,Z){if(!this._decoder){if(!this.isRequired())return this;throw new Error(`[${j6}] Please install extension dependency, "meshopt.decoder".`)}if(!this._decoder.supported){if(!this.isRequired())return this;throw new Error(`[${j6}]: Missing WASM support.`)}if(Z===l.BUFFER)this._prereadBuffers(J);else if(Z===l.PRIMITIVE)this._prereadPrimitives(J);return this}_prereadBuffers(J){let Z=J.jsonDoc;(Z.json.bufferViews||[]).forEach(($,W)=>{if(!$.extensions||!$.extensions[j6])return;let Q=$.extensions[j6],X=Q.byteOffset||0,K=Q.byteLength||0,G=Q.count,z=Q.byteStride,F=new Uint8Array(G*z),V=Z.json.buffers[Q.buffer],H=V.uri?Z.resources[V.uri]:Z.resources[zP],q=W6.toView(H,X,K);this._decoder.decodeGltfBuffer(F,G,z,q,Q.mode,Q.filter),J.bufferViews[W]=F})}_prereadPrimitives(J){let Z=J.jsonDoc;(Z.json.bufferViews||[]).forEach(($)=>{if(!$.extensions||!$.extensions[j6])return;let W=$.extensions[j6],Q=J.buffers[W.buffer],X=J.buffers[$.buffer],K=Z.json.buffers[$.buffer];if($H1(K))this._decoderFallbackBufferMap.set(X,Q)})}read(J){if(!this.isRequired())return this;for(let[Z,Y]of this._decoderFallbackBufferMap){for(let $ of Z.listParents())if($ instanceof H0)$.swap(Z,Y);Z.dispose()}return this}prewrite(J,Z){if(Z===l.ACCESSOR)this._prewriteAccessors(J);else if(Z===l.BUFFER)this._prewriteBuffers(J);return this}_prewriteAccessors(J){let Z=J.jsonDoc.json,Y=this._encoder,$=this._encoderOptions,W=this.document.getGraph(),Q=this.document.createBuffer(),X=this.document.getRoot().listBuffers().indexOf(Q),K=1,G=new Map,z=(F)=>{for(let V of W.listParents(F)){if(V.propertyType===l.ROOT)continue;let H=G.get(F);if(H===void 0)G.set(F,H=K++);return H}return-1};this._encoderFallbackBuffer=Q,this._encoderBufferViews={},this._encoderBufferViewData={},this._encoderBufferViewAccessors={};for(let F of this.document.getRoot().listAccessors()){if(vl(F)==="weights")continue;if(F.getSparse())continue;let V=J.getAccessorUsage(F),H=J.accessorUsageGroupedByParent.has(V)?z(F):null,q=ZH1(F,V),U=$.method===UG.FILTER?YH1(F,this.document):{filter:r1.NONE},L=rV1(F,Y,q,U),{array:w,byteStride:O}=L,R=F.getBuffer();if(!R)throw new Error(`${j6}: Missing buffer for accessor.`);let N=this.document.getRoot().listBuffers().indexOf(R),P=[V,H,q,U.filter,O,N].join(":"),D=this._encoderBufferViews[P],j=this._encoderBufferViewData[P],C=this._encoderBufferViewAccessors[P];if(!D||!j)C=this._encoderBufferViewAccessors[P]=[],j=this._encoderBufferViewData[P]=[],D=this._encoderBufferViews[P]={buffer:X,target:MJ.USAGE_TO_TARGET[V],byteOffset:0,byteLength:0,byteStride:V===MJ.BufferViewUsage.ARRAY_BUFFER?O:void 0,extensions:{[j6]:{buffer:N,byteOffset:0,byteLength:0,mode:q,filter:U.filter!==r1.NONE?U.filter:void 0,byteStride:O,count:0}}};let k=J.createAccessorDef(F);if(k.componentType=L.componentType,k.normalized=L.normalized,k.byteOffset=D.byteLength,k.min&&L.min)k.min=L.min;if(k.max&&L.max)k.max=L.max;J.accessorIndexMap.set(F,Z.accessors.length),Z.accessors.push(k),C.push(k),j.push(new Uint8Array(w.buffer,w.byteOffset,w.byteLength)),D.byteLength+=w.byteLength,D.extensions.EXT_meshopt_compression.count+=F.getCount()}}_prewriteBuffers(J){let Z=this._encoder;for(let Y in this._encoderBufferViews){let $=this._encoderBufferViews[Y],W=this._encoderBufferViewData[Y],Q=this.document.getRoot().listBuffers()[$.extensions[j6].buffer],X=J.otherBufferViews.get(Q)||[],{count:K,byteStride:G,mode:z}=$.extensions[j6],F=W6.concat(W),V=Z.encodeGltfBuffer(F,K,G,z),H=W6.pad(V);$.extensions[j6].byteLength=V.byteLength,W.length=0,W.push(H),X.push(H),J.otherBufferViews.set(Q,X)}}write(J){let Z=0;for(let Q in this._encoderBufferViews){let X=this._encoderBufferViews[Q],K=this._encoderBufferViewData[Q][0],G=J.otherBufferViewsIndexMap.get(K),z=this._encoderBufferViewAccessors[Q];for(let q of z)q.bufferView=G;let F=J.jsonDoc.json.bufferViews[G],V=F.byteOffset||0;Object.assign(F,X),F.byteOffset=Z;let H=F.extensions[j6];H.byteOffset=V,Z+=W6.padNumber(X.byteLength)}let Y=this._encoderFallbackBuffer,$=J.bufferIndexMap.get(Y),W=J.jsonDoc.json.buffers[$];return W.byteLength=Z,W.extensions={[j6]:{fallback:!0}},Y.dispose(),this}}LG.EXTENSION_NAME=j6;LG.EncoderMethod=UG;var VG=iV1;class Sl{match(J){return J.length>=12&&W6.decodeText(J.slice(4,12))==="ftypavif"}getSize(J){if(!this.match(J))return null;let Z=new DataView(J.buffer,J.byteOffset,J.byteLength),Y=Ml(Z,0);if(!Y)return null;let $=Y.end;while(Y=Ml(Z,$))if(Y.type==="meta")$=Y.start+4;else if(Y.type==="iprp"||Y.type==="ipco")$=Y.start;else if(Y.type==="ispe")return[Z.getUint32(Y.start+4),Z.getUint32(Y.start+8)];else if(Y.type==="mdat")break;else $=Y.end;return null}getChannels(J){return 4}}class zU extends R1{constructor(...J){super(...J);this.extensionName=VG,this.prereadTypes=[l.TEXTURE]}static register(){v9.registerFormat("image/avif",new Sl)}preread(J){return(J.jsonDoc.json.textures||[]).forEach((Y)=>{if(Y.extensions&&Y.extensions[VG])Y.source=Y.extensions[VG].source}),this}read(J){return this}write(J){let Z=J.jsonDoc;return this.document.getRoot().listTextures().forEach((Y)=>{if(Y.getMimeType()==="image/avif"){let $=J.imageIndexMap.get(Y);(Z.json.textures||[]).forEach((Q)=>{if(Q.source===$)Q.extensions=Q.extensions||{},Q.extensions[VG]={source:Q.source},delete Q.source})}}),this}}zU.EXTENSION_NAME=VG;function Ml(J,Z){if(J.byteLength<4+Z)return null;let Y=J.getUint32(Z);if(J.byteLength<Y+Z||Y<8)return null;return{type:W6.decodeText(new Uint8Array(J.buffer,J.byteOffset+Z+4,4)),start:Z+8,end:Z+Y}}var HG=pV1;class _l{match(J){return J.length>=12&&J[8]===87&&J[9]===69&&J[10]===66&&J[11]===80}getSize(J){let Z=W6.decodeText(J.slice(0,4)),Y=W6.decodeText(J.slice(8,12));if(Z!=="RIFF"||Y!=="WEBP")return null;let $=new DataView(J.buffer,J.byteOffset),W=12;while(W<$.byteLength){let Q=W6.decodeText(new Uint8Array([$.getUint8(W),$.getUint8(W+1),$.getUint8(W+2),$.getUint8(W+3)])),X=$.getUint32(W+4,!0);if(Q==="VP8 "){let K=$.getInt16(W+14,!0)&16383,G=$.getInt16(W+16,!0)&16383;return[K,G]}else if(Q==="VP8L"){let K=$.getUint8(W+9),G=$.getUint8(W+10),z=$.getUint8(W+11),F=$.getUint8(W+12),V=1+((G&63)<<8|K),H=1+((F&15)<<10|z<<2|(G&192)>>6);return[V,H]}W+=8+X+X%2}return null}getChannels(J){return 4}}class FU extends R1{constructor(...J){super(...J);this.extensionName=HG,this.prereadTypes=[l.TEXTURE]}static register(){v9.registerFormat("image/webp",new _l)}preread(J){return(J.jsonDoc.json.textures||[]).forEach((Y)=>{if(Y.extensions&&Y.extensions[HG])Y.source=Y.extensions[HG].source}),this}read(J){return this}write(J){let Z=J.jsonDoc;return this.document.getRoot().listTextures().forEach((Y)=>{if(Y.getMimeType()==="image/webp"){let $=J.imageIndexMap.get(Y);(Z.json.textures||[]).forEach((Q)=>{if(Q.source===$)Q.extensions=Q.extensions||{},Q.extensions[HG]={source:Q.source},delete Q.source})}}),this}}FU.EXTENSION_NAME=HG;var Rl=Il,k8,xl,Al;function WH1(J,Z){let Y=new k8.DecoderBuffer;try{if(Y.Init(Z,Z.length),J.GetEncodedGeometryType(Y)!==k8.TRIANGULAR_MESH)throw new Error(`[${Rl}] Unknown geometry type.`);let W=new k8.Mesh;if(!J.DecodeBufferToMesh(Y,W).ok()||W.ptr===0)throw new Error(`[${Rl}] Decoding failure.`);return W}finally{k8.destroy(Y)}}function QH1(J,Z){let $=Z.num_faces()*3,W,Q;if(Z.num_points()<=65534){let X=$*Uint16Array.BYTES_PER_ELEMENT;W=k8._malloc(X),J.GetTrianglesUInt16Array(Z,X,W),Q=new Uint16Array(k8.HEAPU16.buffer,W,$).slice()}else{let X=$*Uint32Array.BYTES_PER_ELEMENT;W=k8._malloc(X),J.GetTrianglesUInt32Array(Z,X,W),Q=new Uint32Array(k8.HEAPU32.buffer,W,$).slice()}return k8._free(W),Q}function XH1(J,Z,Y,$){let W=Al[$.componentType],Q=xl[$.componentType],X=Y.num_components(),G=Z.num_points()*X,z=G*Q.BYTES_PER_ELEMENT,F=k8._malloc(z);J.GetAttributeDataArrayForAllPoints(Z,Y,W,z,F);let V=new Q(k8.HEAPF32.buffer,F,G).slice();return k8._free(F),V}function KH1(J){k8=J,xl={[H0.ComponentType.FLOAT]:Float32Array,[H0.ComponentType.UNSIGNED_INT]:Uint32Array,[H0.ComponentType.UNSIGNED_SHORT]:Uint16Array,[H0.ComponentType.UNSIGNED_BYTE]:Uint8Array,[H0.ComponentType.SHORT]:Int16Array,[H0.ComponentType.BYTE]:Int8Array},Al={[H0.ComponentType.FLOAT]:k8.DT_FLOAT32,[H0.ComponentType.UNSIGNED_INT]:k8.DT_UINT32,[H0.ComponentType.UNSIGNED_SHORT]:k8.DT_UINT16,[H0.ComponentType.UNSIGNED_BYTE]:k8.DT_UINT8,[H0.ComponentType.SHORT]:k8.DT_INT16,[H0.ComponentType.BYTE]:k8.DT_INT8}}var b5,wG;(function(J){J[J.EDGEBREAKER=1]="EDGEBREAKER",J[J.SEQUENTIAL=0]="SEQUENTIAL"})(wG||(wG={}));var g5;(function(J){J.POSITION="POSITION",J.NORMAL="NORMAL",J.COLOR="COLOR",J.TEX_COORD="TEX_COORD",J.GENERIC="GENERIC"})(g5||(g5={}));var hl={[g5.POSITION]:14,[g5.NORMAL]:10,[g5.COLOR]:8,[g5.TEX_COORD]:12,[g5.GENERIC]:12},Nl={decodeSpeed:5,encodeSpeed:5,method:wG.EDGEBREAKER,quantizationBits:hl,quantizationVolume:"mesh"};function GH1(J){b5=J}function zH1(J,Z=Nl){let Y=B7({},Nl,Z);Y.quantizationBits=B7({},hl,Z.quantizationBits);let $=new b5.MeshBuilder,W=new b5.Mesh,Q=new b5.ExpertEncoder(W),X={},K=new b5.DracoInt8Array,G=J.listTargets().length>0,z=!1;for(let L of J.listSemantics()){let w=J.getAttribute(L);if(w.getSparse()){z=!0;continue}let O=FH1(L),R=VH1($,w.getComponentType(),W,b5[O],w.getCount(),w.getElementSize(),w.getArray());if(R===-1)throw new Error(`Error compressing "${L}" attribute.`);if(X[L]=R,Y.quantizationVolume==="mesh"||L!=="POSITION")Q.SetAttributeQuantization(R,Y.quantizationBits[O]);else if(typeof Y.quantizationVolume==="object"){let{quantizationVolume:N}=Y,P=Math.max(N.max[0]-N.min[0],N.max[1]-N.min[1],N.max[2]-N.min[2]);Q.SetAttributeExplicitQuantization(R,Y.quantizationBits[O],w.getElementSize(),N.min,P)}else throw new Error("Invalid quantization volume state.")}let F=J.getIndices();if(!F)throw new XU("Primitive must have indices.");if($.AddFacesToMesh(W,F.getCount()/3,F.getArray()),Q.SetSpeedOptions(Y.encodeSpeed,Y.decodeSpeed),Q.SetTrackEncodedProperties(!0),Y.method===wG.SEQUENTIAL||G||z)Q.SetEncodingMethod(b5.MESH_SEQUENTIAL_ENCODING);else Q.SetEncodingMethod(b5.MESH_EDGEBREAKER_ENCODING);let V=Q.EncodeToDracoBuffer(!(G||z),K);if(V<=0)throw new XU("Error applying Draco compression.");let H=new Uint8Array(V);for(let L=0;L<V;++L)H[L]=K.GetValue(L);let q=Q.GetNumberOfEncodedPoints(),U=Q.GetNumberOfEncodedFaces()*3;return b5.destroy(K),b5.destroy(W),b5.destroy($),b5.destroy(Q),{numVertices:q,numIndices:U,data:H,attributeIDs:X}}function FH1(J){if(J==="POSITION")return g5.POSITION;else if(J==="NORMAL")return g5.NORMAL;else if(J.startsWith("COLOR_"))return g5.COLOR;else if(J.startsWith("TEXCOORD_"))return g5.TEX_COORD;return g5.GENERIC}function VH1(J,Z,Y,$,W,Q,X){switch(Z){case H0.ComponentType.UNSIGNED_BYTE:return J.AddUInt8Attribute(Y,$,W,Q,X);case H0.ComponentType.BYTE:return J.AddInt8Attribute(Y,$,W,Q,X);case H0.ComponentType.UNSIGNED_SHORT:return J.AddUInt16Attribute(Y,$,W,Q,X);case H0.ComponentType.SHORT:return J.AddInt16Attribute(Y,$,W,Q,X);case H0.ComponentType.UNSIGNED_INT:return J.AddUInt32Attribute(Y,$,W,Q,X);case H0.ComponentType.FLOAT:return J.AddFloatAttribute(Y,$,W,Q,X);default:throw new Error(`Unexpected component type, "${Z}".`)}}class XU extends Error{}var F8=Il;class BG extends R1{constructor(...J){super(...J);this.extensionName=F8,this.prereadTypes=[l.PRIMITIVE],this.prewriteTypes=[l.ACCESSOR],this.readDependencies=["draco3d.decoder"],this.writeDependencies=["draco3d.encoder"],this._decoderModule=null,this._encoderModule=null,this._encoderOptions={}}install(J,Z){if(J==="draco3d.decoder")this._decoderModule=Z,KH1(this._decoderModule);if(J==="draco3d.encoder")this._encoderModule=Z,GH1(this._encoderModule);return this}setEncoderOptions(J){return this._encoderOptions=J,this}preread(J){if(!this._decoderModule)throw new Error(`[${F8}] Please install extension dependency, "draco3d.decoder".`);let Z=this.document.getLogger(),Y=J.jsonDoc,$=new Map;try{let W=Y.json.meshes||[];for(let Q of W)for(let X of Q.primitives){if(!X.extensions||!X.extensions[F8])continue;let K=X.extensions[F8],[G,z]=$.get(K.bufferView)||[];if(!z||!G){let F=Y.json.bufferViews[K.bufferView],V=Y.json.buffers[F.buffer],H=V.uri?Y.resources[V.uri]:Y.resources[zP],q=F.byteOffset||0,U=F.byteLength,L=W6.toView(H,q,U);G=new this._decoderModule.Decoder,z=WH1(G,L),$.set(K.bufferView,[G,z]),Z.debug(`[${F8}] Decompressed ${L.byteLength} bytes.`)}for(let F in K.attributes){let V=J.jsonDoc.json.accessors[X.attributes[F]],H=G.GetAttributeByUniqueId(z,K.attributes[F]),q=XH1(G,z,H,V);J.accessors[X.attributes[F]].setArray(q)}if(X.indices!==void 0)J.accessors[X.indices].setArray(QH1(G,z))}}finally{for(let[W,Q]of Array.from($.values()))this._decoderModule.destroy(W),this._decoderModule.destroy(Q)}return this}read(J){return this}prewrite(J,Z){if(!this._encoderModule)throw new Error(`[${F8}] Please install extension dependency, "draco3d.encoder".`);let Y=this.document.getLogger();Y.debug(`[${F8}] Compression options: ${JSON.stringify(this._encoderOptions)}`);let $=HH1(this.document),W=new Map,Q="mesh";if(this._encoderOptions.quantizationVolume==="scene")if(this.document.getRoot().listScenes().length!==1)Y.warn(`[${F8}]: quantizationVolume=scene requires exactly 1 scene.`);else Q=Kl(this.document.getRoot().listScenes().pop());for(let X of Array.from($.keys())){let K=$.get(X);if(!K)throw new Error("Unexpected primitive.");if(W.has(K)){W.set(K,W.get(K));continue}let G=X.getIndices(),z=J.jsonDoc.json.accessors,F;try{F=zH1(X,B7({},this._encoderOptions,{quantizationVolume:Q}))}catch(q){if(q instanceof XU){Y.warn(`[${F8}]: ${q.message} Skipping primitive compression.`);continue}throw q}W.set(K,F);let V=J.createAccessorDef(G);if(V.count=F.numIndices,J.accessorIndexMap.set(G,z.length),z.push(V),F.numVertices>65534&&H0.getComponentSize(V.componentType)<=2)V.componentType=H0.ComponentType.UNSIGNED_INT;else if(F.numVertices>254&&H0.getComponentSize(V.componentType)<=1)V.componentType=H0.ComponentType.UNSIGNED_SHORT;for(let q of X.listSemantics()){let U=X.getAttribute(q);if(F.attributeIDs[q]===void 0)continue;let L=J.createAccessorDef(U);L.count=F.numVertices,J.accessorIndexMap.set(U,z.length),z.push(L)}let H=X.getAttribute("POSITION").getBuffer()||this.document.getRoot().listBuffers()[0];if(!J.otherBufferViews.has(H))J.otherBufferViews.set(H,[]);J.otherBufferViews.get(H).push(F.data)}return Y.debug(`[${F8}] Compressed ${$.size} primitives.`),J.extensionData[F8]={primitiveHashMap:$,primitiveEncodingMap:W},this}write(J){let Z=J.extensionData[F8];for(let Y of this.document.getRoot().listMeshes()){let $=J.jsonDoc.json.meshes[J.meshIndexMap.get(Y)];for(let W=0;W<Y.listPrimitives().length;W++){let Q=Y.listPrimitives()[W],X=$.primitives[W],K=Z.primitiveHashMap.get(Q);if(!K)continue;let G=Z.primitiveEncodingMap.get(K);if(!G)continue;X.extensions=X.extensions||{},X.extensions[F8]={bufferView:J.otherBufferViewsIndexMap.get(G.data),attributes:G.attributeIDs}}}if(!Z.primitiveHashMap.size){let Y=J.jsonDoc.json;Y.extensionsUsed=(Y.extensionsUsed||[]).filter(($)=>$!==F8),Y.extensionsRequired=(Y.extensionsRequired||[]).filter(($)=>$!==F8)}return this}}BG.EXTENSION_NAME=F8;BG.EncoderMethod=wG;function HH1(J){let Z=J.getLogger(),Y=new Set,$=new Set,W=0,Q=0;for(let V of J.getRoot().listMeshes())for(let H of V.listPrimitives())if(!H.getIndices())$.add(H),W++;else if(H.getMode()!==OJ.Mode.TRIANGLES)$.add(H),Q++;else Y.add(H);if(W>0)Z.warn(`[${F8}] Skipping Draco compression of ${W} non-indexed primitives.`);if(Q>0)Z.warn(`[${F8}] Skipping Draco compression of ${Q} non-TRIANGLES primitives.`);let X=J.getRoot().listAccessors(),K=new Map;for(let V=0;V<X.length;V++)K.set(X[V],V);let G=new Map,z=new Set,F=new Map;for(let V of Array.from(Y)){let H=Pl(V,K);if(z.has(H)){F.set(V,H);continue}if(G.has(V.getIndices())){let q=V.getIndices(),U=q.clone();K.set(U,J.getRoot().listAccessors().length-1),V.swap(q,U)}for(let q of V.listAttributes())if(G.has(q)){let U=q.clone();K.set(U,J.getRoot().listAccessors().length-1),V.swap(q,U)}H=Pl(V,K),z.add(H),F.set(V,H),G.set(V.getIndices(),H);for(let q of V.listAttributes())G.set(q,H)}for(let V of Array.from(G.keys())){let H=new Set(V.listParents().map((q)=>q.propertyType));if(H.size!==2||!H.has(l.PRIMITIVE)||!H.has(l.ROOT))throw new Error(`[${F8}] Compressed accessors must only be used as indices or vertex attributes.`)}for(let V of Array.from(Y)){let H=F.get(V),q=V.getIndices();if(G.get(q)!==H||V.listAttributes().some((U)=>G.get(U)!==H))throw new Error(`[${F8}] Draco primitives must share all, or no, accessors.`)}for(let V of Array.from($)){let H=V.getIndices();if(G.has(H)||V.listAttributes().some((q)=>G.has(q)))throw new Error(`[${F8}] Accessor cannot be shared by compressed and uncompressed primitives.`)}return F}function Pl(J,Z){let Y=[],$=J.getIndices();Y.push(Z.get($));for(let W of J.listAttributes())Y.push(Z.get(W));return Y.sort().join("|")}class nW extends f1{init(){this.extensionName=jP,this.propertyType="Light",this.parentTypes=[l.NODE]}getDefaults(){return Object.assign(super.getDefaults(),{color:[1,1,1],intensity:1,type:nW.Type.POINT,range:null,innerConeAngle:0,outerConeAngle:Math.PI/4})}getColor(){return this.get("color")}setColor(J){return this.set("color",J)}getIntensity(){return this.get("intensity")}setIntensity(J){return this.set("intensity",J)}getType(){return this.get("type")}setType(J){return this.set("type",J)}getRange(){return this.get("range")}setRange(J){return this.set("range",J)}getInnerConeAngle(){return this.get("innerConeAngle")}setInnerConeAngle(J){return this.set("innerConeAngle",J)}getOuterConeAngle(){return this.get("outerConeAngle")}setOuterConeAngle(J){return this.set("outerConeAngle",J)}}nW.EXTENSION_NAME=jP;nW.Type={POINT:"point",SPOT:"spot",DIRECTIONAL:"directional"};var L4=jP;class gP extends R1{constructor(...J){super(...J);this.extensionName=L4}createLight(J=""){return new nW(this.document.getGraph(),J)}read(J){let Z=J.jsonDoc;if(!Z.json.extensions||!Z.json.extensions[L4])return this;let W=(Z.json.extensions[L4].lights||[]).map((Q)=>{var X,K;let G=this.createLight().setName(Q.name||"").setType(Q.type);if(Q.color!==void 0)G.setColor(Q.color);if(Q.intensity!==void 0)G.setIntensity(Q.intensity);if(Q.range!==void 0)G.setRange(Q.range);if(((X=Q.spot)==null?void 0:X.innerConeAngle)!==void 0)G.setInnerConeAngle(Q.spot.innerConeAngle);if(((K=Q.spot)==null?void 0:K.outerConeAngle)!==void 0)G.setOuterConeAngle(Q.spot.outerConeAngle);return G});return Z.json.nodes.forEach((Q,X)=>{if(!Q.extensions||!Q.extensions[L4])return;let K=Q.extensions[L4];J.nodes[X].setExtension(L4,W[K.light])}),this}write(J){let Z=J.jsonDoc;if(this.properties.size===0)return this;let Y=[],$=new Map;for(let W of this.properties){let Q=W,X={type:Q.getType()};if(!o1.eq(Q.getColor(),[1,1,1]))X.color=Q.getColor();if(Q.getIntensity()!==1)X.intensity=Q.getIntensity();if(Q.getRange()!=null)X.range=Q.getRange();if(Q.getName())X.name=Q.getName();if(Q.getType()===nW.Type.SPOT)X.spot={innerConeAngle:Q.getInnerConeAngle(),outerConeAngle:Q.getOuterConeAngle()};Y.push(X),$.set(Q,Y.length-1)}return this.document.getRoot().listNodes().forEach((W)=>{let Q=W.getExtension(L4);if(Q){let X=J.nodeIndexMap.get(W),K=Z.json.nodes[X];K.extensions=K.extensions||{},K.extensions[L4]={light:$.get(Q)}}}),Z.json.extensions=Z.json.extensions||{},Z.json.extensions[L4]={lights:Y},this}}gP.EXTENSION_NAME=L4;var{R:qH1,G:UH1,B:wH1}=M5;class mP extends f1{init(){this.extensionName=DP,this.propertyType="Anisotropy",this.parentTypes=[l.MATERIAL]}getDefaults(){return Object.assign(super.getDefaults(),{anisotropyStrength:0,anisotropyRotation:0,anisotropyTexture:null,anisotropyTextureInfo:new U1(this.graph,"anisotropyTextureInfo")})}getAnisotropyStrength(){return this.get("anisotropyStrength")}setAnisotropyStrength(J){return this.set("anisotropyStrength",J)}getAnisotropyRotation(){return this.get("anisotropyRotation")}setAnisotropyRotation(J){return this.set("anisotropyRotation",J)}getAnisotropyTexture(){return this.getRef("anisotropyTexture")}getAnisotropyTextureInfo(){return this.getRef("anisotropyTexture")?this.getRef("anisotropyTextureInfo"):null}setAnisotropyTexture(J){return this.setRef("anisotropyTexture",J,{channels:qH1|UH1|wH1})}}mP.EXTENSION_NAME=DP;var GY=DP;class uP extends R1{constructor(...J){super(...J);this.extensionName=GY,this.prereadTypes=[l.MESH],this.prewriteTypes=[l.MESH]}createAnisotropy(){return new mP(this.document.getGraph())}read(J){return this}write(J){return this}preread(J){let Z=J.jsonDoc,Y=Z.json.materials||[],$=Z.json.textures||[];return Y.forEach((W,Q)=>{if(W.extensions&&W.extensions[GY]){let X=this.createAnisotropy();J.materials[Q].setExtension(GY,X);let K=W.extensions[GY];if(K.anisotropyStrength!==void 0)X.setAnisotropyStrength(K.anisotropyStrength);if(K.anisotropyRotation!==void 0)X.setAnisotropyRotation(K.anisotropyRotation);if(K.anisotropyTexture!==void 0){let G=K.anisotropyTexture,z=J.textures[$[G.index].source];X.setAnisotropyTexture(z),J.setTextureInfo(X.getAnisotropyTextureInfo(),G)}}}),this}prewrite(J){let Z=J.jsonDoc;return this.document.getRoot().listMaterials().forEach((Y)=>{let $=Y.getExtension(GY);if($){let W=J.materialIndexMap.get(Y),Q=Z.json.materials[W];Q.extensions=Q.extensions||{};let X=Q.extensions[GY]={};if($.getAnisotropyStrength()>0)X.anisotropyStrength=$.getAnisotropyStrength();if($.getAnisotropyRotation()!==0)X.anisotropyRotation=$.getAnisotropyRotation();if($.getAnisotropyTexture()){let K=$.getAnisotropyTexture(),G=$.getAnisotropyTextureInfo();X.anisotropyTexture=J.createTextureInfoDef(K,G)}}}),this}}uP.EXTENSION_NAME=GY;var{R:jl,G:Dl,B:LH1}=M5;class dP extends f1{init(){this.extensionName=CP,this.propertyType="Clearcoat",this.parentTypes=[l.MATERIAL]}getDefaults(){return Object.assign(super.getDefaults(),{clearcoatFactor:0,clearcoatTexture:null,clearcoatTextureInfo:new U1(this.graph,"clearcoatTextureInfo"),clearcoatRoughnessFactor:0,clearcoatRoughnessTexture:null,clearcoatRoughnessTextureInfo:new U1(this.graph,"clearcoatRoughnessTextureInfo"),clearcoatNormalScale:1,clearcoatNormalTexture:null,clearcoatNormalTextureInfo:new U1(this.graph,"clearcoatNormalTextureInfo")})}getClearcoatFactor(){return this.get("clearcoatFactor")}setClearcoatFactor(J){return this.set("clearcoatFactor",J)}getClearcoatTexture(){return this.getRef("clearcoatTexture")}getClearcoatTextureInfo(){return this.getRef("clearcoatTexture")?this.getRef("clearcoatTextureInfo"):null}setClearcoatTexture(J){return this.setRef("clearcoatTexture",J,{channels:jl})}getClearcoatRoughnessFactor(){return this.get("clearcoatRoughnessFactor")}setClearcoatRoughnessFactor(J){return this.set("clearcoatRoughnessFactor",J)}getClearcoatRoughnessTexture(){return this.getRef("clearcoatRoughnessTexture")}getClearcoatRoughnessTextureInfo(){return this.getRef("clearcoatRoughnessTexture")?this.getRef("clearcoatRoughnessTextureInfo"):null}setClearcoatRoughnessTexture(J){return this.setRef("clearcoatRoughnessTexture",J,{channels:Dl})}getClearcoatNormalScale(){return this.get("clearcoatNormalScale")}setClearcoatNormalScale(J){return this.set("clearcoatNormalScale",J)}getClearcoatNormalTexture(){return this.getRef("clearcoatNormalTexture")}getClearcoatNormalTextureInfo(){return this.getRef("clearcoatNormalTexture")?this.getRef("clearcoatNormalTextureInfo"):null}setClearcoatNormalTexture(J){return this.setRef("clearcoatNormalTexture",J,{channels:jl|Dl|LH1})}}dP.EXTENSION_NAME=CP;var zY=CP;class cP extends R1{constructor(...J){super(...J);this.extensionName=zY,this.prereadTypes=[l.MESH],this.prewriteTypes=[l.MESH]}createClearcoat(){return new dP(this.document.getGraph())}read(J){return this}write(J){return this}preread(J){let Z=J.jsonDoc,Y=Z.json.materials||[],$=Z.json.textures||[];return Y.forEach((W,Q)=>{if(W.extensions&&W.extensions[zY]){let X=this.createClearcoat();J.materials[Q].setExtension(zY,X);let K=W.extensions[zY];if(K.clearcoatFactor!==void 0)X.setClearcoatFactor(K.clearcoatFactor);if(K.clearcoatRoughnessFactor!==void 0)X.setClearcoatRoughnessFactor(K.clearcoatRoughnessFactor);if(K.clearcoatTexture!==void 0){let G=K.clearcoatTexture,z=J.textures[$[G.index].source];X.setClearcoatTexture(z),J.setTextureInfo(X.getClearcoatTextureInfo(),G)}if(K.clearcoatRoughnessTexture!==void 0){let G=K.clearcoatRoughnessTexture,z=J.textures[$[G.index].source];X.setClearcoatRoughnessTexture(z),J.setTextureInfo(X.getClearcoatRoughnessTextureInfo(),G)}if(K.clearcoatNormalTexture!==void 0){let G=K.clearcoatNormalTexture,z=J.textures[$[G.index].source];if(X.setClearcoatNormalTexture(z),J.setTextureInfo(X.getClearcoatNormalTextureInfo(),G),G.scale!==void 0)X.setClearcoatNormalScale(G.scale)}}}),this}prewrite(J){let Z=J.jsonDoc;return this.document.getRoot().listMaterials().forEach((Y)=>{let $=Y.getExtension(zY);if($){let W=J.materialIndexMap.get(Y),Q=Z.json.materials[W];Q.extensions=Q.extensions||{};let X=Q.extensions[zY]={clearcoatFactor:$.getClearcoatFactor(),clearcoatRoughnessFactor:$.getClearcoatRoughnessFactor()};if($.getClearcoatTexture()){let K=$.getClearcoatTexture(),G=$.getClearcoatTextureInfo();X.clearcoatTexture=J.createTextureInfoDef(K,G)}if($.getClearcoatRoughnessTexture()){let K=$.getClearcoatRoughnessTexture(),G=$.getClearcoatRoughnessTextureInfo();X.clearcoatRoughnessTexture=J.createTextureInfoDef(K,G)}if($.getClearcoatNormalTexture()){let K=$.getClearcoatNormalTexture(),G=$.getClearcoatNormalTextureInfo();if(X.clearcoatNormalTexture=J.createTextureInfoDef(K,G),$.getClearcoatNormalScale()!==1)X.clearcoatNormalTexture.scale=$.getClearcoatNormalScale()}}}),this}}cP.EXTENSION_NAME=zY;var{R:BH1,G:OH1,B:MH1,A:RH1}=M5;class lP extends f1{init(){this.extensionName=TP,this.propertyType="DiffuseTransmission",this.parentTypes=[l.MATERIAL]}getDefaults(){return Object.assign(super.getDefaults(),{diffuseTransmissionFactor:0,diffuseTransmissionTexture:null,diffuseTransmissionTextureInfo:new U1(this.graph,"diffuseTransmissionTextureInfo"),diffuseTransmissionColorFactor:[1,1,1],diffuseTransmissionColorTexture:null,diffuseTransmissionColorTextureInfo:new U1(this.graph,"diffuseTransmissionColorTextureInfo")})}getDiffuseTransmissionFactor(){return this.get("diffuseTransmissionFactor")}setDiffuseTransmissionFactor(J){return this.set("diffuseTransmissionFactor",J)}getDiffuseTransmissionTexture(){return this.getRef("diffuseTransmissionTexture")}getDiffuseTransmissionTextureInfo(){return this.getRef("diffuseTransmissionTexture")?this.getRef("diffuseTransmissionTextureInfo"):null}setDiffuseTransmissionTexture(J){return this.setRef("diffuseTransmissionTexture",J,{channels:RH1})}getDiffuseTransmissionColorFactor(){return this.get("diffuseTransmissionColorFactor")}setDiffuseTransmissionColorFactor(J){return this.set("diffuseTransmissionColorFactor",J)}getDiffuseTransmissionColorTexture(){return this.getRef("diffuseTransmissionColorTexture")}getDiffuseTransmissionColorTextureInfo(){return this.getRef("diffuseTransmissionColorTexture")?this.getRef("diffuseTransmissionColorTextureInfo"):null}setDiffuseTransmissionColorTexture(J){return this.setRef("diffuseTransmissionColorTexture",J,{channels:BH1|OH1|MH1})}}lP.EXTENSION_NAME=TP;var FY=TP;class pP extends R1{constructor(...J){super(...J);this.extensionName=FY}createDiffuseTransmission(){return new lP(this.document.getGraph())}read(J){let Z=J.jsonDoc,Y=Z.json.materials||[],$=Z.json.textures||[];return Y.forEach((W,Q)=>{if(W.extensions&&W.extensions[FY]){let X=this.createDiffuseTransmission();J.materials[Q].setExtension(FY,X);let K=W.extensions[FY];if(K.diffuseTransmissionFactor!==void 0)X.setDiffuseTransmissionFactor(K.diffuseTransmissionFactor);if(K.diffuseTransmissionColorFactor!==void 0)X.setDiffuseTransmissionColorFactor(K.diffuseTransmissionColorFactor);if(K.diffuseTransmissionTexture!==void 0){let G=K.diffuseTransmissionTexture,z=J.textures[$[G.index].source];X.setDiffuseTransmissionTexture(z),J.setTextureInfo(X.getDiffuseTransmissionTextureInfo(),G)}if(K.diffuseTransmissionColorTexture!==void 0){let G=K.diffuseTransmissionColorTexture,z=J.textures[$[G.index].source];X.setDiffuseTransmissionColorTexture(z),J.setTextureInfo(X.getDiffuseTransmissionColorTextureInfo(),G)}}}),this}write(J){let Z=J.jsonDoc;for(let Y of this.document.getRoot().listMaterials()){let $=Y.getExtension(FY);if(!$)continue;let W=J.materialIndexMap.get(Y),Q=Z.json.materials[W];Q.extensions=Q.extensions||{};let X=Q.extensions[FY]={diffuseTransmissionFactor:$.getDiffuseTransmissionFactor(),diffuseTransmissionColorFactor:$.getDiffuseTransmissionColorFactor()};if($.getDiffuseTransmissionTexture()){let K=$.getDiffuseTransmissionTexture(),G=$.getDiffuseTransmissionTextureInfo();X.diffuseTransmissionTexture=J.createTextureInfoDef(K,G)}if($.getDiffuseTransmissionColorTexture()){let K=$.getDiffuseTransmissionColorTexture(),G=$.getDiffuseTransmissionColorTextureInfo();X.diffuseTransmissionColorTexture=J.createTextureInfoDef(K,G)}}return this}}pP.EXTENSION_NAME=FY;class iP extends f1{init(){this.extensionName=kP,this.propertyType="Dispersion",this.parentTypes=[l.MATERIAL]}getDefaults(){return Object.assign(super.getDefaults(),{dispersion:0})}getDispersion(){return this.get("dispersion")}setDispersion(J){return this.set("dispersion",J)}}iP.EXTENSION_NAME=kP;var VY=kP;class nP extends R1{constructor(...J){super(...J);this.extensionName=VY,this.prereadTypes=[l.MESH],this.prewriteTypes=[l.MESH]}createDispersion(){return new iP(this.document.getGraph())}read(J){return this}write(J){return this}preread(J){return(J.jsonDoc.json.materials||[]).forEach(($,W)=>{if($.extensions&&$.extensions[VY]){let Q=this.createDispersion();J.materials[W].setExtension(VY,Q);let X=$.extensions[VY];if(X.dispersion!==void 0)Q.setDispersion(X.dispersion)}}),this}prewrite(J){let Z=J.jsonDoc;return this.document.getRoot().listMaterials().forEach((Y)=>{let $=Y.getExtension(VY);if($){let W=J.materialIndexMap.get(Y),Q=Z.json.materials[W];Q.extensions=Q.extensions||{},Q.extensions[VY]={dispersion:$.getDispersion()}}}),this}}nP.EXTENSION_NAME=VY;class aP extends f1{init(){this.extensionName=EP,this.propertyType="EmissiveStrength",this.parentTypes=[l.MATERIAL]}getDefaults(){return Object.assign(super.getDefaults(),{emissiveStrength:1})}getEmissiveStrength(){return this.get("emissiveStrength")}setEmissiveStrength(J){return this.set("emissiveStrength",J)}}aP.EXTENSION_NAME=EP;var HY=EP;class sP extends R1{constructor(...J){super(...J);this.extensionName=HY,this.prereadTypes=[l.MESH],this.prewriteTypes=[l.MESH]}createEmissiveStrength(){return new aP(this.document.getGraph())}read(J){return this}write(J){return this}preread(J){return(J.jsonDoc.json.materials||[]).forEach(($,W)=>{if($.extensions&&$.extensions[HY]){let Q=this.createEmissiveStrength();J.materials[W].setExtension(HY,Q);let X=$.extensions[HY];if(X.emissiveStrength!==void 0)Q.setEmissiveStrength(X.emissiveStrength)}}),this}prewrite(J){let Z=J.jsonDoc;return this.document.getRoot().listMaterials().forEach((Y)=>{let $=Y.getExtension(HY);if($){let W=J.materialIndexMap.get(Y),Q=Z.json.materials[W];Q.extensions=Q.extensions||{},Q.extensions[HY]={emissiveStrength:$.getEmissiveStrength()}}}),this}}sP.EXTENSION_NAME=HY;class oP extends f1{init(){this.extensionName=IP,this.propertyType="IOR",this.parentTypes=[l.MATERIAL]}getDefaults(){return Object.assign(super.getDefaults(),{ior:1.5})}getIOR(){return this.get("ior")}setIOR(J){return this.set("ior",J)}}oP.EXTENSION_NAME=IP;var qY=IP;class VU extends R1{constructor(...J){super(...J);this.extensionName=qY,this.prereadTypes=[l.MESH],this.prewriteTypes=[l.MESH]}createIOR(){return new oP(this.document.getGraph())}read(J){return this}write(J){return this}preread(J){return(J.jsonDoc.json.materials||[]).forEach(($,W)=>{if($.extensions&&$.extensions[qY]){let Q=this.createIOR();J.materials[W].setExtension(qY,Q);let X=$.extensions[qY];if(X.ior!==void 0)Q.setIOR(X.ior)}}),this}prewrite(J){let Z=J.jsonDoc;return this.document.getRoot().listMaterials().forEach((Y)=>{let $=Y.getExtension(qY);if($){let W=J.materialIndexMap.get(Y),Q=Z.json.materials[W];Q.extensions=Q.extensions||{},Q.extensions[qY]={ior:$.getIOR()}}}),this}}VU.EXTENSION_NAME=qY;var{R:NH1,G:PH1}=M5;class rP extends f1{init(){this.extensionName=vP,this.propertyType="Iridescence",this.parentTypes=[l.MATERIAL]}getDefaults(){return Object.assign(super.getDefaults(),{iridescenceFactor:0,iridescenceTexture:null,iridescenceTextureInfo:new U1(this.graph,"iridescenceTextureInfo"),iridescenceIOR:1.3,iridescenceThicknessMinimum:100,iridescenceThicknessMaximum:400,iridescenceThicknessTexture:null,iridescenceThicknessTextureInfo:new U1(this.graph,"iridescenceThicknessTextureInfo")})}getIridescenceFactor(){return this.get("iridescenceFactor")}setIridescenceFactor(J){return this.set("iridescenceFactor",J)}getIridescenceTexture(){return this.getRef("iridescenceTexture")}getIridescenceTextureInfo(){return this.getRef("iridescenceTexture")?this.getRef("iridescenceTextureInfo"):null}setIridescenceTexture(J){return this.setRef("iridescenceTexture",J,{channels:NH1})}getIridescenceIOR(){return this.get("iridescenceIOR")}setIridescenceIOR(J){return this.set("iridescenceIOR",J)}getIridescenceThicknessMinimum(){return this.get("iridescenceThicknessMinimum")}setIridescenceThicknessMinimum(J){return this.set("iridescenceThicknessMinimum",J)}getIridescenceThicknessMaximum(){return this.get("iridescenceThicknessMaximum")}setIridescenceThicknessMaximum(J){return this.set("iridescenceThicknessMaximum",J)}getIridescenceThicknessTexture(){return this.getRef("iridescenceThicknessTexture")}getIridescenceThicknessTextureInfo(){return this.getRef("iridescenceThicknessTexture")?this.getRef("iridescenceThicknessTextureInfo"):null}setIridescenceThicknessTexture(J){return this.setRef("iridescenceThicknessTexture",J,{channels:PH1})}}rP.EXTENSION_NAME=vP;var UY=vP;class tP extends R1{constructor(...J){super(...J);this.extensionName=UY,this.prereadTypes=[l.MESH],this.prewriteTypes=[l.MESH]}createIridescence(){return new rP(this.document.getGraph())}read(J){return this}write(J){return this}preread(J){let Z=J.jsonDoc,Y=Z.json.materials||[],$=Z.json.textures||[];return Y.forEach((W,Q)=>{if(W.extensions&&W.extensions[UY]){let X=this.createIridescence();J.materials[Q].setExtension(UY,X);let K=W.extensions[UY];if(K.iridescenceFactor!==void 0)X.setIridescenceFactor(K.iridescenceFactor);if(K.iridescenceIor!==void 0)X.setIridescenceIOR(K.iridescenceIor);if(K.iridescenceThicknessMinimum!==void 0)X.setIridescenceThicknessMinimum(K.iridescenceThicknessMinimum);if(K.iridescenceThicknessMaximum!==void 0)X.setIridescenceThicknessMaximum(K.iridescenceThicknessMaximum);if(K.iridescenceTexture!==void 0){let G=K.iridescenceTexture,z=J.textures[$[G.index].source];X.setIridescenceTexture(z),J.setTextureInfo(X.getIridescenceTextureInfo(),G)}if(K.iridescenceThicknessTexture!==void 0){let G=K.iridescenceThicknessTexture,z=J.textures[$[G.index].source];X.setIridescenceThicknessTexture(z),J.setTextureInfo(X.getIridescenceThicknessTextureInfo(),G)}}}),this}prewrite(J){let Z=J.jsonDoc;return this.document.getRoot().listMaterials().forEach((Y)=>{let $=Y.getExtension(UY);if($){let W=J.materialIndexMap.get(Y),Q=Z.json.materials[W];Q.extensions=Q.extensions||{};let X=Q.extensions[UY]={};if($.getIridescenceFactor()>0)X.iridescenceFactor=$.getIridescenceFactor();if($.getIridescenceIOR()!==1.3)X.iridescenceIor=$.getIridescenceIOR();if($.getIridescenceThicknessMinimum()!==100)X.iridescenceThicknessMinimum=$.getIridescenceThicknessMinimum();if($.getIridescenceThicknessMaximum()!==400)X.iridescenceThicknessMaximum=$.getIridescenceThicknessMaximum();if($.getIridescenceTexture()){let K=$.getIridescenceTexture(),G=$.getIridescenceTextureInfo();X.iridescenceTexture=J.createTextureInfoDef(K,G)}if($.getIridescenceThicknessTexture()){let K=$.getIridescenceThicknessTexture(),G=$.getIridescenceThicknessTextureInfo();X.iridescenceThicknessTexture=J.createTextureInfoDef(K,G)}}}),this}}tP.EXTENSION_NAME=UY;var{R:Cl,G:Tl,B:kl,A:El}=M5;class eP extends f1{init(){this.extensionName=SP,this.propertyType="PBRSpecularGlossiness",this.parentTypes=[l.MATERIAL]}getDefaults(){return Object.assign(super.getDefaults(),{diffuseFactor:[1,1,1,1],diffuseTexture:null,diffuseTextureInfo:new U1(this.graph,"diffuseTextureInfo"),specularFactor:[1,1,1],glossinessFactor:1,specularGlossinessTexture:null,specularGlossinessTextureInfo:new U1(this.graph,"specularGlossinessTextureInfo")})}getDiffuseFactor(){return this.get("diffuseFactor")}setDiffuseFactor(J){return this.set("diffuseFactor",J)}getDiffuseTexture(){return this.getRef("diffuseTexture")}getDiffuseTextureInfo(){return this.getRef("diffuseTexture")?this.getRef("diffuseTextureInfo"):null}setDiffuseTexture(J){return this.setRef("diffuseTexture",J,{channels:Cl|Tl|kl|El,isColor:!0})}getSpecularFactor(){return this.get("specularFactor")}setSpecularFactor(J){return this.set("specularFactor",J)}getGlossinessFactor(){return this.get("glossinessFactor")}setGlossinessFactor(J){return this.set("glossinessFactor",J)}getSpecularGlossinessTexture(){return this.getRef("specularGlossinessTexture")}getSpecularGlossinessTextureInfo(){return this.getRef("specularGlossinessTexture")?this.getRef("specularGlossinessTextureInfo"):null}setSpecularGlossinessTexture(J){return this.setRef("specularGlossinessTexture",J,{channels:Cl|Tl|kl|El})}}eP.EXTENSION_NAME=SP;var wY=SP;class HU extends R1{constructor(...J){super(...J);this.extensionName=wY,this.prereadTypes=[l.MESH],this.prewriteTypes=[l.MESH]}createPBRSpecularGlossiness(){return new eP(this.document.getGraph())}read(J){return this}write(J){return this}preread(J){let Z=J.jsonDoc,Y=Z.json.materials||[],$=Z.json.textures||[];return Y.forEach((W,Q)=>{if(W.extensions&&W.extensions[wY]){let X=this.createPBRSpecularGlossiness();J.materials[Q].setExtension(wY,X);let K=W.extensions[wY];if(K.diffuseFactor!==void 0)X.setDiffuseFactor(K.diffuseFactor);if(K.specularFactor!==void 0)X.setSpecularFactor(K.specularFactor);if(K.glossinessFactor!==void 0)X.setGlossinessFactor(K.glossinessFactor);if(K.diffuseTexture!==void 0){let G=K.diffuseTexture,z=J.textures[$[G.index].source];X.setDiffuseTexture(z),J.setTextureInfo(X.getDiffuseTextureInfo(),G)}if(K.specularGlossinessTexture!==void 0){let G=K.specularGlossinessTexture,z=J.textures[$[G.index].source];X.setSpecularGlossinessTexture(z),J.setTextureInfo(X.getSpecularGlossinessTextureInfo(),G)}}}),this}prewrite(J){let Z=J.jsonDoc;return this.document.getRoot().listMaterials().forEach((Y)=>{let $=Y.getExtension(wY);if($){let W=J.materialIndexMap.get(Y),Q=Z.json.materials[W];Q.extensions=Q.extensions||{};let X=Q.extensions[wY]={diffuseFactor:$.getDiffuseFactor(),specularFactor:$.getSpecularFactor(),glossinessFactor:$.getGlossinessFactor()};if($.getDiffuseTexture()){let K=$.getDiffuseTexture(),G=$.getDiffuseTextureInfo();X.diffuseTexture=J.createTextureInfoDef(K,G)}if($.getSpecularGlossinessTexture()){let K=$.getSpecularGlossinessTexture(),G=$.getSpecularGlossinessTextureInfo();X.specularGlossinessTexture=J.createTextureInfoDef(K,G)}}}),this}}HU.EXTENSION_NAME=wY;var{R:jH1,G:DH1,B:CH1,A:TH1}=M5;class Jj extends f1{init(){this.extensionName=_P,this.propertyType="Sheen",this.parentTypes=[l.MATERIAL]}getDefaults(){return Object.assign(super.getDefaults(),{sheenColorFactor:[0,0,0],sheenColorTexture:null,sheenColorTextureInfo:new U1(this.graph,"sheenColorTextureInfo"),sheenRoughnessFactor:0,sheenRoughnessTexture:null,sheenRoughnessTextureInfo:new U1(this.graph,"sheenRoughnessTextureInfo")})}getSheenColorFactor(){return this.get("sheenColorFactor")}setSheenColorFactor(J){return this.set("sheenColorFactor",J)}getSheenColorTexture(){return this.getRef("sheenColorTexture")}getSheenColorTextureInfo(){return this.getRef("sheenColorTexture")?this.getRef("sheenColorTextureInfo"):null}setSheenColorTexture(J){return this.setRef("sheenColorTexture",J,{channels:jH1|DH1|CH1,isColor:!0})}getSheenRoughnessFactor(){return this.get("sheenRoughnessFactor")}setSheenRoughnessFactor(J){return this.set("sheenRoughnessFactor",J)}getSheenRoughnessTexture(){return this.getRef("sheenRoughnessTexture")}getSheenRoughnessTextureInfo(){return this.getRef("sheenRoughnessTexture")?this.getRef("sheenRoughnessTextureInfo"):null}setSheenRoughnessTexture(J){return this.setRef("sheenRoughnessTexture",J,{channels:TH1})}}Jj.EXTENSION_NAME=_P;var LY=_P;class Zj extends R1{constructor(...J){super(...J);this.extensionName=LY,this.prereadTypes=[l.MESH],this.prewriteTypes=[l.MESH]}createSheen(){return new Jj(this.document.getGraph())}read(J){return this}write(J){return this}preread(J){let Z=J.jsonDoc,Y=Z.json.materials||[],$=Z.json.textures||[];return Y.forEach((W,Q)=>{if(W.extensions&&W.extensions[LY]){let X=this.createSheen();J.materials[Q].setExtension(LY,X);let K=W.extensions[LY];if(K.sheenColorFactor!==void 0)X.setSheenColorFactor(K.sheenColorFactor);if(K.sheenRoughnessFactor!==void 0)X.setSheenRoughnessFactor(K.sheenRoughnessFactor);if(K.sheenColorTexture!==void 0){let G=K.sheenColorTexture,z=J.textures[$[G.index].source];X.setSheenColorTexture(z),J.setTextureInfo(X.getSheenColorTextureInfo(),G)}if(K.sheenRoughnessTexture!==void 0){let G=K.sheenRoughnessTexture,z=J.textures[$[G.index].source];X.setSheenRoughnessTexture(z),J.setTextureInfo(X.getSheenRoughnessTextureInfo(),G)}}}),this}prewrite(J){let Z=J.jsonDoc;return this.document.getRoot().listMaterials().forEach((Y)=>{let $=Y.getExtension(LY);if($){let W=J.materialIndexMap.get(Y),Q=Z.json.materials[W];Q.extensions=Q.extensions||{};let X=Q.extensions[LY]={sheenColorFactor:$.getSheenColorFactor(),sheenRoughnessFactor:$.getSheenRoughnessFactor()};if($.getSheenColorTexture()){let K=$.getSheenColorTexture(),G=$.getSheenColorTextureInfo();X.sheenColorTexture=J.createTextureInfoDef(K,G)}if($.getSheenRoughnessTexture()){let K=$.getSheenRoughnessTexture(),G=$.getSheenRoughnessTextureInfo();X.sheenRoughnessTexture=J.createTextureInfoDef(K,G)}}}),this}}Zj.EXTENSION_NAME=LY;var{R:kH1,G:EH1,B:IH1,A:vH1}=M5;class Yj extends f1{init(){this.extensionName=xP,this.propertyType="Specular",this.parentTypes=[l.MATERIAL]}getDefaults(){return Object.assign(super.getDefaults(),{specularFactor:1,specularTexture:null,specularTextureInfo:new U1(this.graph,"specularTextureInfo"),specularColorFactor:[1,1,1],specularColorTexture:null,specularColorTextureInfo:new U1(this.graph,"specularColorTextureInfo")})}getSpecularFactor(){return this.get("specularFactor")}setSpecularFactor(J){return this.set("specularFactor",J)}getSpecularColorFactor(){return this.get("specularColorFactor")}setSpecularColorFactor(J){return this.set("specularColorFactor",J)}getSpecularTexture(){return this.getRef("specularTexture")}getSpecularTextureInfo(){return this.getRef("specularTexture")?this.getRef("specularTextureInfo"):null}setSpecularTexture(J){return this.setRef("specularTexture",J,{channels:vH1})}getSpecularColorTexture(){return this.getRef("specularColorTexture")}getSpecularColorTextureInfo(){return this.getRef("specularColorTexture")?this.getRef("specularColorTextureInfo"):null}setSpecularColorTexture(J){return this.setRef("specularColorTexture",J,{channels:kH1|EH1|IH1,isColor:!0})}}Yj.EXTENSION_NAME=xP;var BY=xP;class qU extends R1{constructor(...J){super(...J);this.extensionName=BY,this.prereadTypes=[l.MESH],this.prewriteTypes=[l.MESH]}createSpecular(){return new Yj(this.document.getGraph())}read(J){return this}write(J){return this}preread(J){let Z=J.jsonDoc,Y=Z.json.materials||[],$=Z.json.textures||[];return Y.forEach((W,Q)=>{if(W.extensions&&W.extensions[BY]){let X=this.createSpecular();J.materials[Q].setExtension(BY,X);let K=W.extensions[BY];if(K.specularFactor!==void 0)X.setSpecularFactor(K.specularFactor);if(K.specularColorFactor!==void 0)X.setSpecularColorFactor(K.specularColorFactor);if(K.specularTexture!==void 0){let G=K.specularTexture,z=J.textures[$[G.index].source];X.setSpecularTexture(z),J.setTextureInfo(X.getSpecularTextureInfo(),G)}if(K.specularColorTexture!==void 0){let G=K.specularColorTexture,z=J.textures[$[G.index].source];X.setSpecularColorTexture(z),J.setTextureInfo(X.getSpecularColorTextureInfo(),G)}}}),this}prewrite(J){let Z=J.jsonDoc;return this.document.getRoot().listMaterials().forEach((Y)=>{let $=Y.getExtension(BY);if($){let W=J.materialIndexMap.get(Y),Q=Z.json.materials[W];Q.extensions=Q.extensions||{};let X=Q.extensions[BY]={};if($.getSpecularFactor()!==1)X.specularFactor=$.getSpecularFactor();if(!o1.eq($.getSpecularColorFactor(),[1,1,1]))X.specularColorFactor=$.getSpecularColorFactor();if($.getSpecularTexture()){let K=$.getSpecularTexture(),G=$.getSpecularTextureInfo();X.specularTexture=J.createTextureInfoDef(K,G)}if($.getSpecularColorTexture()){let K=$.getSpecularColorTexture(),G=$.getSpecularColorTextureInfo();X.specularColorTexture=J.createTextureInfoDef(K,G)}}}),this}}qU.EXTENSION_NAME=BY;var{R:SH1}=M5;class $j extends f1{init(){this.extensionName=AP,this.propertyType="Transmission",this.parentTypes=[l.MATERIAL]}getDefaults(){return Object.assign(super.getDefaults(),{transmissionFactor:0,transmissionTexture:null,transmissionTextureInfo:new U1(this.graph,"transmissionTextureInfo")})}getTransmissionFactor(){return this.get("transmissionFactor")}setTransmissionFactor(J){return this.set("transmissionFactor",J)}getTransmissionTexture(){return this.getRef("transmissionTexture")}getTransmissionTextureInfo(){return this.getRef("transmissionTexture")?this.getRef("transmissionTextureInfo"):null}setTransmissionTexture(J){return this.setRef("transmissionTexture",J,{channels:SH1})}}$j.EXTENSION_NAME=AP;var OY=AP;class Wj extends R1{constructor(...J){super(...J);this.extensionName=OY,this.prereadTypes=[l.MESH],this.prewriteTypes=[l.MESH]}createTransmission(){return new $j(this.document.getGraph())}read(J){return this}write(J){return this}preread(J){let Z=J.jsonDoc,Y=Z.json.materials||[],$=Z.json.textures||[];return Y.forEach((W,Q)=>{if(W.extensions&&W.extensions[OY]){let X=this.createTransmission();J.materials[Q].setExtension(OY,X);let K=W.extensions[OY];if(K.transmissionFactor!==void 0)X.setTransmissionFactor(K.transmissionFactor);if(K.transmissionTexture!==void 0){let G=K.transmissionTexture,z=J.textures[$[G.index].source];X.setTransmissionTexture(z),J.setTextureInfo(X.getTransmissionTextureInfo(),G)}}}),this}prewrite(J){let Z=J.jsonDoc;return this.document.getRoot().listMaterials().forEach((Y)=>{let $=Y.getExtension(OY);if($){let W=J.materialIndexMap.get(Y),Q=Z.json.materials[W];Q.extensions=Q.extensions||{};let X=Q.extensions[OY]={transmissionFactor:$.getTransmissionFactor()};if($.getTransmissionTexture()){let K=$.getTransmissionTexture(),G=$.getTransmissionTextureInfo();X.transmissionTexture=J.createTextureInfoDef(K,G)}}}),this}}Wj.EXTENSION_NAME=OY;class Qj extends f1{init(){this.extensionName=hP,this.propertyType="Unlit",this.parentTypes=[l.MATERIAL]}}Qj.EXTENSION_NAME=hP;var pW=hP;class UU extends R1{constructor(...J){super(...J);this.extensionName=pW,this.prereadTypes=[l.MESH],this.prewriteTypes=[l.MESH]}createUnlit(){return new Qj(this.document.getGraph())}read(J){return this}write(J){return this}preread(J){return(J.jsonDoc.json.materials||[]).forEach((Y,$)=>{if(Y.extensions&&Y.extensions[pW])J.materials[$].setExtension(pW,this.createUnlit())}),this}prewrite(J){let Z=J.jsonDoc;return this.document.getRoot().listMaterials().forEach((Y)=>{if(Y.getExtension(pW)){let $=J.materialIndexMap.get(Y),W=Z.json.materials[$];W.extensions=W.extensions||{},W.extensions[pW]={}}}),this}}UU.EXTENSION_NAME=pW;class Xj extends f1{init(){this.extensionName=NY,this.propertyType="Mapping",this.parentTypes=["MappingList"]}getDefaults(){return Object.assign(super.getDefaults(),{material:null,variants:new w0})}getMaterial(){return this.getRef("material")}setMaterial(J){return this.setRef("material",J)}addVariant(J){return this.addRef("variants",J)}removeVariant(J){return this.removeRef("variants",J)}listVariants(){return this.listRefs("variants")}}Xj.EXTENSION_NAME=NY;class Kj extends f1{init(){this.extensionName=NY,this.propertyType="MappingList",this.parentTypes=[l.PRIMITIVE]}getDefaults(){return Object.assign(super.getDefaults(),{mappings:new w0})}addMapping(J){return this.addRef("mappings",J)}removeMapping(J){return this.removeRef("mappings",J)}listMappings(){return this.listRefs("mappings")}}Kj.EXTENSION_NAME=NY;class KU extends f1{init(){this.extensionName=NY,this.propertyType="Variant",this.parentTypes=["MappingList"]}}KU.EXTENSION_NAME=NY;var B4=NY;class Gj extends R1{constructor(...J){super(...J);this.extensionName=B4}createMappingList(){return new Kj(this.document.getGraph())}createVariant(J=""){return new KU(this.document.getGraph(),J)}createMapping(){return new Xj(this.document.getGraph())}listVariants(){return Array.from(this.properties).filter((J)=>J instanceof KU)}read(J){let Z=J.jsonDoc;if(!Z.json.extensions||!Z.json.extensions[B4])return this;let W=(Z.json.extensions[B4].variants||[]).map((X)=>this.createVariant().setName(X.name||""));return(Z.json.meshes||[]).forEach((X,K)=>{let G=J.meshes[K];(X.primitives||[]).forEach((F,V)=>{if(!F.extensions||!F.extensions[B4])return;let H=this.createMappingList(),q=F.extensions[B4];for(let U of q.mappings){let L=this.createMapping();if(U.material!==void 0)L.setMaterial(J.materials[U.material]);for(let w of U.variants||[])L.addVariant(W[w]);H.addMapping(L)}G.listPrimitives()[V].setExtension(B4,H)})}),this}write(J){let Z=J.jsonDoc,Y=this.listVariants();if(!Y.length)return this;let $=[],W=new Map;for(let Q of Y)W.set(Q,$.length),$.push(J.createPropertyDef(Q));for(let Q of this.document.getRoot().listMeshes()){let X=J.meshIndexMap.get(Q);Q.listPrimitives().forEach((K,G)=>{let z=K.getExtension(B4);if(!z)return;let F=J.jsonDoc.json.meshes[X].primitives[G],V=z.listMappings().map((H)=>{let q=J.createPropertyDef(H),U=H.getMaterial();if(U)q.material=J.materialIndexMap.get(U);return q.variants=H.listVariants().map((L)=>W.get(L)),q});F.extensions=F.extensions||{},F.extensions[B4]={mappings:V}})}return Z.json.extensions=Z.json.extensions||{},Z.json.extensions[B4]={variants:$},this}}Gj.EXTENSION_NAME=B4;var{G:_H1}=M5;class zj extends f1{init(){this.extensionName=fP,this.propertyType="Volume",this.parentTypes=[l.MATERIAL]}getDefaults(){return Object.assign(super.getDefaults(),{thicknessFactor:0,thicknessTexture:null,thicknessTextureInfo:new U1(this.graph,"thicknessTexture"),attenuationDistance:1/0,attenuationColor:[1,1,1]})}getThicknessFactor(){return this.get("thicknessFactor")}setThicknessFactor(J){return this.set("thicknessFactor",J)}getThicknessTexture(){return this.getRef("thicknessTexture")}getThicknessTextureInfo(){return this.getRef("thicknessTexture")?this.getRef("thicknessTextureInfo"):null}setThicknessTexture(J){return this.setRef("thicknessTexture",J,{channels:_H1})}getAttenuationDistance(){return this.get("attenuationDistance")}setAttenuationDistance(J){return this.set("attenuationDistance",J)}getAttenuationColor(){return this.get("attenuationColor")}setAttenuationColor(J){return this.set("attenuationColor",J)}}zj.EXTENSION_NAME=fP;var MY=fP;class Fj extends R1{constructor(...J){super(...J);this.extensionName=MY,this.prereadTypes=[l.MESH],this.prewriteTypes=[l.MESH]}createVolume(){return new zj(this.document.getGraph())}read(J){return this}write(J){return this}preread(J){let Z=J.jsonDoc,Y=Z.json.materials||[],$=Z.json.textures||[];return Y.forEach((W,Q)=>{if(W.extensions&&W.extensions[MY]){let X=this.createVolume();J.materials[Q].setExtension(MY,X);let K=W.extensions[MY];if(K.thicknessFactor!==void 0)X.setThicknessFactor(K.thicknessFactor);if(K.attenuationDistance!==void 0)X.setAttenuationDistance(K.attenuationDistance);if(K.attenuationColor!==void 0)X.setAttenuationColor(K.attenuationColor);if(K.thicknessTexture!==void 0){let G=K.thicknessTexture,z=J.textures[$[G.index].source];X.setThicknessTexture(z),J.setTextureInfo(X.getThicknessTextureInfo(),G)}}}),this}prewrite(J){let Z=J.jsonDoc;return this.document.getRoot().listMaterials().forEach((Y)=>{let $=Y.getExtension(MY);if($){let W=J.materialIndexMap.get(Y),Q=Z.json.materials[W];Q.extensions=Q.extensions||{};let X=Q.extensions[MY]={};if($.getThicknessFactor()>0)X.thicknessFactor=$.getThicknessFactor();if(Number.isFinite($.getAttenuationDistance()))X.attenuationDistance=$.getAttenuationDistance();if(!o1.eq($.getAttenuationColor(),[1,1,1]))X.attenuationColor=$.getAttenuationColor();if($.getThicknessTexture()){let K=$.getThicknessTexture(),G=$.getThicknessTextureInfo();X.thicknessTexture=J.createTextureInfoDef(K,G)}}}),this}}Fj.EXTENSION_NAME=MY;var fl=nV1;class OG extends R1{constructor(...J){super(...J);this.extensionName=fl}read(J){return this}write(J){return this}}OG.EXTENSION_NAME=fl;var qG=aV1;class yl{match(J){return J[0]===171&&J[1]===75&&J[2]===84&&J[3]===88&&J[4]===32&&J[5]===50&&J[6]===48&&J[7]===187&&J[8]===13&&J[9]===10&&J[10]===26&&J[11]===10}getSize(J){let Z=WU(J);return[Z.pixelWidth,Z.pixelHeight]}getChannels(J){let Y=WU(J).dataFormatDescriptor[0];if(Y.colorModel===Ul)return Y.samples.length===2&&(Y.samples[1].channelType&15)===15?4:3;else if(Y.colorModel===wl)return(Y.samples[0].channelType&15)===3?4:3;throw new Error(`Unexpected KTX2 colorModel, "${Y.colorModel}".`)}getVRAMByteLength(J){let Z=WU(J),Y=this.getChannels(J)>3,$=0;for(let W=0;W<Z.levels.length;W++){let Q=Z.levels[W];if(Q.uncompressedByteLength)$+=Q.uncompressedByteLength;else{let X=Math.max(1,Math.floor(Z.pixelWidth/Math.pow(2,W))),K=Math.max(1,Math.floor(Z.pixelHeight/Math.pow(2,W))),G=Y?16:8;$+=X/4*(K/4)*G}}return $}}class Vj extends R1{constructor(...J){super(...J);this.extensionName=qG,this.prereadTypes=[l.TEXTURE]}static register(){v9.registerFormat("image/ktx2",new yl)}preread(J){return J.jsonDoc.json.textures.forEach((Z)=>{if(Z.extensions&&Z.extensions[qG]){let Y=Z.extensions[qG];Z.source=Y.source}}),this}read(J){return this}write(J){let Z=J.jsonDoc;return this.document.getRoot().listTextures().forEach((Y)=>{if(Y.getMimeType()==="image/ktx2"){let $=J.imageIndexMap.get(Y);Z.json.textures.forEach((W)=>{if(W.source===$)W.extensions=W.extensions||{},W.extensions[qG]={source:W.source},delete W.source})}}),this}}Vj.EXTENSION_NAME=qG;class Hj extends f1{init(){this.extensionName=yP,this.propertyType="Transform",this.parentTypes=[l.TEXTURE_INFO]}getDefaults(){return Object.assign(super.getDefaults(),{offset:[0,0],rotation:0,scale:[1,1],texCoord:null})}getOffset(){return this.get("offset")}setOffset(J){return this.set("offset",J)}getRotation(){return this.get("rotation")}setRotation(J){return this.set("rotation",J)}getScale(){return this.get("scale")}setScale(J){return this.set("scale",J)}getTexCoord(){return this.get("texCoord")}setTexCoord(J){return this.set("texCoord",J)}}Hj.EXTENSION_NAME=yP;var RY=yP;class qj extends R1{constructor(...J){super(...J);this.extensionName=RY}createTransform(){return new Hj(this.document.getGraph())}read(J){for(let[Z,Y]of Array.from(J.textureInfos.entries())){if(!Y.extensions||!Y.extensions[RY])continue;let $=this.createTransform(),W=Y.extensions[RY];if(W.offset!==void 0)$.setOffset(W.offset);if(W.rotation!==void 0)$.setRotation(W.rotation);if(W.scale!==void 0)$.setScale(W.scale);if(W.texCoord!==void 0)$.setTexCoord(W.texCoord);Z.setExtension(RY,$)}return this}write(J){let Z=Array.from(J.textureInfoDefMap.entries());for(let[Y,$]of Z){let W=Y.getExtension(RY);if(!W)continue;$.extensions=$.extensions||{};let Q={},X=o1.eq;if(!X(W.getOffset(),[0,0]))Q.offset=W.getOffset();if(W.getRotation()!==0)Q.rotation=W.getRotation();if(!X(W.getScale(),[1,1]))Q.scale=W.getScale();if(W.getTexCoord()!=null)Q.texCoord=W.getTexCoord();$.extensions[RY]=Q}return this}}qj.EXTENSION_NAME=RY;var xH1=[l.ROOT,l.SCENE,l.NODE,l.MESH,l.MATERIAL,l.TEXTURE,l.ANIMATION];class Uj extends f1{init(){this.extensionName=QU,this.propertyType="Packet",this.parentTypes=xH1}getDefaults(){return Object.assign(super.getDefaults(),{context:{},properties:{}})}getContext(){return this.get("context")}setContext(J){return this.set("context",B7({},J))}listProperties(){return Object.keys(this.get("properties"))}getProperty(J){let Z=this.get("properties");return J in Z?Z[J]:null}setProperty(J,Z){this._assertContext(J);let Y=B7({},this.get("properties"));if(Z)Y[J]=Z;else delete Y[J];return this.set("properties",Y)}toJSONLD(){let J=OP(this.get("context")),Z=OP(this.get("properties"));return B7({"@context":J},Z)}fromJSONLD(J){J=OP(J);let Z=J["@context"];if(Z)this.set("context",Z);return delete J["@context"],this.set("properties",J)}_assertContext(J){if(!(J.split(":")[0]in this.get("context")))throw new Error(`${QU}: Missing context for term, "${J}".`)}}Uj.EXTENSION_NAME=QU;function OP(J){return JSON.parse(JSON.stringify(J))}var L7=QU;class wj extends R1{constructor(...J){super(...J);this.extensionName=L7}createPacket(){return new Uj(this.document.getGraph())}listPackets(){return Array.from(this.properties)}read(J){var Z;let Y=(Z=J.jsonDoc.json.extensions)==null?void 0:Z[L7];if(!Y||!Y.packets)return this;let $=J.jsonDoc.json,W=this.document.getRoot(),Q=Y.packets.map((G)=>this.createPacket().fromJSONLD(G)),X=[[$.asset],$.scenes,$.nodes,$.meshes,$.materials,$.images,$.animations],K=[[W],W.listScenes(),W.listNodes(),W.listMeshes(),W.listMaterials(),W.listTextures(),W.listAnimations()];for(let G=0;G<X.length;G++){let z=X[G]||[];for(let F=0;F<z.length;F++){let V=z[F];if(V.extensions&&V.extensions[L7]){let H=V.extensions[L7];K[G][F].setExtension(L7,Q[H.packet])}}}return this}write(J){let{json:Z}=J.jsonDoc,Y=[];for(let $ of this.properties){Y.push($.toJSONLD());for(let W of $.listParents()){let Q;switch(W.propertyType){case l.ROOT:Q=Z.asset;break;case l.SCENE:Q=Z.scenes[J.sceneIndexMap.get(W)];break;case l.NODE:Q=Z.nodes[J.nodeIndexMap.get(W)];break;case l.MESH:Q=Z.meshes[J.meshIndexMap.get(W)];break;case l.MATERIAL:Q=Z.materials[J.materialIndexMap.get(W)];break;case l.TEXTURE:Q=Z.images[J.imageIndexMap.get(W)];break;case l.ANIMATION:Q=Z.animations[J.animationIndexMap.get(W)];break;default:Q=null,this.document.getLogger().warn(`[${L7}]: Unsupported parent property, "${W.propertyType}"`);break}if(!Q)continue;Q.extensions=Q.extensions||{},Q.extensions[L7]={packet:Y.length-1}}}if(Y.length>0)Z.extensions=Z.extensions||{},Z.extensions[L7]={packets:Y};return this}}wj.EXTENSION_NAME=L7;var AH1=[BG,gP,uP,cP,pP,nP,sP,VU,tP,HU,qU,Zj,Wj,UU,Gj,Fj,OG,Vj,qj,wj],aQ6=[GU,LG,zU,FU,...AH1];var hH1=i(SN(),1);function oW(){return oW=Object.assign?Object.assign.bind():function(J){for(var Z=1;Z<arguments.length;Z++){var Y=arguments[Z];for(var $ in Y)({}).hasOwnProperty.call(Y,$)&&(J[$]=Y[$])}return J},oW.apply(null,arguments)}var{POINTS:bl,LINES:wU,LINE_STRIP:fH1,LINE_LOOP:yH1,TRIANGLES:LU,TRIANGLE_STRIP:bH1,TRIANGLE_FAN:gH1}=G8.Mode;function jJ(J,Z){return Object.defineProperty(Z,"name",{value:J}),Z}function O4(J,Z){let Y=oW({},J);for(let $ in Z)if(Z[$]!==void 0)Y[$]=Z[$];return Y}function Wp(J){let Z=J.getIndices(),Y=J.getAttribute("POSITION");switch(J.getMode()){case G8.Mode.POINTS:return Z?Z.getCount():Y.getCount();case G8.Mode.LINES:return Z?Z.getCount()/2:Y.getCount()/2;case G8.Mode.LINE_LOOP:return Z?Z.getCount():Y.getCount();case G8.Mode.LINE_STRIP:return Z?Z.getCount()-1:Y.getCount()-1;case G8.Mode.TRIANGLES:return Z?Z.getCount()/3:Y.getCount()/3;case G8.Mode.TRIANGLE_STRIP:case G8.Mode.TRIANGLE_FAN:return Z?Z.getCount()-2:Y.getCount()-2;default:throw new Error("Unexpected mode: "+J.getMode())}}var mH1=new Intl.NumberFormat(void 0,{maximumFractionDigits:0});function Mj(J){return mH1.format(J)}function uH1(J,Z,Y=2){let $=J>Z?"\u2013":"+",W="%";return $+(Math.abs(J-Z)/J*100).toFixed(Y)+"%"}function NU(J,Z){return`${Mj(J)} \u2192 ${Mj(Z)} (${uH1(J,Z)})`}function Tj(J){let Z=[];for(let Y of J.listAttributes())Z.push(Y);for(let Y of J.listTargets())for(let $ of Y.listAttributes())Z.push($);return Array.from(new Set(Z))}function dH1(J,Z,Y){J.swap(Z,Y);for(let $ of J.listTargets())$.swap(Z,Y)}function cH1(J,Z){if(J==null&&Z==null)return!0;if(J==null||Z==null)return!1;if(J.length!==Z.length)return!1;for(let Y=0;Y<J.length;Y++)if(J[Y]!==Z[Y])return!1;return!0}function O7(J,Z){return J.createAccessor(Z.getName()).setArray(Z.getArray()).setType(Z.getType()).setBuffer(Z.getBuffer()).setNormalized(Z.getNormalized()).setSparse(Z.getSparse())}function lH1(J,Z=J){let Y=kj(J,Z);for(let $=0;$<Y.length;$++)Y[$]=$;return Y}function kj(J,Z=J){return Z<=65534?new Uint16Array(J):new Uint32Array(J)}function pH1(J){return J.listParents().some((Z)=>Z.propertyType!==c.ROOT)}function Qp(J){for(let Z in J)return!1;return!0}function Xp(J){let Z=Y6.fromGraph(J.getGraph()),Y=J.getMaterial(),$=Z.getRoot().listMaterials().indexOf(Y),W=nH1[J.getMode()],Q=!!J.getIndices(),X=J.listSemantics().sort().map((G)=>{let z=J.getAttribute(G),F=z.getElementSize(),V=z.getComponentType();return`${G}:${F}:${V}`}).join("+"),K=J.listTargets().map((G)=>{return G.listSemantics().sort().map((z)=>{let F=J.getAttribute(z),V=F.getElementSize(),H=F.getComponentType();return`${z}:${V}:${H}`}).join("+")}).join("~");return`${$}|${W}|${Q}|${X}|${K}`}function iH1(J){return Math.pow(2,Math.ceil(Math.log(J)/Math.LN2))}var nH1={[bl]:bl,[wU]:wU,[fH1]:wU,[yH1]:wU,[LU]:LU,[bH1]:LU,[gH1]:LU},aW="center",gl={pivot:"center"};function Kp(J=gl){let Z=O4(gl,J);return jJ(aW,(Y)=>{let $=Y.getLogger(),W=Y.getRoot(),Q=W.listAnimations().length>0||W.listSkins().length>0;Y.getRoot().listScenes().forEach((X,K)=>{$.debug(`${aW}: Scene ${K+1} / ${W.listScenes().length}.`);let G;if(typeof Z.pivot==="string"){let F=DN(X);if(G=[(F.max[0]-F.min[0])/2+F.min[0],(F.max[1]-F.min[1])/2+F.min[1],(F.max[2]-F.min[2])/2+F.min[2]],Z.pivot==="above")G[1]=F.max[1];if(Z.pivot==="below")G[1]=F.min[1]}else G=Z.pivot;$.debug(`${aW}: Pivot "${G.join(", ")}".`);let z=[-1*G[0],-1*G[1],-1*G[2]];if(Q){$.debug(`${aW}: Model contains animation or skin. Adding a wrapper node.`);let F=Y.createNode("Pivot").setTranslation(z);X.listChildren().forEach((V)=>F.addChild(V)),X.addChild(F)}else $.debug(`${aW}: Skipping wrapper, offsetting all root nodes.`),X.listChildren().forEach((F)=>{let V=F.getTranslation();F.setTranslation([V[0]+z[0],V[1]+z[1],V[2]+z[2]])})}),$.debug(`${aW}: Complete.`)})}function aH1(J){let Z=new Set,Y=J,$;while($=Y.getParentNode()){if(Z.has($))throw new Error("Circular dependency in scene graph.");Z.add($),Y=$}return Y.listParents().filter((W)=>W instanceof xW)}function sH1(J){let Z=aH1(J),Y=J.getParentNode();if(!Y)return J;J.setMatrix(J.getWorldMatrix()),Y.removeChild(J);for(let $ of Z)$.addChild(J);return J}var rW=typeof Float32Array!=="undefined"?Float32Array:Array;if(!Math.hypot)Math.hypot=function(){var J=0,Z=arguments.length;while(Z--)J+=arguments[Z]*arguments[Z];return Math.sqrt(J)};function oH1(J,Z){var Y=Z[0],$=Z[1],W=Z[2],Q=Z[3],X=Z[4],K=Z[5],G=Z[6],z=Z[7],F=Z[8],V=Z[9],H=Z[10],q=Z[11],U=Z[12],L=Z[13],w=Z[14],O=Z[15],R=Y*K-$*X,N=Y*G-W*X,P=Y*z-Q*X,D=$*G-W*K,j=$*z-Q*K,C=W*z-Q*G,k=F*L-V*U,I=F*w-H*U,A=F*O-q*U,v=V*w-H*L,x=V*O-q*L,u=H*O-q*w,h=R*u-N*x+P*v+D*A-j*I+C*k;if(!h)return null;return h=1/h,J[0]=(K*u-G*x+z*v)*h,J[1]=(W*x-$*u-Q*v)*h,J[2]=(L*C-w*j+O*D)*h,J[3]=(H*j-V*C-q*D)*h,J[4]=(G*A-X*u-z*I)*h,J[5]=(Y*u-W*A+Q*I)*h,J[6]=(w*P-U*C-O*N)*h,J[7]=(F*C-H*P+q*N)*h,J[8]=(X*x-K*A+z*k)*h,J[9]=($*A-Y*x-Q*k)*h,J[10]=(U*j-L*P+O*R)*h,J[11]=(V*P-F*j-q*R)*h,J[12]=(K*I-X*v-G*k)*h,J[13]=(Y*v-$*I+W*k)*h,J[14]=(L*N-U*D-w*R)*h,J[15]=(F*D-V*N+H*R)*h,J}function rH1(J){var Z=J[0],Y=J[1],$=J[2],W=J[3],Q=J[4],X=J[5],K=J[6],G=J[7],z=J[8],F=J[9],V=J[10],H=J[11],q=J[12],U=J[13],L=J[14],w=J[15],O=Z*X-Y*Q,R=Z*K-$*Q,N=Z*G-W*Q,P=Y*K-$*X,D=Y*G-W*X,j=$*G-W*K,C=z*U-F*q,k=z*L-V*q,I=z*w-H*q,A=F*L-V*U,v=F*w-H*U,x=V*w-H*L;return O*x-R*v+N*A+P*I-D*k+j*C}function Gp(J,Z,Y){var $=Z[0],W=Z[1],Q=Z[2],X=Z[3],K=Z[4],G=Z[5],z=Z[6],F=Z[7],V=Z[8],H=Z[9],q=Z[10],U=Z[11],L=Z[12],w=Z[13],O=Z[14],R=Z[15],N=Y[0],P=Y[1],D=Y[2],j=Y[3];return J[0]=N*$+P*K+D*V+j*L,J[1]=N*W+P*G+D*H+j*w,J[2]=N*Q+P*z+D*q+j*O,J[3]=N*X+P*F+D*U+j*R,N=Y[4],P=Y[5],D=Y[6],j=Y[7],J[4]=N*$+P*K+D*V+j*L,J[5]=N*W+P*G+D*H+j*w,J[6]=N*Q+P*z+D*q+j*O,J[7]=N*X+P*F+D*U+j*R,N=Y[8],P=Y[9],D=Y[10],j=Y[11],J[8]=N*$+P*K+D*V+j*L,J[9]=N*W+P*G+D*H+j*w,J[10]=N*Q+P*z+D*q+j*O,J[11]=N*X+P*F+D*U+j*R,N=Y[12],P=Y[13],D=Y[14],j=Y[15],J[12]=N*$+P*K+D*V+j*L,J[13]=N*W+P*G+D*H+j*w,J[14]=N*Q+P*z+D*q+j*O,J[15]=N*X+P*F+D*U+j*R,J}function tH1(){var J=new rW(9);if(rW!=Float32Array)J[1]=0,J[2]=0,J[3]=0,J[5]=0,J[6]=0,J[7]=0;return J[0]=1,J[4]=1,J[8]=1,J}function eH1(J,Z){return J[0]=Z[0],J[1]=Z[1],J[2]=Z[2],J[3]=Z[4],J[4]=Z[5],J[5]=Z[6],J[6]=Z[8],J[7]=Z[9],J[8]=Z[10],J}function Jq1(J,Z){if(J===Z){var Y=Z[1],$=Z[2],W=Z[5];J[1]=Z[3],J[2]=Z[6],J[3]=Y,J[5]=Z[7],J[6]=$,J[7]=W}else J[0]=Z[0],J[1]=Z[3],J[2]=Z[6],J[3]=Z[1],J[4]=Z[4],J[5]=Z[7],J[6]=Z[2],J[7]=Z[5],J[8]=Z[8];return J}function Zq1(J,Z){var Y=Z[0],$=Z[1],W=Z[2],Q=Z[3],X=Z[4],K=Z[5],G=Z[6],z=Z[7],F=Z[8],V=F*X-K*z,H=-F*Q+K*G,q=z*Q-X*G,U=Y*V+$*H+W*q;if(!U)return null;return U=1/U,J[0]=V*U,J[1]=(-F*$+W*z)*U,J[2]=(K*$-W*X)*U,J[3]=H*U,J[4]=(F*Y-W*G)*U,J[5]=(-K*Y+W*Q)*U,J[6]=q*U,J[7]=(-z*Y+$*G)*U,J[8]=(X*Y-$*Q)*U,J}function PU(){var J=new rW(3);if(rW!=Float32Array)J[0]=0,J[1]=0,J[2]=0;return J}function Yq1(J,Z,Y){return J[0]=Z[0]*Y[0],J[1]=Z[1]*Y[1],J[2]=Z[2]*Y[2],J}function zp(J,Z){var Y=Z[0],$=Z[1],W=Z[2],Q=Y*Y+$*$+W*W;if(Q>0)Q=1/Math.sqrt(Q);return J[0]=Z[0]*Q,J[1]=Z[1]*Q,J[2]=Z[2]*Q,J}function $q1(J,Z,Y){var $=Z[0],W=Z[1],Q=Z[2],X=Y[3]*$+Y[7]*W+Y[11]*Q+Y[15];return X=X||1,J[0]=(Y[0]*$+Y[4]*W+Y[8]*Q+Y[12])/X,J[1]=(Y[1]*$+Y[5]*W+Y[9]*Q+Y[13])/X,J[2]=(Y[2]*$+Y[6]*W+Y[10]*Q+Y[14])/X,J}function Wq1(J,Z,Y){var $=Z[0],W=Z[1],Q=Z[2];return J[0]=$*Y[0]+W*Y[3]+Q*Y[6],J[1]=$*Y[1]+W*Y[4]+Q*Y[7],J[2]=$*Y[2]+W*Y[5]+Q*Y[8],J}var Qq1=Yq1;(function(){var J=PU();return function(Z,Y,$,W,Q,X){var K,G;if(!Y)Y=3;if(!$)$=0;if(W)G=Math.min(W*Y+$,Z.length);else G=Z.length;for(K=$;K<G;K+=Y)J[0]=Z[K],J[1]=Z[K+1],J[2]=Z[K+2],Q(J,J,X),Z[K]=J[0],Z[K+1]=J[1],Z[K+2]=J[2];return Z}})();var NJ="dedup",Lj={keepUniqueNames:!1,propertyTypes:[c.ACCESSOR,c.MESH,c.TEXTURE,c.MATERIAL,c.SKIN]};function Fp(J=Lj){let Z=O4(Lj,J),Y=new Set(Z.propertyTypes);for(let $ of Z.propertyTypes)if(!Lj.propertyTypes.includes($))throw new Error(`${NJ}: Unsupported deduplication on type "${$}".`);return jJ(NJ,($)=>{let W=$.getLogger();if(Y.has(c.ACCESSOR))Xq1($);if(Y.has(c.TEXTURE))Gq1($,Z);if(Y.has(c.MATERIAL))zq1($,Z);if(Y.has(c.MESH))Kq1($,Z);if(Y.has(c.SKIN))Fq1($,Z);W.debug(`${NJ}: Complete.`)})}function Xq1(J){let Z=J.getLogger(),Y=new Map,$=new Map,W=new Map,Q=new Map,X=J.getRoot().listMeshes();X.forEach((V)=>{V.listPrimitives().forEach((H)=>{H.listAttributes().forEach((q)=>K(q,$)),K(H.getIndices(),Y)})});for(let V of J.getRoot().listAnimations())for(let H of V.listSamplers())K(H.getInput(),W),K(H.getOutput(),Q);function K(V,H){if(!V)return;let q=[V.getCount(),V.getType(),V.getComponentType(),V.getNormalized(),V.getSparse()].join(":"),U=H.get(q);if(!U)H.set(q,U=new Set);U.add(V)}function G(V,H){for(let q=0;q<V.length;q++){let U=V[q],L=m0.toView(U.getArray());if(H.has(U))continue;for(let w=q+1;w<V.length;w++){let O=V[w];if(H.has(O))continue;if(m0.equals(L,m0.toView(O.getArray())))H.set(O,U)}}}let z=0,F=new Map;for(let V of[$,Y,W,Q])for(let H of V.values())z+=H.size,G(Array.from(H),F);Z.debug(`${NJ}: Merged ${F.size} of ${z} accessors.`),X.forEach((V)=>{V.listPrimitives().forEach((H)=>{H.listAttributes().forEach((U)=>{if(F.has(U))H.swap(U,F.get(U))});let q=H.getIndices();if(q&&F.has(q))H.swap(q,F.get(q))})});for(let V of J.getRoot().listAnimations())for(let H of V.listSamplers()){let q=H.getInput(),U=H.getOutput();if(q&&F.has(q))H.swap(q,F.get(q));if(U&&F.has(U))H.swap(U,F.get(U))}Array.from(F.keys()).forEach((V)=>V.dispose())}function Kq1(J,Z){let Y=J.getLogger(),$=J.getRoot(),W=new Map;$.listAccessors().forEach((K,G)=>W.set(K,G)),$.listMaterials().forEach((K,G)=>W.set(K,G));let Q=$.listMeshes().length,X=new Map;for(let K of $.listMeshes()){let G=[];for(let F of K.listPrimitives())G.push(Vp(F,W));let z="";if(Z.keepUniqueNames)z+=K.getName()+";";if(z+=G.join(";"),X.has(z)){let F=X.get(z);K.listParents().forEach((V)=>{if(V.propertyType!==c.ROOT)V.swap(K,F)}),K.dispose()}else X.set(z,K)}Y.debug(`${NJ}: Merged ${Q-X.size} of ${Q} meshes.`)}function Gq1(J,Z){let Y=J.getLogger(),$=J.getRoot(),W=$.listTextures(),Q=new Map;for(let X=0;X<W.length;X++){let K=W[X],G=K.getImage();if(Q.has(K))continue;for(let z=X+1;z<W.length;z++){let F=W[z],V=F.getImage();if(Q.has(F))continue;if(K.getMimeType()!==F.getMimeType())continue;if(Z.keepUniqueNames&&K.getName()!==F.getName())continue;let H=K.getSize(),q=F.getSize();if(!H||!q)continue;if(H[0]!==q[0])continue;if(H[1]!==q[1])continue;if(!G||!V)continue;if(m0.equals(G,V))Q.set(F,K)}}Y.debug(`${NJ}: Merged ${Q.size} of ${$.listTextures().length} textures.`),Array.from(Q.entries()).forEach(([X,K])=>{X.listParents().forEach((G)=>{if(!(G instanceof YY))G.swap(X,K)}),X.dispose()})}function zq1(J,Z){let Y=J.getLogger(),W=J.getRoot().listMaterials(),Q=new Map,X=new Map,K=new Set;if(!Z.keepUniqueNames)K.add("name");for(let G=0;G<W.length;G++){let z=W[G];if(Q.has(z))continue;if(ml(z,X))continue;for(let F=G+1;F<W.length;F++){let V=W[F];if(Q.has(V))continue;if(ml(V,X))continue;if(z.equals(V,K))Q.set(V,z)}}Y.debug(`${NJ}: Merged ${Q.size} of ${W.length} materials.`),Array.from(Q.entries()).forEach(([G,z])=>{G.listParents().forEach((F)=>{if(!(F instanceof YY))F.swap(G,z)}),G.dispose()})}function Fq1(J,Z){let Y=J.getLogger(),W=J.getRoot().listSkins(),Q=new Map,X=new Set(["joints"]);if(!Z.keepUniqueNames)X.add("name");for(let K=0;K<W.length;K++){let G=W[K];if(Q.has(G))continue;for(let z=K+1;z<W.length;z++){let F=W[z];if(Q.has(F))continue;if(G.equals(F,X)&&cH1(G.listJoints(),F.listJoints()))Q.set(F,G)}}Y.debug(`${NJ}: Merged ${Q.size} of ${W.length} skins.`),Array.from(Q.entries()).forEach(([K,G])=>{K.listParents().forEach((z)=>{if(!(z instanceof YY))z.swap(K,G)}),K.dispose()})}function Vp(J,Z){let Y=[];for(let $ of J.listSemantics()){let W=J.getAttribute($);Y.push($+":"+Z.get(W))}if(J instanceof G8){let $=J.getIndices();if($)Y.push("indices:"+Z.get($));let W=J.getMaterial();if(W)Y.push("material:"+Z.get(W));Y.push("mode:"+J.getMode());for(let Q of J.listTargets())Y.push("target:"+Vp(Q,Z))}return Y.join(",")}function ml(J,Z){if(Z.has(J))return Z.get(J);let Y=J.getGraph(),$=new Set,W=Y.listParentEdges(J);while(W.length>0){let Q=W.pop();if(Q.getAttributes().modifyChild===!0)return Z.set(J,!0),!0;let X=Q.getChild();if($.has(X))continue;for(let K of Y.listChildEdges(X))W.push(K)}return Z.set(J,!1),!1}function Hp(){var J=new rW(4);if(rW!=Float32Array)J[0]=0,J[1]=0,J[2]=0,J[3]=0;return J}function Vq1(J,Z,Y){return J[0]=Z[0]+Y[0],J[1]=Z[1]+Y[1],J[2]=Z[2]+Y[2],J[3]=Z[3]+Y[3],J}function Hq1(J,Z,Y){return J[0]=Z[0]-Y[0],J[1]=Z[1]-Y[1],J[2]=Z[2]-Y[2],J[3]=Z[3]-Y[3],J}function qq1(J,Z,Y){return J[0]=Z[0]*Y[0],J[1]=Z[1]*Y[1],J[2]=Z[2]*Y[2],J[3]=Z[3]*Y[3],J}function Uq1(J,Z,Y){return J[0]=Z[0]*Y,J[1]=Z[1]*Y,J[2]=Z[2]*Y,J[3]=Z[3]*Y,J}function wq1(J){var Z=J[0],Y=J[1],$=J[2],W=J[3];return Math.hypot(Z,Y,$,W)}var qp=Hq1,Lq1=qq1,Up=wq1;(function(){var J=Hp();return function(Z,Y,$,W,Q,X){var K,G;if(!Y)Y=4;if(!$)$=0;if(W)G=Math.min(W*Y+$,Z.length);else G=Z.length;for(K=$;K<G;K+=Y)J[0]=Z[K],J[1]=Z[K+1],J[2]=Z[K+2],J[3]=Z[K+3],Q(J,J,X),Z[K]=J[0],Z[K+1]=J[1],Z[K+2]=J[2],Z[K+3]=J[3];return Z}})();var Bq1=/color|emissive|diffuse/i;function Oq1(J){return J.getGraph().listParentEdges(J).some((W)=>{return W.getAttributes().isColor||Bq1.test(W.getName())})?"srgb":null}function Mq1(J){let Z=J.getGraph(),Y=new Set,$=new Set;function W(Q){let X=new Set;for(let K of Z.listChildEdges(Q))if(K.getChild()instanceof ZY)X.add(K.getName()+"Info");for(let K of Z.listChildEdges(Q)){let G=K.getChild();if(Y.has(G))continue;if(Y.add(G),G instanceof i6&&X.has(K.getName()))$.add(G);else if(G instanceof _W)W(G)}}return W(J),Array.from($)}function Rq1(J){let Y=Y6.fromGraph(J.getGraph()).getRoot(),$=J.getGraph().listParentEdges(J).filter((W)=>W.getParent()!==Y).map((W)=>W.getName());return Array.from(new Set($))}var sW="prune",Rj=0.011764705882352941,ul={propertyTypes:[c.NODE,c.SKIN,c.MESH,c.CAMERA,c.PRIMITIVE,c.PRIMITIVE_TARGET,c.ANIMATION,c.MATERIAL,c.TEXTURE,c.ACCESSOR,c.BUFFER],keepLeaves:!1,keepAttributes:!1,keepIndices:!1,keepSolidTextures:!1,keepExtras:!1};function jU(J=ul){let Z=O4(ul,J),Y=new Set(Z.propertyTypes),$=Z.keepExtras;return jJ(sW,async(W)=>{let Q=W.getLogger(),X=W.getRoot(),K=W.getGraph(),G=new wp,z=(F)=>G.dispose(F.target);if(K.addEventListener("node:dispose",z),Y.has(c.MESH))for(let F of X.listMeshes()){if(F.listPrimitives().length>0)continue;F.dispose()}if(Y.has(c.NODE)){if(!Z.keepLeaves)for(let F of X.listScenes())Lp(K,F,$);for(let F of X.listNodes())m5(F,$)}if(Y.has(c.SKIN))for(let F of X.listSkins())m5(F,$);if(Y.has(c.MESH))for(let F of X.listMeshes())m5(F,$);if(Y.has(c.CAMERA))for(let F of X.listCameras())m5(F,$);if(Y.has(c.PRIMITIVE))dl(K,c.PRIMITIVE,$);if(Y.has(c.PRIMITIVE_TARGET))dl(K,c.PRIMITIVE_TARGET,$);if(!Z.keepAttributes&&Y.has(c.ACCESSOR)){let F=new Map;for(let V of X.listMeshes())for(let H of V.listPrimitives()){let q=H.getMaterial();if(!q)continue;let U=Bp(W,H,q),L=Pq1(H,U);cl(H,L),H.listTargets().forEach((w)=>cl(w,L)),F.has(q)?F.get(q).add(H):F.set(q,new Set([H]))}for(let[V,H]of F)jq1(V,Array.from(H))}if(!Z.keepIndices&&Y.has(c.ACCESSOR))for(let F of X.listMeshes())for(let V of F.listPrimitives())Nq1(V);if(Y.has(c.ANIMATION))for(let F of X.listAnimations()){for(let V of F.listChannels())if(!V.getTargetNode())V.dispose();if(!F.listChannels().length){let V=F.listSamplers();m5(F,$),V.forEach((H)=>m5(H,$))}else F.listSamplers().forEach((V)=>m5(V,$))}if(Y.has(c.MATERIAL))X.listMaterials().forEach((F)=>m5(F,$));if(Y.has(c.TEXTURE)){if(X.listTextures().forEach((F)=>m5(F,$)),!Z.keepSolidTextures)await Dq1(W)}if(Y.has(c.ACCESSOR))X.listAccessors().forEach((F)=>m5(F,$));if(Y.has(c.BUFFER))X.listBuffers().forEach((F)=>m5(F,$));if(K.removeEventListener("node:dispose",z),!G.empty()){let F=G.entries().map(([V,H])=>`${V} (${H})`).join(", ");Q.info(`${sW}: Removed types... ${F}`)}else Q.debug(`${sW}: No unused properties found.`);Q.debug(`${sW}: Complete.`)})}class wp{constructor(){this.disposed={}}empty(){for(let J in this.disposed)return!1;return!0}entries(){return Object.entries(this.disposed)}dispose(J){this.disposed[J.propertyType]=this.disposed[J.propertyType]||0,this.disposed[J.propertyType]++}}function m5(J,Z){let Y=J.listParents().filter((W)=>!(W instanceof YY||W instanceof eZ)),$=Z&&!Qp(J.getExtras());if(!Y.length&&!$)J.dispose()}function dl(J,Z,Y){for(let $ of J.listEdges()){let W=$.getParent();if(W.propertyType===Z)m5(W,Y)}}function Lp(J,Z,Y){if(Z.listChildren().forEach((X)=>Lp(J,X,Y)),Z instanceof xW)return;let $=J.listParentEdges(Z).some((X)=>{let K=X.getParent().propertyType;return K!==c.ROOT&&K!==c.SCENE&&K!==c.NODE}),W=J.listChildren(Z).length===0,Q=Y&&!Qp(Z.getExtras());if(W&&!$&&!Q)Z.dispose()}function cl(J,Z){for(let Y of Z)J.setAttribute(Y,null)}function Nq1(J){let Z=J.getIndices(),Y=Z&&Z.getArray(),$=J.listAttributes()[0];if(!Y||!$)return;if(Z.getCount()!==$.getCount())return;for(let W=0,Q=Y.length;W<Q;W++)if(W!==Y[W])return;J.setIndices(null)}function Pq1(J,Z){let Y=[];for(let $ of J.listSemantics())if($==="NORMAL"&&!Z.has($))Y.push($);else if($==="TANGENT"&&!Z.has($))Y.push($);else if($.startsWith("TEXCOORD_")&&!Z.has($))Y.push($);else if($.startsWith("COLOR_")&&$!=="COLOR_0")Y.push($);return Y}function Bp(J,Z,Y,$=new Set){let Q=J.getGraph().listChildEdges(Y),X=new Set;for(let z of Q)if(z.getChild()instanceof ZY)X.add(z.getName());for(let z of Q){let F=z.getName(),V=z.getChild();if(V instanceof i6){if(X.has(F.replace(/Info$/,"")))$.add(`TEXCOORD_${V.getTexCoord()}`)}if(V instanceof ZY&&F.match(/normalTexture/i))$.add("TANGENT");if(V instanceof _W)Bp(J,Z,V,$)}let K=Y instanceof z4&&!Y.getExtension("KHR_materials_unlit"),G=Z.getMode()===G8.Mode.POINTS;if(K&&!G)$.add("NORMAL");return $}function jq1(J,Z){let Y=Mq1(J),$=new Set(Y.map((G)=>G.getTexCoord())),W=Array.from($).sort(),Q=new Map(W.map((G,z)=>[G,z])),X=new Map(W.map((G,z)=>[`TEXCOORD_${G}`,`TEXCOORD_${z}`]));for(let G of Y){let z=G.getTexCoord();G.setTexCoord(Q.get(z))}for(let G of Z){let z=G.listSemantics().filter((F)=>F.startsWith("TEXCOORD_")).sort();K(G,z),G.listTargets().forEach((F)=>K(F,z))}function K(G,z){for(let F of z){let V=G.getAttribute(F);if(!V)continue;let H=X.get(F);if(H===F)continue;G.setAttribute(H,V),G.setAttribute(F,null)}}}async function Dq1(J){let Z=J.getRoot(),Y=J.getGraph(),$=J.getLogger(),Q=Z.listTextures().map(async(X)=>{var K;let G=await Tq1(X);if(!G)return;if(Oq1(X)==="srgb")CN.convertSRGBToLinear(G,G);let z=X.getName()||X.getURI(),F=(K=X.getSize())==null?void 0:K.join("x"),V=Rq1(X);for(let H of Y.listParentEdges(X)){let q=H.getParent();if(q!==Z&&Cq1(q,G,H.getName(),$))H.dispose()}if(X.listParents().length===1)X.dispose(),$.debug(`${sW}: Removed solid-color texture "${z}" (${F}px ${V.join(", ")})`)});await Promise.all(Q)}function Cq1(J,Z,Y,$){if(J instanceof z4)switch(Y){case"baseColorTexture":return J.setBaseColorFactor(Lq1(Z,Z,J.getBaseColorFactor())),!0;case"emissiveTexture":return J.setEmissiveFactor(Qq1([0,0,0],Z.slice(0,3),J.getEmissiveFactor())),!0;case"occlusionTexture":return Math.abs(Z[0]-1)<=Rj;case"metallicRoughnessTexture":return J.setRoughnessFactor(Z[1]*J.getRoughnessFactor()),J.setMetallicFactor(Z[2]*J.getMetallicFactor()),!0;case"normalTexture":return Up(qp(Hp(),Z,[0.5,0.5,1,1]))<=Rj}return $.warn(`${sW}: Detected single-color ${Y} texture. Pruning ${Y} not yet supported.`),!1}async function Tq1(J){let Z=await kq1(J);if(!Z)return null;let Y=[1/0,1/0,1/0,1/0],$=[-1/0,-1/0,-1/0,-1/0],W=[0,0,0,0],[Q,X]=Z.shape;for(let K=0;K<Q;K++){for(let G=0;G<X;G++)for(let z=0;z<4;z++)Y[z]=Math.min(Y[z],Z.get(K,G,z)),$[z]=Math.max($[z],Z.get(K,G,z));if(Up(qp(W,$,Y))/255>Rj)return null}return Uq1(W,Vq1(W,$,Y),0.00196078431372549)}async function kq1(J){try{return await Yl(J.getImage(),J.getMimeType())}catch(Z){return null}}var RJ=4294967295;class Op{constructor(J){this.attributes=[],this.u8=void 0,this.u32=void 0;let Z=0;for(let Y of Tj(J))Z+=this._initAttribute(Y);this.u8=new Uint8Array(Z),this.u32=new Uint32Array(this.u8.buffer)}_initAttribute(J){let Z=J.getArray(),Y=new Uint8Array(Z.buffer,Z.byteOffset,Z.byteLength),$=J.getElementSize()*J.getComponentSize(),W=m0.padNumber($);return this.attributes.push({u8:Y,byteStride:$,paddedByteStride:W}),W}hash(J){let Z=0;for(let{u8:Y,byteStride:$,paddedByteStride:W}of this.attributes){for(let Q=0;Q<W;Q++)if(Q<$)this.u8[Z+Q]=Y[J*$+Q];else this.u8[Z+Q]=0;Z+=W}return Eq1(0,this.u32)}equal(J,Z){for(let{u8:Y,byteStride:$}of this.attributes)for(let W=0;W<$;W++)if(Y[J*$+W]!==Y[Z*$+W])return!1;return!0}}function Eq1(J,Z){for(let W=0,Q=Z.length;W<Q;W++){let X=Z[W];X=Math.imul(X,1540483477)>>>0,X=(X^X>>24)>>>0,X=Math.imul(X,1540483477)>>>0,J=Math.imul(J,1540483477)>>>0,J=(J^X)>>>0}return J}function Iq1(J,Z,Y,$,W=RJ){let Q=Z-1,K=Y.hash($)&Q;for(let G=0;G<=Q;G++){let z=J[K];if(z===W||Y.equal(z,$))return K;K=K+G+1&Q}throw new Error("Hash table full.")}var s8;(function(J){J.RENDER="render",J.RENDER_CACHED="render-cached",J.UPLOAD="upload",J.UPLOAD_NAIVE="upload-naive",J.DISTINCT="distinct",J.DISTINCT_POSITION="distinct-position",J.UNUSED="unused"})(s8||(s8={}));function PJ(J,Z){let Y=J.getAttribute("POSITION"),$=J.getIndices();switch(Z){case s8.RENDER:return $?$.getCount():Y.getCount();case s8.RENDER_CACHED:return $?new Set($.getArray()).size:Y.getCount();case s8.UPLOAD_NAIVE:case s8.UPLOAD:return Y.getCount();case s8.DISTINCT:case s8.DISTINCT_POSITION:return vq1(Z);case s8.UNUSED:return $?Y.getCount()-new Set($.getArray()).size:0;default:return Sq1(Z)}}function vq1(J){throw new Error(`Not implemented: ${J}`)}function Sq1(J){throw new Error(`Unexpected value: ${J}`)}function RG(J,Z,Y){let $=Y6.fromGraph(J.getGraph());if(!Z||!Y)[Z,Y]=_q1(J);let W=J.getIndices(),Q=W?W.getArray():null,X=PJ(J,s8.RENDER),K=$.createAccessor(),G=X,z=kj(G,Y);for(let V=0;V<G;V++)z[V]=Z[Q?Q[V]:V];J.setIndices(K.setArray(z));let F=Tj(J);for(let V of J.listAttributes()){let H=O7($,V);Nj(V,W,Z,H,Y),J.swap(V,H)}for(let V of J.listTargets())for(let H of V.listAttributes()){let q=O7($,H);Nj(H,W,Z,q,Y),V.swap(H,q)}if(W&&W.listParents().length===1)W.dispose();for(let V of F)if(V.listParents().length===1)V.dispose();return J}function Nj(J,Z,Y,$,W){let Q=J.getElementSize(),X=J.getArray(),K=Z?Z.getArray():null,G=Z?Z.getCount():J.getCount(),z=new X.constructor(W*Q),F=new Uint8Array(W);for(let V=0;V<G;V++){let H=K?K[V]:V,q=Y[H];if(F[q])continue;for(let U=0;U<Q;U++)z[q*Q+U]=X[H*Q+U];F[q]=1}return $.setArray(z)}function _q1(J){let Z=PJ(J,s8.UPLOAD),Y=J.getIndices(),$=Y?Y.getArray():null;if(!Y||!$)return[lH1(Z,1e6),Z];let W=new Uint32Array(Z).fill(RJ),Q=0;for(let X=0;X<$.length;X++){let K=$[X];if(W[K]===RJ)W[K]=Q++}return[W,Q]}var Pj="weld",OU={overwrite:!0,cleanup:!0};function Ej(J=OU){let Z=O4(OU,J);return jJ(Pj,async(Y)=>{let $=Y.getLogger();for(let W of Y.getRoot().listMeshes()){for(let Q of W.listPrimitives())if(DU(Q,Z),PJ(Q,s8.RENDER)===0)Q.dispose();if(W.listPrimitives().length===0)W.dispose()}if(Z.cleanup)await Y.transform(jU({propertyTypes:[c.ACCESSOR,c.NODE],keepAttributes:!0,keepIndices:!0,keepLeaves:!1}),Fp({propertyTypes:[c.ACCESSOR]}));$.debug(`${Pj}: Complete.`)})}function DU(J,Z=OU){let Y=J.getGraph(),W=Y6.fromGraph(Y).getLogger(),Q=oW({},OU,Z);if(J.getIndices()&&!Q.overwrite)return;if(J.getMode()===G8.Mode.POINTS)return;let X=J.getAttribute("POSITION").getCount(),K=J.getIndices(),G=K==null?void 0:K.getArray(),z=K?K.getCount():X,F=new Op(J),V=iH1(X+X/4),H=new Uint32Array(V).fill(RJ),q=new Uint32Array(X).fill(RJ),U=0;for(let L=0;L<z;L++){let w=G?G[L]:L;if(q[w]!==RJ)continue;let O=Iq1(H,V,F,w,RJ),R=H[O];if(R===RJ)H[O]=w,q[w]=U++;else q[w]=q[R]}W.debug(`${Pj}: ${NU(X,U)} vertices.`),RG(J,q,U)}var{FLOAT:xq1}=N0.ComponentType;function Mp(J,Z){let Y=J.getAttribute("POSITION");if(Y)ll(Z,Y);let $=J.getAttribute("NORMAL");if($)pl(Z,$);let W=J.getAttribute("TANGENT");if(W)il(Z,W);for(let Q of J.listTargets()){let X=Q.getAttribute("POSITION");if(X)ll(Z,X);let K=Q.getAttribute("NORMAL");if(K)pl(Z,K);let G=Q.getAttribute("TANGENT");if(G)il(Z,G)}if(rH1(Z)<0)Aq1(J)}function ll(J,Z){let Y=Z.getComponentType(),$=Z.getNormalized(),W=Z.getArray(),Q=Y===xq1?W:new Float32Array(W.length),X=PU();for(let K=0,G=Z.getCount();K<G;K++){if($)X[0]=A0.decodeNormalizedInt(W[K*3],Y),X[1]=A0.decodeNormalizedInt(W[K*3+1],Y),X[2]=A0.decodeNormalizedInt(W[K*3+2],Y);else X[0]=W[K*3],X[1]=W[K*3+1],X[2]=W[K*3+2];$q1(X,X,J),Q[K*3]=X[0],Q[K*3+1]=X[1],Q[K*3+2]=X[2]}Z.setArray(Q).setNormalized(!1)}function pl(J,Z){let Y=Z.getArray(),$=Z.getNormalized(),W=Z.getComponentType(),Q=tH1();eH1(Q,J),Zq1(Q,Q),Jq1(Q,Q);let X=PU();for(let K=0,G=Z.getCount();K<G;K++){if($)X[0]=A0.decodeNormalizedInt(Y[K*3],W),X[1]=A0.decodeNormalizedInt(Y[K*3+1],W),X[2]=A0.decodeNormalizedInt(Y[K*3+2],W);else X[0]=Y[K*3],X[1]=Y[K*3+1],X[2]=Y[K*3+2];if(Wq1(X,X,Q),zp(X,X),$)Y[K*3]=A0.decodeNormalizedInt(X[0],W),Y[K*3+1]=A0.decodeNormalizedInt(X[1],W),Y[K*3+2]=A0.decodeNormalizedInt(X[2],W);else Y[K*3]=X[0],Y[K*3+1]=X[1],Y[K*3+2]=X[2]}}function il(J,Z){let Y=Z.getArray(),$=Z.getNormalized(),W=Z.getComponentType(),Q=PU();for(let X=0,K=Z.getCount();X<K;X++){if($)Q[0]=A0.decodeNormalizedInt(Y[X*4],W),Q[1]=A0.decodeNormalizedInt(Y[X*4+1],W),Q[2]=A0.decodeNormalizedInt(Y[X*4+2],W);else Q[0]=Y[X*4],Q[1]=Y[X*4+1],Q[2]=Y[X*4+2];if(Q[0]=J[0]*Q[0]+J[4]*Q[1]+J[8]*Q[2],Q[1]=J[1]*Q[0]+J[5]*Q[1]+J[9]*Q[2],Q[2]=J[2]*Q[0]+J[6]*Q[1]+J[10]*Q[2],zp(Q,Q),$)Y[X*4]=A0.decodeNormalizedInt(Q[0],W),Y[X*4+1]=A0.decodeNormalizedInt(Q[1],W),Y[X*4+2]=A0.decodeNormalizedInt(Q[2],W);else Y[X*4]=Q[0],Y[X*4+1]=Q[1],Y[X*4+2]=Q[2]}}function Aq1(J){if(J.getMode()!==G8.Mode.TRIANGLES)return;if(!J.getIndices())DU(J);let Z=J.getIndices();for(let Y=0,$=Z.getCount();Y<$;Y+=3){let W=Z.getScalar(Y),Q=Z.getScalar(Y+2);Z.setScalar(Y,Q),Z.setScalar(Y+2,W)}}function hq1(J,Z){for(let Y of J.listPrimitives()){let $=fq1(Y,J);if(Y!==$)J.removePrimitive(Y).addPrimitive($)}for(let Y of J.listPrimitives())RG(Y),Mp(Y,Z)}function fq1(J,Z){if(J.listParents().some(($)=>$ instanceof oK&&$!==Z))J=J.clone();for(let $ of J.listTargets())if($.listParents().some((Q)=>Q instanceof G8&&Q!==J))J.removeTarget($).addTarget($.clone());return J}var nl=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function Rp(J){let Z=J.getMesh(),Y=J.getMatrix();if(Z&&!A0.eq(Y,nl))hq1(Z,Y);for(let $ of J.listChildren()){let W=$.getMatrix();Gp(W,W,Y),$.setMatrix(W)}return J.setMatrix(nl)}var{LINES:yq1,LINE_STRIP:bq1,LINE_LOOP:gq1,TRIANGLES:mq1,TRIANGLE_STRIP:uq1,TRIANGLE_FAN:dq1}=G8.Mode;function cq1(J){let Z=J.getGraph(),Y=Y6.fromGraph(Z);if(!J.getIndices())DU(J);let $=J.getIndices(),W=$.getArray(),Q=Wp(J),K=new VJ[$.getComponentType()](Q*2),G=J.getMode();if(G===bq1)for(let F=0;F<Q;F++)K[F*2]=W[F],K[F*2+1]=W[F+1];else if(G===gq1)for(let F=0;F<Q;F++)if(F<Q-1)K[F*2]=W[F],K[F*2+1]=W[F+1];else K[F*2]=W[F],K[F*2+1]=W[0];else throw new Error("Only LINE_STRIP and LINE_LOOP may be converted to LINES.");J.setMode(yq1);let z=Y.getRoot();if($.listParents().some((F)=>F!==z&&F!==J))J.setIndices(O7(Y,$).setArray(K));else $.setArray(K)}function Np(J){let Z=J.getGraph(),Y=Y6.fromGraph(Z);if(!J.getIndices())DU(J);let $=J.getIndices(),W=$.getArray(),Q=Wp(J),K=new VJ[$.getComponentType()](Q*3),G=J.getMode();if(G===uq1)for(let F=0,V=W.length;F<V-2;F++)if(F%2)K[F*3]=W[F+1],K[F*3+1]=W[F],K[F*3+2]=W[F+2];else K[F*3]=W[F],K[F*3+1]=W[F+1],K[F*3+2]=W[F+2];else if(G===dq1)for(let F=0;F<Q;F++)K[F*3]=W[0],K[F*3+1]=W[F+1],K[F*3+2]=W[F+2];else throw new Error("Only TRIANGLE_STRIP and TRIANGLE_FAN may be converted to TRIANGLES.");J.setMode(mq1);let z=Y.getRoot();if($.listParents().some((F)=>F!==z&&F!==J))J.setIndices(O7(Y,$).setArray(K));else $.setArray(K)}var al="dequantize",MU={pattern:/^((?!JOINTS_).)*$/};function Pp(J=MU){let Z=O4(MU,J);return jJ(al,(Y)=>{let $=Y.getLogger();for(let W of Y.getRoot().listMeshes())for(let Q of W.listPrimitives())lq1(Q,Z);Y.createExtension(OG).dispose(),$.debug(`${al}: Complete.`)})}function lq1(J,Z=MU){let Y=O4(MU,Z);for(let $ of J.listSemantics())if(Y.pattern.test($))jj(J.getAttribute($));for(let $ of J.listTargets())for(let W of $.listSemantics())if(Y.pattern.test(W))jj($.getAttribute(W))}function jj(J){let Z=J.getArray();if(!Z)return;let Y=RU(Z,J.getComponentType(),J.getNormalized());J.setArray(Y).setNormalized(!1)}function RU(J,Z,Y){let $=new Float32Array(J.length);for(let W=0,Q=J.length;W<Q;W++)if(Y)$[W]=A0.decodeNormalizedInt(J[W],Z);else $[W]=J[W];return $}var{TEXTURE_INFO:jp,ROOT:JX6}=c;function Dp(J){let Z=new Y6().setLogger(J.getLogger()),Y=Ij(Z,J);return pq1(Z,J,Y),Z.getRoot().copy(J.getRoot(),Y),Z}function pq1(J,Z,Y){Y||(Y=Ij(J,Z));for(let $ of Z.getRoot().listExtensionsUsed()){let W=J.createExtension($.constructor);if($.isRequired())W.setRequired(!0)}return iq1(J,Z,nq1(Z),Y)}function iq1(J,Z,Y,$){$||($=Ij(J,Z));let W=new Map;for(let Q of Y)if(!W.has(Q)&&Q.propertyType!==jp)W.set(Q,$(Q));for(let[Q,X]of W.entries())X.copy(Q,$);return W}function Ij(J,Z){let Y=new Map([[Z.getRoot(),J.getRoot()]]);return($)=>{if($.propertyType===jp)return $;let W=Y.get($);if(!W)W=new $.constructor(J.getGraph()),Y.set($,W);return W}}function nq1(J){let Z=new Set;for(let Y of J.getGraph().listEdges())Z.add(Y.getChild());return Array.from(Z)}var Bj="flatten",sl={cleanup:!0};function Cp(J=sl){let Z=O4(sl,J);return jJ(Bj,async(Y)=>{let $=Y.getRoot(),W=Y.getLogger(),Q=new Set;for(let z of $.listSkins())for(let F of z.listJoints())Q.add(F);let X=new Set;for(let z of $.listAnimations())for(let F of z.listChannels()){let V=F.getTargetNode();if(V&&F.getTargetPath()!=="weights")X.add(V)}let K=new Set,G=new Set;for(let z of $.listScenes())z.traverse((F)=>{let V=F.getParentNode();if(!V)return;if(Q.has(V)||K.has(V))K.add(F);if(X.has(V)||G.has(V))G.add(F)});for(let z of $.listScenes())z.traverse((F)=>{if(X.has(F))return;if(K.has(F))return;if(G.has(F))return;sH1(F)});if(X.size)W.debug(`${Bj}: Flattening node hierarchies with TRS animation not yet supported.`);if(Z.cleanup)await Y.transform(jU({propertyTypes:[c.NODE],keepLeaves:!1}));W.debug(`${Bj}: Complete.`)})}function Tp(J){return DN(J)}var aq1={skipValidation:!1},ol=4294967295,{LINE_STRIP:sq1,LINE_LOOP:oq1,TRIANGLE_STRIP:rq1,TRIANGLE_FAN:tq1}=G8.Mode;function eq1(J,Z={}){let Y=O4(aq1,Z),$=J[0],W=Y6.fromGraph($.getGraph());if(!Y.skipValidation&&new Set(J.map(Xp)).size>1)throw new Error("Requires >=2 Primitives, sharing the same Material and Mode, with compatible vertex attributes and indices.");for(let q of J)switch(q.getMode()){case sq1:case oq1:cq1(q);break;case rq1:case tq1:Np(q);break}let Q=[],X=new Uint32Array(J.length),K=0,G=0;for(let q=0;q<J.length;q++){let U=J[q],L=U.getIndices(),w=U.getAttribute("POSITION").getCount(),O=L?L.getArray():null,R=L?L.getCount():w,N=new Uint32Array(w).fill(ol);for(let P=0;P<R;P++){let D=O?O[P]:P;if(N[D]===ol)N[D]=K++,X[q]++}Q.push(N),G+=R}let z=W.createPrimitive().setMode($.getMode()).setMaterial($.getMaterial());for(let q of $.listSemantics()){let U=$.getAttribute(q),L=VJ[U.getComponentType()],w=O7(W,U).setArray(new L(K*U.getElementSize()));z.setAttribute(q,w)}let F=$.getIndices(),V=F?O7(W,F).setArray(kj(G,K)):null;z.setIndices(V);let H=0;for(let q=0;q<Q.length;q++){let U=J[q],L=U.getIndices(),w=L?L.getCount():-1,O=Q[q];if(L&&V)ZU1(L,O,V,H),H+=w;for(let R of z.listSemantics()){let N=U.getAttribute(R),P=z.getAttribute(R);JU1(N,L,O,P)}}return z}function JU1(J,Z,Y,$){let W=J.getElementSize(),Q=Z?Z.getArray():null,X=J.getCount(),K=J.getArray(),G=$.getArray(),z=new Uint8Array(J.getCount());for(let F=0,V=Z?Z.getCount():X;F<V;F++){let H=Q?Q[F]:F,q=Y[H];if(z[q])continue;for(let U=0;U<W;U++)G[q*W+U]=K[H*W+U];z[q]=1}}function ZU1(J,Z,Y,$){let W=J.getCount(),Q=J.getArray(),X=Y.getArray();for(let K=0;K<W;K++){let G=Q[K],z=Z[G];X[$+K]=z}}var Dj="join",{ROOT:YU1,NODE:$U1,MESH:WU1,PRIMITIVE:QU1,ACCESSOR:XU1}=c,Oj=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],rl={keepMeshes:!1,keepNamed:!1,cleanup:!0};function kp(J=rl){let Z=O4(rl,J);return jJ(Dj,async(Y)=>{let $=Y.getRoot(),W=Y.getLogger();for(let Q of $.listScenes())tl(Y,Q,Z),Q.traverse((X)=>tl(Y,X,Z));if(Z.cleanup)await Y.transform(jU({propertyTypes:[$U1,WU1,QU1,XU1],keepAttributes:!0,keepIndices:!0,keepLeaves:!1}));W.debug(`${Dj}: Complete.`)})}function tl(J,Z,Y){let $=J.getLogger(),W={},Q=Z.listChildren();for(let G=0;G<Q.length;G++){let z=Q[G];if(z.listParents().some((H)=>H instanceof eZ))continue;let V=z.getMesh();if(!V)continue;if(z.getExtension("EXT_mesh_gpu_instancing"))continue;if(z.getSkin())continue;for(let H of V.listPrimitives()){if(H.listTargets().length>0)continue;let q=H.getMaterial();if(q&&q.getExtension("KHR_materials_volume"))continue;RG(H),GU1(H);let U=Xp(H),L=V.getName()||z.getName();if(Y.keepMeshes||Y.keepNamed&&L)U+=`|${G}`;if(!(U in W))W[U]={prims:[],primMeshes:[],primNodes:[],dstNode:z,dstMesh:void 0};let w=W[U];w.prims.push(H),w.primNodes.push(z)}}let X=Object.values(W).filter(({prims:G})=>G.length>1),K=new Set(X.flatMap((G)=>G.primNodes));for(let G of K){let z=G.getMesh();if(z.listParents().some((V)=>{return V.propertyType!==YU1&&G!==V}))G.setMesh(z.clone())}for(let G of X){let{dstNode:z,primNodes:F}=G;G.dstMesh=z.getMesh(),G.primMeshes=F.map((V)=>V.getMesh())}for(let G of X){let{prims:z,primNodes:F,primMeshes:V,dstNode:H,dstMesh:q}=G,U=H.getMatrix();for(let O=0;O<z.length;O++){let R=F[O],N=V[O],P=z[O];if(N.removePrimitive(P),pH1(P))P=z[O]=KU1(z[O]);if(R!==H)Gp(Oj,oH1(Oj,U),R.getMatrix()),Mp(P,Oj)}let L=eq1(z),w=L.listAttributes()[0].getCount();q.addPrimitive(L),$.debug(`${Dj}: Joined Primitives (${z.length}) containing ${Mj(w)} vertices under Node "${H.getName()}".`)}}function KU1(J){let Z=J.clone();for(let $ of Z.listSemantics())Z.setAttribute($,Z.getAttribute($).clone());let Y=Z.getIndices();if(Y)Z.setIndices(Y.clone());return Z}function GU1(J){for(let Z of["POSITION","NORMAL","TANGENT"]){let Y=J.getAttribute(Z);if(Y)jj(Y)}}var{TRANSLATION:ZX6,ROTATION:YX6,SCALE:$X6,WEIGHTS:WX6}=eZ.TargetPath;var zU1={pattern:/.*/,quantizationVolume:"mesh",quantizePosition:14,quantizeNormal:10,quantizeTexcoord:12,quantizeColor:8,quantizeWeight:8,quantizeGeneric:12,normalizeWeights:!0,cleanup:!0};var QX6=oW({level:"high"},zU1);var FU1="unweld";function VU1(J,Z=new Map){let Y=J.getIndices();if(!Y)return;let $=J.getGraph(),W=Y6.fromGraph($),Q=W.getLogger(),X=J.getAttribute("POSITION").getCount();for(let G of J.listAttributes())if(J.swap(G,el(W,G,Y,Z)),G.listParents().length===1)G.dispose();for(let G of J.listTargets())for(let z of G.listAttributes())if(G.swap(z,el(W,z,Y,Z)),z.listParents().length===1)z.dispose();let K=J.getAttribute("POSITION").getCount();if(Q.debug(`${FU1}: ${NU(X,K)} vertices.`),J.setIndices(null),Y.listParents().length===1)Y.dispose()}function el(J,Z,Y,$){if($.has(Z)&&$.get(Z).has(Y))return $.get(Z).get(Y);let W=Z.getArray(),X=new W.constructor(Y.getCount()*Z.getElementSize()),K=Y.getArray(),G=Z.getElementSize();for(let F=0,V=Y.getCount();F<V;F++)for(let H=0;H<G;H++)X[F*G+H]=W[K[F]*G+H];if(!$.has(Z))$.set(Z,new Map);let z=O7(J,Z).setArray(X);return $.get(Z).set(Y,z),z}var Jp;(function(J){J[J.STEP=0]="STEP",J[J.LERP=1]="LERP",J[J.SLERP=2]="SLERP"})(Jp||(Jp={}));var HU1=0.000001;function qU1(J,Z,Y,$=0.0001){let W=Z.length/J.length,Q=new Array(W).fill(0),X=new Array(W).fill(0),K=new Array(W).fill(0),G=new Array(W).fill(0),z=J.length-1,F=1;for(let V=1;V<z;++V){let H=J[F-1],q=J[V],U=J[V+1],L=(q-H)/(U-H),w=!1;if(q!==U&&(V!==1||q!==J[0])){if(MG(Z,F-1,G),MG(Z,V,X),MG(Z,V+1,K),Y==="slerp"){let O=LU1(Q,G,K,L),R=Yp(G,X)+Yp(X,K);w=!BU(X,O,$)||R+Number.EPSILON>=Math.PI}else if(Y==="lerp"){let O=wU1(Q,G,K,L);w=!BU(X,O,$)}else if(Y==="step")w=!BU(X,G)||!BU(X,K)}if(w){if(V!==F)J[F]=J[V],Zp(Z,F,MG(Z,V,Q));F++}}if(z>0)J[F]=J[z],Zp(Z,F,MG(Z,z,Q)),F++;return F}function MG(J,Z,Y){for(let $=0,W=Y.length;$<W;$++)Y[$]=J[Z*W+$];return Y}function Zp(J,Z,Y){for(let $=0,W=Y.length;$<W;$++)J[Z*W+$]=Y[$]}function BU(J,Z,Y=0){if(J.length!==Z.length)return!1;for(let $=0;$<J.length;$++)if(Math.abs(J[$]-Z[$])>Y)return!1;return!0}function UU1(J,Z,Y){return J*(1-Y)+Z*Y}function wU1(J,Z,Y,$){for(let W=0;W<Z.length;W++)J[W]=UU1(Z[W],Y[W],$);return J}function LU1(J,Z,Y,$){let W=Z[0],Q=Z[1],X=Z[2],K=Z[3],G=Y[0],z=Y[1],F=Y[2],V=Y[3],H,q,U,L,w;if(q=W*G+Q*z+X*F+K*V,q<0)q=-q,G=-G,z=-z,F=-F,V=-V;if(1-q>HU1)H=Math.acos(q),U=Math.sin(H),L=Math.sin((1-$)*H)/U,w=Math.sin($*H)/U;else L=1-$,w=$;return J[0]=L*W+w*G,J[1]=L*Q+w*z,J[2]=L*X+w*F,J[3]=L*K+w*V,J}function Yp(J,Z){let Y=BU1(J,Z);return Math.acos(2*Y*Y-1)}function BU1(J,Z){return J[0]*Z[0]+J[1]*Z[1]+J[2]*Z[2]+J[3]*Z[3]}var XX6=new Float32Array(0),KX6={ready:Promise.resolve(),resample:qU1,tolerance:0.0001,cleanup:!0};var PY="simplify",{POINTS:Ep,LINES:OU1,LINE_STRIP:MU1,LINE_LOOP:RU1,TRIANGLES:NU1,TRIANGLE_STRIP:Ip,TRIANGLE_FAN:vp}=G8.Mode,Sp={ratio:0,error:0.0001,lockBorder:!1,cleanup:!0};function _p(J){let Z=O4(Sp,J),Y=Z.simplifier;if(!Y)throw new Error(`${PY}: simplifier dependency required \u2014 install "meshoptimizer".`);return jJ(PY,async($)=>{let W=$.getLogger();await Y.ready,await $.transform(Ej({overwrite:!1,cleanup:Z.cleanup}));let Q=0;for(let X of $.getRoot().listMeshes()){for(let K of X.listPrimitives()){let G=K.getMode();if(G===NU1||G===Ip||G===vp){if($p(K,Z),PJ(K,s8.RENDER)===0)K.dispose()}else if(K.getMode()===Ep&&!!Y.simplifyPoints){if($p(K,Z),PJ(K,s8.RENDER)===0)K.dispose()}else Q++}if(X.listPrimitives().length===0)X.dispose()}if(Q>0)W.warn(`${PY}: Skipping simplification of ${Q} primitives: Unsupported draw mode.`);if(Z.cleanup)await $.transform(jU({propertyTypes:[c.ACCESSOR,c.NODE],keepAttributes:!0,keepIndices:!0,keepLeaves:!1}),Fp({propertyTypes:[c.ACCESSOR]}));W.debug(`${PY}: Complete.`)})}function $p(J,Z){let Y=oW({},Sp,Z),$=Y.simplifier,W=J.getGraph(),Q=Y6.fromGraph(W),X=Q.getLogger();switch(J.getMode()){case Ep:return PU1(Q,J,Y);case OU1:case MU1:case RU1:return X.warn(`${PY}: Skipping primitive simplification: Unsupported draw mode.`),J;case Ip:case vp:Np(J);break}let K=PJ(J,s8.UPLOAD),G=PJ(J,s8.RENDER);if(G<K/2)RG(J);let z=J.getAttribute("POSITION"),F=J.getIndices(),V=z.getArray(),H=F.getArray();if(!(V instanceof Float32Array))V=RU(V,z.getComponentType(),z.getNormalized());if(!(H instanceof Uint32Array))H=new Uint32Array(H);let q=Math.floor(Y.ratio*G/3)*3,U=Y.lockBorder?["LockBorder"]:[],[L,w]=$.simplify(H,V,3,q,Y.error,U);if(J.setIndices(O7(Q,F).setArray(L)),F.listParents().length===1)F.dispose();RG(J);let O=PJ(J,s8.UPLOAD);if(O<=65534)J.getIndices().setArray(new Uint16Array(J.getIndices().getArray()));return X.debug(`${PY}: ${NU(K,O)} vertices, error: ${w.toFixed(4)}.`),J}function PU1(J,Z,Y){let $=Y.simplifier,W=J.getLogger();if(Z.getIndices())VU1(Z);let X=Z.getAttribute("POSITION"),K=Z.getAttribute("COLOR_0"),G=X.getCount(),z=X.getArray(),F=K?K.getArray():void 0,V=K?K.getComponentSize():void 0;if(!(z instanceof Float32Array))z=RU(z,X.getComponentType(),X.getNormalized());if(F&&!(F instanceof Float32Array))F=RU(F,X.getComponentType(),X.getNormalized());$.useExperimentalFeatures=!0;let H=Math.floor(Y.ratio*G),q=$.simplifyPoints(z,3,H,F,V);$.useExperimentalFeatures=!1;let[U,L]=$.compactMesh(q);W.debug(`${PY}: ${NU(X.getCount(),L)} vertices.`);for(let w of Tj(Z)){let O=O7(J,w);if(Nj(w,null,U,O,L),dH1(Z,w,O),w.listParents().length===1)w.dispose()}return Z}var Cj;(function(J){J.LANCZOS3="lanczos3",J.LANCZOS2="lanczos2"})(Cj||(Cj={}));var GX6={resizeFilter:Cj.LANCZOS3,pattern:void 0,formats:void 0,slots:void 0,quality:void 0,effort:void 0,lossless:!1,nearLossless:!1,limitInputPixels:!0};var FX6=function(){var J="b9H79TebbbeJq9Geueu9Geub9Gbb9Gvuuuuueu9Gduueu9Gluuuueu9Gvuuuuub9Gouuuuuub9Gluuuub9GiuuueuiKLdilevlevlooroowwvwbDDbelve9Weiiviebeoweuec:G:Qdkr;RiOo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9FW9U9J9V9KW9wWVtW949c919M9MWVbe8F9TW79O9V9Wt9FW9U9J9V9KW9wWVtW949c919M9MWV9c9V919U9KbdE9TW79O9V9Wt9FW9U9J9V9KW9wWVtW949wWV79P9V9UbiY9TW79O9V9Wt9FW9U9J9V9KW69U9KW949c919M9MWVbl8E9TW79O9V9Wt9FW9U9J9V9KW69U9KW949c919M9MWV9c9V919U9Kbv8A9TW79O9V9Wt9FW9U9J9V9KW69U9KW949wWV79P9V9UboE9TW79O9V9Wt9FW9U9J9V9KW69U9KW949tWG91W9U9JWbra9TW79O9V9Wt9FW9U9J9V9KW69U9KW949tWG91W9U9JW9c9V919U9KbwL9TW79O9V9Wt9FW9U9J9V9KWS9P2tWV9p9JtbDK9TW79O9V9Wt9FW9U9J9V9KWS9P2tWV9r919HtbqL9TW79O9V9Wt9FW9U9J9V9KWS9P2tWVT949WbkE9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94J9H9J9OWbPa9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94J9H9J9OW9ttV9P9Wbsa9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94SWt9J9O9sW9T9H9WbzK9TW79O9V9Wt9F79W9Ht9P9H29t9VVt9sW9T9H9WbHl79IV9RbODwebcekdQXq;A9pLdbk;QqeKu8Jjjjjbcjo9Rgv8Kjjjjbcbhodnalcefae0mbabcbRbN:kjjbc:GeV86bbavcjdfcbcjdzNjjjb8AdnaiTmbavcjdfadalz:tjjjb8Akabaefhrabcefhwavalfcbcbcjdal9RalcFe0EzNjjjb8Aavavcjdfalz:tjjjbhDcj;abal9Uc;WFbGgecjdaecjd6Ehqcbhkindndnaiak9nmbaDcjlfcbcjdzNjjjb8Aaqaiak9Rakaqfai6Egxcsfgecl4cifcd4hmadakal2fhPdndndnaec9WGgsTmbcbhzaPhHawhOxekdnaxmbalheinaraw9Ram6miawcbamzNjjjbamfhwaecufgembxvkkcbhAaPhOinaDaAfRbbhCaDcjlfheaOhoaxhXinaeaoRbbgQaC9RgCcetaCcKtcK91cr4786bbaoalfhoaecefheaQhCaXcufgXmbkaraw9Ram6mdaOcefhOawcbamzNjjjbamfhwaAcefgAal9hmbxlkkindnaxTmbaDazfRbbhCaDcjlfheaHhoaxhXinaeaoRbbgQaC9RgCcetaCcKtcK91cr4786bbaoalfhoaecefheaQhCaXcufgXmbkkaraO9Ram6mearaOcbamzNjjjbgLamfgw9RcK6mecbhKaDcjlfhOinaDcjlfaKfhYcwhAczhQceheindndnaegXce9hmbcuhoaYRbbmecbhodninaogecsSmeaecefhoaOaefcefRbbTmbkkcucbaecs6EhoxekaXcethocuaXtc;:bGcFb7hCcbheinaoaCaOaefRbb9nfhoaecefgecz9hmbkkaoaQaoaQ6geEhQaXaAaeEhAaXcetheaXcl6mbkdndndndnaAcufPdiebkaLaKco4fgeaeRbbcdciaAclSEaKci4coGtV86bbaAcw9hmeawaY8Pbb83bbawcwfaYcwf8Pbb83bbawczfhwxdkaLaKco4fgeaeRbbceaKci4coGtV86bbkdncwaA9Tg8Ambinawcb86bbawcefhwxbkkcuaAtcu7hYcbhEaOh3ina3hea8AhCcbhoinaeRbbgQaYcFeGgXaQaX6EaoaAtVhoaecefheaCcufgCmbkawao86bba3a8Afh3awcefhwaEa8AfgEcz6mbkcbheindnaOaefRbbgoaX6mbawao86bbawcefhwkaecefgecz9hmbkkdnaKczfgKas9pmbaOczfhOaraw9RcL0mekkaKas6meawTmeaHcefhHawhOazcefgzalSmixbkkcbhoxikcbhoaraw9Ralcaalca0E6mddnalc8F0mbawcbcaal9RgezNjjjbaefhwkawaDcjdfalz:tjjjbalfab9RhoxdkaDaPaxcufal2falz:tjjjb8Aaxakfhkawmbkcbhokavcjof8Kjjjjbaok9heeuaecaaeca0Eabcj;abae9Uc;WFbGgdcjdadcjd6Egdfcufad9Uae2adcl4cifcd4adV2fcefkmbcbabBdN:kjjbk:zse5u8Jjjjjbc;ae9Rgl8Kjjjjbcbhvdnaici9UgocHfae0mbabcbyd:e:kjjbgrc;GeV86bbalc;abfcFecjezNjjjb8AalcUfgw9cu83ibalc8WfgD9cu83ibalcyfgq9cu83ibalcafgk9cu83ibalcKfgx9cu83ibalczfgm9cu83ibal9cu83iwal9cu83ibabaefc9WfhPabcefgsaofhednaiTmbcmcsarcb9kgzEhHcbhOcbhAcbhCcbhXcbhQindnaeaP9nmbcbhvxikaQcufhvadaCcdtfgLydbhKaLcwfydbhYaLclfydbh8AcbhEdndndninalc;abfavcsGcitfgoydlh3dndndnaoydbgoaK9hmba3a8ASmekdnaoa8A9hmba3aY9hmbaEcefhExekaoaY9hmea3aK9hmeaEcdfhEkaEc870mdaXcufhvaLaEciGcx2goc:y1jjbfydbcdtfydbh3aLaocN1jjbfydbcdtfydbh8AaLaoc:q1jjbfydbcdtfydbhKcbhodnindnalavcsGcdtfydba39hmbaohYxdkcuhYavcufhvaocefgocz9hmbkkaOa3aOSgvaYce9iaYaH9oVgoGfhOdndndncbcsavEaYaoEgvcs9hmbarce9imba3a3aAa3cefaASgvEgAcefSmecmcsavEhvkasavaEcdtc;WeGV86bbavcs9hmea3aA9Rgvcetavc8F917hvinaeavcFb0crtavcFbGV86bbaecefheavcje6hoavcr4hvaoTmbka3hAxvkcPhvasaEcdtcPV86bba3hAkavTmiavaH9omicdhocehEaQhYxlkavcufhvaEclfgEc;ab9hmbkkdnaLceaYaOSceta8AaOSEcx2gvc:q1jjbfydbcdtfydbgKTaLavcN1jjbfydbcdtfydbg8AceSGaLavc:y1jjbfydbcdtfydbg3cdSGaOcb9hGazGg5ce9hmbaw9cu83ibaD9cu83ibaq9cu83ibak9cu83ibax9cu83ibam9cu83ibal9cu83iwal9cu83ibcbhOkcbhEaXcufgvhodnindnalaocsGcdtfydba8A9hmbaEhYxdkcuhYaocufhoaEcefgEcz9hmbkkcbhodnindnalavcsGcdtfydba39hmbaohExdkcuhEavcufhvaocefgocz9hmbkkaOaKaOSg8EfhLdndnaYcm0mbaYcefhYxekcbcsa8AaLSgvEhYaLavfhLkdndnaEcm0mbaEcefhExekcbcsa3aLSgvEhEaLavfhLkc9:cua8EEh8FcbhvaEaYcltVgacFeGhodndndninavcj1jjbfRbbaoSmeavcefgvcz9hmbxdkka5aKaO9havcm0VVmbasavc;WeV86bbxekasa8F86bbaeaa86bbaecefhekdna8EmbaKaA9Rgvcetavc8F917hvinaeavcFb0gocrtavcFbGV86bbavcr4hvaecefheaombkaKhAkdnaYcs9hmba8AaA9Rgvcetavc8F917hvinaeavcFb0gocrtavcFbGV86bbavcr4hvaecefheaombka8AhAkdnaEcs9hmba3aA9Rgvcetavc8F917hvinaeavcFb0gocrtavcFbGV86bbavcr4hvaecefheaombka3hAkalaXcdtfaKBdbaXcefcsGhvdndnaYPzbeeeeeeeeeeeeeebekalavcdtfa8ABdbaXcdfcsGhvkdndnaEPzbeeeeeeeeeeeeeebekalavcdtfa3BdbavcefcsGhvkcihoalc;abfaQcitfgEaKBdlaEa8ABdbaQcefcsGhYcdhEavhXaLhOxekcdhoalaXcdtfa3BdbcehEaXcefcsGhXaQhYkalc;abfaYcitfgva8ABdlava3Bdbalc;abfaQaEfcsGcitfgva3BdlavaKBdbascefhsaQaofcsGhQaCcifgCai6mbkkcbhvaeaP0mbcbhvinaeavfavcj1jjbfRbb86bbavcefgvcz9hmbkaeab9Ravfhvkalc;aef8KjjjjbavkZeeucbhddninadcefgdc8F0meceadtae6mbkkadcrfcFeGcr9Uci2cdfabci9U2cHfkmbcbabBd:e:kjjbk:ydewu8Jjjjjbcz9Rhlcbhvdnaicvfae0mbcbhvabcbRb:e:kjjbc;qeV86bbal9cb83iwabcefhoabaefc98fhrdnaiTmbcbhwcbhDindnaoar6mbcbskadaDcdtfydbgqalcwfawaqav9Rgvavc8F91gv7av9Rc507gwcdtfgkydb9Rgvc8E91c9:Gavcdt7awVhvinaoavcFb0gecrtavcFbGV86bbavcr4hvaocefhoaembkakaqBdbaqhvaDcefgDai9hmbkkcbhvaoar0mbaocbBbbaoab9RclfhvkavkBeeucbhddninadcefgdc8F0meceadtae6mbkkadcwfcFeGcr9Uab2cvfk:bvli99dui99ludnaeTmbcuadcetcuftcu7:Yhvdndncuaicuftcu7:YgoJbbbZMgr:lJbbb9p9DTmbar:Ohwxekcjjjj94hwkcbhicbhDinalclfIdbgrJbbbbJbbjZalIdbgq:lar:lMalcwfIdbgk:lMgr:varJbbbb9BEgrNhxaqarNhrdndnakJbbbb9GTmbaxhqxekJbbjZar:l:tgqaq:maxJbbbb9GEhqJbbjZax:l:tgxax:marJbbbb9GEhrkdndnalcxfIdbgxJbbj:;axJbbj:;9GEgkJbbjZakJbbjZ9FEavNJbbbZJbbb:;axJbbbb9GEMgx:lJbbb9p9DTmbax:Ohmxekcjjjj94hmkdndnaqJbbj:;aqJbbj:;9GEgxJbbjZaxJbbjZ9FEaoNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:OhPxekcjjjj94hPkdndnarJbbj:;arJbbj:;9GEgqJbbjZaqJbbjZ9FEaoNJbbbZJbbb:;arJbbbb9GEMgr:lJbbb9p9DTmbar:Ohsxekcjjjj94hskdndnadcl9hmbabaifgzas86bbazcifam86bbazcdfaw86bbazcefaP86bbxekabaDfgzas87ebazcofam87ebazclfaw87ebazcdfaP87ebkalczfhlaiclfhiaDcwfhDaecufgembkkk;hlld99eud99eudnaeTmbdndncuaicuftcu7:YgvJbbbZMgo:lJbbb9p9DTmbao:Ohixekcjjjj94hikaic;8FiGhrinabcofcicdalclfIdb:lalIdb:l9EgialcwfIdb:lalaicdtfIdb:l9EEgialcxfIdb:lalaicdtfIdb:l9EEgiarV87ebdndnJbbj:;JbbjZalaicdtfIdbJbbbb9DEgoalaicd7cdtfIdbJ;Zl:1ZNNgwJbbj:;awJbbj:;9GEgDJbbjZaDJbbjZ9FEavNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohqxekcjjjj94hqkabcdfaq87ebdndnalaicefciGcdtfIdbJ;Zl:1ZNaoNgwJbbj:;awJbbj:;9GEgDJbbjZaDJbbjZ9FEavNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohqxekcjjjj94hqkabaq87ebdndnaoalaicufciGcdtfIdbJ;Zl:1ZNNgoJbbj:;aoJbbj:;9GEgwJbbjZawJbbjZ9FEavNJbbbZJbbb:;aoJbbbb9GEMgo:lJbbb9p9DTmbao:Ohixekcjjjj94hikabclfai87ebabcwfhbalczfhlaecufgembkkk;3viDue99eu8Jjjjjbcjd9Rgo8Kjjjjbadcd4hrdndndndnavcd9hmbadcl6meaohwarhDinawc:CuBdbawclfhwaDcufgDmbkaeTmiadcl6mdarcdthqalhkcbhxinaohwakhDarhminawawydbgPcbaDIdbgs:8cL4cFeGc:cufasJbbbb9BEgzaPaz9kEBdbaDclfhDawclfhwamcufgmmbkakaqfhkaxcefgxaeSmixbkkaeTmdxekaeTmekarcdthkavce9hhqadcl6hdcbhxindndndnaqmbadmdc:CuhDalhwarhminaDcbawIdbgs:8cL4cFeGc:cufasJbbbb9BEgPaDaP9kEhDawclfhwamcufgmmbxdkkc:CuhDdndnavPleddbdkadmdaohwalhmarhPinawcbamIdbgs:8cL4cFeGgzc;:bazc;:b9kEc:cufasJbbbb9BEBdbamclfhmawclfhwaPcufgPmbxdkkadmecbhwarhminaoawfcbalawfIdbgs:8cL4cFeGgPc8AaPc8A9kEc:cufasJbbbb9BEBdbawclfhwamcufgmmbkkadmbcbhwarhPinaDhmdnavceSmbaoawfydbhmkdndnalawfIdbgscjjj;8iamai9RcefgmcLt9R::NJbbbZJbbb:;asJbbbb9GEMgs:lJbbb9p9DTmbas:Ohzxekcjjjj94hzkabawfazcFFFrGamcKtVBdbawclfhwaPcufgPmbkkabakfhbalakfhlaxcefgxae9hmbkkaocjdf8Kjjjjbk;HqdCui998Jjjjjbc:qd9Rgv8Kjjjjbavc:Sefcbc;KbzNjjjb8AcbhodnadTmbcbhoaiTmbdnabae9hmbavcuadcdtgradcFFFFi0Ecbyd:m:kjjbHjjjjbbgeBd:SeavceBd:mdaeabarz:tjjjb8Akavc:GefcwfcbBdbav9cb83i:Geavc:Gefaeadaiavc:Sefz:njjjbavyd:Gehwadci9UgDcbyd:m:kjjbHjjjjbbhravc:Sefavyd:mdgqcdtfarBdbavaqcefgkBd:mdarcbaDzNjjjbhxavc:SefakcdtfcuaicdtaicFFFFi0Ecbyd:m:kjjbHjjjjbbgmBdbavaqcdfgPBd:mdawhramhkinakalIdbalarydbgscwascw6Ecdtfc;ebfIdbMUdbarclfhrakclfhkaicufgimbkavc:SefaPcdtfcuaDcdtadcFFFF970Ecbyd:m:kjjbHjjjjbbgPBdbdnadci6mbaehraPhkaDhiinakamarydbcdtfIdbamarclfydbcdtfIdbMamarcwfydbcdtfIdbMUdbarcxfhrakclfhkaicufgimbkkaqcifhoavc;qbfhzavhravyd:KehHavyd:OehOcbhscbhkcbhAcehCinarhXcihQaeakci2gLcdtfgrydbhdarclfydbhqabaAcx2fgicwfarcwfydbgKBdbaiclfaqBdbaiadBdbaxakfce86bbazaKBdwazaqBdlazadBdbaPakcdtfcbBdbdnasTmbcihQaXhiinazaQcdtfaiydbgrBdbaQaraK9harad9haraq9hGGfhQaiclfhiascufgsmbkkaAcefhAcbhsinaOaHaeasaLfcdtfydbcdtgifydbcdtfgKhrawaifgqydbgdhidnadTmbdninarydbakSmearclfhraicufgiTmdxbkkaraKadcdtfc98fydbBdbaqaqydbcufBdbkascefgsci9hmbkdndnaQTmbcuhkJbbbbhYcbhqavyd:KehKavyd:OehLindndnawazaqcdtfydbcdtgsfydbgrmbaqcefhqxekaqcs0hiamasfgdIdbh8AadalcbaqcefgqaiEcdtfIdbalarcwarcw6Ecdtfc;ebfIdbMgEUdbaEa8A:thEarcdthiaLaKasfydbcdtfhrinaParydbgscdtfgdaEadIdbMg8AUdba8AaYaYa8A9DgdEhYasakadEhkarclfhraic98fgimbkkaqaQ9hmbkakcu9hmekaCaD9pmdindnaxaCfRbbmbaChkxdkaDaCcefgC9hmbxikkaQczaQcz6EhsazhraXhzakcu9hmbkkaocdtavc:Seffc98fhrdninaoTmearydbcbyd1:kjjbH:bjjjbbarc98fhraocufhoxbkkavc:qdf8Kjjjjbk;IlevucuaicdtgvaicFFFFi0Egocbyd:m:kjjbHjjjjbbhralalyd9GgwcdtfarBdbalawcefBd9GabarBdbaocbyd:m:kjjbHjjjjbbhralalyd9GgocdtfarBdbalaocefBd9GabarBdlcuadcdtadcFFFFi0Ecbyd:m:kjjbHjjjjbbhralalyd9GgocdtfarBdbalaocefBd9GabarBdwabydbcbavzNjjjb8Aadci9UhDdnadTmbabydbhoaehladhrinaoalydbcdtfgvavydbcefBdbalclfhlarcufgrmbkkdnaiTmbabydbhlabydlhrcbhvaihoinaravBdbarclfhralydbavfhvalclfhlaocufgombkkdnadci6mbabydlhrabydwhvcbhlinaecwfydbhoaeclfydbhdaraeydbcdtfgwawydbgwcefBdbavawcdtfalBdbaradcdtfgdadydbgdcefBdbavadcdtfalBdbaraocdtfgoaoydbgocefBdbavaocdtfalBdbaecxfheaDalcefgl9hmbkkdnaiTmbabydlheabydbhlinaeaeydbalydb9RBdbalclfhlaeclfheaicufgimbkkkQbabaeadaic:01jjbz:mjjjbkQbabaeadaic:C:jjjbz:mjjjbk9DeeuabcFeaicdtzNjjjbhlcbhbdnadTmbindnalaeydbcdtfgiydbcu9hmbaiabBdbabcefhbkaeclfheadcufgdmbkkabk;Wkivuo99lu8Jjjjjbc;W;Gb9Rgl8Kjjjjbcbhvalcj;Gbfcbc;KbzNjjjb8AalcuadcdtadcFFFFi0Egocbyd:m:kjjbHjjjjbbgrBdj9GalceBd;G9GalcFFF;7rBdwal9cFFF;7;3FF:;Fb83dbalcFFF97Bd;S9Gal9cFFF;7FFF:;u83d;K9Gaicd4hwdndnadmbJFFuFhDJFFuuhqJFFuuhkJFFuFhxJFFuuhmJFFuFhPxekawcdthsaehzincbhiinalaifgHazaifIdbgDaHIdbgxaxaD9EEUdbalc;K;GbfaifgHaDaHIdbgxaxaD9DEUdbaiclfgicx9hmbkazasfhzavcefgvad9hmbkalIdwhqalId;S9GhDalIdlhkalId;O9GhxalIdbhmalId;K9GhPkdndnadTmbJbbbbJbbjZJbbbbaPam:tgPaPJbbbb9DEgPaxak:tgxaxaP9DEgxaDaq:tgDaDax9DEgD:vaDJbbbb9BEhDawcdthsarhHadhzindndnaDaeIdbam:tNJb;au9eNJbbbZMgx:lJbbb9p9DTmbax:Ohixekcjjjj94hikaicztaicwtcj;GiGVaicsGVc:p;G:dKGcH2c;d;H:WKGcv2c;j:KM;jbGhvdndnaDaeclfIdbak:tNJb;au9eNJbbbZMgx:lJbbb9p9DTmbax:Ohixekcjjjj94hikaicztaicwtcj;GiGVaicsGVc:p;G:dKGcH2c;d;H:WKGcq2cM;j:KMeGavVhvdndnaDaecwfIdbaq:tNJb;au9eNJbbbZMgx:lJbbb9p9DTmbax:Ohixekcjjjj94hikaHavaicztaicwtcj;GiGVaicsGVc:p;G:dKGcH2c;d;H:WKGcC2c:KM;j:KdGVBdbaeasfheaHclfhHazcufgzmbkalcbcj;GbzNjjjbhiarhHadheinaiaHydbgzcFrGcx2fgvavydbcefBdbaiazcq4cFrGcx2fgvavydlcefBdlaiazcC4cFrGcx2fgzazydwcefBdwaHclfhHaecufgembxdkkalcbcj;GbzNjjjb8AkcbhHcbhzcbhecbhvinalaHfgiydbhsaiazBdbaicwfgwydbhOawavBdbaiclfgiydbhwaiaeBdbasazfhzaOavfhvawaefheaHcxfgHcj;Gb9hmbkcbhHalaocbyd:m:kjjbHjjjjbbgiBd:e9GdnadTmbabhzinazaHBdbazclfhzadaHcefgH9hmbkabhHadhzinalaraHydbgecdtfydbcFrGcx2fgvavydbgvcefBdbaiavcdtfaeBdbaHclfhHazcufgzmbkaihHadhzinalaraHydbgecdtfydbcq4cFrGcx2fgvavydlgvcefBdlabavcdtfaeBdbaHclfhHazcufgzmbkabhHadhzinalaraHydbgecdtfydbcC4cFrGcx2fgvavydwgvcefBdwaiavcdtfaeBdbaHclfhHazcufgzmbkcbhHinabaiydbcdtfaHBdbaiclfhiadaHcefgH9hmbkkclhidninaic98Smealcj;Gbfaifydbcbyd1:kjjbH:bjjjbbaic98fhixbkkalc;W;Gbf8Kjjjjbk9teiucbcbyd:q:kjjbgeabcifc98GfgbBd:q:kjjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;LeeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiclfaeclfydbBdbaicwfaecwfydbBdbaicxfaecxfydbBdbaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk;aeedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdbaicxfalBdbaicwfalBdbaiclfalBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabk9teiucbcbyd:q:kjjbgeabcrfc94GfgbBd:q:kjjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik9:eiuZbhedndncbyd:q:kjjbgdaecztgi9nmbcuheadai9RcFFifcz4nbcuSmekadhekcbabae9Rcifc98Gcbyd:q:kjjbfgdBd:q:kjjbdnadZbcztge9nmbadae9RcFFifcz4nb8Akkk:Iddbcjwk:edb4:h9w9N94:P:gW:j9O:ye9Pbbbbbbebbbdbbbebbbdbbbbbbbdbbbbbbbebbbbbbb:l29hZ;69:9kZ;N;76Z;rg97Z;z;o9xZ8J;B85Z;:;u9yZ;b;k9HZ:2;Z9DZ9e:l9mZ59A8KZ:r;T3Z:A:zYZ79OHZ;j4::8::Y:D9V8:bbbb9s:49:Z8R:hBZ9M9M;M8:L;z;o8:;8:PG89q;x:J878R:hQ8::M:B;e87bbbbbbjZbbjZbbjZ:E;V;N8::Y:DsZ9i;H;68:xd;R8:;h0838:;W:NoZbbbb:WV9O8:uf888:9i;H;68:9c9G;L89;n;m9m89;D8Ko8:bbbbf:8tZ9m836ZS:2AZL;zPZZ818EZ9e:lxZ;U98F8:819E;68:bc:eqkzebbbebbbdbbba:vbb",Z=new Uint8Array([32,0,65,2,1,106,34,33,3,128,11,4,13,64,6,253,10,7,15,116,127,5,8,12,40,16,19,54,20,9,27,255,113,17,42,67,24,23,146,148,18,14,22,45,70,69,56,114,101,21,25,63,75,136,108,28,118,29,73,115]);if(typeof WebAssembly!=="object")return{supported:!1};var Y,$=WebAssembly.instantiate(W(J),{}).then(function(q){Y=q.instance,Y.exports.__wasm_call_ctors(),Y.exports.meshopt_encodeVertexVersion(0),Y.exports.meshopt_encodeIndexVersion(1)});function W(q){var U=new Uint8Array(q.length);for(var L=0;L<q.length;++L){var w=q.charCodeAt(L);U[L]=w>96?w-97:w>64?w-39:w+4}var O=0;for(var L=0;L<q.length;++L)U[O++]=U[L]<60?Z[U[L]]:(U[L]-60)*64+U[++L];return U.buffer.slice(0,O)}function Q(q){if(!q)throw new Error("Assertion failed")}function X(q){return new Uint8Array(q.buffer,q.byteOffset,q.byteLength)}function K(q,U,L,w){var O=Y.exports.sbrk,R=O(U.length*4),N=O(L*4),P=new Uint8Array(Y.exports.memory.buffer),D=X(U);if(P.set(D,R),w)w(R,R,U.length,L);var j=q(N,R,U.length,L);P=new Uint8Array(Y.exports.memory.buffer);var C=new Uint32Array(L);new Uint8Array(C.buffer).set(P.subarray(N,N+L*4)),D.set(P.subarray(R,R+U.length*4)),O(R-O(0));for(var k=0;k<U.length;++k)U[k]=C[U[k]];return[C,j]}function G(q,U,L,w){var O=Y.exports.sbrk,R=O(L*4),N=O(L*w),P=new Uint8Array(Y.exports.memory.buffer);P.set(X(U),N),q(R,N,L,w),P=new Uint8Array(Y.exports.memory.buffer);var D=new Uint32Array(L);return new Uint8Array(D.buffer).set(P.subarray(R,R+L*4)),O(R-O(0)),D}function z(q,U,L,w,O){var R=Y.exports.sbrk,N=R(U),P=R(w*O),D=new Uint8Array(Y.exports.memory.buffer);D.set(X(L),P);var j=q(N,U,P,w,O),C=new Uint8Array(j);return C.set(D.subarray(N,N+j)),R(N-R(0)),C}function F(q){var U=0;for(var L=0;L<q.length;++L){var w=q[L];U=U<w?w:U}return U}function V(q,U){if(Q(U==2||U==4),U==4)return new Uint32Array(q.buffer,q.byteOffset,q.byteLength/4);else{var L=new Uint16Array(q.buffer,q.byteOffset,q.byteLength/2);return new Uint32Array(L)}}function H(q,U,L,w,O,R,N){var P=Y.exports.sbrk,D=P(L*w),j=P(L*R),C=new Uint8Array(Y.exports.memory.buffer);C.set(X(U),j),q(D,L,w,O,j,N);var k=new Uint8Array(L*w);return k.set(C.subarray(D,D+L*w)),P(D-P(0)),k}return{ready:$,supported:!0,reorderMesh:function(q,U,L){var w=U?L?Y.exports.meshopt_optimizeVertexCacheStrip:Y.exports.meshopt_optimizeVertexCache:void 0;return K(Y.exports.meshopt_optimizeVertexFetchRemap,q,F(q)+1,w)},reorderPoints:function(q,U){return Q(q instanceof Float32Array),Q(q.length%U==0),Q(U>=3),G(Y.exports.meshopt_spatialSortRemap,q,q.length/U,U*4)},encodeVertexBuffer:function(q,U,L){Q(L>0&&L<=256),Q(L%4==0);var w=Y.exports.meshopt_encodeVertexBufferBound(U,L);return z(Y.exports.meshopt_encodeVertexBuffer,w,q,U,L)},encodeIndexBuffer:function(q,U,L){Q(L==2||L==4),Q(U%3==0);var w=V(q,L),O=Y.exports.meshopt_encodeIndexBufferBound(U,F(w)+1);return z(Y.exports.meshopt_encodeIndexBuffer,O,w,U,4)},encodeIndexSequence:function(q,U,L){Q(L==2||L==4);var w=V(q,L),O=Y.exports.meshopt_encodeIndexSequenceBound(U,F(w)+1);return z(Y.exports.meshopt_encodeIndexSequence,O,w,U,4)},encodeGltfBuffer:function(q,U,L,w){var O={ATTRIBUTES:this.encodeVertexBuffer,TRIANGLES:this.encodeIndexBuffer,INDICES:this.encodeIndexSequence};return Q(O[w]),O[w](q,U,L)},encodeFilterOct:function(q,U,L,w){return Q(L==4||L==8),Q(w>=1&&w<=16),H(Y.exports.meshopt_encodeFilterOct,q,U,L,w,16)},encodeFilterQuat:function(q,U,L,w){return Q(L==8),Q(w>=4&&w<=16),H(Y.exports.meshopt_encodeFilterQuat,q,U,L,w,16)},encodeFilterExp:function(q,U,L,w,O){Q(L>0&&L%4==0),Q(w>=1&&w<=24);var R={Separate:0,SharedVector:1,SharedComponent:2,Clamped:3};return H(Y.exports.meshopt_encodeFilterExp,q,U,L,w,L,O?R[O]:1)}}}();var HX6=function(){var J="b9H79Tebbbe8Fv9Gbb9Gvuuuuueu9Giuuub9Geueu9Giuuueuikqbeeedddillviebeoweuec:q:Odkr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbeY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVbdE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbiL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtblK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbol79IV9Rbrq;w8Wqdbk;esezu8Jjjjjbcj;eb9Rgv8Kjjjjbc9:hodnadcefal0mbcuhoaiRbbc:Ge9hmbavaialfgrad9Radz1jjjbhwcj;abad9Uc;WFbGgocjdaocjd6EhDaicefhocbhqdnindndndnaeaq9nmbaDaeaq9RaqaDfae6Egkcsfglcl4cifcd4hxalc9WGgmTmecbhPawcjdfhsaohzinaraz9Rax6mvarazaxfgo9RcK6mvczhlcbhHinalgic9WfgOawcj;cbffhldndndndndnazaOco4fRbbaHcoG4ciGPlbedibkal9cb83ibalcwf9cb83ibxikalaoRblaoRbbgOco4gAaAciSgAE86bbawcj;cbfaifglcGfaoclfaAfgARbbaOcl4ciGgCaCciSgCE86bbalcVfaAaCfgARbbaOcd4ciGgCaCciSgCE86bbalc7faAaCfgARbbaOciGgOaOciSgOE86bbalctfaAaOfgARbbaoRbegOco4gCaCciSgCE86bbalc91faAaCfgARbbaOcl4ciGgCaCciSgCE86bbalc4faAaCfgARbbaOcd4ciGgCaCciSgCE86bbalc93faAaCfgARbbaOciGgOaOciSgOE86bbalc94faAaOfgARbbaoRbdgOco4gCaCciSgCE86bbalc95faAaCfgARbbaOcl4ciGgCaCciSgCE86bbalc96faAaCfgARbbaOcd4ciGgCaCciSgCE86bbalc97faAaCfgARbbaOciGgOaOciSgOE86bbalc98faAaOfgORbbaoRbigoco4gAaAciSgAE86bbalc99faOaAfgORbbaocl4ciGgAaAciSgAE86bbalc9:faOaAfgORbbaocd4ciGgAaAciSgAE86bbalcufaOaAfglRbbaociGgoaociSgoE86bbalaofhoxdkalaoRbwaoRbbgOcl4gAaAcsSgAE86bbawcj;cbfaifglcGfaocwfaAfgARbbaOcsGgOaOcsSgOE86bbalcVfaAaOfgORbbaoRbegAcl4gCaCcsSgCE86bbalc7faOaCfgORbbaAcsGgAaAcsSgAE86bbalctfaOaAfgORbbaoRbdgAcl4gCaCcsSgCE86bbalc91faOaCfgORbbaAcsGgAaAcsSgAE86bbalc4faOaAfgORbbaoRbigAcl4gCaCcsSgCE86bbalc93faOaCfgORbbaAcsGgAaAcsSgAE86bbalc94faOaAfgORbbaoRblgAcl4gCaCcsSgCE86bbalc95faOaCfgORbbaAcsGgAaAcsSgAE86bbalc96faOaAfgORbbaoRbvgAcl4gCaCcsSgCE86bbalc97faOaCfgORbbaAcsGgAaAcsSgAE86bbalc98faOaAfgORbbaoRbogAcl4gCaCcsSgCE86bbalc99faOaCfgORbbaAcsGgAaAcsSgAE86bbalc9:faOaAfgORbbaoRbrgocl4gAaAcsSgAE86bbalcufaOaAfglRbbaocsGgoaocsSgoE86bbalaofhoxekalao8Pbb83bbalcwfaocwf8Pbb83bbaoczfhokdnaiam9pmbaHcdfhHaiczfhlarao9RcL0mekkaiam6mvaoTmvdnakTmbawaPfRbbhHawcj;cbfhlashiakhOinaialRbbgzce4cbazceG9R7aHfgH86bbaiadfhialcefhlaOcufgOmbkkascefhsaohzaPcefgPad9hmbxikkcbc99arao9Radcaadca0ESEhoxlkaoaxad2fhCdnakmbadhlinaoTmlarao9Rax6mlaoaxfhoalcufglmbkaChoxekcbhmawcjdfhAinarao9Rax6miawamfRbbhHawcj;cbfhlaAhiakhOinaialRbbgzce4cbazceG9R7aHfgH86bbaiadfhialcefhlaOcufgOmbkaAcefhAaoaxfhoamcefgmad9hmbkaChokabaqad2fawcjdfakad2z1jjjb8Aawawcjdfakcufad2fadz1jjjb8Aakaqfhqaombkc9:hoxekc9:hokavcj;ebf8Kjjjjbaok;cseHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgwce0mbavc;abfcFecjez:jjjjb8AavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhDaicefgqarfhidnaeTmbcmcsawceSEhkcbhxcbhmcbhPcbhwcbhlindnaiaD9nmbc9:hoxikdndnaqRbbgoc;Ve0mbavc;abfalaocu7gscl4fcsGcitfgzydlhrazydbhzdnaocsGgHak9pmbavawasfcsGcdtfydbaxaHEhoaHThsdndnadcd9hmbabaPcetfgHaz87ebaHclfao87ebaHcdfar87ebxekabaPcdtfgHazBdbaHcwfaoBdbaHclfarBdbkaxasfhxcdhHavawcdtfaoBdbawasfhwcehsalhOxdkdndnaHcsSmbaHc987aHamffcefhoxekaicefhoai8SbbgHcFeGhsdndnaHcu9mmbaohixekaicvfhiascFbGhscrhHdninao8SbbgOcFbGaHtasVhsaOcu9kmeaocefhoaHcrfgHc8J9hmbxdkkaocefhikasce4cbasceG9R7amfhokdndnadcd9hmbabaPcetfgHaz87ebaHclfao87ebaHcdfar87ebxekabaPcdtfgHazBdbaHcwfaoBdbaHclfarBdbkcdhHavawcdtfaoBdbcehsawcefhwalhOaohmxekdnaocpe0mbaxcefgHavawaDaocsGfRbbgocl49RcsGcdtfydbaocz6gzEhravawao9RcsGcdtfydbaHazfgAaocsGgHEhoaHThCdndnadcd9hmbabaPcetfgHax87ebaHclfao87ebaHcdfar87ebxekabaPcdtfgHaxBdbaHcwfaoBdbaHclfarBdbkcdhsavawcdtfaxBdbavawcefgwcsGcdtfarBdbcihHavc;abfalcitfgOaxBdlaOarBdbavawazfgwcsGcdtfaoBdbalcefcsGhOawaCfhwaxhzaAaCfhxxekaxcbaiRbbgOEgzaoc;:eSgHfhraOcsGhCaOcl4hAdndnaOcs0mbarcefhoxekarhoavawaA9RcsGcdtfydbhrkdndnaCmbaocefhxxekaohxavawaO9RcsGcdtfydbhokdndnaHTmbaicefhHxekaicdfhHai8SbegscFeGhzdnascu9kmbaicofhXazcFbGhzcrhidninaH8SbbgscFbGaitazVhzascu9kmeaHcefhHaicrfgic8J9hmbkaXhHxekaHcefhHkazce4cbazceG9R7amfgmhzkdndnaAcsSmbaHhsxekaHcefhsaH8SbbgicFeGhrdnaicu9kmbaHcvfhXarcFbGhrcrhidninas8SbbgHcFbGaitarVhraHcu9kmeascefhsaicrfgic8J9hmbkaXhsxekascefhskarce4cbarceG9R7amfgmhrkdndnaCcsSmbashixekascefhias8SbbgocFeGhHdnaocu9kmbascvfhXaHcFbGhHcrhodninai8SbbgscFbGaotaHVhHascu9kmeaicefhiaocrfgoc8J9hmbkaXhixekaicefhikaHce4cbaHceG9R7amfgmhokdndnadcd9hmbabaPcetfgHaz87ebaHclfao87ebaHcdfar87ebxekabaPcdtfgHazBdbaHcwfaoBdbaHclfarBdbkcdhsavawcdtfazBdbavawcefgwcsGcdtfarBdbcihHavc;abfalcitfgXazBdlaXarBdbavawaOcz6aAcsSVfgwcsGcdtfaoBdbawaCTaCcsSVfhwalcefcsGhOkaqcefhqavc;abfaOcitfgOarBdlaOaoBdbavc;abfalasfcsGcitfgraoBdlarazBdbawcsGhwalaHfcsGhlaPcifgPae6mbkkcbc99aiaDSEhokavc;aef8Kjjjjbaok:flevu8Jjjjjbcz9Rhvc9:hodnaecvfal0mbcuhoaiRbbc;:eGc;qe9hmbav9cb83iwaicefhraialfc98fhwdnaeTmbdnadcdSmbcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcdtfaic8Etc8F91aicd47avcwfaiceGcdtVgoydbfglBdbaoalBdbaDcefgDae9hmbxdkkcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcetfaic8Etc8F91aicd47avcwfaiceGcdtVgoydbfgl87ebaoalBdbaDcefgDae9hmbkkcbc99arawSEhokaok:Lvoeue99dud99eud99dndnadcl9hmbaeTmeindndnabcdfgd8Sbb:Yab8Sbbgi:Ygl:l:tabcefgv8Sbbgo:Ygr:l:tgwJbb;:9cawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai86bbdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad86bbdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad86bbabclfhbaecufgembxdkkaeTmbindndnabclfgd8Ueb:Yab8Uebgi:Ygl:l:tabcdfgv8Uebgo:Ygr:l:tgwJb;:FSawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai87ebdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad87ebdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad87ebabcwfhbaecufgembkkk;oiliui99iue99dnaeTmbcbhiabhlindndnJ;Zl81Zalcof8UebgvciV:Y:vgoal8Ueb:YNgrJb;:FSNJbbbZJbbb:;arJbbbb9GEMgw:lJbbb9p9DTmbaw:OhDxekcjjjj94hDkalclf8Uebhqalcdf8UebhkabaiavcefciGfcetfaD87ebdndnaoak:YNgwJb;:FSNJbbbZJbbb:;awJbbbb9GEMgx:lJbbb9p9DTmbax:OhDxekcjjjj94hDkabaiavciGfgkcd7cetfaD87ebdndnaoaq:YNgoJb;:FSNJbbbZJbbb:;aoJbbbb9GEMgx:lJbbb9p9DTmbax:OhDxekcjjjj94hDkabaiavcufciGfcetfaD87ebdndnJbbjZararN:tawawN:taoaoN:tgrJbbbbarJbbbb9GE:rJb;:FSNJbbbZMgr:lJbbb9p9DTmbar:Ohvxekcjjjj94hvkabakcetfav87ebalcwfhlaiclfhiaecufgembkkk9mbdnadcd4ae2gdTmbinababydbgecwtcw91:Yaece91cjjj98Gcjjj;8if::NUdbabclfhbadcufgdmbkkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;LeeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiclfaeclfydbBdbaicwfaecwfydbBdbaicxfaecxfydbBdbaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk;aeedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdbaicxfalBdbaicwfalBdbaiclfalBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabkkkebcjwklzNbb",Z="b9H79TebbbeKl9Gbb9Gvuuuuueu9Giuuub9Geueuikqbbebeedddilve9Weeeviebeoweuec:q:6dkr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbdY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVblE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtboK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbrL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbwl79IV9RbDq:p9sqlbzik9:evu8Jjjjjbcz9Rhbcbheincbhdcbhiinabcwfadfaicjuaead4ceGglE86bbaialfhiadcefgdcw9hmbkaec:q:yjjbfai86bbaecitc:q1jjbfab8Piw83ibaecefgecjd9hmbkk:N8JlHud97euo978Jjjjjbcj;kb9Rgv8Kjjjjbc9:hodnadcefal0mbcuhoaiRbbc:Ge9hmbavaialfgrad9Rad;8qbbcj;abad9UhlaicefhodnaeTmbadTmbalc;WFbGglcjdalcjd6EhwcbhDinawaeaD9RaDawfae6Egqcsfglc9WGgkci2hxakcethmalcl4cifcd4hPabaDad2fhsakc;ab6hzcbhHincbhOaohAdndninaraA9RaP6meavcj;cbfaOak2fhCaAaPfhocbhidnazmbarao9Rc;Gb6mbcbhlinaCalfhidndndndndnaAalco4fRbbgXciGPlbedibkaipxbbbbbbbbbbbbbbbbpklbxikaiaopbblaopbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbaoclfaYpQbfaKc:q:yjjbfRbbfhoxdkaiaopbbwaopbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbaocwfaYpQbfaKc:q:yjjbfRbbfhoxekaiaopbbbpklbaoczfhokdndndndndnaXcd4ciGPlbedibkaipxbbbbbbbbbbbbbbbbpklzxikaiaopbblaopbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklzaoclfaYpQbfaKc:q:yjjbfRbbfhoxdkaiaopbbwaopbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklzaocwfaYpQbfaKc:q:yjjbfRbbfhoxekaiaopbbbpklzaoczfhokdndndndndnaXcl4ciGPlbedibkaipxbbbbbbbbbbbbbbbbpklaxikaiaopbblaopbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklaaoclfaYpQbfaKc:q:yjjbfRbbfhoxdkaiaopbbwaopbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklaaocwfaYpQbfaKc:q:yjjbfRbbfhoxekaiaopbbbpklaaoczfhokdndndndndnaXco4Plbedibkaipxbbbbbbbbbbbbbbbbpkl8WxikaiaopbblaopbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibaXc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkl8WaoclfaYpQbfaXc:q:yjjbfRbbfhoxdkaiaopbbwaopbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibaXc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkl8WaocwfaYpQbfaXc:q:yjjbfRbbfhoxekaiaopbbbpkl8Waoczfhokalc;abfhialcjefak0meaihlarao9Rc;Fb0mbkkdnaiak9pmbaici4hlinarao9RcK6miaCaifhXdndndndndnaAaico4fRbbalcoG4ciGPlbedibkaXpxbbbbbbbbbbbbbbbbpkbbxikaXaopbblaopbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkbbaoclfaYpQbfaKc:q:yjjbfRbbfhoxdkaXaopbbwaopbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkbbaocwfaYpQbfaKc:q:yjjbfRbbfhoxekaXaopbbbpkbbaoczfhokalcdfhlaiczfgiak6mbkkaoTmeaohAaOcefgOclSmdxbkkc9:hoxlkdnakTmbavcjdfaHfhiavaHfpbdbhYcbhXinaiavcj;cbfaXfglpblbgLcep9TaLpxeeeeeeeeeeeeeeeegQp9op9Hp9rgLalakfpblbg8Acep9Ta8AaQp9op9Hp9rg8ApmbzeHdOiAlCvXoQrLgEalamfpblbg3cep9Ta3aQp9op9Hp9rg3alaxfpblbg5cep9Ta5aQp9op9Hp9rg5pmbzeHdOiAlCvXoQrLg8EpmbezHdiOAlvCXorQLgQaQpmbedibedibedibediaYp9UgYp9AdbbaiadfglaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaladfglaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaladfglaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaladfglaYaEa8EpmwDKYqk8AExm35Ps8E8FgQaQpmbedibedibedibedip9UgYp9AdbbaladfglaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaladfglaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaladfglaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaladfglaYaLa8ApmwKDYq8AkEx3m5P8Es8FgLa3a5pmwKDYq8AkEx3m5P8Es8Fg8ApmbezHdiOAlvCXorQLgQaQpmbedibedibedibedip9UgYp9AdbbaladfglaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaladfglaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaladfglaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaladfglaYaLa8ApmwDKYqk8AExm35Ps8E8FgQaQpmbedibedibedibedip9UgYp9AdbbaladfglaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaladfglaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaladfglaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaladfhiaXczfgXak6mbkkaHclfgHad6mbkasavcjdfaqad2;8qbbavavcjdfaqcufad2fad;8qbbaqaDfgDae6mbkkcbc99arao9Radcaadca0ESEhokavcj;kbf8Kjjjjbaokwbz:bjjjbk::seHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgwce0mbavc;abfcFecje;8kbavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhDaicefgqarfhidnaeTmbcmcsawceSEhkcbhxcbhmcbhPcbhwcbhlindnaiaD9nmbc9:hoxikdndnaqRbbgoc;Ve0mbavc;abfalaocu7gscl4fcsGcitfgzydlhrazydbhzdnaocsGgHak9pmbavawasfcsGcdtfydbaxaHEhoaHThsdndnadcd9hmbabaPcetfgHaz87ebaHclfao87ebaHcdfar87ebxekabaPcdtfgHazBdbaHcwfaoBdbaHclfarBdbkaxasfhxcdhHavawcdtfaoBdbawasfhwcehsalhOxdkdndnaHcsSmbaHc987aHamffcefhoxekaicefhoai8SbbgHcFeGhsdndnaHcu9mmbaohixekaicvfhiascFbGhscrhHdninao8SbbgOcFbGaHtasVhsaOcu9kmeaocefhoaHcrfgHc8J9hmbxdkkaocefhikasce4cbasceG9R7amfhokdndnadcd9hmbabaPcetfgHaz87ebaHclfao87ebaHcdfar87ebxekabaPcdtfgHazBdbaHcwfaoBdbaHclfarBdbkcdhHavawcdtfaoBdbcehsawcefhwalhOaohmxekdnaocpe0mbaxcefgHavawaDaocsGfRbbgocl49RcsGcdtfydbaocz6gzEhravawao9RcsGcdtfydbaHazfgAaocsGgHEhoaHThCdndnadcd9hmbabaPcetfgHax87ebaHclfao87ebaHcdfar87ebxekabaPcdtfgHaxBdbaHcwfaoBdbaHclfarBdbkcdhsavawcdtfaxBdbavawcefgwcsGcdtfarBdbcihHavc;abfalcitfgOaxBdlaOarBdbavawazfgwcsGcdtfaoBdbalcefcsGhOawaCfhwaxhzaAaCfhxxekaxcbaiRbbgOEgzaoc;:eSgHfhraOcsGhCaOcl4hAdndnaOcs0mbarcefhoxekarhoavawaA9RcsGcdtfydbhrkdndnaCmbaocefhxxekaohxavawaO9RcsGcdtfydbhokdndnaHTmbaicefhHxekaicdfhHai8SbegscFeGhzdnascu9kmbaicofhXazcFbGhzcrhidninaH8SbbgscFbGaitazVhzascu9kmeaHcefhHaicrfgic8J9hmbkaXhHxekaHcefhHkazce4cbazceG9R7amfgmhzkdndnaAcsSmbaHhsxekaHcefhsaH8SbbgicFeGhrdnaicu9kmbaHcvfhXarcFbGhrcrhidninas8SbbgHcFbGaitarVhraHcu9kmeascefhsaicrfgic8J9hmbkaXhsxekascefhskarce4cbarceG9R7amfgmhrkdndnaCcsSmbashixekascefhias8SbbgocFeGhHdnaocu9kmbascvfhXaHcFbGhHcrhodninai8SbbgscFbGaotaHVhHascu9kmeaicefhiaocrfgoc8J9hmbkaXhixekaicefhikaHce4cbaHceG9R7amfgmhokdndnadcd9hmbabaPcetfgHaz87ebaHclfao87ebaHcdfar87ebxekabaPcdtfgHazBdbaHcwfaoBdbaHclfarBdbkcdhsavawcdtfazBdbavawcefgwcsGcdtfarBdbcihHavc;abfalcitfgXazBdlaXarBdbavawaOcz6aAcsSVfgwcsGcdtfaoBdbawaCTaCcsSVfhwalcefcsGhOkaqcefhqavc;abfaOcitfgOarBdlaOaoBdbavc;abfalasfcsGcitfgraoBdlarazBdbawcsGhwalaHfcsGhlaPcifgPae6mbkkcbc99aiaDSEhokavc;aef8Kjjjjbaok:flevu8Jjjjjbcz9Rhvc9:hodnaecvfal0mbcuhoaiRbbc;:eGc;qe9hmbav9cb83iwaicefhraialfc98fhwdnaeTmbdnadcdSmbcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcdtfaic8Etc8F91aicd47avcwfaiceGcdtVgoydbfglBdbaoalBdbaDcefgDae9hmbxdkkcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcetfaic8Etc8F91aicd47avcwfaiceGcdtVgoydbfgl87ebaoalBdbaDcefgDae9hmbkkcbc99arawSEhokaok:wPliuo97eue978Jjjjjbca9Rhiaec98Ghldndnadcl9hmbdnalTmbcbhvabhdinadadpbbbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDpxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpkbbadczfhdavclfgval6mbkkalaeSmeaipxbbbbbbbbbbbbbbbbgqpklbaiabalcdtfgdaeciGglcdtgv;8qbbdnalTmbaiaipblbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDaqp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpklbkadaiav;8qbbskdnalTmbcbhvabhdinadczfgxaxpbbbgopxbbbbbbFFbbbbbbFFgkp9oadpbbbgDaopmbediwDqkzHOAKY8AEgwczp:Reczp:Sep;6egraDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eawczp:Sep;6egwp;Gearp;Gep;Kep;Legopxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegrpxb;:FSb;:FSb;:FSb;:FSararp;Meaoaop;Meawaqawamp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFFbbFFbbFFbbFFbbp9oaoawp;Meaqp;Keczp:Rep9qgoarawp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogrpmwDKYqk8AExm35Ps8E8Fp9qpkbbadaDakp9oaoarpmbezHdiOAlvCXorQLp9qpkbbadcafhdavclfgval6mbkkalaeSmbaiaeciGgvcitgdfcbcaad9R;8kbaiabalcitfglad;8qbbdnavTmbaiaipblzgopxbbbbbbFFbbbbbbFFgkp9oaipblbgDaopmbediwDqkzHOAKY8AEgwczp:Reczp:Sep;6egraDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eawczp:Sep;6egwp;Gearp;Gep;Kep;Legopxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegrpxb;:FSb;:FSb;:FSb;:FSararp;Meaoaop;Meawaqawamp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFFbbFFbbFFbbFFbbp9oaoawp;Meaqp;Keczp:Rep9qgoarawp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogrpmwDKYqk8AExm35Ps8E8Fp9qpklzaiaDakp9oaoarpmbezHdiOAlvCXorQLp9qpklbkalaiad;8qbbkk;4wllue97euv978Jjjjjbc8W9Rhidnaec98GglTmbcbhvabhoinaiaopbbbgraoczfgwpbbbgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklbaopxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaDakp;Mearp;Keamp9oaqakp;Mearp;Keczp:Rep9qgkpmbezHdiOAlvCXorQLgrp5baipblbpEb:T:j83ibaocwfarp5eaipblbpEe:T:j83ibawaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblbpEd:T:j83ibaocKfakp5eaipblbpEi:T:j83ibaocafhoavclfgval6mbkkdnalaeSmbaiaeciGgvcitgofcbcaao9R;8kbaiabalcitfgwao;8qbbdnavTmbaiaipblbgraipblzgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklaaipxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaDakp;Mearp;Keamp9oaqakp;Mearp;Keczp:Rep9qgkpmbezHdiOAlvCXorQLgrp5baipblapEb:T:j83ibaiarp5eaipblapEe:T:j83iwaiaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblapEd:T:j83izaiakp5eaipblapEi:T:j83iKkawaiao;8qbbkk:Pddiue978Jjjjjbc;ab9Rhidnadcd4ae2glc98GgvTmbcbheabhdinadadpbbbgocwp:Recwp:Sep;6eaocep:SepxbbjFbbjFbbjFbbjFp9opxbbjZbbjZbbjZbbjZp:Uep;Mepkbbadczfhdaeclfgeav6mbkkdnavalSmbaialciGgecdtgdVcbc;abad9R;8kbaiabavcdtfgvad;8qbbdnaeTmbaiaipblbgocwp:Recwp:Sep;6eaocep:SepxbbjFbbjFbbjFbbjFp9opxbbjZbbjZbbjZbbjZp:Uep;Mepklbkavaiad;8qbbkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaikkkebcjwklz:Dbb",Y=new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,3,2,0,0,5,3,1,0,1,12,1,0,10,22,2,12,0,65,0,65,0,65,0,252,10,0,0,11,7,0,65,0,253,15,26,11]),$=new Uint8Array([32,0,65,2,1,106,34,33,3,128,11,4,13,64,6,253,10,7,15,116,127,5,8,12,40,16,19,54,20,9,27,255,113,17,42,67,24,23,146,148,18,14,22,45,70,69,56,114,101,21,25,63,75,136,108,28,118,29,73,115]);if(typeof WebAssembly!=="object")return{supported:!1};var W=WebAssembly.validate(Y)?K(Z):K(J),Q,X=WebAssembly.instantiate(W,{}).then(function(O){Q=O.instance,Q.exports.__wasm_call_ctors()});function K(O){var R=new Uint8Array(O.length);for(var N=0;N<O.length;++N){var P=O.charCodeAt(N);R[N]=P>96?P-97:P>64?P-39:P+4}var D=0;for(var N=0;N<O.length;++N)R[D++]=R[N]<60?$[R[N]]:(R[N]-60)*64+R[++N];return R.buffer.slice(0,D)}function G(O,R,N,P,D,j,C){var k=O.exports.sbrk,I=P+3&-4,A=k(I*D),v=k(j.length),x=new Uint8Array(O.exports.memory.buffer);x.set(j,v);var u=R(A,P,D,v,j.length);if(u==0&&C)C(A,I,D);if(N.set(x.subarray(A,A+P*D)),k(A-k(0)),u!=0)throw new Error("Malformed buffer data: "+u)}var z={NONE:"",OCTAHEDRAL:"meshopt_decodeFilterOct",QUATERNION:"meshopt_decodeFilterQuat",EXPONENTIAL:"meshopt_decodeFilterExp"},F={ATTRIBUTES:"meshopt_decodeVertexBuffer",TRIANGLES:"meshopt_decodeIndexBuffer",INDICES:"meshopt_decodeIndexSequence"},V=[],H=0;function q(O){var R={object:new Worker(O),pending:0,requests:{}};return R.object.onmessage=function(N){var P=N.data;R.pending-=P.count,R.requests[P.id][P.action](P.value),delete R.requests[P.id]},R}function U(O){var R="self.ready = WebAssembly.instantiate(new Uint8Array(["+new Uint8Array(W)+"]), {}).then(function(result) { result.instance.exports.__wasm_call_ctors(); return result.instance; });self.onmessage = "+w.name+";"+G.toString()+w.toString(),N=new Blob([R],{type:"text/javascript"}),P=URL.createObjectURL(N);for(var D=V.length;D<O;++D)V[D]=q(P);for(var D=O;D<V.length;++D)V[D].object.postMessage({});V.length=O,URL.revokeObjectURL(P)}function L(O,R,N,P,D){var j=V[0];for(var C=1;C<V.length;++C)if(V[C].pending<j.pending)j=V[C];return new Promise(function(k,I){var A=new Uint8Array(N),v=++H;j.pending+=O,j.requests[v]={resolve:k,reject:I},j.object.postMessage({id:v,count:O,size:R,source:A,mode:P,filter:D},[A.buffer])})}function w(O){var R=O.data;if(!R.id)return self.close();self.ready.then(function(N){try{var P=new Uint8Array(R.count*R.size);G(N,N.exports[R.mode],P,R.count,R.size,R.source,N.exports[R.filter]),self.postMessage({id:R.id,count:R.count,action:"resolve",value:P},[P.buffer])}catch(D){self.postMessage({id:R.id,count:R.count,action:"reject",value:D})}})}return{ready:X,supported:!0,useWorkers:function(O){U(O)},decodeVertexBuffer:function(O,R,N,P,D){G(Q,Q.exports.meshopt_decodeVertexBuffer,O,R,N,P,Q.exports[z[D]])},decodeIndexBuffer:function(O,R,N,P){G(Q,Q.exports.meshopt_decodeIndexBuffer,O,R,N,P)},decodeIndexSequence:function(O,R,N,P){G(Q,Q.exports.meshopt_decodeIndexSequence,O,R,N,P)},decodeGltfBuffer:function(O,R,N,P,D,j){G(Q,Q.exports[F[D]],O,R,N,P,Q.exports[z[j]])},decodeGltfBufferAsync:function(O,R,N,P,D){if(V.length>0)return L(O,R,N,F[P],z[D]);return X.then(function(){var j=new Uint8Array(O*R);return G(Q,Q.exports[F[P]],j,O,R,N,Q.exports[z[D]]),j})}}}();var xp=function(){var J="b9H79Tebbbe9Hk9Geueu9Geub9Gbb9Gsuuuuuuuuuuuu99uueu9Gvuuuuub9Gvuuuuue999Gquuuuuuu99uueu9Gwuuuuuu99ueu9Giuuue999Gluuuueu9GiuuueuizsdilvoirwDbqqbeqlve9Weiiviebeoweuecj:Pdkr:Tewo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bbz9TW79O9V9Wt9F79P9T9W29P9M95bl8E9TW79O9V9Wt9F79P9T9W29P9M959x9Pt9OcttV9P9I91tW7bvQ9TW79O9V9Wt9F79P9T9W29P9M959q9V9P9Ut7boX9TW79O9V9Wt9F79P9T9W29P9M959t9J9H2Wbra9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94SWt9J9O9sW9T9H9Wbwl79IV9RbDDwebcekdmxq;UMesdbk:kfvKue99euY99Qu8Jjjjjbc;W;qb9Rgs8Kjjjjbcbhzascxfcbc;Kbz:ljjjb8AdnabaeSmbabaeadcdtz:kjjjb8AkdnamcdGTmbalcrfci4gHcbyd;S1jjbHjjjjbbheascxfasyd2gOcdtfaeBdbasaOcefBd2aecbaHz:ljjjbhAcbhlcbhednadTmbcbhlabheadhHinaAaeydbgOci4fgCaCRbbgCceaOcrGgOtV86bbaCcu7aO4ceGalfhlaeclfheaHcufgHmbkcualcdtalcFFFFi0Ehekaecbyd;S1jjbHjjjjbbhzascxfasyd2gecdtfazBdbasaecefBd2alcd4alfhOcehHinaHgecethHaeaO6mbkcbhXcuaecdtgOaecFFFFi0Ecbyd;S1jjbHjjjjbbhHascxfasyd2gCcdtfaHBdbasaCcefBd2aHcFeaOz:ljjjbhQdnadTmbaecufhCcbhLinabaXcdtfgKydbgAc:v;t;h;Ev2hOcbhedndninaQaOaCGgOcdtfgYydbgHcuSmeazaHcdtfydbaASmdaecefgeaOfhOaeaC9nmbxdkkazaLcdtfaABdbaYaLBdbaLhHaLcefhLkaKaHBdbaXcefgXad9hmbkkaQcbyd;O1jjbH:bjjjbbasasyd2cufBd2kcualcefgecdtaecFFFFi0Ecbyd;S1jjbHjjjjbbh8Aascxfasyd2gecdtfa8ABdbasa8ABdlasaecefBd2cuadcitadcFFFFe0Ecbyd;S1jjbHjjjjbbhEascxfasyd2gecdtfaEBdbasaEBdwasaecefBd2asclfabadalcbz:cjjjbcualcdtg3alcFFFFi0Eg5cbyd;S1jjbHjjjjbbhQascxfasyd2gecdtfaQBdbasaecefBd2a5cbyd;S1jjbHjjjjbbh8Eascxfasyd2gecdtfa8EBdbasaecefBd2alcd4alfhOcehHinaHgecethHaeaO6mbkcbhLcuaecdtgOaecFFFFi0Ecbyd;S1jjbHjjjjbbhHascxfasyd2gCcdtfaHBdbasaCcefBd2aHcFeaOz:ljjjbhXdnalTmbavcd4hCaecufhHinaLhednazTmbazaLcdtfydbhekaiaeaC2cdtfgeydlgOcH4aO7c:F:b:DD2aeydbgOcH4aO7c;D;O:B8J27aeydwgecH4ae7c:3F;N8N27aHGheaLcdth8FdndndndndnazTmbaza8FfhKcbhOinaXaecdtfgYydbgAcuSmlaiazaAcdtfydbaC2cdtfaiaKydbaC2cdtfcxz:ojjjbTmiaOcefgOaefaHGheaOaH9nmbxdkkaiaLaC2cdtfhKcbhOinaXaecdtfgYydbgAcuSmiaiaAaC2cdtfaKcxz:ojjjbTmdaOcefgOaefaHGheaOaH9nmbkkcbhYkaYydbgecu9hmekaYaLBdbaLhekaQa8FfaeBdbaLcefgLal9hmbkcbhea8EhHinaHaeBdbaHclfhHalaecefge9hmbkcbheaQhHa8EhOindnaeaHydbgCSmbaOa8EaCcdtfgCydbBdbaCaeBdbkaHclfhHaOclfhOalaecefge9hmbkkcbhaaXcbyd;O1jjbH:bjjjbbasasyd2cufBd2alcbyd;S1jjbHjjjjbbhXascxfasyd2gecdtfaXBdbasaecefBd2a5cbyd;S1jjbHjjjjbbheascxfasyd2gHcdtfaeBdbasaHcefBd2a5cbyd;S1jjbHjjjjbbhHascxfasyd2gOcdtfaHBdbasaOcefBd2aecFea3z:ljjjbhhaHcFea3z:ljjjbhgdnalTmbaEcwfh8Jindna8AaagOcefgacdtfydbgCa8AaOcdtgefydbgHSmbaCaH9Rh8FaEaHcitfh3agaefh8KahaefhLcbhAindndna3aAcitfydbgYaO9hmbaLaOBdba8KaOBdbxekdna8AaYcdtg8LfgeclfydbgHaeydbgeSmbaEaecitgCfydbaOSmeaHae9Rh8Maecu7aHfhKa8JaCfhHcbheinaKaeSmeaecefheaHydbhCaHcwfhHaCaO9hmbkaea8M6mekaga8LfgeaOaYaeydbcuSEBdbaLaYaOaLydbcuSEBdbkaAcefgAa8F9hmbkkaaal9hmbkaQhHa8EhOaghCahhAcbheindndnaeaHydbgY9hmbdnaeaOydbgY9hmbaAydbhYdnaCydbgKcu9hmbaYcu9hmbaXaefcb86bbxikaXaefhLdnaeaKSmbaeaYSmbaLce86bbxikaLcl86bbxdkdnaea8EaYcdtgKfydb9hmbdnaCydbgLcuSmbaeaLSmbaAydbg8FcuSmbaea8FSmbagaKfydbg3cuSmba3aYSmbahaKfydbgKcuSmbaKaYSmbdnaQaLcdtfydbgYaQaKcdtfydb9hmbaYaQa8FcdtfydbgKSmbaKaQa3cdtfydb9hmbaXaefcd86bbxlkaXaefcl86bbxikaXaefcl86bbxdkaXaefcl86bbxekaXaefaXaYfRbb86bbkaHclfhHaOclfhOaCclfhCaAclfhAalaecefge9hmbkdnaqTmbdndnazTmbazheaQhHalhOindnaqaeydbfRbbTmbaXaHydbfcl86bbkaeclfheaHclfhHaOcufgOmbxdkkaQhealhHindnaqRbbTmbaXaeydbfcl86bbkaqcefhqaeclfheaHcufgHmbkkaQhealhOaXhHindnaXaeydbfRbbcl9hmbaHcl86bbkaeclfheaHcefhHaOcufgOmbkkamceGTmbaXhealhHindnaeRbbce9hmbaecl86bbkaecefheaHcufgHmbkkcualcx2alc;v:Q;v:Qe0Ecbyd;S1jjbHjjjjbbhaascxfasyd2gecdtfaaBdbasaecefBd2aaaialavazz:djjjbh8NdndnaDmbcbhycbh8Jxekcbh8JawhecbhHindnaeIdbJbbbb9ETmbasc;Wbfa8JcdtfaHBdba8Jcefh8JkaeclfheaDaHcefgH9hmbkcua8Jal2gecdtaecFFFFi0Ecbyd;S1jjbHjjjjbbhyascxfasyd2gecdtfayBdbasaecefBd2alTmba8JTmbarcd4hLdnazTmba8JcdthicbhYayhKinaoazaYcdtfydbaL2cdtfhAasc;WbfheaKhHa8JhOinaHaAaeydbcdtgCfIdbawaCfIdbNUdbaeclfheaHclfhHaOcufgOmbkaKaifhKaYcefgYal9hmbxdkka8JcdthicbhYayhKinaoaYaL2cdtfhAasc;WbfheaKhHa8JhOinaHaAaeydbcdtgCfIdbawaCfIdbNUdbaeclfheaHclfhHaOcufgOmbkaKaifhKaYcefgYal9hmbkkcualc8S2gHalc;D;O;f8U0EgCcbyd;S1jjbHjjjjbbheascxfasyd2gOcdtfaeBdbasaOcefBd2aecbaHz:ljjjbhqdndndndna8JTmbaCcbyd;S1jjbHjjjjbbhvascxfasyd2gecdtfavBdbcehOasaecefBd2avcbaHz:ljjjb8Acua8Jal2gecltgHaecFFFFb0Ecbyd;S1jjbHjjjjbbhrascxfasyd2gecdtfarBdbasaecefBd2arcbaHz:ljjjb8AadmexikcbhvadTmecbhrkcbhAabhHindnaaaHclfydbgYcx2fgeIdbaaaHydbgKcx2fgOIdbg8P:tgIaaaHcwfydbgLcx2fgCIdlaOIdlg8R:tg8SNaCIdba8P:tgRaeIdla8R:tg8UN:tg8Va8VNa8UaCIdwaOIdwg8W:tg8XNa8SaeIdwa8W:tg8UN:tg8Sa8SNa8UaRNa8XaIN:tgIaINMM:rgRJbbbb9ETmba8VaR:vh8VaIaR:vhIa8SaR:vh8SkaqaQaKcdtfydbc8S2fgea8SaR:rgRa8SNNg8UaeIdbMUdbaeaIaRaINg8YNg8XaeIdlMUdlaea8VaRa8VNg8ZNg80aeIdwMUdwaea8Ya8SNg8YaeIdxMUdxaea8Za8SNg81aeIdzMUdzaea8ZaINg8ZaeIdCMUdCaea8SaRa8Va8WNa8Sa8PNa8RaINMM:mg8RNg8PNg8SaeIdKMUdKaeaIa8PNgIaeId3MUd3aea8Va8PNg8VaeIdaMUdaaea8Pa8RNg8PaeId8KMUd8KaeaRaeIdyMUdyaqaQaYcdtfydbc8S2fgea8UaeIdbMUdbaea8XaeIdlMUdlaea80aeIdwMUdwaea8YaeIdxMUdxaea81aeIdzMUdzaea8ZaeIdCMUdCaea8SaeIdKMUdKaeaIaeId3MUd3aea8VaeIdaMUdaaea8PaeId8KMUd8KaeaRaeIdyMUdyaqaQaLcdtfydbc8S2fgea8UaeIdbMUdbaea8XaeIdlMUdlaea80aeIdwMUdwaea8YaeIdxMUdxaea81aeIdzMUdzaea8ZaeIdCMUdCaea8SaeIdKMUdKaeaIaeId3MUd3aea8VaeIdaMUdaaea8PaeId8KMUd8KaeaRaeIdyMUdyaHcxfhHaAcifgAad6mbkcbhiabhKinabaicdtfhYcbhHinaXaYaHc:G1jjbfydbcdtfydbgOfRbbhedndnaXaKaHfydbgCfRbbgAc99fcFeGcpe0mbaeceSmbaecd9hmekdnaAcufcFeGce0mbahaCcdtfydbaO9hmekdnaecufcFeGce0mbagaOcdtfydbaC9hmekdnaAcv2aefcj1jjbfRbbTmbaQaOcdtfydbaQaCcdtfydb0mekJbbacJbbacJbbjZaeceSEaAceSEh8ZdnaaaYaHc:K1jjbfydbcdtfydbcx2fgeIdwaaaCcx2fgAIdwg8R:tg8VaaaOcx2fgLIdwa8R:tg8Sa8SNaLIdbaAIdbg8W:tgIaINaLIdlaAIdlg8U:tgRaRNMMg8PNa8Va8SNaeIdba8W:tg80aINaRaeIdla8U:tg8YNMMg8Xa8SN:tg8Va8VNa80a8PNa8XaIN:tg8Sa8SNa8Ya8PNa8XaRN:tgIaINMM:rgRJbbbb9ETmba8VaR:vh8VaIaR:vhIa8SaR:vh8SkaqaQaCcdtfydbc8S2fgea8Sa8Za8P:rNgRa8SNNg8XaeIdbMUdbaeaIaRaINg8ZNg80aeIdlMUdlaea8VaRa8VNg8PNg8YaeIdwMUdwaea8Za8SNg8ZaeIdxMUdxaea8Pa8SNg81aeIdzMUdzaea8PaINgBaeIdCMUdCaea8SaRa8Va8RNa8Sa8WNa8UaINMM:mg8RNg8PNg8SaeIdKMUdKaeaIa8PNgIaeId3MUd3aea8Va8PNg8VaeIdaMUdaaea8Pa8RNg8PaeId8KMUd8KaeaRaeIdyMUdyaqaQaOcdtfydbc8S2fgea8XaeIdbMUdbaea80aeIdlMUdlaea8YaeIdwMUdwaea8ZaeIdxMUdxaea81aeIdzMUdzaeaBaeIdCMUdCaea8SaeIdKMUdKaeaIaeId3MUd3aea8VaeIdaMUdaaea8PaeId8KMUd8KaeaRaeIdyMUdykaHclfgHcx9hmbkaKcxfhKaicifgiad6mbkdna8JTmbcbhKinJbbbbh8WaaabaKcdtfgeclfydbgLcx2fgHIdwaaaeydbgicx2fgOIdwg8Y:tgIaINaHIdbaOIdbg81:tg8Va8VNaHIdlaOIdlgB:tgRaRNMMg8Zaaaecwfydbg8Fcx2fgeIdwa8Y:tg8PNaIaIa8PNa8VaeIdba81:tg8RNaRaeIdlaB:tg8UNMMg8SN:tJbbbbJbbjZa8Za8Pa8PNa8Ra8RNa8Ua8UNMMg80Na8Sa8SN:tg8X:va8XJbbbb9BEg8XNh83a80aINa8Pa8SN:ta8XNhUa8Za8UNaRa8SN:ta8XNh85a80aRNa8Ua8SN:ta8XNh86a8Za8RNa8Va8SN:ta8XNh87a80a8VNa8Ra8SN:ta8XNh88a8Va8UNa8RaRN:tg8Sa8SNaRa8PNa8UaIN:tg8Sa8SNaIa8RNa8Pa8VN:tg8Sa8SNMM:rJbbbZNh8Sayaia8J2g3cdtfhHaya8Fa8J2gwcdtfhOayaLa8J2g8LcdtfhCa8Y:mh89aB:mh8:a81:mhZcbhAa8JhYJbbbbh8UJbbbbh8XJbbbbh8ZJbbbbh80Jbbbbh8YJbbbbh81JbbbbhBJbbbbhnJbbbbhcinasc;WbfaAfgecwfa8SaUaCIdbaHIdbg8P:tgRNa83aOIdba8P:tg8RNMgINUdbaeclfa8Sa86aRNa85a8RNMg8VNUdbaea8Sa88aRNa87a8RNMgRNUdbaecxfa8Sa89aINa8:a8VNa8PaZaRNMMMg8PNUdba8SaIa8VNNa80Mh80a8SaIaRNNa8YMh8Ya8Sa8VaRNNa81Mh81a8Sa8Pa8PNNa8WMh8Wa8SaIa8PNNa8UMh8Ua8Sa8Va8PNNa8XMh8Xa8SaRa8PNNa8ZMh8Za8SaIaINNaBMhBa8Sa8Va8VNNanMhna8SaRaRNNacMhcaHclfhHaCclfhCaOclfhOaAczfhAaYcufgYmbkavaic8S2fgeacaeIdbMUdbaeanaeIdlMUdlaeaBaeIdwMUdwaea81aeIdxMUdxaea8YaeIdzMUdzaea80aeIdCMUdCaea8ZaeIdKMUdKaea8XaeId3MUd3aea8UaeIdaMUdaaea8WaeId8KMUd8Kaea8SaeIdyMUdyavaLc8S2fgeacaeIdbMUdbaeanaeIdlMUdlaeaBaeIdwMUdwaea81aeIdxMUdxaea8YaeIdzMUdzaea80aeIdCMUdCaea8ZaeIdKMUdKaea8XaeId3MUd3aea8UaeIdaMUdaaea8WaeId8KMUd8Kaea8SaeIdyMUdyava8Fc8S2fgeacaeIdbMUdbaeanaeIdlMUdlaeaBaeIdwMUdwaea81aeIdxMUdxaea8YaeIdzMUdzaea80aeIdCMUdCaea8ZaeIdKMUdKaea8XaeId3MUd3aea8UaeIdaMUdaaea8WaeId8KMUd8Kaea8SaeIdyMUdyara3cltfhYcbhHa8JhCinaYaHfgeasc;WbfaHfgOIdbaeIdbMUdbaeclfgAaOclfIdbaAIdbMUdbaecwfgAaOcwfIdbaAIdbMUdbaecxfgeaOcxfIdbaeIdbMUdbaHczfhHaCcufgCmbkara8LcltfhYcbhHa8JhCinaYaHfgeasc;WbfaHfgOIdbaeIdbMUdbaeclfgAaOclfIdbaAIdbMUdbaecwfgAaOcwfIdbaAIdbMUdbaecxfgeaOcxfIdbaeIdbMUdbaHczfhHaCcufgCmbkarawcltfhYcbhHa8JhCinaYaHfgeasc;WbfaHfgOIdbaeIdbMUdbaeclfgAaOclfIdbaAIdbMUdbaecwfgAaOcwfIdbaAIdbMUdbaecxfgeaOcxfIdbaeIdbMUdbaHczfhHaCcufgCmbkaKcifgKad6mbkkcbhOxekcehOcbhrkcbh8FdndnamcwGg9cmbJbbbbh8ZcbhJcbhocbhCxekcbhea5cbyd;S1jjbHjjjjbbhCascxfasyd2gHcdtfaCBdbasaHcefBd2dnalTmbaChHinaHaeBdbaHclfhHalaecefge9hmbkkdnaOmbcbhiinabaicdtfhLcbhKinaQaLaKcdtgec:G1jjbfydbcdtfydbcdtfydbhHdnaCaQaLaefydbcdtfydbgOcdtfgAydbgeaOSmbinaAaCaegOcdtfgYydbgeBdbaYhAaOae9hmbkkdnaCaHcdtfgAydbgeaHSmbinaAaCaegHcdtfgYydbgeBdbaYhAaHae9hmbkkdnaOaHSmbaCaOaHaOaH0EcdtfaOaHaOaH6EBdbkaKcefgKci9hmbkaicifgiad6mbkkcbhJdnalTmbcbhYindnaQaYcdtgefydbaY9hmbaYhHdnaCaefgKydbgeaYSmbaKhOinaOaCaegHcdtfgAydbgeBdbaAhOaHae9hmbkkaKaHBdbkaYcefgYal9hmbkcbheaQhOaChHcbhJindndnaeaOydbgA9hmbdnaeaHydbgA9hmbaHaJBdbaJcefhJxdkaHaCaAcdtfydbBdbxekaHaCaAcdtfydbBdbkaOclfhOaHclfhHalaecefge9hmbkkcuaJcltgeaJcjjjjiGEcbyd;S1jjbHjjjjbbhoascxfasyd2gHcdtfaoBdbasaHcefBd2aocbaez:ljjjbhAdnalTmbaChOaahealhYinaecwfIdbh8SaeclfIdbhIaAaOydbcltfgHaeIdbaHIdbMUdbaHclfgKaIaKIdbMUdbaHcwfgKa8SaKIdbMUdbaHcxfgHaHIdbJbbjZMUdbaOclfhOaecxfheaYcufgYmbkkdnaJTmbaAheaJhHinaecxfgOIdbh8SaOcbBdbaeaeIdbJbbbbJbbjZa8S:va8SJbbbb9BEg8SNUdbaeclfgOa8SaOIdbNUdbaecwfgOa8SaOIdbNUdbaeczfheaHcufgHmbkkdnalTmbaChOaahealhYinaAaOydbcltfgHcxfgKaecwfIdbaHcwfIdb:tg8Sa8SNaeIdbaHIdb:tg8Sa8SNaeclfIdbaHclfIdb:tg8Sa8SNMMg8SaKIdbgIaIa8S9DEUdbaOclfhOaecxfheaYcufgYmbkkdnaJmbcbhJJFFuuh8ZxekaAcxfheaAhHaJhOinaHaeIdbUdbaeczfheaHclfhHaOcufgOmbkJFFuuh8ZaAheaJhHinaeIdbg8Sa8Za8Za8S9EEh8ZaeclfheaHcufgHmbkkasydlh9ednalTmba9eclfhea9eydbhAaXhHalhYcbhOincbaeydbgKaA9RaHRbbcpeGEaOfhOaHcefhHaeclfheaKhAaYcufgYmbkaOce4h8Fkcuada8F9RcifgTcx2aTc;v:Q;v:Qe0Ecbyd;S1jjbHjjjjbbhDascxfasyd2gecdtfaDBdbasaecefBd2cuaTcdtaTcFFFFi0Ecbyd;S1jjbHjjjjbbhSascxfasyd2gecdtfaSBdbasaecefBd2a5cbyd;S1jjbHjjjjbbh8Mascxfasyd2gecdtfa8MBdbasaecefBd2alcbyd;S1jjbHjjjjbbh9hascxfasyd2gecdtfa9hBdbasaecefBd2axaxNa8NJbbjZamclGEg83a83N:vhcJbbbbhndnadak9nmbdnaTci6mba8Jclth9iaDcwfh6JbbbbhBJbbbbhninasclfabadalaQz:cjjjbabh8FcbhEcbh5inaba5cdtfh3cbheindnaQa8FaefydbgOcdtgifydbgYaQa3aec:W1jjbfydbcdtfydbgHcdtgwfydbgKSmbaXaHfRbbgLcv2aXaOfRbbgAfc;a1jjbfRbbg8AaAcv2aLfg8Lc;a1jjbfRbbg8KVcFeGTmbdnaKaY9nmba8Lcj1jjbfRbbcFeGmekaAcufhYdnaAaL9hmbaYcFeGce0mbahaifydbaH9hmekdndnaAclSmbaLcl9hmekdnaYcFeGce0mbahaifydbaH9hmdkaLcufcFeGce0mbagawfydbaO9hmekaDaEcx2fgAaHaOa8KcFeGgYEBdlaAaOaHaYEBdbaAaYa8AGcb9hBdwaEcefhEkaeclfgecx9hmbkdna5cifg5ad9pmba8Fcxfh8FaEcifaT9nmekkaETmdcbhiinJbbbbJbbjZaqaQaDaicx2fgAydlgKaAydbgYaAydwgHEgLcdtfydbc8S2fgeIdyg8S:va8SJbbbb9BEaeIdwaaaYaKaHEg8Fcx2fgHIdwgRNaeIdzaHIdbg8PNaeIdaMg8Sa8SMMaRNaeIdlaHIdlg8RNaeIdCaRNaeId3Mg8Sa8SMMa8RNaeIdba8PNaeIdxa8RNaeIdKMg8Sa8SMMa8PNaeId8KMMM:lNh80JbbbbJbbjZaqaQaYcdtfydbc8S2fgeIdyg8S:va8SJbbbb9BEaeIdwaaaKcx2fgHIdwg8VNaeIdzaHIdbg8WNaeIdaMg8Sa8SMMa8VNaeIdlaHIdlg8UNaeIdCa8VNaeId3Mg8Sa8SMMa8UNaeIdba8WNaeIdxa8UNaeIdKMg8Sa8SMMa8WNaeId8KMMM:lNh8YaAcwfh3aAclfhwdna8JTmbavaYc8S2fgOIdwa8VNaOIdza8WNaOIdaMg8Sa8SMMa8VNaOIdla8UNaOIdCa8VNaOId3Mg8Sa8SMMa8UNaOIdba8WNaOIdxa8UNaOIdKMg8Sa8SMMa8WNaOId8KMMMh8SayaKa8J2cdtfhHaraYa8J2cltfheaOIdyh8Xa8JhOinaHIdbgIaIa8XNaecxfIdba8VaecwfIdbNa8WaeIdbNa8UaeclfIdbNMMMgIaIM:tNa8SMh8SaHclfhHaeczfheaOcufgOmbkavaLc8S2fgOIdwaRNaOIdza8PNaOIdaMgIaIMMaRNaOIdla8RNaOIdCaRNaOId3MgIaIMMa8RNaOIdba8PNaOIdxa8RNaOIdKMgIaIMMa8PNaOId8KMMMhIaya8Fa8J2cdtfhHaraLa8J2cltfheaOIdyh8Wa8JhOinaHIdbg8Va8Va8WNaecxfIdbaRaecwfIdbNa8PaeIdbNa8RaeclfIdbNMMMg8Va8VM:tNaIMhIaHclfhHaeczfheaOcufgOmbka80aI:lMh80a8Ya8S:lMh8YkawaKa8Fa8Ya809FgeEBdbaAaYaLaeEBdba3a8Ya80aeEUdbaicefgiaE9hmbkasc;Wbfcbcj;qbz:ljjjb8Aa6heaEhHinasc;WbfaeydbcA4cF8FGgOcFAaOcFA6EcdtfgOaOydbcefBdbaecxfheaHcufgHmbkcbhecbhHinasc;WbfaefgOydbhAaOaHBdbaAaHfhHaeclfgecj;qb9hmbkcbhea6hHinasc;WbfaHydbcA4cF8FGgOcFAaOcFA6EcdtfgOaOydbgOcefBdbaSaOcdtfaeBdbaHcxfhHaEaecefge9hmbkadak9RgOci9Uh9kdnalTmbcbhea8MhHinaHaeBdbaHclfhHalaecefge9hmbkkcbh0a9hcbalz:ljjjbh9maOcO9Uh9na9kce4h9oasydwh9pcbh8KcbhwdninaDaSawcdtfydbcx2fg3Idwg8Sac9Emea8Ka9k9pmeJFFuuhIdna9oaE9pmbaDaSa9ocdtfydbcx2fIdwJbb;aZNhIkdna8SaI9ETmba8San9ETmba8Ka9n0mdkdna9maQa3ydlgicdtg9qfydbgAfg9rRbba9maQa3ydbgLcdtg9sfydbgHfg9tRbbVmbaXaLfRbbh9udna9eaHcdtfgeclfydbgOaeydbgeSmbaOae9RhKa9paecitfheaaaAcx2fg8Lcwfh5a8Lclfh9vaaaHcx2fg8Acwfh9wa8Aclfh9xcbhHceh8Fdnindna8MaeydbcdtfydbgOaASmba8MaeclfydbcdtfydbgYaASmbaOaYSmbaaaYcx2fgYIdbaaaOcx2fgOIdbg8V:tg8Sa9xIdbaOIdlgR:tg8WNa8AIdba8V:tg8UaYIdlaR:tgIN:tg8Pa8Sa9vIdbaR:tg8XNa8LIdba8V:tg80aIN:tgRNaIa9wIdbaOIdwg8R:tg8YNa8WaYIdwa8R:tg8VN:tg8WaIa5Idba8R:tg81Na8Xa8VN:tgINa8Va8UNa8Ya8SN:tg8Ra8Va80Na81a8SN:tg8SNMMa8Pa8PNa8Wa8WNa8Ra8RNMMaRaRNaIaINa8Sa8SNMMN:rJbbj8:N9FmdkaecwfheaHcefgHaK6h8FaKaH9hmbkka8FceGTmba9ocefh9oxeka3cwfhHdndndndna9uc9:fPdebdkaLheina8MaecdtgefaiBdba8EaefydbgeaL9hmbxikkdnagahaha9sfydbaiSEa8Ea9sfydbgLcdtfydbgecu9hmba8Ea9qfydbheka8Ma9sfaiBdbaehika8MaLcdtfaiBdbka9tce86bba9rce86bbaHIdbg8Sanana8S9DEhna0cefh0cecda9uceSEa8Kfh8KkawcefgwaE9hmbkka0TmddnalTmbcbhKcbhiindna8MaicdtgefydbgOaiSmbaQaOcdtfydbh8FdnaiaQaefydb9hg3mbaqa8Fc8S2fgeaqaic8S2fgHIdbaeIdbMUdbaeaHIdlaeIdlMUdlaeaHIdwaeIdwMUdwaeaHIdxaeIdxMUdxaeaHIdzaeIdzMUdzaeaHIdCaeIdCMUdCaeaHIdKaeIdKMUdKaeaHId3aeId3MUd3aeaHIdaaeIdaMUdaaeaHId8KaeId8KMUd8KaeaHIdyaeIdyMUdyka8JTmbavaOc8S2fgeavaic8S2gwfgHIdbaeIdbMUdbaeaHIdlaeIdlMUdlaeaHIdwaeIdwMUdwaeaHIdxaeIdxMUdxaeaHIdzaeIdzMUdzaeaHIdCaeIdCMUdCaeaHIdKaeIdKMUdKaeaHId3aeId3MUd3aeaHIdaaeIdaMUdaaeaHId8KaeId8KMUd8KaeaHIdyaeIdyMUdya9iaO2hLarhHa8JhAinaHaLfgeaHaKfgOIdbaeIdbMUdbaeclfgYaOclfIdbaYIdbMUdbaecwfgYaOcwfIdbaYIdbMUdbaecxfgeaOcxfIdbaeIdbMUdbaHczfhHaAcufgAmbka3mbJbbbbJbbjZaqawfgeIdyg8S:va8SJbbbb9BEaeIdwaaa8Fcx2fgHIdwg8SNaeIdzaHIdbgINaeIdaMg8Va8VMMa8SNaeIdlaHIdlg8VNaeIdCa8SNaeId3Mg8Sa8SMMa8VNaeIdbaINaeIdxa8VNaeIdKMg8Sa8SMMaINaeId8KMMM:lNg8SaBaBa8S9DEhBkaKa9ifhKaicefgial9hmbkcbhHahheindnaeydbgOcuSmbdnaHa8MaOcdtgAfydbgO9hmbcuhOahaAfydbgAcuSmba8MaAcdtfydbhOkaeaOBdbkaeclfhealaHcefgH9hmbkcbhHagheindnaeydbgOcuSmbdnaHa8MaOcdtgAfydbgO9hmbcuhOagaAfydbgAcuSmba8MaAcdtfydbhOkaeaOBdbkaeclfhealaHcefgH9hmbkkaBana8JEhBcbhYabhecbhKindna8MaeydbcdtfydbgHa8MaeclfydbcdtfydbgOSmbaHa8MaecwfydbcdtfydbgASmbaOaASmbabaYcdtfgLaHBdbaLcwfaABdbaLclfaOBdbaYcifhYkaecxfheaKcifgKad6mbkdndna9cTmbaYak9nmba8ZaB9FTmbcbhdabhecbhHindnaoaCaeydbgOcdtfydbcdtfIdbaB9ETmbabadcdtfgAaOBdbaAclfaeclfydbBdbaAcwfaecwfydbBdbadcifhdkaecxfheaHcifgHaY6mbkJFFuuh8ZaJTmeaoheaJhHJFFuuh8SinaeIdbgIa8Sa8SaI9EEg8Va8SaIaB9EgOEh8Sa8Va8ZaOEh8ZaeclfheaHcufgHmbxdkkaYhdkadak0mbxdkkasclfabadalaQz:cjjjbkdndnadak0mbadhOxekdna9cmbadhOxekdna8Zac9FmbadhOxekina8ZJbb;aZNg8Saca8Sac9DEh8VJbbbbh8SdnaJTmbaoheaJhHinaeIdbgIa8SaIa8V9FEa8SaIa8S9EEh8SaeclfheaHcufgHmbkkcbhOabhecbhHindnaoaCaeydbgAcdtfydbcdtfIdba8V9ETmbabaOcdtfgYaABdbaYclfaeclfydbBdbaYcwfaecwfydbBdbaOcifhOkaecxfheaHcifgHad6mbkJFFuuh8ZdnaJTmbaoheaJhHJFFuuhIinaeIdbgRaIaIaR9EEg8PaIaRa8V9EgAEhIa8Pa8ZaAEh8ZaeclfheaHcufgHmbkkdnaOad9hmbadhOxdka8Sanana8S9DEhnaOak9nmeaOhda8Zac9FmbkkdnamcjjjjlGTmbazmbaOTmbcbhQabheinaXaeydbgAfRbbc3thKaecwfgLydbhHdndnahaAcdtg8FfydbaeclfgiydbgCSmbcbhYagaCcdtfydbaA9hmekcjjjj94hYkaeaKaYVaAVBdbaXaCfRbbc3thKdndnahaCcdtfydbaHSmbcbhYagaHcdtfydbaC9hmekcjjjj94hYkaiaKaYVaCVBdbaXaHfRbbc3thYdndnahaHcdtfydbaASmbcbhCaga8FfydbaH9hmekcjjjj94hCkaLaYaCVaHVBdbaecxfheaQcifgQaO6mbkkdnazTmbaOTmbaOheinabazabydbcdtfydbBdbabclfhbaecufgembkkdnaPTmbaPa83an:rNUdbkasyd2gecdtascxffc98fhHdninaeTmeaHydbcbyd;O1jjbH:bjjjbbaHc98fhHaecufhexbkkasc;W;qbf8KjjjjbaOk;Yieouabydlhvabydbclfcbaicdtz:ljjjbhoadci9UhrdnadTmbdnalTmbaehwadhDinaoalawydbcdtfydbcdtfgqaqydbcefBdbawclfhwaDcufgDmbxdkkaehwadhDinaoawydbcdtfgqaqydbcefBdbawclfhwaDcufgDmbkkdnaiTmbcbhDaohwinawydbhqawaDBdbawclfhwaqaDfhDaicufgimbkkdnadci6mbinaecwfydbhwaeclfydbhDaeydbhidnalTmbalawcdtfydbhwalaDcdtfydbhDalaicdtfydbhikavaoaicdtfgqydbcitfaDBdbavaqydbcitfawBdlaqaqydbcefBdbavaoaDcdtfgqydbcitfawBdbavaqydbcitfaiBdlaqaqydbcefBdbavaoawcdtfgwydbcitfaiBdbavawydbcitfaDBdlawawydbcefBdbaecxfhearcufgrmbkkabydbcbBdbk;Podvuv998Jjjjjbca9RgvcFFF;7rBd3av9cFFF;7;3FF:;Fb83dCavcFFF97Bdzav9cFFF;7FFF:;u83dwdnadTmbaicd4hodnabmbdnalTmbcbhrinaealarcdtfydbao2cdtfhwcbhiinavcCfaifgDawaifIdbgqaDIdbgkakaq9EEUdbavcwfaifgDaqaDIdbgkakaq9DEUdbaiclfgicx9hmbkarcefgrad9hmbxikkaocdthrcbhwincbhiinavcCfaifgDaeaifIdbgqaDIdbgkakaq9EEUdbavcwfaifgDaqaDIdbgkakaq9DEUdbaiclfgicx9hmbkaearfheawcefgwad9hmbxdkkdnalTmbcbhrinabarcx2fgiaealarcdtfydbao2cdtfgwIdbUdbaiawIdlUdlaiawIdwUdwcbhiinavcCfaifgDawaifIdbgqaDIdbgkakaq9EEUdbavcwfaifgDaqaDIdbgkakaq9DEUdbaiclfgicx9hmbkarcefgrad9hmbxdkkaocdthlcbhraehwinabarcx2fgiaearao2cdtfgDIdbUdbaiaDIdlUdlaiaDIdwUdwcbhiinavcCfaifgDawaifIdbgqaDIdbgkakaq9EEUdbavcwfaifgDaqaDIdbgkakaq9DEUdbaiclfgicx9hmbkawalfhwarcefgrad9hmbkkJbbbbavIdwavIdCgk:tgqaqJbbbb9DEgqavIdxavIdKgx:tgmamaq9DEgqavIdzavId3gm:tgPaPaq9DEhPdnabTmbadTmbJbbbbJbbjZaP:vaPJbbbb9BEhqinabaqabIdbak:tNUdbabclfgvaqavIdbax:tNUdbabcwfgvaqavIdbam:tNUdbabcxfhbadcufgdmbkkaPk8MbabaeadaialavcbcbcbcbcbaoarawaDz:bjjjbk8MbabaeadaialavaoarawaDaqakaxamaPz:bjjjbk:nCoDud99rue99lul998Jjjjjbc;Wb9Rgw8KjjjjbdndnarmbcbhDxekawcxfcbc;Kbz:ljjjb8Aawcuadcx2adc;v:Q;v:Qe0Ecbyd;S1jjbHjjjjbbgqBdxawceBd2aqaeadaicbz:djjjb8AawcuadcdtadcFFFFi0Egkcbyd;S1jjbHjjjjbbgxBdzawcdBd2adcd4adfhmceheinaegicetheaiam6mbkcbhPawcuaicdtgsaicFFFFi0Ecbyd;S1jjbHjjjjbbgzBdCawciBd2dndnar:ZgH:rJbbbZMgO:lJbbb9p9DTmbaO:Ohexekcjjjj94hekaicufhAc:bwhmcbhCadhXcbhQinaChLaeamgKcufaeaK9iEaPgDcefaeaD9kEhYdndnadTmbaYcuf:YhOaqhiaxheadhmindndnaiIdbaONJbbbZMg8A:lJbbb9p9DTmba8A:OhCxekcjjjj94hCkaCcCthCdndnaiclfIdbaONJbbbZMg8A:lJbbb9p9DTmba8A:OhExekcjjjj94hEkaEcqtaCVhCdndnaicwfIdbaONJbbbZMg8A:lJbbb9p9DTmba8A:OhExekcjjjj94hEkaeaCaEVBdbaicxfhiaeclfheamcufgmmbkazcFeasz:ljjjbh3cbh5cbh8Eindna3axa8EcdtfydbgCcm4aC7c:v;t;h;Ev2gics4ai7aAGgmcdtfgEydbgecuSmbaeaCSmbcehiina3amaifaAGgmcdtfgEydbgecuSmeaicefhiaeaC9hmbkkaEaCBdba5aecuSfh5a8Ecefg8Ead9hmbxdkkazcFeasz:ljjjb8Acbh5kaDaYa5ar0giEhPaLa5aiEhCdna5arSmbaYaKaiEgmaP9Rcd9imbdndnaQcl0mbdnaX:ZgOaL:Zg8A:taY:Yg8FaD:Y:tgaa8FaK:Y:tgha5:ZggaH:tNNNaOaH:tahNa8Aag:tNa8AaH:taaNagaO:tNM:va8FMJbbbZMgO:lJbbb9p9DTmbaO:Ohexdkcjjjj94hexekaPamfcd9Theka5aXaiEhXaQcefgQcs9hmekkdndnaCmbcihicbhDxekcbhiawakcbyd;S1jjbHjjjjbbg8EBdKawclBd2aPcuf:Yh8AdndnadTmbaqhiaxheadhmindndnaiIdba8ANJbbbZMgO:lJbbb9p9DTmbaO:OhCxekcjjjj94hCkaCcCthCdndnaiclfIdba8ANJbbbZMgO:lJbbb9p9DTmbaO:OhExekcjjjj94hEkaEcqtaCVhCdndnaicwfIdba8ANJbbbZMgO:lJbbb9p9DTmbaO:OhExekcjjjj94hEkaeaCaEVBdbaicxfhiaeclfheamcufgmmbkazcFeasz:ljjjbh3cbhDcbh5inaxa5cdtgYfydbgCcm4aC7c:v;t;h;Ev2gics4ai7hecbhidndnina3aeaAGgmcdtfgEydbgecuSmednaxaecdtgEfydbaCSmbaicefgiamfheaiaA9nmekka8EaEfydbhixekaEa5BdbaDhiaDcefhDka8EaYfaiBdba5cefg5ad9hmbkcuaDc32giaDc;j:KM;jb0EhexekazcFeasz:ljjjb8AcbhDcbhekawaecbyd;S1jjbHjjjjbbgeBd3awcvBd2aecbaiz:ljjjbhEavcd4hxdnadTmbdnalTmbaxcdth3a8EhCalheaqhmadhAinaEaCydbc32fgiamIdbaiIdbMUdbaiamclfIdbaiIdlMUdlaiamcwfIdbaiIdwMUdwaiaeIdbaiIdxMUdxaiaeclfIdbaiIdzMUdzaiaecwfIdbaiIdCMUdCaiaiIdKJbbjZMUdKaCclfhCaea3fheamcxfhmaAcufgAmbxdkka8EhmaqheadhCinaEamydbc32fgiaeIdbaiIdbMUdbaiaeclfIdbaiIdlMUdlaiaecwfIdbaiIdwMUdwaiaiIdxJbbbbMUdxaiaiIdzJbbbbMUdzaiaiIdCJbbbbMUdCaiaiIdKJbbjZMUdKamclfhmaecxfheaCcufgCmbkkdnaDTmbaEhiaDheinaiaiIdbJbbbbJbbjZaicKfIdbgO:vaOJbbbb9BEgONUdbaiclfgmaOamIdbNUdbaicwfgmaOamIdbNUdbaicxfgmaOamIdbNUdbaiczfgmaOamIdbNUdbaicCfgmaOamIdbNUdbaic3fhiaecufgembkkcbhCawcuaDcdtgYaDcFFFFi0Egicbyd;S1jjbHjjjjbbgeBdaawcoBd2awaicbyd;S1jjbHjjjjbbg3Bd8KaecFeaYz:ljjjbh5dnadTmbJbbjZJbbjZa8A:vaPceSEaoNgOaONh8Aaxcdthxalheina8Aaec;C1jjbalEgmIdwaEa8EydbgAc32fgiIdC:tgOaONamIdbaiIdx:tgOaONamIdlaiIdz:tgOaONMMNaqcwfIdbaiIdw:tgOaONaqIdbaiIdb:tgOaONaqclfIdbaiIdl:tgOaONMMMhOdndna5aAcdtgifgmydbcuSmba3aifIdbaO9ETmekamaCBdba3aifaOUdbka8Eclfh8EaeaxfheaqcxfhqadaCcefgC9hmbkkaba5aYz:kjjjb8AcrhikaicdthiinaiTmeaic98fgiawcxffydbcbyd;O1jjbH:bjjjbbxbkkawc;Wbf8KjjjjbaDk:Odieui99iu8Jjjjjbca9RgicFFF;7rBd3ai9cFFF;7;3FF:;Fb83dCaicFFF97Bdzai9cFFF;7FFF:;u83dwdndnaembJbbjFhlJbbjFhvJbbjFhoxekadcd4cdthrcbhwincbhdinaicCfadfgDabadfIdbglaDIdbgvaval9EEUdbaicwfadfgDalaDIdbgvaval9DEUdbadclfgdcx9hmbkabarfhbawcefgwae9hmbkaiIdzaiId3:thoaiIdxaiIdK:thvaiIdwaiIdC:thlkJbbbbalalJbbbb9DEglavaval9DEglaoaoal9DEk9DeeuabcFeaicdtz:ljjjbhlcbhbdnadTmbindnalaeydbcdtfgiydbcu9hmbaiabBdbabcefhbkaeclfheadcufgdmbkkabk9teiucbcbyd;W1jjbgeabcifc98GfgbBd;W1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;LeeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiclfaeclfydbBdbaicwfaecwfydbBdbaicxfaecxfydbBdbaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk;aeedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdbaicxfalBdbaicwfalBdbaiclfalBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabk9teiucbcbyd;W1jjbgeabcrfc94GfgbBd;W1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik9:eiuZbhedndncbyd;W1jjbgdaecztgi9nmbcuheadai9RcFFifcz4nbcuSmekadhekcbabae9Rcifc98Gcbyd;W1jjbfgdBd;W1jjbdnadZbcztge9nmbadae9RcFFifcz4nb8Akk6eiucbhidnadTmbdninabRbbglaeRbbgv9hmeaecefheabcefhbadcufgdmbxdkkalav9Rhikaikk:bedbcjwk9Oeeebeebebbeeebebbbbbebebbbbbbbbbebbbdbbbbbbbebbbebbbdbbbbbbbbbbbeeeeebebbebbebebbbeebbbbbbbbbbbbbbbbbbbbbc;OwkxebbbdbbbjNbb",Z=new Uint8Array([32,0,65,2,1,106,34,33,3,128,11,4,13,64,6,253,10,7,15,116,127,5,8,12,40,16,19,54,20,9,27,255,113,17,42,67,24,23,146,148,18,14,22,45,70,69,56,114,101,21,25,63,75,136,108,28,118,29,73,115]);if(typeof WebAssembly!=="object")return{supported:!1};var Y,$=WebAssembly.instantiate(W(J),{}).then(function(U){Y=U.instance,Y.exports.__wasm_call_ctors()});function W(U){var L=new Uint8Array(U.length);for(var w=0;w<U.length;++w){var O=U.charCodeAt(w);L[w]=O>96?O-97:O>64?O-39:O+4}var R=0;for(var w=0;w<U.length;++w)L[R++]=L[w]<60?Z[L[w]]:(L[w]-60)*64+L[++w];return L.buffer.slice(0,R)}function Q(U){if(!U)throw new Error("Assertion failed")}function X(U){return new Uint8Array(U.buffer,U.byteOffset,U.byteLength)}function K(U,L,w){var O=Y.exports.sbrk,R=O(L.length*4),N=O(w*4),P=new Uint8Array(Y.exports.memory.buffer),D=X(L);P.set(D,R);var j=U(N,R,L.length,w);P=new Uint8Array(Y.exports.memory.buffer);var C=new Uint32Array(w);new Uint8Array(C.buffer).set(P.subarray(N,N+w*4)),D.set(P.subarray(R,R+L.length*4)),O(R-O(0));for(var k=0;k<L.length;++k)L[k]=C[L[k]];return[C,j]}function G(U){var L=0;for(var w=0;w<U.length;++w){var O=U[w];L=L<O?O:L}return L}function z(U,L,w,O,R,N,P,D,j){var C=Y.exports.sbrk,k=C(4),I=C(w*4),A=C(R*N),v=C(w*4),x=new Uint8Array(Y.exports.memory.buffer);x.set(X(O),A),x.set(X(L),v);var u=U(I,v,w,A,R,N,P,D,j,k);x=new Uint8Array(Y.exports.memory.buffer);var h=new Uint32Array(u);X(h).set(x.subarray(I,I+u*4));var d=new Float32Array(1);return X(d).set(x.subarray(k,k+4)),C(k-C(0)),[h,d[0]]}function F(U,L,w,O,R,N,P,D,j,C,k,I,A){var v=Y.exports.sbrk,x=v(4),u=v(w*4),h=v(R*N),d=v(R*D),W0=v(j.length*4),U0=v(w*4),B0=C?v(R):0,y0=new Uint8Array(Y.exports.memory.buffer);if(y0.set(X(O),h),y0.set(X(P),d),y0.set(X(j),W0),y0.set(X(L),U0),C)y0.set(X(C),B0);var B1=U(u,U0,w,h,R,N,d,D,W0,j.length,B0,k,I,A,x);y0=new Uint8Array(Y.exports.memory.buffer);var L8=new Uint32Array(B1);X(L8).set(y0.subarray(u,u+B1*4));var B8=new Float32Array(1);return X(B8).set(y0.subarray(x,x+4)),v(x-v(0)),[L8,B8[0]]}function V(U,L,w,O){var R=Y.exports.sbrk,N=R(w*O),P=new Uint8Array(Y.exports.memory.buffer);P.set(X(L),N);var D=U(N,w,O);return R(N-R(0)),D}function H(U,L,w,O,R,N,P,D){var j=Y.exports.sbrk,C=j(D*4),k=j(w*O),I=j(w*N),A=new Uint8Array(Y.exports.memory.buffer);if(A.set(X(L),k),R)A.set(X(R),I);var v=U(C,k,w,O,I,N,P,D);A=new Uint8Array(Y.exports.memory.buffer);var x=new Uint32Array(v);return X(x).set(A.subarray(C,C+v*4)),j(C-j(0)),x}var q={LockBorder:1,Sparse:2,ErrorAbsolute:4,Prune:8,_InternalDebug:1073741824};return{ready:$,supported:!0,useExperimentalFeatures:!1,compactMesh:function(U){Q(U instanceof Uint32Array||U instanceof Int32Array||U instanceof Uint16Array||U instanceof Int16Array),Q(U.length%3==0);var L=U.BYTES_PER_ELEMENT==4?U:new Uint32Array(U);return K(Y.exports.meshopt_optimizeVertexFetchRemap,L,G(U)+1)},simplify:function(U,L,w,O,R,N){Q(U instanceof Uint32Array||U instanceof Int32Array||U instanceof Uint16Array||U instanceof Int16Array),Q(U.length%3==0),Q(L instanceof Float32Array),Q(L.length%w==0),Q(w>=3),Q(O>=0&&O<=U.length),Q(O%3==0),Q(R>=0);var P=0;for(var D=0;D<(N?N.length:0);++D)Q(N[D]in q),Q(this.useExperimentalFeatures||N[D]!="Prune"),P|=q[N[D]];var j=U.BYTES_PER_ELEMENT==4?U:new Uint32Array(U),C=z(Y.exports.meshopt_simplify,j,U.length,L,L.length/w,w*4,O,R,P);return C[0]=U instanceof Uint32Array?C[0]:new U.constructor(C[0]),C},simplifyWithAttributes:function(U,L,w,O,R,N,P,D,j,C){Q(this.useExperimentalFeatures),Q(U instanceof Uint32Array||U instanceof Int32Array||U instanceof Uint16Array||U instanceof Int16Array),Q(U.length%3==0),Q(L instanceof Float32Array),Q(L.length%w==0),Q(w>=3),Q(O instanceof Float32Array),Q(O.length%R==0),Q(R>=0),Q(P==null||P instanceof Uint8Array),Q(P==null||P.length==L.length/w),Q(D>=0&&D<=U.length),Q(D%3==0),Q(j>=0),Q(Array.isArray(N)),Q(R>=N.length),Q(N.length<=32);for(var k=0;k<N.length;++k)Q(N[k]>=0);var I=0;for(var k=0;k<(C?C.length:0);++k)Q(C[k]in q),I|=q[C[k]];var A=U.BYTES_PER_ELEMENT==4?U:new Uint32Array(U),v=F(Y.exports.meshopt_simplifyWithAttributes,A,U.length,L,L.length/w,w*4,O,R*4,new Float32Array(N),P?new Uint8Array(P):null,D,j,I);return v[0]=U instanceof Uint32Array?v[0]:new U.constructor(v[0]),v},getScale:function(U,L){return Q(U instanceof Float32Array),Q(U.length%L==0),Q(L>=3),V(Y.exports.meshopt_simplifyScale,U,U.length/L,L*4)},simplifyPoints:function(U,L,w,O,R,N){if(Q(this.useExperimentalFeatures),Q(U instanceof Float32Array),Q(U.length%L==0),Q(L>=3),Q(w>=0&&w<=U.length/L),O)return Q(O instanceof Float32Array),Q(O.length%R==0),Q(R>=3),Q(U.length/L==O.length/R),H(Y.exports.meshopt_simplifyPoints,U,U.length/L,L*4,O,R*4,N,w);else return H(Y.exports.meshopt_simplifyPoints,U,U.length/L,L*4,void 0,0,0,w)}}}();var wX6=function(){var J="b9H79Tebbbefx9Geueu9Geub9Gbb9Giuuueu9Gkuuuuuuuuuu99eu9Gvuuuuueu9Gkuuuuuuuuu9999eu9Gruuuuuuub9Gkuuuuuuuuuuueu9Gouuuuuub9Giuuub9GluuuubiOHdilvorwDqrkbiibeilve9Weiiviebeoweuec:q:Odkr:Yewo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9I919P29K9nW79O2Wt79c9V919U9KbeX9TW79O9V9Wt9F9I919P29K9nW79O2Wt7bd39TW79O9V9Wt9F9J9V9T9W91tWJ2917tWV9c9V919U9K7br39TW79O9V9Wt9F9J9V9T9W91tW9nW79O2Wt9c9V919U9K7bDL9TW79O9V9Wt9F9V9Wt9P9T9P96W9nW79O2Wtbql79IV9RbkDwebcekdsPq;L9kHdbkIbabaec9:fgefcufae9Ugeabci9Uadfcufad9Ugbaeab0Ek:oAlPue99eux998Jjjjjbc:We9Rgk8Kjjjjbakc;mbfcbc;Kbz:njjjb8AakcuaocdtgxaocFFFFi0Egmcbyd:e1jjbHjjjjbbgPBd9makceBd:SeakaPBdnakamcbyd:e1jjbHjjjjbbgsBd9qakcdBd:SeakasBd9eakcualcdtalcFFFFi0Ecbyd:e1jjbHjjjjbbgzBd9uakazBd9iakciBd:SeaPcbaxz:njjjbhHalci9UhOdnalTmbaihPalhAinaHaPydbcdtfgCaCydbcefBdbaPclfhPaAcufgAmbkkdnaoTmbcbhPashAaHhCaohXinaAaPBdbaAclfhAaCydbaPfhPaCclfhCaXcufgXmbkkdnalci6mbcbhPaihAinaAcwfydbhCaAclfydbhXasaAydbcdtfgQaQydbgQcefBdbazaQcdtfaPBdbasaXcdtfgXaXydbgXcefBdbazaXcdtfaPBdbasaCcdtfgCaCydbgCcefBdbazaCcdtfaPBdbaAcxfhAaOaPcefgP9hmbkkdnaoTmbaHhAashPaohCinaPaPydbaAydb9RBdbaAclfhAaPclfhPaCcufgCmbkkakamcbyd:e1jjbHjjjjbbgPBd9yakclBd:SeaPaHaxz:mjjjbhmakaOcbyd:e1jjbHjjjjbbgPBd9CakcvBd:SeaPcbaOz:njjjbhLakcuaOcK2alcjjjjd0Ecbyd:e1jjbHjjjjbbgKBd9GakcoBd:SeJbbbbhYdnalci6g8Ambarcd4hxaihAaKhPaOhrJbbbbhEinavaAclfydbax2cdtfgCIdlh3avaAydbax2cdtfgXIdlhYavaAcwfydbax2cdtfgQIdlh5aCIdwh8EaXIdwh8FaQIdwhaaPaCIdbghaXIdbggMaQIdbg8JMJbbnn:vUdbaPclfaXIdlaCIdlMaQIdlMJbbnn:vUdbaQIdwh8KaCIdwh8LaXIdwh8MaPcxfa3aY:tg3aaa8F:tgaNa5aY:tg5a8Ea8F:tg8EN:tgYJbbbbJbbjZahag:tgha5Na8Jag:tgga3N:tg8Fa8FNaYaYNa8EagNaaahN:tgYaYNMM:rgg:vagJbbbb9BEg3NUdbaPczfaYa3NUdbaPcCfa8Fa3NUdbaPcwfa8Ka8Ma8LMMJbbnn:vUdbaEagMhEaAcxfhAaPcKfhParcufgrmbkaEaO:Z:vJbbbZNhYkakcuaOcdtalcFFFF970Ecbyd:e1jjbHjjjjbbgCBd9KakcrBd:SeaYaD:ZN:rhYdna8AmbcbhPaChAinaAaPBdbaAclfhAaOaPcefgP9hmbkkaYJbbbZNh8MakcuaOcltalcFFFFd0Ecbyd:e1jjbHjjjjbbg8ABd9OakcwBd:Secba8AaKaCaOz:djjjb8Aakaocbyd:e1jjbHjjjjbbgPBd2aPcFeaoz:njjjbhrakc8Wfcwf9cb83ibak9cb83i8WcbhPJbbbbhEJbbbbh5Jbbbbh8EJbbbbhYJbbbbh8FJbbbbhgcbhlinJbbbbh3dnaPTmbJbbjZaP:Z:vh3kaka8Ea3NgaUdaaka5a3NghUd3akaEa3Ng8JUdKJbbbbh3dnagagNaYaYNa8Fa8FNMMg8KJbbbb9BmbJbbjZa8K:r:vh3kakaga3NUd8Saka8Fa3NUdyakaYa3NUd8Kdndndnakyd8WgQakydUgAakcKfaeaiakc;abfaKamara8Maqz:ejjjbgCcuSmbdnaPaD9pmbaAaraiaCcx2fgXydbfRbbcFeSfaraXclfydbfRbbcFeSfaraXcwfydbfRbbcFeSfaw9nmdkaQaAcbaeaiakc;abfaKamara8MJbbbbz:ejjjbgCcu9hmekakaaUdCakahUdzaka8JUdxakcuBdwakcFFF;7rBdla8AcbaKaLakcxfakcwfakclfz:fjjjbakydwgCcuSmekdnakc8WfaiaCcx2fgOydbgPaOclfydbgAaOcwfydbgXarabaeadalawaDz:gjjjbTmbalcefhlJbbbbhEJbbbbh5Jbbbbh8EJbbbbhYJbbbbh8FJbbbbhgkamaPcdtfgPaPydbcufBdbamaAcdtfgPaPydbcufBdbamaXcdtfgPaPydbcufBdbcbhXinazasaOaXcdtfydbcdtgAfydbcdtfgxhPaHaAfgvydbgQhAdnaQTmbdninaPydbaCSmeaPclfhPaAcufgATmdxbkkaPaxaQcdtfc98fydbBdbavavydbcufBdbkaXcefgXci9hmbkaKaCcK2fgPIdbh3aPIdlhaaPIdwhhaPIdxh8JaPIdzh8KaPIdCh8LaLaCfce86bbaga8LMhga8Fa8KMh8FaYa8JMhYa8EahMh8Ea5aaMh5aEa3MhEakyd88hPxekkdnaPTmbdnakyd80gAaPci2fgCciGTmbadaCfcbaPaAcu7fciGcefz:njjjb8AkabalcltfgPak8Pi8W83dbaPcwfakc8Wfcwf8Pib83dbalcefhlkcahPdninaPc98Smeakc;mbfaPfydbcbydj1jjbH:bjjjbbaPc98fhPxbkkakc:Wef8Kjjjjbalk;3vivuv99lu8Jjjjjbca9Rgv8Kjjjjbdndnalcw0mbaiydbhoaeabcitfgralcdtcufBdlaraoBdbdnalcd6mbaiclfhoalcufhwarcxfhrinaoydbhDarcuBdbarc98faDBdbarcwfhraoclfhoawcufgwmbkkalabfhrxekcbhDavczfcwfcbBdbav9cb83izavcwfcbBdbav9cb83ibJbbjZhqJbbjZhkinadaiaDcdtfydbcK2fhwcbhrinavczfarfgoawarfIdbgxaoIdbgm:tgPakNamMgmUdbavarfgoaPaxam:tNaoIdbMUdbarclfgrcx9hmbkJbbjZaqJbbjZMgq:vhkaDcefgDal9hmbkcbhoadcbcecdavIdlgxavIdwgm9GEgravIdbgPam9GEaraPax9GEgscdtgrfhzavczfarfIdbhxaihralhwinaiaocdtfgDydbhHaDarydbgOBdbaraHBdbarclfhraoazaOcK2fIdbax9Dfhoawcufgwmbkaeabcitfhrdndnaocv6mbaoalc98f6mekaraiydbBdbaralcdtcufBdlaiclfhoalcufhwarcxfhrinaoydbhDarcuBdbarc98faDBdbarcwfhraoclfhoawcufgwmbkalabfhrxekaraxUdbaeabcitfgrarydlc98GasVBdlabcefaeadaiaoz:djjjbhwararydlciGawabcu7fcdtVBdlawaeadaiaocdtfalao9Rz:djjjbhrkavcaf8Kjjjjbark;Bloeue99vue99Due99dndnaembcuhkxekJbbjZaq:thxaiabcdtfhmavydbhPavydlhsavydwhzcbhHJFFuuhOcvhbcuhkindnaPamaHcdtfydbcdtgvfydbgATmbazasavfydbcdtfhiindndnawalaiydbgCcx2fgvclfydbgXfRbbcFeSawavydbgQfRbbcFeSfawavcwfydbgLfRbbcFeSfgKmbcbhvxekcehvaraQcdtfydbgYceSmbcehvaraXcdtfydbg8AceSmbcehvaraLcdtfydbgEceSmbdna8AcdSaYcdSfaEcdSfcd6mbaKcefhvxekaKcdfhvkdnavab9kmbdndnadTmbaoaCcK2fgQIdwadIdw:tg3a3NaQIdbadIdb:tg3a3NaQIdladIdl:tg3a3NMM:raD:vaxNJbbjZMJ9VO:d86JbbjZaQIdCadIdCNaQIdxadIdxNaQIdzadIdzNMMaqN:tg3a3J9VO:d869DENh3xekaraQcdtfydbaraXcdtfydbfaraLcdtfydbfc99f:Zh3kaCakavab6a3aO9DVgQEhkavabaQEhba3aOaQEhOkaiclfhiaAcufgAmbkkaHcefgHae9hmbkkakk;bddlue99dndndnabaecitfgrydlgwciGgDci9hmbarclfhqxekinabcbawcd4gwalaDcdtfIdbabaecitfIdb:tgkJbbbb9FEgDaecefgefadaialavaoz:fjjjbak:laoIdb9FTmdabaDaw7aefgecitfgrydlgwciGgDci9hmbkarclfhqkabaecitfhecuhbindnaiaeydbgDfRbbmbadaDcK2fgrIdwalIdw:tgkakNarIdbalIdb:tgkakNarIdlalIdl:tgkakNMM:rgkaoIdb9DTmbaoakUdbavaDBdbaqydbhwkaecwfheabcefgbawcd46mbkkk;yleoudnaladfgkRbbcFeSalaefgxRbbgmcFeSfabydwgPfalaifgsRbbcFeSfaD0abydxaq9pVgzce9hmbavawcltfgmab8Pdb83dbamcwfabcwfgm8Pdb83dbdndnamydbmbcbhqxekcbhDaohminalamabydbcdtfydbfcFe86bbamclfhmaDcefgDabydwgq6mbkkdnabydxglci2gDabydlgmfgPciGTmbaraPfcbalamcu7fciGcefz:njjjb8Aabydxci2hDabydlhmabydwhqkab9cb83dwababydbaqfBdbabaDcifc98GamfBdlaxRbbhmcbhPkdnamcFeGcFe9hmbaxaP86bbababydwgmcefBdwaoabydbcdtfamcdtfaeBdbkdnakRbbcFe9hmbakabydw86bbababydwgmcefBdwaoabydbcdtfamcdtfadBdbkdnasRbbcFe9hmbasabydw86bbababydwgmcefBdwaoabydbcdtfamcdtfaiBdbkarabydlfabydxci2faxRbb86bbarabydlfabydxci2fcefakRbb86bbarabydlfabydxci2fcdfasRbb86bbababydxcefBdxazk;Ckovud99euv99eul998Jjjjjbc:G;ae9Rgo8KjjjjbdndnadTmbavcd4hrcbhwcbhDindnaiaeclfydbar2cdtfgvIdbaiaeydbar2cdtfgqIdbgk:tgxaiaecwfydbar2cdtfgmIdlaqIdlgP:tgsNamIdbak:tgzavIdlaP:tgPN:tgkakNaPamIdwaqIdwgH:tgONasavIdwaH:tgHN:tgPaPNaHazNaOaxN:tgxaxNMM:rgsJbbbb9Bmbaoc:G:qefawcx2fgAakas:vUdwaAaxas:vUdlaAaPas:vUdbaocafawc8K2fgAaq8Pdb83dbaAav8Pdb83dxaAam8Pdb83dKaAcwfaqcwfydbBdbaAcCfavcwfydbBdbaAcafamcwfydbBdbawcefhwkaecxfheaDcifgDad6mbkab9cb83dbabcyf9cb83dbabcaf9cb83dbabcKf9cb83dbabczf9cb83dbabcwf9cb83dbawTmeao9cb83iKao9cb83izaoczfaocafawci2z1jjjbaoIdKhCaoIdChXaoIdzhQao9cb83iwao9cb83ibaoaoc:G:qefawz1jjjbJbbjZhkaoIdwgPJbbbbJbbjZaPaPNaoIdbgPaPNaoIdlgsasNMM:rgx:vaxJbbbb9BEgzNhxasazNhsaPazNhzaoc:G:qefheawhvinaecwfIdbaxNaeIdbazNasaeclfIdbNMMgPakaPak9DEhkaecxfheavcufgvmbkabaCUdwabaXUdlabaQUdbabaoId3UdxdndnakJ;n;m;m899FmbJbbbbhPaoc:G:qefheaocafhvinaCavcwfIdb:taecwfIdbgHNaQavIdb:taeIdbgONaXavclfIdb:taeclfIdbgLNMMaxaHNazaONasaLNMM:vgHaPaHaP9EEhPavc8KfhvaecxfheawcufgwmbkabazUd3abc8KfaxUdbabcafasUdbabcKfaCaxaPN:tUdbabcCfaXasaPN:tUdbabaQazaPN:tUdzabJbbjZakakN:t:rgkUdydndnaxJbbj:;axJbbj:;9GEgPJbbjZaPJbbjZ9FEJbb;:9cNJbbbZJbbb:;axJbbbb9GEMgP:lJbbb9p9DTmbaP:Ohexekcjjjj94hekabc8Ufae86bbdndnasJbbj:;asJbbj:;9GEgPJbbjZaPJbbjZ9FEJbb;:9cNJbbbZJbbb:;asJbbbb9GEMgP:lJbbb9p9DTmbaP:Ohvxekcjjjj94hvkabcRfav86bbdndnazJbbj:;azJbbj:;9GEgPJbbjZaPJbbjZ9FEJbb;:9cNJbbbZJbbb:;azJbbbb9GEMgP:lJbbb9p9DTmbaP:Ohqxekcjjjj94hqkabaq86b8SdndnaecKtcK91:YJbb;:9c:vax:t:lavcKtcK91:YJbb;:9c:vas:t:laqcKtcK91:YJbb;:9c:vaz:t:lakMMMJbb;:9cNJbbjZMgk:lJbbb9p9DTmbak:Ohexekcjjjj94hekaecFbaecFb9iEhexekabcjjj;8iBdycFbhekabae86b8Vxekab9cb83dbabcyf9cb83dbabcaf9cb83dbabcKf9cb83dbabczf9cb83dbabcwf9cb83dbkaoc:G;aef8Kjjjjbk:mvdouq99cbhi8Jjjjjbca9RglczfcwfcbBdbal9cb83izalcwfcbBdbal9cb83ibdnadTmbcbhvinaeaifhocbhrinalczfarfgwavawydbgwaoarfIdbgDaearawcx2ffIdb9DEBdbalarfgwavawydbgwaDaearawcx2ffIdb9EEBdbarclfgrcx9hmbkaicxfhiavcefgvad9hmbkkJbbbbhDcbhrcbhicbhvinaealarfydbcx2fgwIdwaealczfarfydbcx2fgoIdw:tgqaqNawIdbaoIdb:tgqaqNawIdlaoIdl:tgqaqNMMgqaDaqaD9EgwEhDavaiawEhiarclfhravcefgvci9hmbkaealczfaicdtgvfydbcx2fgrIdwaealavfydbcx2fglIdwMJbbbZNhqarIdlalIdlMJbbbZNhkarIdbalIdbMJbbbZNhxaD:rJbbbZNhDdnadTmbindnaecwfIdbgmaq:tgPaPNaeIdbgsax:tgPaPNaeclfIdbgzak:tgPaPNMMgPaDaDN9ETmbaqaDaP:rgH:vJbbbZNJbbbZMgPNamJbbjZaP:tgONMhqakaPNazaONMhkaxaPNasaONMhxaDaHMJbbbZNhDkaecxfheadcufgdmbkkabaDUdxabaqUdwabakUdlabaxUdbkjeeiu8Jjjjjbcj8W9Rgr8Kjjjjbaici2hwdnaiTmbawceawce0EhDarhiinaiaeadRbbcdtfydbBdbadcefhdaiclfhiaDcufgDmbkkabarawaladaoz:hjjjbarcj8Wf8Kjjjjbk:Ylequ8Jjjjjbcjx9Rgl8Kjjjjbcbhvalcjqfcbaiz:njjjb8AdndnadTmbcjehoaehrincuhwarhDcuhqavhkdninawakaoalcjqfaDcefRbbfRbb9RcFeGci6aoalcjqfaDRbbfRbb9RcFeGci6faoalcjqfaDcdfRbbfRbb9RcFeGci6fgxaq9mgmEhwdnammbaxce0mdkaxaqaxaq9kEhqaDcifhDadakcefgk9hmbkkaeawci2fgDcdfRbbhqaDcefRbbhxaDRbbhkaeavci2fgDcifaDawav9Rci2z:qjjjb8Aakalcjqffaocefgo86bbaxalcjqffao86bbaDcdfaq86bbaDcefax86bbaDak86bbaqalcjqffao86bbarcifhravcefgvad9hmbkalcFeaiz:njjjbhoadci2gDceaDce0EhqcbhxindnaoaeRbbgkfgwRbbgDcFe9hmbawax86bbaocjdfaxcdtfabakcdtfydbBdbaxhDaxcefhxkaeaD86bbaecefheaqcufgqmbkaxcdthDxekcbhDkabalcjdfaDz:mjjjb8Aalcjxf8Kjjjjbk9teiucbcbyd11jjbgeabcifc98GfgbBd11jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;LeeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiclfaeclfydbBdbaicwfaecwfydbBdbaicxfaecxfydbBdbaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk;aeedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdbaicxfalBdbaicwfalBdbaiclfalBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabk9teiucbcbyd11jjbgeabcrfc94GfgbBd11jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik9:eiuZbhedndncbyd11jjbgdaecztgi9nmbcuheadai9RcFFifcz4nbcuSmekadhekcbabae9Rcifc98Gcbyd11jjbfgdBd11jjbdnadZbcztge9nmbadae9RcFFifcz4nb8Akk:;Deludndndnadch9pmbabaeSmdaeabadfgi9Rcbadcet9R0mekabaead;8qbbxekaeab7ciGhldndndnabae9pmbdnalTmbadhvabhixikdnabciGmbadhvabhixdkadTmiabaeRbb86bbadcufhvdnabcefgiciGmbaecefhexdkavTmiabaeRbe86beadc9:fhvdnabcdfgiciGmbaecdfhexdkavTmiabaeRbd86bdadc99fhvdnabcifgiciGmbaecifhexdkavTmiabaeRbi86biabclfhiaeclfheadc98fhvxekdnalmbdnaiciGTmbadTmlabadcufgifglaeaifRbb86bbdnalciGmbaihdxekaiTmlabadc9:fgifglaeaifRbb86bbdnalciGmbaihdxekaiTmlabadc99fgifglaeaifRbb86bbdnalciGmbaihdxekaiTmlabadc98fgdfaeadfRbb86bbkadcl6mbdnadc98fgocd4cefciGgiTmbaec98fhlabc98fhvinavadfaladfydbBdbadc98fhdaicufgimbkkaocx6mbaec9Wfhvabc9WfhoinaoadfgicxfavadfglcxfydbBdbaicwfalcwfydbBdbaiclfalclfydbBdbaialydbBdbadc9Wfgdci0mbkkadTmdadhidnadciGglTmbaecufhvabcufhoadhiinaoaifavaifRbb86bbaicufhialcufglmbkkadcl6mdaec98fhlabc98fhvinavaifgecifalaifgdcifRbb86bbaecdfadcdfRbb86bbaecefadcefRbb86bbaeadRbb86bbaic98fgimbxikkavcl6mbdnavc98fglcd4cefcrGgdTmbavadcdt9RhvinaiaeydbBdbaeclfheaiclfhiadcufgdmbkkalc36mbinaiaeydbBdbaiaeydlBdlaiaeydwBdwaiaeydxBdxaiaeydzBdzaiaeydCBdCaiaeydKBdKaiaeyd3Bd3aecafheaicafhiavc9Gfgvci0mbkkavTmbdndnavcrGgdmbavhlxekavc94GhlinaiaeRbb86bbaicefhiaecefheadcufgdmbkkavcw6mbinaiaeRbb86bbaiaeRbe86beaiaeRbd86bdaiaeRbi86biaiaeRbl86blaiaeRbv86bvaiaeRbo86boaiaeRbr86braicwfhiaecwfhealc94fglmbkkabkkAebcjwkxebbbdbbbzNbb",Z=new Uint8Array([32,0,65,2,1,106,34,33,3,128,11,4,13,64,6,253,10,7,15,116,127,5,8,12,40,16,19,54,20,9,27,255,113,17,42,67,24,23,146,148,18,14,22,45,70,69,56,114,101,21,25,63,75,136,108,28,118,29,73,115]);if(typeof WebAssembly!=="object")return{supported:!1};var Y,$=WebAssembly.instantiate(W(J),{}).then(function(U){Y=U.instance,Y.exports.__wasm_call_ctors()});function W(U){var L=new Uint8Array(U.length);for(var w=0;w<U.length;++w){var O=U.charCodeAt(w);L[w]=O>96?O-97:O>64?O-39:O+4}var R=0;for(var w=0;w<U.length;++w)L[R++]=L[w]<60?Z[L[w]]:(L[w]-60)*64+L[++w];return L.buffer.slice(0,R)}function Q(U){if(!U)throw new Error("Assertion failed")}function X(U){return new Uint8Array(U.buffer,U.byteOffset,U.byteLength)}var K=48,G=16;function z(U,L){var w=U.meshlets[L*4+0],O=U.meshlets[L*4+1],R=U.meshlets[L*4+2],N=U.meshlets[L*4+3];return{vertices:U.vertices.subarray(w,w+R),triangles:U.triangles.subarray(O,O+N*3)}}function F(U,L,w,O,R,N,P){var D=Y.exports.sbrk,j=Y.exports.meshopt_buildMeshletsBound(U.length,R,N),C=D(j*G),k=D(j*R*4),I=D(j*N*3),A=D(U.byteLength),v=D(L.byteLength),x=new Uint8Array(Y.exports.memory.buffer);x.set(X(U),A),x.set(X(L),v);var u=Y.exports.meshopt_buildMeshlets(C,k,I,A,U.length,v,w,O,R,N,P);x=new Uint8Array(Y.exports.memory.buffer);var h=x.subarray(C,C+u*G),d=new Uint32Array(h.buffer,h.byteOffset,h.byteLength/4).slice();for(var W0=0;W0<u;++W0){var U0=d[W0*4+0],B0=d[W0*4+1],w=d[W0*4+2],y0=d[W0*4+3];Y.exports.meshopt_optimizeMeshlet(k+U0*4,I+B0,y0,w)}var B1=d[(u-1)*4+0],L8=d[(u-1)*4+1],B8=d[(u-1)*4+2],O1=d[(u-1)*4+3],O9=B1+B8,p8=L8+(O1*3+3&-4),Y4={meshlets:d,vertices:new Uint32Array(x.buffer,k,O9).slice(),triangles:new Uint8Array(x.buffer,I,p8*3).slice(),meshletCount:u};return D(C-D(0)),Y4}function V(U){var L=new Float32Array(Y.exports.memory.buffer,U,K/4);return{centerX:L[0],centerY:L[1],centerZ:L[2],radius:L[3],coneApexX:L[4],coneApexY:L[5],coneApexZ:L[6],coneAxisX:L[7],coneAxisY:L[8],coneAxisZ:L[9],coneCutoff:L[10]}}function H(U,L,w,O){var R=Y.exports.sbrk,N=[],P=R(L.byteLength),D=R(U.vertices.byteLength),j=R(U.triangles.byteLength),C=R(K),k=new Uint8Array(Y.exports.memory.buffer);k.set(X(L),P),k.set(X(U.vertices),D),k.set(X(U.triangles),j);for(var I=0;I<U.meshletCount;++I){var A=U.meshlets[I*4+0],v=U.meshlets[I*4+0+1],x=U.meshlets[I*4+0+3];Y.exports.meshopt_computeMeshletBounds(C,D+A*4,j+v,x,P,w,O),N.push(V(C))}return R(P-R(0)),N}function q(U,L,w,O){var R=Y.exports.sbrk,N=R(K),P=R(U.byteLength),D=R(L.byteLength),j=new Uint8Array(Y.exports.memory.buffer);j.set(X(U),P),j.set(X(L),D),Y.exports.meshopt_computeClusterBounds(N,P,U.length,D,w,O);var C=V(N);return R(N-R(0)),C}return{ready:$,supported:!0,buildMeshlets:function(U,L,w,O,R,N){Q(U.length%3==0),Q(L instanceof Float32Array),Q(L.length%w==0),Q(w>=3),Q(O<=255||O>0),Q(R<=512),Q(R%4==0),N=N||0;var P=U.BYTES_PER_ELEMENT==4?U:new Uint32Array(U);return F(P,L,L.length/w,w*4,O,R,N)},computeClusterBounds:function(U,L,w){Q(U.length%3==0),Q(U.length/3<=512),Q(L instanceof Float32Array),Q(L.length%w==0),Q(w>=3);var O=U.BYTES_PER_ELEMENT==4?U:new Uint32Array(U);return q(O,L,L.length/w,w*4)},computeMeshletBounds:function(U,L,w){return Q(U.meshletCount!=0),Q(L instanceof Float32Array),Q(L.length%w==0),Q(w>=3),H(U,L,L.length/w,w*4)},extractMeshlet:function(U,L){return Q(L>=0&&L<U.meshletCount),z(U,L)}}}();var tW={OPTIMIZED_DIR:".optimized",CHECKSUM_EXT:".md5",DIRECTORIES:[M7.normalize("node_modules/@hytopia.com/assets"),M7.normalize("assets")],OPTIMIZER_RUNS:[{suffix:"",options:["--compress","false","--instance","false","--simplify","false"]},{suffix:"-named-nodes",options:["--compress","false","--instance","false","--simplify","false","--join","true","--join-named","false"]}]};class u5{static instance=new u5;optimize=!0;optimizeEveryStart=!1;_modelUriDocuments=new Map;_modelUriBoundingBoxes=new Map;_modelUriNodeNames=new Map;_modelUriTrimeshes=new Map;constructor(){}async preloadModels(){let J=await this._getAbsoluteModelPaths();console.log(`ModelRegistry.preloadModels(): Preloading ${J.length} models...`);for(let Z of J){if(this.optimize)await this._resolveOptimizedModelPath(Z);await this._loadModelData(Z)}console.log(`ModelRegistry.preloadModels(): Preloaded ${J.length} models!`)}getAnimationNames(J){let Z=this._modelUriDocuments.get(J);if(!Z)f.fatalError(`ModelRegistry.getAnimationNames(): Model ${J} not found!`);return Z.getRoot().listAnimations().map(($)=>$.getName())}getBoundingBox(J){let Z=this._modelUriBoundingBoxes.get(J);if(!Z)f.fatalError(`ModelRegistry.getBoundingBox(): Model ${J} not found!`);return Z}getHeight(J){let Z=this.getBoundingBox(J);return Z.max.y-Z.min.y}getNodeNames(J){let Z=this._modelUriNodeNames.get(J);if(!Z)f.fatalError(`ModelRegistry.getNodeNames(): Model ${J} not found!`);return Z}getTrimesh(J,Z=1){let Y=this._modelUriTrimeshes.get(J);if(!Y){f.error(`ModelRegistry.getTrimesh(): Model ${J} not found!`);return}let $=Y.vertices;if(Z!==1){$=new Float32Array($.length);for(let W=0;W<$.length;W++)$[W]=Y.vertices[W]*Z}return{vertices:$,indices:Y.indices}}modelHasNode(J,Z){let Y=this._modelUriNodeNames.get(J);if(!Y)f.fatalError(`ModelRegistry.modelHasNode(): Model ${J} not found!`);return Y.includes(Z)}_absoluteModelPathToModelUri(J){let Z=M7.relative(process.cwd(),J),Y=tW.DIRECTORIES.find((W)=>Z.startsWith(W));return(Y?M7.relative(Y,Z):Z).split(M7.sep).join("/")}async _getAbsoluteModelPaths(){let J=[],Z=new DU1("**/*.{gltf,glb}");for(let Y of tW.DIRECTORIES){let $=M7.resolve(process.cwd(),Y);if(!DJ.existsSync($))continue;for await(let W of Z.scan($))J.push(M7.join($,W))}return J}async _loadModelData(J){let Z=await new vN().read(J),Y=Tp(Z.getRoot().listScenes()[0]),$=Z.getRoot().listNodes().map((Q)=>Q.getName()),W=this._absoluteModelPathToModelUri(J);this._modelUriDocuments.set(W,Z),this._modelUriBoundingBoxes.set(W,{min:{x:Y.min[0],y:Y.min[1],z:Y.min[2]},max:{x:Y.max[0],y:Y.max[1],z:Y.max[2]}}),this._modelUriNodeNames.set(W,$),this._modelUriTrimeshes.set(W,await this._buildTrimesh(W))}async _resolveOptimizedModelPath(J){let Z=this._buildOptimizedModelPath(J);if(!this.optimizeEveryStart&&this._isOptimizedVersionValid(J))return Z;return await this._optimizeModel(J,Z)}_isOptimizedVersionValid(J){let Z=`${this._buildOptimizedModelPath(J)}${tW.CHECKSUM_EXT}`;if(!DJ.existsSync(Z))return!1;let Y=this._calculateChecksum(J),$=DJ.readFileSync(Z,"utf8");return Y===$}_calculateChecksum(J){if(!DJ.existsSync(J))return"";let Z=DJ.readFileSync(J);return jU1.createHash("sha256").update(Z.toString("base64")).digest("hex")}_buildOptimizedModelPath(J){let Z=M7.basename(J),Y=Z.replace(/\.[^/.]+$/,""),$=`${tW.OPTIMIZED_DIR}/${Y}`;return J.replace(/[^/\\]+$/,`${$}/${Z}`)}async _buildTrimesh(J,Z=1,Y=0.001){let $=this._modelUriDocuments.get(J);if(!$)f.fatalError(`ModelRegistry._buildTrimesh(): Model ${J} not found!`);let W=Dp($);W.setLogger(new n6(aK.WARN)),await W.transform(Kp({pivot:"center"}),Cp(),kp(),Ej(),_p({simplifier:xp,ratio:Z,error:Y}),Pp());for(let z of W.getRoot().listScenes())for(let F of z.listChildren())Rp(F);let Q=W.getRoot().listMeshes()[0];if(!Q){f.error(`ModelRegistry._buildTrimesh(): Model ${J} has no root mesh!`);return}let X=Q.listPrimitives()[0];if(!X){f.error(`ModelRegistry._buildTrimesh(): Model ${J} has no root primitive!`);return}let K=X.getAttribute("POSITION"),G=X.getIndices();if(!K||!G){f.error(`ModelRegistry._buildTrimesh(): Model ${J} missing required geometry data!`);return}return{vertices:K.getArray(),indices:G.getArray()}}async _optimizeModel(J,Z){let Y=M7.dirname(Z);DJ.rmSync(Y,{recursive:!0,force:!0}),DJ.mkdirSync(Y,{recursive:!0}),console.log(`ModelRegistry: Optimizing model ${this._absoluteModelPathToModelUri(J)}...`);for(let $ of tW.OPTIMIZER_RUNS){let W=Z.replace(/(\.[^/.]+)$/,`${$.suffix}$1`),{stderr:Q}=await um("bunx",["gltf-transform","optimize",J,W,...$.options]);if(Q)return f.warning(`ModelRegistry._optimizeModel(): Error optimizing model ${this._absoluteModelPathToModelUri(J)}, defaulting to unoptimized model. Error: ${Q}`),J}return DJ.writeFileSync(`${Z}${tW.CHECKSUM_EXT}`,this._calculateChecksum(J)),Z}}var NG;((W)=>{W.DYNAMIC="dynamic";W.FIXED="fixed";W.KINEMATIC_POSITION="kinematic_position";W.KINEMATIC_VELOCITY="kinematic_velocity"})(NG||={});var vj=0.001,Ap="dynamic";class jY extends S0{_additionalMass=0;_colliders=new Set;_explicitSleep=!1;_enabledPositions={x:!0,y:!0,z:!0};_enabledRotations={x:!0,y:!0,z:!0};_rigidBody;_rigidBodyDesc;_rigidBodyType;_simulation;constructor(J){super();J.type??=Ap,this._rigidBodyDesc=this._createRigidBodyDesc(J),this._rigidBodyType=J.type,this._applyRigidBodyOptions(J),this._autoAddToSimulation(J)}get additionalMass(){if(!this._requireNotRemoved("additionalMass"))return 0;return this._additionalMass}get additionalSolverIterations(){if(!this._requireNotRemoved("additionalSolverIterations"))return 0;return this._rigidBody?this._rigidBody.additionalSolverIterations():this._rigidBodyDesc.additionalSolverIterations}get angularDamping(){if(!this._requireNotRemoved("angularDamping"))return 0;return this._rigidBody?this._rigidBody.angularDamping():this._rigidBodyDesc.angularDamping}get angularVelocity(){if(!this._requireNotRemoved("angularVelocity"))return{x:0,y:0,z:0};return this._rigidBody?this._rigidBody.angvel():this._rigidBodyDesc.angvel}get colliders(){return this._colliders}get dominanceGroup(){if(!this._requireNotRemoved("dominanceGroup"))return 0;return this._rigidBody?this._rigidBody.dominanceGroup():this._rigidBodyDesc.dominanceGroup}get directionFromRotation(){let{x:J,y:Z,z:Y,w:$}=this.rotation;return{x:2*(J*Y+$*Z),y:2*(Z*Y-$*J),z:1-2*(J*J+Z*Z)}}get effectiveAngularInertia(){if(!this._requireNotRemoved("effectiveAngularInertia"))return;return this._rigidBody?this._rigidBody.effectiveAngularInertia():void 0}get effectiveInverseMass(){if(!this._requireNotRemoved("effectiveInverseMass"))return;return this._rigidBody?this._rigidBody.effectiveInvMass():void 0}get effectiveWorldInversePrincipalAngularInertiaSqrt(){if(!this._requireNotRemoved("effectiveWorldInversePrincipalAngularInertiaSqrt"))return;return this._rigidBody?this._rigidBody.effectiveWorldInvInertiaSqrt():void 0}get enabledRotations(){if(!this._requireNotRemoved("enabledRotations"))return{x:!0,y:!0,z:!0};return this._enabledRotations}get enabledPositions(){if(!this._requireNotRemoved("enabledPositions"))return{x:!0,y:!0,z:!0};return this._enabledPositions}get gravityScale(){if(!this._requireNotRemoved("gravityScale"))return 0;return this._rigidBody?this._rigidBody.gravityScale():this._rigidBodyDesc.gravityScale}get inverseMass(){if(!this._requireNotRemoved("inverseMass"))return;return this._rigidBody?this._rigidBody.invMass():void 0}get inversePrincipalAngularInertiaSqrt(){if(!this._requireNotRemoved("inversePrincipalAngularInertiaSqrt"))return;return this._rigidBody?this._rigidBody.invPrincipalInertiaSqrt():void 0}get isCcdEnabled(){if(!this._requireNotRemoved("isCcdEnabled"))return!1;return this._rigidBody?this._rigidBody.isCcdEnabled():this._rigidBodyDesc.ccdEnabled}get isDynamic(){if(!this._requireNotRemoved("isDynamic"))return!1;return this._rigidBodyType==="dynamic"}get isEnabled(){if(!this._requireNotRemoved("isEnabled"))return!1;return this._rigidBody?this._rigidBody.isEnabled():this._rigidBodyDesc.enabled}get isFixed(){if(!this._requireNotRemoved("isFixed"))return!1;return this._rigidBodyType==="fixed"}get isKinematic(){if(!this._requireNotRemoved("isKinematic"))return!1;return["kinematic_position","kinematic_velocity"].includes(this._rigidBodyType)}get isKinematicPositionBased(){if(!this._requireNotRemoved("isKinematicPositionBased"))return!1;return this._rigidBodyType==="kinematic_position"}get isKinematicVelocityBased(){if(!this._requireNotRemoved("isKinematicVelocityBased"))return!1;return this._rigidBodyType==="kinematic_velocity"}get isMoving(){if(!this._requireNotRemoved("isMoving"))return!1;return this._rigidBody?this._rigidBody.isMoving():!1}get isRemoved(){return!this._rigidBody&&!this._rigidBodyDesc}get isSimulated(){if(!this._requireNotRemoved("isSimulated"))return!1;return this._rigidBody?!0:!1}get isSleeping(){if(!this._requireNotRemoved("isSleeping"))return!1;return this._rigidBody?this._rigidBody.isSleeping():this._rigidBodyDesc.sleeping}get linearDamping(){if(!this._requireNotRemoved("linearDamping"))return 0;return this._rigidBody?this._rigidBody.linearDamping():this._rigidBodyDesc.linearDamping}get linearVelocity(){if(!this._requireNotRemoved("linearVelocity"))return{x:0,y:0,z:0};return this._rigidBody?this._rigidBody.linvel():this._rigidBodyDesc.linvel}get localCenterOfMass(){if(!this._requireNotRemoved("localCenterOfMass"))return{x:0,y:0,z:0};return this._rigidBody?this._rigidBody.localCom():this._rigidBodyDesc.centerOfMass}get mass(){if(!this._requireNotRemoved("mass"))return 0;return this._rigidBody?this._rigidBody.mass():this._rigidBodyDesc.mass}get nextKinematicRotation(){if(!this._requireNotRemoved("nextKinematicRotation"))return{x:0,y:0,z:0,w:1};return this._rigidBody?this._rigidBody.nextRotation():this._rigidBodyDesc.rotation}get nextKinematicPosition(){if(!this._requireNotRemoved("nextKinematicPosition"))return{x:0,y:0,z:0};return this._rigidBody?this._rigidBody.nextTranslation():this._rigidBodyDesc.translation}get numColliders(){return this._colliders.size}get principalAngularInertia(){if(!this._requireNotRemoved("principalAngularInertia"))return{x:0,y:0,z:0};return this._rigidBody?this._rigidBody.principalInertia():this._rigidBodyDesc.principalAngularInertia}get principalAngularInertiaLocalFrame(){if(!this._requireNotRemoved("principalAngularInertiaLocalFrame"))return;return this._rigidBody?this._rigidBody.principalInertiaLocalFrame():void 0}get position(){if(!this._requireNotRemoved("position"))return{x:0,y:0,z:0};return this._rigidBody?this._rigidBody.translation():this._rigidBodyDesc.translation}get rawRigidBody(){if(!this._requireNotRemoved("rawRigidBody"))return;return this._rigidBody}get rotation(){if(!this._requireNotRemoved("rotation"))return{x:0,y:0,z:0,w:1};return this._rigidBody?this._rigidBody.rotation():this._rigidBodyDesc.rotation}get softCcdPrediction(){if(!this._requireNotRemoved("softCcdPrediction"))return 0;return this._rigidBody?this._rigidBody.softCcdPrediction():this._rigidBodyDesc.softCcdPrediction}get type(){if(!this._requireNotRemoved("type"))return"dynamic";return this._rigidBodyType}get worldCenterOfMass(){if(!this._requireNotRemoved("worldCenterOfMass"))return;return this._rigidBody?this._rigidBody.worldCom():void 0}setAdditionalMass(J){if(!this._requireDynamic("setAdditionalMass"))return;if(!this._requireNotRemoved("setAdditionalMass"))return;this._rigidBody?this._rigidBody.setAdditionalMass(J,!this._explicitSleep):this._rigidBodyDesc.setAdditionalMass(J)}setAdditionalMassProperties(J){if(!this._requireDynamic("setAdditionalMassProperties"))return;if(!this._requireNotRemoved("setAdditionalMassProperties"))return;let{additionalMass:Z,centerOfMass:Y,principalAngularInertia:$,principalAngularInertiaLocalFrame:W}=J;this._rigidBody?this._rigidBody.setAdditionalMassProperties(Z,Y,$,W,!this._explicitSleep):this._rigidBodyDesc.setAdditionalMassProperties(Z,Y,$,W)}setAdditionalSolverIterations(J){if(!this._requireDynamic("setAdditionalSolverIterations"))return;if(!this._requireNotRemoved("setAdditionalSolverIterations"))return;this._rigidBody?this._rigidBody.setAdditionalSolverIterations(J):this._rigidBodyDesc.setAdditionalSolverIterations(J)}setAngularDamping(J){if(!this._requireDynamic("setAngularDamping"))return;if(!this._requireNotRemoved("setAngularDamping"))return;this._rigidBody?this._rigidBody.setAngularDamping(J):this._rigidBodyDesc.setAngularDamping(J)}setAngularVelocity(J){if(!this._requireNotKinematicPositionBased("setAngularVelocity"))return;if(!this._requireNotRemoved("setAngularVelocity"))return;this._rigidBody?this._rigidBody.setAngvel(J,!this._explicitSleep):this._rigidBodyDesc.setAngvel(J)}setCcdEnabled(J){if(!this._requireDynamic("setCcdEnabled"))return;if(!this._requireNotRemoved("setCcdEnabled"))return;this._rigidBody?this._rigidBody.enableCcd(J):this._rigidBodyDesc.setCcdEnabled(J)}setDominanceGroup(J){if(!this._requireDynamic("setDominanceGroup"))return;if(!this._requireNotRemoved("setDominanceGroup"))return;this._rigidBody?this._rigidBody.setDominanceGroup(J):this._rigidBodyDesc.setDominanceGroup(J)}setEnabled(J){if(!this._requireNotRemoved("setEnabled"))return;this._rigidBody?this._rigidBody.setEnabled(J):this._rigidBodyDesc.setEnabled(J)}setEnabledPositions(J){if(!this._requireDynamic("setEnabledPositions"))return;if(!this._requireNotRemoved("setEnabledPositions"))return;this._rigidBody?this._rigidBody.setEnabledTranslations(J.x,J.y,J.z,!this._explicitSleep):this._rigidBodyDesc.enabledTranslations(J.x,J.y,J.z),this._enabledPositions=J}setEnabledRotations(J){if(!this._requireDynamic("setEnabledRotations"))return;if(!this._requireNotRemoved("setEnabledRotations"))return;this._rigidBody?this._rigidBody.setEnabledRotations(J.x,J.y,J.z,!this._explicitSleep):this._rigidBodyDesc.enabledRotations(J.x,J.y,J.z),this._enabledRotations=J}setGravityScale(J){if(!this._requireDynamic("setGravityScale"))return;if(!this._requireNotRemoved("setGravityScale"))return;this._rigidBody?this._rigidBody.setGravityScale(J,!this._explicitSleep):this._rigidBodyDesc.setGravityScale(J)}setLinearDamping(J){if(!this._requireDynamic("setLinearDamping"))return;if(!this._requireNotRemoved("setLinearDamping"))return;this._rigidBody?this._rigidBody.setLinearDamping(J):this._rigidBodyDesc.setLinearDamping(J)}setLinearVelocity(J){if(!this._requireNotKinematicPositionBased("setLinearVelocity"))return;if(!this._requireNotRemoved("setLinearVelocity"))return;this._rigidBody?this._rigidBody.setLinvel(J,!this._explicitSleep):this._rigidBodyDesc.setLinvel(J.x,J.y,J.z)}setNextKinematicRotation(J){if(!this._requireKinematic("setNextKinematicRotation"))return;if(!this._requireNotRemoved("setNextKinematicRotation"))return;this._rigidBody?this._rigidBody.setNextKinematicRotation(J):this._rigidBodyDesc.setRotation(J)}setNextKinematicPosition(J){if(!this._requireKinematic("setNextKinematicPosition"))return;if(!this._requireNotRemoved("setNextKinematicPosition"))return;this._rigidBody?this._rigidBody.setNextKinematicTranslation(J):this._rigidBodyDesc.setTranslation(J.x,J.y,J.z)}setPosition(J){if(!this._requireNotRemoved("setPosition"))return;this._rigidBody?this._rigidBody.setTranslation(J,!this._explicitSleep):this._rigidBodyDesc.setTranslation(J.x,J.y,J.z)}setRotation(J){if(!this._requireNotRemoved("setRotation"))return;this._rigidBody?this._rigidBody.setRotation(J,!this._explicitSleep):this._rigidBodyDesc.setRotation(J)}setSleeping(J){if(!this._requireDynamic("setSleeping"))return;if(!this._requireNotRemoved("setSleeping"))return;this._rigidBody?J?this._rigidBody.sleep():this._rigidBody.wakeUp():this._rigidBodyDesc.sleeping=J,this._explicitSleep=J}setSoftCcdPrediction(J){if(!this._requireDynamic("setSoftCcdPrediction"))return;if(!this._requireNotRemoved("setSoftCcdPrediction"))return;this._rigidBody?this._rigidBody.setSoftCcdPrediction(J):this._rigidBodyDesc.setSoftCcdPrediction(J)}setCollisionGroupsForSolidColliders(J){if(!this._requireNotRemoved("setCollisionGroupsForSolidColliders"))return;this._colliders.forEach((Z)=>{if(Z.isSensor)return;Z.setCollisionGroups(J)})}setCollisionGroupsForSensorColliders(J){if(!this._requireNotRemoved("setCollisionGroupsForSensorColliders"))return;this._colliders.forEach((Z)=>{if(!Z.isSensor)return;Z.setCollisionGroups(J)})}setType(J){if(!this._requireNotRemoved("setType"))return;let Y={["dynamic"]:s0.RigidBodyType.Dynamic,["fixed"]:s0.RigidBodyType.Fixed,["kinematic_position"]:s0.RigidBodyType.KinematicPositionBased,["kinematic_velocity"]:s0.RigidBodyType.KinematicVelocityBased}[J];if(Y===void 0)return f.error(`Invalid RigidBodyType: ${J}`);this._rigidBody?this._rigidBody.setBodyType(Y,!this._explicitSleep):this._rigidBodyDesc.status=Y,this._rigidBodyType=J}addForce(J){if(!this._requireNotRemoved("addForce"))return;if(!this._requireCreated("addForce"))return;if(!this._requireDynamic("addForce"))return;if(this._isNegligibleVector(J))return;this._rigidBody.addForce(J,!this._explicitSleep)}addTorque(J){if(!this._requireNotRemoved("addTorque"))return;if(!this._requireCreated("addTorque"))return;if(!this._requireDynamic("addTorque"))return;if(this._isNegligibleVector(J))return;this._rigidBody.addTorque(J,!this._explicitSleep)}addChildColliderToSimulation(J){if(!this._requireNotRemoved("addChildColliderToSimulation"))return;if(!this._requireCreated("addChildColliderToSimulation"))return;J.addToSimulation(this._simulation,this)}addToSimulation(J){if(!this._requireNotRemoved("addToSimulation"))return;if(this._rigidBody)return f.error("RigidBody.addToSimulation(): Rigid body already exists in the simulation!");this._simulation=J,this._rigidBody=this._simulation.createRawRigidBody(this._rigidBodyDesc),this._colliders.forEach((Z)=>{if(!Z.isSimulated)Z.addToSimulation(J,this)})}applyImpulse(J){if(!this._requireNotRemoved("applyImpulse"))return;if(!this._requireCreated("applyImpulse"))return;if(!this._requireDynamic("applyImpulse"))return;if(this._isNegligibleVector(J))return;this._rigidBody.applyImpulse(J,!this._explicitSleep)}applyImpulseAtPoint(J,Z){if(!this._requireNotRemoved("applyImpulseAtPoint"))return;if(!this._requireCreated("applyImpulseAtPoint"))return;if(!this._requireDynamic("applyImpulseAtPoint"))return;if(this._isNegligibleVector(J))return;this._rigidBody.applyImpulseAtPoint(J,Z,!this._explicitSleep)}applyTorqueImpulse(J){if(!this._requireNotRemoved("applyTorqueImpulse"))return;if(!this._requireCreated("applyTorqueImpulse"))return;if(!this._requireDynamic("applyTorqueImpulse"))return;this._rigidBody.applyTorqueImpulse(J,!this._explicitSleep)}createAndAddChildCollider(J){if(!this._requireNotRemoved("createAndAddChildCollider"))return null;return this._simulation?new R5({...J,parentRigidBody:this,simulation:this._simulation}):this._createAndAddPendingChildCollider(J)}createAndAddChildCollidersToSimulation(J){let Z=[];return J.forEach((Y)=>{let $=this.createAndAddChildCollider(Y);if($)Z.push($)}),Z}getCollidersByTag(J){let Z=[];for(let Y of this._colliders)if(Y.tag===J)Z.push(Y);return Z}linkCollider(J){if(!this._requireNotRemoved("linkCollider"))return;if(J.parentRigidBody!==this)return f.error("RigidBody.linkCollider(): Collider cannot be linked because it is not a child of this rigid body!");this._colliders.add(J)}lockAllRotations(){if(!this._requireNotRemoved("lockAllRotations"))return;this.setEnabledRotations({x:!1,y:!1,z:!1})}lockAllPositions(){if(!this._requireNotRemoved("lockAllPositions"))return;this.setEnabledPositions({x:!1,y:!1,z:!1})}removeFromSimulation(){if(!this._requireNotRemoved("removeFromSimulation"))return;if(!this._rigidBody)return f.error("RigidBody.removeFromSimulation(): Rigid body does not exist in the simulation!");this._colliders.forEach((J)=>{J.removeFromSimulation()}),this._simulation.removeRawRigidBody(this._rigidBody),this._simulation=void 0,this._rigidBody=void 0}unlinkCollider(J){if(!this._requireNotRemoved("unlinkCollider"))return;if(!J.isRemoved)return f.error("RigidBody.unlinkCollider(): Collider is still simulated and therefore cannot be unlinked from this rigid body!");this._colliders.delete(J)}resetAngularVelocity(){if(!this._requireNotRemoved("resetAngularVelocity"))return;if(!this._requireCreated("resetAngularVelocity"))return;this.setAngularVelocity({x:0,y:0,z:0})}resetForces(){if(!this._requireNotRemoved("resetForces"))return;if(!this._requireCreated("resetForces"))return;this._rigidBody.resetForces(!this._explicitSleep)}resetLinearVelocity(){if(!this._requireNotRemoved("resetLinearVelocity"))return;if(!this._requireCreated("resetLinearVelocity"))return;this.setLinearVelocity({x:0,y:0,z:0})}resetTorques(){if(!this._requireNotRemoved("resetTorques"))return;if(!this._requireCreated("resetTorques"))return;this._rigidBody.resetTorques(!this._explicitSleep)}sleep(){if(!this._requireNotRemoved("sleep"))return;this.setSleeping(!0)}wakeUp(){if(!this._requireNotRemoved("wakeUp"))return;this.setSleeping(!1)}_applyRigidBodyOptions(J){[["additionalMass",this.setAdditionalMass.bind(this)],["additionalMassProperties",this.setAdditionalMassProperties.bind(this)],["additionalSolverIterations",this.setAdditionalSolverIterations.bind(this)],["angularDamping",this.setAngularDamping.bind(this)],["angularVelocity",this.setAngularVelocity.bind(this)],["dominanceGroup",this.setDominanceGroup.bind(this)],["ccdEnabled",this.setCcdEnabled.bind(this)],["enabled",this.setEnabled.bind(this)],["enabledPositions",this.setEnabledPositions.bind(this)],["enabledRotations",this.setEnabledRotations.bind(this)],["gravityScale",this.setGravityScale.bind(this)],["linearDamping",this.setLinearDamping.bind(this)],["linearVelocity",this.setLinearVelocity.bind(this)],["position",this.setPosition.bind(this)],["rotation",this.setRotation.bind(this)],["sleeping",this.setSleeping.bind(this)],["softCcdPrediction",this.setSoftCcdPrediction.bind(this)]].forEach(([Y,$])=>{if(Y in J)$(J[Y])})}_autoAddToSimulation(J){if(J.colliders)this._createAndAddPendingChildColliders(J.colliders);if(J.simulation)this.addToSimulation(J.simulation)}_createAndAddPendingChildCollider(J){if(!this._requireNotRemoved("createAndAddPendingChildCollider"))return null;if(!this._requireNotSimulated("createAndAddPendingChildCollider"))return null;let Z=new R5(J);return this._colliders.add(Z),Z}_createAndAddPendingChildColliders(J){let Z=[];return J.forEach((Y)=>{let $=this._createAndAddPendingChildCollider(Y);if($)Z.push($)}),Z}_createRigidBodyDesc(J){let Z=J.type??Ap;return{["dynamic"]:()=>s0.RigidBodyDesc.dynamic(),["fixed"]:()=>s0.RigidBodyDesc.fixed(),["kinematic_position"]:()=>s0.RigidBodyDesc.kinematicPositionBased(),["kinematic_velocity"]:()=>s0.RigidBodyDesc.kinematicVelocityBased()}[Z]()}_requireCreated(J){if(!this._rigidBody||!this._simulation)f.error(`RigidBody._requireCreated(): Rigid body has not been created and therefore does not support the invoked method: ${J}()`);return!!this._rigidBody&&!!this._simulation}_requireDynamic(J){if(!this.isDynamic)f.error(`RigidBody._requireDynamic(): Rigid body is not dynamic and therefore does not support the invoked method: ${J}()`);return this.isDynamic}_requireKinematic(J){if(!this.isKinematic)f.error(`RigidBody._requireKinematic(): Rigid body is not kinematic and therefore does not support the invoked method: ${J}()`);return this.isKinematic}_requireNotKinematicPositionBased(J){if(this.isKinematicPositionBased)f.error(`RigidBody._requireNotKinematicPositionBased(): Rigid body is kinematic position based and therefore does not support the invoked method: ${J}()`);return!this.isKinematicPositionBased}_requireNotRemoved(J){if(!this._rigidBody&&!this._rigidBodyDesc)f.error(`RigidBody._requireNotRemoved(): Rigid body has been removed and therefore does not support the invoked method: ${J}()`);return!!this._rigidBody||!!this._rigidBodyDesc}_requireNotSimulated(J){if(this.isSimulated)f.error(`RigidBody._requireNotSimulated(): Rigid body is simulated and therefore does not support the invoked method: ${J}()`);return!this.isSimulated}_isNegligibleVector(J){return Math.abs(J.x)<vj&&Math.abs(J.y)<vj&&Math.abs(J.z)<vj}}var Sj;((W)=>{W[W.Average=0]="Average";W[W.Min=1]="Min";W[W.Multiply=2]="Multiply";W[W.Max=3]="Max"})(Sj||={});var PG;((F)=>{F.NONE="none";F.BALL="ball";F.BLOCK="block";F.CAPSULE="capsule";F.CONE="cone";F.CYLINDER="cylinder";F.ROUND_CYLINDER="round-cylinder";F.TRIMESH="trimesh";F.VOXELS="voxels";F.WEDGE="wedge"})(PG||={});class R5 extends S0{_collider;_colliderDesc;_onCollision;_parentRigidBody;_shape;_simulation;_tag;constructor(J){super();this._colliderDesc=this._createColliderDesc(J),this._shape=J.shape,this._applyColliderOptions(J),this._autoAddToSimulation(J)}static optionsFromBlockHalfExtents(J){return{shape:"block",halfExtents:J}}static optionsFromModelUri(J,Z=1,Y){let $=u5.instance.getBoundingBox(J),W=$.max.x-$.min.x,Q=$.max.y-$.min.y,X=$.max.z-$.min.z,K=Math.max(W,X),G=Math.min(W,X),z=K/G,F=K/Q,V=K*Z/2,H=(R)=>Math.max(0.01,R),q=()=>({shape:"block",halfExtents:{x:H(W*Z/2),y:H(Q*Z/2),z:H(X*Z/2)}}),U=()=>({shape:"round-cylinder",radius:H(V),halfHeight:H(Q*Z/2),borderRadius:H(V*0.1)}),L=()=>{let R=u5.instance.getTrimesh(J,Z);if(!R)return;return{shape:"trimesh",vertices:R.vertices,indices:R.indices}},w=()=>({shape:"wedge",extents:{x:W*Z,y:Q*Z,z:X*Z}}),O=()=>({shape:"capsule",radius:H(V),halfHeight:H(Q*Z/2-V)});if(Y)switch(Y){case"block":return q();case"capsule":return O();case"round-cylinder":return U();case"trimesh":{let R=L();if(!R){f.error(`Collider.optionsFromModelUri(): Failed to create trimesh options for model ${J}, falling back to generic shape!`);break}return R}case"wedge":return w();default:f.warning(`Collider.optionsFromModelUri(): Preferred shape ${Y} is not yet supported with Collider.optionsFromModelUri(), defaulting to generic shape!`)}if(z>2)return q();if(F>1.5)return U();return O()}get bounciness(){if(!this._requireNotRemoved("bounciness"))return 0;return this._collider?this._collider.restitution():this._colliderDesc.restitution}get bouncinessCombineRule(){if(!this._requireNotRemoved("bouncinessCombineRule"))return 0;return this._collider?this._collider.restitutionCombineRule():this._colliderDesc.restitutionCombineRule}get collisionGroups(){if(!this._requireNotRemoved("collisionGroups"))return{belongsTo:[],collidesWith:[]};return this._collider?D9.decodeRawCollisionGroups(this._collider.collisionGroups()):D9.decodeRawCollisionGroups(this._colliderDesc.collisionGroups)}get friction(){if(!this._requireNotRemoved("friction"))return 0;return this._collider?this._collider.friction():this._colliderDesc.friction}get frictionCombineRule(){if(!this._requireNotRemoved("frictionCombineRule"))return 0;return this._collider?this._collider.frictionCombineRule():this._colliderDesc.frictionCombineRule}get isEnabled(){if(!this._requireNotRemoved("isEnabled"))return!1;return this._collider?this._collider.isEnabled():this._colliderDesc.enabled}get isRemoved(){return!this._collider&&!this._colliderDesc}get isSensor(){if(!this._requireNotRemoved("isSensor"))return!1;return this._collider?this._collider.isSensor():this._colliderDesc.isSensor}get isSimulated(){if(!this._requireNotRemoved("isSimulated"))return!1;return!!this._collider}get parentRigidBody(){if(!this._requireNotRemoved("parentRigidBody"))return;return this._parentRigidBody}get rawCollider(){if(!this._requireNotRemoved("rawCollider"))return;return this._collider}get relativePosition(){if(!this._requireNotRemoved("relativePosition"))return{x:0,y:0,z:0};return this._collider?this._collider.translation():this._colliderDesc.translation}get relativeRotation(){if(!this._requireNotRemoved("relativeRotation"))return{x:0,y:0,z:0,w:1};return this._collider?this._collider.rotation():this._colliderDesc.rotation}get shape(){if(!this._requireNotRemoved("shape"))return"none";return this._shape}get tag(){if(!this._requireNotRemoved("tag"))return;return this._tag}setBounciness(J){if(!this._requireNotRemoved("setBounciness"))return;this._collider?this._collider.setRestitution(J):this._colliderDesc.setRestitution(J)}setBouncinessCombineRule(J){if(!this._requireNotRemoved("setBouncinessCombineRule"))return;this._collider?this._collider.setRestitutionCombineRule(J):this._colliderDesc.setRestitutionCombineRule(J)}setCollisionGroups(J){if(!this._requireNotRemoved("setCollisionGroups"))return;let Z=D9.buildRawCollisionGroups(J);this._collider?this._collider.setCollisionGroups(Z):this._colliderDesc.setCollisionGroups(Z)}setEnabled(J){if(!this._requireNotRemoved("setEnabled"))return;this._collider?this._collider.setEnabled(J):this._colliderDesc.setEnabled(J)}setFriction(J){if(!this._requireNotRemoved("setFriction"))return;this._collider?this._collider.setFriction(J):this._colliderDesc.setFriction(J)}setFrictionCombineRule(J){if(!this._requireNotRemoved("setFrictionCombineRule"))return;this._collider?this._collider.setFrictionCombineRule(J):this._colliderDesc.setFrictionCombineRule(J)}setMass(J){if(!this._requireNotRemoved("setMass"))return;this._collider?this._collider.setMass(J):this._colliderDesc.setMass(J)}setOnCollision(J){if(!this._requireNotRemoved("setOnCollision"))return;if(this._onCollision=J,this.isSimulated)if(this.enableCollisionEvents(!!J),J)this._simulation.colliderMap.setColliderCollisionCallback(this,J);else this._simulation.colliderMap.removeColliderCollisionCallback(this)}setRelativeRotation(J){if(!this._requireNotRemoved("setRelativeRotation"))return;this._collider?this._collider.setRotation(J):this._colliderDesc.setRotation(J)}setRelativePosition(J){if(!this._requireNotRemoved("setRelativePosition"))return;this._collider?this._collider.setTranslation(J):this._colliderDesc.setTranslation(J.x,J.y,J.z)}setSensor(J){if(!this._requireNotRemoved("setSensor"))return;this._collider?this._collider.setSensor(J):this._colliderDesc.setSensor(J)}setTag(J){if(!this._requireNotRemoved("setTag"))return;this._tag=J}setVoxel(J,Z){if(!this._requireNotRemoved("setVoxel"))return;if(!this._requireSimulated("setVoxel"))return;if(this.shape!=="voxels")return f.error("Collider.setVoxel(): Collider is not a voxels collider!");this._collider.setVoxel(J.x,J.y,J.z,Z)}addToSimulation(J,Z){if(!this._requireNotRemoved("addToSimulation"))return;if(!this._requireUnsimulated("addToSimulation"))return;if(Z){if(!Z.isSimulated)return f.error("Collider.addToSimulation(): Rigid body must be simulated before adding a collider to it!");if(Z.type==="dynamic"&&this.shape==="trimesh")f.warning("Collider.addToSimulation(): Trimesh colliders are strongly discouraged to be used with dynamic rigid bodies, they will not contribute any mass!")}if(this._simulation=J,this._parentRigidBody=Z,this._collider=this._simulation.createRawCollider(this._colliderDesc,Z?.rawRigidBody),this._colliderDesc=void 0,Z)Z.linkCollider(this);if(this._onCollision)this.setOnCollision(this._onCollision)}enableCollisionEvents(J){if(!this._requireNotRemoved("enableCollisionEvents"))return;let Z=this._collider?this._collider.activeEvents():this._colliderDesc.activeEvents,Y=J?Z|s0.ActiveEvents.COLLISION_EVENTS:Z&~s0.ActiveEvents.COLLISION_EVENTS;(this._collider??this._colliderDesc).setActiveEvents(Y),this._setActiveCollisionTypes()}enableContactForceEvents(J){if(!this._requireNotRemoved("enableContactForceEvents"))return;let Z=this._collider?this._collider.activeEvents():this._colliderDesc.activeEvents,Y=J?Z|s0.ActiveEvents.CONTACT_FORCE_EVENTS:Z&~s0.ActiveEvents.CONTACT_FORCE_EVENTS;(this._collider??this._colliderDesc).setActiveEvents(Y),this._setActiveCollisionTypes()}removeFromSimulation(){if(!this._requireNotRemoved("removeFromSimulation"))return;if(!this._requireSimulated("removeFromSimulation"))return;if(this._simulation.removeRawCollider(this._collider),this._simulation=void 0,this._collider=void 0,this._parentRigidBody)this._parentRigidBody.unlinkCollider(this);this._parentRigidBody=void 0}_applyColliderOptions(J){[["bounciness",this.setBounciness.bind(this)],["bouncinessCombineRule",this.setBouncinessCombineRule.bind(this)],["collisionGroups",this.setCollisionGroups.bind(this)],["enabled",this.setEnabled.bind(this)],["friction",this.setFriction.bind(this)],["frictionCombineRule",this.setFrictionCombineRule.bind(this)],["isSensor",this.setSensor.bind(this)],["mass",this.setMass.bind(this)],["onCollision",this.setOnCollision.bind(this)],["relativePosition",this.setRelativePosition.bind(this)],["relativeRotation",this.setRelativeRotation.bind(this)],["tag",this.setTag.bind(this)]].forEach(([Y,$])=>{if(J[Y]!==void 0)$.call(this,J[Y])})}_autoAddToSimulation(J){if(J.simulation)this.addToSimulation(J.simulation,J.parentRigidBody)}_buildWedgeConvexHullVertices(J){let{x:Z,y:Y,z:$}=J,W=Z/2,Q=$/2,X=Y/2;return new Float32Array([-W,0-X,-Q,W,0-X,-Q,W,0-X,Q,-W,0-X,Q,-W,Y-X,-Q,W,Y-X,-Q])}_createColliderDesc(J){let{shape:Z,flags:Y}=J;switch(Z){case"ball":{if(!J.radius)f.fatalError("Ball collider must have a radius!");return s0.ColliderDesc.ball(J.radius)}case"block":{if(!J.halfExtents)f.fatalError("Block collider must have halfExtents!");return s0.ColliderDesc.cuboid(J.halfExtents.x,J.halfExtents.y,J.halfExtents.z)}case"capsule":{if(!J.halfHeight||!J.radius)f.fatalError("Capsule collider must have halfHeight and radius!");return s0.ColliderDesc.capsule(J.halfHeight,J.radius)}case"cone":{if(!J.radius||!J.halfHeight)f.fatalError("Cone collider must have radius and halfHeight!");return s0.ColliderDesc.cone(J.halfHeight,J.radius)}case"cylinder":{if(!J.radius||!J.halfHeight)f.fatalError("Cylinder collider must have radius and halfHeight!");return s0.ColliderDesc.cylinder(J.halfHeight,J.radius)}case"round-cylinder":{if(!J.radius||!J.halfHeight||!J.borderRadius)f.fatalError("Round cylinder collider must have radius, halfHeight, and borderRadius!");return s0.ColliderDesc.roundCylinder(J.halfHeight,J.radius,J.borderRadius)}case"trimesh":{if(!J.indices||!J.vertices)f.fatalError("Trimesh collider must have vertices and indices!");return s0.ColliderDesc.trimesh(J.vertices,J.indices,Y)}case"voxels":{if(!J.coordinates||!J.size)f.fatalError("Voxels collider must have coordinates and size!");return s0.ColliderDesc.voxels(this._coordinatesToInt32Array(J.coordinates),J.size)}case"wedge":{if(!J.extents)f.fatalError("Wedge collider must have extents!");let $=this._buildWedgeConvexHullVertices(J.extents),W=s0.ColliderDesc.convexHull($);if(!W)throw f.fatalError("Failed to create convex hull for wedge collider!"),new Error("Convex hull creation failed");return W}default:f.fatalError(`Collider._createColliderDesc(): ${Z} is not a valid collider shape!`)}}_requireSimulated(J){if(!this.isSimulated)f.error(`Collider._requireSimulated(): Collider is not simulated, invoked method: ${J}()`);return this.isSimulated}_requireUnsimulated(J){if(this.isSimulated)f.error(`Collider._requireUnsimulated(): Collider is already simulated, invoked method: ${J}()`);return!this.isSimulated}_requireNotRemoved(J){if(this.isRemoved)f.error(`Collider._requireNotRemoved(): Collider is removed, invoked method: ${J}()`);return!this.isRemoved}_setActiveCollisionTypes(){(this._collider??this._colliderDesc).setActiveCollisionTypes(s0.ActiveCollisionTypes.DYNAMIC_DYNAMIC|s0.ActiveCollisionTypes.DYNAMIC_KINEMATIC|s0.ActiveCollisionTypes.DYNAMIC_FIXED|s0.ActiveCollisionTypes.KINEMATIC_KINEMATIC|s0.ActiveCollisionTypes.KINEMATIC_FIXED)}_coordinatesToInt32Array(J){let Z=new Int32Array(J.length*3);for(let Y=0;Y<J.length;Y++){let $=J[Y],W=Y*3;Z[W]=Math.floor($.x),Z[W+1]=Math.floor($.y),Z[W+2]=Math.floor($.z)}return Z}}var CU1={shape:"voxels"},_j;((Y)=>{Y.ENTITY_COLLISION="BLOCK_TYPE.ENTITY_COLLISION";Y.ENTITY_CONTACT_FORCE="BLOCK_TYPE.ENTITY_CONTACT_FORCE"})(_j||={});class N5 extends S0{_id;_customColliderOptions;_isLiquid;_name;_textureUri;constructor(J={id:-1,textureUri:"textures/missing.png",name:"Unknown"}){if(J.id<0)f.fatalError("BlockType.constructor(): BlockType id not set.");super();this._id=J.id,this._customColliderOptions=J.customColliderOptions,this._isLiquid=J.isLiquid??!1,this._name=J.name,this._textureUri=J.textureUri}get id(){return this._id}get colliderOptions(){return{...this._customColliderOptions,...CU1}}get isLiquid(){return this._isLiquid}get isMeshable(){return!this._customColliderOptions}get name(){return this._name}get textureUri(){return this._textureUri}createCollider(J,Z){let Y=new R5({...this.colliderOptions,coordinates:J,size:Z});if(this.isLiquid)Y.setSensor(!0);if(this.hasListeners("BLOCK_TYPE.ENTITY_COLLISION")||this.isLiquid)Y.enableCollisionEvents(!0);if(this.hasListeners("BLOCK_TYPE.ENTITY_CONTACT_FORCE"))Y.enableContactForceEvents(!0);if(D9.isDefaultCollisionGroups(Y.collisionGroups))Y.setCollisionGroups({belongsTo:[1],collidesWith:[65535&~1]});return Y}serialize(){return b0.serializeBlockType(this)}}var xj;((Z)=>Z.REGISTER_BLOCK_TYPE="BLOCK_TYPE_REGISTRY.REGISTER_BLOCK_TYPE")(xj||={});class jG extends S0{_blockTypes=new Map;_world;constructor(J){super();this._world=J}get world(){return this._world}getAllBlockTypes(){return Array.from(this._blockTypes.values())}getBlockType(J){let Z=this._blockTypes.get(J);if(!Z)f.fatalError(`BlockTypeRegistry.getBlockType(): BlockType with id ${J} not found.`);return Z}registerGenericBlockType(J){let Y=new class extends N5{constructor($=J){super($)}};return this.registerBlockType(Y),Y}registerBlockType(J){this._blockTypes.set(J.id,J),this.emitWithWorld(this._world,"BLOCK_TYPE_REGISTRY.REGISTER_BLOCK_TYPE",{blockTypeRegistry:this,id:J.id,blockType:J})}serialize(){return b0.serializeBlockTypeRegistry(this)}}var GC={};R9(GC,{worldSchema:()=>KC,worldPacketDefinition:()=>ko,vectorSchema:()=>P1,vectorBooleanSchema:()=>jN1,uiSchema:()=>QC,uiPacketDefinition:()=>Co,uiDatasSchema:()=>XC,uiDatasPacketDefinition:()=>To,uiDataSendPacketDefinition:()=>Vo,uiDataSchema:()=>nG,syncResponseSchema:()=>WC,syncResponsePacketDefinition:()=>Do,syncRequestSchema:()=>AD,syncRequestPacketDefinition:()=>Fo,stateRequestSchema:()=>xD,stateRequestPacketDefinition:()=>zo,sceneUIsSchema:()=>$C,sceneUIsPacketDefinition:()=>jo,sceneUISchema:()=>YC,rgbColorSchema:()=>N4,registeredPackets:()=>Fw,quaternionSchema:()=>iD,playersSchema:()=>ZC,playersPacketDefinition:()=>Po,playerSchema:()=>JC,physicsDebugRenderSchema:()=>eD,physicsDebugRenderPacketDefinition:()=>Ro,physicsDebugRaycastsSchema:()=>tD,physicsDebugRaycastsPacketDefinition:()=>No,physicsDebugRaycastSchema:()=>rD,outboundPackets:()=>zw,modelNodeOverrideSchema:()=>pD,lightsSchema:()=>oD,lightsPacketDefinition:()=>Mo,lightSchema:()=>sD,isValidPacket:()=>CN1,inputSchema:()=>_D,inputPacketDefinition:()=>Go,inboundPackets:()=>Gw,hexColorSchema:()=>vD,heartbeatSchema:()=>ID,heartbeatPacketDefinition:()=>Qo,entitySchema:()=>nD,entitiesSchema:()=>aD,entitiesPacketDefinition:()=>Oo,definePacket:()=>M0,debugConfigSchema:()=>SD,debugConfigPacketDefinition:()=>Ko,createPacket:()=>qN1,connectionSchema:()=>ED,connectionPacketDefinition:()=>Wo,chunksSchema:()=>lD,chunksPacketDefinition:()=>Bo,chunkSchema:()=>cD,chatMessagesSchema:()=>dD,chatMessagesPacketDefinition:()=>Lo,chatMessageSendPacketDefinition:()=>Xo,chatMessageSchema:()=>iG,cameraSchema:()=>uD,cameraPacketDefinition:()=>wo,blocksSchema:()=>bD,blocksPacketDefinition:()=>qo,blockTypesSchema:()=>mD,blockTypesPacketDefinition:()=>Uo,blockTypeSchema:()=>gD,blockSchema:()=>yD,bidirectionalPackets:()=>Kw,audiosSchema:()=>fD,audiosPacketDefinition:()=>Ho,audioSchema:()=>hD,PacketId:()=>C1});var Kw={};R9(Kw,{heartbeatPacketDefinition:()=>Qo,connectionPacketDefinition:()=>Wo});var TD=i(Yo(),1);class kD extends TD.default{static instance=new TD.default}var C1;((k)=>{k[k.SYNC_REQUEST=0]="SYNC_REQUEST";k[k.INPUT=1]="INPUT";k[k.STATE_REQUEST=2]="STATE_REQUEST";k[k.CHAT_MESSAGE_SEND=3]="CHAT_MESSAGE_SEND";k[k.UI_DATA_SEND=4]="UI_DATA_SEND";k[k.SYNC_RESPONSE=32]="SYNC_RESPONSE";k[k.AUDIOS=33]="AUDIOS";k[k.BLOCKS=34]="BLOCKS";k[k.BLOCK_TYPES=35]="BLOCK_TYPES";k[k.CHAT_MESSAGES=36]="CHAT_MESSAGES";k[k.CHUNKS=37]="CHUNKS";k[k.ENTITIES=38]="ENTITIES";k[k.WORLD=39]="WORLD";k[k.CAMERA=40]="CAMERA";k[k.UI=41]="UI";k[k.UI_DATAS=42]="UI_DATAS";k[k.SCENE_UIS=43]="SCENE_UIS";k[k.LIGHTS=44]="LIGHTS";k[k.PLAYERS=45]="PLAYERS";k[k.CONNECTION=116]="CONNECTION";k[k.HEARTBEAT=117]="HEARTBEAT";k[k.DEBUG_CONFIG=128]="DEBUG_CONFIG";k[k.PHYSICS_DEBUG_RENDER=192]="PHYSICS_DEBUG_RENDER";k[k.PHYSICS_DEBUG_RAYCASTS=193]="PHYSICS_DEBUG_RAYCASTS"})(C1||={});function qN1(J,Z,Y){if(!J.validate(Z))throw new Error(`Invalid payload for packet with id ${J.id}. Error: ${kD.instance.errorsText(J.validate.errors)}`);let $=[J.id,Z];if(typeof Y==="number")$.push(Y);return $}function M0(J,Z){return{id:J,schema:Z,validate:kD.instance.compile(Z)}}var UN1={type:"object",properties:{i:{type:"string"}},required:["i"],additionalProperties:!1},$o={type:"object",properties:{role:{type:"string",enum:["auto","client","server"],nullable:!0},fingerprints:{type:"array",items:{type:"object",properties:{algorithm:{type:"string",enum:["sha-1","sha-224","sha-256","sha-384","sha-512"]},value:{type:"string"}},required:["algorithm","value"]}}},required:["fingerprints"],additionalProperties:!1},wN1={type:"object",properties:{foundation:{type:"string"},priority:{type:"number"},ip:{type:"string"},address:{type:"string"},protocol:{type:"string",enum:["udp","tcp"]},port:{type:"number"},type:{type:"string",enum:["host"]},tcpType:{type:"string",enum:["passive"],nullable:!0}},required:["foundation","priority","ip","address","protocol","port","type"],additionalProperties:!1},LN1={type:"object",properties:{usernameFragment:{type:"string"},password:{type:"string"},iceLite:{type:"boolean",nullable:!0}},required:["usernameFragment","password"],additionalProperties:!1},BN1={type:"object",properties:{i:{type:"string"},l:{type:"string"}},required:["i","l"],additionalProperties:!1},ON1={type:"object",properties:{port:{type:"number"},OS:{type:"number"},MIS:{type:"number"},maxMessageSize:{type:"number"}},required:["port","OS","MIS","maxMessageSize"],additionalProperties:!0},MN1={type:"object",properties:{streamId:{type:"number"},ordered:{type:"boolean",nullable:!0},maxPacketLifeTime:{type:"number",nullable:!0},maxRetransmits:{type:"number",nullable:!0}},required:["streamId"],additionalProperties:!1},RN1={type:"object",properties:{i:{type:"string"},f:{type:"string",enum:["cs","sc"]},ip:LN1,ic:{type:"array",items:wN1},d:$o,s:ON1},required:["i","f","ip","ic","d","s"],additionalProperties:!1},NN1={type:"object",properties:{i:{type:"string"},d:$o},required:["i","d"],additionalProperties:!1},PN1={type:"object",properties:{i:{type:"string",nullable:!0},pi:{type:"string",nullable:!0},l:{type:"string"},s:MN1},required:["l","s"],additionalProperties:!1},ED={type:"object",properties:{i:{type:"string",nullable:!0},c:{...NN1,nullable:!0},ca:{...UN1,nullable:!0},d:{type:"array",items:{...PN1},nullable:!0},pa:{...BN1,nullable:!0},t:{type:"array",items:{...RN1},nullable:!0}},additionalProperties:!1};var Wo=M0(116,ED);var ID={type:"null",nullable:!0};var Qo=M0(117,ID);var Gw={};R9(Gw,{uiDataSendPacketDefinition:()=>Vo,syncRequestPacketDefinition:()=>Fo,stateRequestPacketDefinition:()=>zo,inputPacketDefinition:()=>Go,debugConfigPacketDefinition:()=>Ko,chatMessageSendPacketDefinition:()=>Xo});var vD={type:"string",pattern:"^[0-9A-Fa-f]{6}$"};var iG={type:"object",properties:{m:{type:"string"},c:{...vD,nullable:!0},p:{type:"string",nullable:!0}},required:["m"],additionalProperties:!1};var Xo=M0(3,iG);var SD={type:"object",properties:{pdr:{type:"boolean",nullable:!0}},additionalProperties:!1};var Ko=M0(128,SD);var _D={type:"object",properties:{"1":{type:"boolean",nullable:!0},"2":{type:"boolean",nullable:!0},"3":{type:"boolean",nullable:!0},"4":{type:"boolean",nullable:!0},"5":{type:"boolean",nullable:!0},"6":{type:"boolean",nullable:!0},"7":{type:"boolean",nullable:!0},"8":{type:"boolean",nullable:!0},"9":{type:"boolean",nullable:!0},"0":{type:"boolean",nullable:!0},w:{type:"boolean",nullable:!0},a:{type:"boolean",nullable:!0},s:{type:"boolean",nullable:!0},d:{type:"boolean",nullable:!0},q:{type:"boolean",nullable:!0},e:{type:"boolean",nullable:!0},r:{type:"boolean",nullable:!0},f:{type:"boolean",nullable:!0},z:{type:"boolean",nullable:!0},x:{type:"boolean",nullable:!0},c:{type:"boolean",nullable:!0},v:{type:"boolean",nullable:!0},sp:{type:"boolean",nullable:!0},sh:{type:"boolean",nullable:!0},tb:{type:"boolean",nullable:!0},ml:{type:"boolean",nullable:!0},mr:{type:"boolean",nullable:!0},cp:{type:"number",nullable:!0},cy:{type:"number",nullable:!0},sq:{type:"number",nullable:!0}},additionalProperties:!1};var Go=M0(1,_D);var xD={type:"object",properties:{},additionalProperties:!1};var zo=M0(2,xD);var AD={type:"null",nullable:!0};var Fo=M0(0,AD);var nG={type:"object",properties:{},additionalProperties:!0};var Vo=M0(4,nG);var zw={};R9(zw,{worldPacketDefinition:()=>ko,uiPacketDefinition:()=>Co,uiDatasPacketDefinition:()=>To,syncResponsePacketDefinition:()=>Do,sceneUIsPacketDefinition:()=>jo,playersPacketDefinition:()=>Po,physicsDebugRenderPacketDefinition:()=>Ro,physicsDebugRaycastsPacketDefinition:()=>No,lightsPacketDefinition:()=>Mo,entitiesPacketDefinition:()=>Oo,chunksPacketDefinition:()=>Bo,chatMessagesPacketDefinition:()=>Lo,cameraPacketDefinition:()=>wo,blocksPacketDefinition:()=>qo,blockTypesPacketDefinition:()=>Uo,audiosPacketDefinition:()=>Ho});var P1={type:"array",items:[{type:"number"},{type:"number"},{type:"number"}],minItems:3,maxItems:3};var hD={type:"object",properties:{i:{type:"number"},a:{type:"string",nullable:!0},cd:{type:"number",nullable:!0},d:{type:"number",nullable:!0},de:{type:"number",nullable:!0},di:{type:"number",minimum:0,nullable:!0},e:{type:"number",nullable:!0},l:{type:"boolean",nullable:!0},o:{type:"number",nullable:!0},p:{...P1,nullable:!0},pa:{type:"boolean",nullable:!0},pl:{type:"boolean",nullable:!0},pr:{type:"number",minimum:0,nullable:!0},r:{type:"boolean",nullable:!0},rd:{type:"number",nullable:!0},s:{type:"number",nullable:!0},v:{type:"number",minimum:0,maximum:1,nullable:!0}},required:["i"],additionalProperties:!1};var fD={type:"array",items:{...hD}};var Ho=M0(33,fD);var yD={type:"object",properties:{i:{type:"number"},c:P1},required:["i","c"],additionalProperties:!1};var bD={type:"array",items:{...yD}};var qo=M0(34,bD);var gD={type:"object",properties:{i:{type:"number"},l:{type:"boolean",nullable:!0},n:{type:"string",nullable:!0},t:{type:"string",nullable:!0}},required:["i"],additionalProperties:!1};var mD={type:"array",items:{...gD}};var Uo=M0(35,mD);var uD={type:"object",properties:{m:{type:"number",nullable:!0},e:{type:"number",nullable:!0},et:{type:"number",nullable:!0},fo:{type:"number",nullable:!0},ffo:{type:"number",nullable:!0},fv:{type:"number",nullable:!0},p:{...P1,nullable:!0},pt:{...P1,nullable:!0},pl:{...P1,nullable:!0},h:{type:"array",items:{type:"string"},nullable:!0},o:{...P1,nullable:!0},z:{type:"number",nullable:!0}},additionalProperties:!1};var dD={type:"array",items:{...iG}};var cD={type:"object",properties:{c:P1,b:{type:"array",items:{type:"number",minimum:0,maximum:255},minItems:4096,maxItems:4096,nullable:!0},rm:{type:"boolean",nullable:!0}},required:["c"],additionalProperties:!1};var lD={type:"array",items:{...cD}};var N4={type:"array",items:[{type:"number",minimum:0,maximum:255},{type:"number",minimum:0,maximum:255},{type:"number",minimum:0,maximum:255}],minItems:3,maxItems:3};var pD={type:"object",properties:{n:{type:"string"},h:{type:"boolean",nullable:!0},o:{type:"number",minimum:0,maximum:1,nullable:!0},r:{type:"boolean",nullable:!0},s:{type:"number",nullable:!0},t:{...N4,nullable:!0}},required:["n"],additionalProperties:!1};var iD={type:"array",items:[{type:"number"},{type:"number"},{type:"number"},{type:"number"}],minItems:4,maxItems:4};var nD={type:"object",properties:{i:{type:"number"},al:{type:"array",items:{type:"string"},nullable:!0},ao:{type:"array",items:{type:"string"},nullable:!0},ap:{type:"number",nullable:!0},as:{type:"array",items:{type:"string"},nullable:!0},bh:{...P1,nullable:!0},bt:{type:"string",nullable:!0},h:{type:"array",items:{type:"string"},nullable:!0},m:{type:"string",nullable:!0},mo:{type:"array",items:{...pD},nullable:!0},n:{type:"string",nullable:!0},o:{type:"number",nullable:!0},p:{...P1,nullable:!0},pe:{type:"number",nullable:!0},pn:{type:"string",nullable:!0},r:{...iD,nullable:!0},rm:{type:"boolean",nullable:!0},s:{type:"number",nullable:!0},t:{...N4,nullable:!0}},required:["i"],additionalProperties:!1};var aD={type:"array",items:{...nD}};var sD={type:"object",properties:{i:{type:"number"},a:{type:"number",nullable:!0},e:{type:"number",nullable:!0},c:{...N4,nullable:!0},d:{type:"number",nullable:!0},n:{type:"number",nullable:!0},o:{...P1,nullable:!0},p:{...P1,nullable:!0},pe:{type:"number",minimum:0,maximum:1,nullable:!0},rm:{type:"boolean",nullable:!0},t:{type:"number",nullable:!0},te:{type:"number",nullable:!0},tp:{...P1,nullable:!0}},required:["i"],additionalProperties:!1};var oD={type:"array",items:{...sD}};var rD={type:"object",properties:{o:{...P1},d:{...P1},l:{type:"number"},h:{type:"boolean"}},required:["o","d","l","h"],additionalProperties:!1};var tD={type:"array",items:{...rD}};var eD={type:"object",properties:{v:{type:"array",items:{type:"number"}},c:{type:"array",items:{type:"number"}}},required:["v","c"],additionalProperties:!1};var JC={type:"object",properties:{i:{type:"string"},p:{type:"string",nullable:!0},rm:{type:"boolean",nullable:!0},u:{type:"string",nullable:!0}},required:["i"],additionalProperties:!1};var ZC={type:"array",items:{...JC}};var YC={type:"object",properties:{i:{type:"number"},e:{type:"number",nullable:!0},o:{...P1,nullable:!0},p:{...P1,nullable:!0},rm:{type:"boolean",nullable:!0},s:{type:"object",nullable:!0},t:{type:"string",nullable:!0},v:{type:"number",nullable:!0}},required:["i"],additionalProperties:!1};var $C={type:"array",items:{...YC}};var WC={type:"object",properties:{r:{type:"number"},s:{type:"number"},p:{type:"number"},n:{type:"number"}},required:["r","s","p","n"],additionalProperties:!1};var QC={type:"object",properties:{p:{type:"boolean",nullable:!0},u:{type:"string",nullable:!0}},additionalProperties:!1};var XC={type:"array",items:{...nG}};var jN1={type:"array",items:[{type:"boolean"},{type:"boolean"},{type:"boolean"}],minItems:3,maxItems:3};var KC={type:"object",properties:{i:{type:"number"},ac:{...N4,nullable:!0},ai:{type:"number",nullable:!0},dc:{...N4,nullable:!0},di:{type:"number",nullable:!0},dp:{...P1,nullable:!0},n:{type:"string",nullable:!0},s:{type:"string",nullable:!0},t:{type:"number",nullable:!0}},required:["i"],additionalProperties:!1};var wo=M0(40,uD);var Lo=M0(36,dD);var Bo=M0(37,lD);var Oo=M0(38,aD);var Mo=M0(44,oD);var Ro=M0(192,eD);var No=M0(193,tD);var Po=M0(45,ZC);var jo=M0(43,$C);var Do=M0(32,WC);var Co=M0(41,QC);var To=M0(42,XC);var ko=M0(39,KC);var Fw=new Map,DN1={...Kw,...Gw,...zw};for(let J of Object.values(DN1))if("id"in J&&"schema"in J){let Z=J;if(Fw.has(Z.id))throw new Error(`Packet with id ${Z.id} is already registered.`);Fw.set(Z.id,Z)}function CN1(J){if(typeof J!=="object"||J===null||typeof J[0]!=="number"||J[0]<0||J[1]===void 0||J[2]!==void 0&&(typeof J[2]!=="number"||J[2]<0))return!1;let Z=Fw.get(J[0]);return!!Z&&Z.validate(J[1])}var s=GC;import{WebSocket as Nr8}from"ws";var T6=i(_r(),1),jH6=T6.default.v1,DH6=T6.default.v1ToV6,CH6=T6.default.v3,xr=T6.default.v4,TH6=T6.default.v5,kH6=T6.default.v6,EH6=T6.default.v6ToV1,IH6=T6.default.v7,vH6=T6.default.NIL,SH6=T6.default.MAX,_H6=T6.default.version,xH6=T6.default.validate,AH6=T6.default.stringify,hH6=T6.default.parse;function Ar(J){let Z=J.length,Y=0,$=0;while($<Z){let W=J.charCodeAt($++);if((W&4294967168)===0){Y++;continue}else if((W&4294965248)===0)Y+=2;else{if(W>=55296&&W<=56319){if($<Z){let Q=J.charCodeAt($);if((Q&64512)===56320)++$,W=((W&1023)<<10)+(Q&1023)+65536}}if((W&4294901760)===0)Y+=3;else Y+=4}}return Y}function Jj1(J,Z,Y){let $=J.length,W=Y,Q=0;while(Q<$){let X=J.charCodeAt(Q++);if((X&4294967168)===0){Z[W++]=X;continue}else if((X&4294965248)===0)Z[W++]=X>>6&31|192;else{if(X>=55296&&X<=56319){if(Q<$){let K=J.charCodeAt(Q);if((K&64512)===56320)++Q,X=((X&1023)<<10)+(K&1023)+65536}}if((X&4294901760)===0)Z[W++]=X>>12&15|224,Z[W++]=X>>6&63|128;else Z[W++]=X>>18&7|240,Z[W++]=X>>12&63|128,Z[W++]=X>>6&63|128}Z[W++]=X&63|128}}var Zj1=new TextEncoder,Yj1=50;function $j1(J,Z,Y){Zj1.encodeInto(J,Z.subarray(Y))}function hr(J,Z,Y){if(J.length>Yj1)$j1(J,Z,Y);else Jj1(J,Z,Y)}var Wj1=4096;function wC(J,Z,Y){let $=Z,W=$+Y,Q=[],X="";while($<W){let K=J[$++];if((K&128)===0)Q.push(K);else if((K&224)===192){let G=J[$++]&63;Q.push((K&31)<<6|G)}else if((K&240)===224){let G=J[$++]&63,z=J[$++]&63;Q.push((K&31)<<12|G<<6|z)}else if((K&248)===240){let G=J[$++]&63,z=J[$++]&63,F=J[$++]&63,V=(K&7)<<18|G<<12|z<<6|F;if(V>65535)V-=65536,Q.push(V>>>10&1023|55296),V=56320|V&1023;Q.push(V)}else Q.push(K);if(Q.length>=Wj1)X+=String.fromCharCode(...Q),Q.length=0}if(Q.length>0)X+=String.fromCharCode(...Q);return X}var Qj1=new TextDecoder,Xj1=200;function Kj1(J,Z,Y){let $=J.subarray(Z,Z+Y);return Qj1.decode($)}function fr(J,Z,Y){if(Y>Xj1)return Kj1(J,Z,Y);else return wC(J,Z,Y)}class zQ{constructor(J,Z){this.type=J,this.data=Z}}class k6 extends Error{constructor(J){super(J);let Z=Object.create(k6.prototype);Object.setPrototypeOf(this,Z),Object.defineProperty(this,"name",{configurable:!0,enumerable:!1,value:k6.name})}}var FQ=4294967295;function yr(J,Z,Y){let $=Y/4294967296,W=Y;J.setUint32(Z,$),J.setUint32(Z+4,W)}function ww(J,Z,Y){let $=Math.floor(Y/4294967296),W=Y;J.setUint32(Z,$),J.setUint32(Z+4,W)}function Lw(J,Z){let Y=J.getInt32(Z),$=J.getUint32(Z+4);return Y*4294967296+$}function br(J,Z){let Y=J.getUint32(Z),$=J.getUint32(Z+4);return Y*4294967296+$}var Gj1=-1,zj1=4294967295,Fj1=17179869183;function Vj1({sec:J,nsec:Z}){if(J>=0&&Z>=0&&J<=Fj1)if(Z===0&&J<=zj1){let Y=new Uint8Array(4);return new DataView(Y.buffer).setUint32(0,J),Y}else{let Y=J/4294967296,$=J&4294967295,W=new Uint8Array(8),Q=new DataView(W.buffer);return Q.setUint32(0,Z<<2|Y&3),Q.setUint32(4,$),W}else{let Y=new Uint8Array(12),$=new DataView(Y.buffer);return $.setUint32(0,Z),ww($,4,J),Y}}function Hj1(J){let Z=J.getTime(),Y=Math.floor(Z/1000),$=(Z-Y*1000)*1e6,W=Math.floor($/1e9);return{sec:Y+W,nsec:$-W*1e9}}function qj1(J){if(J instanceof Date){let Z=Hj1(J);return Vj1(Z)}else return null}function Uj1(J){let Z=new DataView(J.buffer,J.byteOffset,J.byteLength);switch(J.byteLength){case 4:{let Y=Z.getUint32(0),$=0;return{sec:Y,nsec:0}}case 8:{let Y=Z.getUint32(0),$=Z.getUint32(4),W=(Y&3)*4294967296+$,Q=Y>>>2;return{sec:W,nsec:Q}}case 12:{let Y=Lw(Z,4),$=Z.getUint32(0);return{sec:Y,nsec:$}}default:throw new k6(`Unrecognized data size for timestamp (expected 4, 8, or 12): ${J.length}`)}}function wj1(J){let Z=Uj1(J);return new Date(Z.sec*1000+Z.nsec/1e6)}var gr={type:Gj1,encode:qj1,decode:wj1};class vY{constructor(){this.builtInEncoders=[],this.builtInDecoders=[],this.encoders=[],this.decoders=[],this.register(gr)}register({type:J,encode:Z,decode:Y}){if(J>=0)this.encoders[J]=Z,this.decoders[J]=Y;else{let $=-1-J;this.builtInEncoders[$]=Z,this.builtInDecoders[$]=Y}}tryToEncode(J,Z){for(let Y=0;Y<this.builtInEncoders.length;Y++){let $=this.builtInEncoders[Y];if($!=null){let W=$(J,Z);if(W!=null){let Q=-1-Y;return new zQ(Q,W)}}}for(let Y=0;Y<this.encoders.length;Y++){let $=this.encoders[Y];if($!=null){let W=$(J,Z);if(W!=null)return new zQ(Y,W)}}if(J instanceof zQ)return J;return null}decode(J,Z,Y){let $=Z<0?this.builtInDecoders[-1-Z]:this.decoders[Z];if($)return $(J,Z,Y);else return new zQ(Z,J)}}vY.defaultCodec=new vY;function Lj1(J){return J instanceof ArrayBuffer||typeof SharedArrayBuffer!=="undefined"&&J instanceof SharedArrayBuffer}function oG(J){if(J instanceof Uint8Array)return J;else if(ArrayBuffer.isView(J))return new Uint8Array(J.buffer,J.byteOffset,J.byteLength);else if(Lj1(J))return new Uint8Array(J);else return Uint8Array.from(J)}var Bj1=100,Oj1=2048;class Bw{constructor(J){this.entered=!1,this.extensionCodec=J?.extensionCodec??vY.defaultCodec,this.context=J?.context,this.useBigInt64=J?.useBigInt64??!1,this.maxDepth=J?.maxDepth??Bj1,this.initialBufferSize=J?.initialBufferSize??Oj1,this.sortKeys=J?.sortKeys??!1,this.forceFloat32=J?.forceFloat32??!1,this.ignoreUndefined=J?.ignoreUndefined??!1,this.forceIntegerToFloat=J?.forceIntegerToFloat??!1,this.pos=0,this.view=new DataView(new ArrayBuffer(this.initialBufferSize)),this.bytes=new Uint8Array(this.view.buffer)}clone(){return new Bw({extensionCodec:this.extensionCodec,context:this.context,useBigInt64:this.useBigInt64,maxDepth:this.maxDepth,initialBufferSize:this.initialBufferSize,sortKeys:this.sortKeys,forceFloat32:this.forceFloat32,ignoreUndefined:this.ignoreUndefined,forceIntegerToFloat:this.forceIntegerToFloat})}reinitializeState(){this.pos=0}encodeSharedRef(J){if(this.entered)return this.clone().encodeSharedRef(J);try{return this.entered=!0,this.reinitializeState(),this.doEncode(J,1),this.bytes.subarray(0,this.pos)}finally{this.entered=!1}}encode(J){if(this.entered)return this.clone().encode(J);try{return this.entered=!0,this.reinitializeState(),this.doEncode(J,1),this.bytes.slice(0,this.pos)}finally{this.entered=!1}}doEncode(J,Z){if(Z>this.maxDepth)throw new Error(`Too deep objects in depth ${Z}`);if(J==null)this.encodeNil();else if(typeof J==="boolean")this.encodeBoolean(J);else if(typeof J==="number")if(!this.forceIntegerToFloat)this.encodeNumber(J);else this.encodeNumberAsFloat(J);else if(typeof J==="string")this.encodeString(J);else if(this.useBigInt64&&typeof J==="bigint")this.encodeBigInt64(J);else this.encodeObject(J,Z)}ensureBufferSizeToWrite(J){let Z=this.pos+J;if(this.view.byteLength<Z)this.resizeBuffer(Z*2)}resizeBuffer(J){let Z=new ArrayBuffer(J),Y=new Uint8Array(Z),$=new DataView(Z);Y.set(this.bytes),this.view=$,this.bytes=Y}encodeNil(){this.writeU8(192)}encodeBoolean(J){if(J===!1)this.writeU8(194);else this.writeU8(195)}encodeNumber(J){if(!this.forceIntegerToFloat&&Number.isSafeInteger(J))if(J>=0)if(J<128)this.writeU8(J);else if(J<256)this.writeU8(204),this.writeU8(J);else if(J<65536)this.writeU8(205),this.writeU16(J);else if(J<4294967296)this.writeU8(206),this.writeU32(J);else if(!this.useBigInt64)this.writeU8(207),this.writeU64(J);else this.encodeNumberAsFloat(J);else if(J>=-32)this.writeU8(224|J+32);else if(J>=-128)this.writeU8(208),this.writeI8(J);else if(J>=-32768)this.writeU8(209),this.writeI16(J);else if(J>=-2147483648)this.writeU8(210),this.writeI32(J);else if(!this.useBigInt64)this.writeU8(211),this.writeI64(J);else this.encodeNumberAsFloat(J);else this.encodeNumberAsFloat(J)}encodeNumberAsFloat(J){if(this.forceFloat32)this.writeU8(202),this.writeF32(J);else this.writeU8(203),this.writeF64(J)}encodeBigInt64(J){if(J>=BigInt(0))this.writeU8(207),this.writeBigUint64(J);else this.writeU8(211),this.writeBigInt64(J)}writeStringHeader(J){if(J<32)this.writeU8(160+J);else if(J<256)this.writeU8(217),this.writeU8(J);else if(J<65536)this.writeU8(218),this.writeU16(J);else if(J<4294967296)this.writeU8(219),this.writeU32(J);else throw new Error(`Too long string: ${J} bytes in UTF-8`)}encodeString(J){let Y=Ar(J);this.ensureBufferSizeToWrite(5+Y),this.writeStringHeader(Y),hr(J,this.bytes,this.pos),this.pos+=Y}encodeObject(J,Z){let Y=this.extensionCodec.tryToEncode(J,this.context);if(Y!=null)this.encodeExtension(Y);else if(Array.isArray(J))this.encodeArray(J,Z);else if(ArrayBuffer.isView(J))this.encodeBinary(J);else if(typeof J==="object")this.encodeMap(J,Z);else throw new Error(`Unrecognized object: ${Object.prototype.toString.apply(J)}`)}encodeBinary(J){let Z=J.byteLength;if(Z<256)this.writeU8(196),this.writeU8(Z);else if(Z<65536)this.writeU8(197),this.writeU16(Z);else if(Z<4294967296)this.writeU8(198),this.writeU32(Z);else throw new Error(`Too large binary: ${Z}`);let Y=oG(J);this.writeU8a(Y)}encodeArray(J,Z){let Y=J.length;if(Y<16)this.writeU8(144+Y);else if(Y<65536)this.writeU8(220),this.writeU16(Y);else if(Y<4294967296)this.writeU8(221),this.writeU32(Y);else throw new Error(`Too large array: ${Y}`);for(let $ of J)this.doEncode($,Z+1)}countWithoutUndefined(J,Z){let Y=0;for(let $ of Z)if(J[$]!==void 0)Y++;return Y}encodeMap(J,Z){let Y=Object.keys(J);if(this.sortKeys)Y.sort();let $=this.ignoreUndefined?this.countWithoutUndefined(J,Y):Y.length;if($<16)this.writeU8(128+$);else if($<65536)this.writeU8(222),this.writeU16($);else if($<4294967296)this.writeU8(223),this.writeU32($);else throw new Error(`Too large map object: ${$}`);for(let W of Y){let Q=J[W];if(!(this.ignoreUndefined&&Q===void 0))this.encodeString(W),this.doEncode(Q,Z+1)}}encodeExtension(J){if(typeof J.data==="function"){let Y=J.data(this.pos+6),$=Y.length;if($>=4294967296)throw new Error(`Too large extension object: ${$}`);this.writeU8(201),this.writeU32($),this.writeI8(J.type),this.writeU8a(Y);return}let Z=J.data.length;if(Z===1)this.writeU8(212);else if(Z===2)this.writeU8(213);else if(Z===4)this.writeU8(214);else if(Z===8)this.writeU8(215);else if(Z===16)this.writeU8(216);else if(Z<256)this.writeU8(199),this.writeU8(Z);else if(Z<65536)this.writeU8(200),this.writeU16(Z);else if(Z<4294967296)this.writeU8(201),this.writeU32(Z);else throw new Error(`Too large extension object: ${Z}`);this.writeI8(J.type),this.writeU8a(J.data)}writeU8(J){this.ensureBufferSizeToWrite(1),this.view.setUint8(this.pos,J),this.pos++}writeU8a(J){let Z=J.length;this.ensureBufferSizeToWrite(Z),this.bytes.set(J,this.pos),this.pos+=Z}writeI8(J){this.ensureBufferSizeToWrite(1),this.view.setInt8(this.pos,J),this.pos++}writeU16(J){this.ensureBufferSizeToWrite(2),this.view.setUint16(this.pos,J),this.pos+=2}writeI16(J){this.ensureBufferSizeToWrite(2),this.view.setInt16(this.pos,J),this.pos+=2}writeU32(J){this.ensureBufferSizeToWrite(4),this.view.setUint32(this.pos,J),this.pos+=4}writeI32(J){this.ensureBufferSizeToWrite(4),this.view.setInt32(this.pos,J),this.pos+=4}writeF32(J){this.ensureBufferSizeToWrite(4),this.view.setFloat32(this.pos,J),this.pos+=4}writeF64(J){this.ensureBufferSizeToWrite(8),this.view.setFloat64(this.pos,J),this.pos+=8}writeU64(J){this.ensureBufferSizeToWrite(8),yr(this.view,this.pos,J),this.pos+=8}writeI64(J){this.ensureBufferSizeToWrite(8),ww(this.view,this.pos,J),this.pos+=8}writeBigUint64(J){this.ensureBufferSizeToWrite(8),this.view.setBigUint64(this.pos,J),this.pos+=8}writeBigInt64(J){this.ensureBufferSizeToWrite(8),this.view.setBigInt64(this.pos,J),this.pos+=8}}function LC(J,Z){return new Bw(Z).encodeSharedRef(J)}function Ow(J){return`${J<0?"-":""}0x${Math.abs(J).toString(16).padStart(2,"0")}`}var Mj1=16,Rj1=16;class BC{constructor(J=Mj1,Z=Rj1){this.hit=0,this.miss=0,this.maxKeyLength=J,this.maxLengthPerKey=Z,this.caches=[];for(let Y=0;Y<this.maxKeyLength;Y++)this.caches.push([])}canBeCached(J){return J>0&&J<=this.maxKeyLength}find(J,Z,Y){let $=this.caches[Y-1];J:for(let W of $){let Q=W.bytes;for(let X=0;X<Y;X++)if(Q[X]!==J[Z+X])continue J;return W.str}return null}store(J,Z){let Y=this.caches[J.length-1],$={bytes:J,str:Z};if(Y.length>=this.maxLengthPerKey)Y[Math.random()*Y.length|0]=$;else Y.push($)}decode(J,Z,Y){let $=this.find(J,Z,Y);if($!=null)return this.hit++,$;this.miss++;let W=wC(J,Z,Y),Q=Uint8Array.prototype.slice.call(J,Z,Z+Y);return this.store(Q,W),W}}var OC="array",tG="map_key",ur="map_value",Nj1=(J)=>{if(typeof J==="string"||typeof J==="number")return J;throw new k6("The type of key must be string or number but "+typeof J)};class dr{constructor(){this.stack=[],this.stackHeadPosition=-1}get length(){return this.stackHeadPosition+1}top(){return this.stack[this.stackHeadPosition]}pushArrayState(J){let Z=this.getUninitializedStateFromPool();Z.type=OC,Z.position=0,Z.size=J,Z.array=new Array(J)}pushMapState(J){let Z=this.getUninitializedStateFromPool();Z.type=tG,Z.readCount=0,Z.size=J,Z.map={}}getUninitializedStateFromPool(){if(this.stackHeadPosition++,this.stackHeadPosition===this.stack.length){let J={type:void 0,size:0,array:void 0,position:0,readCount:0,map:void 0,key:null};this.stack.push(J)}return this.stack[this.stackHeadPosition]}release(J){if(this.stack[this.stackHeadPosition]!==J)throw new Error("Invalid stack state. Released state is not on top of the stack.");if(J.type===OC){let Y=J;Y.size=0,Y.array=void 0,Y.position=0,Y.type=void 0}if(J.type===tG||J.type===ur){let Y=J;Y.size=0,Y.map=void 0,Y.readCount=0,Y.type=void 0}this.stackHeadPosition--}reset(){this.stack.length=0,this.stackHeadPosition=-1}}var rG=-1,MC=new DataView(new ArrayBuffer(0)),Pj1=new Uint8Array(MC.buffer);try{MC.getInt8(0)}catch(J){if(!(J instanceof RangeError))throw new Error("This module is not supported in the current JavaScript engine because DataView does not throw RangeError on out-of-bounds access")}var mr=new RangeError("Insufficient data"),jj1=new BC;class Mw{constructor(J){this.totalPos=0,this.pos=0,this.view=MC,this.bytes=Pj1,this.headByte=rG,this.stack=new dr,this.entered=!1,this.extensionCodec=J?.extensionCodec??vY.defaultCodec,this.context=J?.context,this.useBigInt64=J?.useBigInt64??!1,this.rawStrings=J?.rawStrings??!1,this.maxStrLength=J?.maxStrLength??FQ,this.maxBinLength=J?.maxBinLength??FQ,this.maxArrayLength=J?.maxArrayLength??FQ,this.maxMapLength=J?.maxMapLength??FQ,this.maxExtLength=J?.maxExtLength??FQ,this.keyDecoder=J?.keyDecoder!==void 0?J.keyDecoder:jj1,this.mapKeyConverter=J?.mapKeyConverter??Nj1}clone(){return new Mw({extensionCodec:this.extensionCodec,context:this.context,useBigInt64:this.useBigInt64,rawStrings:this.rawStrings,maxStrLength:this.maxStrLength,maxBinLength:this.maxBinLength,maxArrayLength:this.maxArrayLength,maxMapLength:this.maxMapLength,maxExtLength:this.maxExtLength,keyDecoder:this.keyDecoder})}reinitializeState(){this.totalPos=0,this.headByte=rG,this.stack.reset()}setBuffer(J){let Z=oG(J);this.bytes=Z,this.view=new DataView(Z.buffer,Z.byteOffset,Z.byteLength),this.pos=0}appendBuffer(J){if(this.headByte===rG&&!this.hasRemaining(1))this.setBuffer(J);else{let Z=this.bytes.subarray(this.pos),Y=oG(J),$=new Uint8Array(Z.length+Y.length);$.set(Z),$.set(Y,Z.length),this.setBuffer($)}}hasRemaining(J){return this.view.byteLength-this.pos>=J}createExtraByteError(J){let{view:Z,pos:Y}=this;return new RangeError(`Extra ${Z.byteLength-Y} of ${Z.byteLength} byte(s) found at buffer[${J}]`)}decode(J){if(this.entered)return this.clone().decode(J);try{this.entered=!0,this.reinitializeState(),this.setBuffer(J);let Z=this.doDecodeSync();if(this.hasRemaining(1))throw this.createExtraByteError(this.pos);return Z}finally{this.entered=!1}}*decodeMulti(J){if(this.entered){yield*this.clone().decodeMulti(J);return}try{this.entered=!0,this.reinitializeState(),this.setBuffer(J);while(this.hasRemaining(1))yield this.doDecodeSync()}finally{this.entered=!1}}async decodeAsync(J){if(this.entered)return this.clone().decodeAsync(J);try{this.entered=!0;let Z=!1,Y;for await(let X of J){if(Z)throw this.entered=!1,this.createExtraByteError(this.totalPos);this.appendBuffer(X);try{Y=this.doDecodeSync(),Z=!0}catch(K){if(!(K instanceof RangeError))throw K}this.totalPos+=this.pos}if(Z){if(this.hasRemaining(1))throw this.createExtraByteError(this.totalPos);return Y}let{headByte:$,pos:W,totalPos:Q}=this;throw new RangeError(`Insufficient data in parsing ${Ow($)} at ${Q} (${W} in the current buffer)`)}finally{this.entered=!1}}decodeArrayStream(J){return this.decodeMultiAsync(J,!0)}decodeStream(J){return this.decodeMultiAsync(J,!1)}async*decodeMultiAsync(J,Z){if(this.entered){yield*this.clone().decodeMultiAsync(J,Z);return}try{this.entered=!0;let Y=Z,$=-1;for await(let W of J){if(Z&&$===0)throw this.createExtraByteError(this.totalPos);if(this.appendBuffer(W),Y)$=this.readArraySize(),Y=!1,this.complete();try{while(!0)if(yield this.doDecodeSync(),--$===0)break}catch(Q){if(!(Q instanceof RangeError))throw Q}this.totalPos+=this.pos}}finally{this.entered=!1}}doDecodeSync(){J:while(!0){let J=this.readHeadByte(),Z;if(J>=224)Z=J-256;else if(J<192)if(J<128)Z=J;else if(J<144){let $=J-128;if($!==0){this.pushMapState($),this.complete();continue J}else Z={}}else if(J<160){let $=J-144;if($!==0){this.pushArrayState($),this.complete();continue J}else Z=[]}else{let $=J-160;Z=this.decodeString($,0)}else if(J===192)Z=null;else if(J===194)Z=!1;else if(J===195)Z=!0;else if(J===202)Z=this.readF32();else if(J===203)Z=this.readF64();else if(J===204)Z=this.readU8();else if(J===205)Z=this.readU16();else if(J===206)Z=this.readU32();else if(J===207)if(this.useBigInt64)Z=this.readU64AsBigInt();else Z=this.readU64();else if(J===208)Z=this.readI8();else if(J===209)Z=this.readI16();else if(J===210)Z=this.readI32();else if(J===211)if(this.useBigInt64)Z=this.readI64AsBigInt();else Z=this.readI64();else if(J===217){let $=this.lookU8();Z=this.decodeString($,1)}else if(J===218){let $=this.lookU16();Z=this.decodeString($,2)}else if(J===219){let $=this.lookU32();Z=this.decodeString($,4)}else if(J===220){let $=this.readU16();if($!==0){this.pushArrayState($),this.complete();continue J}else Z=[]}else if(J===221){let $=this.readU32();if($!==0){this.pushArrayState($),this.complete();continue J}else Z=[]}else if(J===222){let $=this.readU16();if($!==0){this.pushMapState($),this.complete();continue J}else Z={}}else if(J===223){let $=this.readU32();if($!==0){this.pushMapState($),this.complete();continue J}else Z={}}else if(J===196){let $=this.lookU8();Z=this.decodeBinary($,1)}else if(J===197){let $=this.lookU16();Z=this.decodeBinary($,2)}else if(J===198){let $=this.lookU32();Z=this.decodeBinary($,4)}else if(J===212)Z=this.decodeExtension(1,0);else if(J===213)Z=this.decodeExtension(2,0);else if(J===214)Z=this.decodeExtension(4,0);else if(J===215)Z=this.decodeExtension(8,0);else if(J===216)Z=this.decodeExtension(16,0);else if(J===199){let $=this.lookU8();Z=this.decodeExtension($,1)}else if(J===200){let $=this.lookU16();Z=this.decodeExtension($,2)}else if(J===201){let $=this.lookU32();Z=this.decodeExtension($,4)}else throw new k6(`Unrecognized type byte: ${Ow(J)}`);this.complete();let Y=this.stack;while(Y.length>0){let $=Y.top();if($.type===OC)if($.array[$.position]=Z,$.position++,$.position===$.size)Z=$.array,Y.release($);else continue J;else if($.type===tG){if(Z==="__proto__")throw new k6("The key __proto__ is not allowed");$.key=this.mapKeyConverter(Z),$.type=ur;continue J}else if($.map[$.key]=Z,$.readCount++,$.readCount===$.size)Z=$.map,Y.release($);else{$.key=null,$.type=tG;continue J}}return Z}}readHeadByte(){if(this.headByte===rG)this.headByte=this.readU8();return this.headByte}complete(){this.headByte=rG}readArraySize(){let J=this.readHeadByte();switch(J){case 220:return this.readU16();case 221:return this.readU32();default:if(J<160)return J-144;else throw new k6(`Unrecognized array type byte: ${Ow(J)}`)}}pushMapState(J){if(J>this.maxMapLength)throw new k6(`Max length exceeded: map length (${J}) > maxMapLengthLength (${this.maxMapLength})`);this.stack.pushMapState(J)}pushArrayState(J){if(J>this.maxArrayLength)throw new k6(`Max length exceeded: array length (${J}) > maxArrayLength (${this.maxArrayLength})`);this.stack.pushArrayState(J)}decodeString(J,Z){if(!this.rawStrings||this.stateIsMapKey())return this.decodeUtf8String(J,Z);return this.decodeBinary(J,Z)}decodeUtf8String(J,Z){if(J>this.maxStrLength)throw new k6(`Max length exceeded: UTF-8 byte length (${J}) > maxStrLength (${this.maxStrLength})`);if(this.bytes.byteLength<this.pos+Z+J)throw mr;let Y=this.pos+Z,$;if(this.stateIsMapKey()&&this.keyDecoder?.canBeCached(J))$=this.keyDecoder.decode(this.bytes,Y,J);else $=fr(this.bytes,Y,J);return this.pos+=Z+J,$}stateIsMapKey(){if(this.stack.length>0)return this.stack.top().type===tG;return!1}decodeBinary(J,Z){if(J>this.maxBinLength)throw new k6(`Max length exceeded: bin length (${J}) > maxBinLength (${this.maxBinLength})`);if(!this.hasRemaining(J+Z))throw mr;let Y=this.pos+Z,$=this.bytes.subarray(Y,Y+J);return this.pos+=Z+J,$}decodeExtension(J,Z){if(J>this.maxExtLength)throw new k6(`Max length exceeded: ext length (${J}) > maxExtLength (${this.maxExtLength})`);let Y=this.view.getInt8(this.pos+Z),$=this.decodeBinary(J,Z+1);return this.extensionCodec.decode($,Y,this.context)}lookU8(){return this.view.getUint8(this.pos)}lookU16(){return this.view.getUint16(this.pos)}lookU32(){return this.view.getUint32(this.pos)}readU8(){let J=this.view.getUint8(this.pos);return this.pos++,J}readI8(){let J=this.view.getInt8(this.pos);return this.pos++,J}readU16(){let J=this.view.getUint16(this.pos);return this.pos+=2,J}readI16(){let J=this.view.getInt16(this.pos);return this.pos+=2,J}readU32(){let J=this.view.getUint32(this.pos);return this.pos+=4,J}readI32(){let J=this.view.getInt32(this.pos);return this.pos+=4,J}readU64(){let J=br(this.view,this.pos);return this.pos+=8,J}readI64(){let J=Lw(this.view,this.pos);return this.pos+=8,J}readU64AsBigInt(){let J=this.view.getBigUint64(this.pos);return this.pos+=8,J}readI64AsBigInt(){let J=this.view.getBigInt64(this.pos);return this.pos+=8,J}readF32(){let J=this.view.getFloat32(this.pos);return this.pos+=4,J}readF64(){let J=this.view.getFloat64(this.pos);return this.pos+=8,J}}function RC(J,Z){return new Mw(Z).decode(J)}import{WebSocketServer as ch1}from"ws";import lh1 from"mediasoup";var T2=i(P90(),1);import mh1 from"http";import uh1 from"https";import dQ from"fs";import dh1 from"url";var n90=i(p90(),1);import nY from"fs";import i90 from"path";var t3="./dev/persistence";class I4{static instance=new I4;gameId=process.env.HYTOPIA_GAME_ID;lobbyId=process.env.HYTOPIA_LOBBY_ID;_creativeGateway;constructor(){try{this._creativeGateway=new n90.CreativeGateway}catch{console.warn(["\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501","\uD83D\uDEA8 HYTOPIA PLATFORM GATEWAY IS NOT INITIALIZED \uD83D\uDEA8","","\uD83D\uDD27 Local development is still possible, but these features will be disabled:"," \u2022 \uD83D\uDC64 Player Accounts"," \u2022 \uD83C\uDFAD Player Cosmetics"," \u2022 \uD83D\uDC1B Crash Analytics & Debug Logs","","\uD83D\uDCA1 These features will be enabled but modified:"," \u2022 \uD83D\uDCBE Player & Global Persisted Data - Data will be persisted"," locally in the ./dev/persistence directory of your project."," Player ids for data persistence will begin at 1 for the first "," player to join your local server, and increments for each"," additional player. This means that if you restart your"," server, the first player id will be 1 again. This is to ensure"," that data persistence across server restarts can be easily"," tested and debugged in local development.","","To enable the HYTOPIA Platform Gateway locally:"," 1. Set these environment variables:"," HYTOPIA_API_KEY, HYTOPIA_GAME_ID, HYTOPIA_LOBBY_ID"," 2. You can find these values at: https://create.hytopia.com","","Note: In production, these environment variables will be auto-populated ","& the HYTOPIA Platform Gateway will automatically be initialized \uD83D\uDE80","\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501",""].join(`
|
405
|
-
`))}}get isGatewayAvailable(){return!!this._creativeGateway}async getData(J){if(!this._creativeGateway&&process.env.NODE_ENV==="production")return f.warning("PlatformGateway.getData(): You are running in production mode, but the Platform Gateway is not initialized! No data will be returned.");return this._creativeGateway?await this._creativeGateway.kv.get(J):this._readDevDataLocally(J)}async getPlayerLoadout(J){if(!this._creativeGateway)return;return await this._creativeGateway.getLoadout(J)}async getPlayerSession(J){if(!this._creativeGateway)return;return await this._creativeGateway.getSession(J)}async setData(J,Z){if(Z.error)return f.warning("PlatformGateway.setData(): Cannot set data with an error property.");if(!this._creativeGateway&&process.env.NODE_ENV==="production")return f.warning("PlatformGateway.setData(): You are running in production mode, but the Platform Gateway is not initialized! No data will be set.");return this._creativeGateway?await this._creativeGateway.kv.set(J,Z):this._writeDevDataLocally(J,Z)}_readDevDataLocally(J){try{if(!nY.existsSync(t3))return;let Z=i90.join(t3,`${J}.json`);return JSON.parse(nY.readFileSync(Z,"utf8"))}catch(Z){f.warning(`PlatformGateway._readDevDataLocally(): Failed to read data for key "${J}": ${Z}`)}}_writeDevDataLocally(J,Z){try{if(!nY.existsSync(t3))nY.mkdirSync(t3,{recursive:!0});let Y=i90.join(t3,`${J}.json`),$={};if(nY.existsSync(Y))$=JSON.parse(nY.readFileSync(Y,"utf8"));let W={...$,...Z};nY.writeFileSync(Y,JSON.stringify(W,null,2),"utf8")}catch(Y){f.warning(`PlatformGateway._writeDevDataLocally(): Failed to write data for key "${J}": ${Y}`)}}}var Sk=process.env.PORT??8080,_k="0.5.6-
|
405
|
+
`))}}get isGatewayAvailable(){return!!this._creativeGateway}async getData(J){if(!this._creativeGateway&&process.env.NODE_ENV==="production")return f.warning("PlatformGateway.getData(): You are running in production mode, but the Platform Gateway is not initialized! No data will be returned.");return this._creativeGateway?await this._creativeGateway.kv.get(J):this._readDevDataLocally(J)}async getPlayerLoadout(J){if(!this._creativeGateway)return;return await this._creativeGateway.getLoadout(J)}async getPlayerSession(J){if(!this._creativeGateway)return;return await this._creativeGateway.getSession(J)}async setData(J,Z){if(Z.error)return f.warning("PlatformGateway.setData(): Cannot set data with an error property.");if(!this._creativeGateway&&process.env.NODE_ENV==="production")return f.warning("PlatformGateway.setData(): You are running in production mode, but the Platform Gateway is not initialized! No data will be set.");return this._creativeGateway?await this._creativeGateway.kv.set(J,Z):this._writeDevDataLocally(J,Z)}_readDevDataLocally(J){try{if(!nY.existsSync(t3))return;let Z=i90.join(t3,`${J}.json`);return JSON.parse(nY.readFileSync(Z,"utf8"))}catch(Z){f.warning(`PlatformGateway._readDevDataLocally(): Failed to read data for key "${J}": ${Z}`)}}_writeDevDataLocally(J,Z){try{if(!nY.existsSync(t3))nY.mkdirSync(t3,{recursive:!0});let Y=i90.join(t3,`${J}.json`),$={};if(nY.existsSync(Y))$=JSON.parse(nY.readFileSync(Y,"utf8"));let W={...$,...Z};nY.writeFileSync(Y,JSON.stringify(W,null,2),"utf8")}catch(Y){f.warning(`PlatformGateway._writeDevDataLocally(): Failed to write data for key "${J}": ${Y}`)}}}var Sk=process.env.PORT??8080,_k="0.5.6-dev8",xk;((W)=>{W.READY="WEBSERVER.READY";W.STOPPED="WEBSERVER.STOPPED";W.ERROR="WEBSERVER.ERROR";W.UPGRADE="WEBSERVER.UPGRADE"})(xk||={});class cQ extends S0{static instance=new cQ;_webserver=T2.default();_internalHttpServer;constructor(){super();this._webserver.use((J,Z,Y)=>{Z.header("Access-Control-Allow-Origin","*"),Y()}),this._webserver.get("/",(J,Z)=>{Z.json({status:"OK",version:_k})}),this._webserver.use(T2.default.static("assets")),this._webserver.use(T2.default.static("node_modules/@hytopia.com/assets"))}start(){if(!this._internalHttpServer)this._internalHttpServer=process.env.NODE_ENV==="production"?mh1.createServer(this._webserver):uh1.createServer({key:dQ.existsSync("assets/certs/localhost.key")?dQ.readFileSync("assets/certs/localhost.key"):dQ.readFileSync("node_modules/@hytopia.com/assets/certs/localhost.key"),cert:dQ.existsSync("assets/certs/localhost.crt")?dQ.readFileSync("assets/certs/localhost.crt"):dQ.readFileSync("node_modules/@hytopia.com/assets/certs/localhost.crt")},this._webserver),this._internalHttpServer.on("upgrade",this._onUpgrade),this._internalHttpServer.on("error",this._onError),this._internalHttpServer.on("close",this._onStopped);else f.warning("WebServer.start(): server already started!");this._internalHttpServer.listen(Sk,this._onStarted),console.info(`WebServer.start(): Server running on port ${Sk}.`)}stop(){if(this._internalHttpServer)return new Promise((J,Z)=>{this._internalHttpServer.close((Y)=>{if(Y)Z(Y);else J(!0)})});else return f.warning("WebServer.stop(): server not started."),Promise.resolve(!1)}_onStarted=()=>{this.emitWithGlobal("WEBSERVER.READY",{})};_onUpgrade=async(J,Z,Y)=>{let $=dh1.parse(J.url??"",!0).query,W=$.connectionId?.toString()??void 0,Q=$.sessionToken?.toString()??"",X=await I4.instance.getPlayerSession(Q);if(W)J.connectionId=W;if(X)if(!X.error)J.session=X;else{let K=`${X.error.code}: ${X.error.message}`;Z.write(`HTTP/1.1 401 Unauthorized\r
|
406
406
|
`),Z.write(`Content-Type: text/plain\r
|
407
407
|
`),Z.write(`Content-Length: ${K.length}\r
|
408
408
|
`),Z.write(`Connection: close\r
|
@@ -433,6 +433,6 @@ Event: ${cJ(J)}`),!0}return!1}function Oy1(J,Z){if(!Z?.length)return!1;return n2
|
|
433
433
|
`),U=q.shift();if(!U)return J.destroy(),Y(new Error("No header received from proxy CONNECT response"));let L=U.split(" "),w=+(L[1]||0),O=L.slice(2).join(" "),R={};for(let N of q){if(!N)continue;let P=N.indexOf(":");if(P===-1)return J.destroy(),Y(new Error(`Invalid header from proxy CONNECT response: "${N}"`));let D=N.slice(0,P).toLowerCase(),j=N.slice(P+1).trimStart(),C=R[D];if(typeof C==="string")R[D]=[C,j];else if(Array.isArray(C))C.push(j);else R[D]=j}DO("got proxy server response: %o %o",U,R),X(),Z({connect:{statusCode:w,statusText:O,headers:R},buffered:V})}J.on("error",G),J.on("end",K),Q()})}function JV(...J){g.log("[https-proxy-agent]",...J)}class CO extends GA{static __initStatic(){this.protocols=["http","https"]}constructor(J,Z){super(Z);this.options={},this.proxy=typeof J==="string"?new URL(J):J,this.proxyHeaders=Z?.headers??{},JV("Creating new HttpsProxyAgent instance: %o",this.proxy.href);let Y=(this.proxy.hostname||this.proxy.host).replace(/^\[|\]$/g,""),$=this.proxy.port?parseInt(this.proxy.port,10):this.proxy.protocol==="https:"?443:80;this.connectOpts={ALPNProtocols:["http/1.1"],...Z?e91(Z,"headers"):null,host:Y,port:$}}async connect(J,Z){let{proxy:Y}=this;if(!Z.host)throw new TypeError('No "host" provided');let $;if(Y.protocol==="https:"){JV("Creating `tls.Socket`: %o",this.connectOpts);let V=this.connectOpts.servername||this.connectOpts.host;$=zA.connect({...this.connectOpts,servername:V&&e7.isIP(V)?void 0:V})}else JV("Creating `net.Socket`: %o",this.connectOpts),$=e7.connect(this.connectOpts);let W=typeof this.proxyHeaders==="function"?this.proxyHeaders():{...this.proxyHeaders},Q=e7.isIPv6(Z.host)?`[${Z.host}]`:Z.host,X=`CONNECT ${Q}:${Z.port} HTTP/1.1\r
|
434
434
|
`;if(Y.username||Y.password){let V=`${decodeURIComponent(Y.username)}:${decodeURIComponent(Y.password)}`;W["Proxy-Authorization"]=`Basic ${Buffer.from(V).toString("base64")}`}if(W.Host=`${Q}:${Z.port}`,!W["Proxy-Connection"])W["Proxy-Connection"]=this.keepAlive?"Keep-Alive":"close";for(let V of Object.keys(W))X+=`${V}: ${W[V]}\r
|
435
435
|
`;let K=t91($);$.write(`${X}\r
|
436
|
-
`);let{connect:G,buffered:z}=await K;if(J.emit("proxyConnect",G),this.emit("proxyConnect",G,J),G.statusCode===200){if(J.once("socket",vo8),Z.secureEndpoint){JV("Upgrading socket connection to TLS");let V=Z.servername||Z.host;return zA.connect({...e91(Z,"host","path","port"),socket:$,servername:e7.isIP(V)?void 0:V})}return $}$.destroy();let F=new e7.Socket({writable:!1});return F.readable=!0,J.once("socket",(V)=>{JV("Replaying proxy buffer for failed request"),V.push(z),V.push(null)}),F}}CO.__initStatic();function vo8(J){J.resume()}function e91(J,...Z){let Y={},$;for($ in J)if(!Z.includes($))Y[$]=J[$];return Y}var ho8=32768;function fo8(J){return new xo8({read(){this.push(J),this.push(null)}})}function FA(J){let Z;try{Z=new URL(J.url)}catch(G){return q8(()=>{console.warn("[@sentry/node]: Invalid dsn or tunnel option, will not send any events. The tunnel option must be a full URL when used.")}),rJ(J,()=>Promise.resolve({}))}let Y=Z.protocol==="https:",$=yo8(Z,J.proxy||(Y?process.env.https_proxy:void 0)||process.env.http_proxy),W=Y?_o8:So8,Q=J.keepAlive===void 0?!1:J.keepAlive,X=$?new CO($):new W.Agent({keepAlive:Q,maxSockets:30,timeout:2000}),K=bo8(J,J.httpModule??W,X);return rJ(J,K)}function yo8(J,Z){let{no_proxy:Y}=process.env;if(Y?.split(",").some((W)=>J.host.endsWith(W)||J.hostname.endsWith(W)))return;else return Z}function bo8(J,Z,Y){let{hostname:$,pathname:W,port:Q,protocol:X,search:K}=new URL(J.url);return function G(z){return new Promise((F,V)=>{X$(()=>{let H=fo8(z.body),q={...J.headers};if(z.body.length>ho8)q["content-encoding"]="gzip",H=H.pipe(Ao8());let U=Z.request({method:"POST",agent:Y,headers:q,hostname:$,path:`${W}${K}`,port:Q,protocol:X,ca:J.caCerts},(L)=>{L.on("data",()=>{}),L.on("end",()=>{}),L.setEncoding("utf8");let w=L.headers["retry-after"]??null,O=L.headers["x-sentry-rate-limits"]??null;F({statusCode:L.statusCode,headers:{"retry-after":w,"x-sentry-rate-limits":Array.isArray(O)?O[0]||null:O}})});U.on("error",V),H.pipe(U)})})}}var go8=new Set(["false","f","n","no","off","0"]),mo8=new Set(["true","t","y","yes","on","1"]);function TO(J,Z){let Y=String(J).toLowerCase();if(go8.has(Y))return!1;if(mo8.has(Y))return!0;return Z?.strict?null:Boolean(J)}import{posix as uo8,sep as do8}from"path";function J41(J){return J.replace(/^[A-Z]:/,"").replace(/\\/g,"/")}function VA(J=process.argv[1]?kE(process.argv[1]):process.cwd(),Z=do8==="\\"){let Y=Z?J41(J):J;return($)=>{if(!$)return;let W=Z?J41($):$,{dir:Q,base:X,ext:K}=uo8.parse(W);if(K===".js"||K===".mjs"||K===".cjs")X=X.slice(0,K.length*-1);let G=decodeURIComponent(X);if(!Q)Q=".";let z=Q.lastIndexOf("/node_modules");if(z>-1)return`${Q.slice(z+14).replace(/\//g,".")}:${G}`;if(Q.startsWith(Y)){let F=Q.slice(Y.length+1).replace(/\//g,".");return F?`${F}:${G}`:G}return G}}function HA(J){if(process.env.SENTRY_RELEASE)return process.env.SENTRY_RELEASE;if(P0.SENTRY_RELEASE?.id)return P0.SENTRY_RELEASE.id;let Z=process.env.GITHUB_SHA||process.env.CI_MERGE_REQUEST_SOURCE_BRANCH_SHA||process.env.CI_BUILD_REF||process.env.CI_COMMIT_SHA||process.env.BITBUCKET_COMMIT,Y=process.env.APPVEYOR_PULL_REQUEST_HEAD_COMMIT||process.env.APPVEYOR_REPO_COMMIT||process.env.CODEBUILD_RESOLVED_SOURCE_VERSION||process.env.AWS_COMMIT_ID||process.env.BUILD_SOURCEVERSION||process.env.GIT_CLONE_COMMIT_HASH||process.env.BUDDY_EXECUTION_REVISION||process.env.BUILDKITE_COMMIT||process.env.CIRCLE_SHA1||process.env.CIRRUS_CHANGE_IN_REPO||process.env.CF_REVISION||process.env.CM_COMMIT||process.env.CF_PAGES_COMMIT_SHA||process.env.DRONE_COMMIT_SHA||process.env.FC_GIT_COMMIT_SHA||process.env.HEROKU_TEST_RUN_COMMIT_VERSION||process.env.HEROKU_SLUG_COMMIT||process.env.RAILWAY_GIT_COMMIT_SHA||process.env.RENDER_GIT_COMMIT||process.env.SEMAPHORE_GIT_SHA||process.env.TRAVIS_PULL_REQUEST_SHA||process.env.VERCEL_GIT_COMMIT_SHA||process.env.VERCEL_GITHUB_COMMIT_SHA||process.env.VERCEL_GITLAB_COMMIT_SHA||process.env.VERCEL_BITBUCKET_COMMIT_SHA||process.env.ZEIT_GITHUB_COMMIT_SHA||process.env.ZEIT_GITLAB_COMMIT_SHA||process.env.ZEIT_BITBUCKET_COMMIT_SHA,$=process.env.CI_COMMIT_ID||process.env.SOURCE_COMMIT||process.env.SOURCE_VERSION||process.env.GIT_COMMIT||process.env.COMMIT_REF||process.env.BUILD_VCS_NUMBER||process.env.CI_COMMIT_SHA;return Z||Y||$||J}var qA=f2(vE(VA()));var Y41=i(n(),1);import*as Z41 from"os";import{threadId as co8,isMainThread as lo8}from"worker_threads";var po8=60000;class kO extends s2{constructor(J){let Z=J.serverName||global.process.env.SENTRY_NAME||Z41.hostname(),Y={...J,platform:"node",runtime:{name:"node",version:global.process.version},serverName:Z};if(J.openTelemetryInstrumentations)jX({instrumentations:J.openTelemetryInstrumentations});Nz(Y,"node"),g.log(`Initializing Sentry: process: ${process.pid}, thread: ${lo8?"main":`worker-${co8}`}.`);super(Y);if(this.getOptions()._experiments?.enableLogs){if(this._logOnExitFlushListener=()=>{G$(this)},Z)this.on("beforeCaptureLog",($)=>{$.attributes={...$.attributes,"server.address":Z}});process.on("beforeExit",this._logOnExitFlushListener)}}get tracer(){if(this._tracer)return this._tracer;let J="@sentry/node",Z=H8,Y=Y41.trace.getTracer(J,Z);return this._tracer=Y,Y}async flush(J){let Y=this.traceProvider?.activeSpanProcessor;if(Y)await Y.forceFlush();if(this.getOptions().sendClientReports)this._flushOutcomes();return super.flush(J)}close(J){if(this._clientReportInterval)clearInterval(this._clientReportInterval);if(this._clientReportOnExitFlushListener)process.off("beforeExit",this._clientReportOnExitFlushListener);if(this._logOnExitFlushListener)process.off("beforeExit",this._logOnExitFlushListener);return super.close(J)}startClientReportTracking(){let J=this.getOptions();if(J.sendClientReports)this._clientReportOnExitFlushListener=()=>{this._flushOutcomes()},this._clientReportInterval=setInterval(()=>{_0&&g.log("Flushing client reports based on interval."),this._flushOutcomes()},J.clientReportFlushInterval??po8).unref(),process.on("beforeExit",this._clientReportOnExitFlushListener)}_getTraceInfoFromScope(J){if(!J)return[void 0,void 0];return Vo0(this,J)}}var Z4=i(n(),1);var QK=i(D1(),1);var $41=i(YB(),1);import io8 from"module";var UA=1e6;function wA(J,Z={}){if(J.getOptions().debug)so8();let Y=no8(J,Z);J.traceProvider=Y}function W41(){let[J=0,Z=0]=process.versions.node.split(".").map(Number);if(J>=21||J===20&&Z>=6||J===18&&Z>=19){if(!P0._sentryEsmLoaderHookRegistered)try{let{addHookMessagePort:Y}=$41.createAddHookMessageChannel();io8.register("import-in-the-middle/hook.mjs",import.meta.url,{data:{addHookMessagePort:Y,include:[]},transferList:[Y]})}catch(Y){g.warn("Failed to register ESM hook",Y)}}else q8(()=>{console.warn(`[Sentry] You are using Node.js v${process.versions.node} in ESM mode ("import syntax"). The Sentry Node.js SDK is not compatible with ESM in Node.js versions before 18.19.0 or before 20.6.0. Please either build your application with CommonJS ("require() syntax"), or upgrade your Node.js version.`)})}function no8(J,Z={}){let Y=new nS({sampler:new q_(J),resource:new xX({[QK.ATTR_SERVICE_NAME]:"node",[QK.SEMRESATTRS_SERVICE_NAMESPACE]:"sentry",[QK.ATTR_SERVICE_VERSION]:H8}),forceFlushTimeoutMillis:500,spanProcessors:[new H_({timeout:ao8(J.getOptions().maxSpanWaitDuration)}),...Z.spanProcessors||[]]});return Z4.trace.setGlobalTracerProvider(Y),Z4.propagation.setGlobalPropagator(new K_),Z4.context.setGlobalContextManager(new o91),Y}function ao8(J){if(J==null)return;if(J>UA)return _0&&g.warn(`\`maxSpanWaitDuration\` is too high, using the maximum value of ${UA}`),UA;else if(J<=0||Number.isNaN(J)){_0&&g.warn("`maxSpanWaitDuration` must be a positive number, using default value instead.");return}return J}function so8(){let J=new Proxy(g,{get(Z,Y,$){return Reflect.get(Z,Y==="verbose"?"debug":Y,$)}});Z4.diag.disable(),Z4.diag.setLogger(J,Z4.DiagLogLevel.DEBUG)}function oo8(){return cX()?[lX()]:[]}function Q41(){return[V$(),F$(),H$(),q$(),U$(),bX(),mX(),pX(),iX(),dX(),P_(),uX(),f91(),r91(),...oo8()]}function X41(J){return[...Q41(),..._6(J)?WK():[]]}function LA(J={}){return ro8(J,X41)}function ro8(J={},Z){let Y=to8(J,Z);if(Y.debug===!0)if(_0)g.enable();else q8(()=>{console.warn("[Sentry] Cannot initialize SDK with `debug` option using a non-debug bundle.")});if(!cX()&&Y.registerEsmLoaderHooks!==!1)W41();if(qo0(),K1().update(Y.initialScope),Y.spotlight&&!Y.integrations.some(({name:Q})=>Q===sx))Y.integrations.push(ox({sidecarUrl:typeof Y.spotlight==="string"?Y.spotlight:void 0}));let W=new kO(Y);if(K1().setClient(W),W.init(),g.log(`Running in ${cX()?"CommonJS":"ESM"} mode.`),W.startClientReportTracking(),Zr8(),!Y.skipOpenTelemetrySetup)wA(W,{spanProcessors:Y.openTelemetrySpanProcessors}),K41();return Yo0(W),Ho0(W),W}function K41(){if(!_0)return;let J=Xo0(),Z=["SentryContextManager","SentryPropagator"];if(_6())Z.push("SentrySpanProcessor");for(let Y of Z)if(!J.includes(Y))g.error(`You have to set up the ${Y}. Without this, the OpenTelemetry & Sentry integration will not work properly.`);if(!J.includes("SentrySampler"))g.warn("You have to set up the SentrySampler. Without this, the OpenTelemetry & Sentry integration may still work, but sample rates set for the Sentry SDK will not be respected. If you use a custom sampler, make sure to use `wrapSamplingDecision`.")}function to8(J,Z){let Y=eo8(J.release),$=J.spotlight??TO(process.env.SENTRY_SPOTLIGHT,{strict:!0})??process.env.SENTRY_SPOTLIGHT,W=Jr8(J.tracesSampleRate),Q={...J,dsn:J.dsn??process.env.SENTRY_DSN,environment:J.environment??process.env.SENTRY_ENVIRONMENT,sendClientReports:J.sendClientReports??!0,transport:J.transport??FA,stackParser:ZE(J.stackParser||qA),release:Y,tracesSampleRate:W,spotlight:$,debug:TO(J.debug??process.env.SENTRY_DEBUG)},X=J.integrations,K=J.defaultIntegrations??Z(Q);return{...Q,integrations:BE({defaultIntegrations:K,integrations:X})}}function eo8(J){if(J!==void 0)return J;let Z=HA();if(Z!==void 0)return Z;return}function Jr8(J){if(J!==void 0)return J;let Z=process.env.SENTRY_TRACES_SAMPLE_RATE;if(!Z)return;let Y=parseFloat(Z);return isFinite(Y)?Y:void 0}function Zr8(){if(TO(process.env.SENTRY_USE_ENVIRONMENT)!==!1){let J=process.env.SENTRY_TRACE,Z=process.env.SENTRY_BAGGAGE,Y=J$(J,Z);K1().setPropagationContext(Y)}}import*as H41 from"os";var qr8="BunServer",Ur8=()=>{return{name:qr8,setupOnce(){wr8()}}},F41=a(Ur8),G41=!1;function wr8(){if(G41)return;Bun.serve=new Proxy(Bun.serve,{apply(J,Z,Y){z41(Y[0]);let $=J.apply(Z,Y),W=$.reload.bind($);return $.reload=(Q)=>{return z41(Q),W(Q)},$}}),G41=!0}function z41(J){Lr8(J),Br8(J)}function Lr8(J){if(typeof J.fetch!=="function")return;J.fetch=new Proxy(J.fetch,{apply(Z,Y,$){return BA(Z,Y,$)}})}function Br8(J){if(!J.routes)return;if(typeof J.routes!=="object")return;Object.keys(J.routes).forEach((Z)=>{let Y=J.routes[Z];if(typeof Y==="function")J.routes[Z]=new Proxy(Y,{apply:($,W,Q)=>{return BA($,W,Q,Z)}});if(Y instanceof Response)return;if(typeof Y==="object")Object.entries(Y).forEach(([$,W])=>{if(typeof W==="function")J.routes[Z][$]=new Proxy(W,{apply:(Q,X,K)=>{return BA(Q,X,K,Z)}})})})}function BA(J,Z,Y,$){return nJ((W)=>{let Q=Y[0],X=Q.method.toUpperCase();if(X==="OPTIONS"||X==="HEAD")return J.apply(Z,Y);let K=IE(Q.url),G=Or8(K,Q),z=K?.pathname||"/";if(Q.params){if(Object.keys(Q.params).forEach((F)=>{G[`url.path.parameter.${F}`]=Q.params[F]}),$)G[y1]="route",G["url.template"]=$,z=$}if($?.endsWith("/*"))G[y1]="route",G["url.template"]=$,z=$;return W.setSDKProcessingMetadata({normalizedRequest:{url:Q.url,method:Q.method,headers:Q.headers.toJSON(),query_string:K?.search}}),Bz({sentryTrace:Q.headers.get("sentry-trace")??"",baggage:Q.headers.get("baggage")},()=>Q$({attributes:G,op:"http.server",name:`${Q.method} ${z}`},async(F)=>{try{let V=await J.apply(Z,Y);if(V?.status)Yz(F,V.status),W.setContext("response",{headers:V.headers.toJSON(),status_code:V.status});return V}catch(V){throw F6(V,{mechanism:{type:"bun",handled:!1,data:{function:"serve"}}}),V}}))})}function Or8(J,Z){let Y={[i0]:"auto.http.bun.serve",[ok]:Z.method||"GET",[y1]:"url"};if(J){if(J.search)Y["url.query"]=J.search;if(J.hash)Y["url.fragment"]=J.hash;if(J.pathname)Y["url.path"]=J.pathname;if(!EE(J)){if(Y["url.full"]=J.href,J.port)Y["url.port"]=J.port;if(J.protocol)Y["url.scheme"]=J.protocol;if(J.hostname)Y["url.domain"]=J.hostname}}return Y}function V41(J){function Z(Y){let $={body:Y.body,method:"POST",headers:J.headers};try{return X$(()=>{return fetch(J.url,$).then((W)=>{return{statusCode:W.status,headers:{"x-sentry-rate-limits":W.headers.get("X-Sentry-Rate-Limits"),"retry-after":W.headers.get("Retry-After")}}})})}catch(W){return K$(W)}}return rJ(J,Z)}function q41(J){return[V$(),F$(),H$(),q$(),U$(),bX(),mX(),pX(),iX(),dX(),uX(),lX(),F41(),..._6(J)?WK():[]]}function OA(J={}){Nz(J,"bun");let Z={...J,platform:"javascript",runtime:{name:"bun",version:Bun.version},serverName:J.serverName||global.process.env.SENTRY_NAME||H41.hostname()};if(Z.transport=Z.transport||V41,Z.defaultIntegrations===void 0)Z.defaultIntegrations=q41(Z);return LA(Z)}import{heapStats as Rr8}from"bun:jsc";if(process.env.NODE_ENV==="production"&&process.env.SENTRY_DSN)OA({dsn:process.env.SENTRY_DSN,release:_k,tracesSampleRate:1,initialScope:{tags:{gameId:process.env.HYTOPIA_GAME_ID??"unknown",gameSlug:process.env.HYTOPIA_GAME_SLUG??"unknown",lobbyId:process.env.HYTOPIA_LOBBY_ID??"unknown",region:process.env.REGION??"unknown"}},beforeSend:(J)=>{return J.extra=a1.getProcessStats(),J},beforeSendTransaction:(J)=>{if(J.contexts?.trace?.op==="ticker_tick"){let Y=J?.start_timestamp,$=J?.timestamp;if(!Y||!$)return null;if(($-Y)*1000>100)return J.measurements=a1.getProcessStats(!0),J}return null}}),console.log("Telemetry: Sentry.io initialized!");class a1{static getProcessStats(J=!1){let Z=Rr8(),Y=process.memoryUsage(),$={jsHeapSizeMb:{value:Z.heapSize/1024/1024,unit:"megabyte"},jsHeapCapacityMb:{value:Z.heapCapacity/1024/1024,unit:"megabyte"},jsHeapUsagePercent:{value:Z.heapSize/Z.heapCapacity,unit:"percent"},processHeapSizeMb:{value:Y.heapUsed/1024/1024,unit:"megabyte"}};if(J)return $;return Object.fromEntries(Object.entries($).map(([W,Q])=>[W,Q.value]))}static startSpan(J,Z){if(Mz())return Q$({attributes:J.attributes,name:J.operation,op:J.operation},Z);else return Z()}}var Pr8=5000;class aY extends S0{static _serializedPackets=new WeakMap;_closeTimeout=null;_wrtcDirectTransport=null;_wrtcClientServerTransport=null;_wrtcClientServerDataProducers=[];_wrtcClientServerDataConsumers=[];_wrtcServerClientTransport=null;_wrtcServerClientReliableDataProducer=null;_wrtcServerClientUnreliableDataProducer=null;_wrtcServerClientDataConsumers=[];_ws;id;constructor(J,Z){super();this.id=xr(),this.onPacket(s.PacketId.CONNECTION,this._onConnectionPacket),this.onPacket(s.PacketId.HEARTBEAT,this._onHeartbeatPacket),this.bindWs(J),n8.emit("CONNECTION.OPENED",{connection:this,req:Z})}static serializePackets(J){for(let Y of J)if(!s.isValidPacket(Y))return f.error(`Connection.serializePackets(): Invalid packet payload: ${JSON.stringify(Y)}`);let Z=aY._serializedPackets.get(J);if(Z)return Z;return a1.startSpan({operation:"serialize_packets",attributes:{"packets.length":J.length}},()=>{let Y=LC(J),$=Buffer.from(Y.buffer,Y.byteOffset,Y.byteLength);return aY._serializedPackets.set(J,$),$})}bindWs(J){let Z=this._closeTimeout!==null;if(Z)clearTimeout(this._closeTimeout),this._closeTimeout=null;if(this._ws=J,this._ws.binaryType="nodebuffer",this._ws.onmessage=(Y)=>this._onMessage(Y.data),this._ws.onclose=this._onWsClose,this._ws.onerror=this._onWsError,this.send([s.createPacket(s.bidirectionalPackets.connectionPacketDefinition,{i:this.id})],!0,!0),Z)this.emitWithGlobal("CONNECTION.RECONNECTED",{connection:this});if(gJ.instance.isWrtcEnabled)this._upgradeToWRTC()}closeWrtc(){this._closeWrtcClientServerTransport(),this._closeWrtcServerClientTransport()}disconnect(){try{this._ws.close()}catch(J){f.error(`Connection.disconnect(): Connection disconnect failed. Error: ${J}`)}}onPacket(J,Z){this.on("CONNECTION.PACKET_RECEIVED",({packet:Y})=>{if(Y[0]===J)Z(Y)})}send(J,Z=!0,Y=!1){if(this._closeTimeout)return;if(this._ws.readyState!==Nr8.OPEN)return f.warning("Connection.send(): Connection is not open.");a1.startSpan({operation:"send_packets",attributes:{forceWs:Y?"true":"false",wrtcConnected:this._wrtcServerClientTransport?.iceState==="completed"?"true":"false"}},()=>{try{let $=aY.serializePackets(J);if(!$)return;if(this._wrtcServerClientTransport?.iceState==="completed"&&$.length<(this._wrtcServerClientTransport?.sctpParameters?.maxMessageSize??0)&&!Y)try{(Z?this._wrtcServerClientReliableDataProducer:this._wrtcServerClientUnreliableDataProducer).send($)}catch{this._ws.send($)}else this._ws.send($);this.emitWithGlobal("CONNECTION.PACKETS_SENT",{connection:this,packets:J})}catch($){f.error(`Connection.send(): Packet send failed. Error: ${$}`)}})}_closeWrtcClientServerTransport(){this._wrtcDirectTransport?.close(),this._wrtcDirectTransport=null,this._wrtcClientServerTransport?.close(),this._wrtcClientServerTransport=null,this._wrtcClientServerDataProducers.forEach((J)=>J.close()),this._wrtcClientServerDataProducers=[],this._wrtcClientServerDataConsumers.forEach((J)=>J.close()),this._wrtcClientServerDataConsumers=[]}_closeWrtcServerClientTransport(){this._wrtcServerClientTransport?.close(),this._wrtcServerClientTransport=null,this._wrtcServerClientDataConsumers.forEach((J)=>J.close()),this._wrtcServerClientDataConsumers=[],this._wrtcServerClientReliableDataProducer?.close(),this._wrtcServerClientReliableDataProducer=null,this._wrtcServerClientUnreliableDataProducer?.close(),this._wrtcServerClientUnreliableDataProducer=null}_onConnectionPacket=async(J)=>{let Z=J[1],Y=Z.c,$=Z.d;if(Y){let{i:W,d:Q}=Y,X=!1;if(W==this._wrtcClientServerTransport?.id)await this._wrtcClientServerTransport.connect({dtlsParameters:Q}),X=!0;if(W==this._wrtcServerClientTransport?.id)await this._wrtcServerClientTransport.connect({dtlsParameters:Q}),X=!0;if(X)this.send([s.createPacket(s.bidirectionalPackets.connectionPacketDefinition,{ca:{i:W}})])}if($)for(let W of $){let{s:Q,l:X}=W,K=await this._wrtcClientServerTransport.produceData({label:X,sctpStreamParameters:Q}),G=await this._wrtcDirectTransport.consumeData({dataProducerId:K.id});this._wrtcClientServerDataProducers.push(K),this._wrtcClientServerDataConsumers.push(G),G.on("message",(z)=>this._onMessage(z)),this.send([s.createPacket(s.bidirectionalPackets.connectionPacketDefinition,{pa:{i:K.id,l:X}})])}};_onHeartbeatPacket=()=>{this.send([s.createPacket(s.bidirectionalPackets.heartbeatPacketDefinition,null)],!0,!0)};_onMessage=(J)=>{try{let Z=this._deserialize(J);if(!Z)return;this.emitWithGlobal("CONNECTION.PACKET_RECEIVED",{connection:this,packet:Z})}catch(Z){f.error(`Connection._ws.onmessage(): Error: ${Z}`)}};_onWrtcIceStateChange=(J,Z)=>{if(["disconnected","closed"].includes(Z)){if(J==this._wrtcClientServerTransport)this._closeWrtcClientServerTransport();else if(J==this._wrtcServerClientTransport)this._closeWrtcServerClientTransport()}};_onWsClose=()=>{this.closeWrtc(),this.emitWithGlobal("CONNECTION.DISCONNECTED",{connection:this}),this._closeTimeout=setTimeout(()=>{this.emitWithGlobal("CONNECTION.CLOSED",{connection:this}),this.offAll()},Pr8)};_onWsError=(J)=>{this.emitWithGlobal("CONNECTION.ERROR",{connection:this,error:J})};_upgradeToWRTC=async()=>{let J=await gJ.instance.createWrtcTransports();if(!J)return!1;let{directTransport:Z,clientServerTransport:Y,serverClientTransport:$}=J;this._wrtcDirectTransport=Z,this._wrtcClientServerTransport=Y,this._wrtcClientServerTransport.on("icestatechange",(X)=>{this._onWrtcIceStateChange(this._wrtcClientServerTransport,X)}),this._wrtcServerClientTransport=$,this._wrtcServerClientTransport.on("icestatechange",(X)=>{this._onWrtcIceStateChange(this._wrtcServerClientTransport,X)}),this._wrtcServerClientReliableDataProducer=await this._wrtcServerClientTransport.produceData({label:"scr",sctpStreamParameters:{streamId:0,ordered:!0}}),this._wrtcServerClientUnreliableDataProducer=await this._wrtcServerClientTransport.produceData({label:"scu",sctpStreamParameters:{streamId:1,ordered:!1,maxRetransmits:0}});let W=await this._wrtcServerClientTransport.consumeData({dataProducerId:this._wrtcServerClientReliableDataProducer.id}),Q=await this._wrtcServerClientTransport.consumeData({dataProducerId:this._wrtcServerClientUnreliableDataProducer.id});return this._wrtcServerClientDataConsumers.push(W,Q),this.send([s.createPacket(s.bidirectionalPackets.connectionPacketDefinition,{d:[{i:W.id,pi:W.dataProducerId,l:"scr",s:W.sctpStreamParameters},{i:Q.id,pi:Q.dataProducerId,l:"scu",s:Q.sctpStreamParameters}],t:[{i:this._wrtcClientServerTransport.id,f:"cs",d:this._wrtcClientServerTransport.dtlsParameters,ic:this._wrtcClientServerTransport.iceCandidates,ip:this._wrtcClientServerTransport.iceParameters,s:this._wrtcClientServerTransport.sctpParameters},{i:this._wrtcServerClientTransport.id,f:"sc",d:this._wrtcServerClientTransport.dtlsParameters,ic:this._wrtcServerClientTransport.iceCandidates,ip:this._wrtcServerClientTransport.iceParameters,s:this._wrtcServerClientTransport.sctpParameters}]})]),!0};_deserialize(J){let Z=RC(J);if(!Z||typeof Z!=="object"||typeof Z[0]!=="number")return f.error(`Connection._deserialize(): Invalid packet format. Packet: ${JSON.stringify(Z)}`);if(!s.isValidPacket(Z))return f.error(`Connection._deserialize(): Invalid packet payload. Packet: ${JSON.stringify(Z)}`);return Z}}var U41;(($)=>{$.PLAYER_CONNECTED="PLAYER_MANAGER.PLAYER_CONNECTED";$.PLAYER_DISCONNECTED="PLAYER_MANAGER.PLAYER_DISCONNECTED";$.PLAYER_RECONNECTED="PLAYER_MANAGER.PLAYER_RECONNECTED"})(U41||={});class j5{static instance=new j5;_connectionPlayers=new Map;constructor(){n8.on("CONNECTION.OPENED",({connection:J,req:Z})=>{this._onConnectionOpened(J,Z.session)}),n8.on("CONNECTION.DISCONNECTED",({connection:J})=>{this._onConnectionDisconnected(J)}),n8.on("CONNECTION.RECONNECTED",({connection:J})=>{this._onConnectionReconnected(J)}),n8.on("CONNECTION.CLOSED",({connection:J})=>{this._onConnectionClosed(J)})}get playerCount(){return this._connectionPlayers.size}getConnectedPlayers(){return Array.from(this._connectionPlayers.values())}getConnectedPlayersByWorld(J){return this.getConnectedPlayers().filter((Z)=>Z.world===J)}getConnectedPlayerByUsername(J){return Array.from(this._connectionPlayers.values()).find((Z)=>{return Z.username.toLowerCase()===J.toLowerCase()})}_onConnectionOpened(J,Z){let Y=new XK(J,Z);this._connectionPlayers.set(J,Y),n8.emit("PLAYER_MANAGER.PLAYER_CONNECTED",{player:Y})}_onConnectionDisconnected(J){let Z=this._connectionPlayers.get(J);if(Z)Z.resetInputs(),Z.camera.reset()}_onConnectionReconnected(J){let Z=this._connectionPlayers.get(J);if(Z)Z.reconnect(),n8.emit("PLAYER_MANAGER.PLAYER_RECONNECTED",{player:Z});else f.warning(`PlayerManager._onConnectionReconnected(): Connection ${J.id} not in the PlayerManager._connectionPlayers map.`)}_onConnectionClosed(J){let Z=this._connectionPlayers.get(J);if(Z)Z.disconnect(),this._connectionPlayers.delete(J),n8.emit("PLAYER_MANAGER.PLAYER_DISCONNECTED",{player:Z});else f.warning(`PlayerManager._onConnectionClosed(): Connection ${J.id} not in the PlayerManager._connectionPlayers map.`)}}var S8=16,MA=S8-1,jr8=S8**3,RA;(($)=>{$.DESPAWN="CHUNK.DESPAWN";$.SET_BLOCK="CHUNK.SET_BLOCK";$.SPAWN="CHUNK.SPAWN"})(RA||={});class _5 extends S0{_blocks;_blockIdColliders=new Map;_blockIdCounts=new Map;_blockIdCoordinatesPendingAdd=new Map;_blockIdCoordinatesPendingRemove=new Map;_originCoordinate;_requiresUpdate=!1;_rigidBody;_world;constructor(){super();this._blocks=new Uint8Array(jr8)}get blocks(){return this._blocks}get isSimulated(){return!!this._rigidBody}get isSpawned(){return!!this._originCoordinate&&!!this._world}get originCoordinate(){return this._originCoordinate}get requiresUpdate(){return this._requiresUpdate}get world(){return this._world}static blockIndexToLocalCoordinate(J){return{x:J%S8,y:(J/S8|0)%S8,z:J/(S8*S8)|0}}static globalCoordinateToLocalCoordinate(J){return{x:J.x&S8-1,y:J.y&S8-1,z:J.z&S8-1}}static globalCoordinateToOriginCoordinate(J){return{x:J.x&~(S8-1),y:J.y&~(S8-1),z:J.z&~(S8-1)}}static isValidOriginCoordinate(J){return J.x%S8===0&&J.y%S8===0&&J.z%S8===0}spawn(J,Z){if(this.isSpawned){let{x:Y,y:$,z:W}=this.originCoordinate;return f.error(`Chunk.spawn(): Chunk is already spawned at origin ${Y}, ${$}, ${W}!`)}if(!_5.isValidOriginCoordinate(Z))return f.error(`Chunk.spawn(): Chunk coordinates must be divisible by ${S8}`);this._originCoordinate=Z,this._world=J,this._world.chunkLattice.registerChunk(this),this._requiresUpdate=!0}despawn(){if(!this.isSpawned)return f.error("Chunk.despawn(): Chunk has not been spawned and cannot be despawned!");this.emitWithWorld(this._world,"CHUNK.DESPAWN",{chunk:this}),this._removeFromSimulation(),this._world.chunkLattice.unregisterChunk(this),this._originCoordinate=void 0,this._world=void 0}getBlockId(J){return this._blocks[this._getIndex(J)]}hasBlock(J){return this._blocks[this._getIndex(J)]!==0}setBlock(J,Z){if(!this._isValidLocalCoordinate(J))return f.error("Chunk.setBlock(): Block local coordinate is out of bounds");let Y=this._getIndex(J),$=this._blocks[Y];if($===Z)return;if($!==0){this._blockIdCounts.set($,(this._blockIdCounts.get($)??0)-1);let W=this._blockIdCoordinatesPendingRemove.get($);if(!W)W=[],this._blockIdCoordinatesPendingRemove.set($,W);W.push(J)}if(Z!==0){this._blockIdCounts.set(Z,(this._blockIdCounts.get(Z)??0)+1);let W=this._blockIdCoordinatesPendingAdd.get(Z);if(!W)W=[],this._blockIdCoordinatesPendingAdd.set(Z,W);W.push(J)}if(this._blocks[Y]=Z,this.isSpawned&&this.isSimulated)this.emitWithWorld(this._world,"CHUNK.SET_BLOCK",{chunk:this,globalCoordinate:this._getGlobalCoordinate(J),localCoordinate:J,blockTypeId:Z});this._requiresUpdate=!0}update(){if(!this._requiresUpdate)return;if(!this.isSpawned)return f.error("Chunk.update(): Chunk is not spawned and cannot be updated.");let J=!this._rigidBody;this._rigidBody??=new jY({type:"fixed",position:this._originCoordinate,simulation:this._world.simulation});for(let[Z,Y]of this._blockIdCoordinatesPendingAdd){let $=this._blockIdColliders.get(Z);if(!$){let W=this._world.blockTypeRegistry.getBlockType(Z),Q=W.createCollider(Y,{x:1,y:1,z:1}),X=this._world.simulation;Q.addToSimulation(X,this._rigidBody),X.colliderMap.setColliderBlockType(Q,W),this._blockIdColliders.set(Z,Q)}else for(let W of Y)$.setVoxel(W,!0)}for(let[Z,Y]of this._blockIdCoordinatesPendingRemove){let $=this._blockIdColliders.get(Z);if(!$)continue;if(this._blockIdCounts.get(Z)===0)$.removeFromSimulation(),this._blockIdColliders.delete(Z);else for(let W of Y)$.setVoxel(W,!1)}if(this._blockIdCoordinatesPendingAdd.clear(),this._blockIdCoordinatesPendingRemove.clear(),this._requiresUpdate=!1,J)this.emitWithWorld(this._world,"CHUNK.SPAWN",{chunk:this})}serialize(){return b0.serializeChunk(this)}_removeFromSimulation(){if(!this._rigidBody||!this._world)return;this._rigidBody.removeFromSimulation(),this._rigidBody=void 0}_getGlobalCoordinate(J){if(!this.originCoordinate)f.fatalError("Chunk._getGlobalCoordinate(): Chunk is not spawned, calculating global coordinate is impossible.");return{x:this.originCoordinate.x+J.x,y:this.originCoordinate.y+J.y,z:this.originCoordinate.z+J.z}}_getIndex(J){return J.x+(J.y<<4)+(J.z<<8)}_isValidLocalCoordinate(J){return J.x>=0&&J.x<=MA&&J.y>=0&&J.y<=MA&&J.z>=0&&J.z<=MA}}class ZV{_chunks=new Map;_world;constructor(J){this._world=J}get chunkCount(){return this._chunks.size}registerChunk(J){if(!J.isSpawned)return f.error("ChunkLattice.registerChunk(): Chunk is not spawned.");if(this.hasChunk(J.originCoordinate)){let{x:Z,y:Y,z:$}=J.originCoordinate;return f.error(`ChunkLattice.registerChunk(): Chunk exists at origin (${Z}, ${Y}, ${$}), despawn the current chunk before registering another at the same origin.`)}if(J.world.id!==this._world.id)return f.error("ChunkLattice.registerChunk(): Chunk world does not match lattice world.");this._chunks.set(this._getChunkKey(J.originCoordinate),J)}unregisterChunk(J){if(!J.isSpawned)return f.error("ChunkLattice.unregisterChunk(): Chunk is not spawned.");if(J.world.id!==this._world.id)return f.error("ChunkLattice.unregisterChunk(): Chunk world does not match lattice world.");this._chunks.delete(this._getChunkKey(J.originCoordinate))}clear(){this._chunks.forEach((J)=>J.despawn()),this._chunks.clear()}getBlockId(J){let Z=this.getChunk(_5.globalCoordinateToOriginCoordinate(J));if(!Z)return 0;return Z.getBlockId(_5.globalCoordinateToLocalCoordinate(J))}getBlockType(J){let Z=this.getBlockId(J);return Z?this._world.blockTypeRegistry.getBlockType(Z):null}getChunk(J){if(!_5.isValidOriginCoordinate(J)){f.error(`ChunkLattice.getChunk(): Chunk coordinates must be divisible by CHUNK_SIZE (${S8})`);return}return this._chunks.get(this._getChunkKey(J))}getAllChunks(){return Array.from(this._chunks.values())}hasBlock(J){let Z=this.getChunk(_5.globalCoordinateToOriginCoordinate(J));if(!Z)return!1;return Z.hasBlock(_5.globalCoordinateToLocalCoordinate(J))}hasChunk(J){return this._chunks.has(this._getChunkKey(J))}setBlock(J,Z){let Y=_5.globalCoordinateToLocalCoordinate(J),$=_5.globalCoordinateToOriginCoordinate(J),W=this.getChunk($);if(!W)W=new _5,W.spawn(this._world,$);W.setBlock(Y,Z)}updateChunks(){this._chunks.forEach((J)=>{if(J.requiresUpdate)J.update()})}_getChunkKey(J){return`${J.x},${J.y},${J.z}`}}var w41={type:"dynamic",softCcdPrediction:1},L41=0.0025000000000000005,B41=Math.cos(0.005),YV;((O)=>{O.BLOCK_COLLISION="ENTITY.BLOCK_COLLISION";O.BLOCK_CONTACT_FORCE="ENTITY.BLOCK_CONTACT_FORCE";O.DESPAWN="ENTITY.DESPAWN";O.ENTITY_COLLISION="ENTITY.ENTITY_COLLISION";O.ENTITY_CONTACT_FORCE="ENTITY.ENTITY_CONTACT_FORCE";O.SET_MODEL_ANIMATIONS_PLAYBACK_RATE="ENTITY.SET_MODEL_ANIMATIONS_PLAYBACK_RATE";O.SET_MODEL_HIDDEN_NODES="ENTITY.SET_MODEL_HIDDEN_NODES";O.SET_OPACITY="ENTITY.SET_OPACITY";O.SET_PARENT="ENTITY.SET_PARENT";O.SET_TINT_COLOR="ENTITY.SET_TINT_COLOR";O.SPAWN="ENTITY.SPAWN";O.START_MODEL_LOOPED_ANIMATIONS="ENTITY.START_MODEL_LOOPED_ANIMATIONS";O.START_MODEL_ONESHOT_ANIMATIONS="ENTITY.START_MODEL_ONESHOT_ANIMATIONS";O.STOP_MODEL_ANIMATIONS="ENTITY.STOP_MODEL_ANIMATIONS";O.TICK="ENTITY.TICK";O.UPDATE_POSITION="ENTITY.UPDATE_POSITION";O.UPDATE_ROTATION="ENTITY.UPDATE_ROTATION"})(YV||={});class _8 extends jY{_id;_blockHalfExtents;_blockTextureUri;_controller;_modelAnimationsPlaybackRate=1;_modelHiddenNodes=new Set;_modelLoopedAnimations=new Set;_modelOneshotAnimations=new Set;_modelPreferredShape;_modelScale;_modelUri;_name;_opacity;_parent;_parentNodeName;_tag;_tintColor;_lastUpdatedPosition={x:0,y:0,z:0};_lastUpdatedRotation={x:0,y:0,z:0,w:1};_lastParentlessType="dynamic";_world;constructor(J){let Z="blockTextureUri"in J,Y="modelUri"in J;if(!Z===!Y)f.fatalError("Entity.constructor(): Entity data must include a blockTextureUri or modelUri, but not both.");if(Z&&!J.blockHalfExtents)f.fatalError("Entity.constructor(): Block entity must have blockHalfExtents!");if(J.parent&&!J.parent.isSpawned)f.fatalError("Entity.constructor(): Parent entity must be spawned before child entity!");if(J.parent?.modelUri&&J.parentNodeName&&!u5.instance.modelHasNode(J.parent.modelUri,J.parentNodeName))f.fatalError(`Entity.constructor(): Parent node name ${J.parentNodeName} not found in parent model ${J.parent.modelUri}!`);super(J.rigidBodyOptions??w41);if(Z)this._blockHalfExtents=J.blockHalfExtents,this._blockTextureUri=J.blockTextureUri;if(Y)this._modelAnimationsPlaybackRate=J.modelAnimationsPlaybackRate??1,this._modelPreferredShape=J.modelPreferredShape,this._modelScale=J.modelScale,this._modelUri=J.modelUri,J.modelHiddenNodes?.forEach(($)=>this._modelHiddenNodes.add($.toLowerCase())),J.modelLoopedAnimations?.forEach(($)=>this._modelLoopedAnimations.add($));if(this._name=J.name??"Nameless",this._opacity=J.opacity??1,this._parent=J.parent,this._parentNodeName=J.parentNodeName,this._tag=J.tag,this._tintColor=J.tintColor,J.controller)this.setController(J.controller)}get id(){return this._id}get blockHalfExtents(){return this._blockHalfExtents}get blockTextureUri(){return this._blockTextureUri}get controller(){return this._controller}get height(){return this.isModelEntity?u5.instance.getHeight(this._modelUri)*(this._modelScale??1):this._blockHalfExtents.y*2}get modelAnimationsPlaybackRate(){return this._modelAnimationsPlaybackRate}get modelHiddenNodes(){return this._modelHiddenNodes}get modelLoopedAnimations(){return this._modelLoopedAnimations}get modelPreferredShape(){return this._modelPreferredShape}get modelScale(){return this._modelScale}get modelUri(){return this._modelUri}get name(){return this._name}get opacity(){return this._opacity}get parent(){return this._parent}get parentNodeName(){return this._parentNodeName}get tag(){return this._tag}get tintColor(){return this._tintColor}get isBlockEntity(){return!!this._blockTextureUri}get isModelEntity(){return!!this._modelUri}get isSpawned(){return!!this._world}get world(){return this._world}spawn(J,Z,Y){if(this.isSpawned)return f.error(`Entity.spawn(): Entity ${this._name} is already spawned with id ${this._id}!`);if(!this.isSimulated)this.addToSimulation(J.simulation);if(this._blockTextureUri&&this._blockHalfExtents&&this.numColliders===0)this.addChildColliderToSimulation(new R5(R5.optionsFromBlockHalfExtents(this._blockHalfExtents)));if(this._modelUri&&this.numColliders===0&&this._modelPreferredShape!=="none")this.addChildColliderToSimulation(new R5(R5.optionsFromModelUri(this._modelUri,this._modelScale,this._modelPreferredShape)));if(this.colliders.forEach(($)=>{if(this.hasListeners("ENTITY.BLOCK_COLLISION")||this.hasListeners("ENTITY.ENTITY_COLLISION"))$.enableCollisionEvents(!0);if(this.hasListeners("ENTITY.BLOCK_CONTACT_FORCE")||this.hasListeners("ENTITY.ENTITY_CONTACT_FORCE"))$.enableContactForceEvents(!0);if(D9.isDefaultCollisionGroups($.collisionGroups))$.setCollisionGroups({belongsTo:[$.isSensor?4:2],collidesWith:[65535]})}),this.setPosition(Z),Y)this.setRotation(Y);if(this._id=J.entityManager.registerEntity(this),this._world=J,this._controller)this._controller.spawn(this);if(this._parent)this.setParent(this._parent,this._parentNodeName,Z,Y);this.colliders.forEach(($)=>{J.simulation.colliderMap.setColliderEntity($,this)}),this.emitWithWorld(J,"ENTITY.SPAWN",{entity:this})}despawn(){if(!this._requireSpawned("despawn"))return;if(this._world.entityManager.getEntityChildren(this).forEach((J)=>{J.despawn()}),this._controller)this._controller.detach(this),this._controller.despawn(this);if(this.emitWithWorld(this._world,"ENTITY.DESPAWN",{entity:this}),this.isSimulated)this.removeFromSimulation();this._world.entityManager.unregisterEntity(this),this._world.audioManager.unregisterEntityAttachedAudios(this),this._world.lightManager.despawnEntityAttachedLights(this),this._world.sceneUIManager.unloadEntityAttachedSceneUIs(this),this._id=void 0,this._world=void 0}setModelAnimationsPlaybackRate(J){if(!this._requireSpawned("setModelAnimationsPlaybackRate"))return;if(!this.isModelEntity||this._modelAnimationsPlaybackRate===J)return;this._modelAnimationsPlaybackRate=J,this.emitWithWorld(this._world,"ENTITY.SET_MODEL_ANIMATIONS_PLAYBACK_RATE",{entity:this,playbackRate:J})}setController(J){if(this._controller===J)return;if(this._controller)this._controller.detach(this);if(this._controller=J,this._controller)this._controller.attach(this)}setModelHiddenNodes(J){if(!this._requireSpawned("setModelHiddenNodes"))return;this._modelHiddenNodes=new Set(J.map((Z)=>Z.toLowerCase())),this.emitWithWorld(this._world,"ENTITY.SET_MODEL_HIDDEN_NODES",{entity:this,modelHiddenNodes:this._modelHiddenNodes})}setOpacity(J){if(!this._requireSpawned("setOpacity"))return;if(this._opacity===J)return;this._opacity=J,this.emitWithWorld(this._world,"ENTITY.SET_OPACITY",{entity:this,opacity:J})}setParent(J,Z,Y,$){if(!this._requireSpawned("setParent"))return;if(J&&!J.isSpawned)return f.error("Entity.setParent(): Parent entity is not spawned, cannot set parent!");if(!this._parent&&J)this._lastParentlessType=this.type;if(this._parent=J,this._parentNodeName=Z,this.colliders.forEach((W)=>W.setEnabled(!J)),this.setType(!J?this._lastParentlessType:"kinematic_velocity"),this.setPosition(Y??{x:0,y:0,z:0}),this.setRotation($??{x:0,y:0,z:0,w:1}),!this.isKinematicPositionBased)this.resetAngularVelocity(),this.resetForces(),this.resetLinearVelocity(),this.resetTorques();this.emitWithWorld(this._world,"ENTITY.SET_PARENT",{entity:this,parent:J,parentNodeName:Z})}setTintColor(J){if(!this._requireSpawned("setTintColor"))return;if(!J&&!this._tintColor||J&&this._tintColor&&J.r===this._tintColor.r&&J.g===this._tintColor.g&&J.b===this._tintColor.b)return;this._tintColor=J,this.emitWithWorld(this._world,"ENTITY.SET_TINT_COLOR",{entity:this,tintColor:J})}startModelLoopedAnimations(J){if(!this._requireSpawned("startModelLoopedAnimations"))return;if(!this.isModelEntity||!J.length)return;if(!J.some((Z)=>!this._modelLoopedAnimations.has(Z)))return;J.forEach((Z)=>{this._modelLoopedAnimations.add(Z)}),this.emitWithWorld(this._world,"ENTITY.START_MODEL_LOOPED_ANIMATIONS",{entity:this,animations:new Set(J)})}startModelOneshotAnimations(J){if(!this._requireSpawned("startModelOneshotAnimations"))return;if(!this.isModelEntity||!J.length)return;J.forEach((Z)=>{this._modelOneshotAnimations.add(Z)}),this.emitWithWorld(this._world,"ENTITY.START_MODEL_ONESHOT_ANIMATIONS",{entity:this,animations:new Set(J)})}stopModelAnimations(J){if(!this._requireSpawned("stopModelAnimations"))return;if(!this.isModelEntity||!J.length)return;if(!J.some((Z)=>this._modelLoopedAnimations.has(Z))&&!J.some((Z)=>this._modelOneshotAnimations.has(Z)))return;J.forEach((Z)=>{this._modelLoopedAnimations.delete(Z),this._modelOneshotAnimations.delete(Z)}),this.emitWithWorld(this._world,"ENTITY.STOP_MODEL_ANIMATIONS",{entity:this,animations:new Set(J)})}serialize(){return b0.serializeEntity(this)}tick(J){if(this.emit("ENTITY.TICK",{entity:this,tickDeltaMs:J}),this._controller)this._controller.tick(this,J)}checkAndEmitUpdates(){if(!this._requireSpawned("checkAndEmitUpdates"))return;let J=this.position,Z=this.rotation;if(this._rotationExceedsThreshold(Z,this._lastUpdatedRotation))this._lastUpdatedRotation=Z,this.emitWithWorld(this._world,"ENTITY.UPDATE_ROTATION",{entity:this,rotation:Z});if(this._positionExceedsThreshold(J,this._lastUpdatedPosition))this._lastUpdatedPosition=J,this.emitWithWorld(this._world,"ENTITY.UPDATE_POSITION",{entity:this,position:J})}_requireSpawned(J){if(!this.isSpawned)f.error(`Entity._requireSpawned(): Entity ${this._name} is not spawned, cannot invoke ${J}()!`);return this.isSpawned}_positionExceedsThreshold(J,Z){let Y=J.x-Z.x,$=J.y-Z.y,W=J.z-Z.z;return Y*Y+$*$+W*W>L41}_rotationExceedsThreshold(J,Z){return Math.abs(J.x*Z.x+J.y*Z.y+J.z*Z.z+J.w*Z.w)<B41}}var NA;((K)=>{K.LOAD="SCENE_UI.LOAD";K.SET_ATTACHED_TO_ENTITY="SCENE_UI.SET_ATTACHED_TO_ENTITY";K.SET_OFFSET="SCENE_UI.SET_OFFSET";K.SET_POSITION="SCENE_UI.SET_POSITION";K.SET_STATE="SCENE_UI.SET_STATE";K.SET_VIEW_DISTANCE="SCENE_UI.SET_VIEW_DISTANCE";K.UNLOAD="SCENE_UI.UNLOAD"})(NA||={});class $V extends S0{_id;_attachedToEntity;_offset;_position;_state={};_templateId;_viewDistance;_world;constructor(J){if(!!J.attachedToEntity===!!J.position)f.fatalError("Either attachedToEntity or position must be set, but not both");super();this._attachedToEntity=J.attachedToEntity,this._offset=J.offset,this._position=J.position,this._state=J.state??{},this._templateId=J.templateId,this._viewDistance=J.viewDistance}get id(){return this._id}get attachedToEntity(){return this._attachedToEntity}get isLoaded(){return this._id!==void 0}get offset(){return this._offset}get position(){return this._position}get state(){return this._state}get templateId(){return this._templateId}get viewDistance(){return this._viewDistance}get world(){return this._world}load(J){if(this.isLoaded)return;if(this._attachedToEntity&&!this._attachedToEntity.isSpawned)return f.error(`SceneUI.load(): Attached entity ${this._attachedToEntity.id} must be spawned before loading SceneUI!`);this._id=J.sceneUIManager.registerSceneUI(this),this._world=J,this.emitWithWorld(J,"SCENE_UI.LOAD",{sceneUI:this})}setAttachedToEntity(J){if(!J.isSpawned)return f.error(`SceneUI.setAttachedToEntity(): Entity ${J.id} is not spawned!`);if(this._attachedToEntity===J)return;if(this._attachedToEntity=J,this._position=void 0,this.isLoaded)this.emitWithWorld(this._world,"SCENE_UI.SET_ATTACHED_TO_ENTITY",{sceneUI:this,entity:J})}setOffset(J){if(this._offset===J)return;if(this._offset=J,this.isLoaded)this.emitWithWorld(this._world,"SCENE_UI.SET_OFFSET",{sceneUI:this,offset:J})}setPosition(J){if(this._position===J)return;if(this._attachedToEntity=void 0,this._position=J,this.isLoaded)this.emitWithWorld(this._world,"SCENE_UI.SET_POSITION",{sceneUI:this,position:J})}setState(J){if(this._state={...this._state,...J},this.isLoaded)this.emitWithWorld(this._world,"SCENE_UI.SET_STATE",{sceneUI:this,state:this._state})}setViewDistance(J){if(this._viewDistance=J,this.isLoaded)this.emitWithWorld(this._world,"SCENE_UI.SET_VIEW_DISTANCE",{sceneUI:this,viewDistance:J})}unload(){if(!this.isLoaded||!this._world)return;this._world.sceneUIManager.unregisterSceneUI(this),this.emitWithWorld(this._world,"SCENE_UI.UNLOAD",{sceneUI:this}),this._id=void 0,this._world=void 0}serialize(){return b0.serializeSceneUI(this)}}class t4 extends _8{player;nametagSceneUI;constructor(J){super(J);this.player=J.player,this.nametagSceneUI=new $V({templateId:"hytopia:nametag",attachedToEntity:this,offset:{x:0,y:1,z:0},viewDistance:15,state:{username:this.player.username,profilePictureUrl:this.player.profilePictureUrl}})}spawn(J,Z,Y){super.spawn(J,Z,Y),this.nametagSceneUI.load(J),this.player.on("PLAYER.CHAT_MESSAGE_SEND",({message:$})=>{this.nametagSceneUI.setState({chat:$})})}tick(J){if(!this.isSpawned||!this.world)return;if(!this.controller)return f.error(`PlayerEntity.tick(): PlayerEntity "${this.name}" must have a controller.`);let{input:Z,camera:Y}=this.player;this.controller.tickWithPlayerInput(this,Z,Y.orientation,J),super.tick(J)}}class QV{_entities=new Map;_nextEntityId=1;_world;constructor(J){this._world=J}get entityCount(){return this._entities.size}get world(){return this._world}registerEntity(J){if(J.id!==void 0)f.fatalError(`EntityManager.registerEntity(): Entity ${J.name} is already assigned the id ${J.id}!`);let Z=this._nextEntityId;return this._entities.set(Z,J),this._nextEntityId++,Z}unregisterEntity(J){if(J.id===void 0)return f.error(`EntityManager.unregisterEntity(): Entity ${J.name} is not assigned an id!`);this._entities.delete(J.id)}getAllEntities(){return Array.from(this._entities.values())}getAllPlayerEntities(){let J=[];return this._entities.forEach((Z)=>{if(Z instanceof t4)J.push(Z)}),J}getPlayerEntitiesByPlayer(J){let Z=[];return this._entities.forEach((Y)=>{if(Y instanceof t4&&Y.player===J)Z.push(Y)}),Z}getEntity(J){return this._entities.get(J)}getEntitiesByTag(J){let Z=[];return this._entities.forEach((Y)=>{if(Y.tag===J)Z.push(Y)}),Z}getEntitiesByTagSubstring(J){let Z=[];return this._entities.forEach((Y)=>{if(Y.tag?.includes(J))Z.push(Y)}),Z}getEntityChildren(J){let Z=[];return this._entities.forEach((Y)=>{if(Y.parent===J)Z.push(Y)}),Z}tickEntities(J){this._entities.forEach((Z)=>{Z.tick(J)})}checkAndEmitUpdates(){this._entities.forEach((J)=>{if(!J.isSpawned)return;J.checkAndEmitUpdates()})}}class XV{_lights=new Map;_nextLightId=1;_world;constructor(J){this._world=J}get world(){return this._world}despawnEntityAttachedLights(J){this.getAllEntityAttachedLights(J).forEach((Z)=>{Z.despawn()})}getAllLights(){return Array.from(this._lights.values())}getAllEntityAttachedLights(J){return this.getAllLights().filter((Z)=>Z.attachedToEntity===J)}registerLight(J){if(J.id!==void 0)return J.id;let Z=this._nextLightId;return this._lights.set(Z,J),this._nextLightId++,Z}unregisterLight(J){if(J.id===void 0)return;this._lights.delete(J.id)}}var O41;((Y)=>{Y[Y.POINTLIGHT=0]="POINTLIGHT";Y[Y.SPOTLIGHT=1]="SPOTLIGHT"})(O41||={});var PA;((H)=>{H.DESPAWN="LIGHT.DESPAWN";H.SET_ANGLE="LIGHT.SET_ANGLE";H.SET_ATTACHED_TO_ENTITY="LIGHT.SET_ATTACHED_TO_ENTITY";H.SET_COLOR="LIGHT.SET_COLOR";H.SET_DISTANCE="LIGHT.SET_DISTANCE";H.SET_INTENSITY="LIGHT.SET_INTENSITY";H.SET_OFFSET="LIGHT.SET_OFFSET";H.SET_PENUMBRA="LIGHT.SET_PENUMBRA";H.SET_POSITION="LIGHT.SET_POSITION";H.SET_TRACKED_ENTITY="LIGHT.SET_TRACKED_ENTITY";H.SET_TRACKED_POSITION="LIGHT.SET_TRACKED_POSITION";H.SPAWN="LIGHT.SPAWN"})(PA||={});class jA extends S0{_id;_angle;_attachedToEntity;_color;_distance;_intensity;_offset;_penumbra;_position;_trackedEntity;_trackedPosition;_type;_world;constructor(J){if(!!J.attachedToEntity===!!J.position)f.fatalError("Either attachedToEntity or position must be set, but not both");super();f.warning("WARNING: Lights are poorly optimized at this time. Using more than a few lights in your game can cause extremely bad performance (FPS) issues. Use lights sparingly!"),this._angle=J.angle,this._attachedToEntity=J.attachedToEntity,this._color=J.color??{r:255,g:255,b:255},this._distance=J.distance,this._intensity=J.intensity??1,this._offset=J.offset,this._penumbra=J.penumbra,this._position=J.position,this._trackedEntity=J.trackedEntity,this._trackedPosition=J.trackedPosition,this._type=J.type??0}get id(){return this._id}get angle(){return this._angle}get attachedToEntity(){return this._attachedToEntity}get color(){return this._color}get distance(){return this._distance}get intensity(){return this._intensity}get isSpawned(){return this._id!==void 0}get offset(){return this._offset}get penumbra(){return this._penumbra}get position(){return this._position}get trackedEntity(){return this._trackedEntity}get trackedPosition(){return this._trackedPosition}get type(){return this._type}get world(){return this._world}setAngle(J){if(this._angle===J)return;if(this._angle=J,this.isSpawned)this.emitWithWorld(this._world,"LIGHT.SET_ANGLE",{light:this,angle:J})}setAttachedToEntity(J){if(!J.isSpawned)return f.error(`Light.setAttachedToEntity(): Entity ${J.id} is not spawned!`);if(this._attachedToEntity===J)return;if(this._attachedToEntity=J,this._position=void 0,this.isSpawned)this.emitWithWorld(this._world,"LIGHT.SET_ATTACHED_TO_ENTITY",{light:this,entity:J})}setColor(J){if(this._color.r===J.r&&this._color.g===J.g&&this._color.b===J.b)return;if(this._color=J,this.isSpawned)this.emitWithWorld(this._world,"LIGHT.SET_COLOR",{light:this,color:J})}setDistance(J){if(this._distance===J)return;if(this._distance=J,this.isSpawned)this.emitWithWorld(this._world,"LIGHT.SET_DISTANCE",{light:this,distance:J})}setIntensity(J){if(this._intensity===J)return;if(this._intensity=J,this.isSpawned)this.emitWithWorld(this._world,"LIGHT.SET_INTENSITY",{light:this,intensity:J})}setOffset(J){if(this._offset===J)return;if(this._offset=J,this.isSpawned)this.emitWithWorld(this._world,"LIGHT.SET_OFFSET",{light:this,offset:J})}setPenumbra(J){if(this._penumbra===J)return;if(this._penumbra=J,this.isSpawned)this.emitWithWorld(this._world,"LIGHT.SET_PENUMBRA",{light:this,penumbra:J})}setPosition(J){if(this._position===J)return;if(this._position=J,this._attachedToEntity=void 0,this.isSpawned)this.emitWithWorld(this._world,"LIGHT.SET_POSITION",{light:this,position:J})}setTrackedEntity(J){if(!J.isSpawned)return f.error(`Light.setTrackedEntity(): Entity ${J.id} is not spawned!`);if(this._trackedEntity===J)return;if(this._trackedEntity=J,this._trackedPosition=void 0,this.isSpawned)this.emitWithWorld(this._world,"LIGHT.SET_TRACKED_ENTITY",{light:this,entity:J})}setTrackedPosition(J){if(this._trackedPosition===J)return;if(this._trackedPosition=J,this._trackedEntity=void 0,this.isSpawned)this.emitWithWorld(this._world,"LIGHT.SET_TRACKED_POSITION",{light:this,position:J})}despawn(){if(!this.isSpawned||!this._world)return;this._world.lightManager.unregisterLight(this),this.emitWithWorld(this._world,"LIGHT.DESPAWN",{light:this}),this._id=void 0,this._world=void 0}spawn(J){if(this.isSpawned)return;if(this._attachedToEntity&&!this._attachedToEntity.isSpawned)return f.error(`Light.spawn(): Attached entity ${this._attachedToEntity.id} must be spawned before spawning Light!`);this._id=J.lightManager.registerLight(this),this._world=J,this.emitWithWorld(J,"LIGHT.SPAWN",{light:this})}serialize(){return b0.serializeLight(this)}}var M41;(($)=>{$[$.FIRST_PERSON=0]="FIRST_PERSON";$[$.THIRD_PERSON=1]="THIRD_PERSON";$[$.SPECTATOR=2]="SPECTATOR"})(M41||={});var DA;((q)=>{q.LOOK_AT_ENTITY="PLAYER_CAMERA.LOOK_AT_ENTITY";q.LOOK_AT_POSITION="PLAYER_CAMERA.LOOK_AT_POSITION";q.SET_ATTACHED_TO_ENTITY="PLAYER_CAMERA.SET_ATTACHED_TO_ENTITY";q.SET_ATTACHED_TO_POSITION="PLAYER_CAMERA.SET_ATTACHED_TO_POSITION";q.SET_FILM_OFFSET="PLAYER_CAMERA.SET_FILM_OFFSET";q.SET_FORWARD_OFFSET="PLAYER_CAMERA.SET_FORWARD_OFFSET";q.SET_FOV="PLAYER_CAMERA.SET_FOV";q.SET_MODEL_HIDDEN_NODES="PLAYER_CAMERA.SET_MODEL_HIDDEN_NODES";q.SET_MODE="PLAYER_CAMERA.SET_MODE";q.SET_OFFSET="PLAYER_CAMERA.SET_OFFSET";q.SET_TRACKED_ENTITY="PLAYER_CAMERA.SET_TRACKED_ENTITY";q.SET_TRACKED_POSITION="PLAYER_CAMERA.SET_TRACKED_POSITION";q.SET_ZOOM="PLAYER_CAMERA.SET_ZOOM"})(DA||={});class KV extends S0{player;_attachedToEntity;_attachedToPosition;_filmOffset=0;_forwardOffset=0;_fov=75;_modelHiddenNodes=new Set;_mode=1;_offset={x:0,y:0,z:0};_orientation={pitch:0,yaw:0};_trackedEntity;_trackedPosition;_zoom=1;constructor(J){super();this.player=J}get attachedToEntity(){return this._attachedToEntity}get attachedToPosition(){return this._attachedToPosition}get facingDirection(){return{x:-Math.sin(this._orientation.yaw)*Math.cos(this._orientation.pitch),y:Math.sin(this._orientation.pitch),z:-Math.cos(this._orientation.yaw)*Math.cos(this._orientation.pitch)}}get filmOffset(){return this._filmOffset}get forwardOffset(){return this._forwardOffset}get fov(){return this._fov}get modelHiddenNodes(){return this._modelHiddenNodes}get mode(){return this._mode}get offset(){return this._offset}get orientation(){return this._orientation}get trackedEntity(){return this._trackedEntity}get trackedPosition(){return this._trackedPosition}get zoom(){return this._zoom}lookAtEntity(J){if(!this._requirePlayerWorld())return;this.emitWithWorld(this.player.world,"PLAYER_CAMERA.LOOK_AT_ENTITY",{playerCamera:this,entity:J})}lookAtPosition(J){if(!this._requirePlayerWorld())return;this.emitWithWorld(this.player.world,"PLAYER_CAMERA.LOOK_AT_POSITION",{playerCamera:this,position:J})}reset(){this._attachedToEntity=void 0,this._attachedToPosition=void 0,this._orientation={pitch:0,yaw:0},this._trackedEntity=void 0,this._trackedPosition=void 0}setAttachedToEntity(J){if(!this._requirePlayerWorld())return;if(!J.isSpawned)return f.error(`PlayerCamera.setAttachedToEntity(): Entity ${J.id} is not spawned!`);this._attachedToEntity=J,this.emitWithWorld(this.player.world,"PLAYER_CAMERA.SET_ATTACHED_TO_ENTITY",{playerCamera:this,entity:J})}setAttachedToPosition(J){if(!this._requirePlayerWorld())return;this._attachedToPosition=J,this.emitWithWorld(this.player.world,"PLAYER_CAMERA.SET_ATTACHED_TO_POSITION",{playerCamera:this,position:J})}setFilmOffset(J){if(!this._requirePlayerWorld())return;this._filmOffset=J,this.emitWithWorld(this.player.world,"PLAYER_CAMERA.SET_FILM_OFFSET",{playerCamera:this,filmOffset:J})}setForwardOffset(J){if(!this._requirePlayerWorld())return;this._forwardOffset=J,this.emitWithWorld(this.player.world,"PLAYER_CAMERA.SET_FORWARD_OFFSET",{playerCamera:this,forwardOffset:J})}setFov(J){if(!this._requirePlayerWorld())return;this._fov=J,this.emitWithWorld(this.player.world,"PLAYER_CAMERA.SET_FOV",{playerCamera:this,fov:J})}setModelHiddenNodes(J){if(!this._requirePlayerWorld())return;this._modelHiddenNodes=new Set(J.map((Z)=>Z.toLowerCase())),this.emitWithWorld(this.player.world,"PLAYER_CAMERA.SET_MODEL_HIDDEN_NODES",{playerCamera:this,modelHiddenNodes:this._modelHiddenNodes})}setMode(J){if(!this._requirePlayerWorld())return;this._mode=J,this.emitWithWorld(this.player.world,"PLAYER_CAMERA.SET_MODE",{playerCamera:this,mode:J})}setOffset(J){if(!this._requirePlayerWorld())return;this._offset=J,this.emitWithWorld(this.player.world,"PLAYER_CAMERA.SET_OFFSET",{playerCamera:this,offset:J})}setOrientationPitch(J){this._orientation.pitch=J}setOrientationYaw(J){this._orientation.yaw=J}setTrackedEntity(J){if(!this._requirePlayerWorld())return;this._trackedEntity=J,this.emitWithWorld(this.player.world,"PLAYER_CAMERA.SET_TRACKED_ENTITY",{playerCamera:this,entity:J})}setTrackedPosition(J){if(!this._requirePlayerWorld())return;this._trackedPosition=J,this.emitWithWorld(this.player.world,"PLAYER_CAMERA.SET_TRACKED_POSITION",{playerCamera:this,position:J})}setZoom(J){if(!this._requirePlayerWorld())return;this._zoom=J,this.emitWithWorld(this.player.world,"PLAYER_CAMERA.SET_ZOOM",{playerCamera:this,zoom:J})}serialize(){return b0.serializePlayerCamera(this)}_requirePlayerWorld(){if(!this.player.world)f.error(`PlayerCamera._requirePlayerWorld(): Player ${this.player.id} is not in a world!`);return!!this.player.world}}var IO;((W)=>{W.DATA="PLAYER_UI.DATA";W.LOAD="PLAYER_UI.LOAD";W.LOCK_POINTER="PLAYER_UI.LOCK_POINTER";W.SEND_DATA="PLAYER_UI.SEND_DATA"})(IO||={});class GV extends S0{player;constructor(J){super();this.player=J}load(J){if(!this.player.world)return;this.emitWithWorld(this.player.world,"PLAYER_UI.LOAD",{playerUI:this,htmlUri:J})}lockPointer(J){if(!this.player.world)return;this.emitWithWorld(this.player.world,"PLAYER_UI.LOCK_POINTER",{playerUI:this,lock:J})}sendData(J){if(!this.player.world)return;this.emitWithWorld(this.player.world,"PLAYER_UI.SEND_DATA",{playerUI:this,data:J})}}class zV{_colliderHandleBlockTypeMap=new Map;_colliderHandleCollisionCallbackMap=new Map;_colliderHandleEntityMap=new Map;_cleanupBlockTypeColliderHandles=new Set;_pendingCleanupBlockTypeColliderHandles=new Set;_cleanupCollisionCallbackColliderHandles=new Set;_pendingCleanupCollisionCallbackColliderHandles=new Set;_cleanupEntityColliderHandles=new Set;_pendingCleanupEntityColliderHandles=new Set;getColliderBlockType(J){if(!this._requireSimulatedCollider(J))return;return this._colliderHandleBlockTypeMap.get(J.rawCollider.handle)}getColliderCollisionCallback(J){if(!this._requireSimulatedCollider(J))return;return this._colliderHandleCollisionCallbackMap.get(J.rawCollider.handle)}getColliderEntity(J){if(!this._requireSimulatedCollider(J))return;return this._colliderHandleEntityMap.get(J.rawCollider.handle)}getColliderHandleBlockType(J){return this._colliderHandleBlockTypeMap.get(J)}getColliderHandleCollisionCallback(J){return this._colliderHandleCollisionCallbackMap.get(J)}getColliderHandleEntity(J){return this._colliderHandleEntityMap.get(J)}removeColliderBlockType(J){if(!this._requireSimulatedCollider(J))return;this.removeColliderHandleBlockType(J.rawCollider.handle)}removeColliderCollisionCallback(J){if(!this._requireSimulatedCollider(J))return;this.removeColliderHandleCollisionCallback(J.rawCollider.handle)}removeColliderEntity(J){if(!this._requireSimulatedCollider(J))return;this.removeColliderHandleEntity(J.rawCollider.handle)}removeColliderHandleBlockType(J){this._colliderHandleBlockTypeMap.delete(J)}removeColliderHandleCollisionCallback(J){this._colliderHandleCollisionCallbackMap.delete(J)}removeColliderHandleEntity(J){this._colliderHandleEntityMap.delete(J)}setColliderBlockType(J,Z){if(!this._requireSimulatedCollider(J))return;this.setColliderHandleBlockType(J.rawCollider.handle,Z)}setColliderCollisionCallback(J,Z){if(!this._requireSimulatedCollider(J))return;this.setColliderHandleCollisionCallback(J.rawCollider.handle,Z)}setColliderEntity(J,Z){if(!this._requireSimulatedCollider(J))return;this.setColliderHandleEntity(J.rawCollider.handle,Z)}setColliderHandleBlockType(J,Z){this._colliderHandleBlockTypeMap.set(J,Z),this._cleanupBlockTypeColliderHandles.delete(J),this._pendingCleanupBlockTypeColliderHandles.delete(J)}setColliderHandleCollisionCallback(J,Z){this._colliderHandleCollisionCallbackMap.set(J,Z),this._cleanupCollisionCallbackColliderHandles.delete(J),this._pendingCleanupCollisionCallbackColliderHandles.delete(J)}setColliderHandleEntity(J,Z){this._colliderHandleEntityMap.set(J,Z),this._cleanupEntityColliderHandles.delete(J),this._pendingCleanupEntityColliderHandles.delete(J)}queueColliderHandleForCleanup(J){if(this._colliderHandleBlockTypeMap.has(J))this._pendingCleanupBlockTypeColliderHandles.add(J);if(this._colliderHandleCollisionCallbackMap.has(J))this._pendingCleanupCollisionCallbackColliderHandles.add(J);if(this._colliderHandleEntityMap.has(J))this._pendingCleanupEntityColliderHandles.add(J)}cleanup(){for(let J of this._cleanupBlockTypeColliderHandles)this._colliderHandleBlockTypeMap.delete(J);this._cleanupBlockTypeColliderHandles.clear();for(let J of this._cleanupCollisionCallbackColliderHandles)this._colliderHandleCollisionCallbackMap.delete(J);this._cleanupCollisionCallbackColliderHandles.clear();for(let J of this._cleanupEntityColliderHandles)this._colliderHandleEntityMap.delete(J);this._cleanupEntityColliderHandles.clear(),[[this._pendingCleanupBlockTypeColliderHandles,this._cleanupBlockTypeColliderHandles],[this._pendingCleanupCollisionCallbackColliderHandles,this._cleanupCollisionCallbackColliderHandles],[this._pendingCleanupEntityColliderHandles,this._cleanupEntityColliderHandles]].forEach(([J,Z])=>{for(let Y of J.keys())Z.add(Y);J.clear()})}_requireSimulatedCollider(J){if(!J.rawCollider)f.error("ColliderMap._requireSimulatedCollider(): Collider is not in the simulation.");return!!J.rawCollider}}var Dr8={x:0,y:-32,z:0},CA=60,TA;((W)=>{W.STEP_START="SIMULATION.STEP_START";W.STEP_END="SIMULATION.STEP_END";W.DEBUG_RAYCAST="SIMULATION.DEBUG_RAYCAST";W.DEBUG_RENDER="SIMULATION.DEBUG_RENDER"})(TA||={});class FV extends S0{_colliderMap=new zV;_debugRaycastingEnabled=!1;_debugRenderingEnabled=!1;_rapierEventQueue;_rapierSimulation;_world;constructor(J,Z=CA,Y=Dr8){super();this._rapierEventQueue=new s0.EventQueue(!0),this._rapierSimulation=new s0.World(Y),this._rapierSimulation.timestep=Math.fround(1/Z),this._world=J}get colliderMap(){return this._colliderMap}get isDebugRaycastingEnabled(){return this._debugRaycastingEnabled}get isDebugRenderingEnabled(){return this._debugRenderingEnabled}get gravity(){return this._rapierSimulation.gravity}get timestepS(){return this._rapierSimulation.timestep}get world(){return this._world}raycast(J,Z,Y,$={}){let W=new s0.Ray(J,Z),Q=this._rapierSimulation.castRay(W,Y,$.ignoresSensors??!0,$.filterFlags,$.filterGroups,$.filterExcludeCollider,$.filterExcludeRigidBody,$.filterPredicate);if(this._debugRaycastingEnabled)this.emitWithWorld(this._world,"SIMULATION.DEBUG_RAYCAST",{simulation:this,origin:J,direction:Z,length:Y,hit:!!Q});if(!Q)return null;let X=W.pointAt(Q.timeOfImpact),K=Q.timeOfImpact,G=Q.collider,z=this._colliderMap.getColliderHandleBlockType(G.handle);if(z)return{hitBlock:FW.fromGlobalCoordinate({x:Math.floor(X.x-(W.dir.x<0?0.0001:-0.0001)),y:Math.floor(X.y-(W.dir.y<0?0.0001:-0.0001)),z:Math.floor(X.z-(W.dir.z<0?0.0001:-0.0001))},z),hitPoint:X,hitDistance:K};let F=this._colliderMap.getColliderHandleEntity(G.handle);if(F)return{hitEntity:F,hitPoint:X,hitDistance:K};return null}createRawCollider(J,Z){return this._rapierSimulation.createCollider(J,Z)}createRawRigidBody(J){return this._rapierSimulation.createRigidBody(J)}enableDebugRaycasting(J){this._debugRaycastingEnabled=J}enableDebugRendering(J){this._debugRenderingEnabled=J}getContactManifolds(J,Z){let Y=[];return this._rapierSimulation.narrowPhase.contactPair(J,Z,($,W)=>{if($.numContacts()===0)return;let Q=$.normal(),X=[];for(let K=0;K<$.numSolverContacts();K++)X.push($.solverContactPoint(K));Y.push({contactPoints:X,localNormalA:!W?$.localNormal1():$.localNormal2(),localNormalB:!W?$.localNormal2():$.localNormal1(),normal:!W?Q:{x:-Q.x,y:-Q.y,z:-Q.z}})}),Y}removeRawCollider(J){this._colliderMap.queueColliderHandleForCleanup(J.handle),this._rapierSimulation.removeCollider(J,!1)}removeRawRigidBody(J){this._rapierSimulation.removeRigidBody(J)}setGravity(J){this._rapierSimulation.gravity=J}step=(J)=>{this.emitWithWorld(this._world,"SIMULATION.STEP_START",{simulation:this,tickDeltaMs:J});let Z=performance.now();if(a1.startSpan({operation:"physics_step"},()=>{this._rapierSimulation.step(this._rapierEventQueue)}),a1.startSpan({operation:"physics_cleanup"},()=>{this._rapierEventQueue.drainContactForceEvents(this._onContactForceEvent),this._rapierEventQueue.drainCollisionEvents(this._onCollisionEvent),this._colliderMap.cleanup()}),this.emitWithWorld(this._world,"SIMULATION.STEP_END",{simulation:this,stepDurationMs:performance.now()-Z}),this._debugRenderingEnabled)this.emitWithWorld(this._world,"SIMULATION.DEBUG_RENDER",{simulation:this,...this._rapierSimulation.debugRender()})};_onCollisionEvent=(J,Z,Y)=>{let[$,W]=this._getCollisionObjects(J,Z);if(!$||!W)return;let Q=(X,K)=>{if(X instanceof N5&&K instanceof _8&&X.hasListeners("BLOCK_TYPE.ENTITY_COLLISION"))X.emit("BLOCK_TYPE.ENTITY_COLLISION",{blockType:X,entity:K,started:Y,colliderHandleA:J,colliderHandleB:Z});else if(X instanceof _8&&K instanceof N5&&X.hasListeners("ENTITY.BLOCK_COLLISION"))X.emit("ENTITY.BLOCK_COLLISION",{entity:X,blockType:K,started:Y,colliderHandleA:J,colliderHandleB:Z});else if(X instanceof _8&&K instanceof _8&&X.hasListeners("ENTITY.ENTITY_COLLISION"))X.emit("ENTITY.ENTITY_COLLISION",{entity:X,otherEntity:K,started:Y,colliderHandleA:J,colliderHandleB:Z});else if(typeof X==="function"&&(K instanceof _8||K instanceof N5))X(K,Y,J,Z)};Q($,W),Q(W,$)};_onContactForceEvent=(J)=>{let[Z,Y]=this._getCollisionObjects(J.collider1(),J.collider2());if(!Z||typeof Z==="function"||!Y||typeof Y==="function")return;let $={totalForce:J.totalForce(),totalForceMagnitude:J.totalForceMagnitude(),maxForceDirection:J.maxForceDirection(),maxForceMagnitude:J.maxForceMagnitude()},W=(Q,X)=>{if(Q instanceof N5&&X instanceof _8&&Q.hasListeners("BLOCK_TYPE.ENTITY_CONTACT_FORCE"))Q.emit("BLOCK_TYPE.ENTITY_CONTACT_FORCE",{blockType:Q,entity:X,contactForceData:$});else if(Q instanceof _8&&X instanceof N5&&Q.hasListeners("ENTITY.BLOCK_CONTACT_FORCE"))Q.emit("ENTITY.BLOCK_CONTACT_FORCE",{entity:Q,blockType:X,contactForceData:$});else if(Q instanceof _8&&X instanceof _8&&Q.hasListeners("ENTITY.ENTITY_CONTACT_FORCE"))Q.emit("ENTITY.ENTITY_CONTACT_FORCE",{entity:Q,otherEntity:X,contactForceData:$})};W(Z,Y),W(Y,Z)};_getCollisionObjects(J,Z){let Y=this._colliderMap.getColliderHandleBlockType(J)??this._colliderMap.getColliderHandleCollisionCallback(J)??this._colliderMap.getColliderHandleEntity(J),$=this._colliderMap.getColliderHandleBlockType(Z)??this._colliderMap.getColliderHandleCollisionCallback(Z)??this._colliderMap.getColliderHandleEntity(Z);return[Y,$]}}class vO{_synchronizedPlayerReliablePackets=new Map;_queuedBroadcasts=[];_queuedAudioSynchronizations={};_queuedBlockSynchronizations={};_queuedBlockTypeSynchronizations={};_queuedChunkSynchronizations={};_queuedDebugRaycastSynchronizations=[];_queuedEntitySynchronizations={};_queuedLightSynchronizations={};_queuedPerPlayerSynchronizations=new Map;_queuedPerPlayerCameraSynchronizations=new Map;_queuedPerPlayerUISynchronizations=new Map;_queuedPerPlayerUIDatasSynchronizations=new Map;_queuedPlayerSynchronizations={};_queuedSceneUISynchronizations={};_queuedWorldSynchronization;_loadedSceneUIs=new Set;_spawnedChunks=new Set;_spawnedEntities=new Set;_world;constructor(J){this._world=J,this._subscribeToAudioEvents(),this._subscribeToBlockTypeRegistryEvents(),this._subscribeToChatEvents(),this._subscribeToChunkEvents(),this._subscribeToEntityEvents(),this._subscribeToLightEvents(),this._subscribeToPlayerEvents(),this._subscribeToPlayerCameraEvents(),this._subscribeToPlayerUIEvents(),this._subscribeToSceneUIEvents(),this._subscribeToSimulationEvents(),this._subscribeToWorldEvents()}synchronize(){let J=[],Z=[],Y=this._world.loop.currentTick;a1.startSpan({operation:"build_packets"},()=>{this._queuedPerPlayerSynchronizations.forEach((H,q)=>{this._createOrGetSynchronizedPlayerReliablePackets(q,J).push(...H)});let $=Object.values(this._queuedEntitySynchronizations);if($.length>0){let[H,q]=$.reduce(([U,L],w)=>{for(let O in w)if(O!=="i"&&O!=="p"&&O!=="r")return U.push(w),[U,L];return L.push(w),[U,L]},[[],[]]);if(q.length>0){let U=s.createPacket(s.outboundPackets.entitiesPacketDefinition,q,Y);Z.push(U)}if(H.length>0){let U=s.createPacket(s.outboundPackets.entitiesPacketDefinition,H,Y);J.push(U),this._synchronizedPlayerReliablePackets.forEach((L)=>L.push(U))}}let W=Object.values(this._queuedAudioSynchronizations);if(W.length>0){let H=s.createPacket(s.outboundPackets.audiosPacketDefinition,W,Y);J.push(H),this._synchronizedPlayerReliablePackets.forEach((q)=>q.push(H))}let Q=Object.values(this._queuedBlockTypeSynchronizations);if(Q.length>0){let H=s.createPacket(s.outboundPackets.blockTypesPacketDefinition,Q,Y);J.push(H),this._synchronizedPlayerReliablePackets.forEach((q)=>q.push(H))}let X=Object.values(this._queuedBlockSynchronizations);if(X.length>0){let H=s.createPacket(s.outboundPackets.blocksPacketDefinition,X,Y);J.push(H),this._synchronizedPlayerReliablePackets.forEach((q)=>q.push(H))}let K=Object.values(this._queuedChunkSynchronizations);if(K.length>0){let H=s.createPacket(s.outboundPackets.chunksPacketDefinition,K,Y);J.push(H),this._synchronizedPlayerReliablePackets.forEach((q)=>q.push(H))}let G=Object.values(this._queuedLightSynchronizations);if(G.length>0){let H=s.createPacket(s.outboundPackets.lightsPacketDefinition,G,Y);J.push(H),this._synchronizedPlayerReliablePackets.forEach((q)=>q.push(H))}this._queuedPerPlayerUISynchronizations.forEach((H,q)=>{let U=s.createPacket(s.outboundPackets.uiPacketDefinition,H,Y);this._createOrGetSynchronizedPlayerReliablePackets(q,J).push(U)}),this._queuedPerPlayerUIDatasSynchronizations.forEach((H,q)=>{let U=s.createPacket(s.outboundPackets.uiDatasPacketDefinition,H,Y);this._createOrGetSynchronizedPlayerReliablePackets(q,J).push(U)});let z=Object.values(this._queuedSceneUISynchronizations);if(z.length>0){let H=s.createPacket(s.outboundPackets.sceneUIsPacketDefinition,z,Y);J.push(H),this._synchronizedPlayerReliablePackets.forEach((q)=>q.push(H))}if(this._queuedWorldSynchronization){let H=s.createPacket(s.outboundPackets.worldPacketDefinition,this._queuedWorldSynchronization,Y);J.push(H),this._synchronizedPlayerReliablePackets.forEach((q)=>q.push(H))}this._queuedPerPlayerCameraSynchronizations.forEach((H,q)=>{let U=s.createPacket(s.outboundPackets.cameraPacketDefinition,H,Y);this._createOrGetSynchronizedPlayerReliablePackets(q,J).push(U)});let F=Object.values(this._queuedPlayerSynchronizations);if(F.length>0){let H=s.createPacket(s.outboundPackets.playersPacketDefinition,F,Y);J.push(H),this._synchronizedPlayerReliablePackets.forEach((q)=>q.push(H))}this._queuedBroadcasts.forEach((H)=>{J.push(H),this._synchronizedPlayerReliablePackets.forEach((q)=>q.push(H))});let V=this._queuedDebugRaycastSynchronizations;if(V.length>0){let H=s.createPacket(s.outboundPackets.physicsDebugRaycastsPacketDefinition,V,Y);J.push(H),this._synchronizedPlayerReliablePackets.forEach((q)=>q.push(H))}}),a1.startSpan({operation:"send_all_packets"},()=>{j5.instance.getConnectedPlayersByWorld(this._world).forEach(($)=>{let W=this._synchronizedPlayerReliablePackets.get($)??J;if(W.length>0)$.connection.send(W);if(Z.length>0)$.connection.send(Z,!1)})}),a1.startSpan({operation:"network_synchronize_cleanup"},()=>{this._queuedBroadcasts=[],this._queuedAudioSynchronizations={},this._queuedBlockSynchronizations={},this._queuedBlockTypeSynchronizations={},this._queuedChunkSynchronizations={},this._queuedDebugRaycastSynchronizations=[],this._queuedEntitySynchronizations={},this._queuedLightSynchronizations={},this._queuedPerPlayerSynchronizations.clear(),this._queuedPerPlayerCameraSynchronizations.clear(),this._queuedPerPlayerUISynchronizations.clear(),this._queuedPerPlayerUIDatasSynchronizations.clear(),this._queuedPlayerSynchronizations={},this._queuedSceneUISynchronizations={},this._queuedWorldSynchronization=void 0,this._loadedSceneUIs.clear(),this._spawnedChunks.clear(),this._spawnedEntities.clear(),this._synchronizedPlayerReliablePackets.clear()})}_subscribeToAudioEvents(){this._world.final("AUDIO.PAUSE",this._onAudioPause),this._world.final("AUDIO.PLAY",this._onAudioPlay),this._world.final("AUDIO.PLAY_RESTART",this._onAudioPlayRestart),this._world.final("AUDIO.SET_ATTACHED_TO_ENTITY",this._onAudioSetAttachedToEntity),this._world.final("AUDIO.SET_CUTOFF_DISTANCE",this._onAudioSetCutoffDistance),this._world.final("AUDIO.SET_DETUNE",this._onAudioSetDetune),this._world.final("AUDIO.SET_DISTORTION",this._onAudioSetDistortion),this._world.final("AUDIO.SET_POSITION",this._onAudioSetPosition),this._world.final("AUDIO.SET_PLAYBACK_RATE",this._onAudioSetPlaybackRate),this._world.final("AUDIO.SET_REFERENCE_DISTANCE",this._onAudioSetReferenceDistance),this._world.final("AUDIO.SET_VOLUME",this._onAudioSetVolume)}_subscribeToBlockTypeRegistryEvents(){this._world.final("BLOCK_TYPE_REGISTRY.REGISTER_BLOCK_TYPE",this._onBlockTypeRegistryRegisterBlockType)}_subscribeToChatEvents(){this._world.final("CHAT.BROADCAST_MESSAGE",this._onChatSendBroadcastMessage),this._world.final("CHAT.PLAYER_MESSAGE",this._onChatSendPlayerMessage)}_subscribeToChunkEvents(){this._world.final("CHUNK.SPAWN",this._onChunkSpawn),this._world.final("CHUNK.DESPAWN",this._onChunkDespawn),this._world.final("CHUNK.SET_BLOCK",this._onChunkSetBlock)}_subscribeToEntityEvents(){this._world.final("ENTITY.SPAWN",this._onEntitySpawn),this._world.final("ENTITY.DESPAWN",this._onEntityDespawn),this._world.final("ENTITY.SET_MODEL_ANIMATIONS_PLAYBACK_RATE",this._onEntitySetModelAnimationsPlaybackRate),this._world.final("ENTITY.SET_MODEL_HIDDEN_NODES",this._onEntitySetModelHiddenNodes),this._world.final("ENTITY.SET_OPACITY",this._onEntitySetOpacity),this._world.final("ENTITY.SET_PARENT",this._onEntitySetParent),this._world.final("ENTITY.SET_TINT_COLOR",this._onEntitySetTintColor),this._world.final("ENTITY.START_MODEL_LOOPED_ANIMATIONS",this._onEntityStartModelLoopedAnimations),this._world.final("ENTITY.START_MODEL_ONESHOT_ANIMATIONS",this._onEntityStartModelOneshotAnimations),this._world.final("ENTITY.STOP_MODEL_ANIMATIONS",this._onEntityStopModelAnimations),this._world.final("ENTITY.UPDATE_POSITION",this._onEntityUpdatePosition),this._world.final("ENTITY.UPDATE_ROTATION",this._onEntityUpdateRotation)}_subscribeToLightEvents(){this._world.final("LIGHT.DESPAWN",this._onLightDespawn),this._world.final("LIGHT.SET_ANGLE",this._onLightSetAngle),this._world.final("LIGHT.SET_ATTACHED_TO_ENTITY",this._onLightSetAttachedToEntity),this._world.final("LIGHT.SET_COLOR",this._onLightSetColor),this._world.final("LIGHT.SET_DISTANCE",this._onLightSetDistance),this._world.final("LIGHT.SET_INTENSITY",this._onLightSetIntensity),this._world.final("LIGHT.SET_OFFSET",this._onLightSetOffset),this._world.final("LIGHT.SET_PENUMBRA",this._onLightSetPenumbra),this._world.final("LIGHT.SET_POSITION",this._onLightSetPosition),this._world.final("LIGHT.SET_TRACKED_ENTITY",this._onLightSetTrackedEntity),this._world.final("LIGHT.SET_TRACKED_POSITION",this._onLightSetTrackedPosition),this._world.final("LIGHT.SPAWN",this._onLightSpawn)}_subscribeToPlayerEvents(){this._world.final("PLAYER.JOINED_WORLD",this._onPlayerJoinedWorld),this._world.final("PLAYER.LEFT_WORLD",this._onPlayerLeftWorld),this._world.final("PLAYER.RECONNECTED_WORLD",this._onPlayerReconnectedWorld),this._world.final("PLAYER.REQUEST_SYNC",this._onPlayerRequestSync)}_subscribeToPlayerCameraEvents(){this._world.final("PLAYER_CAMERA.LOOK_AT_ENTITY",this._onPlayerCameraLookAtEntity),this._world.final("PLAYER_CAMERA.LOOK_AT_POSITION",this._onPlayerCameraLookAtPosition),this._world.final("PLAYER_CAMERA.SET_ATTACHED_TO_ENTITY",this._onPlayerCameraSetAttachedToEntity),this._world.final("PLAYER_CAMERA.SET_ATTACHED_TO_POSITION",this._onPlayerCameraSetAttachedToPosition),this._world.final("PLAYER_CAMERA.SET_FILM_OFFSET",this._onPlayerCameraSetFilmOffset),this._world.final("PLAYER_CAMERA.SET_FORWARD_OFFSET",this._onPlayerCameraSetForwardOffset),this._world.final("PLAYER_CAMERA.SET_FOV",this._onPlayerCameraSetFov),this._world.final("PLAYER_CAMERA.SET_MODEL_HIDDEN_NODES",this._onPlayerCameraSetModelHiddenNodes),this._world.final("PLAYER_CAMERA.SET_MODE",this._onPlayerCameraSetMode),this._world.final("PLAYER_CAMERA.SET_OFFSET",this._onPlayerCameraSetOffset),this._world.final("PLAYER_CAMERA.SET_TRACKED_ENTITY",this._onPlayerCameraSetTrackedEntity),this._world.final("PLAYER_CAMERA.SET_TRACKED_POSITION",this._onPlayerCameraSetTrackedPosition),this._world.final("PLAYER_CAMERA.SET_ZOOM",this._onPlayerCameraSetZoom)}_subscribeToPlayerUIEvents(){this._world.final("PLAYER_UI.LOAD",this._onPlayerUILoad),this._world.final("PLAYER_UI.LOCK_POINTER",this._onPlayerUILockPointer),this._world.final("PLAYER_UI.SEND_DATA",this._onPlayerUISendData)}_subscribeToSceneUIEvents(){this._world.final("SCENE_UI.LOAD",this._onSceneUILoad),this._world.final("SCENE_UI.SET_ATTACHED_TO_ENTITY",this._onSceneUISetAttachedToEntity),this._world.final("SCENE_UI.SET_OFFSET",this._onSceneUISetOffset),this._world.final("SCENE_UI.SET_POSITION",this._onSceneUISetPosition),this._world.final("SCENE_UI.SET_STATE",this._onSceneUISetState),this._world.final("SCENE_UI.SET_VIEW_DISTANCE",this._onSceneUISetViewDistance),this._world.final("SCENE_UI.UNLOAD",this._onSceneUIUnload)}_subscribeToSimulationEvents(){this._world.final("SIMULATION.DEBUG_RAYCAST",this._onSimulationDebugRaycast),this._world.final("SIMULATION.DEBUG_RENDER",this._onSimulationDebugRender)}_subscribeToWorldEvents(){this._world.final("WORLD.SET_AMBIENT_LIGHT_COLOR",this._onWorldSetAmbientLightColor),this._world.final("WORLD.SET_AMBIENT_LIGHT_INTENSITY",this._onWorldSetAmbientLightIntensity),this._world.final("WORLD.SET_DIRECTIONAL_LIGHT_COLOR",this._onWorldSetDirectionalLightColor),this._world.final("WORLD.SET_DIRECTIONAL_LIGHT_INTENSITY",this._onWorldSetDirectionalLightIntensity),this._world.final("WORLD.SET_DIRECTIONAL_LIGHT_POSITION",this._onWorldSetDirectionalLightPosition)}_onAudioPause=(J)=>{let Z=this._createOrGetQueuedAudioSync(J.audio);Z.pa=!0,delete Z.pl,delete Z.r};_onAudioPlay=(J)=>{let Z=J.audio.serialize();Z.pl=!0,delete Z.pa,delete Z.r,this._queuedAudioSynchronizations[Z.i]=Z};_onAudioPlayRestart=(J)=>{let Z=this._createOrGetQueuedAudioSync(J.audio);Z.r=!0,delete Z.pa,delete Z.pl,this._queuedAudioSynchronizations[Z.i]=Z};_onAudioSetAttachedToEntity=(J)=>{let Z=this._createOrGetQueuedAudioSync(J.audio);Z.e=J.entity?J.entity.id:void 0,Z.p=J.entity?void 0:Z.p};_onAudioSetCutoffDistance=(J)=>{let Z=this._createOrGetQueuedAudioSync(J.audio);Z.cd=J.cutoffDistance};_onAudioSetDetune=(J)=>{let Z=this._createOrGetQueuedAudioSync(J.audio);Z.de=J.detune};_onAudioSetDistortion=(J)=>{let Z=this._createOrGetQueuedAudioSync(J.audio);Z.di=J.distortion};_onAudioSetPosition=(J)=>{let Z=this._createOrGetQueuedAudioSync(J.audio);Z.e=J.position?void 0:Z.e,Z.p=J.position?b0.serializeVector(J.position):void 0};_onAudioSetPlaybackRate=(J)=>{let Z=this._createOrGetQueuedAudioSync(J.audio);Z.pr=J.playbackRate};_onAudioSetReferenceDistance=(J)=>{let Z=this._createOrGetQueuedAudioSync(J.audio);Z.rd=J.referenceDistance};_onAudioSetVolume=(J)=>{let Z=this._createOrGetQueuedAudioSync(J.audio);Z.v=J.volume};_onBlockTypeRegistryRegisterBlockType=(J)=>{let Z=J.blockType.serialize();this._queuedBlockTypeSynchronizations[J.blockType.id]=Z};_onChatSendBroadcastMessage=(J)=>{let{player:Z,message:Y,color:$}=J;this._queuedBroadcasts.push(s.createPacket(s.outboundPackets.chatMessagesPacketDefinition,[{m:Y,c:$,p:Z?.id}],this._world.loop.currentTick))};_onChatSendPlayerMessage=(J)=>{let{player:Z,message:Y,color:$}=J,W=this._queuedPerPlayerSynchronizations.get(Z)??[];W.push(s.createPacket(s.outboundPackets.chatMessagesPacketDefinition,[{m:Y,c:$}],this._world.loop.currentTick)),this._queuedPerPlayerSynchronizations.set(Z,W)};_onChunkSpawn=(J)=>{let Z=this._createOrGetQueuedChunkSync(J.chunk);Z.b=Array.from(J.chunk.blocks),Z.rm=void 0,this._spawnedChunks.add(Z.c.join(","))};_onChunkDespawn=(J)=>{let Z=this._createOrGetQueuedChunkSync(J.chunk),Y=Z.c.join(",");if(this._spawnedChunks.has(Y))delete this._queuedChunkSynchronizations[Y],this._spawnedChunks.delete(Y);else Z.rm=!0};_onChunkSetBlock=(J)=>{let Z=this._createOrGetQueuedBlockSync(J.globalCoordinate);Z.i=J.blockTypeId};_onEntitySetModelAnimationsPlaybackRate=(J)=>{let Z=this._createOrGetQueuedEntitySync(J.entity);Z.ap=J.playbackRate};_onEntitySpawn=(J)=>{let Z=J.entity.serialize();this._queuedEntitySynchronizations[Z.i]=Z,this._spawnedEntities.add(Z.i)};_onEntityDespawn=(J)=>{let Z=this._createOrGetQueuedEntitySync(J.entity);if(this._spawnedEntities.has(Z.i))delete this._queuedEntitySynchronizations[Z.i],this._spawnedEntities.delete(Z.i);else Z.rm=!0};_onEntitySetModelHiddenNodes=(J)=>{let Z=this._createOrGetQueuedEntitySync(J.entity);Z.h=Array.from(J.modelHiddenNodes)};_onEntitySetOpacity=(J)=>{let Z=this._createOrGetQueuedEntitySync(J.entity);Z.o=J.opacity};_onEntitySetParent=(J)=>{let Z=this._createOrGetQueuedEntitySync(J.entity);Z.pe=J.parent?J.parent.id:void 0,Z.pn=J.parentNodeName};_onEntitySetTintColor=(J)=>{let Z=this._createOrGetQueuedEntitySync(J.entity);Z.t=J.tintColor?b0.serializeRgbColor(J.tintColor):void 0};_onEntityStartModelLoopedAnimations=(J)=>{let Z=this._createOrGetQueuedEntitySync(J.entity);if(Z.al=Array.from(new Set([...Z.al??[],...J.animations])),Z.as)Z.as=Z.as.filter((Y)=>!J.animations.has(Y)).filter(Boolean)};_onEntityStartModelOneshotAnimations=(J)=>{let Z=this._createOrGetQueuedEntitySync(J.entity);if(Z.ao=Array.from(new Set([...Z.ao??[],...J.animations])),Z.as)Z.as=Z.as.filter((Y)=>!J.animations.has(Y)).filter(Boolean)};_onEntityStopModelAnimations=(J)=>{let Z=this._createOrGetQueuedEntitySync(J.entity);if(Z.al)Z.al=Z.al.filter((Y)=>!J.animations.has(Y)).filter(Boolean);if(Z.ao)Z.ao=Z.ao.filter((Y)=>!J.animations.has(Y)).filter(Boolean);Z.as=Array.from(new Set([...Z.as??[],...J.animations]))};_onEntityUpdateRotation=(J)=>{let Z=this._createOrGetQueuedEntitySync(J.entity);Z.r=[J.rotation.x,J.rotation.y,J.rotation.z,J.rotation.w]};_onEntityUpdatePosition=(J)=>{let Z=this._createOrGetQueuedEntitySync(J.entity);Z.p=[J.position.x,J.position.y,J.position.z]};_onLightDespawn=(J)=>{let Z=this._createOrGetQueuedLightSync(J.light);Z.rm=!0};_onLightSetAngle=(J)=>{let Z=this._createOrGetQueuedLightSync(J.light);Z.a=J.angle};_onLightSetAttachedToEntity=(J)=>{let Z=this._createOrGetQueuedLightSync(J.light);Z.e=J.entity?J.entity.id:void 0,Z.p=J.entity?void 0:Z.p};_onLightSetColor=(J)=>{let Z=this._createOrGetQueuedLightSync(J.light);Z.c=b0.serializeRgbColor(J.color)};_onLightSetDistance=(J)=>{let Z=this._createOrGetQueuedLightSync(J.light);Z.d=J.distance};_onLightSetIntensity=(J)=>{let Z=this._createOrGetQueuedLightSync(J.light);Z.n=J.intensity};_onLightSetOffset=(J)=>{let Z=this._createOrGetQueuedLightSync(J.light);Z.o=J.offset?b0.serializeVector(J.offset):void 0};_onLightSetPenumbra=(J)=>{let Z=this._createOrGetQueuedLightSync(J.light);Z.pe=J.penumbra};_onLightSetPosition=(J)=>{let Z=this._createOrGetQueuedLightSync(J.light);Z.p=J.position?b0.serializeVector(J.position):void 0,Z.e=J.position?void 0:Z.e};_onLightSetTrackedEntity=(J)=>{let Z=this._createOrGetQueuedLightSync(J.light);Z.te=J.entity?J.entity.id:void 0,Z.tp=J.entity?void 0:Z.tp};_onLightSetTrackedPosition=(J)=>{let Z=this._createOrGetQueuedLightSync(J.light);Z.tp=J.position?b0.serializeVector(J.position):void 0,Z.te=J.position?void 0:Z.te};_onLightSpawn=(J)=>{let Z=J.light.serialize();this._queuedLightSynchronizations[Z.i]=Z};_onPlayerCameraLookAtEntity=(J)=>{let Z=this._createOrGetQueuedPlayerCameraSync(J.playerCamera);Z.pl=b0.serializeVector(J.entity.position),delete Z.et,delete Z.pt};_onPlayerCameraLookAtPosition=(J)=>{let Z=this._createOrGetQueuedPlayerCameraSync(J.playerCamera);Z.pl=J.position?b0.serializeVector(J.position):void 0,delete Z.et,delete Z.pt};_onPlayerCameraSetAttachedToEntity=(J)=>{let Z=this._createOrGetQueuedPlayerCameraSync(J.playerCamera);Z.e=J.entity.id,delete Z.p};_onPlayerCameraSetAttachedToPosition=(J)=>{let Z=this._createOrGetQueuedPlayerCameraSync(J.playerCamera);Z.p=J.position?b0.serializeVector(J.position):void 0,delete Z.e};_onPlayerCameraSetFilmOffset=(J)=>{let Z=this._createOrGetQueuedPlayerCameraSync(J.playerCamera);Z.fo=J.filmOffset};_onPlayerCameraSetForwardOffset=(J)=>{let Z=this._createOrGetQueuedPlayerCameraSync(J.playerCamera);Z.ffo=J.forwardOffset};_onPlayerCameraSetFov=(J)=>{let Z=this._createOrGetQueuedPlayerCameraSync(J.playerCamera);Z.fv=J.fov};_onPlayerCameraSetModelHiddenNodes=(J)=>{let Z=this._createOrGetQueuedPlayerCameraSync(J.playerCamera);Z.h=Array.from(J.modelHiddenNodes)};_onPlayerCameraSetMode=(J)=>{let Z=this._createOrGetQueuedPlayerCameraSync(J.playerCamera);Z.m=J.mode};_onPlayerCameraSetOffset=(J)=>{let Z=this._createOrGetQueuedPlayerCameraSync(J.playerCamera);Z.o=J.offset?b0.serializeVector(J.offset):void 0};_onPlayerCameraSetTrackedEntity=(J)=>{let Z=this._createOrGetQueuedPlayerCameraSync(J.playerCamera);Z.et=J.entity?J.entity.id:void 0,delete Z.pl,delete Z.pt};_onPlayerCameraSetTrackedPosition=(J)=>{let Z=this._createOrGetQueuedPlayerCameraSync(J.playerCamera);Z.pt=J.position?b0.serializeVector(J.position):void 0,delete Z.et,delete Z.pl};_onPlayerCameraSetZoom=(J)=>{let Z=this._createOrGetQueuedPlayerCameraSync(J.playerCamera);Z.z=J.zoom};_onPlayerJoinedWorld=(J)=>{let{player:Z}=J,Y=this._queuedPerPlayerSynchronizations.get(Z)??[];Y.push(s.createPacket(s.outboundPackets.worldPacketDefinition,this._world.serialize(),this._world.loop.currentTick)),Y.push(s.createPacket(s.outboundPackets.blockTypesPacketDefinition,this._world.blockTypeRegistry.serialize(),this._world.loop.currentTick)),Y.push(s.createPacket(s.outboundPackets.chunksPacketDefinition,this._world.chunkLattice.getAllChunks().map((W)=>W.serialize()),this._world.loop.currentTick)),Y.push(s.createPacket(s.outboundPackets.entitiesPacketDefinition,this._world.entityManager.getAllEntities().map((W)=>{if(Z.camera.attachedToEntity===void 0&&W instanceof t4&&W.player===Z)Z.camera.setAttachedToEntity(W);return W.serialize()}),this._world.loop.currentTick)),Y.push(s.createPacket(s.outboundPackets.audiosPacketDefinition,this._world.audioManager.getAllAudios().map((W)=>W.serialize()),this._world.loop.currentTick)),Y.push(s.createPacket(s.outboundPackets.lightsPacketDefinition,this._world.lightManager.getAllLights().map((W)=>W.serialize()),this._world.loop.currentTick)),Y.push(s.createPacket(s.outboundPackets.sceneUIsPacketDefinition,this._world.sceneUIManager.getAllSceneUIs().map((W)=>W.serialize()),this._world.loop.currentTick)),Y.push(s.createPacket(s.outboundPackets.playersPacketDefinition,j5.instance.getConnectedPlayers().map((W)=>W.serialize()),this._world.loop.currentTick));let $=this._createOrGetQueuedPlayerCameraSync(Z.camera);this._queuedPerPlayerCameraSynchronizations.set(Z,{...Z.camera.serialize(),...$}),this._queuedPerPlayerSynchronizations.set(Z,Y),this._queuedPlayerSynchronizations[Z.id]=Z.serialize()};_onPlayerLeftWorld=(J)=>{let Z=this._createOrGetQueuedPlayerSync(J.player);Z.rm=!0};_onPlayerReconnectedWorld=(J)=>{this._onPlayerJoinedWorld(J)};_onPlayerRequestSync=(J)=>{J.player.connection.send([s.createPacket(s.outboundPackets.syncResponsePacketDefinition,{r:J.receivedAt,s:Date.now(),p:performance.now()-J.receivedAtMs,n:this._world.loop.nextTickMs},this._world.loop.currentTick)])};_onPlayerUILoad=(J)=>{let Z=this._createOrGetQueuedPlayerUISync(J.playerUI);Z.u=J.htmlUri};_onPlayerUILockPointer=(J)=>{let Z=this._createOrGetQueuedPlayerUISync(J.playerUI);Z.p=J.lock};_onPlayerUISendData=(J)=>{this._createOrGetQueuedPlayerUIDatasSync(J.playerUI).push(J.data)};_onSceneUILoad=(J)=>{let Z=J.sceneUI.serialize();this._queuedSceneUISynchronizations[Z.i]=Z,this._loadedSceneUIs.add(Z.i)};_onSceneUISetAttachedToEntity=(J)=>{let Z=this._createOrGetQueuedSceneUISync(J.sceneUI);Z.e=J.entity?J.entity.id:void 0,Z.p=J.entity?void 0:Z.p};_onSceneUISetOffset=(J)=>{let Z=this._createOrGetQueuedSceneUISync(J.sceneUI);Z.o=J.offset?b0.serializeVector(J.offset):void 0};_onSceneUISetPosition=(J)=>{let Z=this._createOrGetQueuedSceneUISync(J.sceneUI);Z.p=J.position?b0.serializeVector(J.position):void 0,Z.e=J.position?void 0:Z.e};_onSceneUISetState=(J)=>{let Z=this._createOrGetQueuedSceneUISync(J.sceneUI);Z.s=J.state};_onSceneUISetViewDistance=(J)=>{let Z=this._createOrGetQueuedSceneUISync(J.sceneUI);Z.v=J.viewDistance};_onSceneUIUnload=(J)=>{let Z=this._createOrGetQueuedSceneUISync(J.sceneUI);if(this._loadedSceneUIs.has(Z.i))delete this._queuedSceneUISynchronizations[Z.i],this._loadedSceneUIs.delete(Z.i);else Z.rm=!0};_onSimulationDebugRaycast=(J)=>{this._queuedDebugRaycastSynchronizations.push(b0.serializePhysicsDebugRaycast(J))};_onSimulationDebugRender=(J)=>{this._queuedBroadcasts.push(s.createPacket(s.outboundPackets.physicsDebugRenderPacketDefinition,{v:Array.from(J.vertices),c:Array.from(J.colors)},this._world.loop.currentTick))};_onWorldSetAmbientLightColor=(J)=>{let Z=this._createOrGetQueuedWorldSync(J.world);Z.ac=b0.serializeRgbColor(J.color)};_onWorldSetAmbientLightIntensity=(J)=>{let Z=this._createOrGetQueuedWorldSync(J.world);Z.ai=J.intensity};_onWorldSetDirectionalLightColor=(J)=>{let Z=this._createOrGetQueuedWorldSync(J.world);Z.dc=b0.serializeRgbColor(J.color)};_onWorldSetDirectionalLightIntensity=(J)=>{let Z=this._createOrGetQueuedWorldSync(J.world);Z.di=J.intensity};_onWorldSetDirectionalLightPosition=(J)=>{let Z=this._createOrGetQueuedWorldSync(J.world);Z.dp=b0.serializeVector(J.position)};_createOrGetQueuedAudioSync(J){if(J.id===void 0)f.fatalError("NetworkSynchronizer._createOrGetQueuedAudioSync(): Audio has no id!");return this._queuedAudioSynchronizations[J.id]??={i:J.id}}_createOrGetQueuedBlockSync(J){let{x:Z,y:Y,z:$}=J;return this._queuedBlockSynchronizations[`${Z},${Y},${$}`]??={i:0,c:[Z,Y,$]}}_createOrGetQueuedChunkSync(J){if(!J.originCoordinate)f.fatalError("NetworkSynchronizer._createOrGetQueuedChunkSync(): Chunk has no origin coordinate!");let{x:Z,y:Y,z:$}=J.originCoordinate;return this._queuedChunkSynchronizations[`${Z},${Y},${$}`]??={c:[Z,Y,$]}}_createOrGetQueuedEntitySync(J){if(J.id===void 0)f.fatalError("NetworkSynchronizer._createOrGetQueuedEntitySync(): Entity has no id!");return this._queuedEntitySynchronizations[J.id]??={i:J.id}}_createOrGetQueuedLightSync(J){if(J.id===void 0)f.fatalError("NetworkSynchronizer._createOrGetQueuedLightSync(): Light has no id!");return this._queuedLightSynchronizations[J.id]??={i:J.id}}_createOrGetQueuedPlayerSync(J){if(J.id===void 0)f.fatalError("NetworkSynchronizer._createOrGetQueuedPlayerSync(): Player has no id!");return this._queuedPlayerSynchronizations[J.id]??={i:J.id}}_createOrGetQueuedPlayerCameraSync(J){let Z=this._queuedPerPlayerCameraSynchronizations.get(J.player);if(!Z)Z={},this._queuedPerPlayerCameraSynchronizations.set(J.player,Z);return Z}_createOrGetQueuedPlayerUISync(J){let Z=this._queuedPerPlayerUISynchronizations.get(J.player);if(!Z)Z={},this._queuedPerPlayerUISynchronizations.set(J.player,Z);return Z}_createOrGetQueuedPlayerUIDatasSync(J){let Z=this._queuedPerPlayerUIDatasSynchronizations.get(J.player);if(!Z)Z=[],this._queuedPerPlayerUIDatasSynchronizations.set(J.player,Z);return Z}_createOrGetQueuedSceneUISync(J){if(J.id===void 0)f.fatalError("NetworkSynchronizer._createOrGetQueuedSceneUISync(): SceneUI has no id!");return this._queuedSceneUISynchronizations[J.id]??={i:J.id}}_createOrGetQueuedWorldSync(J){if(J.id!==this._world.id)f.fatalError("NetworkSynchronizer._createOrGetQueuedWorldSync(): World does not match this network synchronizer world!");return this._queuedWorldSynchronization??={i:J.id}}_createOrGetSynchronizedPlayerReliablePackets(J,Z){let Y=this._synchronizedPlayerReliablePackets.get(J);if(!Y)Y=[...Z],this._synchronizedPlayerReliablePackets.set(J,Y);return Y}}class VV{_sceneUIs=new Map;_nextSceneUIId=1;_world;constructor(J){this._world=J}get world(){return this._world}getAllSceneUIs(){return Array.from(this._sceneUIs.values())}getAllEntityAttachedSceneUIs(J){return this.getAllSceneUIs().filter((Z)=>Z.attachedToEntity===J)}getSceneUIById(J){return this._sceneUIs.get(J)}registerSceneUI(J){if(J.id!==void 0)return J.id;let Z=this._nextSceneUIId;return this._sceneUIs.set(Z,J),this._nextSceneUIId++,Z}unloadEntityAttachedSceneUIs(J){this.getAllEntityAttachedSceneUIs(J).forEach((Z)=>{Z.unload()})}unregisterSceneUI(J){if(J.id===void 0)return;this._sceneUIs.delete(J.id)}}class HV{_accumulatorMs=0;_targetTicksPerSecond;_fixedTimestepMs;_fixedTimestepS;_nextTickMs=0;_lastLoopTimeMs=0;_tickFunction;_tickErrorCallback;_tickHandle=null;constructor(J,Z,Y){this._targetTicksPerSecond=J,this._fixedTimestepS=Math.fround(1/J),this._fixedTimestepMs=Math.fround(this._fixedTimestepS*1000),this._tickFunction=Z,this._tickErrorCallback=Y}get targetTicksPerSecond(){return this._targetTicksPerSecond}get fixedTimestepMs(){return this._fixedTimestepMs}get fixedTimestepS(){return this._fixedTimestepS}get nextTickMs(){return this._nextTickMs}start(){if(this._tickHandle)return f.warning("Ticker.start(): ticker already running.");this._lastLoopTimeMs=performance.now();let J=()=>{a1.startSpan({operation:"ticker_tick"},()=>{let Z=performance.now(),Y=Z-this._lastLoopTimeMs;if(this._lastLoopTimeMs=Z,Y>250)Y=250;this._accumulatorMs+=Y;while(this._accumulatorMs>=this._fixedTimestepMs)this._tick(this._fixedTimestepMs),this._accumulatorMs-=this._fixedTimestepMs;this._nextTickMs=this._fixedTimestepMs-this._accumulatorMs,this._tickHandle=setTimeout(J,0)})};J()}stop(){if(!this._tickHandle)return f.warning("Ticker.stop(): ticker not running.");clearTimeout(this._tickHandle),this._tickHandle=null}_tick(J){try{this._tickFunction(J)}catch(Z){if(Z instanceof Error&&this._tickErrorCallback)this._tickErrorCallback(Z);else f.warning(`Ticker._tick(): tick callback threw an error, but it was not an instance of Error. Error: ${Z}`)}}}var R41;((Q)=>{Q.START="WORLD_LOOP.START";Q.STOP="WORLD_LOOP.STOP";Q.TICK_START="WORLD_LOOP.TICK_START";Q.TICK_END="WORLD_LOOP.TICK_END";Q.TICK_ERROR="WORLD_LOOP.TICK_ERROR"})(R41||={});class qV extends S0{_currentTick=0;_ticker;_world;constructor(J,Z=CA){super();this._ticker=new HV(Z,this._tick,this._onTickError),this._world=J}get currentTick(){return this._currentTick}get nextTickMs(){return this._ticker.nextTickMs}get timestepS(){return this._ticker.fixedTimestepS}get world(){return this._world}start(){this._ticker.start(),this.emitWithWorld(this._world,"WORLD_LOOP.START",{worldLoop:this})}stop(){this._ticker.stop(),this.emitWithWorld(this._world,"WORLD_LOOP.STOP",{worldLoop:this})}_tick=(J)=>{this.emitWithWorld(this._world,"WORLD_LOOP.TICK_START",{worldLoop:this,tickDeltaMs:J});let Z=performance.now();a1.startSpan({operation:"world_tick",attributes:{serverPlayerCount:j5.instance.playerCount,targetTickRate:this._ticker.targetTicksPerSecond,targetTickRateMs:this._ticker.fixedTimestepMs,worldId:this._world.id,worldName:this._world.name,worldChunkCount:this._world.chunkLattice.chunkCount,worldEntityCount:this._world.entityManager.entityCount,worldLoopTick:this._currentTick}},()=>{a1.startSpan({operation:"chunks_update"},()=>this._world.chunkLattice.updateChunks()),a1.startSpan({operation:"entities_tick"},()=>this._world.entityManager.tickEntities(J)),a1.startSpan({operation:"simulation_step"},()=>this._world.simulation.step(J)),a1.startSpan({operation:"entities_emit_updates"},()=>this._world.entityManager.checkAndEmitUpdates()),a1.startSpan({operation:"network_synchronize"},()=>this._world.networkSynchronizer.synchronize())}),this._currentTick++,this.emitWithWorld(this._world,"WORLD_LOOP.TICK_END",{worldLoop:this,tickDurationMs:performance.now()-Z})};_onTickError=(J)=>{f.error(`WorldLoop._onTickError(): Error: ${J}`),this.emitWithWorld(this._world,"WORLD_LOOP.TICK_ERROR",{worldLoop:this,error:J})}}var kA;((K)=>{K.SET_AMBIENT_LIGHT_COLOR="WORLD.SET_AMBIENT_LIGHT_COLOR";K.SET_AMBIENT_LIGHT_INTENSITY="WORLD.SET_AMBIENT_LIGHT_INTENSITY";K.SET_DIRECTIONAL_LIGHT_COLOR="WORLD.SET_DIRECTIONAL_LIGHT_COLOR";K.SET_DIRECTIONAL_LIGHT_INTENSITY="WORLD.SET_DIRECTIONAL_LIGHT_INTENSITY";K.SET_DIRECTIONAL_LIGHT_POSITION="WORLD.SET_DIRECTIONAL_LIGHT_POSITION";K.START="WORLD.START";K.STOP="WORLD.STOP"})(kA||={});class UV extends S0{_id;_ambientLightColor;_ambientLightIntensity;_directionalLightColor;_directionalLightIntensity;_directionalLightPosition;_name;_skyboxUri;_audioManager;_blockTypeRegistry;_chatManager;_chunkLattice;_entityManager;_lightManager;_loop;_networkSynchronizer;_sceneUIManager;_simulation;_tag;constructor(J){super();this._id=J.id,this._ambientLightColor=J.ambientLightColor??{r:255,g:255,b:255},this._ambientLightIntensity=J.ambientLightIntensity??1,this._directionalLightColor=J.directionalLightColor??{r:255,g:255,b:255},this._directionalLightIntensity=J.directionalLightIntensity??3,this._directionalLightPosition=J.directionalLightPosition??{x:100,y:150,z:100},this._name=J.name,this._skyboxUri=J.skyboxUri,this._tag=J.tag,this._audioManager=new UK(this),this._blockTypeRegistry=new jG(this),this._chatManager=new wV(this),this._chunkLattice=new ZV(this),this._entityManager=new QV(this),this._lightManager=new XV(this),this._loop=new qV(this,J.tickRate),this._networkSynchronizer=new vO(this),this._sceneUIManager=new VV(this),this._simulation=new FV(this,J.tickRate,J.gravity)}get id(){return this._id}get ambientLightColor(){return this._ambientLightColor}get ambientLightIntensity(){return this._ambientLightIntensity}get directionalLightColor(){return this._directionalLightColor}get directionalLightIntensity(){return this._directionalLightIntensity}get directionalLightPosition(){return this._directionalLightPosition}get name(){return this._name}get skyboxUri(){return this._skyboxUri}get audioManager(){return this._audioManager}get tag(){return this._tag}get blockTypeRegistry(){return this._blockTypeRegistry}get chatManager(){return this._chatManager}get chunkLattice(){return this._chunkLattice}get entityManager(){return this._entityManager}get lightManager(){return this._lightManager}get loop(){return this._loop}get networkSynchronizer(){return this._networkSynchronizer}get sceneUIManager(){return this._sceneUIManager}get simulation(){return this._simulation}loadMap(J){if(this.chunkLattice.clear(),J.blockTypes)for(let Z of J.blockTypes)this.blockTypeRegistry.registerGenericBlockType({id:Z.id,isLiquid:Z.isLiquid,name:Z.name,textureUri:Z.textureUri});if(J.blocks)for(let[Z,Y]of Object.entries(J.blocks)){let[$,W,Q]=Z.split(",").map(Number);this.chunkLattice.setBlock({x:$,y:W,z:Q},Y)}if(J.entities)for(let[Z,Y]of Object.entries(J.entities)){let[$,W,Q]=Z.split(",").map(Number);new _8(Y).spawn(this,{x:$,y:W,z:Q})}}setAmbientLightColor(J){this._ambientLightColor=J,this.emit("WORLD.SET_AMBIENT_LIGHT_COLOR",{world:this,color:J})}setAmbientLightIntensity(J){this._ambientLightIntensity=J,this.emit("WORLD.SET_AMBIENT_LIGHT_INTENSITY",{world:this,intensity:J})}setDirectionalLightColor(J){this._directionalLightColor=J,this.emit("WORLD.SET_DIRECTIONAL_LIGHT_COLOR",{world:this,color:J})}setDirectionalLightIntensity(J){this._directionalLightIntensity=J,this.emit("WORLD.SET_DIRECTIONAL_LIGHT_INTENSITY",{world:this,intensity:J})}setDirectionalLightPosition(J){this._directionalLightPosition=J,this.emit("WORLD.SET_DIRECTIONAL_LIGHT_POSITION",{world:this,position:J})}start(){this._loop.start(),this.emit("WORLD.START",{world:this,startedAtMs:Date.now()})}stop(){this._loop.stop(),this.emit("WORLD.STOP",{world:this,stoppedAtMs:Date.now()})}serialize(){return b0.serializeWorld(this)}}var Cr8=1,N41;((Z)=>Z.WORLD_CREATED="WORLD_MANAGER.WORLD_CREATED")(N41||={});class KK{static instance=new KK;_worlds=new Map;_nextWorldId=1;createWorld(J){let Z=new UV({...J,id:this._nextWorldId++});return Z.start(),this._worlds.set(Z.id,Z),n8.emit("WORLD_MANAGER.WORLD_CREATED",{world:Z}),Z}getAllWorlds(){return Array.from(this._worlds.values())}getDefaultWorld(){return this._worlds.get(Cr8)??this.createWorld({name:"Default World",skyboxUri:"skyboxes/partly-cloudy"})}getWorldsByTag(J){let Z=[];return this._worlds.forEach((Y)=>{if(Y.tag===J)Z.push(Y)}),Z}getWorld(J){return this._worlds.get(J)}}var P41;((Y)=>{Y.START="GAMESERVER.START";Y.STOP="GAMESERVER.STOP"})(P41||={});function Tr8(J){s0.init().then(()=>{return JJ.instance.modelRegistry.preloadModels()}).then(()=>{J(JJ.instance.worldManager.getDefaultWorld()),JJ.instance.start()}).catch((Z)=>{f.fatalError(`Failed to initialize the game engine, exiting. Error: ${Z}`)})}class JJ{static _instance;_modelRegistry=u5.instance;_playerManager=j5.instance;_socket=gJ.instance;_worldManager=KK.instance;_webServer=cQ.instance;constructor(){}static get instance(){if(!this._instance)this._instance=new JJ;return this._instance}get modelRegistry(){return this._modelRegistry}get playerManager(){return this._playerManager}get socket(){return this._socket}get webServer(){return this._webServer}get worldManager(){return this._worldManager}start(){n8.emit("GAMESERVER.START",{startedAtMs:performance.now()}),this._webServer.start()}}class QW{static instance=new QW;constructor(){}async getGlobalData(J){let Z=await I4.instance.getData(J);if(!Z||Z.error){if(Z?.error)f.warning(`PersistenceManager.getGlobalData(): ${Z.error.message}`);return}return Z}async getPlayerData(J){let Z=await I4.instance.getData(this._getPlayerKey(J));if(!Z||Z.error){if(Z?.error)f.warning(`PersistenceManager.getPlayerData(): ${Z.error.message}`);return}return Z}async setGlobalData(J,Z){let Y=await I4.instance.setData(J,Z);if(!Y||Y.error){if(Y?.error)f.warning(`PersistenceManager.setGlobalData(): ${Y.error.message}`);return}return Y}async setPlayerData(J,Z){let Y=await I4.instance.setData(this._getPlayerKey(J),Z);if(!Y||Y.error){if(Y?.error)f.warning(`PersistenceManager.setPlayerData(): ${Y.error.message}`);return}return Y}_getPlayerKey(J){return`player-${J.id}`}}var j41=["w","a","s","d","sp","sh","tb","ml","mr","q","e","r","f","z","x","c","v","1","2","3","4","5","6","7","8","9","0"],WV;((Q)=>{Q.CHAT_MESSAGE_SEND="PLAYER.CHAT_MESSAGE_SEND";Q.JOINED_WORLD="PLAYER.JOINED_WORLD";Q.LEFT_WORLD="PLAYER.LEFT_WORLD";Q.RECONNECTED_WORLD="PLAYER.RECONNECTED_WORLD";Q.REQUEST_SYNC="PLAYER.REQUEST_SYNC"})(WV||={});class XK extends S0{static _devNextPlayerId=1;id;username;profilePictureUrl;camera;connection;ui;_input={};_lastUnreliableInputSequenceNumber=0;_world;constructor(J,Z){super();this.id=Z?.user.id??`player-${XK._devNextPlayerId++}`,this.username=Z?.user.username??this.id,this.profilePictureUrl=Z?.user.profilePictureURL??void 0,this.camera=new KV(this),this.connection=J,this.ui=new GV(this),J.onPacket(s.PacketId.CHAT_MESSAGE_SEND,this._onChatMessageSendPacket),J.onPacket(s.PacketId.DEBUG_CONFIG,this._onDebugConfigPacket),J.onPacket(s.PacketId.INPUT,this._onInputPacket),J.onPacket(s.PacketId.SYNC_REQUEST,this._onSyncRequestPacket),J.onPacket(s.PacketId.UI_DATA_SEND,this._onUIDataSendPacket),this.joinWorld(JJ.instance.worldManager.getDefaultWorld())}get input(){return this._input}get world(){return this._world}disconnect(){this._leaveWorld(),this.connection.disconnect()}async getPersistedData(){return QW.instance.getPlayerData(this)}joinWorld(J){if(this._world)this.disconnect();this._world=J,this.emitWithWorld(this._world,"PLAYER.JOINED_WORLD",{player:this,world:this._world})}reconnect(){if(!this._world)return;this._lastUnreliableInputSequenceNumber=0,this.emitWithWorld(this._world,"PLAYER.RECONNECTED_WORLD",{player:this,world:this._world})}resetInputs(){this._input={}}async setPersistedData(J){return QW.instance.setPlayerData(this,J)}serialize(){return b0.serializePlayer(this)}_leaveWorld(){if(!this._world)return;this.emitWithWorld(this._world,"PLAYER.LEFT_WORLD",{player:this,world:this._world}),this._world=void 0}_onChatMessageSendPacket=(J)=>{if(this._world)this.emitWithWorld(this._world,"PLAYER.CHAT_MESSAGE_SEND",{player:this,message:J[1].m})};_onDebugConfigPacket=(J)=>{console.log(J)};_onInputPacket=(J)=>{let Z=J[1];if(Z.sq!==void 0){if(Z.sq<this._lastUnreliableInputSequenceNumber)return;this._lastUnreliableInputSequenceNumber=Z.sq}if(j41.forEach((Y)=>{let $=Y;if(Z[$]!==void 0)this._input[$]=Boolean(Z[$])}),Z.cp!==void 0)this.camera.setOrientationPitch(Z.cp);if(Z.cy!==void 0)this.camera.setOrientationYaw(Z.cy)};_onSyncRequestPacket=()=>{if(this._world)this.emitWithWorld(this._world,"PLAYER.REQUEST_SYNC",{player:this,receivedAt:Date.now(),receivedAtMs:performance.now()})};_onUIDataSendPacket=(J)=>{this.ui.emit("PLAYER_UI.DATA",{playerUI:this.ui,data:J[1]})}}var EA;((Y)=>{Y.BROADCAST_MESSAGE="CHAT.BROADCAST_MESSAGE";Y.PLAYER_MESSAGE="CHAT.PLAYER_MESSAGE"})(EA||={});class wV extends S0{_commandCallbacks={};_world;constructor(J){super();this._world=J,this._subscribeToPlayerEvents()}registerCommand(J,Z){this._commandCallbacks[J]=Z}unregisterCommand(J){delete this._commandCallbacks[J]}sendBroadcastMessage(J,Z){this._sendBroadcastMessage(void 0,J,Z)}sendPlayerMessage(J,Z,Y){this.emitWithWorld(this._world,"CHAT.PLAYER_MESSAGE",{player:J,message:Z,color:Y})}_subscribeToPlayerEvents(){this._world.on("PLAYER.CHAT_MESSAGE_SEND",(J)=>{let{player:Z,message:Y}=J,[$,...W]=Y.split(" "),Q=this._commandCallbacks[$];if(Q){Q(Z,W,Y);return}this._sendBroadcastMessage(Z,Y)})}_sendBroadcastMessage(J,Z,Y){this.emitWithWorld(this._world,"CHAT.BROADCAST_MESSAGE",{player:J,message:Z,color:Y})}}class LV extends gZ{autoCancelMouseLeftClick=!0;canJump=()=>!0;canRun=()=>!0;canSwim=()=>!0;canWalk=()=>!0;idleLoopedAnimations=["idle_upper","idle_lower"];interactOneshotAnimations=["simple_interact"];jumpOneshotAnimations=["jump_loop"];jumpVelocity=10;runLoopedAnimations=["run_upper","run_lower"];runVelocity=8;sticksToPlatforms=!0;swimFastVelocity=5;swimGravity=0.1;swimLoopedAnimations=["crawling"];swimMaxGravityVelocity=-1;swimSlowVelocity=3;swimUpwardVelocity=2;walkLoopedAnimations=["walk_upper","walk_lower"];walkVelocity=4;_stepAudio;_groundContactCount=0;_liquidContactCount=0;_platform;_swimUpwardCooldownAt=0;constructor(J={}){super();this.autoCancelMouseLeftClick=J.autoCancelMouseLeftClick??this.autoCancelMouseLeftClick,this.jumpVelocity=J.jumpVelocity??this.jumpVelocity,this.runVelocity=J.runVelocity??this.runVelocity,this.walkVelocity=J.walkVelocity??this.walkVelocity,this.canJump=J.canJump??this.canJump,this.canRun=J.canRun??this.canRun,this.canSwim=J.canSwim??this.canSwim,this.canWalk=J.canWalk??this.canWalk,this.sticksToPlatforms=J.sticksToPlatforms??this.sticksToPlatforms,this.swimFastVelocity=J.swimFastVelocity??this.swimFastVelocity,this.swimGravity=J.swimGravity??this.swimGravity,this.swimLoopedAnimations=J.swimLoopedAnimations??this.swimLoopedAnimations,this.swimSlowVelocity=J.swimSlowVelocity??this.swimSlowVelocity,this.swimUpwardVelocity=J.swimUpwardVelocity??this.swimUpwardVelocity}get isGrounded(){return this._groundContactCount>0}get isOnPlatform(){return!!this._platform}get isSwimming(){return this._liquidContactCount>0}get platform(){return this._platform}attach(J){this._stepAudio=new qK({uri:"audio/sfx/step/stone/stone-step-04.mp3",loop:!0,volume:0.1,referenceDistance:2,cutoffDistance:15,attachedToEntity:J}),J.setCcdEnabled(!0),J.lockAllRotations(),J.on("ENTITY.BLOCK_COLLISION",({blockType:Z,started:Y})=>{if(!Z.isLiquid||!this.canSwim(this))return;if(this._liquidContactCount<=0&&Y){let $=J.linearVelocity;J.setLinearVelocity({x:$.x*this.swimGravity,y:$.y*this.swimGravity,z:$.z*this.swimGravity})}if(this._liquidContactCount+=Y?1:-1,this._liquidContactCount>0)J.setGravityScale(this.swimGravity),J.startModelLoopedAnimations(this.swimLoopedAnimations),this._swimUpwardCooldownAt=performance.now()+600;else J.setGravityScale(1),J.stopModelAnimations(this.swimLoopedAnimations)})}spawn(J){if(!J.isSpawned)return f.error("DefaultPlayerEntityController.spawn(): Entity is not spawned!");J.createAndAddChildCollider({shape:"cylinder",radius:0.23,halfHeight:0.125,collisionGroups:{belongsTo:[4],collidesWith:[1,2]},isSensor:!0,relativePosition:{x:0,y:-0.75,z:0},tag:"groundSensor",onCollision:(Z,Y)=>{if(!J.isSpawned)return;if(!(Z instanceof N5)||!Z.isLiquid)this._groundContactCount+=Y?1:-1;if(!this._groundContactCount&&!this.isSwimming)J.startModelOneshotAnimations(this.jumpOneshotAnimations);else J.stopModelAnimations(this.jumpOneshotAnimations);if(!(Z instanceof _8)||!Z.isKinematic)return;if(Y&&this.sticksToPlatforms)this._platform=Z;else if(Z===this._platform&&!Y)this._platform=void 0}}),J.createAndAddChildCollider({shape:"capsule",halfHeight:0.33,radius:0.4,collisionGroups:{belongsTo:[4],collidesWith:[1,2]},friction:0,frictionCombineRule:1,tag:"wallCollider"})}tickWithPlayerInput(J,Z,Y,$){if(!J.isSpawned||!J.world)return;if(super.tickWithPlayerInput(J,Z,Y,$),J.parent)return;let{w:W,a:Q,s:X,d:K,sp:G,sh:z,ml:F}=Z,{yaw:V}=Y,H=J.linearVelocity,q={x:0,y:0,z:0},U=z;if(this.isGrounded&&!this.isSwimming&&(W||Q||X||K)){if(U)J.stopModelAnimations(Array.from(J.modelLoopedAnimations).filter((R)=>!this.runLoopedAnimations.includes(R))),J.startModelLoopedAnimations(this.runLoopedAnimations),this._stepAudio?.setPlaybackRate(0.75);else J.stopModelAnimations(Array.from(J.modelLoopedAnimations).filter((R)=>!this.walkLoopedAnimations.includes(R))),J.startModelLoopedAnimations(this.walkLoopedAnimations),this._stepAudio?.setPlaybackRate(0.51);this._stepAudio?.play(J.world,!this._stepAudio?.isPlaying)}else if(this._stepAudio?.pause(),!this.isSwimming)J.stopModelAnimations(Array.from(J.modelLoopedAnimations).filter((R)=>!this.idleLoopedAnimations.includes(R))),J.startModelLoopedAnimations(this.idleLoopedAnimations);if(F)J.startModelOneshotAnimations(this.interactOneshotAnimations),Z.ml=!this.autoCancelMouseLeftClick;if(U&&this.canRun(this)||!U&&this.canWalk(this)){let R=!this.isSwimming?U?this.runVelocity:this.walkVelocity:U?this.swimFastVelocity:this.swimSlowVelocity;if(W)q.x-=R*Math.sin(V),q.z-=R*Math.cos(V);if(X)q.x+=R*Math.sin(V),q.z+=R*Math.cos(V);if(Q)q.x-=R*Math.cos(V),q.z+=R*Math.sin(V);if(K)q.x+=R*Math.cos(V),q.z-=R*Math.sin(V);let N=Math.sqrt(q.x*q.x+q.z*q.z);if(N>R){let P=R/N;q.x*=P,q.z*=P}}if(this.isSwimming){if(H.y<this.swimMaxGravityVelocity)J.setLinearVelocity({...H,y:this.swimMaxGravityVelocity});if(H.y>this.swimUpwardVelocity*2)J.setLinearVelocity({...H,y:this.swimUpwardVelocity*2})}if(G&&this.canJump(this)){if(this.isGrounded&&!this.isSwimming&&H.y>-0.001&&H.y<=3)q.y=this.jumpVelocity;else if(this.isSwimming&&performance.now()>this._swimUpwardCooldownAt)q.y=this.swimUpwardVelocity*J.gravityScale}let L=this._platform?this._platform.linearVelocity:{x:0,y:0,z:0},w={x:q.x-H.x+L.x,y:q.y+L.y,z:q.z-H.z+L.z};if(!(this.runVelocity>0&&Math.abs(H.x)>this.runVelocity||this.jumpVelocity>0&&Math.abs(H.y)>this.jumpVelocity||this.runVelocity>0&&Math.abs(H.z)>this.runVelocity)||this.isOnPlatform){if(Object.values(w).some((R)=>R!==0)){let R=J.mass;J.applyImpulse({x:w.x*R,y:w.y*R,z:w.z*R})}}if(V!==void 0){let R=V/2;J.setRotation({x:0,y:Math.fround(Math.sin(R)),z:0,w:Math.fround(Math.cos(R))})}}}class IA extends t4{constructor(J){super({modelUri:"models/players/player.gltf",modelLoopedAnimations:["idle_lower","idle_upper"],modelScale:0.5,...J});if(!J.controller)this.setController(new LV)}}var L0=0.000001,n0=typeof Float32Array!=="undefined"?Float32Array:Array,e4=Math.random;var yl6=Math.PI/180;if(!Math.hypot)Math.hypot=function(){var J=0,Z=arguments.length;while(Z--)J+=arguments[Z]*arguments[Z];return Math.sqrt(J)};var D8={};R9(D8,{transpose:()=>xr8,subtract:()=>C41,sub:()=>or8,str:()=>ur8,set:()=>_r8,scale:()=>br8,rotate:()=>yr8,multiplyScalarAndAdd:()=>ar8,multiplyScalar:()=>nr8,multiply:()=>D41,mul:()=>sr8,invert:()=>Ar8,identity:()=>vr8,fromValues:()=>Sr8,fromScaling:()=>mr8,fromRotation:()=>gr8,frob:()=>dr8,exactEquals:()=>pr8,equals:()=>ir8,determinant:()=>fr8,create:()=>kr8,copy:()=>Ir8,clone:()=>Er8,adjoint:()=>hr8,add:()=>lr8,LDU:()=>cr8});function kr8(){var J=new n0(4);if(n0!=Float32Array)J[1]=0,J[2]=0;return J[0]=1,J[3]=1,J}function Er8(J){var Z=new n0(4);return Z[0]=J[0],Z[1]=J[1],Z[2]=J[2],Z[3]=J[3],Z}function Ir8(J,Z){return J[0]=Z[0],J[1]=Z[1],J[2]=Z[2],J[3]=Z[3],J}function vr8(J){return J[0]=1,J[1]=0,J[2]=0,J[3]=1,J}function Sr8(J,Z,Y,$){var W=new n0(4);return W[0]=J,W[1]=Z,W[2]=Y,W[3]=$,W}function _r8(J,Z,Y,$,W){return J[0]=Z,J[1]=Y,J[2]=$,J[3]=W,J}function xr8(J,Z){if(J===Z){var Y=Z[1];J[1]=Z[2],J[2]=Y}else J[0]=Z[0],J[1]=Z[2],J[2]=Z[1],J[3]=Z[3];return J}function Ar8(J,Z){var Y=Z[0],$=Z[1],W=Z[2],Q=Z[3],X=Y*Q-W*$;if(!X)return null;return X=1/X,J[0]=Q*X,J[1]=-$*X,J[2]=-W*X,J[3]=Y*X,J}function hr8(J,Z){var Y=Z[0];return J[0]=Z[3],J[1]=-Z[1],J[2]=-Z[2],J[3]=Y,J}function fr8(J){return J[0]*J[3]-J[2]*J[1]}function D41(J,Z,Y){var $=Z[0],W=Z[1],Q=Z[2],X=Z[3],K=Y[0],G=Y[1],z=Y[2],F=Y[3];return J[0]=$*K+Q*G,J[1]=W*K+X*G,J[2]=$*z+Q*F,J[3]=W*z+X*F,J}function yr8(J,Z,Y){var $=Z[0],W=Z[1],Q=Z[2],X=Z[3],K=Math.sin(Y),G=Math.cos(Y);return J[0]=$*G+Q*K,J[1]=W*G+X*K,J[2]=$*-K+Q*G,J[3]=W*-K+X*G,J}function br8(J,Z,Y){var $=Z[0],W=Z[1],Q=Z[2],X=Z[3],K=Y[0],G=Y[1];return J[0]=$*K,J[1]=W*K,J[2]=Q*G,J[3]=X*G,J}function gr8(J,Z){var Y=Math.sin(Z),$=Math.cos(Z);return J[0]=$,J[1]=Y,J[2]=-Y,J[3]=$,J}function mr8(J,Z){return J[0]=Z[0],J[1]=0,J[2]=0,J[3]=Z[1],J}function ur8(J){return"mat2("+J[0]+", "+J[1]+", "+J[2]+", "+J[3]+")"}function dr8(J){return Math.hypot(J[0],J[1],J[2],J[3])}function cr8(J,Z,Y,$){return J[2]=$[2]/$[0],Y[0]=$[0],Y[1]=$[1],Y[3]=$[3]-J[2]*Y[1],[J,Z,Y]}function lr8(J,Z,Y){return J[0]=Z[0]+Y[0],J[1]=Z[1]+Y[1],J[2]=Z[2]+Y[2],J[3]=Z[3]+Y[3],J}function C41(J,Z,Y){return J[0]=Z[0]-Y[0],J[1]=Z[1]-Y[1],J[2]=Z[2]-Y[2],J[3]=Z[3]-Y[3],J}function pr8(J,Z){return J[0]===Z[0]&&J[1]===Z[1]&&J[2]===Z[2]&&J[3]===Z[3]}function ir8(J,Z){var Y=J[0],$=J[1],W=J[2],Q=J[3],X=Z[0],K=Z[1],G=Z[2],z=Z[3];return Math.abs(Y-X)<=L0*Math.max(1,Math.abs(Y),Math.abs(X))&&Math.abs($-K)<=L0*Math.max(1,Math.abs($),Math.abs(K))&&Math.abs(W-G)<=L0*Math.max(1,Math.abs(W),Math.abs(G))&&Math.abs(Q-z)<=L0*Math.max(1,Math.abs(Q),Math.abs(z))}function nr8(J,Z,Y){return J[0]=Z[0]*Y,J[1]=Z[1]*Y,J[2]=Z[2]*Y,J[3]=Z[3]*Y,J}function ar8(J,Z,Y,$){return J[0]=Z[0]+Y[0]*$,J[1]=Z[1]+Y[1]*$,J[2]=Z[2]+Y[2]*$,J[3]=Z[3]+Y[3]*$,J}var sr8=D41,or8=C41;var A1={};R9(A1,{transpose:()=>$t8,translate:()=>Kt8,subtract:()=>k41,sub:()=>Ct8,str:()=>Bt8,set:()=>Zt8,scale:()=>zt8,rotate:()=>Gt8,projection:()=>Lt8,normalFromMat4:()=>wt8,multiplyScalarAndAdd:()=>Nt8,multiplyScalar:()=>Rt8,multiply:()=>T41,mul:()=>Dt8,invert:()=>Wt8,identity:()=>Yt8,fromValues:()=>Jt8,fromTranslation:()=>Ft8,fromScaling:()=>Ht8,fromRotation:()=>Vt8,fromQuat:()=>Ut8,fromMat4:()=>rr8,fromMat2d:()=>qt8,frob:()=>Ot8,exactEquals:()=>Pt8,equals:()=>jt8,determinant:()=>Xt8,create:()=>vA,copy:()=>er8,clone:()=>tr8,adjoint:()=>Qt8,add:()=>Mt8});function vA(){var J=new n0(9);if(n0!=Float32Array)J[1]=0,J[2]=0,J[3]=0,J[5]=0,J[6]=0,J[7]=0;return J[0]=1,J[4]=1,J[8]=1,J}function rr8(J,Z){return J[0]=Z[0],J[1]=Z[1],J[2]=Z[2],J[3]=Z[4],J[4]=Z[5],J[5]=Z[6],J[6]=Z[8],J[7]=Z[9],J[8]=Z[10],J}function tr8(J){var Z=new n0(9);return Z[0]=J[0],Z[1]=J[1],Z[2]=J[2],Z[3]=J[3],Z[4]=J[4],Z[5]=J[5],Z[6]=J[6],Z[7]=J[7],Z[8]=J[8],Z}function er8(J,Z){return J[0]=Z[0],J[1]=Z[1],J[2]=Z[2],J[3]=Z[3],J[4]=Z[4],J[5]=Z[5],J[6]=Z[6],J[7]=Z[7],J[8]=Z[8],J}function Jt8(J,Z,Y,$,W,Q,X,K,G){var z=new n0(9);return z[0]=J,z[1]=Z,z[2]=Y,z[3]=$,z[4]=W,z[5]=Q,z[6]=X,z[7]=K,z[8]=G,z}function Zt8(J,Z,Y,$,W,Q,X,K,G,z){return J[0]=Z,J[1]=Y,J[2]=$,J[3]=W,J[4]=Q,J[5]=X,J[6]=K,J[7]=G,J[8]=z,J}function Yt8(J){return J[0]=1,J[1]=0,J[2]=0,J[3]=0,J[4]=1,J[5]=0,J[6]=0,J[7]=0,J[8]=1,J}function $t8(J,Z){if(J===Z){var Y=Z[1],$=Z[2],W=Z[5];J[1]=Z[3],J[2]=Z[6],J[3]=Y,J[5]=Z[7],J[6]=$,J[7]=W}else J[0]=Z[0],J[1]=Z[3],J[2]=Z[6],J[3]=Z[1],J[4]=Z[4],J[5]=Z[7],J[6]=Z[2],J[7]=Z[5],J[8]=Z[8];return J}function Wt8(J,Z){var Y=Z[0],$=Z[1],W=Z[2],Q=Z[3],X=Z[4],K=Z[5],G=Z[6],z=Z[7],F=Z[8],V=F*X-K*z,H=-F*Q+K*G,q=z*Q-X*G,U=Y*V+$*H+W*q;if(!U)return null;return U=1/U,J[0]=V*U,J[1]=(-F*$+W*z)*U,J[2]=(K*$-W*X)*U,J[3]=H*U,J[4]=(F*Y-W*G)*U,J[5]=(-K*Y+W*Q)*U,J[6]=q*U,J[7]=(-z*Y+$*G)*U,J[8]=(X*Y-$*Q)*U,J}function Qt8(J,Z){var Y=Z[0],$=Z[1],W=Z[2],Q=Z[3],X=Z[4],K=Z[5],G=Z[6],z=Z[7],F=Z[8];return J[0]=X*F-K*z,J[1]=W*z-$*F,J[2]=$*K-W*X,J[3]=K*G-Q*F,J[4]=Y*F-W*G,J[5]=W*Q-Y*K,J[6]=Q*z-X*G,J[7]=$*G-Y*z,J[8]=Y*X-$*Q,J}function Xt8(J){var Z=J[0],Y=J[1],$=J[2],W=J[3],Q=J[4],X=J[5],K=J[6],G=J[7],z=J[8];return Z*(z*Q-X*G)+Y*(-z*W+X*K)+$*(G*W-Q*K)}function T41(J,Z,Y){var $=Z[0],W=Z[1],Q=Z[2],X=Z[3],K=Z[4],G=Z[5],z=Z[6],F=Z[7],V=Z[8],H=Y[0],q=Y[1],U=Y[2],L=Y[3],w=Y[4],O=Y[5],R=Y[6],N=Y[7],P=Y[8];return J[0]=H*$+q*X+U*z,J[1]=H*W+q*K+U*F,J[2]=H*Q+q*G+U*V,J[3]=L*$+w*X+O*z,J[4]=L*W+w*K+O*F,J[5]=L*Q+w*G+O*V,J[6]=R*$+N*X+P*z,J[7]=R*W+N*K+P*F,J[8]=R*Q+N*G+P*V,J}function Kt8(J,Z,Y){var $=Z[0],W=Z[1],Q=Z[2],X=Z[3],K=Z[4],G=Z[5],z=Z[6],F=Z[7],V=Z[8],H=Y[0],q=Y[1];return J[0]=$,J[1]=W,J[2]=Q,J[3]=X,J[4]=K,J[5]=G,J[6]=H*$+q*X+z,J[7]=H*W+q*K+F,J[8]=H*Q+q*G+V,J}function Gt8(J,Z,Y){var $=Z[0],W=Z[1],Q=Z[2],X=Z[3],K=Z[4],G=Z[5],z=Z[6],F=Z[7],V=Z[8],H=Math.sin(Y),q=Math.cos(Y);return J[0]=q*$+H*X,J[1]=q*W+H*K,J[2]=q*Q+H*G,J[3]=q*X-H*$,J[4]=q*K-H*W,J[5]=q*G-H*Q,J[6]=z,J[7]=F,J[8]=V,J}function zt8(J,Z,Y){var $=Y[0],W=Y[1];return J[0]=$*Z[0],J[1]=$*Z[1],J[2]=$*Z[2],J[3]=W*Z[3],J[4]=W*Z[4],J[5]=W*Z[5],J[6]=Z[6],J[7]=Z[7],J[8]=Z[8],J}function Ft8(J,Z){return J[0]=1,J[1]=0,J[2]=0,J[3]=0,J[4]=1,J[5]=0,J[6]=Z[0],J[7]=Z[1],J[8]=1,J}function Vt8(J,Z){var Y=Math.sin(Z),$=Math.cos(Z);return J[0]=$,J[1]=Y,J[2]=0,J[3]=-Y,J[4]=$,J[5]=0,J[6]=0,J[7]=0,J[8]=1,J}function Ht8(J,Z){return J[0]=Z[0],J[1]=0,J[2]=0,J[3]=0,J[4]=Z[1],J[5]=0,J[6]=0,J[7]=0,J[8]=1,J}function qt8(J,Z){return J[0]=Z[0],J[1]=Z[1],J[2]=0,J[3]=Z[2],J[4]=Z[3],J[5]=0,J[6]=Z[4],J[7]=Z[5],J[8]=1,J}function Ut8(J,Z){var Y=Z[0],$=Z[1],W=Z[2],Q=Z[3],X=Y+Y,K=$+$,G=W+W,z=Y*X,F=$*X,V=$*K,H=W*X,q=W*K,U=W*G,L=Q*X,w=Q*K,O=Q*G;return J[0]=1-V-U,J[3]=F-O,J[6]=H+w,J[1]=F+O,J[4]=1-z-U,J[7]=q-L,J[2]=H-w,J[5]=q+L,J[8]=1-z-V,J}function wt8(J,Z){var Y=Z[0],$=Z[1],W=Z[2],Q=Z[3],X=Z[4],K=Z[5],G=Z[6],z=Z[7],F=Z[8],V=Z[9],H=Z[10],q=Z[11],U=Z[12],L=Z[13],w=Z[14],O=Z[15],R=Y*K-$*X,N=Y*G-W*X,P=Y*z-Q*X,D=$*G-W*K,j=$*z-Q*K,C=W*z-Q*G,k=F*L-V*U,I=F*w-H*U,A=F*O-q*U,v=V*w-H*L,x=V*O-q*L,u=H*O-q*w,h=R*u-N*x+P*v+D*A-j*I+C*k;if(!h)return null;return h=1/h,J[0]=(K*u-G*x+z*v)*h,J[1]=(G*A-X*u-z*I)*h,J[2]=(X*x-K*A+z*k)*h,J[3]=(W*x-$*u-Q*v)*h,J[4]=(Y*u-W*A+Q*I)*h,J[5]=($*A-Y*x-Q*k)*h,J[6]=(L*C-w*j+O*D)*h,J[7]=(w*P-U*C-O*N)*h,J[8]=(U*j-L*P+O*R)*h,J}function Lt8(J,Z,Y){return J[0]=2/Z,J[1]=0,J[2]=0,J[3]=0,J[4]=-2/Y,J[5]=0,J[6]=-1,J[7]=1,J[8]=1,J}function Bt8(J){return"mat3("+J[0]+", "+J[1]+", "+J[2]+", "+J[3]+", "+J[4]+", "+J[5]+", "+J[6]+", "+J[7]+", "+J[8]+")"}function Ot8(J){return Math.hypot(J[0],J[1],J[2],J[3],J[4],J[5],J[6],J[7],J[8])}function Mt8(J,Z,Y){return J[0]=Z[0]+Y[0],J[1]=Z[1]+Y[1],J[2]=Z[2]+Y[2],J[3]=Z[3]+Y[3],J[4]=Z[4]+Y[4],J[5]=Z[5]+Y[5],J[6]=Z[6]+Y[6],J[7]=Z[7]+Y[7],J[8]=Z[8]+Y[8],J}function k41(J,Z,Y){return J[0]=Z[0]-Y[0],J[1]=Z[1]-Y[1],J[2]=Z[2]-Y[2],J[3]=Z[3]-Y[3],J[4]=Z[4]-Y[4],J[5]=Z[5]-Y[5],J[6]=Z[6]-Y[6],J[7]=Z[7]-Y[7],J[8]=Z[8]-Y[8],J}function Rt8(J,Z,Y){return J[0]=Z[0]*Y,J[1]=Z[1]*Y,J[2]=Z[2]*Y,J[3]=Z[3]*Y,J[4]=Z[4]*Y,J[5]=Z[5]*Y,J[6]=Z[6]*Y,J[7]=Z[7]*Y,J[8]=Z[8]*Y,J}function Nt8(J,Z,Y,$){return J[0]=Z[0]+Y[0]*$,J[1]=Z[1]+Y[1]*$,J[2]=Z[2]+Y[2]*$,J[3]=Z[3]+Y[3]*$,J[4]=Z[4]+Y[4]*$,J[5]=Z[5]+Y[5]*$,J[6]=Z[6]+Y[6]*$,J[7]=Z[7]+Y[7]*$,J[8]=Z[8]+Y[8]*$,J}function Pt8(J,Z){return J[0]===Z[0]&&J[1]===Z[1]&&J[2]===Z[2]&&J[3]===Z[3]&&J[4]===Z[4]&&J[5]===Z[5]&&J[6]===Z[6]&&J[7]===Z[7]&&J[8]===Z[8]}function jt8(J,Z){var Y=J[0],$=J[1],W=J[2],Q=J[3],X=J[4],K=J[5],G=J[6],z=J[7],F=J[8],V=Z[0],H=Z[1],q=Z[2],U=Z[3],L=Z[4],w=Z[5],O=Z[6],R=Z[7],N=Z[8];return Math.abs(Y-V)<=L0*Math.max(1,Math.abs(Y),Math.abs(V))&&Math.abs($-H)<=L0*Math.max(1,Math.abs($),Math.abs(H))&&Math.abs(W-q)<=L0*Math.max(1,Math.abs(W),Math.abs(q))&&Math.abs(Q-U)<=L0*Math.max(1,Math.abs(Q),Math.abs(U))&&Math.abs(X-L)<=L0*Math.max(1,Math.abs(X),Math.abs(L))&&Math.abs(K-w)<=L0*Math.max(1,Math.abs(K),Math.abs(w))&&Math.abs(G-O)<=L0*Math.max(1,Math.abs(G),Math.abs(O))&&Math.abs(z-R)<=L0*Math.max(1,Math.abs(z),Math.abs(R))&&Math.abs(F-N)<=L0*Math.max(1,Math.abs(F),Math.abs(N))}var Dt8=T41,Ct8=k41;var d0={};R9(d0,{transpose:()=>St8,translate:()=>ht8,targetTo:()=>Xe8,subtract:()=>A41,sub:()=>we8,str:()=>Ke8,set:()=>vt8,scale:()=>ft8,rotateZ:()=>mt8,rotateY:()=>gt8,rotateX:()=>bt8,rotate:()=>yt8,perspectiveZO:()=>Ze8,perspectiveNO:()=>_41,perspectiveFromFieldOfView:()=>Ye8,perspective:()=>Je8,orthoZO:()=>We8,orthoNO:()=>x41,ortho:()=>$e8,multiplyScalarAndAdd:()=>Ve8,multiplyScalar:()=>Fe8,multiply:()=>I41,mul:()=>Ue8,lookAt:()=>Qe8,invert:()=>_t8,identity:()=>E41,getTranslation:()=>at8,getScaling:()=>S41,getRotation:()=>st8,frustum:()=>et8,fromZRotation:()=>it8,fromYRotation:()=>pt8,fromXRotation:()=>lt8,fromValues:()=>It8,fromTranslation:()=>ut8,fromScaling:()=>dt8,fromRotationTranslationScaleOrigin:()=>rt8,fromRotationTranslationScale:()=>ot8,fromRotationTranslation:()=>v41,fromRotation:()=>ct8,fromQuat2:()=>nt8,fromQuat:()=>tt8,frob:()=>Ge8,exactEquals:()=>He8,equals:()=>qe8,determinant:()=>At8,create:()=>Tt8,copy:()=>Et8,clone:()=>kt8,adjoint:()=>xt8,add:()=>ze8});function Tt8(){var J=new n0(16);if(n0!=Float32Array)J[1]=0,J[2]=0,J[3]=0,J[4]=0,J[6]=0,J[7]=0,J[8]=0,J[9]=0,J[11]=0,J[12]=0,J[13]=0,J[14]=0;return J[0]=1,J[5]=1,J[10]=1,J[15]=1,J}function kt8(J){var Z=new n0(16);return Z[0]=J[0],Z[1]=J[1],Z[2]=J[2],Z[3]=J[3],Z[4]=J[4],Z[5]=J[5],Z[6]=J[6],Z[7]=J[7],Z[8]=J[8],Z[9]=J[9],Z[10]=J[10],Z[11]=J[11],Z[12]=J[12],Z[13]=J[13],Z[14]=J[14],Z[15]=J[15],Z}function Et8(J,Z){return J[0]=Z[0],J[1]=Z[1],J[2]=Z[2],J[3]=Z[3],J[4]=Z[4],J[5]=Z[5],J[6]=Z[6],J[7]=Z[7],J[8]=Z[8],J[9]=Z[9],J[10]=Z[10],J[11]=Z[11],J[12]=Z[12],J[13]=Z[13],J[14]=Z[14],J[15]=Z[15],J}function It8(J,Z,Y,$,W,Q,X,K,G,z,F,V,H,q,U,L){var w=new n0(16);return w[0]=J,w[1]=Z,w[2]=Y,w[3]=$,w[4]=W,w[5]=Q,w[6]=X,w[7]=K,w[8]=G,w[9]=z,w[10]=F,w[11]=V,w[12]=H,w[13]=q,w[14]=U,w[15]=L,w}function vt8(J,Z,Y,$,W,Q,X,K,G,z,F,V,H,q,U,L,w){return J[0]=Z,J[1]=Y,J[2]=$,J[3]=W,J[4]=Q,J[5]=X,J[6]=K,J[7]=G,J[8]=z,J[9]=F,J[10]=V,J[11]=H,J[12]=q,J[13]=U,J[14]=L,J[15]=w,J}function E41(J){return J[0]=1,J[1]=0,J[2]=0,J[3]=0,J[4]=0,J[5]=1,J[6]=0,J[7]=0,J[8]=0,J[9]=0,J[10]=1,J[11]=0,J[12]=0,J[13]=0,J[14]=0,J[15]=1,J}function St8(J,Z){if(J===Z){var Y=Z[1],$=Z[2],W=Z[3],Q=Z[6],X=Z[7],K=Z[11];J[1]=Z[4],J[2]=Z[8],J[3]=Z[12],J[4]=Y,J[6]=Z[9],J[7]=Z[13],J[8]=$,J[9]=Q,J[11]=Z[14],J[12]=W,J[13]=X,J[14]=K}else J[0]=Z[0],J[1]=Z[4],J[2]=Z[8],J[3]=Z[12],J[4]=Z[1],J[5]=Z[5],J[6]=Z[9],J[7]=Z[13],J[8]=Z[2],J[9]=Z[6],J[10]=Z[10],J[11]=Z[14],J[12]=Z[3],J[13]=Z[7],J[14]=Z[11],J[15]=Z[15];return J}function _t8(J,Z){var Y=Z[0],$=Z[1],W=Z[2],Q=Z[3],X=Z[4],K=Z[5],G=Z[6],z=Z[7],F=Z[8],V=Z[9],H=Z[10],q=Z[11],U=Z[12],L=Z[13],w=Z[14],O=Z[15],R=Y*K-$*X,N=Y*G-W*X,P=Y*z-Q*X,D=$*G-W*K,j=$*z-Q*K,C=W*z-Q*G,k=F*L-V*U,I=F*w-H*U,A=F*O-q*U,v=V*w-H*L,x=V*O-q*L,u=H*O-q*w,h=R*u-N*x+P*v+D*A-j*I+C*k;if(!h)return null;return h=1/h,J[0]=(K*u-G*x+z*v)*h,J[1]=(W*x-$*u-Q*v)*h,J[2]=(L*C-w*j+O*D)*h,J[3]=(H*j-V*C-q*D)*h,J[4]=(G*A-X*u-z*I)*h,J[5]=(Y*u-W*A+Q*I)*h,J[6]=(w*P-U*C-O*N)*h,J[7]=(F*C-H*P+q*N)*h,J[8]=(X*x-K*A+z*k)*h,J[9]=($*A-Y*x-Q*k)*h,J[10]=(U*j-L*P+O*R)*h,J[11]=(V*P-F*j-q*R)*h,J[12]=(K*I-X*v-G*k)*h,J[13]=(Y*v-$*I+W*k)*h,J[14]=(L*N-U*D-w*R)*h,J[15]=(F*D-V*N+H*R)*h,J}function xt8(J,Z){var Y=Z[0],$=Z[1],W=Z[2],Q=Z[3],X=Z[4],K=Z[5],G=Z[6],z=Z[7],F=Z[8],V=Z[9],H=Z[10],q=Z[11],U=Z[12],L=Z[13],w=Z[14],O=Z[15];return J[0]=K*(H*O-q*w)-V*(G*O-z*w)+L*(G*q-z*H),J[1]=-($*(H*O-q*w)-V*(W*O-Q*w)+L*(W*q-Q*H)),J[2]=$*(G*O-z*w)-K*(W*O-Q*w)+L*(W*z-Q*G),J[3]=-($*(G*q-z*H)-K*(W*q-Q*H)+V*(W*z-Q*G)),J[4]=-(X*(H*O-q*w)-F*(G*O-z*w)+U*(G*q-z*H)),J[5]=Y*(H*O-q*w)-F*(W*O-Q*w)+U*(W*q-Q*H),J[6]=-(Y*(G*O-z*w)-X*(W*O-Q*w)+U*(W*z-Q*G)),J[7]=Y*(G*q-z*H)-X*(W*q-Q*H)+F*(W*z-Q*G),J[8]=X*(V*O-q*L)-F*(K*O-z*L)+U*(K*q-z*V),J[9]=-(Y*(V*O-q*L)-F*($*O-Q*L)+U*($*q-Q*V)),J[10]=Y*(K*O-z*L)-X*($*O-Q*L)+U*($*z-Q*K),J[11]=-(Y*(K*q-z*V)-X*($*q-Q*V)+F*($*z-Q*K)),J[12]=-(X*(V*w-H*L)-F*(K*w-G*L)+U*(K*H-G*V)),J[13]=Y*(V*w-H*L)-F*($*w-W*L)+U*($*H-W*V),J[14]=-(Y*(K*w-G*L)-X*($*w-W*L)+U*($*G-W*K)),J[15]=Y*(K*H-G*V)-X*($*H-W*V)+F*($*G-W*K),J}function At8(J){var Z=J[0],Y=J[1],$=J[2],W=J[3],Q=J[4],X=J[5],K=J[6],G=J[7],z=J[8],F=J[9],V=J[10],H=J[11],q=J[12],U=J[13],L=J[14],w=J[15],O=Z*X-Y*Q,R=Z*K-$*Q,N=Z*G-W*Q,P=Y*K-$*X,D=Y*G-W*X,j=$*G-W*K,C=z*U-F*q,k=z*L-V*q,I=z*w-H*q,A=F*L-V*U,v=F*w-H*U,x=V*w-H*L;return O*x-R*v+N*A+P*I-D*k+j*C}function I41(J,Z,Y){var $=Z[0],W=Z[1],Q=Z[2],X=Z[3],K=Z[4],G=Z[5],z=Z[6],F=Z[7],V=Z[8],H=Z[9],q=Z[10],U=Z[11],L=Z[12],w=Z[13],O=Z[14],R=Z[15],N=Y[0],P=Y[1],D=Y[2],j=Y[3];return J[0]=N*$+P*K+D*V+j*L,J[1]=N*W+P*G+D*H+j*w,J[2]=N*Q+P*z+D*q+j*O,J[3]=N*X+P*F+D*U+j*R,N=Y[4],P=Y[5],D=Y[6],j=Y[7],J[4]=N*$+P*K+D*V+j*L,J[5]=N*W+P*G+D*H+j*w,J[6]=N*Q+P*z+D*q+j*O,J[7]=N*X+P*F+D*U+j*R,N=Y[8],P=Y[9],D=Y[10],j=Y[11],J[8]=N*$+P*K+D*V+j*L,J[9]=N*W+P*G+D*H+j*w,J[10]=N*Q+P*z+D*q+j*O,J[11]=N*X+P*F+D*U+j*R,N=Y[12],P=Y[13],D=Y[14],j=Y[15],J[12]=N*$+P*K+D*V+j*L,J[13]=N*W+P*G+D*H+j*w,J[14]=N*Q+P*z+D*q+j*O,J[15]=N*X+P*F+D*U+j*R,J}function ht8(J,Z,Y){var $=Y[0],W=Y[1],Q=Y[2],X,K,G,z,F,V,H,q,U,L,w,O;if(Z===J)J[12]=Z[0]*$+Z[4]*W+Z[8]*Q+Z[12],J[13]=Z[1]*$+Z[5]*W+Z[9]*Q+Z[13],J[14]=Z[2]*$+Z[6]*W+Z[10]*Q+Z[14],J[15]=Z[3]*$+Z[7]*W+Z[11]*Q+Z[15];else X=Z[0],K=Z[1],G=Z[2],z=Z[3],F=Z[4],V=Z[5],H=Z[6],q=Z[7],U=Z[8],L=Z[9],w=Z[10],O=Z[11],J[0]=X,J[1]=K,J[2]=G,J[3]=z,J[4]=F,J[5]=V,J[6]=H,J[7]=q,J[8]=U,J[9]=L,J[10]=w,J[11]=O,J[12]=X*$+F*W+U*Q+Z[12],J[13]=K*$+V*W+L*Q+Z[13],J[14]=G*$+H*W+w*Q+Z[14],J[15]=z*$+q*W+O*Q+Z[15];return J}function ft8(J,Z,Y){var $=Y[0],W=Y[1],Q=Y[2];return J[0]=Z[0]*$,J[1]=Z[1]*$,J[2]=Z[2]*$,J[3]=Z[3]*$,J[4]=Z[4]*W,J[5]=Z[5]*W,J[6]=Z[6]*W,J[7]=Z[7]*W,J[8]=Z[8]*Q,J[9]=Z[9]*Q,J[10]=Z[10]*Q,J[11]=Z[11]*Q,J[12]=Z[12],J[13]=Z[13],J[14]=Z[14],J[15]=Z[15],J}function yt8(J,Z,Y,$){var W=$[0],Q=$[1],X=$[2],K=Math.hypot(W,Q,X),G,z,F,V,H,q,U,L,w,O,R,N,P,D,j,C,k,I,A,v,x,u,h,d;if(K<L0)return null;if(K=1/K,W*=K,Q*=K,X*=K,G=Math.sin(Y),z=Math.cos(Y),F=1-z,V=Z[0],H=Z[1],q=Z[2],U=Z[3],L=Z[4],w=Z[5],O=Z[6],R=Z[7],N=Z[8],P=Z[9],D=Z[10],j=Z[11],C=W*W*F+z,k=Q*W*F+X*G,I=X*W*F-Q*G,A=W*Q*F-X*G,v=Q*Q*F+z,x=X*Q*F+W*G,u=W*X*F+Q*G,h=Q*X*F-W*G,d=X*X*F+z,J[0]=V*C+L*k+N*I,J[1]=H*C+w*k+P*I,J[2]=q*C+O*k+D*I,J[3]=U*C+R*k+j*I,J[4]=V*A+L*v+N*x,J[5]=H*A+w*v+P*x,J[6]=q*A+O*v+D*x,J[7]=U*A+R*v+j*x,J[8]=V*u+L*h+N*d,J[9]=H*u+w*h+P*d,J[10]=q*u+O*h+D*d,J[11]=U*u+R*h+j*d,Z!==J)J[12]=Z[12],J[13]=Z[13],J[14]=Z[14],J[15]=Z[15];return J}function bt8(J,Z,Y){var $=Math.sin(Y),W=Math.cos(Y),Q=Z[4],X=Z[5],K=Z[6],G=Z[7],z=Z[8],F=Z[9],V=Z[10],H=Z[11];if(Z!==J)J[0]=Z[0],J[1]=Z[1],J[2]=Z[2],J[3]=Z[3],J[12]=Z[12],J[13]=Z[13],J[14]=Z[14],J[15]=Z[15];return J[4]=Q*W+z*$,J[5]=X*W+F*$,J[6]=K*W+V*$,J[7]=G*W+H*$,J[8]=z*W-Q*$,J[9]=F*W-X*$,J[10]=V*W-K*$,J[11]=H*W-G*$,J}function gt8(J,Z,Y){var $=Math.sin(Y),W=Math.cos(Y),Q=Z[0],X=Z[1],K=Z[2],G=Z[3],z=Z[8],F=Z[9],V=Z[10],H=Z[11];if(Z!==J)J[4]=Z[4],J[5]=Z[5],J[6]=Z[6],J[7]=Z[7],J[12]=Z[12],J[13]=Z[13],J[14]=Z[14],J[15]=Z[15];return J[0]=Q*W-z*$,J[1]=X*W-F*$,J[2]=K*W-V*$,J[3]=G*W-H*$,J[8]=Q*$+z*W,J[9]=X*$+F*W,J[10]=K*$+V*W,J[11]=G*$+H*W,J}function mt8(J,Z,Y){var $=Math.sin(Y),W=Math.cos(Y),Q=Z[0],X=Z[1],K=Z[2],G=Z[3],z=Z[4],F=Z[5],V=Z[6],H=Z[7];if(Z!==J)J[8]=Z[8],J[9]=Z[9],J[10]=Z[10],J[11]=Z[11],J[12]=Z[12],J[13]=Z[13],J[14]=Z[14],J[15]=Z[15];return J[0]=Q*W+z*$,J[1]=X*W+F*$,J[2]=K*W+V*$,J[3]=G*W+H*$,J[4]=z*W-Q*$,J[5]=F*W-X*$,J[6]=V*W-K*$,J[7]=H*W-G*$,J}function ut8(J,Z){return J[0]=1,J[1]=0,J[2]=0,J[3]=0,J[4]=0,J[5]=1,J[6]=0,J[7]=0,J[8]=0,J[9]=0,J[10]=1,J[11]=0,J[12]=Z[0],J[13]=Z[1],J[14]=Z[2],J[15]=1,J}function dt8(J,Z){return J[0]=Z[0],J[1]=0,J[2]=0,J[3]=0,J[4]=0,J[5]=Z[1],J[6]=0,J[7]=0,J[8]=0,J[9]=0,J[10]=Z[2],J[11]=0,J[12]=0,J[13]=0,J[14]=0,J[15]=1,J}function ct8(J,Z,Y){var $=Y[0],W=Y[1],Q=Y[2],X=Math.hypot($,W,Q),K,G,z;if(X<L0)return null;return X=1/X,$*=X,W*=X,Q*=X,K=Math.sin(Z),G=Math.cos(Z),z=1-G,J[0]=$*$*z+G,J[1]=W*$*z+Q*K,J[2]=Q*$*z-W*K,J[3]=0,J[4]=$*W*z-Q*K,J[5]=W*W*z+G,J[6]=Q*W*z+$*K,J[7]=0,J[8]=$*Q*z+W*K,J[9]=W*Q*z-$*K,J[10]=Q*Q*z+G,J[11]=0,J[12]=0,J[13]=0,J[14]=0,J[15]=1,J}function lt8(J,Z){var Y=Math.sin(Z),$=Math.cos(Z);return J[0]=1,J[1]=0,J[2]=0,J[3]=0,J[4]=0,J[5]=$,J[6]=Y,J[7]=0,J[8]=0,J[9]=-Y,J[10]=$,J[11]=0,J[12]=0,J[13]=0,J[14]=0,J[15]=1,J}function pt8(J,Z){var Y=Math.sin(Z),$=Math.cos(Z);return J[0]=$,J[1]=0,J[2]=-Y,J[3]=0,J[4]=0,J[5]=1,J[6]=0,J[7]=0,J[8]=Y,J[9]=0,J[10]=$,J[11]=0,J[12]=0,J[13]=0,J[14]=0,J[15]=1,J}function it8(J,Z){var Y=Math.sin(Z),$=Math.cos(Z);return J[0]=$,J[1]=Y,J[2]=0,J[3]=0,J[4]=-Y,J[5]=$,J[6]=0,J[7]=0,J[8]=0,J[9]=0,J[10]=1,J[11]=0,J[12]=0,J[13]=0,J[14]=0,J[15]=1,J}function v41(J,Z,Y){var $=Z[0],W=Z[1],Q=Z[2],X=Z[3],K=$+$,G=W+W,z=Q+Q,F=$*K,V=$*G,H=$*z,q=W*G,U=W*z,L=Q*z,w=X*K,O=X*G,R=X*z;return J[0]=1-(q+L),J[1]=V+R,J[2]=H-O,J[3]=0,J[4]=V-R,J[5]=1-(F+L),J[6]=U+w,J[7]=0,J[8]=H+O,J[9]=U-w,J[10]=1-(F+q),J[11]=0,J[12]=Y[0],J[13]=Y[1],J[14]=Y[2],J[15]=1,J}function nt8(J,Z){var Y=new n0(3),$=-Z[0],W=-Z[1],Q=-Z[2],X=Z[3],K=Z[4],G=Z[5],z=Z[6],F=Z[7],V=$*$+W*W+Q*Q+X*X;if(V>0)Y[0]=(K*X+F*$+G*Q-z*W)*2/V,Y[1]=(G*X+F*W+z*$-K*Q)*2/V,Y[2]=(z*X+F*Q+K*W-G*$)*2/V;else Y[0]=(K*X+F*$+G*Q-z*W)*2,Y[1]=(G*X+F*W+z*$-K*Q)*2,Y[2]=(z*X+F*Q+K*W-G*$)*2;return v41(J,Z,Y),J}function at8(J,Z){return J[0]=Z[12],J[1]=Z[13],J[2]=Z[14],J}function S41(J,Z){var Y=Z[0],$=Z[1],W=Z[2],Q=Z[4],X=Z[5],K=Z[6],G=Z[8],z=Z[9],F=Z[10];return J[0]=Math.hypot(Y,$,W),J[1]=Math.hypot(Q,X,K),J[2]=Math.hypot(G,z,F),J}function st8(J,Z){var Y=new n0(3);S41(Y,Z);var $=1/Y[0],W=1/Y[1],Q=1/Y[2],X=Z[0]*$,K=Z[1]*W,G=Z[2]*Q,z=Z[4]*$,F=Z[5]*W,V=Z[6]*Q,H=Z[8]*$,q=Z[9]*W,U=Z[10]*Q,L=X+F+U,w=0;if(L>0)w=Math.sqrt(L+1)*2,J[3]=0.25*w,J[0]=(V-q)/w,J[1]=(H-G)/w,J[2]=(K-z)/w;else if(X>F&&X>U)w=Math.sqrt(1+X-F-U)*2,J[3]=(V-q)/w,J[0]=0.25*w,J[1]=(K+z)/w,J[2]=(H+G)/w;else if(F>U)w=Math.sqrt(1+F-X-U)*2,J[3]=(H-G)/w,J[0]=(K+z)/w,J[1]=0.25*w,J[2]=(V+q)/w;else w=Math.sqrt(1+U-X-F)*2,J[3]=(K-z)/w,J[0]=(H+G)/w,J[1]=(V+q)/w,J[2]=0.25*w;return J}function ot8(J,Z,Y,$){var W=Z[0],Q=Z[1],X=Z[2],K=Z[3],G=W+W,z=Q+Q,F=X+X,V=W*G,H=W*z,q=W*F,U=Q*z,L=Q*F,w=X*F,O=K*G,R=K*z,N=K*F,P=$[0],D=$[1],j=$[2];return J[0]=(1-(U+w))*P,J[1]=(H+N)*P,J[2]=(q-R)*P,J[3]=0,J[4]=(H-N)*D,J[5]=(1-(V+w))*D,J[6]=(L+O)*D,J[7]=0,J[8]=(q+R)*j,J[9]=(L-O)*j,J[10]=(1-(V+U))*j,J[11]=0,J[12]=Y[0],J[13]=Y[1],J[14]=Y[2],J[15]=1,J}function rt8(J,Z,Y,$,W){var Q=Z[0],X=Z[1],K=Z[2],G=Z[3],z=Q+Q,F=X+X,V=K+K,H=Q*z,q=Q*F,U=Q*V,L=X*F,w=X*V,O=K*V,R=G*z,N=G*F,P=G*V,D=$[0],j=$[1],C=$[2],k=W[0],I=W[1],A=W[2],v=(1-(L+O))*D,x=(q+P)*D,u=(U-N)*D,h=(q-P)*j,d=(1-(H+O))*j,W0=(w+R)*j,U0=(U+N)*C,B0=(w-R)*C,y0=(1-(H+L))*C;return J[0]=v,J[1]=x,J[2]=u,J[3]=0,J[4]=h,J[5]=d,J[6]=W0,J[7]=0,J[8]=U0,J[9]=B0,J[10]=y0,J[11]=0,J[12]=Y[0]+k-(v*k+h*I+U0*A),J[13]=Y[1]+I-(x*k+d*I+B0*A),J[14]=Y[2]+A-(u*k+W0*I+y0*A),J[15]=1,J}function tt8(J,Z){var Y=Z[0],$=Z[1],W=Z[2],Q=Z[3],X=Y+Y,K=$+$,G=W+W,z=Y*X,F=$*X,V=$*K,H=W*X,q=W*K,U=W*G,L=Q*X,w=Q*K,O=Q*G;return J[0]=1-V-U,J[1]=F+O,J[2]=H-w,J[3]=0,J[4]=F-O,J[5]=1-z-U,J[6]=q+L,J[7]=0,J[8]=H+w,J[9]=q-L,J[10]=1-z-V,J[11]=0,J[12]=0,J[13]=0,J[14]=0,J[15]=1,J}function et8(J,Z,Y,$,W,Q,X){var K=1/(Y-Z),G=1/(W-$),z=1/(Q-X);return J[0]=Q*2*K,J[1]=0,J[2]=0,J[3]=0,J[4]=0,J[5]=Q*2*G,J[6]=0,J[7]=0,J[8]=(Y+Z)*K,J[9]=(W+$)*G,J[10]=(X+Q)*z,J[11]=-1,J[12]=0,J[13]=0,J[14]=X*Q*2*z,J[15]=0,J}function _41(J,Z,Y,$,W){var Q=1/Math.tan(Z/2),X;if(J[0]=Q/Y,J[1]=0,J[2]=0,J[3]=0,J[4]=0,J[5]=Q,J[6]=0,J[7]=0,J[8]=0,J[9]=0,J[11]=-1,J[12]=0,J[13]=0,J[15]=0,W!=null&&W!==1/0)X=1/($-W),J[10]=(W+$)*X,J[14]=2*W*$*X;else J[10]=-1,J[14]=-2*$;return J}var Je8=_41;function Ze8(J,Z,Y,$,W){var Q=1/Math.tan(Z/2),X;if(J[0]=Q/Y,J[1]=0,J[2]=0,J[3]=0,J[4]=0,J[5]=Q,J[6]=0,J[7]=0,J[8]=0,J[9]=0,J[11]=-1,J[12]=0,J[13]=0,J[15]=0,W!=null&&W!==1/0)X=1/($-W),J[10]=W*X,J[14]=W*$*X;else J[10]=-1,J[14]=-$;return J}function Ye8(J,Z,Y,$){var W=Math.tan(Z.upDegrees*Math.PI/180),Q=Math.tan(Z.downDegrees*Math.PI/180),X=Math.tan(Z.leftDegrees*Math.PI/180),K=Math.tan(Z.rightDegrees*Math.PI/180),G=2/(X+K),z=2/(W+Q);return J[0]=G,J[1]=0,J[2]=0,J[3]=0,J[4]=0,J[5]=z,J[6]=0,J[7]=0,J[8]=-((X-K)*G*0.5),J[9]=(W-Q)*z*0.5,J[10]=$/(Y-$),J[11]=-1,J[12]=0,J[13]=0,J[14]=$*Y/(Y-$),J[15]=0,J}function x41(J,Z,Y,$,W,Q,X){var K=1/(Z-Y),G=1/($-W),z=1/(Q-X);return J[0]=-2*K,J[1]=0,J[2]=0,J[3]=0,J[4]=0,J[5]=-2*G,J[6]=0,J[7]=0,J[8]=0,J[9]=0,J[10]=2*z,J[11]=0,J[12]=(Z+Y)*K,J[13]=(W+$)*G,J[14]=(X+Q)*z,J[15]=1,J}var $e8=x41;function We8(J,Z,Y,$,W,Q,X){var K=1/(Z-Y),G=1/($-W),z=1/(Q-X);return J[0]=-2*K,J[1]=0,J[2]=0,J[3]=0,J[4]=0,J[5]=-2*G,J[6]=0,J[7]=0,J[8]=0,J[9]=0,J[10]=z,J[11]=0,J[12]=(Z+Y)*K,J[13]=(W+$)*G,J[14]=Q*z,J[15]=1,J}function Qe8(J,Z,Y,$){var W,Q,X,K,G,z,F,V,H,q,U=Z[0],L=Z[1],w=Z[2],O=$[0],R=$[1],N=$[2],P=Y[0],D=Y[1],j=Y[2];if(Math.abs(U-P)<L0&&Math.abs(L-D)<L0&&Math.abs(w-j)<L0)return E41(J);if(F=U-P,V=L-D,H=w-j,q=1/Math.hypot(F,V,H),F*=q,V*=q,H*=q,W=R*H-N*V,Q=N*F-O*H,X=O*V-R*F,q=Math.hypot(W,Q,X),!q)W=0,Q=0,X=0;else q=1/q,W*=q,Q*=q,X*=q;if(K=V*X-H*Q,G=H*W-F*X,z=F*Q-V*W,q=Math.hypot(K,G,z),!q)K=0,G=0,z=0;else q=1/q,K*=q,G*=q,z*=q;return J[0]=W,J[1]=K,J[2]=F,J[3]=0,J[4]=Q,J[5]=G,J[6]=V,J[7]=0,J[8]=X,J[9]=z,J[10]=H,J[11]=0,J[12]=-(W*U+Q*L+X*w),J[13]=-(K*U+G*L+z*w),J[14]=-(F*U+V*L+H*w),J[15]=1,J}function Xe8(J,Z,Y,$){var W=Z[0],Q=Z[1],X=Z[2],K=$[0],G=$[1],z=$[2],F=W-Y[0],V=Q-Y[1],H=X-Y[2],q=F*F+V*V+H*H;if(q>0)q=1/Math.sqrt(q),F*=q,V*=q,H*=q;var U=G*H-z*V,L=z*F-K*H,w=K*V-G*F;if(q=U*U+L*L+w*w,q>0)q=1/Math.sqrt(q),U*=q,L*=q,w*=q;return J[0]=U,J[1]=L,J[2]=w,J[3]=0,J[4]=V*w-H*L,J[5]=H*U-F*w,J[6]=F*L-V*U,J[7]=0,J[8]=F,J[9]=V,J[10]=H,J[11]=0,J[12]=W,J[13]=Q,J[14]=X,J[15]=1,J}function Ke8(J){return"mat4("+J[0]+", "+J[1]+", "+J[2]+", "+J[3]+", "+J[4]+", "+J[5]+", "+J[6]+", "+J[7]+", "+J[8]+", "+J[9]+", "+J[10]+", "+J[11]+", "+J[12]+", "+J[13]+", "+J[14]+", "+J[15]+")"}function Ge8(J){return Math.hypot(J[0],J[1],J[2],J[3],J[4],J[5],J[6],J[7],J[8],J[9],J[10],J[11],J[12],J[13],J[14],J[15])}function ze8(J,Z,Y){return J[0]=Z[0]+Y[0],J[1]=Z[1]+Y[1],J[2]=Z[2]+Y[2],J[3]=Z[3]+Y[3],J[4]=Z[4]+Y[4],J[5]=Z[5]+Y[5],J[6]=Z[6]+Y[6],J[7]=Z[7]+Y[7],J[8]=Z[8]+Y[8],J[9]=Z[9]+Y[9],J[10]=Z[10]+Y[10],J[11]=Z[11]+Y[11],J[12]=Z[12]+Y[12],J[13]=Z[13]+Y[13],J[14]=Z[14]+Y[14],J[15]=Z[15]+Y[15],J}function A41(J,Z,Y){return J[0]=Z[0]-Y[0],J[1]=Z[1]-Y[1],J[2]=Z[2]-Y[2],J[3]=Z[3]-Y[3],J[4]=Z[4]-Y[4],J[5]=Z[5]-Y[5],J[6]=Z[6]-Y[6],J[7]=Z[7]-Y[7],J[8]=Z[8]-Y[8],J[9]=Z[9]-Y[9],J[10]=Z[10]-Y[10],J[11]=Z[11]-Y[11],J[12]=Z[12]-Y[12],J[13]=Z[13]-Y[13],J[14]=Z[14]-Y[14],J[15]=Z[15]-Y[15],J}function Fe8(J,Z,Y){return J[0]=Z[0]*Y,J[1]=Z[1]*Y,J[2]=Z[2]*Y,J[3]=Z[3]*Y,J[4]=Z[4]*Y,J[5]=Z[5]*Y,J[6]=Z[6]*Y,J[7]=Z[7]*Y,J[8]=Z[8]*Y,J[9]=Z[9]*Y,J[10]=Z[10]*Y,J[11]=Z[11]*Y,J[12]=Z[12]*Y,J[13]=Z[13]*Y,J[14]=Z[14]*Y,J[15]=Z[15]*Y,J}function Ve8(J,Z,Y,$){return J[0]=Z[0]+Y[0]*$,J[1]=Z[1]+Y[1]*$,J[2]=Z[2]+Y[2]*$,J[3]=Z[3]+Y[3]*$,J[4]=Z[4]+Y[4]*$,J[5]=Z[5]+Y[5]*$,J[6]=Z[6]+Y[6]*$,J[7]=Z[7]+Y[7]*$,J[8]=Z[8]+Y[8]*$,J[9]=Z[9]+Y[9]*$,J[10]=Z[10]+Y[10]*$,J[11]=Z[11]+Y[11]*$,J[12]=Z[12]+Y[12]*$,J[13]=Z[13]+Y[13]*$,J[14]=Z[14]+Y[14]*$,J[15]=Z[15]+Y[15]*$,J}function He8(J,Z){return J[0]===Z[0]&&J[1]===Z[1]&&J[2]===Z[2]&&J[3]===Z[3]&&J[4]===Z[4]&&J[5]===Z[5]&&J[6]===Z[6]&&J[7]===Z[7]&&J[8]===Z[8]&&J[9]===Z[9]&&J[10]===Z[10]&&J[11]===Z[11]&&J[12]===Z[12]&&J[13]===Z[13]&&J[14]===Z[14]&&J[15]===Z[15]}function qe8(J,Z){var Y=J[0],$=J[1],W=J[2],Q=J[3],X=J[4],K=J[5],G=J[6],z=J[7],F=J[8],V=J[9],H=J[10],q=J[11],U=J[12],L=J[13],w=J[14],O=J[15],R=Z[0],N=Z[1],P=Z[2],D=Z[3],j=Z[4],C=Z[5],k=Z[6],I=Z[7],A=Z[8],v=Z[9],x=Z[10],u=Z[11],h=Z[12],d=Z[13],W0=Z[14],U0=Z[15];return Math.abs(Y-R)<=L0*Math.max(1,Math.abs(Y),Math.abs(R))&&Math.abs($-N)<=L0*Math.max(1,Math.abs($),Math.abs(N))&&Math.abs(W-P)<=L0*Math.max(1,Math.abs(W),Math.abs(P))&&Math.abs(Q-D)<=L0*Math.max(1,Math.abs(Q),Math.abs(D))&&Math.abs(X-j)<=L0*Math.max(1,Math.abs(X),Math.abs(j))&&Math.abs(K-C)<=L0*Math.max(1,Math.abs(K),Math.abs(C))&&Math.abs(G-k)<=L0*Math.max(1,Math.abs(G),Math.abs(k))&&Math.abs(z-I)<=L0*Math.max(1,Math.abs(z),Math.abs(I))&&Math.abs(F-A)<=L0*Math.max(1,Math.abs(F),Math.abs(A))&&Math.abs(V-v)<=L0*Math.max(1,Math.abs(V),Math.abs(v))&&Math.abs(H-x)<=L0*Math.max(1,Math.abs(H),Math.abs(x))&&Math.abs(q-u)<=L0*Math.max(1,Math.abs(q),Math.abs(u))&&Math.abs(U-h)<=L0*Math.max(1,Math.abs(U),Math.abs(h))&&Math.abs(L-d)<=L0*Math.max(1,Math.abs(L),Math.abs(d))&&Math.abs(w-W0)<=L0*Math.max(1,Math.abs(w),Math.abs(W0))&&Math.abs(O-U0)<=L0*Math.max(1,Math.abs(O),Math.abs(U0))}var Ue8=I41,we8=A41;var V1={};R9(V1,{str:()=>V06,squaredLength:()=>z71,sqrLen:()=>R06,sqlerp:()=>D06,slerp:()=>AO,setAxisAngle:()=>Z71,setAxes:()=>C06,set:()=>w06,scale:()=>X71,rotationTo:()=>j06,rotateZ:()=>W06,rotateY:()=>$06,rotateX:()=>Y06,random:()=>K06,pow:()=>X06,normalize:()=>AA,multiply:()=>Y71,mul:()=>B06,ln:()=>W71,lerp:()=>O06,length:()=>G71,len:()=>M06,invert:()=>G06,identity:()=>ee8,getAxisAngle:()=>J06,getAngle:()=>Z06,fromValues:()=>q06,fromMat3:()=>Q71,fromEuler:()=>F06,exp:()=>$71,exactEquals:()=>N06,equals:()=>P06,dot:()=>K71,create:()=>xA,copy:()=>U06,conjugate:()=>z06,clone:()=>H06,calculateW:()=>Q06,add:()=>L06});var l0={};R9(l0,{zero:()=>me8,transformQuat:()=>he8,transformMat4:()=>xe8,transformMat3:()=>Ae8,subtract:()=>f41,sub:()=>le8,str:()=>ue8,squaredLength:()=>u41,squaredDistance:()=>m41,sqrLen:()=>se8,sqrDist:()=>ae8,set:()=>Oe8,scaleAndAdd:()=>Te8,scale:()=>Ce8,round:()=>De8,rotateZ:()=>be8,rotateY:()=>ye8,rotateX:()=>fe8,random:()=>_e8,normalize:()=>SA,negate:()=>ke8,multiply:()=>y41,mul:()=>pe8,min:()=>Pe8,max:()=>je8,lerp:()=>Ie8,length:()=>h41,len:()=>_A,inverse:()=>Ee8,hermite:()=>ve8,fromValues:()=>_O,forEach:()=>oe8,floor:()=>Ne8,exactEquals:()=>de8,equals:()=>ce8,dot:()=>xO,divide:()=>b41,div:()=>ie8,distance:()=>g41,dist:()=>ne8,cross:()=>BV,create:()=>SO,copy:()=>Be8,clone:()=>Le8,ceil:()=>Re8,bezier:()=>Se8,angle:()=>ge8,add:()=>Me8});function SO(){var J=new n0(3);if(n0!=Float32Array)J[0]=0,J[1]=0,J[2]=0;return J}function Le8(J){var Z=new n0(3);return Z[0]=J[0],Z[1]=J[1],Z[2]=J[2],Z}function h41(J){var Z=J[0],Y=J[1],$=J[2];return Math.hypot(Z,Y,$)}function _O(J,Z,Y){var $=new n0(3);return $[0]=J,$[1]=Z,$[2]=Y,$}function Be8(J,Z){return J[0]=Z[0],J[1]=Z[1],J[2]=Z[2],J}function Oe8(J,Z,Y,$){return J[0]=Z,J[1]=Y,J[2]=$,J}function Me8(J,Z,Y){return J[0]=Z[0]+Y[0],J[1]=Z[1]+Y[1],J[2]=Z[2]+Y[2],J}function f41(J,Z,Y){return J[0]=Z[0]-Y[0],J[1]=Z[1]-Y[1],J[2]=Z[2]-Y[2],J}function y41(J,Z,Y){return J[0]=Z[0]*Y[0],J[1]=Z[1]*Y[1],J[2]=Z[2]*Y[2],J}function b41(J,Z,Y){return J[0]=Z[0]/Y[0],J[1]=Z[1]/Y[1],J[2]=Z[2]/Y[2],J}function Re8(J,Z){return J[0]=Math.ceil(Z[0]),J[1]=Math.ceil(Z[1]),J[2]=Math.ceil(Z[2]),J}function Ne8(J,Z){return J[0]=Math.floor(Z[0]),J[1]=Math.floor(Z[1]),J[2]=Math.floor(Z[2]),J}function Pe8(J,Z,Y){return J[0]=Math.min(Z[0],Y[0]),J[1]=Math.min(Z[1],Y[1]),J[2]=Math.min(Z[2],Y[2]),J}function je8(J,Z,Y){return J[0]=Math.max(Z[0],Y[0]),J[1]=Math.max(Z[1],Y[1]),J[2]=Math.max(Z[2],Y[2]),J}function De8(J,Z){return J[0]=Math.round(Z[0]),J[1]=Math.round(Z[1]),J[2]=Math.round(Z[2]),J}function Ce8(J,Z,Y){return J[0]=Z[0]*Y,J[1]=Z[1]*Y,J[2]=Z[2]*Y,J}function Te8(J,Z,Y,$){return J[0]=Z[0]+Y[0]*$,J[1]=Z[1]+Y[1]*$,J[2]=Z[2]+Y[2]*$,J}function g41(J,Z){var Y=Z[0]-J[0],$=Z[1]-J[1],W=Z[2]-J[2];return Math.hypot(Y,$,W)}function m41(J,Z){var Y=Z[0]-J[0],$=Z[1]-J[1],W=Z[2]-J[2];return Y*Y+$*$+W*W}function u41(J){var Z=J[0],Y=J[1],$=J[2];return Z*Z+Y*Y+$*$}function ke8(J,Z){return J[0]=-Z[0],J[1]=-Z[1],J[2]=-Z[2],J}function Ee8(J,Z){return J[0]=1/Z[0],J[1]=1/Z[1],J[2]=1/Z[2],J}function SA(J,Z){var Y=Z[0],$=Z[1],W=Z[2],Q=Y*Y+$*$+W*W;if(Q>0)Q=1/Math.sqrt(Q);return J[0]=Z[0]*Q,J[1]=Z[1]*Q,J[2]=Z[2]*Q,J}function xO(J,Z){return J[0]*Z[0]+J[1]*Z[1]+J[2]*Z[2]}function BV(J,Z,Y){var $=Z[0],W=Z[1],Q=Z[2],X=Y[0],K=Y[1],G=Y[2];return J[0]=W*G-Q*K,J[1]=Q*X-$*G,J[2]=$*K-W*X,J}function Ie8(J,Z,Y,$){var W=Z[0],Q=Z[1],X=Z[2];return J[0]=W+$*(Y[0]-W),J[1]=Q+$*(Y[1]-Q),J[2]=X+$*(Y[2]-X),J}function ve8(J,Z,Y,$,W,Q){var X=Q*Q,K=X*(2*Q-3)+1,G=X*(Q-2)+Q,z=X*(Q-1),F=X*(3-2*Q);return J[0]=Z[0]*K+Y[0]*G+$[0]*z+W[0]*F,J[1]=Z[1]*K+Y[1]*G+$[1]*z+W[1]*F,J[2]=Z[2]*K+Y[2]*G+$[2]*z+W[2]*F,J}function Se8(J,Z,Y,$,W,Q){var X=1-Q,K=X*X,G=Q*Q,z=K*X,F=3*Q*K,V=3*G*X,H=G*Q;return J[0]=Z[0]*z+Y[0]*F+$[0]*V+W[0]*H,J[1]=Z[1]*z+Y[1]*F+$[1]*V+W[1]*H,J[2]=Z[2]*z+Y[2]*F+$[2]*V+W[2]*H,J}function _e8(J,Z){Z=Z||1;var Y=e4()*2*Math.PI,$=e4()*2-1,W=Math.sqrt(1-$*$)*Z;return J[0]=Math.cos(Y)*W,J[1]=Math.sin(Y)*W,J[2]=$*Z,J}function xe8(J,Z,Y){var $=Z[0],W=Z[1],Q=Z[2],X=Y[3]*$+Y[7]*W+Y[11]*Q+Y[15];return X=X||1,J[0]=(Y[0]*$+Y[4]*W+Y[8]*Q+Y[12])/X,J[1]=(Y[1]*$+Y[5]*W+Y[9]*Q+Y[13])/X,J[2]=(Y[2]*$+Y[6]*W+Y[10]*Q+Y[14])/X,J}function Ae8(J,Z,Y){var $=Z[0],W=Z[1],Q=Z[2];return J[0]=$*Y[0]+W*Y[3]+Q*Y[6],J[1]=$*Y[1]+W*Y[4]+Q*Y[7],J[2]=$*Y[2]+W*Y[5]+Q*Y[8],J}function he8(J,Z,Y){var $=Y[0],W=Y[1],Q=Y[2],X=Y[3],K=Z[0],G=Z[1],z=Z[2],F=W*z-Q*G,V=Q*K-$*z,H=$*G-W*K,q=W*H-Q*V,U=Q*F-$*H,L=$*V-W*F,w=X*2;return F*=w,V*=w,H*=w,q*=2,U*=2,L*=2,J[0]=K+F+q,J[1]=G+V+U,J[2]=z+H+L,J}function fe8(J,Z,Y,$){var W=[],Q=[];return W[0]=Z[0]-Y[0],W[1]=Z[1]-Y[1],W[2]=Z[2]-Y[2],Q[0]=W[0],Q[1]=W[1]*Math.cos($)-W[2]*Math.sin($),Q[2]=W[1]*Math.sin($)+W[2]*Math.cos($),J[0]=Q[0]+Y[0],J[1]=Q[1]+Y[1],J[2]=Q[2]+Y[2],J}function ye8(J,Z,Y,$){var W=[],Q=[];return W[0]=Z[0]-Y[0],W[1]=Z[1]-Y[1],W[2]=Z[2]-Y[2],Q[0]=W[2]*Math.sin($)+W[0]*Math.cos($),Q[1]=W[1],Q[2]=W[2]*Math.cos($)-W[0]*Math.sin($),J[0]=Q[0]+Y[0],J[1]=Q[1]+Y[1],J[2]=Q[2]+Y[2],J}function be8(J,Z,Y,$){var W=[],Q=[];return W[0]=Z[0]-Y[0],W[1]=Z[1]-Y[1],W[2]=Z[2]-Y[2],Q[0]=W[0]*Math.cos($)-W[1]*Math.sin($),Q[1]=W[0]*Math.sin($)+W[1]*Math.cos($),Q[2]=W[2],J[0]=Q[0]+Y[0],J[1]=Q[1]+Y[1],J[2]=Q[2]+Y[2],J}function ge8(J,Z){var Y=J[0],$=J[1],W=J[2],Q=Z[0],X=Z[1],K=Z[2],G=Math.sqrt(Y*Y+$*$+W*W),z=Math.sqrt(Q*Q+X*X+K*K),F=G*z,V=F&&xO(J,Z)/F;return Math.acos(Math.min(Math.max(V,-1),1))}function me8(J){return J[0]=0,J[1]=0,J[2]=0,J}function ue8(J){return"vec3("+J[0]+", "+J[1]+", "+J[2]+")"}function de8(J,Z){return J[0]===Z[0]&&J[1]===Z[1]&&J[2]===Z[2]}function ce8(J,Z){var Y=J[0],$=J[1],W=J[2],Q=Z[0],X=Z[1],K=Z[2];return Math.abs(Y-Q)<=L0*Math.max(1,Math.abs(Y),Math.abs(Q))&&Math.abs($-X)<=L0*Math.max(1,Math.abs($),Math.abs(X))&&Math.abs(W-K)<=L0*Math.max(1,Math.abs(W),Math.abs(K))}var le8=f41,pe8=y41,ie8=b41,ne8=g41,ae8=m41,_A=h41,se8=u41,oe8=function(){var J=SO();return function(Z,Y,$,W,Q,X){var K,G;if(!Y)Y=3;if(!$)$=0;if(W)G=Math.min(W*Y+$,Z.length);else G=Z.length;for(K=$;K<G;K+=Y)J[0]=Z[K],J[1]=Z[K+1],J[2]=Z[K+2],Q(J,J,X),Z[K]=J[0],Z[K+1]=J[1],Z[K+2]=J[2];return Z}}();function re8(){var J=new n0(4);if(n0!=Float32Array)J[0]=0,J[1]=0,J[2]=0,J[3]=0;return J}function d41(J){var Z=new n0(4);return Z[0]=J[0],Z[1]=J[1],Z[2]=J[2],Z[3]=J[3],Z}function c41(J,Z,Y,$){var W=new n0(4);return W[0]=J,W[1]=Z,W[2]=Y,W[3]=$,W}function l41(J,Z){return J[0]=Z[0],J[1]=Z[1],J[2]=Z[2],J[3]=Z[3],J}function p41(J,Z,Y,$,W){return J[0]=Z,J[1]=Y,J[2]=$,J[3]=W,J}function i41(J,Z,Y){return J[0]=Z[0]+Y[0],J[1]=Z[1]+Y[1],J[2]=Z[2]+Y[2],J[3]=Z[3]+Y[3],J}function n41(J,Z,Y){return J[0]=Z[0]*Y,J[1]=Z[1]*Y,J[2]=Z[2]*Y,J[3]=Z[3]*Y,J}function a41(J){var Z=J[0],Y=J[1],$=J[2],W=J[3];return Math.hypot(Z,Y,$,W)}function s41(J){var Z=J[0],Y=J[1],$=J[2],W=J[3];return Z*Z+Y*Y+$*$+W*W}function o41(J,Z){var Y=Z[0],$=Z[1],W=Z[2],Q=Z[3],X=Y*Y+$*$+W*W+Q*Q;if(X>0)X=1/Math.sqrt(X);return J[0]=Y*X,J[1]=$*X,J[2]=W*X,J[3]=Q*X,J}function r41(J,Z){return J[0]*Z[0]+J[1]*Z[1]+J[2]*Z[2]+J[3]*Z[3]}function t41(J,Z,Y,$){var W=Z[0],Q=Z[1],X=Z[2],K=Z[3];return J[0]=W+$*(Y[0]-W),J[1]=Q+$*(Y[1]-Q),J[2]=X+$*(Y[2]-X),J[3]=K+$*(Y[3]-K),J}function e41(J,Z){return J[0]===Z[0]&&J[1]===Z[1]&&J[2]===Z[2]&&J[3]===Z[3]}function J71(J,Z){var Y=J[0],$=J[1],W=J[2],Q=J[3],X=Z[0],K=Z[1],G=Z[2],z=Z[3];return Math.abs(Y-X)<=L0*Math.max(1,Math.abs(Y),Math.abs(X))&&Math.abs($-K)<=L0*Math.max(1,Math.abs($),Math.abs(K))&&Math.abs(W-G)<=L0*Math.max(1,Math.abs(W),Math.abs(G))&&Math.abs(Q-z)<=L0*Math.max(1,Math.abs(Q),Math.abs(z))}var bl6=function(){var J=re8();return function(Z,Y,$,W,Q,X){var K,G;if(!Y)Y=4;if(!$)$=0;if(W)G=Math.min(W*Y+$,Z.length);else G=Z.length;for(K=$;K<G;K+=Y)J[0]=Z[K],J[1]=Z[K+1],J[2]=Z[K+2],J[3]=Z[K+3],Q(J,J,X),Z[K]=J[0],Z[K+1]=J[1],Z[K+2]=J[2],Z[K+3]=J[3];return Z}}();function xA(){var J=new n0(4);if(n0!=Float32Array)J[0]=0,J[1]=0,J[2]=0;return J[3]=1,J}function ee8(J){return J[0]=0,J[1]=0,J[2]=0,J[3]=1,J}function Z71(J,Z,Y){Y=Y*0.5;var $=Math.sin(Y);return J[0]=$*Z[0],J[1]=$*Z[1],J[2]=$*Z[2],J[3]=Math.cos(Y),J}function J06(J,Z){var Y=Math.acos(Z[3])*2,$=Math.sin(Y/2);if($>L0)J[0]=Z[0]/$,J[1]=Z[1]/$,J[2]=Z[2]/$;else J[0]=1,J[1]=0,J[2]=0;return Y}function Z06(J,Z){var Y=K71(J,Z);return Math.acos(2*Y*Y-1)}function Y71(J,Z,Y){var $=Z[0],W=Z[1],Q=Z[2],X=Z[3],K=Y[0],G=Y[1],z=Y[2],F=Y[3];return J[0]=$*F+X*K+W*z-Q*G,J[1]=W*F+X*G+Q*K-$*z,J[2]=Q*F+X*z+$*G-W*K,J[3]=X*F-$*K-W*G-Q*z,J}function Y06(J,Z,Y){Y*=0.5;var $=Z[0],W=Z[1],Q=Z[2],X=Z[3],K=Math.sin(Y),G=Math.cos(Y);return J[0]=$*G+X*K,J[1]=W*G+Q*K,J[2]=Q*G-W*K,J[3]=X*G-$*K,J}function $06(J,Z,Y){Y*=0.5;var $=Z[0],W=Z[1],Q=Z[2],X=Z[3],K=Math.sin(Y),G=Math.cos(Y);return J[0]=$*G-Q*K,J[1]=W*G+X*K,J[2]=Q*G+$*K,J[3]=X*G-W*K,J}function W06(J,Z,Y){Y*=0.5;var $=Z[0],W=Z[1],Q=Z[2],X=Z[3],K=Math.sin(Y),G=Math.cos(Y);return J[0]=$*G+W*K,J[1]=W*G-$*K,J[2]=Q*G+X*K,J[3]=X*G-Q*K,J}function Q06(J,Z){var Y=Z[0],$=Z[1],W=Z[2];return J[0]=Y,J[1]=$,J[2]=W,J[3]=Math.sqrt(Math.abs(1-Y*Y-$*$-W*W)),J}function $71(J,Z){var Y=Z[0],$=Z[1],W=Z[2],Q=Z[3],X=Math.sqrt(Y*Y+$*$+W*W),K=Math.exp(Q),G=X>0?K*Math.sin(X)/X:0;return J[0]=Y*G,J[1]=$*G,J[2]=W*G,J[3]=K*Math.cos(X),J}function W71(J,Z){var Y=Z[0],$=Z[1],W=Z[2],Q=Z[3],X=Math.sqrt(Y*Y+$*$+W*W),K=X>0?Math.atan2(X,Q)/X:0;return J[0]=Y*K,J[1]=$*K,J[2]=W*K,J[3]=0.5*Math.log(Y*Y+$*$+W*W+Q*Q),J}function X06(J,Z,Y){return W71(J,Z),X71(J,J,Y),$71(J,J),J}function AO(J,Z,Y,$){var W=Z[0],Q=Z[1],X=Z[2],K=Z[3],G=Y[0],z=Y[1],F=Y[2],V=Y[3],H,q,U,L,w;if(q=W*G+Q*z+X*F+K*V,q<0)q=-q,G=-G,z=-z,F=-F,V=-V;if(1-q>L0)H=Math.acos(q),U=Math.sin(H),L=Math.sin((1-$)*H)/U,w=Math.sin($*H)/U;else L=1-$,w=$;return J[0]=L*W+w*G,J[1]=L*Q+w*z,J[2]=L*X+w*F,J[3]=L*K+w*V,J}function K06(J){var Z=e4(),Y=e4(),$=e4(),W=Math.sqrt(1-Z),Q=Math.sqrt(Z);return J[0]=W*Math.sin(2*Math.PI*Y),J[1]=W*Math.cos(2*Math.PI*Y),J[2]=Q*Math.sin(2*Math.PI*$),J[3]=Q*Math.cos(2*Math.PI*$),J}function G06(J,Z){var Y=Z[0],$=Z[1],W=Z[2],Q=Z[3],X=Y*Y+$*$+W*W+Q*Q,K=X?1/X:0;return J[0]=-Y*K,J[1]=-$*K,J[2]=-W*K,J[3]=Q*K,J}function z06(J,Z){return J[0]=-Z[0],J[1]=-Z[1],J[2]=-Z[2],J[3]=Z[3],J}function Q71(J,Z){var Y=Z[0]+Z[4]+Z[8],$;if(Y>0)$=Math.sqrt(Y+1),J[3]=0.5*$,$=0.5/$,J[0]=(Z[5]-Z[7])*$,J[1]=(Z[6]-Z[2])*$,J[2]=(Z[1]-Z[3])*$;else{var W=0;if(Z[4]>Z[0])W=1;if(Z[8]>Z[W*3+W])W=2;var Q=(W+1)%3,X=(W+2)%3;$=Math.sqrt(Z[W*3+W]-Z[Q*3+Q]-Z[X*3+X]+1),J[W]=0.5*$,$=0.5/$,J[3]=(Z[Q*3+X]-Z[X*3+Q])*$,J[Q]=(Z[Q*3+W]+Z[W*3+Q])*$,J[X]=(Z[X*3+W]+Z[W*3+X])*$}return J}function F06(J,Z,Y,$){var W=0.5*Math.PI/180;Z*=W,Y*=W,$*=W;var Q=Math.sin(Z),X=Math.cos(Z),K=Math.sin(Y),G=Math.cos(Y),z=Math.sin($),F=Math.cos($);return J[0]=Q*G*F-X*K*z,J[1]=X*K*F+Q*G*z,J[2]=X*G*z-Q*K*F,J[3]=X*G*F+Q*K*z,J}function V06(J){return"quat("+J[0]+", "+J[1]+", "+J[2]+", "+J[3]+")"}var H06=d41,q06=c41,U06=l41,w06=p41,L06=i41,B06=Y71,X71=n41,K71=r41,O06=t41,G71=a41,M06=G71,z71=s41,R06=z71,AA=o41,N06=e41,P06=J71,j06=function(){var J=SO(),Z=_O(1,0,0),Y=_O(0,1,0);return function($,W,Q){var X=xO(W,Q);if(X<-0.999999){if(BV(J,Z,W),_A(J)<0.000001)BV(J,Y,W);return SA(J,J),Z71($,J,Math.PI),$}else if(X>0.999999)return $[0]=0,$[1]=0,$[2]=0,$[3]=1,$;else return BV(J,W,Q),$[0]=J[0],$[1]=J[1],$[2]=J[2],$[3]=1+X,AA($,$)}}(),D06=function(){var J=xA(),Z=xA();return function(Y,$,W,Q,X,K){return AO(J,$,X,K),AO(Z,W,Q,K),AO(Y,J,Z,2*K*(1-K)),Y}}(),C06=function(){var J=vA();return function(Z,Y,$,W){return J[0]=$[0],J[3]=$[1],J[6]=$[2],J[1]=W[0],J[4]=W[1],J[7]=W[2],J[2]=-Y[0],J[5]=-Y[1],J[8]=-Y[2],AA(Z,Q71(Z,J))}}();var r0={};R9(r0,{zero:()=>r06,transformMat4:()=>a06,transformMat3:()=>n06,transformMat2d:()=>i06,transformMat2:()=>p06,subtract:()=>V71,sub:()=>Y16,str:()=>t06,squaredLength:()=>B71,squaredDistance:()=>w71,sqrLen:()=>K16,sqrDist:()=>X16,set:()=>I06,scaleAndAdd:()=>y06,scale:()=>f06,round:()=>h06,rotate:()=>s06,random:()=>l06,normalize:()=>m06,negate:()=>b06,multiply:()=>H71,mul:()=>$16,min:()=>x06,max:()=>A06,lerp:()=>c06,length:()=>L71,len:()=>Z16,inverse:()=>g06,fromValues:()=>k06,forEach:()=>G16,floor:()=>_06,exactEquals:()=>e06,equals:()=>J16,dot:()=>u06,divide:()=>q71,div:()=>W16,distance:()=>U71,dist:()=>Q16,cross:()=>d06,create:()=>F71,copy:()=>E06,clone:()=>T06,ceil:()=>S06,angle:()=>o06,add:()=>v06});function F71(){var J=new n0(2);if(n0!=Float32Array)J[0]=0,J[1]=0;return J}function T06(J){var Z=new n0(2);return Z[0]=J[0],Z[1]=J[1],Z}function k06(J,Z){var Y=new n0(2);return Y[0]=J,Y[1]=Z,Y}function E06(J,Z){return J[0]=Z[0],J[1]=Z[1],J}function I06(J,Z,Y){return J[0]=Z,J[1]=Y,J}function v06(J,Z,Y){return J[0]=Z[0]+Y[0],J[1]=Z[1]+Y[1],J}function V71(J,Z,Y){return J[0]=Z[0]-Y[0],J[1]=Z[1]-Y[1],J}function H71(J,Z,Y){return J[0]=Z[0]*Y[0],J[1]=Z[1]*Y[1],J}function q71(J,Z,Y){return J[0]=Z[0]/Y[0],J[1]=Z[1]/Y[1],J}function S06(J,Z){return J[0]=Math.ceil(Z[0]),J[1]=Math.ceil(Z[1]),J}function _06(J,Z){return J[0]=Math.floor(Z[0]),J[1]=Math.floor(Z[1]),J}function x06(J,Z,Y){return J[0]=Math.min(Z[0],Y[0]),J[1]=Math.min(Z[1],Y[1]),J}function A06(J,Z,Y){return J[0]=Math.max(Z[0],Y[0]),J[1]=Math.max(Z[1],Y[1]),J}function h06(J,Z){return J[0]=Math.round(Z[0]),J[1]=Math.round(Z[1]),J}function f06(J,Z,Y){return J[0]=Z[0]*Y,J[1]=Z[1]*Y,J}function y06(J,Z,Y,$){return J[0]=Z[0]+Y[0]*$,J[1]=Z[1]+Y[1]*$,J}function U71(J,Z){var Y=Z[0]-J[0],$=Z[1]-J[1];return Math.hypot(Y,$)}function w71(J,Z){var Y=Z[0]-J[0],$=Z[1]-J[1];return Y*Y+$*$}function L71(J){var Z=J[0],Y=J[1];return Math.hypot(Z,Y)}function B71(J){var Z=J[0],Y=J[1];return Z*Z+Y*Y}function b06(J,Z){return J[0]=-Z[0],J[1]=-Z[1],J}function g06(J,Z){return J[0]=1/Z[0],J[1]=1/Z[1],J}function m06(J,Z){var Y=Z[0],$=Z[1],W=Y*Y+$*$;if(W>0)W=1/Math.sqrt(W);return J[0]=Z[0]*W,J[1]=Z[1]*W,J}function u06(J,Z){return J[0]*Z[0]+J[1]*Z[1]}function d06(J,Z,Y){var $=Z[0]*Y[1]-Z[1]*Y[0];return J[0]=J[1]=0,J[2]=$,J}function c06(J,Z,Y,$){var W=Z[0],Q=Z[1];return J[0]=W+$*(Y[0]-W),J[1]=Q+$*(Y[1]-Q),J}function l06(J,Z){Z=Z||1;var Y=e4()*2*Math.PI;return J[0]=Math.cos(Y)*Z,J[1]=Math.sin(Y)*Z,J}function p06(J,Z,Y){var $=Z[0],W=Z[1];return J[0]=Y[0]*$+Y[2]*W,J[1]=Y[1]*$+Y[3]*W,J}function i06(J,Z,Y){var $=Z[0],W=Z[1];return J[0]=Y[0]*$+Y[2]*W+Y[4],J[1]=Y[1]*$+Y[3]*W+Y[5],J}function n06(J,Z,Y){var $=Z[0],W=Z[1];return J[0]=Y[0]*$+Y[3]*W+Y[6],J[1]=Y[1]*$+Y[4]*W+Y[7],J}function a06(J,Z,Y){var $=Z[0],W=Z[1];return J[0]=Y[0]*$+Y[4]*W+Y[12],J[1]=Y[1]*$+Y[5]*W+Y[13],J}function s06(J,Z,Y,$){var W=Z[0]-Y[0],Q=Z[1]-Y[1],X=Math.sin($),K=Math.cos($);return J[0]=W*K-Q*X+Y[0],J[1]=W*X+Q*K+Y[1],J}function o06(J,Z){var Y=J[0],$=J[1],W=Z[0],Q=Z[1],X=Math.sqrt(Y*Y+$*$)*Math.sqrt(W*W+Q*Q),K=X&&(Y*W+$*Q)/X;return Math.acos(Math.min(Math.max(K,-1),1))}function r06(J){return J[0]=0,J[1]=0,J}function t06(J){return"vec2("+J[0]+", "+J[1]+")"}function e06(J,Z){return J[0]===Z[0]&&J[1]===Z[1]}function J16(J,Z){var Y=J[0],$=J[1],W=Z[0],Q=Z[1];return Math.abs(Y-W)<=L0*Math.max(1,Math.abs(Y),Math.abs(W))&&Math.abs($-Q)<=L0*Math.max(1,Math.abs($),Math.abs(Q))}var Z16=L71,Y16=V71,$16=H71,W16=q71,Q16=U71,X16=w71,K16=B71,G16=function(){var J=F71();return function(Z,Y,$,W,Q,X){var K,G;if(!Y)Y=2;if(!$)$=0;if(W)G=Math.min(W*Y+$,Z.length);else G=Z.length;for(K=$;K<G;K+=Y)J[0]=Z[K],J[1]=Z[K+1],Q(J,J,X),Z[K]=J[0],Z[K+1]=J[1];return Z}}();class KW extends Float32Array{constructor(J,Z,Y,$){super([J,Z,Y,$])}get determinant(){return D8.determinant(this)}get frobeniusNorm(){return D8.frob(this)}static create(){let J=new KW(0,0,0,0);return D8.identity(J),J}static fromRotation(J){let Z=KW.create();return D8.fromRotation(Z,J),Z}static fromScaling(J){let Z=KW.create();return D8.fromScaling(Z,J),Z}add(J){return D8.add(this,this,J),this}adjoint(){return D8.adjoint(this,this),this}clone(){return new KW(this[0],this[1],this[2],this[3])}copy(J){return D8.copy(this,J),this}equals(J){return D8.equals(this,J)}exactEquals(J){return D8.exactEquals(this,J)}identity(){return D8.identity(this),this}invert(){return D8.invert(this,this),this}multiply(J){return D8.mul(this,this,J),this}multiplyScalar(J){return D8.multiplyScalar(this,this,J),this}rotate(J){return D8.rotate(this,this,J),this}subtract(J){return D8.sub(this,this,J),this}toString(){return`[${this[0]},${this[1]}][${this[2]},${this[3]}]`}transpose(){return D8.transpose(this,this),this}}class J7 extends Float32Array{constructor(J,Z,Y,$,W,Q,X,K,G){super([J,Z,Y,$,W,Q,X,K,G])}get determinant(){return A1.determinant(this)}get frobeniusNorm(){return A1.frob(this)}static create(){let J=new J7(0,0,0,0,0,0,0,0,0);return A1.identity(J),J}static fromMatrix4(J){let Z=J7.create();return A1.fromMat4(Z,J),Z}static fromQuaternion(J){let Z=J7.create();return A1.fromQuat(Z,J),Z}static fromRotation(J){let Z=J7.create();return A1.fromRotation(Z,J),Z}static fromScaling(J){let Z=J7.create();return A1.fromScaling(Z,J),Z}static fromTranslation(J){let Z=J7.create();return A1.fromTranslation(Z,J),Z}add(J){return A1.add(this,this,J),this}adjoint(){return A1.adjoint(this,this),this}clone(){return new J7(this[0],this[1],this[2],this[3],this[4],this[5],this[6],this[7],this[8])}copy(J){return A1.copy(this,J),this}equals(J){return A1.equals(this,J)}exactEquals(J){return A1.exactEquals(this,J)}identity(){return A1.identity(this),this}invert(){return A1.invert(this,this),this}multiply(J){return A1.mul(this,this,J),this}multiplyScalar(J){return A1.multiplyScalar(this,this,J),this}transformVector(J){return J.transformMatrix3(this)}projection(J,Z){return A1.projection(this,J,Z),this}rotate(J){return A1.rotate(this,this,J),this}subtract(J){return A1.sub(this,this,J),this}toString(){return`[${this[0]},${this[1]},${this[2]}][${this[3]},${this[4]},${this[5]}][${this[6]},${this[7]},${this[8]}]`}transpose(){return A1.transpose(this,this),this}}class d6 extends Float32Array{constructor(J,Z,Y,$,W,Q,X,K,G,z,F,V,H,q,U,L){super([J,Z,Y,$,W,Q,X,K,G,z,F,V,H,q,U,L])}get determinant(){return d0.determinant(this)}get frobeniusNorm(){return d0.frob(this)}static create(){let J=new d6(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);return d0.identity(J),J}static fromQuaternion(J){let Z=d6.create();return d0.fromQuat(Z,J),Z}static fromRotation(J,Z){let Y=d6.create();return d0.fromRotation(Y,J,Z),Y}static fromRotationTranslation(J,Z){let Y=d6.create();return d0.fromRotationTranslation(Y,J,Z),Y}static fromRotationTranslationScale(J,Z,Y){let $=d6.create();return d0.fromRotationTranslationScale($,J,Z,Y),$}static fromRotationTranslationScaleOrigin(J,Z,Y,$){let W=d6.create();return d0.fromRotationTranslationScaleOrigin(W,J,Z,Y,$),W}static fromScaling(J){let Z=d6.create();return d0.fromScaling(Z,J),Z}static fromTranslation(J){let Z=d6.create();return d0.fromTranslation(Z,J),Z}static fromXRotation(J){let Z=d6.create();return d0.fromXRotation(Z,J),Z}static fromYRotation(J){let Z=d6.create();return d0.fromYRotation(Z,J),Z}static fromZRotation(J){let Z=d6.create();return d0.fromZRotation(Z,J),Z}add(J){return d0.add(this,this,J),this}adjoint(){return d0.adjoint(this,this),this}clone(){return new d6(this[0],this[1],this[2],this[3],this[4],this[5],this[6],this[7],this[8],this[9],this[10],this[11],this[12],this[13],this[14],this[15])}copy(J){return d0.copy(this,J),this}equals(J){return d0.equals(this,J)}exactEquals(J){return d0.exactEquals(this,J)}frustrum(J,Z,Y,$,W,Q){return d0.frustum(this,J,Z,Y,$,W,Q),this}identity(){return d0.identity(this),this}invert(){return d0.invert(this,this),this}lookAt(J,Z,Y){return d0.lookAt(this,J,Z,Y),this}multiply(J){return d0.mul(this,this,J),this}multiplyScalar(J){return d0.multiplyScalar(this,this,J),this}orthographic(J,Z,Y,$,W,Q){return d0.ortho(this,J,Z,Y,$,W,Q),this}perspective(J,Z,Y,$){return d0.perspective(this,J,Z,Y,$),this}rotate(J,Z){return d0.rotate(this,this,J,Z),this}rotateX(J){return d0.rotateX(this,this,J),this}rotateY(J){return d0.rotateY(this,this,J),this}rotateZ(J){return d0.rotateZ(this,this,J),this}scale(J){return d0.scale(this,this,J),this}subtract(J){return d0.sub(this,this,J),this}targetTo(J,Z,Y){return d0.targetTo(this,J,Z,Y),this}toString(){return`[${this[0]},${this[1]},${this[2]},${this[3]}][${this[4]},${this[5]},${this[6]},${this[7]}][${this[8]},${this[9]},${this[10]},${this[11]}][${this[12]},${this[13]},${this[14]},${this[15]}]`}translate(J){return d0.translate(this,this,J),this}transpose(){return d0.transpose(this,this),this}}class zK extends Float32Array{constructor(J,Z,Y,$){super([J,Z,Y,$])}get length(){return V1.length(this)}get squaredLength(){return V1.squaredLength(this)}get magnitude(){return V1.length(this)}get squaredMagnitude(){return V1.squaredLength(this)}get x(){return this[0]}set x(J){this[0]=J}get y(){return this[1]}set y(J){this[1]=J}get z(){return this[2]}set z(J){this[2]=J}get w(){return this[3]}set w(J){this[3]=J}static fromEuler(J,Z,Y){let $=V1.fromEuler(new Float32Array(4),J,Z,Y);return new zK($[0],$[1],$[2],$[3])}static fromQuaternionLike(J){return new zK(J.x,J.y,J.z,J.w)}clone(){return new zK(this.x,this.y,this.z,this.w)}conjugate(){return V1.conjugate(this,this),this}copy(J){return V1.copy(this,J),this}dot(J){return V1.dot(this,J)}exponential(){return V1.exp(this,this),this}equals(J){return V1.equals(this,J)}exactEquals(J){return V1.exactEquals(this,J)}getAngle(J){return V1.getAngle(this,J)}identity(){return V1.identity(this),this}invert(){return V1.invert(this,this),this}lerp(J,Z){return V1.lerp(this,this,J,Z),this}logarithm(){return V1.ln(this,this),this}multiply(J){return V1.multiply(this,this,J),this}transformVector(J){return J.transformQuaternion(this)}normalize(){return V1.normalize(this,this),this}power(J){return V1.pow(this,this,J),this}randomize(){return V1.random(this),this}rotateX(J){return V1.rotateX(this,this,J),this}rotateY(J){return V1.rotateY(this,this,J),this}rotateZ(J){return V1.rotateZ(this,this,J),this}scale(J){return V1.scale(this,this,J),this}setAxisAngle(J,Z){return V1.setAxisAngle(this,J,Z),this}slerp(J,Z){return V1.slerp(this,this,J,Z),this}toString(){return`${this.x},${this.y},${this.z},${this.w}`}}class OV extends Float32Array{constructor(J,Z){super([J,Z])}get length(){return r0.length(this)}get squaredLength(){return r0.squaredLength(this)}get magnitude(){return r0.length(this)}get squaredMagnitude(){return r0.squaredLength(this)}get x(){return this[0]}set x(J){this[0]=J}get y(){return this[1]}set y(J){this[1]=J}static create(){return new OV(0,0)}add(J){return r0.add(this,this,J),this}angle(J){return r0.angle(this,J)}ceil(){return r0.ceil(this,this),this}clone(){return new OV(this.x,this.y)}copy(J){return r0.copy(this,J),this}distance(J){return r0.distance(this,J)}divide(J){return r0.divide(this,this,J),this}dot(J){return r0.dot(this,J)}equals(J){return r0.equals(this,J)}exactEquals(J){return r0.exactEquals(this,J)}floor(){return r0.floor(this,this),this}invert(){return r0.inverse(this,this),this}lerp(J,Z){return r0.lerp(this,this,J,Z),this}max(J){return r0.max(this,this,J),this}min(J){return r0.min(this,this,J),this}multiply(J){return r0.mul(this,this,J),this}negate(){return r0.negate(this,this),this}normalize(){return r0.normalize(this,this),this}randomize(J){return r0.random(this,J),this}rotate(J,Z){return r0.rotate(this,this,J,Z),this}round(){return r0.round(this,this),this}scale(J){return r0.scale(this,this,J),this}scaleAndAdd(J,Z){return r0.scaleAndAdd(this,this,J,Z),this}subtract(J){return r0.sub(this,this,J),this}toString(){return`${this.x},${this.y}`}transformMatrix2(J){return r0.transformMat2(this,this,J),this}transformMatrix3(J){return r0.transformMat3(this,this,J),this}transformMatrix4(J){return r0.transformMat4(this,this,J),this}zero(){return r0.zero(this),this}}class FK extends Float32Array{constructor(J,Z,Y){super([J,Z,Y])}get length(){return l0.length(this)}get squaredLength(){return l0.squaredLength(this)}get magnitude(){return l0.length(this)}get squaredMagnitude(){return l0.squaredLength(this)}get x(){return this[0]}set x(J){this[0]=J}get y(){return this[1]}set y(J){this[1]=J}get z(){return this[2]}set z(J){this[2]=J}static create(){return new FK(0,0,0)}static fromVector3Like(J){return new FK(J.x,J.y,J.z)}add(J){return l0.add(this,this,J),this}ceil(){return l0.ceil(this,this),this}clone(){return new FK(this.x,this.y,this.z)}copy(J){return l0.copy(this,J),this}cross(J){return l0.cross(this,this,J),this}distance(J){return l0.distance(this,J)}divide(J){return l0.div(this,this,J),this}dot(J){return l0.dot(this,J)}equals(J){return l0.equals(this,J)}exactEquals(J){return l0.exactEquals(this,J)}floor(){return l0.floor(this,this),this}invert(){return l0.inverse(this,this),this}lerp(J,Z){return l0.lerp(this,this,J,Z),this}max(J){return l0.max(this,this,J),this}min(J){return l0.min(this,this,J),this}multiply(J){return l0.mul(this,this,J),this}negate(){return l0.negate(this,this),this}normalize(){return l0.normalize(this,this),this}randomize(J){return l0.random(this,J),this}rotateX(J,Z){return l0.rotateX(this,this,J,Z),this}rotateY(J,Z){return l0.rotateY(this,this,J,Z),this}rotateZ(J,Z){return l0.rotateZ(this,this,J,Z),this}round(){return l0.round(this,this),this}scale(J){return l0.scale(this,this,J),this}scaleAndAdd(J,Z){return l0.scaleAndAdd(this,this,J,Z),this}subtract(J){return l0.sub(this,this,J),this}toString(){return`${this.x},${this.y},${this.z}`}transformMatrix3(J){return l0.transformMat3(this,this,J),this}transformMatrix4(J){return l0.transformMat4(this,this,J),this}transformQuaternion(J){return l0.transformQuat(this,this,J),this}zero(){return l0.zero(this),this}}var H1=function(J,Z,Y,$){function W(Q){return Q instanceof Y?Q:new Y(function(X){X(Q)})}return new(Y||(Y=Promise))(function(Q,X){function K(F){try{z($.next(F))}catch(V){X(V)}}function G(F){try{z($.throw(F))}catch(V){X(V)}}function z(F){F.done?Q(F.value):W(F.value).then(K,G)}z(($=$.apply(J,Z||[])).next())})},z1=function(J,Z){var Y={label:0,sent:function(){if(Q[0]&1)throw Q[1];return Q[1]},trys:[],ops:[]},$,W,Q,X=Object.create((typeof Iterator==="function"?Iterator:Object).prototype);return X.next=K(0),X.throw=K(1),X.return=K(2),typeof Symbol==="function"&&(X[Symbol.iterator]=function(){return this}),X;function K(z){return function(F){return G([z,F])}}function G(z){if($)throw new TypeError("Generator is already executing.");while(X&&(X=0,z[0]&&(Y=0)),Y)try{if($=1,W&&(Q=z[0]&2?W.return:z[0]?W.throw||((Q=W.return)&&Q.call(W),0):W.next)&&!(Q=Q.call(W,z[1])).done)return Q;if(W=0,Q)z=[z[0]&2,Q.value];switch(z[0]){case 0:case 1:Q=z;break;case 4:return Y.label++,{value:z[1],done:!1};case 5:Y.label++,W=z[1],z=[0];continue;case 7:z=Y.ops.pop(),Y.trys.pop();continue;default:if((Q=Y.trys,!(Q=Q.length>0&&Q[Q.length-1]))&&(z[0]===6||z[0]===2)){Y=0;continue}if(z[0]===3&&(!Q||z[1]>Q[0]&&z[1]<Q[3])){Y.label=z[1];break}if(z[0]===6&&Y.label<Q[1]){Y.label=Q[1],Q=z;break}if(Q&&Y.label<Q[2]){Y.label=Q[2],Y.ops.push(z);break}if(Q[2])Y.ops.pop();Y.trys.pop();continue}z=Z.call(J,Y)}catch(F){z=[6,F],W=0}finally{$=Q=0}if(z[0]&5)throw z[1];return{value:z[0]?z[1]:void 0,done:!0}}},q5=function(J,Z){var Y=typeof Symbol==="function"&&J[Symbol.iterator];if(!Y)return J;var $=Y.call(J),W,Q=[],X;try{while((Z===void 0||Z-- >0)&&!(W=$.next()).done)Q.push(W.value)}catch(K){X={error:K}}finally{try{if(W&&!W.done&&(Y=$.return))Y.call($)}finally{if(X)throw X.error}}return Q},B9=function(J,Z,Y){if(Y||arguments.length===2){for(var $=0,W=Z.length,Q;$<W;$++)if(Q||!($ in Z)){if(!Q)Q=Array.prototype.slice.call(Z,0,$);Q[$]=Z[$]}}return J.concat(Q||Array.prototype.slice.call(Z))},O71=function(J){var Z=typeof Symbol==="function"&&Symbol.iterator,Y=Z&&J[Z],$=0;if(Y)return Y.call(J);if(J&&typeof J.length==="number")return{next:function(){if(J&&$>=J.length)J=void 0;return{value:J&&J[$++],done:!J}}};throw new TypeError(Z?"Object is not iterable.":"Symbol.iterator is not defined.")},pl6=function(){function J(Z){if(Z===void 0)Z=J.minComparator;var Y=this;this.compare=Z,this.heapArray=[],this._limit=0,this.offer=this.add,this.element=this.peek,this.poll=this.pop,this._invertedCompare=function($,W){return Y.compare($,W).then(function(Q){return-1*Q})}}return J.getChildrenIndexOf=function(Z){return[Z*2+1,Z*2+2]},J.getParentIndexOf=function(Z){if(Z<=0)return-1;var Y=Z%2?1:2;return Math.floor((Z-Y)/2)},J.getSiblingIndexOf=function(Z){if(Z<=0)return-1;var Y=Z%2?1:-1;return Z+Y},J.minComparator=function(Z,Y){return H1(this,void 0,void 0,function(){return z1(this,function($){if(Z>Y)return[2,1];else if(Z<Y)return[2,-1];else return[2,0]})})},J.maxComparator=function(Z,Y){return H1(this,void 0,void 0,function(){return z1(this,function($){if(Y>Z)return[2,1];else if(Y<Z)return[2,-1];else return[2,0]})})},J.minComparatorNumber=function(Z,Y){return H1(this,void 0,void 0,function(){return z1(this,function($){return[2,Z-Y]})})},J.maxComparatorNumber=function(Z,Y){return H1(this,void 0,void 0,function(){return z1(this,function($){return[2,Y-Z]})})},J.defaultIsEqual=function(Z,Y){return H1(this,void 0,void 0,function(){return z1(this,function($){return[2,Z===Y]})})},J.print=function(Z){function Y(F){var V=J.getParentIndexOf(F);return Math.floor(Math.log2(V+1))}function $(F,V){var H="";for(;V>0;--V)H+=F;return H}var W=0,Q=[],X=Y(Z.length-1)+2,K=0;while(W<Z.length){var G=Y(W)+1;if(W===0)G=0;var z=String(Z.get(W));if(z.length>K)K=z.length;Q[G]=Q[G]||[],Q[G].push(z),W+=1}return Q.map(function(F,V){var H=Math.pow(2,X-V)-1;return $(" ",Math.floor(H/2)*K)+F.map(function(q){var U=(K-q.length)/2;return $(" ",Math.ceil(U))+q+$(" ",Math.floor(U))}).join($(" ",H*K))}).join(`
|
436
|
+
`);let{connect:G,buffered:z}=await K;if(J.emit("proxyConnect",G),this.emit("proxyConnect",G,J),G.statusCode===200){if(J.once("socket",vo8),Z.secureEndpoint){JV("Upgrading socket connection to TLS");let V=Z.servername||Z.host;return zA.connect({...e91(Z,"host","path","port"),socket:$,servername:e7.isIP(V)?void 0:V})}return $}$.destroy();let F=new e7.Socket({writable:!1});return F.readable=!0,J.once("socket",(V)=>{JV("Replaying proxy buffer for failed request"),V.push(z),V.push(null)}),F}}CO.__initStatic();function vo8(J){J.resume()}function e91(J,...Z){let Y={},$;for($ in J)if(!Z.includes($))Y[$]=J[$];return Y}var ho8=32768;function fo8(J){return new xo8({read(){this.push(J),this.push(null)}})}function FA(J){let Z;try{Z=new URL(J.url)}catch(G){return q8(()=>{console.warn("[@sentry/node]: Invalid dsn or tunnel option, will not send any events. The tunnel option must be a full URL when used.")}),rJ(J,()=>Promise.resolve({}))}let Y=Z.protocol==="https:",$=yo8(Z,J.proxy||(Y?process.env.https_proxy:void 0)||process.env.http_proxy),W=Y?_o8:So8,Q=J.keepAlive===void 0?!1:J.keepAlive,X=$?new CO($):new W.Agent({keepAlive:Q,maxSockets:30,timeout:2000}),K=bo8(J,J.httpModule??W,X);return rJ(J,K)}function yo8(J,Z){let{no_proxy:Y}=process.env;if(Y?.split(",").some((W)=>J.host.endsWith(W)||J.hostname.endsWith(W)))return;else return Z}function bo8(J,Z,Y){let{hostname:$,pathname:W,port:Q,protocol:X,search:K}=new URL(J.url);return function G(z){return new Promise((F,V)=>{X$(()=>{let H=fo8(z.body),q={...J.headers};if(z.body.length>ho8)q["content-encoding"]="gzip",H=H.pipe(Ao8());let U=Z.request({method:"POST",agent:Y,headers:q,hostname:$,path:`${W}${K}`,port:Q,protocol:X,ca:J.caCerts},(L)=>{L.on("data",()=>{}),L.on("end",()=>{}),L.setEncoding("utf8");let w=L.headers["retry-after"]??null,O=L.headers["x-sentry-rate-limits"]??null;F({statusCode:L.statusCode,headers:{"retry-after":w,"x-sentry-rate-limits":Array.isArray(O)?O[0]||null:O}})});U.on("error",V),H.pipe(U)})})}}var go8=new Set(["false","f","n","no","off","0"]),mo8=new Set(["true","t","y","yes","on","1"]);function TO(J,Z){let Y=String(J).toLowerCase();if(go8.has(Y))return!1;if(mo8.has(Y))return!0;return Z?.strict?null:Boolean(J)}import{posix as uo8,sep as do8}from"path";function J41(J){return J.replace(/^[A-Z]:/,"").replace(/\\/g,"/")}function VA(J=process.argv[1]?kE(process.argv[1]):process.cwd(),Z=do8==="\\"){let Y=Z?J41(J):J;return($)=>{if(!$)return;let W=Z?J41($):$,{dir:Q,base:X,ext:K}=uo8.parse(W);if(K===".js"||K===".mjs"||K===".cjs")X=X.slice(0,K.length*-1);let G=decodeURIComponent(X);if(!Q)Q=".";let z=Q.lastIndexOf("/node_modules");if(z>-1)return`${Q.slice(z+14).replace(/\//g,".")}:${G}`;if(Q.startsWith(Y)){let F=Q.slice(Y.length+1).replace(/\//g,".");return F?`${F}:${G}`:G}return G}}function HA(J){if(process.env.SENTRY_RELEASE)return process.env.SENTRY_RELEASE;if(P0.SENTRY_RELEASE?.id)return P0.SENTRY_RELEASE.id;let Z=process.env.GITHUB_SHA||process.env.CI_MERGE_REQUEST_SOURCE_BRANCH_SHA||process.env.CI_BUILD_REF||process.env.CI_COMMIT_SHA||process.env.BITBUCKET_COMMIT,Y=process.env.APPVEYOR_PULL_REQUEST_HEAD_COMMIT||process.env.APPVEYOR_REPO_COMMIT||process.env.CODEBUILD_RESOLVED_SOURCE_VERSION||process.env.AWS_COMMIT_ID||process.env.BUILD_SOURCEVERSION||process.env.GIT_CLONE_COMMIT_HASH||process.env.BUDDY_EXECUTION_REVISION||process.env.BUILDKITE_COMMIT||process.env.CIRCLE_SHA1||process.env.CIRRUS_CHANGE_IN_REPO||process.env.CF_REVISION||process.env.CM_COMMIT||process.env.CF_PAGES_COMMIT_SHA||process.env.DRONE_COMMIT_SHA||process.env.FC_GIT_COMMIT_SHA||process.env.HEROKU_TEST_RUN_COMMIT_VERSION||process.env.HEROKU_SLUG_COMMIT||process.env.RAILWAY_GIT_COMMIT_SHA||process.env.RENDER_GIT_COMMIT||process.env.SEMAPHORE_GIT_SHA||process.env.TRAVIS_PULL_REQUEST_SHA||process.env.VERCEL_GIT_COMMIT_SHA||process.env.VERCEL_GITHUB_COMMIT_SHA||process.env.VERCEL_GITLAB_COMMIT_SHA||process.env.VERCEL_BITBUCKET_COMMIT_SHA||process.env.ZEIT_GITHUB_COMMIT_SHA||process.env.ZEIT_GITLAB_COMMIT_SHA||process.env.ZEIT_BITBUCKET_COMMIT_SHA,$=process.env.CI_COMMIT_ID||process.env.SOURCE_COMMIT||process.env.SOURCE_VERSION||process.env.GIT_COMMIT||process.env.COMMIT_REF||process.env.BUILD_VCS_NUMBER||process.env.CI_COMMIT_SHA;return Z||Y||$||J}var qA=f2(vE(VA()));var Y41=i(n(),1);import*as Z41 from"os";import{threadId as co8,isMainThread as lo8}from"worker_threads";var po8=60000;class kO extends s2{constructor(J){let Z=J.serverName||global.process.env.SENTRY_NAME||Z41.hostname(),Y={...J,platform:"node",runtime:{name:"node",version:global.process.version},serverName:Z};if(J.openTelemetryInstrumentations)jX({instrumentations:J.openTelemetryInstrumentations});Nz(Y,"node"),g.log(`Initializing Sentry: process: ${process.pid}, thread: ${lo8?"main":`worker-${co8}`}.`);super(Y);if(this.getOptions()._experiments?.enableLogs){if(this._logOnExitFlushListener=()=>{G$(this)},Z)this.on("beforeCaptureLog",($)=>{$.attributes={...$.attributes,"server.address":Z}});process.on("beforeExit",this._logOnExitFlushListener)}}get tracer(){if(this._tracer)return this._tracer;let J="@sentry/node",Z=H8,Y=Y41.trace.getTracer(J,Z);return this._tracer=Y,Y}async flush(J){let Y=this.traceProvider?.activeSpanProcessor;if(Y)await Y.forceFlush();if(this.getOptions().sendClientReports)this._flushOutcomes();return super.flush(J)}close(J){if(this._clientReportInterval)clearInterval(this._clientReportInterval);if(this._clientReportOnExitFlushListener)process.off("beforeExit",this._clientReportOnExitFlushListener);if(this._logOnExitFlushListener)process.off("beforeExit",this._logOnExitFlushListener);return super.close(J)}startClientReportTracking(){let J=this.getOptions();if(J.sendClientReports)this._clientReportOnExitFlushListener=()=>{this._flushOutcomes()},this._clientReportInterval=setInterval(()=>{_0&&g.log("Flushing client reports based on interval."),this._flushOutcomes()},J.clientReportFlushInterval??po8).unref(),process.on("beforeExit",this._clientReportOnExitFlushListener)}_getTraceInfoFromScope(J){if(!J)return[void 0,void 0];return Vo0(this,J)}}var Z4=i(n(),1);var QK=i(D1(),1);var $41=i(YB(),1);import io8 from"module";var UA=1e6;function wA(J,Z={}){if(J.getOptions().debug)so8();let Y=no8(J,Z);J.traceProvider=Y}function W41(){let[J=0,Z=0]=process.versions.node.split(".").map(Number);if(J>=21||J===20&&Z>=6||J===18&&Z>=19){if(!P0._sentryEsmLoaderHookRegistered)try{let{addHookMessagePort:Y}=$41.createAddHookMessageChannel();io8.register("import-in-the-middle/hook.mjs",import.meta.url,{data:{addHookMessagePort:Y,include:[]},transferList:[Y]})}catch(Y){g.warn("Failed to register ESM hook",Y)}}else q8(()=>{console.warn(`[Sentry] You are using Node.js v${process.versions.node} in ESM mode ("import syntax"). The Sentry Node.js SDK is not compatible with ESM in Node.js versions before 18.19.0 or before 20.6.0. Please either build your application with CommonJS ("require() syntax"), or upgrade your Node.js version.`)})}function no8(J,Z={}){let Y=new nS({sampler:new q_(J),resource:new xX({[QK.ATTR_SERVICE_NAME]:"node",[QK.SEMRESATTRS_SERVICE_NAMESPACE]:"sentry",[QK.ATTR_SERVICE_VERSION]:H8}),forceFlushTimeoutMillis:500,spanProcessors:[new H_({timeout:ao8(J.getOptions().maxSpanWaitDuration)}),...Z.spanProcessors||[]]});return Z4.trace.setGlobalTracerProvider(Y),Z4.propagation.setGlobalPropagator(new K_),Z4.context.setGlobalContextManager(new o91),Y}function ao8(J){if(J==null)return;if(J>UA)return _0&&g.warn(`\`maxSpanWaitDuration\` is too high, using the maximum value of ${UA}`),UA;else if(J<=0||Number.isNaN(J)){_0&&g.warn("`maxSpanWaitDuration` must be a positive number, using default value instead.");return}return J}function so8(){let J=new Proxy(g,{get(Z,Y,$){return Reflect.get(Z,Y==="verbose"?"debug":Y,$)}});Z4.diag.disable(),Z4.diag.setLogger(J,Z4.DiagLogLevel.DEBUG)}function oo8(){return cX()?[lX()]:[]}function Q41(){return[V$(),F$(),H$(),q$(),U$(),bX(),mX(),pX(),iX(),dX(),P_(),uX(),f91(),r91(),...oo8()]}function X41(J){return[...Q41(),..._6(J)?WK():[]]}function LA(J={}){return ro8(J,X41)}function ro8(J={},Z){let Y=to8(J,Z);if(Y.debug===!0)if(_0)g.enable();else q8(()=>{console.warn("[Sentry] Cannot initialize SDK with `debug` option using a non-debug bundle.")});if(!cX()&&Y.registerEsmLoaderHooks!==!1)W41();if(qo0(),K1().update(Y.initialScope),Y.spotlight&&!Y.integrations.some(({name:Q})=>Q===sx))Y.integrations.push(ox({sidecarUrl:typeof Y.spotlight==="string"?Y.spotlight:void 0}));let W=new kO(Y);if(K1().setClient(W),W.init(),g.log(`Running in ${cX()?"CommonJS":"ESM"} mode.`),W.startClientReportTracking(),Zr8(),!Y.skipOpenTelemetrySetup)wA(W,{spanProcessors:Y.openTelemetrySpanProcessors}),K41();return Yo0(W),Ho0(W),W}function K41(){if(!_0)return;let J=Xo0(),Z=["SentryContextManager","SentryPropagator"];if(_6())Z.push("SentrySpanProcessor");for(let Y of Z)if(!J.includes(Y))g.error(`You have to set up the ${Y}. Without this, the OpenTelemetry & Sentry integration will not work properly.`);if(!J.includes("SentrySampler"))g.warn("You have to set up the SentrySampler. Without this, the OpenTelemetry & Sentry integration may still work, but sample rates set for the Sentry SDK will not be respected. If you use a custom sampler, make sure to use `wrapSamplingDecision`.")}function to8(J,Z){let Y=eo8(J.release),$=J.spotlight??TO(process.env.SENTRY_SPOTLIGHT,{strict:!0})??process.env.SENTRY_SPOTLIGHT,W=Jr8(J.tracesSampleRate),Q={...J,dsn:J.dsn??process.env.SENTRY_DSN,environment:J.environment??process.env.SENTRY_ENVIRONMENT,sendClientReports:J.sendClientReports??!0,transport:J.transport??FA,stackParser:ZE(J.stackParser||qA),release:Y,tracesSampleRate:W,spotlight:$,debug:TO(J.debug??process.env.SENTRY_DEBUG)},X=J.integrations,K=J.defaultIntegrations??Z(Q);return{...Q,integrations:BE({defaultIntegrations:K,integrations:X})}}function eo8(J){if(J!==void 0)return J;let Z=HA();if(Z!==void 0)return Z;return}function Jr8(J){if(J!==void 0)return J;let Z=process.env.SENTRY_TRACES_SAMPLE_RATE;if(!Z)return;let Y=parseFloat(Z);return isFinite(Y)?Y:void 0}function Zr8(){if(TO(process.env.SENTRY_USE_ENVIRONMENT)!==!1){let J=process.env.SENTRY_TRACE,Z=process.env.SENTRY_BAGGAGE,Y=J$(J,Z);K1().setPropagationContext(Y)}}import*as H41 from"os";var qr8="BunServer",Ur8=()=>{return{name:qr8,setupOnce(){wr8()}}},F41=a(Ur8),G41=!1;function wr8(){if(G41)return;Bun.serve=new Proxy(Bun.serve,{apply(J,Z,Y){z41(Y[0]);let $=J.apply(Z,Y),W=$.reload.bind($);return $.reload=(Q)=>{return z41(Q),W(Q)},$}}),G41=!0}function z41(J){Lr8(J),Br8(J)}function Lr8(J){if(typeof J.fetch!=="function")return;J.fetch=new Proxy(J.fetch,{apply(Z,Y,$){return BA(Z,Y,$)}})}function Br8(J){if(!J.routes)return;if(typeof J.routes!=="object")return;Object.keys(J.routes).forEach((Z)=>{let Y=J.routes[Z];if(typeof Y==="function")J.routes[Z]=new Proxy(Y,{apply:($,W,Q)=>{return BA($,W,Q,Z)}});if(Y instanceof Response)return;if(typeof Y==="object")Object.entries(Y).forEach(([$,W])=>{if(typeof W==="function")J.routes[Z][$]=new Proxy(W,{apply:(Q,X,K)=>{return BA(Q,X,K,Z)}})})})}function BA(J,Z,Y,$){return nJ((W)=>{let Q=Y[0],X=Q.method.toUpperCase();if(X==="OPTIONS"||X==="HEAD")return J.apply(Z,Y);let K=IE(Q.url),G=Or8(K,Q),z=K?.pathname||"/";if(Q.params){if(Object.keys(Q.params).forEach((F)=>{G[`url.path.parameter.${F}`]=Q.params[F]}),$)G[y1]="route",G["url.template"]=$,z=$}if($?.endsWith("/*"))G[y1]="route",G["url.template"]=$,z=$;return W.setSDKProcessingMetadata({normalizedRequest:{url:Q.url,method:Q.method,headers:Q.headers.toJSON(),query_string:K?.search}}),Bz({sentryTrace:Q.headers.get("sentry-trace")??"",baggage:Q.headers.get("baggage")},()=>Q$({attributes:G,op:"http.server",name:`${Q.method} ${z}`},async(F)=>{try{let V=await J.apply(Z,Y);if(V?.status)Yz(F,V.status),W.setContext("response",{headers:V.headers.toJSON(),status_code:V.status});return V}catch(V){throw F6(V,{mechanism:{type:"bun",handled:!1,data:{function:"serve"}}}),V}}))})}function Or8(J,Z){let Y={[i0]:"auto.http.bun.serve",[ok]:Z.method||"GET",[y1]:"url"};if(J){if(J.search)Y["url.query"]=J.search;if(J.hash)Y["url.fragment"]=J.hash;if(J.pathname)Y["url.path"]=J.pathname;if(!EE(J)){if(Y["url.full"]=J.href,J.port)Y["url.port"]=J.port;if(J.protocol)Y["url.scheme"]=J.protocol;if(J.hostname)Y["url.domain"]=J.hostname}}return Y}function V41(J){function Z(Y){let $={body:Y.body,method:"POST",headers:J.headers};try{return X$(()=>{return fetch(J.url,$).then((W)=>{return{statusCode:W.status,headers:{"x-sentry-rate-limits":W.headers.get("X-Sentry-Rate-Limits"),"retry-after":W.headers.get("Retry-After")}}})})}catch(W){return K$(W)}}return rJ(J,Z)}function q41(J){return[V$(),F$(),H$(),q$(),U$(),bX(),mX(),pX(),iX(),dX(),uX(),lX(),F41(),..._6(J)?WK():[]]}function OA(J={}){Nz(J,"bun");let Z={...J,platform:"javascript",runtime:{name:"bun",version:Bun.version},serverName:J.serverName||global.process.env.SENTRY_NAME||H41.hostname()};if(Z.transport=Z.transport||V41,Z.defaultIntegrations===void 0)Z.defaultIntegrations=q41(Z);return LA(Z)}import{heapStats as Rr8}from"bun:jsc";if(process.env.NODE_ENV==="production"&&process.env.SENTRY_DSN)OA({dsn:process.env.SENTRY_DSN,release:_k,tracesSampleRate:1,initialScope:{tags:{gameId:process.env.HYTOPIA_GAME_ID??"unknown",gameSlug:process.env.HYTOPIA_GAME_SLUG??"unknown",lobbyId:process.env.HYTOPIA_LOBBY_ID??"unknown",region:process.env.REGION??"unknown"}},beforeSend:(J)=>{return J.extra=a1.getProcessStats(),J},beforeSendTransaction:(J)=>{if(J.contexts?.trace?.op==="ticker_tick"){let Y=J?.start_timestamp,$=J?.timestamp;if(!Y||!$)return null;if(($-Y)*1000>100)return J.measurements=a1.getProcessStats(!0),J}return null}}),console.log("Telemetry: Sentry.io initialized!");class a1{static getProcessStats(J=!1){let Z=Rr8(),Y=process.memoryUsage(),$={jsHeapSizeMb:{value:Z.heapSize/1024/1024,unit:"megabyte"},jsHeapCapacityMb:{value:Z.heapCapacity/1024/1024,unit:"megabyte"},jsHeapUsagePercent:{value:Z.heapSize/Z.heapCapacity,unit:"percent"},processHeapSizeMb:{value:Y.heapUsed/1024/1024,unit:"megabyte"}};if(J)return $;return Object.fromEntries(Object.entries($).map(([W,Q])=>[W,Q.value]))}static startSpan(J,Z){if(Mz())return Q$({attributes:J.attributes,name:J.operation,op:J.operation},Z);else return Z()}}var Pr8=5000;class aY extends S0{static _serializedPackets=new WeakMap;_closeTimeout=null;_wrtcDirectTransport=null;_wrtcClientServerTransport=null;_wrtcClientServerDataProducers=[];_wrtcClientServerDataConsumers=[];_wrtcServerClientTransport=null;_wrtcServerClientReliableDataProducer=null;_wrtcServerClientUnreliableDataProducer=null;_wrtcServerClientDataConsumers=[];_ws;id;constructor(J,Z){super();this.id=xr(),this.onPacket(s.PacketId.CONNECTION,this._onConnectionPacket),this.onPacket(s.PacketId.HEARTBEAT,this._onHeartbeatPacket),this.bindWs(J),n8.emit("CONNECTION.OPENED",{connection:this,req:Z})}static serializePackets(J){for(let Y of J)if(!s.isValidPacket(Y))return f.error(`Connection.serializePackets(): Invalid packet payload: ${JSON.stringify(Y)}`);let Z=aY._serializedPackets.get(J);if(Z)return Z;return a1.startSpan({operation:"serialize_packets",attributes:{"packets.length":J.length}},()=>{let Y=LC(J),$=Buffer.from(Y.buffer,Y.byteOffset,Y.byteLength);return aY._serializedPackets.set(J,$),$})}bindWs(J){let Z=this._closeTimeout!==null;if(Z)clearTimeout(this._closeTimeout),this._closeTimeout=null;if(this._ws=J,this._ws.binaryType="nodebuffer",this._ws.onmessage=(Y)=>this._onMessage(Y.data),this._ws.onclose=this._onWsClose,this._ws.onerror=this._onWsError,this.send([s.createPacket(s.bidirectionalPackets.connectionPacketDefinition,{i:this.id})],!0,!0),Z)this.emitWithGlobal("CONNECTION.RECONNECTED",{connection:this});if(gJ.instance.isWrtcEnabled)this._upgradeToWRTC()}closeWrtc(){this._closeWrtcClientServerTransport(),this._closeWrtcServerClientTransport()}disconnect(){try{this._ws.close()}catch(J){f.error(`Connection.disconnect(): Connection disconnect failed. Error: ${J}`)}}onPacket(J,Z){this.on("CONNECTION.PACKET_RECEIVED",({packet:Y})=>{if(Y[0]===J)Z(Y)})}send(J,Z=!0,Y=!1){if(this._closeTimeout)return;if(this._ws.readyState!==Nr8.OPEN)return f.warning("Connection.send(): Connection is not open.");a1.startSpan({operation:"send_packets",attributes:{forceWs:Y?"true":"false",wrtcConnected:this._wrtcServerClientTransport?.iceState==="completed"?"true":"false"}},()=>{try{let $=aY.serializePackets(J);if(!$)return;if(this._wrtcServerClientTransport?.iceState==="completed"&&$.length<(this._wrtcServerClientTransport?.sctpParameters?.maxMessageSize??0)&&!Y)try{(Z?this._wrtcServerClientReliableDataProducer:this._wrtcServerClientUnreliableDataProducer).send($)}catch{this._ws.send($)}else this._ws.send($);this.emitWithGlobal("CONNECTION.PACKETS_SENT",{connection:this,packets:J})}catch($){f.error(`Connection.send(): Packet send failed. Error: ${$}`)}})}_closeWrtcClientServerTransport(){this._wrtcDirectTransport?.close(),this._wrtcDirectTransport=null,this._wrtcClientServerTransport?.close(),this._wrtcClientServerTransport=null,this._wrtcClientServerDataProducers.forEach((J)=>J.close()),this._wrtcClientServerDataProducers=[],this._wrtcClientServerDataConsumers.forEach((J)=>J.close()),this._wrtcClientServerDataConsumers=[]}_closeWrtcServerClientTransport(){this._wrtcServerClientTransport?.close(),this._wrtcServerClientTransport=null,this._wrtcServerClientDataConsumers.forEach((J)=>J.close()),this._wrtcServerClientDataConsumers=[],this._wrtcServerClientReliableDataProducer?.close(),this._wrtcServerClientReliableDataProducer=null,this._wrtcServerClientUnreliableDataProducer?.close(),this._wrtcServerClientUnreliableDataProducer=null}_onConnectionPacket=async(J)=>{let Z=J[1],Y=Z.c,$=Z.d;if(Y){let{i:W,d:Q}=Y,X=!1;if(W==this._wrtcClientServerTransport?.id)await this._wrtcClientServerTransport.connect({dtlsParameters:Q}),X=!0;if(W==this._wrtcServerClientTransport?.id)await this._wrtcServerClientTransport.connect({dtlsParameters:Q}),X=!0;if(X)this.send([s.createPacket(s.bidirectionalPackets.connectionPacketDefinition,{ca:{i:W}})])}if($)for(let W of $){let{s:Q,l:X}=W,K=await this._wrtcClientServerTransport.produceData({label:X,sctpStreamParameters:Q}),G=await this._wrtcDirectTransport.consumeData({dataProducerId:K.id});this._wrtcClientServerDataProducers.push(K),this._wrtcClientServerDataConsumers.push(G),G.on("message",(z)=>this._onMessage(z)),this.send([s.createPacket(s.bidirectionalPackets.connectionPacketDefinition,{pa:{i:K.id,l:X}})])}};_onHeartbeatPacket=()=>{this.send([s.createPacket(s.bidirectionalPackets.heartbeatPacketDefinition,null)],!0,!0)};_onMessage=(J)=>{try{let Z=this._deserialize(J);if(!Z)return;this.emitWithGlobal("CONNECTION.PACKET_RECEIVED",{connection:this,packet:Z})}catch(Z){f.error(`Connection._ws.onmessage(): Error: ${Z}`)}};_onWrtcIceStateChange=(J,Z)=>{if(["disconnected","closed"].includes(Z)){if(J==this._wrtcClientServerTransport)this._closeWrtcClientServerTransport();else if(J==this._wrtcServerClientTransport)this._closeWrtcServerClientTransport()}};_onWsClose=()=>{this.closeWrtc(),this.emitWithGlobal("CONNECTION.DISCONNECTED",{connection:this}),this._closeTimeout=setTimeout(()=>{this.emitWithGlobal("CONNECTION.CLOSED",{connection:this}),this.offAll()},Pr8)};_onWsError=(J)=>{this.emitWithGlobal("CONNECTION.ERROR",{connection:this,error:J})};_upgradeToWRTC=async()=>{let J=await gJ.instance.createWrtcTransports();if(!J)return!1;let{directTransport:Z,clientServerTransport:Y,serverClientTransport:$}=J;this._wrtcDirectTransport=Z,this._wrtcClientServerTransport=Y,this._wrtcClientServerTransport.on("icestatechange",(X)=>{this._onWrtcIceStateChange(this._wrtcClientServerTransport,X)}),this._wrtcServerClientTransport=$,this._wrtcServerClientTransport.on("icestatechange",(X)=>{this._onWrtcIceStateChange(this._wrtcServerClientTransport,X)}),this._wrtcServerClientReliableDataProducer=await this._wrtcServerClientTransport.produceData({label:"scr",sctpStreamParameters:{streamId:0,ordered:!0}}),this._wrtcServerClientUnreliableDataProducer=await this._wrtcServerClientTransport.produceData({label:"scu",sctpStreamParameters:{streamId:1,ordered:!1,maxRetransmits:0}});let W=await this._wrtcServerClientTransport.consumeData({dataProducerId:this._wrtcServerClientReliableDataProducer.id}),Q=await this._wrtcServerClientTransport.consumeData({dataProducerId:this._wrtcServerClientUnreliableDataProducer.id});return this._wrtcServerClientDataConsumers.push(W,Q),this.send([s.createPacket(s.bidirectionalPackets.connectionPacketDefinition,{d:[{i:W.id,pi:W.dataProducerId,l:"scr",s:W.sctpStreamParameters},{i:Q.id,pi:Q.dataProducerId,l:"scu",s:Q.sctpStreamParameters}],t:[{i:this._wrtcClientServerTransport.id,f:"cs",d:this._wrtcClientServerTransport.dtlsParameters,ic:this._wrtcClientServerTransport.iceCandidates,ip:this._wrtcClientServerTransport.iceParameters,s:this._wrtcClientServerTransport.sctpParameters},{i:this._wrtcServerClientTransport.id,f:"sc",d:this._wrtcServerClientTransport.dtlsParameters,ic:this._wrtcServerClientTransport.iceCandidates,ip:this._wrtcServerClientTransport.iceParameters,s:this._wrtcServerClientTransport.sctpParameters}]})]),!0};_deserialize(J){let Z=RC(J);if(!Z||typeof Z!=="object"||typeof Z[0]!=="number")return f.error(`Connection._deserialize(): Invalid packet format. Packet: ${JSON.stringify(Z)}`);if(!s.isValidPacket(Z))return f.error(`Connection._deserialize(): Invalid packet payload. Packet: ${JSON.stringify(Z)}`);return Z}}var U41;(($)=>{$.PLAYER_CONNECTED="PLAYER_MANAGER.PLAYER_CONNECTED";$.PLAYER_DISCONNECTED="PLAYER_MANAGER.PLAYER_DISCONNECTED";$.PLAYER_RECONNECTED="PLAYER_MANAGER.PLAYER_RECONNECTED"})(U41||={});class j5{static instance=new j5;_connectionPlayers=new Map;constructor(){n8.on("CONNECTION.OPENED",({connection:J,req:Z})=>{this._onConnectionOpened(J,Z.session)}),n8.on("CONNECTION.DISCONNECTED",({connection:J})=>{this._onConnectionDisconnected(J)}),n8.on("CONNECTION.RECONNECTED",({connection:J})=>{this._onConnectionReconnected(J)}),n8.on("CONNECTION.CLOSED",({connection:J})=>{this._onConnectionClosed(J)})}get playerCount(){return this._connectionPlayers.size}getConnectedPlayers(){return Array.from(this._connectionPlayers.values())}getConnectedPlayersByWorld(J){return this.getConnectedPlayers().filter((Z)=>Z.world===J)}getConnectedPlayerByUsername(J){return Array.from(this._connectionPlayers.values()).find((Z)=>{return Z.username.toLowerCase()===J.toLowerCase()})}_onConnectionOpened(J,Z){let Y=new XK(J,Z);this._connectionPlayers.set(J,Y),n8.emit("PLAYER_MANAGER.PLAYER_CONNECTED",{player:Y})}_onConnectionDisconnected(J){let Z=this._connectionPlayers.get(J);if(Z)Z.resetInputs(),Z.camera.reset()}_onConnectionReconnected(J){let Z=this._connectionPlayers.get(J);if(Z)Z.reconnect(),n8.emit("PLAYER_MANAGER.PLAYER_RECONNECTED",{player:Z});else f.warning(`PlayerManager._onConnectionReconnected(): Connection ${J.id} not in the PlayerManager._connectionPlayers map.`)}_onConnectionClosed(J){let Z=this._connectionPlayers.get(J);if(Z)Z.disconnect(),this._connectionPlayers.delete(J),n8.emit("PLAYER_MANAGER.PLAYER_DISCONNECTED",{player:Z});else f.warning(`PlayerManager._onConnectionClosed(): Connection ${J.id} not in the PlayerManager._connectionPlayers map.`)}}var S8=16,MA=S8-1,jr8=S8**3,RA;(($)=>{$.DESPAWN="CHUNK.DESPAWN";$.SET_BLOCK="CHUNK.SET_BLOCK";$.SPAWN="CHUNK.SPAWN"})(RA||={});class _5 extends S0{_blocks;_blockIdColliders=new Map;_blockIdCounts=new Map;_blockIdCoordinatesPendingAdd=new Map;_blockIdCoordinatesPendingRemove=new Map;_originCoordinate;_requiresUpdate=!1;_rigidBody;_world;constructor(){super();this._blocks=new Uint8Array(jr8)}get blocks(){return this._blocks}get isSimulated(){return!!this._rigidBody}get isSpawned(){return!!this._originCoordinate&&!!this._world}get originCoordinate(){return this._originCoordinate}get requiresUpdate(){return this._requiresUpdate}get world(){return this._world}static blockIndexToLocalCoordinate(J){return{x:J%S8,y:(J/S8|0)%S8,z:J/(S8*S8)|0}}static globalCoordinateToLocalCoordinate(J){return{x:J.x&S8-1,y:J.y&S8-1,z:J.z&S8-1}}static globalCoordinateToOriginCoordinate(J){return{x:J.x&~(S8-1),y:J.y&~(S8-1),z:J.z&~(S8-1)}}static isValidOriginCoordinate(J){return J.x%S8===0&&J.y%S8===0&&J.z%S8===0}spawn(J,Z){if(this.isSpawned){let{x:Y,y:$,z:W}=this.originCoordinate;return f.error(`Chunk.spawn(): Chunk is already spawned at origin ${Y}, ${$}, ${W}!`)}if(!_5.isValidOriginCoordinate(Z))return f.error(`Chunk.spawn(): Chunk coordinates must be divisible by ${S8}`);this._originCoordinate=Z,this._world=J,this._world.chunkLattice.registerChunk(this),this._requiresUpdate=!0}despawn(){if(!this.isSpawned)return f.error("Chunk.despawn(): Chunk has not been spawned and cannot be despawned!");this.emitWithWorld(this._world,"CHUNK.DESPAWN",{chunk:this}),this._removeFromSimulation(),this._world.chunkLattice.unregisterChunk(this),this._originCoordinate=void 0,this._world=void 0}getBlockId(J){return this._blocks[this._getIndex(J)]}hasBlock(J){return this._blocks[this._getIndex(J)]!==0}setBlock(J,Z){if(!this._isValidLocalCoordinate(J))return f.error("Chunk.setBlock(): Block local coordinate is out of bounds");let Y=this._getIndex(J),$=this._blocks[Y];if($===Z)return;if($!==0){this._blockIdCounts.set($,(this._blockIdCounts.get($)??0)-1);let W=this._blockIdCoordinatesPendingRemove.get($);if(!W)W=[],this._blockIdCoordinatesPendingRemove.set($,W);W.push(J)}if(Z!==0){this._blockIdCounts.set(Z,(this._blockIdCounts.get(Z)??0)+1);let W=this._blockIdCoordinatesPendingAdd.get(Z);if(!W)W=[],this._blockIdCoordinatesPendingAdd.set(Z,W);W.push(J)}if(this._blocks[Y]=Z,this.isSpawned&&this.isSimulated)this.emitWithWorld(this._world,"CHUNK.SET_BLOCK",{chunk:this,globalCoordinate:this._getGlobalCoordinate(J),localCoordinate:J,blockTypeId:Z});this._requiresUpdate=!0}update(){if(!this._requiresUpdate)return;if(!this.isSpawned)return f.error("Chunk.update(): Chunk is not spawned and cannot be updated.");let J=!this._rigidBody;this._rigidBody??=new jY({type:"fixed",position:this._originCoordinate,simulation:this._world.simulation});for(let[Z,Y]of this._blockIdCoordinatesPendingAdd){let $=this._blockIdColliders.get(Z);if(!$){let W=this._world.blockTypeRegistry.getBlockType(Z),Q=W.createCollider(Y,{x:1,y:1,z:1}),X=this._world.simulation;Q.addToSimulation(X,this._rigidBody),X.colliderMap.setColliderBlockType(Q,W),this._blockIdColliders.set(Z,Q)}else for(let W of Y)$.setVoxel(W,!0)}for(let[Z,Y]of this._blockIdCoordinatesPendingRemove){let $=this._blockIdColliders.get(Z);if(!$)continue;if(this._blockIdCounts.get(Z)===0)$.removeFromSimulation(),this._blockIdColliders.delete(Z);else for(let W of Y)$.setVoxel(W,!1)}if(this._blockIdCoordinatesPendingAdd.clear(),this._blockIdCoordinatesPendingRemove.clear(),this._requiresUpdate=!1,J)this.emitWithWorld(this._world,"CHUNK.SPAWN",{chunk:this})}serialize(){return b0.serializeChunk(this)}_removeFromSimulation(){if(!this._rigidBody||!this._world)return;this._rigidBody.removeFromSimulation(),this._rigidBody=void 0}_getGlobalCoordinate(J){if(!this.originCoordinate)f.fatalError("Chunk._getGlobalCoordinate(): Chunk is not spawned, calculating global coordinate is impossible.");return{x:this.originCoordinate.x+J.x,y:this.originCoordinate.y+J.y,z:this.originCoordinate.z+J.z}}_getIndex(J){return J.x+(J.y<<4)+(J.z<<8)}_isValidLocalCoordinate(J){return J.x>=0&&J.x<=MA&&J.y>=0&&J.y<=MA&&J.z>=0&&J.z<=MA}}class ZV{_chunks=new Map;_world;constructor(J){this._world=J}get chunkCount(){return this._chunks.size}registerChunk(J){if(!J.isSpawned)return f.error("ChunkLattice.registerChunk(): Chunk is not spawned.");if(this.hasChunk(J.originCoordinate)){let{x:Z,y:Y,z:$}=J.originCoordinate;return f.error(`ChunkLattice.registerChunk(): Chunk exists at origin (${Z}, ${Y}, ${$}), despawn the current chunk before registering another at the same origin.`)}if(J.world.id!==this._world.id)return f.error("ChunkLattice.registerChunk(): Chunk world does not match lattice world.");this._chunks.set(this._getChunkKey(J.originCoordinate),J)}unregisterChunk(J){if(!J.isSpawned)return f.error("ChunkLattice.unregisterChunk(): Chunk is not spawned.");if(J.world.id!==this._world.id)return f.error("ChunkLattice.unregisterChunk(): Chunk world does not match lattice world.");this._chunks.delete(this._getChunkKey(J.originCoordinate))}clear(){this._chunks.forEach((J)=>J.despawn()),this._chunks.clear()}getBlockId(J){let Z=this.getChunk(_5.globalCoordinateToOriginCoordinate(J));if(!Z)return 0;return Z.getBlockId(_5.globalCoordinateToLocalCoordinate(J))}getBlockType(J){let Z=this.getBlockId(J);return Z?this._world.blockTypeRegistry.getBlockType(Z):null}getChunk(J){if(!_5.isValidOriginCoordinate(J)){f.error(`ChunkLattice.getChunk(): Chunk coordinates must be divisible by CHUNK_SIZE (${S8})`);return}return this._chunks.get(this._getChunkKey(J))}getAllChunks(){return Array.from(this._chunks.values())}hasBlock(J){let Z=this.getChunk(_5.globalCoordinateToOriginCoordinate(J));if(!Z)return!1;return Z.hasBlock(_5.globalCoordinateToLocalCoordinate(J))}hasChunk(J){return this._chunks.has(this._getChunkKey(J))}setBlock(J,Z){let Y=_5.globalCoordinateToLocalCoordinate(J),$=_5.globalCoordinateToOriginCoordinate(J),W=this.getChunk($);if(!W)W=new _5,W.spawn(this._world,$);W.setBlock(Y,Z)}updateChunks(){this._chunks.forEach((J)=>{if(J.requiresUpdate)J.update()})}_getChunkKey(J){return`${J.x},${J.y},${J.z}`}}var w41={type:"dynamic",softCcdPrediction:1},L41=0.0025000000000000005,B41=Math.cos(0.005),YV;((O)=>{O.BLOCK_COLLISION="ENTITY.BLOCK_COLLISION";O.BLOCK_CONTACT_FORCE="ENTITY.BLOCK_CONTACT_FORCE";O.DESPAWN="ENTITY.DESPAWN";O.ENTITY_COLLISION="ENTITY.ENTITY_COLLISION";O.ENTITY_CONTACT_FORCE="ENTITY.ENTITY_CONTACT_FORCE";O.SET_MODEL_ANIMATIONS_PLAYBACK_RATE="ENTITY.SET_MODEL_ANIMATIONS_PLAYBACK_RATE";O.SET_MODEL_HIDDEN_NODES="ENTITY.SET_MODEL_HIDDEN_NODES";O.SET_OPACITY="ENTITY.SET_OPACITY";O.SET_PARENT="ENTITY.SET_PARENT";O.SET_TINT_COLOR="ENTITY.SET_TINT_COLOR";O.SPAWN="ENTITY.SPAWN";O.START_MODEL_LOOPED_ANIMATIONS="ENTITY.START_MODEL_LOOPED_ANIMATIONS";O.START_MODEL_ONESHOT_ANIMATIONS="ENTITY.START_MODEL_ONESHOT_ANIMATIONS";O.STOP_MODEL_ANIMATIONS="ENTITY.STOP_MODEL_ANIMATIONS";O.TICK="ENTITY.TICK";O.UPDATE_POSITION="ENTITY.UPDATE_POSITION";O.UPDATE_ROTATION="ENTITY.UPDATE_ROTATION"})(YV||={});class _8 extends jY{_id;_blockHalfExtents;_blockTextureUri;_controller;_modelAnimationsPlaybackRate=1;_modelHiddenNodes=new Set;_modelLoopedAnimations=new Set;_modelOneshotAnimations=new Set;_modelPreferredShape;_modelScale;_modelUri;_name;_opacity;_parent;_parentNodeName;_tag;_tintColor;_lastUpdatedPosition={x:0,y:0,z:0};_lastUpdatedRotation={x:0,y:0,z:0,w:1};_lastParentlessType="dynamic";_world;constructor(J){let Z="blockTextureUri"in J,Y="modelUri"in J;if(!Z===!Y)f.fatalError("Entity.constructor(): Entity data must include a blockTextureUri or modelUri, but not both.");if(Z&&!J.blockHalfExtents)f.fatalError("Entity.constructor(): Block entity must have blockHalfExtents!");if(J.parent&&!J.parent.isSpawned)f.fatalError("Entity.constructor(): Parent entity must be spawned before child entity!");if(J.parent?.modelUri&&J.parentNodeName&&!u5.instance.modelHasNode(J.parent.modelUri,J.parentNodeName))f.fatalError(`Entity.constructor(): Parent node name ${J.parentNodeName} not found in parent model ${J.parent.modelUri}!`);super(J.rigidBodyOptions??w41);if(Z)this._blockHalfExtents=J.blockHalfExtents,this._blockTextureUri=J.blockTextureUri;if(Y)this._modelAnimationsPlaybackRate=J.modelAnimationsPlaybackRate??1,this._modelPreferredShape=J.modelPreferredShape,this._modelScale=J.modelScale,this._modelUri=J.modelUri,J.modelHiddenNodes?.forEach(($)=>this._modelHiddenNodes.add($.toLowerCase())),J.modelLoopedAnimations?.forEach(($)=>this._modelLoopedAnimations.add($));if(this._name=J.name??"Nameless",this._opacity=J.opacity??1,this._parent=J.parent,this._parentNodeName=J.parentNodeName,this._tag=J.tag,this._tintColor=J.tintColor,J.controller)this.setController(J.controller)}get id(){return this._id}get blockHalfExtents(){return this._blockHalfExtents}get blockTextureUri(){return this._blockTextureUri}get controller(){return this._controller}get height(){return this.isModelEntity?u5.instance.getHeight(this._modelUri)*(this._modelScale??1):this._blockHalfExtents.y*2}get modelAnimationsPlaybackRate(){return this._modelAnimationsPlaybackRate}get modelHiddenNodes(){return this._modelHiddenNodes}get modelLoopedAnimations(){return this._modelLoopedAnimations}get modelPreferredShape(){return this._modelPreferredShape}get modelScale(){return this._modelScale}get modelUri(){return this._modelUri}get name(){return this._name}get opacity(){return this._opacity}get parent(){return this._parent}get parentNodeName(){return this._parentNodeName}get tag(){return this._tag}get tintColor(){return this._tintColor}get isBlockEntity(){return!!this._blockTextureUri}get isModelEntity(){return!!this._modelUri}get isSpawned(){return!!this._world}get world(){return this._world}spawn(J,Z,Y){if(this.isSpawned)return f.error(`Entity.spawn(): Entity ${this._name} is already spawned with id ${this._id}!`);if(!this.isSimulated)this.addToSimulation(J.simulation);if(this._blockTextureUri&&this._blockHalfExtents&&this.numColliders===0)this.addChildColliderToSimulation(new R5(R5.optionsFromBlockHalfExtents(this._blockHalfExtents)));if(this._modelUri&&this.numColliders===0&&this._modelPreferredShape!=="none")this.addChildColliderToSimulation(new R5(R5.optionsFromModelUri(this._modelUri,this._modelScale,this._modelPreferredShape)));if(this.colliders.forEach(($)=>{if(this.hasListeners("ENTITY.BLOCK_COLLISION")||this.hasListeners("ENTITY.ENTITY_COLLISION"))$.enableCollisionEvents(!0);if(this.hasListeners("ENTITY.BLOCK_CONTACT_FORCE")||this.hasListeners("ENTITY.ENTITY_CONTACT_FORCE"))$.enableContactForceEvents(!0);if(D9.isDefaultCollisionGroups($.collisionGroups))$.setCollisionGroups({belongsTo:[$.isSensor?4:2],collidesWith:[65535]})}),this.setPosition(Z),Y)this.setRotation(Y);if(this._id=J.entityManager.registerEntity(this),this._world=J,this._controller)this._controller.spawn(this);if(this._parent)this.setParent(this._parent,this._parentNodeName,Z,Y);this.colliders.forEach(($)=>{J.simulation.colliderMap.setColliderEntity($,this)}),this.emitWithWorld(J,"ENTITY.SPAWN",{entity:this})}despawn(){if(!this._requireSpawned("despawn"))return;if(this._world.entityManager.getEntityChildren(this).forEach((J)=>{J.despawn()}),this._controller)this._controller.detach(this),this._controller.despawn(this);if(this.emitWithWorld(this._world,"ENTITY.DESPAWN",{entity:this}),this.isSimulated)this.removeFromSimulation();this._world.entityManager.unregisterEntity(this),this._world.audioManager.unregisterEntityAttachedAudios(this),this._world.lightManager.despawnEntityAttachedLights(this),this._world.sceneUIManager.unloadEntityAttachedSceneUIs(this),this._id=void 0,this._world=void 0}setModelAnimationsPlaybackRate(J){if(!this._requireSpawned("setModelAnimationsPlaybackRate"))return;if(!this.isModelEntity||this._modelAnimationsPlaybackRate===J)return;this._modelAnimationsPlaybackRate=J,this.emitWithWorld(this._world,"ENTITY.SET_MODEL_ANIMATIONS_PLAYBACK_RATE",{entity:this,playbackRate:J})}setController(J){if(this._controller===J)return;if(this._controller)this._controller.detach(this);if(this._controller=J,this._controller)this._controller.attach(this)}setModelHiddenNodes(J){if(!this._requireSpawned("setModelHiddenNodes"))return;this._modelHiddenNodes=new Set(J.map((Z)=>Z.toLowerCase())),this.emitWithWorld(this._world,"ENTITY.SET_MODEL_HIDDEN_NODES",{entity:this,modelHiddenNodes:this._modelHiddenNodes})}setOpacity(J){if(!this._requireSpawned("setOpacity"))return;if(this._opacity===J)return;this._opacity=J,this.emitWithWorld(this._world,"ENTITY.SET_OPACITY",{entity:this,opacity:J})}setParent(J,Z,Y,$){if(!this._requireSpawned("setParent"))return;if(J&&!J.isSpawned)return f.error("Entity.setParent(): Parent entity is not spawned, cannot set parent!");if(!this._parent&&J)this._lastParentlessType=this.type;if(this._parent=J,this._parentNodeName=Z,this.colliders.forEach((W)=>W.setEnabled(!J)),this.setType(!J?this._lastParentlessType:"kinematic_velocity"),this.setPosition(Y??{x:0,y:0,z:0}),this.setRotation($??{x:0,y:0,z:0,w:1}),!this.isKinematicPositionBased)this.resetAngularVelocity(),this.resetForces(),this.resetLinearVelocity(),this.resetTorques();this.emitWithWorld(this._world,"ENTITY.SET_PARENT",{entity:this,parent:J,parentNodeName:Z})}setTintColor(J){if(!this._requireSpawned("setTintColor"))return;if(!J&&!this._tintColor||J&&this._tintColor&&J.r===this._tintColor.r&&J.g===this._tintColor.g&&J.b===this._tintColor.b)return;this._tintColor=J,this.emitWithWorld(this._world,"ENTITY.SET_TINT_COLOR",{entity:this,tintColor:J})}startModelLoopedAnimations(J){if(!this._requireSpawned("startModelLoopedAnimations"))return;if(!this.isModelEntity||!J.length)return;if(!J.some((Z)=>!this._modelLoopedAnimations.has(Z)))return;J.forEach((Z)=>{this._modelLoopedAnimations.add(Z)}),this.emitWithWorld(this._world,"ENTITY.START_MODEL_LOOPED_ANIMATIONS",{entity:this,animations:new Set(J)})}startModelOneshotAnimations(J){if(!this._requireSpawned("startModelOneshotAnimations"))return;if(!this.isModelEntity||!J.length)return;J.forEach((Z)=>{this._modelOneshotAnimations.add(Z)}),this.emitWithWorld(this._world,"ENTITY.START_MODEL_ONESHOT_ANIMATIONS",{entity:this,animations:new Set(J)})}stopModelAnimations(J){if(!this._requireSpawned("stopModelAnimations"))return;if(!this.isModelEntity||!J.length)return;if(!J.some((Z)=>this._modelLoopedAnimations.has(Z))&&!J.some((Z)=>this._modelOneshotAnimations.has(Z)))return;J.forEach((Z)=>{this._modelLoopedAnimations.delete(Z),this._modelOneshotAnimations.delete(Z)}),this.emitWithWorld(this._world,"ENTITY.STOP_MODEL_ANIMATIONS",{entity:this,animations:new Set(J)})}serialize(){return b0.serializeEntity(this)}tick(J){if(this.emit("ENTITY.TICK",{entity:this,tickDeltaMs:J}),this._controller)this._controller.tick(this,J)}checkAndEmitUpdates(){if(!this._requireSpawned("checkAndEmitUpdates"))return;let J=this.position,Z=this.rotation;if(this._rotationExceedsThreshold(Z,this._lastUpdatedRotation))this._lastUpdatedRotation=Z,this.emitWithWorld(this._world,"ENTITY.UPDATE_ROTATION",{entity:this,rotation:Z});if(this._positionExceedsThreshold(J,this._lastUpdatedPosition))this._lastUpdatedPosition=J,this.emitWithWorld(this._world,"ENTITY.UPDATE_POSITION",{entity:this,position:J})}_requireSpawned(J){if(!this.isSpawned)f.error(`Entity._requireSpawned(): Entity ${this._name} is not spawned, cannot invoke ${J}()!`);return this.isSpawned}_positionExceedsThreshold(J,Z){let Y=J.x-Z.x,$=J.y-Z.y,W=J.z-Z.z;return Y*Y+$*$+W*W>L41}_rotationExceedsThreshold(J,Z){return Math.abs(J.x*Z.x+J.y*Z.y+J.z*Z.z+J.w*Z.w)<B41}}var NA;((K)=>{K.LOAD="SCENE_UI.LOAD";K.SET_ATTACHED_TO_ENTITY="SCENE_UI.SET_ATTACHED_TO_ENTITY";K.SET_OFFSET="SCENE_UI.SET_OFFSET";K.SET_POSITION="SCENE_UI.SET_POSITION";K.SET_STATE="SCENE_UI.SET_STATE";K.SET_VIEW_DISTANCE="SCENE_UI.SET_VIEW_DISTANCE";K.UNLOAD="SCENE_UI.UNLOAD"})(NA||={});class $V extends S0{_id;_attachedToEntity;_offset;_position;_state={};_templateId;_viewDistance;_world;constructor(J){if(!!J.attachedToEntity===!!J.position)f.fatalError("Either attachedToEntity or position must be set, but not both");super();this._attachedToEntity=J.attachedToEntity,this._offset=J.offset,this._position=J.position,this._state=J.state??{},this._templateId=J.templateId,this._viewDistance=J.viewDistance}get id(){return this._id}get attachedToEntity(){return this._attachedToEntity}get isLoaded(){return this._id!==void 0}get offset(){return this._offset}get position(){return this._position}get state(){return this._state}get templateId(){return this._templateId}get viewDistance(){return this._viewDistance}get world(){return this._world}load(J){if(this.isLoaded)return;if(this._attachedToEntity&&!this._attachedToEntity.isSpawned)return f.error(`SceneUI.load(): Attached entity ${this._attachedToEntity.id} must be spawned before loading SceneUI!`);this._id=J.sceneUIManager.registerSceneUI(this),this._world=J,this.emitWithWorld(J,"SCENE_UI.LOAD",{sceneUI:this})}setAttachedToEntity(J){if(!J.isSpawned)return f.error(`SceneUI.setAttachedToEntity(): Entity ${J.id} is not spawned!`);if(this._attachedToEntity===J)return;if(this._attachedToEntity=J,this._position=void 0,this.isLoaded)this.emitWithWorld(this._world,"SCENE_UI.SET_ATTACHED_TO_ENTITY",{sceneUI:this,entity:J})}setOffset(J){if(this._offset===J)return;if(this._offset=J,this.isLoaded)this.emitWithWorld(this._world,"SCENE_UI.SET_OFFSET",{sceneUI:this,offset:J})}setPosition(J){if(this._position===J)return;if(this._attachedToEntity=void 0,this._position=J,this.isLoaded)this.emitWithWorld(this._world,"SCENE_UI.SET_POSITION",{sceneUI:this,position:J})}setState(J){if(this._state={...this._state,...J},this.isLoaded)this.emitWithWorld(this._world,"SCENE_UI.SET_STATE",{sceneUI:this,state:this._state})}setViewDistance(J){if(this._viewDistance=J,this.isLoaded)this.emitWithWorld(this._world,"SCENE_UI.SET_VIEW_DISTANCE",{sceneUI:this,viewDistance:J})}unload(){if(!this.isLoaded||!this._world)return;this._world.sceneUIManager.unregisterSceneUI(this),this.emitWithWorld(this._world,"SCENE_UI.UNLOAD",{sceneUI:this}),this._id=void 0,this._world=void 0}serialize(){return b0.serializeSceneUI(this)}}class t4 extends _8{player;nametagSceneUI;constructor(J){super(J);this.player=J.player,this.nametagSceneUI=new $V({templateId:"hytopia:nametag",attachedToEntity:this,offset:{x:0,y:1,z:0},viewDistance:15,state:{username:this.player.username,profilePictureUrl:this.player.profilePictureUrl}})}spawn(J,Z,Y){super.spawn(J,Z,Y),this.nametagSceneUI.load(J),this.player.on("PLAYER.CHAT_MESSAGE_SEND",({message:$})=>{this.nametagSceneUI.setState({chat:$})})}tick(J){if(!this.isSpawned||!this.world)return;if(!this.controller)return f.error(`PlayerEntity.tick(): PlayerEntity "${this.name}" must have a controller.`);let{input:Z,camera:Y}=this.player;this.controller.tickWithPlayerInput(this,Z,Y.orientation,J),super.tick(J)}}class QV{_entities=new Map;_nextEntityId=1;_world;constructor(J){this._world=J}get entityCount(){return this._entities.size}get world(){return this._world}registerEntity(J){if(J.id!==void 0)f.fatalError(`EntityManager.registerEntity(): Entity ${J.name} is already assigned the id ${J.id}!`);let Z=this._nextEntityId;return this._entities.set(Z,J),this._nextEntityId++,Z}unregisterEntity(J){if(J.id===void 0)return f.error(`EntityManager.unregisterEntity(): Entity ${J.name} is not assigned an id!`);this._entities.delete(J.id)}getAllEntities(){return Array.from(this._entities.values())}getAllPlayerEntities(){let J=[];return this._entities.forEach((Z)=>{if(Z instanceof t4)J.push(Z)}),J}getPlayerEntitiesByPlayer(J){let Z=[];return this._entities.forEach((Y)=>{if(Y instanceof t4&&Y.player===J)Z.push(Y)}),Z}getEntity(J){return this._entities.get(J)}getEntitiesByTag(J){let Z=[];return this._entities.forEach((Y)=>{if(Y.tag===J)Z.push(Y)}),Z}getEntitiesByTagSubstring(J){let Z=[];return this._entities.forEach((Y)=>{if(Y.tag?.includes(J))Z.push(Y)}),Z}getEntityChildren(J){let Z=[];return this._entities.forEach((Y)=>{if(Y.parent===J)Z.push(Y)}),Z}tickEntities(J){this._entities.forEach((Z)=>{Z.tick(J)})}checkAndEmitUpdates(){this._entities.forEach((J)=>{if(!J.isSpawned)return;J.checkAndEmitUpdates()})}}class XV{_lights=new Map;_nextLightId=1;_world;constructor(J){this._world=J}get world(){return this._world}despawnEntityAttachedLights(J){this.getAllEntityAttachedLights(J).forEach((Z)=>{Z.despawn()})}getAllLights(){return Array.from(this._lights.values())}getAllEntityAttachedLights(J){return this.getAllLights().filter((Z)=>Z.attachedToEntity===J)}registerLight(J){if(J.id!==void 0)return J.id;let Z=this._nextLightId;return this._lights.set(Z,J),this._nextLightId++,Z}unregisterLight(J){if(J.id===void 0)return;this._lights.delete(J.id)}}var O41;((Y)=>{Y[Y.POINTLIGHT=0]="POINTLIGHT";Y[Y.SPOTLIGHT=1]="SPOTLIGHT"})(O41||={});var PA;((H)=>{H.DESPAWN="LIGHT.DESPAWN";H.SET_ANGLE="LIGHT.SET_ANGLE";H.SET_ATTACHED_TO_ENTITY="LIGHT.SET_ATTACHED_TO_ENTITY";H.SET_COLOR="LIGHT.SET_COLOR";H.SET_DISTANCE="LIGHT.SET_DISTANCE";H.SET_INTENSITY="LIGHT.SET_INTENSITY";H.SET_OFFSET="LIGHT.SET_OFFSET";H.SET_PENUMBRA="LIGHT.SET_PENUMBRA";H.SET_POSITION="LIGHT.SET_POSITION";H.SET_TRACKED_ENTITY="LIGHT.SET_TRACKED_ENTITY";H.SET_TRACKED_POSITION="LIGHT.SET_TRACKED_POSITION";H.SPAWN="LIGHT.SPAWN"})(PA||={});class jA extends S0{_id;_angle;_attachedToEntity;_color;_distance;_intensity;_offset;_penumbra;_position;_trackedEntity;_trackedPosition;_type;_world;constructor(J){if(!!J.attachedToEntity===!!J.position)f.fatalError("Either attachedToEntity or position must be set, but not both");super();f.warning("WARNING: Lights are poorly optimized at this time. Using more than a few lights in your game can cause extremely bad performance (FPS) issues. Use lights sparingly!"),this._angle=J.angle,this._attachedToEntity=J.attachedToEntity,this._color=J.color??{r:255,g:255,b:255},this._distance=J.distance,this._intensity=J.intensity??1,this._offset=J.offset,this._penumbra=J.penumbra,this._position=J.position,this._trackedEntity=J.trackedEntity,this._trackedPosition=J.trackedPosition,this._type=J.type??0}get id(){return this._id}get angle(){return this._angle}get attachedToEntity(){return this._attachedToEntity}get color(){return this._color}get distance(){return this._distance}get intensity(){return this._intensity}get isSpawned(){return this._id!==void 0}get offset(){return this._offset}get penumbra(){return this._penumbra}get position(){return this._position}get trackedEntity(){return this._trackedEntity}get trackedPosition(){return this._trackedPosition}get type(){return this._type}get world(){return this._world}setAngle(J){if(this._angle===J)return;if(this._angle=J,this.isSpawned)this.emitWithWorld(this._world,"LIGHT.SET_ANGLE",{light:this,angle:J})}setAttachedToEntity(J){if(!J.isSpawned)return f.error(`Light.setAttachedToEntity(): Entity ${J.id} is not spawned!`);if(this._attachedToEntity===J)return;if(this._attachedToEntity=J,this._position=void 0,this.isSpawned)this.emitWithWorld(this._world,"LIGHT.SET_ATTACHED_TO_ENTITY",{light:this,entity:J})}setColor(J){if(this._color.r===J.r&&this._color.g===J.g&&this._color.b===J.b)return;if(this._color=J,this.isSpawned)this.emitWithWorld(this._world,"LIGHT.SET_COLOR",{light:this,color:J})}setDistance(J){if(this._distance===J)return;if(this._distance=J,this.isSpawned)this.emitWithWorld(this._world,"LIGHT.SET_DISTANCE",{light:this,distance:J})}setIntensity(J){if(this._intensity===J)return;if(this._intensity=J,this.isSpawned)this.emitWithWorld(this._world,"LIGHT.SET_INTENSITY",{light:this,intensity:J})}setOffset(J){if(this._offset===J)return;if(this._offset=J,this.isSpawned)this.emitWithWorld(this._world,"LIGHT.SET_OFFSET",{light:this,offset:J})}setPenumbra(J){if(this._penumbra===J)return;if(this._penumbra=J,this.isSpawned)this.emitWithWorld(this._world,"LIGHT.SET_PENUMBRA",{light:this,penumbra:J})}setPosition(J){if(this._position===J)return;if(this._position=J,this._attachedToEntity=void 0,this.isSpawned)this.emitWithWorld(this._world,"LIGHT.SET_POSITION",{light:this,position:J})}setTrackedEntity(J){if(!J.isSpawned)return f.error(`Light.setTrackedEntity(): Entity ${J.id} is not spawned!`);if(this._trackedEntity===J)return;if(this._trackedEntity=J,this._trackedPosition=void 0,this.isSpawned)this.emitWithWorld(this._world,"LIGHT.SET_TRACKED_ENTITY",{light:this,entity:J})}setTrackedPosition(J){if(this._trackedPosition===J)return;if(this._trackedPosition=J,this._trackedEntity=void 0,this.isSpawned)this.emitWithWorld(this._world,"LIGHT.SET_TRACKED_POSITION",{light:this,position:J})}despawn(){if(!this.isSpawned||!this._world)return;this._world.lightManager.unregisterLight(this),this.emitWithWorld(this._world,"LIGHT.DESPAWN",{light:this}),this._id=void 0,this._world=void 0}spawn(J){if(this.isSpawned)return;if(this._attachedToEntity&&!this._attachedToEntity.isSpawned)return f.error(`Light.spawn(): Attached entity ${this._attachedToEntity.id} must be spawned before spawning Light!`);this._id=J.lightManager.registerLight(this),this._world=J,this.emitWithWorld(J,"LIGHT.SPAWN",{light:this})}serialize(){return b0.serializeLight(this)}}var M41;(($)=>{$[$.FIRST_PERSON=0]="FIRST_PERSON";$[$.THIRD_PERSON=1]="THIRD_PERSON";$[$.SPECTATOR=2]="SPECTATOR"})(M41||={});var DA;((q)=>{q.LOOK_AT_ENTITY="PLAYER_CAMERA.LOOK_AT_ENTITY";q.LOOK_AT_POSITION="PLAYER_CAMERA.LOOK_AT_POSITION";q.SET_ATTACHED_TO_ENTITY="PLAYER_CAMERA.SET_ATTACHED_TO_ENTITY";q.SET_ATTACHED_TO_POSITION="PLAYER_CAMERA.SET_ATTACHED_TO_POSITION";q.SET_FILM_OFFSET="PLAYER_CAMERA.SET_FILM_OFFSET";q.SET_FORWARD_OFFSET="PLAYER_CAMERA.SET_FORWARD_OFFSET";q.SET_FOV="PLAYER_CAMERA.SET_FOV";q.SET_MODEL_HIDDEN_NODES="PLAYER_CAMERA.SET_MODEL_HIDDEN_NODES";q.SET_MODE="PLAYER_CAMERA.SET_MODE";q.SET_OFFSET="PLAYER_CAMERA.SET_OFFSET";q.SET_TRACKED_ENTITY="PLAYER_CAMERA.SET_TRACKED_ENTITY";q.SET_TRACKED_POSITION="PLAYER_CAMERA.SET_TRACKED_POSITION";q.SET_ZOOM="PLAYER_CAMERA.SET_ZOOM"})(DA||={});class KV extends S0{player;_attachedToEntity;_attachedToPosition;_filmOffset=0;_forwardOffset=0;_fov=75;_modelHiddenNodes=new Set;_mode=1;_offset={x:0,y:0,z:0};_orientation={pitch:0,yaw:0};_trackedEntity;_trackedPosition;_zoom=1;constructor(J){super();this.player=J}get attachedToEntity(){return this._attachedToEntity}get attachedToPosition(){return this._attachedToPosition}get facingDirection(){return{x:-Math.sin(this._orientation.yaw)*Math.cos(this._orientation.pitch),y:Math.sin(this._orientation.pitch),z:-Math.cos(this._orientation.yaw)*Math.cos(this._orientation.pitch)}}get filmOffset(){return this._filmOffset}get forwardOffset(){return this._forwardOffset}get fov(){return this._fov}get modelHiddenNodes(){return this._modelHiddenNodes}get mode(){return this._mode}get offset(){return this._offset}get orientation(){return this._orientation}get trackedEntity(){return this._trackedEntity}get trackedPosition(){return this._trackedPosition}get zoom(){return this._zoom}lookAtEntity(J){if(!this._requirePlayerWorld())return;this.emitWithWorld(this.player.world,"PLAYER_CAMERA.LOOK_AT_ENTITY",{playerCamera:this,entity:J})}lookAtPosition(J){if(!this._requirePlayerWorld())return;this.emitWithWorld(this.player.world,"PLAYER_CAMERA.LOOK_AT_POSITION",{playerCamera:this,position:J})}reset(){this._attachedToEntity=void 0,this._attachedToPosition=void 0,this._orientation={pitch:0,yaw:0},this._trackedEntity=void 0,this._trackedPosition=void 0}setAttachedToEntity(J){if(!this._requirePlayerWorld())return;if(!J.isSpawned)return f.error(`PlayerCamera.setAttachedToEntity(): Entity ${J.id} is not spawned!`);this._attachedToEntity=J,this.emitWithWorld(this.player.world,"PLAYER_CAMERA.SET_ATTACHED_TO_ENTITY",{playerCamera:this,entity:J})}setAttachedToPosition(J){if(!this._requirePlayerWorld())return;this._attachedToPosition=J,this.emitWithWorld(this.player.world,"PLAYER_CAMERA.SET_ATTACHED_TO_POSITION",{playerCamera:this,position:J})}setFilmOffset(J){if(!this._requirePlayerWorld())return;this._filmOffset=J,this.emitWithWorld(this.player.world,"PLAYER_CAMERA.SET_FILM_OFFSET",{playerCamera:this,filmOffset:J})}setForwardOffset(J){if(!this._requirePlayerWorld())return;this._forwardOffset=J,this.emitWithWorld(this.player.world,"PLAYER_CAMERA.SET_FORWARD_OFFSET",{playerCamera:this,forwardOffset:J})}setFov(J){if(!this._requirePlayerWorld())return;this._fov=J,this.emitWithWorld(this.player.world,"PLAYER_CAMERA.SET_FOV",{playerCamera:this,fov:J})}setModelHiddenNodes(J){if(!this._requirePlayerWorld())return;this._modelHiddenNodes=new Set(J.map((Z)=>Z.toLowerCase())),this.emitWithWorld(this.player.world,"PLAYER_CAMERA.SET_MODEL_HIDDEN_NODES",{playerCamera:this,modelHiddenNodes:this._modelHiddenNodes})}setMode(J){if(!this._requirePlayerWorld())return;this._mode=J,this.emitWithWorld(this.player.world,"PLAYER_CAMERA.SET_MODE",{playerCamera:this,mode:J})}setOffset(J){if(!this._requirePlayerWorld())return;this._offset=J,this.emitWithWorld(this.player.world,"PLAYER_CAMERA.SET_OFFSET",{playerCamera:this,offset:J})}setOrientationPitch(J){this._orientation.pitch=J}setOrientationYaw(J){this._orientation.yaw=J}setTrackedEntity(J){if(!this._requirePlayerWorld())return;this._trackedEntity=J,this.emitWithWorld(this.player.world,"PLAYER_CAMERA.SET_TRACKED_ENTITY",{playerCamera:this,entity:J})}setTrackedPosition(J){if(!this._requirePlayerWorld())return;this._trackedPosition=J,this.emitWithWorld(this.player.world,"PLAYER_CAMERA.SET_TRACKED_POSITION",{playerCamera:this,position:J})}setZoom(J){if(!this._requirePlayerWorld())return;this._zoom=J,this.emitWithWorld(this.player.world,"PLAYER_CAMERA.SET_ZOOM",{playerCamera:this,zoom:J})}serialize(){return b0.serializePlayerCamera(this)}_requirePlayerWorld(){if(!this.player.world)f.error(`PlayerCamera._requirePlayerWorld(): Player ${this.player.id} is not in a world!`);return!!this.player.world}}var IO;((W)=>{W.DATA="PLAYER_UI.DATA";W.LOAD="PLAYER_UI.LOAD";W.LOCK_POINTER="PLAYER_UI.LOCK_POINTER";W.SEND_DATA="PLAYER_UI.SEND_DATA"})(IO||={});class GV extends S0{player;constructor(J){super();this.player=J}load(J){if(!this.player.world)return;this.emitWithWorld(this.player.world,"PLAYER_UI.LOAD",{playerUI:this,htmlUri:J})}lockPointer(J){if(!this.player.world)return;this.emitWithWorld(this.player.world,"PLAYER_UI.LOCK_POINTER",{playerUI:this,lock:J})}sendData(J){if(!this.player.world)return;this.emitWithWorld(this.player.world,"PLAYER_UI.SEND_DATA",{playerUI:this,data:J})}}class zV{_colliderHandleBlockTypeMap=new Map;_colliderHandleCollisionCallbackMap=new Map;_colliderHandleEntityMap=new Map;_cleanupBlockTypeColliderHandles=new Set;_pendingCleanupBlockTypeColliderHandles=new Set;_cleanupCollisionCallbackColliderHandles=new Set;_pendingCleanupCollisionCallbackColliderHandles=new Set;_cleanupEntityColliderHandles=new Set;_pendingCleanupEntityColliderHandles=new Set;getColliderBlockType(J){if(!this._requireSimulatedCollider(J))return;return this._colliderHandleBlockTypeMap.get(J.rawCollider.handle)}getColliderCollisionCallback(J){if(!this._requireSimulatedCollider(J))return;return this._colliderHandleCollisionCallbackMap.get(J.rawCollider.handle)}getColliderEntity(J){if(!this._requireSimulatedCollider(J))return;return this._colliderHandleEntityMap.get(J.rawCollider.handle)}getColliderHandleBlockType(J){return this._colliderHandleBlockTypeMap.get(J)}getColliderHandleCollisionCallback(J){return this._colliderHandleCollisionCallbackMap.get(J)}getColliderHandleEntity(J){return this._colliderHandleEntityMap.get(J)}removeColliderBlockType(J){if(!this._requireSimulatedCollider(J))return;this.removeColliderHandleBlockType(J.rawCollider.handle)}removeColliderCollisionCallback(J){if(!this._requireSimulatedCollider(J))return;this.removeColliderHandleCollisionCallback(J.rawCollider.handle)}removeColliderEntity(J){if(!this._requireSimulatedCollider(J))return;this.removeColliderHandleEntity(J.rawCollider.handle)}removeColliderHandleBlockType(J){this._colliderHandleBlockTypeMap.delete(J)}removeColliderHandleCollisionCallback(J){this._colliderHandleCollisionCallbackMap.delete(J)}removeColliderHandleEntity(J){this._colliderHandleEntityMap.delete(J)}setColliderBlockType(J,Z){if(!this._requireSimulatedCollider(J))return;this.setColliderHandleBlockType(J.rawCollider.handle,Z)}setColliderCollisionCallback(J,Z){if(!this._requireSimulatedCollider(J))return;this.setColliderHandleCollisionCallback(J.rawCollider.handle,Z)}setColliderEntity(J,Z){if(!this._requireSimulatedCollider(J))return;this.setColliderHandleEntity(J.rawCollider.handle,Z)}setColliderHandleBlockType(J,Z){this._colliderHandleBlockTypeMap.set(J,Z),this._cleanupBlockTypeColliderHandles.delete(J),this._pendingCleanupBlockTypeColliderHandles.delete(J)}setColliderHandleCollisionCallback(J,Z){this._colliderHandleCollisionCallbackMap.set(J,Z),this._cleanupCollisionCallbackColliderHandles.delete(J),this._pendingCleanupCollisionCallbackColliderHandles.delete(J)}setColliderHandleEntity(J,Z){this._colliderHandleEntityMap.set(J,Z),this._cleanupEntityColliderHandles.delete(J),this._pendingCleanupEntityColliderHandles.delete(J)}queueColliderHandleForCleanup(J){if(this._colliderHandleBlockTypeMap.has(J))this._pendingCleanupBlockTypeColliderHandles.add(J);if(this._colliderHandleCollisionCallbackMap.has(J))this._pendingCleanupCollisionCallbackColliderHandles.add(J);if(this._colliderHandleEntityMap.has(J))this._pendingCleanupEntityColliderHandles.add(J)}cleanup(){for(let J of this._cleanupBlockTypeColliderHandles)this._colliderHandleBlockTypeMap.delete(J);this._cleanupBlockTypeColliderHandles.clear();for(let J of this._cleanupCollisionCallbackColliderHandles)this._colliderHandleCollisionCallbackMap.delete(J);this._cleanupCollisionCallbackColliderHandles.clear();for(let J of this._cleanupEntityColliderHandles)this._colliderHandleEntityMap.delete(J);this._cleanupEntityColliderHandles.clear(),[[this._pendingCleanupBlockTypeColliderHandles,this._cleanupBlockTypeColliderHandles],[this._pendingCleanupCollisionCallbackColliderHandles,this._cleanupCollisionCallbackColliderHandles],[this._pendingCleanupEntityColliderHandles,this._cleanupEntityColliderHandles]].forEach(([J,Z])=>{for(let Y of J.keys())Z.add(Y);J.clear()})}_requireSimulatedCollider(J){if(!J.rawCollider)f.error("ColliderMap._requireSimulatedCollider(): Collider is not in the simulation.");return!!J.rawCollider}}var Dr8={x:0,y:-32,z:0},CA=60,TA;((W)=>{W.STEP_START="SIMULATION.STEP_START";W.STEP_END="SIMULATION.STEP_END";W.DEBUG_RAYCAST="SIMULATION.DEBUG_RAYCAST";W.DEBUG_RENDER="SIMULATION.DEBUG_RENDER"})(TA||={});class FV extends S0{_colliderMap=new zV;_debugRaycastingEnabled=!1;_debugRenderingEnabled=!1;_rapierEventQueue;_rapierSimulation;_world;constructor(J,Z=CA,Y=Dr8){super();this._rapierEventQueue=new s0.EventQueue(!0),this._rapierSimulation=new s0.World(Y),this._rapierSimulation.timestep=Math.fround(1/Z),this._world=J}get colliderMap(){return this._colliderMap}get isDebugRaycastingEnabled(){return this._debugRaycastingEnabled}get isDebugRenderingEnabled(){return this._debugRenderingEnabled}get gravity(){return this._rapierSimulation.gravity}get timestepS(){return this._rapierSimulation.timestep}get world(){return this._world}raycast(J,Z,Y,$={}){let W=new s0.Ray(J,Z),Q=this._rapierSimulation.castRay(W,Y,$.ignoresSensors??!0,$.filterFlags,$.filterGroups,$.filterExcludeCollider,$.filterExcludeRigidBody,$.filterPredicate);if(this._debugRaycastingEnabled)this.emitWithWorld(this._world,"SIMULATION.DEBUG_RAYCAST",{simulation:this,origin:J,direction:Z,length:Y,hit:!!Q});if(!Q)return null;let X=W.pointAt(Q.timeOfImpact),K=Q.timeOfImpact,G=Q.collider,z=this._colliderMap.getColliderHandleBlockType(G.handle);if(z)return{hitBlock:FW.fromGlobalCoordinate({x:Math.floor(X.x-(W.dir.x<0?0.0001:-0.0001)),y:Math.floor(X.y-(W.dir.y<0?0.0001:-0.0001)),z:Math.floor(X.z-(W.dir.z<0?0.0001:-0.0001))},z),hitPoint:X,hitDistance:K};let F=this._colliderMap.getColliderHandleEntity(G.handle);if(F)return{hitEntity:F,hitPoint:X,hitDistance:K};return null}createRawCollider(J,Z){return this._rapierSimulation.createCollider(J,Z)}createRawRigidBody(J){return this._rapierSimulation.createRigidBody(J)}enableDebugRaycasting(J){this._debugRaycastingEnabled=J}enableDebugRendering(J){this._debugRenderingEnabled=J}getContactManifolds(J,Z){let Y=[];return this._rapierSimulation.narrowPhase.contactPair(J,Z,($,W)=>{if($.numContacts()===0)return;let Q=$.normal(),X=[];for(let K=0;K<$.numSolverContacts();K++)X.push($.solverContactPoint(K));Y.push({contactPoints:X,localNormalA:!W?$.localNormal1():$.localNormal2(),localNormalB:!W?$.localNormal2():$.localNormal1(),normal:!W?Q:{x:-Q.x,y:-Q.y,z:-Q.z}})}),Y}removeRawCollider(J){this._colliderMap.queueColliderHandleForCleanup(J.handle),this._rapierSimulation.removeCollider(J,!1)}removeRawRigidBody(J){this._rapierSimulation.removeRigidBody(J)}setGravity(J){this._rapierSimulation.gravity=J}step=(J)=>{this.emitWithWorld(this._world,"SIMULATION.STEP_START",{simulation:this,tickDeltaMs:J});let Z=performance.now();if(a1.startSpan({operation:"physics_step"},()=>{this._rapierSimulation.step(this._rapierEventQueue)}),a1.startSpan({operation:"physics_cleanup"},()=>{this._rapierEventQueue.drainContactForceEvents(this._onContactForceEvent),this._rapierEventQueue.drainCollisionEvents(this._onCollisionEvent),this._colliderMap.cleanup()}),this.emitWithWorld(this._world,"SIMULATION.STEP_END",{simulation:this,stepDurationMs:performance.now()-Z}),this._debugRenderingEnabled)this.emitWithWorld(this._world,"SIMULATION.DEBUG_RENDER",{simulation:this,...this._rapierSimulation.debugRender()})};_onCollisionEvent=(J,Z,Y)=>{let[$,W]=this._getCollisionObjects(J,Z);if(!$||!W)return;let Q=(X,K)=>{if(X instanceof N5&&K instanceof _8&&X.hasListeners("BLOCK_TYPE.ENTITY_COLLISION"))X.emit("BLOCK_TYPE.ENTITY_COLLISION",{blockType:X,entity:K,started:Y,colliderHandleA:J,colliderHandleB:Z});else if(X instanceof _8&&K instanceof N5&&X.hasListeners("ENTITY.BLOCK_COLLISION"))X.emit("ENTITY.BLOCK_COLLISION",{entity:X,blockType:K,started:Y,colliderHandleA:J,colliderHandleB:Z});else if(X instanceof _8&&K instanceof _8&&X.hasListeners("ENTITY.ENTITY_COLLISION"))X.emit("ENTITY.ENTITY_COLLISION",{entity:X,otherEntity:K,started:Y,colliderHandleA:J,colliderHandleB:Z});else if(typeof X==="function"&&(K instanceof _8||K instanceof N5))X(K,Y,J,Z)};Q($,W),Q(W,$)};_onContactForceEvent=(J)=>{let[Z,Y]=this._getCollisionObjects(J.collider1(),J.collider2());if(!Z||typeof Z==="function"||!Y||typeof Y==="function")return;let $={totalForce:J.totalForce(),totalForceMagnitude:J.totalForceMagnitude(),maxForceDirection:J.maxForceDirection(),maxForceMagnitude:J.maxForceMagnitude()},W=(Q,X)=>{if(Q instanceof N5&&X instanceof _8&&Q.hasListeners("BLOCK_TYPE.ENTITY_CONTACT_FORCE"))Q.emit("BLOCK_TYPE.ENTITY_CONTACT_FORCE",{blockType:Q,entity:X,contactForceData:$});else if(Q instanceof _8&&X instanceof N5&&Q.hasListeners("ENTITY.BLOCK_CONTACT_FORCE"))Q.emit("ENTITY.BLOCK_CONTACT_FORCE",{entity:Q,blockType:X,contactForceData:$});else if(Q instanceof _8&&X instanceof _8&&Q.hasListeners("ENTITY.ENTITY_CONTACT_FORCE"))Q.emit("ENTITY.ENTITY_CONTACT_FORCE",{entity:Q,otherEntity:X,contactForceData:$})};W(Z,Y),W(Y,Z)};_getCollisionObjects(J,Z){let Y=this._colliderMap.getColliderHandleBlockType(J)??this._colliderMap.getColliderHandleCollisionCallback(J)??this._colliderMap.getColliderHandleEntity(J),$=this._colliderMap.getColliderHandleBlockType(Z)??this._colliderMap.getColliderHandleCollisionCallback(Z)??this._colliderMap.getColliderHandleEntity(Z);return[Y,$]}}class vO{_synchronizedPlayerReliablePackets=new Map;_queuedBroadcasts=[];_queuedAudioSynchronizations={};_queuedBlockSynchronizations={};_queuedBlockTypeSynchronizations={};_queuedChunkSynchronizations={};_queuedDebugRaycastSynchronizations=[];_queuedEntitySynchronizations={};_queuedLightSynchronizations={};_queuedPerPlayerSynchronizations=new Map;_queuedPerPlayerCameraSynchronizations=new Map;_queuedPerPlayerUISynchronizations=new Map;_queuedPerPlayerUIDatasSynchronizations=new Map;_queuedPlayerSynchronizations={};_queuedSceneUISynchronizations={};_queuedWorldSynchronization;_loadedSceneUIs=new Set;_spawnedChunks=new Set;_spawnedEntities=new Set;_world;constructor(J){this._world=J,this._subscribeToAudioEvents(),this._subscribeToBlockTypeRegistryEvents(),this._subscribeToChatEvents(),this._subscribeToChunkEvents(),this._subscribeToEntityEvents(),this._subscribeToLightEvents(),this._subscribeToPlayerEvents(),this._subscribeToPlayerCameraEvents(),this._subscribeToPlayerUIEvents(),this._subscribeToSceneUIEvents(),this._subscribeToSimulationEvents(),this._subscribeToWorldEvents()}synchronize(){let J=[],Z=[],Y=this._world.loop.currentTick;a1.startSpan({operation:"build_packets"},()=>{this._queuedPerPlayerSynchronizations.forEach((H,q)=>{this._createOrGetSynchronizedPlayerReliablePackets(q,J).push(...H)});let $=Object.values(this._queuedEntitySynchronizations);if($.length>0){let[H,q]=$.reduce(([U,L],w)=>{for(let O in w)if(O!=="i"&&O!=="p"&&O!=="r")return U.push(w),[U,L];return L.push(w),[U,L]},[[],[]]);if(q.length>0){let U=s.createPacket(s.outboundPackets.entitiesPacketDefinition,q,Y);Z.push(U)}if(H.length>0){let U=s.createPacket(s.outboundPackets.entitiesPacketDefinition,H,Y);J.push(U),this._synchronizedPlayerReliablePackets.forEach((L)=>L.push(U))}}let W=Object.values(this._queuedAudioSynchronizations);if(W.length>0){let H=s.createPacket(s.outboundPackets.audiosPacketDefinition,W,Y);J.push(H),this._synchronizedPlayerReliablePackets.forEach((q)=>q.push(H))}let Q=Object.values(this._queuedBlockTypeSynchronizations);if(Q.length>0){let H=s.createPacket(s.outboundPackets.blockTypesPacketDefinition,Q,Y);J.push(H),this._synchronizedPlayerReliablePackets.forEach((q)=>q.push(H))}let X=Object.values(this._queuedBlockSynchronizations);if(X.length>0){let H=s.createPacket(s.outboundPackets.blocksPacketDefinition,X,Y);J.push(H),this._synchronizedPlayerReliablePackets.forEach((q)=>q.push(H))}let K=Object.values(this._queuedChunkSynchronizations);if(K.length>0){let H=s.createPacket(s.outboundPackets.chunksPacketDefinition,K,Y);J.push(H),this._synchronizedPlayerReliablePackets.forEach((q)=>q.push(H))}let G=Object.values(this._queuedLightSynchronizations);if(G.length>0){let H=s.createPacket(s.outboundPackets.lightsPacketDefinition,G,Y);J.push(H),this._synchronizedPlayerReliablePackets.forEach((q)=>q.push(H))}this._queuedPerPlayerUISynchronizations.forEach((H,q)=>{let U=s.createPacket(s.outboundPackets.uiPacketDefinition,H,Y);this._createOrGetSynchronizedPlayerReliablePackets(q,J).push(U)}),this._queuedPerPlayerUIDatasSynchronizations.forEach((H,q)=>{let U=s.createPacket(s.outboundPackets.uiDatasPacketDefinition,H,Y);this._createOrGetSynchronizedPlayerReliablePackets(q,J).push(U)});let z=Object.values(this._queuedSceneUISynchronizations);if(z.length>0){let H=s.createPacket(s.outboundPackets.sceneUIsPacketDefinition,z,Y);J.push(H),this._synchronizedPlayerReliablePackets.forEach((q)=>q.push(H))}if(this._queuedWorldSynchronization){let H=s.createPacket(s.outboundPackets.worldPacketDefinition,this._queuedWorldSynchronization,Y);J.push(H),this._synchronizedPlayerReliablePackets.forEach((q)=>q.push(H))}this._queuedPerPlayerCameraSynchronizations.forEach((H,q)=>{let U=s.createPacket(s.outboundPackets.cameraPacketDefinition,H,Y);this._createOrGetSynchronizedPlayerReliablePackets(q,J).push(U)});let F=Object.values(this._queuedPlayerSynchronizations);if(F.length>0){let H=s.createPacket(s.outboundPackets.playersPacketDefinition,F,Y);J.push(H),this._synchronizedPlayerReliablePackets.forEach((q)=>q.push(H))}this._queuedBroadcasts.forEach((H)=>{J.push(H),this._synchronizedPlayerReliablePackets.forEach((q)=>q.push(H))});let V=this._queuedDebugRaycastSynchronizations;if(V.length>0){let H=s.createPacket(s.outboundPackets.physicsDebugRaycastsPacketDefinition,V,Y);J.push(H),this._synchronizedPlayerReliablePackets.forEach((q)=>q.push(H))}}),a1.startSpan({operation:"send_all_packets"},()=>{j5.instance.getConnectedPlayersByWorld(this._world).forEach(($)=>{let W=this._synchronizedPlayerReliablePackets.get($)??J;if(W.length>0)$.connection.send(W);if(Z.length>0)$.connection.send(Z,!1)})}),a1.startSpan({operation:"network_synchronize_cleanup"},()=>{this._queuedBroadcasts=[],this._queuedAudioSynchronizations={},this._queuedBlockSynchronizations={},this._queuedBlockTypeSynchronizations={},this._queuedChunkSynchronizations={},this._queuedDebugRaycastSynchronizations=[],this._queuedEntitySynchronizations={},this._queuedLightSynchronizations={},this._queuedPerPlayerSynchronizations.clear(),this._queuedPerPlayerCameraSynchronizations.clear(),this._queuedPerPlayerUISynchronizations.clear(),this._queuedPerPlayerUIDatasSynchronizations.clear(),this._queuedPlayerSynchronizations={},this._queuedSceneUISynchronizations={},this._queuedWorldSynchronization=void 0,this._loadedSceneUIs.clear(),this._spawnedChunks.clear(),this._spawnedEntities.clear(),this._synchronizedPlayerReliablePackets.clear()})}_subscribeToAudioEvents(){this._world.final("AUDIO.PAUSE",this._onAudioPause),this._world.final("AUDIO.PLAY",this._onAudioPlay),this._world.final("AUDIO.PLAY_RESTART",this._onAudioPlayRestart),this._world.final("AUDIO.SET_ATTACHED_TO_ENTITY",this._onAudioSetAttachedToEntity),this._world.final("AUDIO.SET_CUTOFF_DISTANCE",this._onAudioSetCutoffDistance),this._world.final("AUDIO.SET_DETUNE",this._onAudioSetDetune),this._world.final("AUDIO.SET_DISTORTION",this._onAudioSetDistortion),this._world.final("AUDIO.SET_POSITION",this._onAudioSetPosition),this._world.final("AUDIO.SET_PLAYBACK_RATE",this._onAudioSetPlaybackRate),this._world.final("AUDIO.SET_REFERENCE_DISTANCE",this._onAudioSetReferenceDistance),this._world.final("AUDIO.SET_VOLUME",this._onAudioSetVolume)}_subscribeToBlockTypeRegistryEvents(){this._world.final("BLOCK_TYPE_REGISTRY.REGISTER_BLOCK_TYPE",this._onBlockTypeRegistryRegisterBlockType)}_subscribeToChatEvents(){this._world.final("CHAT.BROADCAST_MESSAGE",this._onChatSendBroadcastMessage),this._world.final("CHAT.PLAYER_MESSAGE",this._onChatSendPlayerMessage)}_subscribeToChunkEvents(){this._world.final("CHUNK.SPAWN",this._onChunkSpawn),this._world.final("CHUNK.DESPAWN",this._onChunkDespawn),this._world.final("CHUNK.SET_BLOCK",this._onChunkSetBlock)}_subscribeToEntityEvents(){this._world.final("ENTITY.SPAWN",this._onEntitySpawn),this._world.final("ENTITY.DESPAWN",this._onEntityDespawn),this._world.final("ENTITY.SET_MODEL_ANIMATIONS_PLAYBACK_RATE",this._onEntitySetModelAnimationsPlaybackRate),this._world.final("ENTITY.SET_MODEL_HIDDEN_NODES",this._onEntitySetModelHiddenNodes),this._world.final("ENTITY.SET_OPACITY",this._onEntitySetOpacity),this._world.final("ENTITY.SET_PARENT",this._onEntitySetParent),this._world.final("ENTITY.SET_TINT_COLOR",this._onEntitySetTintColor),this._world.final("ENTITY.START_MODEL_LOOPED_ANIMATIONS",this._onEntityStartModelLoopedAnimations),this._world.final("ENTITY.START_MODEL_ONESHOT_ANIMATIONS",this._onEntityStartModelOneshotAnimations),this._world.final("ENTITY.STOP_MODEL_ANIMATIONS",this._onEntityStopModelAnimations),this._world.final("ENTITY.UPDATE_POSITION",this._onEntityUpdatePosition),this._world.final("ENTITY.UPDATE_ROTATION",this._onEntityUpdateRotation)}_subscribeToLightEvents(){this._world.final("LIGHT.DESPAWN",this._onLightDespawn),this._world.final("LIGHT.SET_ANGLE",this._onLightSetAngle),this._world.final("LIGHT.SET_ATTACHED_TO_ENTITY",this._onLightSetAttachedToEntity),this._world.final("LIGHT.SET_COLOR",this._onLightSetColor),this._world.final("LIGHT.SET_DISTANCE",this._onLightSetDistance),this._world.final("LIGHT.SET_INTENSITY",this._onLightSetIntensity),this._world.final("LIGHT.SET_OFFSET",this._onLightSetOffset),this._world.final("LIGHT.SET_PENUMBRA",this._onLightSetPenumbra),this._world.final("LIGHT.SET_POSITION",this._onLightSetPosition),this._world.final("LIGHT.SET_TRACKED_ENTITY",this._onLightSetTrackedEntity),this._world.final("LIGHT.SET_TRACKED_POSITION",this._onLightSetTrackedPosition),this._world.final("LIGHT.SPAWN",this._onLightSpawn)}_subscribeToPlayerEvents(){this._world.final("PLAYER.JOINED_WORLD",this._onPlayerJoinedWorld),this._world.final("PLAYER.LEFT_WORLD",this._onPlayerLeftWorld),this._world.final("PLAYER.RECONNECTED_WORLD",this._onPlayerReconnectedWorld),this._world.final("PLAYER.REQUEST_SYNC",this._onPlayerRequestSync)}_subscribeToPlayerCameraEvents(){this._world.final("PLAYER_CAMERA.LOOK_AT_ENTITY",this._onPlayerCameraLookAtEntity),this._world.final("PLAYER_CAMERA.LOOK_AT_POSITION",this._onPlayerCameraLookAtPosition),this._world.final("PLAYER_CAMERA.SET_ATTACHED_TO_ENTITY",this._onPlayerCameraSetAttachedToEntity),this._world.final("PLAYER_CAMERA.SET_ATTACHED_TO_POSITION",this._onPlayerCameraSetAttachedToPosition),this._world.final("PLAYER_CAMERA.SET_FILM_OFFSET",this._onPlayerCameraSetFilmOffset),this._world.final("PLAYER_CAMERA.SET_FORWARD_OFFSET",this._onPlayerCameraSetForwardOffset),this._world.final("PLAYER_CAMERA.SET_FOV",this._onPlayerCameraSetFov),this._world.final("PLAYER_CAMERA.SET_MODEL_HIDDEN_NODES",this._onPlayerCameraSetModelHiddenNodes),this._world.final("PLAYER_CAMERA.SET_MODE",this._onPlayerCameraSetMode),this._world.final("PLAYER_CAMERA.SET_OFFSET",this._onPlayerCameraSetOffset),this._world.final("PLAYER_CAMERA.SET_TRACKED_ENTITY",this._onPlayerCameraSetTrackedEntity),this._world.final("PLAYER_CAMERA.SET_TRACKED_POSITION",this._onPlayerCameraSetTrackedPosition),this._world.final("PLAYER_CAMERA.SET_ZOOM",this._onPlayerCameraSetZoom)}_subscribeToPlayerUIEvents(){this._world.final("PLAYER_UI.LOAD",this._onPlayerUILoad),this._world.final("PLAYER_UI.LOCK_POINTER",this._onPlayerUILockPointer),this._world.final("PLAYER_UI.SEND_DATA",this._onPlayerUISendData)}_subscribeToSceneUIEvents(){this._world.final("SCENE_UI.LOAD",this._onSceneUILoad),this._world.final("SCENE_UI.SET_ATTACHED_TO_ENTITY",this._onSceneUISetAttachedToEntity),this._world.final("SCENE_UI.SET_OFFSET",this._onSceneUISetOffset),this._world.final("SCENE_UI.SET_POSITION",this._onSceneUISetPosition),this._world.final("SCENE_UI.SET_STATE",this._onSceneUISetState),this._world.final("SCENE_UI.SET_VIEW_DISTANCE",this._onSceneUISetViewDistance),this._world.final("SCENE_UI.UNLOAD",this._onSceneUIUnload)}_subscribeToSimulationEvents(){this._world.final("SIMULATION.DEBUG_RAYCAST",this._onSimulationDebugRaycast),this._world.final("SIMULATION.DEBUG_RENDER",this._onSimulationDebugRender)}_subscribeToWorldEvents(){this._world.final("WORLD.SET_AMBIENT_LIGHT_COLOR",this._onWorldSetAmbientLightColor),this._world.final("WORLD.SET_AMBIENT_LIGHT_INTENSITY",this._onWorldSetAmbientLightIntensity),this._world.final("WORLD.SET_DIRECTIONAL_LIGHT_COLOR",this._onWorldSetDirectionalLightColor),this._world.final("WORLD.SET_DIRECTIONAL_LIGHT_INTENSITY",this._onWorldSetDirectionalLightIntensity),this._world.final("WORLD.SET_DIRECTIONAL_LIGHT_POSITION",this._onWorldSetDirectionalLightPosition)}_onAudioPause=(J)=>{let Z=this._createOrGetQueuedAudioSync(J.audio);Z.pa=!0,delete Z.pl,delete Z.r};_onAudioPlay=(J)=>{let Z=J.audio.serialize();Z.pl=!0,delete Z.pa,delete Z.r,this._queuedAudioSynchronizations[Z.i]=Z};_onAudioPlayRestart=(J)=>{let Z=this._createOrGetQueuedAudioSync(J.audio);Z.r=!0,delete Z.pa,delete Z.pl,this._queuedAudioSynchronizations[Z.i]=Z};_onAudioSetAttachedToEntity=(J)=>{let Z=this._createOrGetQueuedAudioSync(J.audio);Z.e=J.entity?J.entity.id:void 0,Z.p=J.entity?void 0:Z.p};_onAudioSetCutoffDistance=(J)=>{let Z=this._createOrGetQueuedAudioSync(J.audio);Z.cd=J.cutoffDistance};_onAudioSetDetune=(J)=>{let Z=this._createOrGetQueuedAudioSync(J.audio);Z.de=J.detune};_onAudioSetDistortion=(J)=>{let Z=this._createOrGetQueuedAudioSync(J.audio);Z.di=J.distortion};_onAudioSetPosition=(J)=>{let Z=this._createOrGetQueuedAudioSync(J.audio);Z.e=J.position?void 0:Z.e,Z.p=J.position?b0.serializeVector(J.position):void 0};_onAudioSetPlaybackRate=(J)=>{let Z=this._createOrGetQueuedAudioSync(J.audio);Z.pr=J.playbackRate};_onAudioSetReferenceDistance=(J)=>{let Z=this._createOrGetQueuedAudioSync(J.audio);Z.rd=J.referenceDistance};_onAudioSetVolume=(J)=>{let Z=this._createOrGetQueuedAudioSync(J.audio);Z.v=J.volume};_onBlockTypeRegistryRegisterBlockType=(J)=>{let Z=J.blockType.serialize();this._queuedBlockTypeSynchronizations[J.blockType.id]=Z};_onChatSendBroadcastMessage=(J)=>{let{player:Z,message:Y,color:$}=J;this._queuedBroadcasts.push(s.createPacket(s.outboundPackets.chatMessagesPacketDefinition,[{m:Y,c:$,p:Z?.id}],this._world.loop.currentTick))};_onChatSendPlayerMessage=(J)=>{let{player:Z,message:Y,color:$}=J,W=this._queuedPerPlayerSynchronizations.get(Z)??[];W.push(s.createPacket(s.outboundPackets.chatMessagesPacketDefinition,[{m:Y,c:$}],this._world.loop.currentTick)),this._queuedPerPlayerSynchronizations.set(Z,W)};_onChunkSpawn=(J)=>{let Z=this._createOrGetQueuedChunkSync(J.chunk);Z.b=Array.from(J.chunk.blocks),Z.rm=void 0,this._spawnedChunks.add(Z.c.join(","))};_onChunkDespawn=(J)=>{let Z=this._createOrGetQueuedChunkSync(J.chunk),Y=Z.c.join(",");if(this._spawnedChunks.has(Y))delete this._queuedChunkSynchronizations[Y],this._spawnedChunks.delete(Y);else Z.rm=!0};_onChunkSetBlock=(J)=>{let Z=this._createOrGetQueuedBlockSync(J.globalCoordinate);Z.i=J.blockTypeId};_onEntitySetModelAnimationsPlaybackRate=(J)=>{let Z=this._createOrGetQueuedEntitySync(J.entity);Z.ap=J.playbackRate};_onEntitySpawn=(J)=>{let Z=J.entity.serialize();this._queuedEntitySynchronizations[Z.i]=Z,this._spawnedEntities.add(Z.i)};_onEntityDespawn=(J)=>{let Z=this._createOrGetQueuedEntitySync(J.entity);if(this._spawnedEntities.has(Z.i))delete this._queuedEntitySynchronizations[Z.i],this._spawnedEntities.delete(Z.i);else Z.rm=!0};_onEntitySetModelHiddenNodes=(J)=>{let Z=this._createOrGetQueuedEntitySync(J.entity);Z.h=Array.from(J.modelHiddenNodes)};_onEntitySetOpacity=(J)=>{let Z=this._createOrGetQueuedEntitySync(J.entity);Z.o=J.opacity};_onEntitySetParent=(J)=>{let Z=this._createOrGetQueuedEntitySync(J.entity);Z.pe=J.parent?J.parent.id:void 0,Z.pn=J.parentNodeName};_onEntitySetTintColor=(J)=>{let Z=this._createOrGetQueuedEntitySync(J.entity);Z.t=J.tintColor?b0.serializeRgbColor(J.tintColor):void 0};_onEntityStartModelLoopedAnimations=(J)=>{let Z=this._createOrGetQueuedEntitySync(J.entity);if(Z.al=Array.from(new Set([...Z.al??[],...J.animations])),Z.as)Z.as=Z.as.filter((Y)=>!J.animations.has(Y)).filter(Boolean)};_onEntityStartModelOneshotAnimations=(J)=>{let Z=this._createOrGetQueuedEntitySync(J.entity);if(Z.ao=Array.from(new Set([...Z.ao??[],...J.animations])),Z.as)Z.as=Z.as.filter((Y)=>!J.animations.has(Y)).filter(Boolean)};_onEntityStopModelAnimations=(J)=>{let Z=this._createOrGetQueuedEntitySync(J.entity);if(Z.al)Z.al=Z.al.filter((Y)=>!J.animations.has(Y)).filter(Boolean);if(Z.ao)Z.ao=Z.ao.filter((Y)=>!J.animations.has(Y)).filter(Boolean);Z.as=Array.from(new Set([...Z.as??[],...J.animations]))};_onEntityUpdateRotation=(J)=>{let Z=this._createOrGetQueuedEntitySync(J.entity);Z.r=[J.rotation.x,J.rotation.y,J.rotation.z,J.rotation.w]};_onEntityUpdatePosition=(J)=>{let Z=this._createOrGetQueuedEntitySync(J.entity);Z.p=[J.position.x,J.position.y,J.position.z]};_onLightDespawn=(J)=>{let Z=this._createOrGetQueuedLightSync(J.light);Z.rm=!0};_onLightSetAngle=(J)=>{let Z=this._createOrGetQueuedLightSync(J.light);Z.a=J.angle};_onLightSetAttachedToEntity=(J)=>{let Z=this._createOrGetQueuedLightSync(J.light);Z.e=J.entity?J.entity.id:void 0,Z.p=J.entity?void 0:Z.p};_onLightSetColor=(J)=>{let Z=this._createOrGetQueuedLightSync(J.light);Z.c=b0.serializeRgbColor(J.color)};_onLightSetDistance=(J)=>{let Z=this._createOrGetQueuedLightSync(J.light);Z.d=J.distance};_onLightSetIntensity=(J)=>{let Z=this._createOrGetQueuedLightSync(J.light);Z.n=J.intensity};_onLightSetOffset=(J)=>{let Z=this._createOrGetQueuedLightSync(J.light);Z.o=J.offset?b0.serializeVector(J.offset):void 0};_onLightSetPenumbra=(J)=>{let Z=this._createOrGetQueuedLightSync(J.light);Z.pe=J.penumbra};_onLightSetPosition=(J)=>{let Z=this._createOrGetQueuedLightSync(J.light);Z.p=J.position?b0.serializeVector(J.position):void 0,Z.e=J.position?void 0:Z.e};_onLightSetTrackedEntity=(J)=>{let Z=this._createOrGetQueuedLightSync(J.light);Z.te=J.entity?J.entity.id:void 0,Z.tp=J.entity?void 0:Z.tp};_onLightSetTrackedPosition=(J)=>{let Z=this._createOrGetQueuedLightSync(J.light);Z.tp=J.position?b0.serializeVector(J.position):void 0,Z.te=J.position?void 0:Z.te};_onLightSpawn=(J)=>{let Z=J.light.serialize();this._queuedLightSynchronizations[Z.i]=Z};_onPlayerCameraLookAtEntity=(J)=>{let Z=this._createOrGetQueuedPlayerCameraSync(J.playerCamera);Z.pl=b0.serializeVector(J.entity.position),delete Z.et,delete Z.pt};_onPlayerCameraLookAtPosition=(J)=>{let Z=this._createOrGetQueuedPlayerCameraSync(J.playerCamera);Z.pl=J.position?b0.serializeVector(J.position):void 0,delete Z.et,delete Z.pt};_onPlayerCameraSetAttachedToEntity=(J)=>{let Z=this._createOrGetQueuedPlayerCameraSync(J.playerCamera);Z.e=J.entity.id,delete Z.p};_onPlayerCameraSetAttachedToPosition=(J)=>{let Z=this._createOrGetQueuedPlayerCameraSync(J.playerCamera);Z.p=J.position?b0.serializeVector(J.position):void 0,delete Z.e};_onPlayerCameraSetFilmOffset=(J)=>{let Z=this._createOrGetQueuedPlayerCameraSync(J.playerCamera);Z.fo=J.filmOffset};_onPlayerCameraSetForwardOffset=(J)=>{let Z=this._createOrGetQueuedPlayerCameraSync(J.playerCamera);Z.ffo=J.forwardOffset};_onPlayerCameraSetFov=(J)=>{let Z=this._createOrGetQueuedPlayerCameraSync(J.playerCamera);Z.fv=J.fov};_onPlayerCameraSetModelHiddenNodes=(J)=>{let Z=this._createOrGetQueuedPlayerCameraSync(J.playerCamera);Z.h=Array.from(J.modelHiddenNodes)};_onPlayerCameraSetMode=(J)=>{let Z=this._createOrGetQueuedPlayerCameraSync(J.playerCamera);Z.m=J.mode};_onPlayerCameraSetOffset=(J)=>{let Z=this._createOrGetQueuedPlayerCameraSync(J.playerCamera);Z.o=J.offset?b0.serializeVector(J.offset):void 0};_onPlayerCameraSetTrackedEntity=(J)=>{let Z=this._createOrGetQueuedPlayerCameraSync(J.playerCamera);Z.et=J.entity?J.entity.id:void 0,delete Z.pl,delete Z.pt};_onPlayerCameraSetTrackedPosition=(J)=>{let Z=this._createOrGetQueuedPlayerCameraSync(J.playerCamera);Z.pt=J.position?b0.serializeVector(J.position):void 0,delete Z.et,delete Z.pl};_onPlayerCameraSetZoom=(J)=>{let Z=this._createOrGetQueuedPlayerCameraSync(J.playerCamera);Z.z=J.zoom};_onPlayerJoinedWorld=(J)=>{let{player:Z}=J,Y=this._queuedPerPlayerSynchronizations.get(Z)??[];Y.push(s.createPacket(s.outboundPackets.worldPacketDefinition,this._world.serialize(),this._world.loop.currentTick)),Y.push(s.createPacket(s.outboundPackets.blockTypesPacketDefinition,this._world.blockTypeRegistry.serialize(),this._world.loop.currentTick)),Y.push(s.createPacket(s.outboundPackets.chunksPacketDefinition,this._world.chunkLattice.getAllChunks().map((W)=>W.serialize()),this._world.loop.currentTick)),Y.push(s.createPacket(s.outboundPackets.entitiesPacketDefinition,this._world.entityManager.getAllEntities().map((W)=>{if(Z.camera.attachedToEntity===void 0&&W instanceof t4&&W.player===Z)Z.camera.setAttachedToEntity(W);return W.serialize()}),this._world.loop.currentTick)),Y.push(s.createPacket(s.outboundPackets.audiosPacketDefinition,this._world.audioManager.getAllAudios().map((W)=>W.serialize()),this._world.loop.currentTick)),Y.push(s.createPacket(s.outboundPackets.lightsPacketDefinition,this._world.lightManager.getAllLights().map((W)=>W.serialize()),this._world.loop.currentTick)),Y.push(s.createPacket(s.outboundPackets.sceneUIsPacketDefinition,this._world.sceneUIManager.getAllSceneUIs().map((W)=>W.serialize()),this._world.loop.currentTick)),Y.push(s.createPacket(s.outboundPackets.playersPacketDefinition,j5.instance.getConnectedPlayers().map((W)=>W.serialize()),this._world.loop.currentTick));let $=this._createOrGetQueuedPlayerCameraSync(Z.camera);this._queuedPerPlayerCameraSynchronizations.set(Z,{...Z.camera.serialize(),...$}),this._queuedPerPlayerSynchronizations.set(Z,Y),this._queuedPlayerSynchronizations[Z.id]=Z.serialize()};_onPlayerLeftWorld=(J)=>{let Z=this._createOrGetQueuedPlayerSync(J.player);Z.rm=!0};_onPlayerReconnectedWorld=(J)=>{this._onPlayerJoinedWorld(J)};_onPlayerRequestSync=(J)=>{J.player.connection.send([s.createPacket(s.outboundPackets.syncResponsePacketDefinition,{r:J.receivedAt,s:Date.now(),p:performance.now()-J.receivedAtMs,n:this._world.loop.nextTickMs},this._world.loop.currentTick)])};_onPlayerUILoad=(J)=>{let Z=this._createOrGetQueuedPlayerUISync(J.playerUI);Z.u=J.htmlUri};_onPlayerUILockPointer=(J)=>{let Z=this._createOrGetQueuedPlayerUISync(J.playerUI);Z.p=J.lock};_onPlayerUISendData=(J)=>{this._createOrGetQueuedPlayerUIDatasSync(J.playerUI).push(J.data)};_onSceneUILoad=(J)=>{let Z=J.sceneUI.serialize();this._queuedSceneUISynchronizations[Z.i]=Z,this._loadedSceneUIs.add(Z.i)};_onSceneUISetAttachedToEntity=(J)=>{let Z=this._createOrGetQueuedSceneUISync(J.sceneUI);Z.e=J.entity?J.entity.id:void 0,Z.p=J.entity?void 0:Z.p};_onSceneUISetOffset=(J)=>{let Z=this._createOrGetQueuedSceneUISync(J.sceneUI);Z.o=J.offset?b0.serializeVector(J.offset):void 0};_onSceneUISetPosition=(J)=>{let Z=this._createOrGetQueuedSceneUISync(J.sceneUI);Z.p=J.position?b0.serializeVector(J.position):void 0,Z.e=J.position?void 0:Z.e};_onSceneUISetState=(J)=>{let Z=this._createOrGetQueuedSceneUISync(J.sceneUI);Z.s=J.state};_onSceneUISetViewDistance=(J)=>{let Z=this._createOrGetQueuedSceneUISync(J.sceneUI);Z.v=J.viewDistance};_onSceneUIUnload=(J)=>{let Z=this._createOrGetQueuedSceneUISync(J.sceneUI);if(this._loadedSceneUIs.has(Z.i))delete this._queuedSceneUISynchronizations[Z.i],this._loadedSceneUIs.delete(Z.i);else Z.rm=!0};_onSimulationDebugRaycast=(J)=>{this._queuedDebugRaycastSynchronizations.push(b0.serializePhysicsDebugRaycast(J))};_onSimulationDebugRender=(J)=>{this._queuedBroadcasts.push(s.createPacket(s.outboundPackets.physicsDebugRenderPacketDefinition,{v:Array.from(J.vertices),c:Array.from(J.colors)},this._world.loop.currentTick))};_onWorldSetAmbientLightColor=(J)=>{let Z=this._createOrGetQueuedWorldSync(J.world);Z.ac=b0.serializeRgbColor(J.color)};_onWorldSetAmbientLightIntensity=(J)=>{let Z=this._createOrGetQueuedWorldSync(J.world);Z.ai=J.intensity};_onWorldSetDirectionalLightColor=(J)=>{let Z=this._createOrGetQueuedWorldSync(J.world);Z.dc=b0.serializeRgbColor(J.color)};_onWorldSetDirectionalLightIntensity=(J)=>{let Z=this._createOrGetQueuedWorldSync(J.world);Z.di=J.intensity};_onWorldSetDirectionalLightPosition=(J)=>{let Z=this._createOrGetQueuedWorldSync(J.world);Z.dp=b0.serializeVector(J.position)};_createOrGetQueuedAudioSync(J){if(J.id===void 0)f.fatalError("NetworkSynchronizer._createOrGetQueuedAudioSync(): Audio has no id!");return this._queuedAudioSynchronizations[J.id]??={i:J.id}}_createOrGetQueuedBlockSync(J){let{x:Z,y:Y,z:$}=J;return this._queuedBlockSynchronizations[`${Z},${Y},${$}`]??={i:0,c:[Z,Y,$]}}_createOrGetQueuedChunkSync(J){if(!J.originCoordinate)f.fatalError("NetworkSynchronizer._createOrGetQueuedChunkSync(): Chunk has no origin coordinate!");let{x:Z,y:Y,z:$}=J.originCoordinate;return this._queuedChunkSynchronizations[`${Z},${Y},${$}`]??={c:[Z,Y,$]}}_createOrGetQueuedEntitySync(J){if(J.id===void 0)f.fatalError("NetworkSynchronizer._createOrGetQueuedEntitySync(): Entity has no id!");return this._queuedEntitySynchronizations[J.id]??={i:J.id}}_createOrGetQueuedLightSync(J){if(J.id===void 0)f.fatalError("NetworkSynchronizer._createOrGetQueuedLightSync(): Light has no id!");return this._queuedLightSynchronizations[J.id]??={i:J.id}}_createOrGetQueuedPlayerSync(J){if(J.id===void 0)f.fatalError("NetworkSynchronizer._createOrGetQueuedPlayerSync(): Player has no id!");return this._queuedPlayerSynchronizations[J.id]??={i:J.id}}_createOrGetQueuedPlayerCameraSync(J){let Z=this._queuedPerPlayerCameraSynchronizations.get(J.player);if(!Z)Z={},this._queuedPerPlayerCameraSynchronizations.set(J.player,Z);return Z}_createOrGetQueuedPlayerUISync(J){let Z=this._queuedPerPlayerUISynchronizations.get(J.player);if(!Z)Z={},this._queuedPerPlayerUISynchronizations.set(J.player,Z);return Z}_createOrGetQueuedPlayerUIDatasSync(J){let Z=this._queuedPerPlayerUIDatasSynchronizations.get(J.player);if(!Z)Z=[],this._queuedPerPlayerUIDatasSynchronizations.set(J.player,Z);return Z}_createOrGetQueuedSceneUISync(J){if(J.id===void 0)f.fatalError("NetworkSynchronizer._createOrGetQueuedSceneUISync(): SceneUI has no id!");return this._queuedSceneUISynchronizations[J.id]??={i:J.id}}_createOrGetQueuedWorldSync(J){if(J.id!==this._world.id)f.fatalError("NetworkSynchronizer._createOrGetQueuedWorldSync(): World does not match this network synchronizer world!");return this._queuedWorldSynchronization??={i:J.id}}_createOrGetSynchronizedPlayerReliablePackets(J,Z){let Y=this._synchronizedPlayerReliablePackets.get(J);if(!Y)Y=[...Z],this._synchronizedPlayerReliablePackets.set(J,Y);return Y}}class VV{_sceneUIs=new Map;_nextSceneUIId=1;_world;constructor(J){this._world=J}get world(){return this._world}getAllSceneUIs(){return Array.from(this._sceneUIs.values())}getAllEntityAttachedSceneUIs(J){return this.getAllSceneUIs().filter((Z)=>Z.attachedToEntity===J)}getSceneUIById(J){return this._sceneUIs.get(J)}registerSceneUI(J){if(J.id!==void 0)return J.id;let Z=this._nextSceneUIId;return this._sceneUIs.set(Z,J),this._nextSceneUIId++,Z}unloadEntityAttachedSceneUIs(J){this.getAllEntityAttachedSceneUIs(J).forEach((Z)=>{Z.unload()})}unregisterSceneUI(J){if(J.id===void 0)return;this._sceneUIs.delete(J.id)}}class HV{_accumulatorMs=0;_targetTicksPerSecond;_fixedTimestepMs;_fixedTimestepS;_nextTickMs=0;_lastLoopTimeMs=0;_tickFunction;_tickErrorCallback;_tickHandle=null;constructor(J,Z,Y){this._targetTicksPerSecond=J,this._fixedTimestepS=Math.fround(1/J),this._fixedTimestepMs=Math.fround(this._fixedTimestepS*1000),this._tickFunction=Z,this._tickErrorCallback=Y}get targetTicksPerSecond(){return this._targetTicksPerSecond}get fixedTimestepMs(){return this._fixedTimestepMs}get fixedTimestepS(){return this._fixedTimestepS}get nextTickMs(){return this._nextTickMs}start(){if(this._tickHandle)return f.warning("Ticker.start(): ticker already running.");this._lastLoopTimeMs=performance.now();let J=()=>{a1.startSpan({operation:"ticker_tick"},()=>{let Z=performance.now(),Y=Z-this._lastLoopTimeMs;if(this._lastLoopTimeMs=Z,Y>250)Y=250;this._accumulatorMs+=Y;while(this._accumulatorMs>=this._fixedTimestepMs)this._tick(this._fixedTimestepMs),this._accumulatorMs-=this._fixedTimestepMs;this._nextTickMs=this._fixedTimestepMs-this._accumulatorMs}),this._tickHandle=setTimeout(J,0)};J()}stop(){if(!this._tickHandle)return f.warning("Ticker.stop(): ticker not running.");clearTimeout(this._tickHandle),this._tickHandle=null}_tick(J){try{this._tickFunction(J)}catch(Z){if(Z instanceof Error&&this._tickErrorCallback)this._tickErrorCallback(Z);else f.warning(`Ticker._tick(): tick callback threw an error, but it was not an instance of Error. Error: ${Z}`)}}}var R41;((Q)=>{Q.START="WORLD_LOOP.START";Q.STOP="WORLD_LOOP.STOP";Q.TICK_START="WORLD_LOOP.TICK_START";Q.TICK_END="WORLD_LOOP.TICK_END";Q.TICK_ERROR="WORLD_LOOP.TICK_ERROR"})(R41||={});class qV extends S0{_currentTick=0;_ticker;_world;constructor(J,Z=CA){super();this._ticker=new HV(Z,this._tick,this._onTickError),this._world=J}get currentTick(){return this._currentTick}get nextTickMs(){return this._ticker.nextTickMs}get timestepS(){return this._ticker.fixedTimestepS}get world(){return this._world}start(){this._ticker.start(),this.emitWithWorld(this._world,"WORLD_LOOP.START",{worldLoop:this})}stop(){this._ticker.stop(),this.emitWithWorld(this._world,"WORLD_LOOP.STOP",{worldLoop:this})}_tick=(J)=>{this.emitWithWorld(this._world,"WORLD_LOOP.TICK_START",{worldLoop:this,tickDeltaMs:J});let Z=performance.now();a1.startSpan({operation:"world_tick",attributes:{serverPlayerCount:j5.instance.playerCount,targetTickRate:this._ticker.targetTicksPerSecond,targetTickRateMs:this._ticker.fixedTimestepMs,worldId:this._world.id,worldName:this._world.name,worldChunkCount:this._world.chunkLattice.chunkCount,worldEntityCount:this._world.entityManager.entityCount,worldLoopTick:this._currentTick}},()=>{a1.startSpan({operation:"chunks_update"},()=>this._world.chunkLattice.updateChunks()),a1.startSpan({operation:"entities_tick"},()=>this._world.entityManager.tickEntities(J)),a1.startSpan({operation:"simulation_step"},()=>this._world.simulation.step(J)),a1.startSpan({operation:"entities_emit_updates"},()=>this._world.entityManager.checkAndEmitUpdates()),a1.startSpan({operation:"network_synchronize"},()=>this._world.networkSynchronizer.synchronize())}),this._currentTick++,this.emitWithWorld(this._world,"WORLD_LOOP.TICK_END",{worldLoop:this,tickDurationMs:performance.now()-Z})};_onTickError=(J)=>{f.error(`WorldLoop._onTickError(): Error: ${J}`),this.emitWithWorld(this._world,"WORLD_LOOP.TICK_ERROR",{worldLoop:this,error:J})}}var kA;((K)=>{K.SET_AMBIENT_LIGHT_COLOR="WORLD.SET_AMBIENT_LIGHT_COLOR";K.SET_AMBIENT_LIGHT_INTENSITY="WORLD.SET_AMBIENT_LIGHT_INTENSITY";K.SET_DIRECTIONAL_LIGHT_COLOR="WORLD.SET_DIRECTIONAL_LIGHT_COLOR";K.SET_DIRECTIONAL_LIGHT_INTENSITY="WORLD.SET_DIRECTIONAL_LIGHT_INTENSITY";K.SET_DIRECTIONAL_LIGHT_POSITION="WORLD.SET_DIRECTIONAL_LIGHT_POSITION";K.START="WORLD.START";K.STOP="WORLD.STOP"})(kA||={});class UV extends S0{_id;_ambientLightColor;_ambientLightIntensity;_directionalLightColor;_directionalLightIntensity;_directionalLightPosition;_name;_skyboxUri;_audioManager;_blockTypeRegistry;_chatManager;_chunkLattice;_entityManager;_lightManager;_loop;_networkSynchronizer;_sceneUIManager;_simulation;_tag;constructor(J){super();this._id=J.id,this._ambientLightColor=J.ambientLightColor??{r:255,g:255,b:255},this._ambientLightIntensity=J.ambientLightIntensity??1,this._directionalLightColor=J.directionalLightColor??{r:255,g:255,b:255},this._directionalLightIntensity=J.directionalLightIntensity??3,this._directionalLightPosition=J.directionalLightPosition??{x:100,y:150,z:100},this._name=J.name,this._skyboxUri=J.skyboxUri,this._tag=J.tag,this._audioManager=new UK(this),this._blockTypeRegistry=new jG(this),this._chatManager=new wV(this),this._chunkLattice=new ZV(this),this._entityManager=new QV(this),this._lightManager=new XV(this),this._loop=new qV(this,J.tickRate),this._networkSynchronizer=new vO(this),this._sceneUIManager=new VV(this),this._simulation=new FV(this,J.tickRate,J.gravity)}get id(){return this._id}get ambientLightColor(){return this._ambientLightColor}get ambientLightIntensity(){return this._ambientLightIntensity}get directionalLightColor(){return this._directionalLightColor}get directionalLightIntensity(){return this._directionalLightIntensity}get directionalLightPosition(){return this._directionalLightPosition}get name(){return this._name}get skyboxUri(){return this._skyboxUri}get audioManager(){return this._audioManager}get tag(){return this._tag}get blockTypeRegistry(){return this._blockTypeRegistry}get chatManager(){return this._chatManager}get chunkLattice(){return this._chunkLattice}get entityManager(){return this._entityManager}get lightManager(){return this._lightManager}get loop(){return this._loop}get networkSynchronizer(){return this._networkSynchronizer}get sceneUIManager(){return this._sceneUIManager}get simulation(){return this._simulation}loadMap(J){if(this.chunkLattice.clear(),J.blockTypes)for(let Z of J.blockTypes)this.blockTypeRegistry.registerGenericBlockType({id:Z.id,isLiquid:Z.isLiquid,name:Z.name,textureUri:Z.textureUri});if(J.blocks)for(let[Z,Y]of Object.entries(J.blocks)){let[$,W,Q]=Z.split(",").map(Number);this.chunkLattice.setBlock({x:$,y:W,z:Q},Y)}if(J.entities)for(let[Z,Y]of Object.entries(J.entities)){let[$,W,Q]=Z.split(",").map(Number);new _8(Y).spawn(this,{x:$,y:W,z:Q})}}setAmbientLightColor(J){this._ambientLightColor=J,this.emit("WORLD.SET_AMBIENT_LIGHT_COLOR",{world:this,color:J})}setAmbientLightIntensity(J){this._ambientLightIntensity=J,this.emit("WORLD.SET_AMBIENT_LIGHT_INTENSITY",{world:this,intensity:J})}setDirectionalLightColor(J){this._directionalLightColor=J,this.emit("WORLD.SET_DIRECTIONAL_LIGHT_COLOR",{world:this,color:J})}setDirectionalLightIntensity(J){this._directionalLightIntensity=J,this.emit("WORLD.SET_DIRECTIONAL_LIGHT_INTENSITY",{world:this,intensity:J})}setDirectionalLightPosition(J){this._directionalLightPosition=J,this.emit("WORLD.SET_DIRECTIONAL_LIGHT_POSITION",{world:this,position:J})}start(){this._loop.start(),this.emit("WORLD.START",{world:this,startedAtMs:Date.now()})}stop(){this._loop.stop(),this.emit("WORLD.STOP",{world:this,stoppedAtMs:Date.now()})}serialize(){return b0.serializeWorld(this)}}var Cr8=1,N41;((Z)=>Z.WORLD_CREATED="WORLD_MANAGER.WORLD_CREATED")(N41||={});class KK{static instance=new KK;_worlds=new Map;_nextWorldId=1;createWorld(J){let Z=new UV({...J,id:this._nextWorldId++});return Z.start(),this._worlds.set(Z.id,Z),n8.emit("WORLD_MANAGER.WORLD_CREATED",{world:Z}),Z}getAllWorlds(){return Array.from(this._worlds.values())}getDefaultWorld(){return this._worlds.get(Cr8)??this.createWorld({name:"Default World",skyboxUri:"skyboxes/partly-cloudy"})}getWorldsByTag(J){let Z=[];return this._worlds.forEach((Y)=>{if(Y.tag===J)Z.push(Y)}),Z}getWorld(J){return this._worlds.get(J)}}var P41;((Y)=>{Y.START="GAMESERVER.START";Y.STOP="GAMESERVER.STOP"})(P41||={});function Tr8(J){s0.init().then(()=>{return JJ.instance.modelRegistry.preloadModels()}).then(()=>{J(JJ.instance.worldManager.getDefaultWorld()),JJ.instance.start()}).catch((Z)=>{f.fatalError(`Failed to initialize the game engine, exiting. Error: ${Z}`)})}class JJ{static _instance;_modelRegistry=u5.instance;_playerManager=j5.instance;_socket=gJ.instance;_worldManager=KK.instance;_webServer=cQ.instance;constructor(){}static get instance(){if(!this._instance)this._instance=new JJ;return this._instance}get modelRegistry(){return this._modelRegistry}get playerManager(){return this._playerManager}get socket(){return this._socket}get webServer(){return this._webServer}get worldManager(){return this._worldManager}start(){n8.emit("GAMESERVER.START",{startedAtMs:performance.now()}),this._webServer.start()}}class QW{static instance=new QW;constructor(){}async getGlobalData(J){let Z=await I4.instance.getData(J);if(!Z||Z.error){if(Z?.error)f.warning(`PersistenceManager.getGlobalData(): ${Z.error.message}`);return}return Z}async getPlayerData(J){let Z=await I4.instance.getData(this._getPlayerKey(J));if(!Z||Z.error){if(Z?.error)f.warning(`PersistenceManager.getPlayerData(): ${Z.error.message}`);return}return Z}async setGlobalData(J,Z){let Y=await I4.instance.setData(J,Z);if(!Y||Y.error){if(Y?.error)f.warning(`PersistenceManager.setGlobalData(): ${Y.error.message}`);return}return Y}async setPlayerData(J,Z){let Y=await I4.instance.setData(this._getPlayerKey(J),Z);if(!Y||Y.error){if(Y?.error)f.warning(`PersistenceManager.setPlayerData(): ${Y.error.message}`);return}return Y}_getPlayerKey(J){return`player-${J.id}`}}var j41=["w","a","s","d","sp","sh","tb","ml","mr","q","e","r","f","z","x","c","v","1","2","3","4","5","6","7","8","9","0"],WV;((Q)=>{Q.CHAT_MESSAGE_SEND="PLAYER.CHAT_MESSAGE_SEND";Q.JOINED_WORLD="PLAYER.JOINED_WORLD";Q.LEFT_WORLD="PLAYER.LEFT_WORLD";Q.RECONNECTED_WORLD="PLAYER.RECONNECTED_WORLD";Q.REQUEST_SYNC="PLAYER.REQUEST_SYNC"})(WV||={});class XK extends S0{static _devNextPlayerId=1;id;username;profilePictureUrl;camera;connection;ui;_input={};_lastUnreliableInputSequenceNumber=0;_world;constructor(J,Z){super();this.id=Z?.user.id??`player-${XK._devNextPlayerId++}`,this.username=Z?.user.username??this.id,this.profilePictureUrl=Z?.user.profilePictureURL??void 0,this.camera=new KV(this),this.connection=J,this.ui=new GV(this),J.onPacket(s.PacketId.CHAT_MESSAGE_SEND,this._onChatMessageSendPacket),J.onPacket(s.PacketId.DEBUG_CONFIG,this._onDebugConfigPacket),J.onPacket(s.PacketId.INPUT,this._onInputPacket),J.onPacket(s.PacketId.SYNC_REQUEST,this._onSyncRequestPacket),J.onPacket(s.PacketId.UI_DATA_SEND,this._onUIDataSendPacket),this.joinWorld(JJ.instance.worldManager.getDefaultWorld())}get input(){return this._input}get world(){return this._world}disconnect(){this._leaveWorld(),this.connection.disconnect()}async getPersistedData(){return QW.instance.getPlayerData(this)}joinWorld(J){if(this._world)this.disconnect();this._world=J,this.emitWithWorld(this._world,"PLAYER.JOINED_WORLD",{player:this,world:this._world})}reconnect(){if(!this._world)return;this._lastUnreliableInputSequenceNumber=0,this.emitWithWorld(this._world,"PLAYER.RECONNECTED_WORLD",{player:this,world:this._world})}resetInputs(){this._input={}}async setPersistedData(J){return QW.instance.setPlayerData(this,J)}serialize(){return b0.serializePlayer(this)}_leaveWorld(){if(!this._world)return;this.emitWithWorld(this._world,"PLAYER.LEFT_WORLD",{player:this,world:this._world}),this._world=void 0}_onChatMessageSendPacket=(J)=>{if(this._world)this.emitWithWorld(this._world,"PLAYER.CHAT_MESSAGE_SEND",{player:this,message:J[1].m})};_onDebugConfigPacket=(J)=>{console.log(J)};_onInputPacket=(J)=>{let Z=J[1];if(Z.sq!==void 0){if(Z.sq<this._lastUnreliableInputSequenceNumber)return;this._lastUnreliableInputSequenceNumber=Z.sq}if(j41.forEach((Y)=>{let $=Y;if(Z[$]!==void 0)this._input[$]=Boolean(Z[$])}),Z.cp!==void 0)this.camera.setOrientationPitch(Z.cp);if(Z.cy!==void 0)this.camera.setOrientationYaw(Z.cy)};_onSyncRequestPacket=()=>{if(this._world)this.emitWithWorld(this._world,"PLAYER.REQUEST_SYNC",{player:this,receivedAt:Date.now(),receivedAtMs:performance.now()})};_onUIDataSendPacket=(J)=>{this.ui.emit("PLAYER_UI.DATA",{playerUI:this.ui,data:J[1]})}}var EA;((Y)=>{Y.BROADCAST_MESSAGE="CHAT.BROADCAST_MESSAGE";Y.PLAYER_MESSAGE="CHAT.PLAYER_MESSAGE"})(EA||={});class wV extends S0{_commandCallbacks={};_world;constructor(J){super();this._world=J,this._subscribeToPlayerEvents()}registerCommand(J,Z){this._commandCallbacks[J]=Z}unregisterCommand(J){delete this._commandCallbacks[J]}sendBroadcastMessage(J,Z){this._sendBroadcastMessage(void 0,J,Z)}sendPlayerMessage(J,Z,Y){this.emitWithWorld(this._world,"CHAT.PLAYER_MESSAGE",{player:J,message:Z,color:Y})}_subscribeToPlayerEvents(){this._world.on("PLAYER.CHAT_MESSAGE_SEND",(J)=>{let{player:Z,message:Y}=J,[$,...W]=Y.split(" "),Q=this._commandCallbacks[$];if(Q){Q(Z,W,Y);return}this._sendBroadcastMessage(Z,Y)})}_sendBroadcastMessage(J,Z,Y){this.emitWithWorld(this._world,"CHAT.BROADCAST_MESSAGE",{player:J,message:Z,color:Y})}}class LV extends gZ{autoCancelMouseLeftClick=!0;canJump=()=>!0;canRun=()=>!0;canSwim=()=>!0;canWalk=()=>!0;idleLoopedAnimations=["idle_upper","idle_lower"];interactOneshotAnimations=["simple_interact"];jumpOneshotAnimations=["jump_loop"];jumpVelocity=10;runLoopedAnimations=["run_upper","run_lower"];runVelocity=8;sticksToPlatforms=!0;swimFastVelocity=5;swimGravity=0.1;swimLoopedAnimations=["crawling"];swimMaxGravityVelocity=-1;swimSlowVelocity=3;swimUpwardVelocity=2;walkLoopedAnimations=["walk_upper","walk_lower"];walkVelocity=4;_stepAudio;_groundContactCount=0;_liquidContactCount=0;_platform;_swimUpwardCooldownAt=0;constructor(J={}){super();this.autoCancelMouseLeftClick=J.autoCancelMouseLeftClick??this.autoCancelMouseLeftClick,this.jumpVelocity=J.jumpVelocity??this.jumpVelocity,this.runVelocity=J.runVelocity??this.runVelocity,this.walkVelocity=J.walkVelocity??this.walkVelocity,this.canJump=J.canJump??this.canJump,this.canRun=J.canRun??this.canRun,this.canSwim=J.canSwim??this.canSwim,this.canWalk=J.canWalk??this.canWalk,this.sticksToPlatforms=J.sticksToPlatforms??this.sticksToPlatforms,this.swimFastVelocity=J.swimFastVelocity??this.swimFastVelocity,this.swimGravity=J.swimGravity??this.swimGravity,this.swimLoopedAnimations=J.swimLoopedAnimations??this.swimLoopedAnimations,this.swimSlowVelocity=J.swimSlowVelocity??this.swimSlowVelocity,this.swimUpwardVelocity=J.swimUpwardVelocity??this.swimUpwardVelocity}get isGrounded(){return this._groundContactCount>0}get isOnPlatform(){return!!this._platform}get isSwimming(){return this._liquidContactCount>0}get platform(){return this._platform}attach(J){this._stepAudio=new qK({uri:"audio/sfx/step/stone/stone-step-04.mp3",loop:!0,volume:0.1,referenceDistance:2,cutoffDistance:15,attachedToEntity:J}),J.setCcdEnabled(!0),J.lockAllRotations(),J.on("ENTITY.BLOCK_COLLISION",({blockType:Z,started:Y})=>{if(!Z.isLiquid||!this.canSwim(this))return;if(this._liquidContactCount<=0&&Y){let $=J.linearVelocity;J.setLinearVelocity({x:$.x*this.swimGravity,y:$.y*this.swimGravity,z:$.z*this.swimGravity})}if(this._liquidContactCount+=Y?1:-1,this._liquidContactCount>0)J.setGravityScale(this.swimGravity),J.startModelLoopedAnimations(this.swimLoopedAnimations),this._swimUpwardCooldownAt=performance.now()+600;else J.setGravityScale(1),J.stopModelAnimations(this.swimLoopedAnimations)})}spawn(J){if(!J.isSpawned)return f.error("DefaultPlayerEntityController.spawn(): Entity is not spawned!");J.createAndAddChildCollider({shape:"cylinder",radius:0.23,halfHeight:0.125,collisionGroups:{belongsTo:[4],collidesWith:[1,2]},isSensor:!0,relativePosition:{x:0,y:-0.75,z:0},tag:"groundSensor",onCollision:(Z,Y)=>{if(!J.isSpawned)return;if(!(Z instanceof N5)||!Z.isLiquid)this._groundContactCount+=Y?1:-1;if(!this._groundContactCount&&!this.isSwimming)J.startModelOneshotAnimations(this.jumpOneshotAnimations);else J.stopModelAnimations(this.jumpOneshotAnimations);if(!(Z instanceof _8)||!Z.isKinematic)return;if(Y&&this.sticksToPlatforms)this._platform=Z;else if(Z===this._platform&&!Y)this._platform=void 0}}),J.createAndAddChildCollider({shape:"capsule",halfHeight:0.33,radius:0.4,collisionGroups:{belongsTo:[4],collidesWith:[1,2]},friction:0,frictionCombineRule:1,tag:"wallCollider"})}tickWithPlayerInput(J,Z,Y,$){if(!J.isSpawned||!J.world)return;if(super.tickWithPlayerInput(J,Z,Y,$),J.parent)return;let{w:W,a:Q,s:X,d:K,sp:G,sh:z,ml:F}=Z,{yaw:V}=Y,H=J.linearVelocity,q={x:0,y:0,z:0},U=z;if(this.isGrounded&&!this.isSwimming&&(W||Q||X||K)){if(U)J.stopModelAnimations(Array.from(J.modelLoopedAnimations).filter((R)=>!this.runLoopedAnimations.includes(R))),J.startModelLoopedAnimations(this.runLoopedAnimations),this._stepAudio?.setPlaybackRate(0.75);else J.stopModelAnimations(Array.from(J.modelLoopedAnimations).filter((R)=>!this.walkLoopedAnimations.includes(R))),J.startModelLoopedAnimations(this.walkLoopedAnimations),this._stepAudio?.setPlaybackRate(0.51);this._stepAudio?.play(J.world,!this._stepAudio?.isPlaying)}else if(this._stepAudio?.pause(),!this.isSwimming)J.stopModelAnimations(Array.from(J.modelLoopedAnimations).filter((R)=>!this.idleLoopedAnimations.includes(R))),J.startModelLoopedAnimations(this.idleLoopedAnimations);if(F)J.startModelOneshotAnimations(this.interactOneshotAnimations),Z.ml=!this.autoCancelMouseLeftClick;if(U&&this.canRun(this)||!U&&this.canWalk(this)){let R=!this.isSwimming?U?this.runVelocity:this.walkVelocity:U?this.swimFastVelocity:this.swimSlowVelocity;if(W)q.x-=R*Math.sin(V),q.z-=R*Math.cos(V);if(X)q.x+=R*Math.sin(V),q.z+=R*Math.cos(V);if(Q)q.x-=R*Math.cos(V),q.z+=R*Math.sin(V);if(K)q.x+=R*Math.cos(V),q.z-=R*Math.sin(V);let N=Math.sqrt(q.x*q.x+q.z*q.z);if(N>R){let P=R/N;q.x*=P,q.z*=P}}if(this.isSwimming){if(H.y<this.swimMaxGravityVelocity)J.setLinearVelocity({...H,y:this.swimMaxGravityVelocity});if(H.y>this.swimUpwardVelocity*2)J.setLinearVelocity({...H,y:this.swimUpwardVelocity*2})}if(G&&this.canJump(this)){if(this.isGrounded&&!this.isSwimming&&H.y>-0.001&&H.y<=3)q.y=this.jumpVelocity;else if(this.isSwimming&&performance.now()>this._swimUpwardCooldownAt)q.y=this.swimUpwardVelocity*J.gravityScale}let L=this._platform?this._platform.linearVelocity:{x:0,y:0,z:0},w={x:q.x-H.x+L.x,y:q.y+L.y,z:q.z-H.z+L.z};if(!(this.runVelocity>0&&Math.abs(H.x)>this.runVelocity||this.jumpVelocity>0&&Math.abs(H.y)>this.jumpVelocity||this.runVelocity>0&&Math.abs(H.z)>this.runVelocity)||this.isOnPlatform){if(Object.values(w).some((R)=>R!==0)){let R=J.mass;J.applyImpulse({x:w.x*R,y:w.y*R,z:w.z*R})}}if(V!==void 0){let R=V/2;J.setRotation({x:0,y:Math.fround(Math.sin(R)),z:0,w:Math.fround(Math.cos(R))})}}}class IA extends t4{constructor(J){super({modelUri:"models/players/player.gltf",modelLoopedAnimations:["idle_lower","idle_upper"],modelScale:0.5,...J});if(!J.controller)this.setController(new LV)}}var L0=0.000001,n0=typeof Float32Array!=="undefined"?Float32Array:Array,e4=Math.random;var yl6=Math.PI/180;if(!Math.hypot)Math.hypot=function(){var J=0,Z=arguments.length;while(Z--)J+=arguments[Z]*arguments[Z];return Math.sqrt(J)};var D8={};R9(D8,{transpose:()=>xr8,subtract:()=>C41,sub:()=>or8,str:()=>ur8,set:()=>_r8,scale:()=>br8,rotate:()=>yr8,multiplyScalarAndAdd:()=>ar8,multiplyScalar:()=>nr8,multiply:()=>D41,mul:()=>sr8,invert:()=>Ar8,identity:()=>vr8,fromValues:()=>Sr8,fromScaling:()=>mr8,fromRotation:()=>gr8,frob:()=>dr8,exactEquals:()=>pr8,equals:()=>ir8,determinant:()=>fr8,create:()=>kr8,copy:()=>Ir8,clone:()=>Er8,adjoint:()=>hr8,add:()=>lr8,LDU:()=>cr8});function kr8(){var J=new n0(4);if(n0!=Float32Array)J[1]=0,J[2]=0;return J[0]=1,J[3]=1,J}function Er8(J){var Z=new n0(4);return Z[0]=J[0],Z[1]=J[1],Z[2]=J[2],Z[3]=J[3],Z}function Ir8(J,Z){return J[0]=Z[0],J[1]=Z[1],J[2]=Z[2],J[3]=Z[3],J}function vr8(J){return J[0]=1,J[1]=0,J[2]=0,J[3]=1,J}function Sr8(J,Z,Y,$){var W=new n0(4);return W[0]=J,W[1]=Z,W[2]=Y,W[3]=$,W}function _r8(J,Z,Y,$,W){return J[0]=Z,J[1]=Y,J[2]=$,J[3]=W,J}function xr8(J,Z){if(J===Z){var Y=Z[1];J[1]=Z[2],J[2]=Y}else J[0]=Z[0],J[1]=Z[2],J[2]=Z[1],J[3]=Z[3];return J}function Ar8(J,Z){var Y=Z[0],$=Z[1],W=Z[2],Q=Z[3],X=Y*Q-W*$;if(!X)return null;return X=1/X,J[0]=Q*X,J[1]=-$*X,J[2]=-W*X,J[3]=Y*X,J}function hr8(J,Z){var Y=Z[0];return J[0]=Z[3],J[1]=-Z[1],J[2]=-Z[2],J[3]=Y,J}function fr8(J){return J[0]*J[3]-J[2]*J[1]}function D41(J,Z,Y){var $=Z[0],W=Z[1],Q=Z[2],X=Z[3],K=Y[0],G=Y[1],z=Y[2],F=Y[3];return J[0]=$*K+Q*G,J[1]=W*K+X*G,J[2]=$*z+Q*F,J[3]=W*z+X*F,J}function yr8(J,Z,Y){var $=Z[0],W=Z[1],Q=Z[2],X=Z[3],K=Math.sin(Y),G=Math.cos(Y);return J[0]=$*G+Q*K,J[1]=W*G+X*K,J[2]=$*-K+Q*G,J[3]=W*-K+X*G,J}function br8(J,Z,Y){var $=Z[0],W=Z[1],Q=Z[2],X=Z[3],K=Y[0],G=Y[1];return J[0]=$*K,J[1]=W*K,J[2]=Q*G,J[3]=X*G,J}function gr8(J,Z){var Y=Math.sin(Z),$=Math.cos(Z);return J[0]=$,J[1]=Y,J[2]=-Y,J[3]=$,J}function mr8(J,Z){return J[0]=Z[0],J[1]=0,J[2]=0,J[3]=Z[1],J}function ur8(J){return"mat2("+J[0]+", "+J[1]+", "+J[2]+", "+J[3]+")"}function dr8(J){return Math.hypot(J[0],J[1],J[2],J[3])}function cr8(J,Z,Y,$){return J[2]=$[2]/$[0],Y[0]=$[0],Y[1]=$[1],Y[3]=$[3]-J[2]*Y[1],[J,Z,Y]}function lr8(J,Z,Y){return J[0]=Z[0]+Y[0],J[1]=Z[1]+Y[1],J[2]=Z[2]+Y[2],J[3]=Z[3]+Y[3],J}function C41(J,Z,Y){return J[0]=Z[0]-Y[0],J[1]=Z[1]-Y[1],J[2]=Z[2]-Y[2],J[3]=Z[3]-Y[3],J}function pr8(J,Z){return J[0]===Z[0]&&J[1]===Z[1]&&J[2]===Z[2]&&J[3]===Z[3]}function ir8(J,Z){var Y=J[0],$=J[1],W=J[2],Q=J[3],X=Z[0],K=Z[1],G=Z[2],z=Z[3];return Math.abs(Y-X)<=L0*Math.max(1,Math.abs(Y),Math.abs(X))&&Math.abs($-K)<=L0*Math.max(1,Math.abs($),Math.abs(K))&&Math.abs(W-G)<=L0*Math.max(1,Math.abs(W),Math.abs(G))&&Math.abs(Q-z)<=L0*Math.max(1,Math.abs(Q),Math.abs(z))}function nr8(J,Z,Y){return J[0]=Z[0]*Y,J[1]=Z[1]*Y,J[2]=Z[2]*Y,J[3]=Z[3]*Y,J}function ar8(J,Z,Y,$){return J[0]=Z[0]+Y[0]*$,J[1]=Z[1]+Y[1]*$,J[2]=Z[2]+Y[2]*$,J[3]=Z[3]+Y[3]*$,J}var sr8=D41,or8=C41;var A1={};R9(A1,{transpose:()=>$t8,translate:()=>Kt8,subtract:()=>k41,sub:()=>Ct8,str:()=>Bt8,set:()=>Zt8,scale:()=>zt8,rotate:()=>Gt8,projection:()=>Lt8,normalFromMat4:()=>wt8,multiplyScalarAndAdd:()=>Nt8,multiplyScalar:()=>Rt8,multiply:()=>T41,mul:()=>Dt8,invert:()=>Wt8,identity:()=>Yt8,fromValues:()=>Jt8,fromTranslation:()=>Ft8,fromScaling:()=>Ht8,fromRotation:()=>Vt8,fromQuat:()=>Ut8,fromMat4:()=>rr8,fromMat2d:()=>qt8,frob:()=>Ot8,exactEquals:()=>Pt8,equals:()=>jt8,determinant:()=>Xt8,create:()=>vA,copy:()=>er8,clone:()=>tr8,adjoint:()=>Qt8,add:()=>Mt8});function vA(){var J=new n0(9);if(n0!=Float32Array)J[1]=0,J[2]=0,J[3]=0,J[5]=0,J[6]=0,J[7]=0;return J[0]=1,J[4]=1,J[8]=1,J}function rr8(J,Z){return J[0]=Z[0],J[1]=Z[1],J[2]=Z[2],J[3]=Z[4],J[4]=Z[5],J[5]=Z[6],J[6]=Z[8],J[7]=Z[9],J[8]=Z[10],J}function tr8(J){var Z=new n0(9);return Z[0]=J[0],Z[1]=J[1],Z[2]=J[2],Z[3]=J[3],Z[4]=J[4],Z[5]=J[5],Z[6]=J[6],Z[7]=J[7],Z[8]=J[8],Z}function er8(J,Z){return J[0]=Z[0],J[1]=Z[1],J[2]=Z[2],J[3]=Z[3],J[4]=Z[4],J[5]=Z[5],J[6]=Z[6],J[7]=Z[7],J[8]=Z[8],J}function Jt8(J,Z,Y,$,W,Q,X,K,G){var z=new n0(9);return z[0]=J,z[1]=Z,z[2]=Y,z[3]=$,z[4]=W,z[5]=Q,z[6]=X,z[7]=K,z[8]=G,z}function Zt8(J,Z,Y,$,W,Q,X,K,G,z){return J[0]=Z,J[1]=Y,J[2]=$,J[3]=W,J[4]=Q,J[5]=X,J[6]=K,J[7]=G,J[8]=z,J}function Yt8(J){return J[0]=1,J[1]=0,J[2]=0,J[3]=0,J[4]=1,J[5]=0,J[6]=0,J[7]=0,J[8]=1,J}function $t8(J,Z){if(J===Z){var Y=Z[1],$=Z[2],W=Z[5];J[1]=Z[3],J[2]=Z[6],J[3]=Y,J[5]=Z[7],J[6]=$,J[7]=W}else J[0]=Z[0],J[1]=Z[3],J[2]=Z[6],J[3]=Z[1],J[4]=Z[4],J[5]=Z[7],J[6]=Z[2],J[7]=Z[5],J[8]=Z[8];return J}function Wt8(J,Z){var Y=Z[0],$=Z[1],W=Z[2],Q=Z[3],X=Z[4],K=Z[5],G=Z[6],z=Z[7],F=Z[8],V=F*X-K*z,H=-F*Q+K*G,q=z*Q-X*G,U=Y*V+$*H+W*q;if(!U)return null;return U=1/U,J[0]=V*U,J[1]=(-F*$+W*z)*U,J[2]=(K*$-W*X)*U,J[3]=H*U,J[4]=(F*Y-W*G)*U,J[5]=(-K*Y+W*Q)*U,J[6]=q*U,J[7]=(-z*Y+$*G)*U,J[8]=(X*Y-$*Q)*U,J}function Qt8(J,Z){var Y=Z[0],$=Z[1],W=Z[2],Q=Z[3],X=Z[4],K=Z[5],G=Z[6],z=Z[7],F=Z[8];return J[0]=X*F-K*z,J[1]=W*z-$*F,J[2]=$*K-W*X,J[3]=K*G-Q*F,J[4]=Y*F-W*G,J[5]=W*Q-Y*K,J[6]=Q*z-X*G,J[7]=$*G-Y*z,J[8]=Y*X-$*Q,J}function Xt8(J){var Z=J[0],Y=J[1],$=J[2],W=J[3],Q=J[4],X=J[5],K=J[6],G=J[7],z=J[8];return Z*(z*Q-X*G)+Y*(-z*W+X*K)+$*(G*W-Q*K)}function T41(J,Z,Y){var $=Z[0],W=Z[1],Q=Z[2],X=Z[3],K=Z[4],G=Z[5],z=Z[6],F=Z[7],V=Z[8],H=Y[0],q=Y[1],U=Y[2],L=Y[3],w=Y[4],O=Y[5],R=Y[6],N=Y[7],P=Y[8];return J[0]=H*$+q*X+U*z,J[1]=H*W+q*K+U*F,J[2]=H*Q+q*G+U*V,J[3]=L*$+w*X+O*z,J[4]=L*W+w*K+O*F,J[5]=L*Q+w*G+O*V,J[6]=R*$+N*X+P*z,J[7]=R*W+N*K+P*F,J[8]=R*Q+N*G+P*V,J}function Kt8(J,Z,Y){var $=Z[0],W=Z[1],Q=Z[2],X=Z[3],K=Z[4],G=Z[5],z=Z[6],F=Z[7],V=Z[8],H=Y[0],q=Y[1];return J[0]=$,J[1]=W,J[2]=Q,J[3]=X,J[4]=K,J[5]=G,J[6]=H*$+q*X+z,J[7]=H*W+q*K+F,J[8]=H*Q+q*G+V,J}function Gt8(J,Z,Y){var $=Z[0],W=Z[1],Q=Z[2],X=Z[3],K=Z[4],G=Z[5],z=Z[6],F=Z[7],V=Z[8],H=Math.sin(Y),q=Math.cos(Y);return J[0]=q*$+H*X,J[1]=q*W+H*K,J[2]=q*Q+H*G,J[3]=q*X-H*$,J[4]=q*K-H*W,J[5]=q*G-H*Q,J[6]=z,J[7]=F,J[8]=V,J}function zt8(J,Z,Y){var $=Y[0],W=Y[1];return J[0]=$*Z[0],J[1]=$*Z[1],J[2]=$*Z[2],J[3]=W*Z[3],J[4]=W*Z[4],J[5]=W*Z[5],J[6]=Z[6],J[7]=Z[7],J[8]=Z[8],J}function Ft8(J,Z){return J[0]=1,J[1]=0,J[2]=0,J[3]=0,J[4]=1,J[5]=0,J[6]=Z[0],J[7]=Z[1],J[8]=1,J}function Vt8(J,Z){var Y=Math.sin(Z),$=Math.cos(Z);return J[0]=$,J[1]=Y,J[2]=0,J[3]=-Y,J[4]=$,J[5]=0,J[6]=0,J[7]=0,J[8]=1,J}function Ht8(J,Z){return J[0]=Z[0],J[1]=0,J[2]=0,J[3]=0,J[4]=Z[1],J[5]=0,J[6]=0,J[7]=0,J[8]=1,J}function qt8(J,Z){return J[0]=Z[0],J[1]=Z[1],J[2]=0,J[3]=Z[2],J[4]=Z[3],J[5]=0,J[6]=Z[4],J[7]=Z[5],J[8]=1,J}function Ut8(J,Z){var Y=Z[0],$=Z[1],W=Z[2],Q=Z[3],X=Y+Y,K=$+$,G=W+W,z=Y*X,F=$*X,V=$*K,H=W*X,q=W*K,U=W*G,L=Q*X,w=Q*K,O=Q*G;return J[0]=1-V-U,J[3]=F-O,J[6]=H+w,J[1]=F+O,J[4]=1-z-U,J[7]=q-L,J[2]=H-w,J[5]=q+L,J[8]=1-z-V,J}function wt8(J,Z){var Y=Z[0],$=Z[1],W=Z[2],Q=Z[3],X=Z[4],K=Z[5],G=Z[6],z=Z[7],F=Z[8],V=Z[9],H=Z[10],q=Z[11],U=Z[12],L=Z[13],w=Z[14],O=Z[15],R=Y*K-$*X,N=Y*G-W*X,P=Y*z-Q*X,D=$*G-W*K,j=$*z-Q*K,C=W*z-Q*G,k=F*L-V*U,I=F*w-H*U,A=F*O-q*U,v=V*w-H*L,x=V*O-q*L,u=H*O-q*w,h=R*u-N*x+P*v+D*A-j*I+C*k;if(!h)return null;return h=1/h,J[0]=(K*u-G*x+z*v)*h,J[1]=(G*A-X*u-z*I)*h,J[2]=(X*x-K*A+z*k)*h,J[3]=(W*x-$*u-Q*v)*h,J[4]=(Y*u-W*A+Q*I)*h,J[5]=($*A-Y*x-Q*k)*h,J[6]=(L*C-w*j+O*D)*h,J[7]=(w*P-U*C-O*N)*h,J[8]=(U*j-L*P+O*R)*h,J}function Lt8(J,Z,Y){return J[0]=2/Z,J[1]=0,J[2]=0,J[3]=0,J[4]=-2/Y,J[5]=0,J[6]=-1,J[7]=1,J[8]=1,J}function Bt8(J){return"mat3("+J[0]+", "+J[1]+", "+J[2]+", "+J[3]+", "+J[4]+", "+J[5]+", "+J[6]+", "+J[7]+", "+J[8]+")"}function Ot8(J){return Math.hypot(J[0],J[1],J[2],J[3],J[4],J[5],J[6],J[7],J[8])}function Mt8(J,Z,Y){return J[0]=Z[0]+Y[0],J[1]=Z[1]+Y[1],J[2]=Z[2]+Y[2],J[3]=Z[3]+Y[3],J[4]=Z[4]+Y[4],J[5]=Z[5]+Y[5],J[6]=Z[6]+Y[6],J[7]=Z[7]+Y[7],J[8]=Z[8]+Y[8],J}function k41(J,Z,Y){return J[0]=Z[0]-Y[0],J[1]=Z[1]-Y[1],J[2]=Z[2]-Y[2],J[3]=Z[3]-Y[3],J[4]=Z[4]-Y[4],J[5]=Z[5]-Y[5],J[6]=Z[6]-Y[6],J[7]=Z[7]-Y[7],J[8]=Z[8]-Y[8],J}function Rt8(J,Z,Y){return J[0]=Z[0]*Y,J[1]=Z[1]*Y,J[2]=Z[2]*Y,J[3]=Z[3]*Y,J[4]=Z[4]*Y,J[5]=Z[5]*Y,J[6]=Z[6]*Y,J[7]=Z[7]*Y,J[8]=Z[8]*Y,J}function Nt8(J,Z,Y,$){return J[0]=Z[0]+Y[0]*$,J[1]=Z[1]+Y[1]*$,J[2]=Z[2]+Y[2]*$,J[3]=Z[3]+Y[3]*$,J[4]=Z[4]+Y[4]*$,J[5]=Z[5]+Y[5]*$,J[6]=Z[6]+Y[6]*$,J[7]=Z[7]+Y[7]*$,J[8]=Z[8]+Y[8]*$,J}function Pt8(J,Z){return J[0]===Z[0]&&J[1]===Z[1]&&J[2]===Z[2]&&J[3]===Z[3]&&J[4]===Z[4]&&J[5]===Z[5]&&J[6]===Z[6]&&J[7]===Z[7]&&J[8]===Z[8]}function jt8(J,Z){var Y=J[0],$=J[1],W=J[2],Q=J[3],X=J[4],K=J[5],G=J[6],z=J[7],F=J[8],V=Z[0],H=Z[1],q=Z[2],U=Z[3],L=Z[4],w=Z[5],O=Z[6],R=Z[7],N=Z[8];return Math.abs(Y-V)<=L0*Math.max(1,Math.abs(Y),Math.abs(V))&&Math.abs($-H)<=L0*Math.max(1,Math.abs($),Math.abs(H))&&Math.abs(W-q)<=L0*Math.max(1,Math.abs(W),Math.abs(q))&&Math.abs(Q-U)<=L0*Math.max(1,Math.abs(Q),Math.abs(U))&&Math.abs(X-L)<=L0*Math.max(1,Math.abs(X),Math.abs(L))&&Math.abs(K-w)<=L0*Math.max(1,Math.abs(K),Math.abs(w))&&Math.abs(G-O)<=L0*Math.max(1,Math.abs(G),Math.abs(O))&&Math.abs(z-R)<=L0*Math.max(1,Math.abs(z),Math.abs(R))&&Math.abs(F-N)<=L0*Math.max(1,Math.abs(F),Math.abs(N))}var Dt8=T41,Ct8=k41;var d0={};R9(d0,{transpose:()=>St8,translate:()=>ht8,targetTo:()=>Xe8,subtract:()=>A41,sub:()=>we8,str:()=>Ke8,set:()=>vt8,scale:()=>ft8,rotateZ:()=>mt8,rotateY:()=>gt8,rotateX:()=>bt8,rotate:()=>yt8,perspectiveZO:()=>Ze8,perspectiveNO:()=>_41,perspectiveFromFieldOfView:()=>Ye8,perspective:()=>Je8,orthoZO:()=>We8,orthoNO:()=>x41,ortho:()=>$e8,multiplyScalarAndAdd:()=>Ve8,multiplyScalar:()=>Fe8,multiply:()=>I41,mul:()=>Ue8,lookAt:()=>Qe8,invert:()=>_t8,identity:()=>E41,getTranslation:()=>at8,getScaling:()=>S41,getRotation:()=>st8,frustum:()=>et8,fromZRotation:()=>it8,fromYRotation:()=>pt8,fromXRotation:()=>lt8,fromValues:()=>It8,fromTranslation:()=>ut8,fromScaling:()=>dt8,fromRotationTranslationScaleOrigin:()=>rt8,fromRotationTranslationScale:()=>ot8,fromRotationTranslation:()=>v41,fromRotation:()=>ct8,fromQuat2:()=>nt8,fromQuat:()=>tt8,frob:()=>Ge8,exactEquals:()=>He8,equals:()=>qe8,determinant:()=>At8,create:()=>Tt8,copy:()=>Et8,clone:()=>kt8,adjoint:()=>xt8,add:()=>ze8});function Tt8(){var J=new n0(16);if(n0!=Float32Array)J[1]=0,J[2]=0,J[3]=0,J[4]=0,J[6]=0,J[7]=0,J[8]=0,J[9]=0,J[11]=0,J[12]=0,J[13]=0,J[14]=0;return J[0]=1,J[5]=1,J[10]=1,J[15]=1,J}function kt8(J){var Z=new n0(16);return Z[0]=J[0],Z[1]=J[1],Z[2]=J[2],Z[3]=J[3],Z[4]=J[4],Z[5]=J[5],Z[6]=J[6],Z[7]=J[7],Z[8]=J[8],Z[9]=J[9],Z[10]=J[10],Z[11]=J[11],Z[12]=J[12],Z[13]=J[13],Z[14]=J[14],Z[15]=J[15],Z}function Et8(J,Z){return J[0]=Z[0],J[1]=Z[1],J[2]=Z[2],J[3]=Z[3],J[4]=Z[4],J[5]=Z[5],J[6]=Z[6],J[7]=Z[7],J[8]=Z[8],J[9]=Z[9],J[10]=Z[10],J[11]=Z[11],J[12]=Z[12],J[13]=Z[13],J[14]=Z[14],J[15]=Z[15],J}function It8(J,Z,Y,$,W,Q,X,K,G,z,F,V,H,q,U,L){var w=new n0(16);return w[0]=J,w[1]=Z,w[2]=Y,w[3]=$,w[4]=W,w[5]=Q,w[6]=X,w[7]=K,w[8]=G,w[9]=z,w[10]=F,w[11]=V,w[12]=H,w[13]=q,w[14]=U,w[15]=L,w}function vt8(J,Z,Y,$,W,Q,X,K,G,z,F,V,H,q,U,L,w){return J[0]=Z,J[1]=Y,J[2]=$,J[3]=W,J[4]=Q,J[5]=X,J[6]=K,J[7]=G,J[8]=z,J[9]=F,J[10]=V,J[11]=H,J[12]=q,J[13]=U,J[14]=L,J[15]=w,J}function E41(J){return J[0]=1,J[1]=0,J[2]=0,J[3]=0,J[4]=0,J[5]=1,J[6]=0,J[7]=0,J[8]=0,J[9]=0,J[10]=1,J[11]=0,J[12]=0,J[13]=0,J[14]=0,J[15]=1,J}function St8(J,Z){if(J===Z){var Y=Z[1],$=Z[2],W=Z[3],Q=Z[6],X=Z[7],K=Z[11];J[1]=Z[4],J[2]=Z[8],J[3]=Z[12],J[4]=Y,J[6]=Z[9],J[7]=Z[13],J[8]=$,J[9]=Q,J[11]=Z[14],J[12]=W,J[13]=X,J[14]=K}else J[0]=Z[0],J[1]=Z[4],J[2]=Z[8],J[3]=Z[12],J[4]=Z[1],J[5]=Z[5],J[6]=Z[9],J[7]=Z[13],J[8]=Z[2],J[9]=Z[6],J[10]=Z[10],J[11]=Z[14],J[12]=Z[3],J[13]=Z[7],J[14]=Z[11],J[15]=Z[15];return J}function _t8(J,Z){var Y=Z[0],$=Z[1],W=Z[2],Q=Z[3],X=Z[4],K=Z[5],G=Z[6],z=Z[7],F=Z[8],V=Z[9],H=Z[10],q=Z[11],U=Z[12],L=Z[13],w=Z[14],O=Z[15],R=Y*K-$*X,N=Y*G-W*X,P=Y*z-Q*X,D=$*G-W*K,j=$*z-Q*K,C=W*z-Q*G,k=F*L-V*U,I=F*w-H*U,A=F*O-q*U,v=V*w-H*L,x=V*O-q*L,u=H*O-q*w,h=R*u-N*x+P*v+D*A-j*I+C*k;if(!h)return null;return h=1/h,J[0]=(K*u-G*x+z*v)*h,J[1]=(W*x-$*u-Q*v)*h,J[2]=(L*C-w*j+O*D)*h,J[3]=(H*j-V*C-q*D)*h,J[4]=(G*A-X*u-z*I)*h,J[5]=(Y*u-W*A+Q*I)*h,J[6]=(w*P-U*C-O*N)*h,J[7]=(F*C-H*P+q*N)*h,J[8]=(X*x-K*A+z*k)*h,J[9]=($*A-Y*x-Q*k)*h,J[10]=(U*j-L*P+O*R)*h,J[11]=(V*P-F*j-q*R)*h,J[12]=(K*I-X*v-G*k)*h,J[13]=(Y*v-$*I+W*k)*h,J[14]=(L*N-U*D-w*R)*h,J[15]=(F*D-V*N+H*R)*h,J}function xt8(J,Z){var Y=Z[0],$=Z[1],W=Z[2],Q=Z[3],X=Z[4],K=Z[5],G=Z[6],z=Z[7],F=Z[8],V=Z[9],H=Z[10],q=Z[11],U=Z[12],L=Z[13],w=Z[14],O=Z[15];return J[0]=K*(H*O-q*w)-V*(G*O-z*w)+L*(G*q-z*H),J[1]=-($*(H*O-q*w)-V*(W*O-Q*w)+L*(W*q-Q*H)),J[2]=$*(G*O-z*w)-K*(W*O-Q*w)+L*(W*z-Q*G),J[3]=-($*(G*q-z*H)-K*(W*q-Q*H)+V*(W*z-Q*G)),J[4]=-(X*(H*O-q*w)-F*(G*O-z*w)+U*(G*q-z*H)),J[5]=Y*(H*O-q*w)-F*(W*O-Q*w)+U*(W*q-Q*H),J[6]=-(Y*(G*O-z*w)-X*(W*O-Q*w)+U*(W*z-Q*G)),J[7]=Y*(G*q-z*H)-X*(W*q-Q*H)+F*(W*z-Q*G),J[8]=X*(V*O-q*L)-F*(K*O-z*L)+U*(K*q-z*V),J[9]=-(Y*(V*O-q*L)-F*($*O-Q*L)+U*($*q-Q*V)),J[10]=Y*(K*O-z*L)-X*($*O-Q*L)+U*($*z-Q*K),J[11]=-(Y*(K*q-z*V)-X*($*q-Q*V)+F*($*z-Q*K)),J[12]=-(X*(V*w-H*L)-F*(K*w-G*L)+U*(K*H-G*V)),J[13]=Y*(V*w-H*L)-F*($*w-W*L)+U*($*H-W*V),J[14]=-(Y*(K*w-G*L)-X*($*w-W*L)+U*($*G-W*K)),J[15]=Y*(K*H-G*V)-X*($*H-W*V)+F*($*G-W*K),J}function At8(J){var Z=J[0],Y=J[1],$=J[2],W=J[3],Q=J[4],X=J[5],K=J[6],G=J[7],z=J[8],F=J[9],V=J[10],H=J[11],q=J[12],U=J[13],L=J[14],w=J[15],O=Z*X-Y*Q,R=Z*K-$*Q,N=Z*G-W*Q,P=Y*K-$*X,D=Y*G-W*X,j=$*G-W*K,C=z*U-F*q,k=z*L-V*q,I=z*w-H*q,A=F*L-V*U,v=F*w-H*U,x=V*w-H*L;return O*x-R*v+N*A+P*I-D*k+j*C}function I41(J,Z,Y){var $=Z[0],W=Z[1],Q=Z[2],X=Z[3],K=Z[4],G=Z[5],z=Z[6],F=Z[7],V=Z[8],H=Z[9],q=Z[10],U=Z[11],L=Z[12],w=Z[13],O=Z[14],R=Z[15],N=Y[0],P=Y[1],D=Y[2],j=Y[3];return J[0]=N*$+P*K+D*V+j*L,J[1]=N*W+P*G+D*H+j*w,J[2]=N*Q+P*z+D*q+j*O,J[3]=N*X+P*F+D*U+j*R,N=Y[4],P=Y[5],D=Y[6],j=Y[7],J[4]=N*$+P*K+D*V+j*L,J[5]=N*W+P*G+D*H+j*w,J[6]=N*Q+P*z+D*q+j*O,J[7]=N*X+P*F+D*U+j*R,N=Y[8],P=Y[9],D=Y[10],j=Y[11],J[8]=N*$+P*K+D*V+j*L,J[9]=N*W+P*G+D*H+j*w,J[10]=N*Q+P*z+D*q+j*O,J[11]=N*X+P*F+D*U+j*R,N=Y[12],P=Y[13],D=Y[14],j=Y[15],J[12]=N*$+P*K+D*V+j*L,J[13]=N*W+P*G+D*H+j*w,J[14]=N*Q+P*z+D*q+j*O,J[15]=N*X+P*F+D*U+j*R,J}function ht8(J,Z,Y){var $=Y[0],W=Y[1],Q=Y[2],X,K,G,z,F,V,H,q,U,L,w,O;if(Z===J)J[12]=Z[0]*$+Z[4]*W+Z[8]*Q+Z[12],J[13]=Z[1]*$+Z[5]*W+Z[9]*Q+Z[13],J[14]=Z[2]*$+Z[6]*W+Z[10]*Q+Z[14],J[15]=Z[3]*$+Z[7]*W+Z[11]*Q+Z[15];else X=Z[0],K=Z[1],G=Z[2],z=Z[3],F=Z[4],V=Z[5],H=Z[6],q=Z[7],U=Z[8],L=Z[9],w=Z[10],O=Z[11],J[0]=X,J[1]=K,J[2]=G,J[3]=z,J[4]=F,J[5]=V,J[6]=H,J[7]=q,J[8]=U,J[9]=L,J[10]=w,J[11]=O,J[12]=X*$+F*W+U*Q+Z[12],J[13]=K*$+V*W+L*Q+Z[13],J[14]=G*$+H*W+w*Q+Z[14],J[15]=z*$+q*W+O*Q+Z[15];return J}function ft8(J,Z,Y){var $=Y[0],W=Y[1],Q=Y[2];return J[0]=Z[0]*$,J[1]=Z[1]*$,J[2]=Z[2]*$,J[3]=Z[3]*$,J[4]=Z[4]*W,J[5]=Z[5]*W,J[6]=Z[6]*W,J[7]=Z[7]*W,J[8]=Z[8]*Q,J[9]=Z[9]*Q,J[10]=Z[10]*Q,J[11]=Z[11]*Q,J[12]=Z[12],J[13]=Z[13],J[14]=Z[14],J[15]=Z[15],J}function yt8(J,Z,Y,$){var W=$[0],Q=$[1],X=$[2],K=Math.hypot(W,Q,X),G,z,F,V,H,q,U,L,w,O,R,N,P,D,j,C,k,I,A,v,x,u,h,d;if(K<L0)return null;if(K=1/K,W*=K,Q*=K,X*=K,G=Math.sin(Y),z=Math.cos(Y),F=1-z,V=Z[0],H=Z[1],q=Z[2],U=Z[3],L=Z[4],w=Z[5],O=Z[6],R=Z[7],N=Z[8],P=Z[9],D=Z[10],j=Z[11],C=W*W*F+z,k=Q*W*F+X*G,I=X*W*F-Q*G,A=W*Q*F-X*G,v=Q*Q*F+z,x=X*Q*F+W*G,u=W*X*F+Q*G,h=Q*X*F-W*G,d=X*X*F+z,J[0]=V*C+L*k+N*I,J[1]=H*C+w*k+P*I,J[2]=q*C+O*k+D*I,J[3]=U*C+R*k+j*I,J[4]=V*A+L*v+N*x,J[5]=H*A+w*v+P*x,J[6]=q*A+O*v+D*x,J[7]=U*A+R*v+j*x,J[8]=V*u+L*h+N*d,J[9]=H*u+w*h+P*d,J[10]=q*u+O*h+D*d,J[11]=U*u+R*h+j*d,Z!==J)J[12]=Z[12],J[13]=Z[13],J[14]=Z[14],J[15]=Z[15];return J}function bt8(J,Z,Y){var $=Math.sin(Y),W=Math.cos(Y),Q=Z[4],X=Z[5],K=Z[6],G=Z[7],z=Z[8],F=Z[9],V=Z[10],H=Z[11];if(Z!==J)J[0]=Z[0],J[1]=Z[1],J[2]=Z[2],J[3]=Z[3],J[12]=Z[12],J[13]=Z[13],J[14]=Z[14],J[15]=Z[15];return J[4]=Q*W+z*$,J[5]=X*W+F*$,J[6]=K*W+V*$,J[7]=G*W+H*$,J[8]=z*W-Q*$,J[9]=F*W-X*$,J[10]=V*W-K*$,J[11]=H*W-G*$,J}function gt8(J,Z,Y){var $=Math.sin(Y),W=Math.cos(Y),Q=Z[0],X=Z[1],K=Z[2],G=Z[3],z=Z[8],F=Z[9],V=Z[10],H=Z[11];if(Z!==J)J[4]=Z[4],J[5]=Z[5],J[6]=Z[6],J[7]=Z[7],J[12]=Z[12],J[13]=Z[13],J[14]=Z[14],J[15]=Z[15];return J[0]=Q*W-z*$,J[1]=X*W-F*$,J[2]=K*W-V*$,J[3]=G*W-H*$,J[8]=Q*$+z*W,J[9]=X*$+F*W,J[10]=K*$+V*W,J[11]=G*$+H*W,J}function mt8(J,Z,Y){var $=Math.sin(Y),W=Math.cos(Y),Q=Z[0],X=Z[1],K=Z[2],G=Z[3],z=Z[4],F=Z[5],V=Z[6],H=Z[7];if(Z!==J)J[8]=Z[8],J[9]=Z[9],J[10]=Z[10],J[11]=Z[11],J[12]=Z[12],J[13]=Z[13],J[14]=Z[14],J[15]=Z[15];return J[0]=Q*W+z*$,J[1]=X*W+F*$,J[2]=K*W+V*$,J[3]=G*W+H*$,J[4]=z*W-Q*$,J[5]=F*W-X*$,J[6]=V*W-K*$,J[7]=H*W-G*$,J}function ut8(J,Z){return J[0]=1,J[1]=0,J[2]=0,J[3]=0,J[4]=0,J[5]=1,J[6]=0,J[7]=0,J[8]=0,J[9]=0,J[10]=1,J[11]=0,J[12]=Z[0],J[13]=Z[1],J[14]=Z[2],J[15]=1,J}function dt8(J,Z){return J[0]=Z[0],J[1]=0,J[2]=0,J[3]=0,J[4]=0,J[5]=Z[1],J[6]=0,J[7]=0,J[8]=0,J[9]=0,J[10]=Z[2],J[11]=0,J[12]=0,J[13]=0,J[14]=0,J[15]=1,J}function ct8(J,Z,Y){var $=Y[0],W=Y[1],Q=Y[2],X=Math.hypot($,W,Q),K,G,z;if(X<L0)return null;return X=1/X,$*=X,W*=X,Q*=X,K=Math.sin(Z),G=Math.cos(Z),z=1-G,J[0]=$*$*z+G,J[1]=W*$*z+Q*K,J[2]=Q*$*z-W*K,J[3]=0,J[4]=$*W*z-Q*K,J[5]=W*W*z+G,J[6]=Q*W*z+$*K,J[7]=0,J[8]=$*Q*z+W*K,J[9]=W*Q*z-$*K,J[10]=Q*Q*z+G,J[11]=0,J[12]=0,J[13]=0,J[14]=0,J[15]=1,J}function lt8(J,Z){var Y=Math.sin(Z),$=Math.cos(Z);return J[0]=1,J[1]=0,J[2]=0,J[3]=0,J[4]=0,J[5]=$,J[6]=Y,J[7]=0,J[8]=0,J[9]=-Y,J[10]=$,J[11]=0,J[12]=0,J[13]=0,J[14]=0,J[15]=1,J}function pt8(J,Z){var Y=Math.sin(Z),$=Math.cos(Z);return J[0]=$,J[1]=0,J[2]=-Y,J[3]=0,J[4]=0,J[5]=1,J[6]=0,J[7]=0,J[8]=Y,J[9]=0,J[10]=$,J[11]=0,J[12]=0,J[13]=0,J[14]=0,J[15]=1,J}function it8(J,Z){var Y=Math.sin(Z),$=Math.cos(Z);return J[0]=$,J[1]=Y,J[2]=0,J[3]=0,J[4]=-Y,J[5]=$,J[6]=0,J[7]=0,J[8]=0,J[9]=0,J[10]=1,J[11]=0,J[12]=0,J[13]=0,J[14]=0,J[15]=1,J}function v41(J,Z,Y){var $=Z[0],W=Z[1],Q=Z[2],X=Z[3],K=$+$,G=W+W,z=Q+Q,F=$*K,V=$*G,H=$*z,q=W*G,U=W*z,L=Q*z,w=X*K,O=X*G,R=X*z;return J[0]=1-(q+L),J[1]=V+R,J[2]=H-O,J[3]=0,J[4]=V-R,J[5]=1-(F+L),J[6]=U+w,J[7]=0,J[8]=H+O,J[9]=U-w,J[10]=1-(F+q),J[11]=0,J[12]=Y[0],J[13]=Y[1],J[14]=Y[2],J[15]=1,J}function nt8(J,Z){var Y=new n0(3),$=-Z[0],W=-Z[1],Q=-Z[2],X=Z[3],K=Z[4],G=Z[5],z=Z[6],F=Z[7],V=$*$+W*W+Q*Q+X*X;if(V>0)Y[0]=(K*X+F*$+G*Q-z*W)*2/V,Y[1]=(G*X+F*W+z*$-K*Q)*2/V,Y[2]=(z*X+F*Q+K*W-G*$)*2/V;else Y[0]=(K*X+F*$+G*Q-z*W)*2,Y[1]=(G*X+F*W+z*$-K*Q)*2,Y[2]=(z*X+F*Q+K*W-G*$)*2;return v41(J,Z,Y),J}function at8(J,Z){return J[0]=Z[12],J[1]=Z[13],J[2]=Z[14],J}function S41(J,Z){var Y=Z[0],$=Z[1],W=Z[2],Q=Z[4],X=Z[5],K=Z[6],G=Z[8],z=Z[9],F=Z[10];return J[0]=Math.hypot(Y,$,W),J[1]=Math.hypot(Q,X,K),J[2]=Math.hypot(G,z,F),J}function st8(J,Z){var Y=new n0(3);S41(Y,Z);var $=1/Y[0],W=1/Y[1],Q=1/Y[2],X=Z[0]*$,K=Z[1]*W,G=Z[2]*Q,z=Z[4]*$,F=Z[5]*W,V=Z[6]*Q,H=Z[8]*$,q=Z[9]*W,U=Z[10]*Q,L=X+F+U,w=0;if(L>0)w=Math.sqrt(L+1)*2,J[3]=0.25*w,J[0]=(V-q)/w,J[1]=(H-G)/w,J[2]=(K-z)/w;else if(X>F&&X>U)w=Math.sqrt(1+X-F-U)*2,J[3]=(V-q)/w,J[0]=0.25*w,J[1]=(K+z)/w,J[2]=(H+G)/w;else if(F>U)w=Math.sqrt(1+F-X-U)*2,J[3]=(H-G)/w,J[0]=(K+z)/w,J[1]=0.25*w,J[2]=(V+q)/w;else w=Math.sqrt(1+U-X-F)*2,J[3]=(K-z)/w,J[0]=(H+G)/w,J[1]=(V+q)/w,J[2]=0.25*w;return J}function ot8(J,Z,Y,$){var W=Z[0],Q=Z[1],X=Z[2],K=Z[3],G=W+W,z=Q+Q,F=X+X,V=W*G,H=W*z,q=W*F,U=Q*z,L=Q*F,w=X*F,O=K*G,R=K*z,N=K*F,P=$[0],D=$[1],j=$[2];return J[0]=(1-(U+w))*P,J[1]=(H+N)*P,J[2]=(q-R)*P,J[3]=0,J[4]=(H-N)*D,J[5]=(1-(V+w))*D,J[6]=(L+O)*D,J[7]=0,J[8]=(q+R)*j,J[9]=(L-O)*j,J[10]=(1-(V+U))*j,J[11]=0,J[12]=Y[0],J[13]=Y[1],J[14]=Y[2],J[15]=1,J}function rt8(J,Z,Y,$,W){var Q=Z[0],X=Z[1],K=Z[2],G=Z[3],z=Q+Q,F=X+X,V=K+K,H=Q*z,q=Q*F,U=Q*V,L=X*F,w=X*V,O=K*V,R=G*z,N=G*F,P=G*V,D=$[0],j=$[1],C=$[2],k=W[0],I=W[1],A=W[2],v=(1-(L+O))*D,x=(q+P)*D,u=(U-N)*D,h=(q-P)*j,d=(1-(H+O))*j,W0=(w+R)*j,U0=(U+N)*C,B0=(w-R)*C,y0=(1-(H+L))*C;return J[0]=v,J[1]=x,J[2]=u,J[3]=0,J[4]=h,J[5]=d,J[6]=W0,J[7]=0,J[8]=U0,J[9]=B0,J[10]=y0,J[11]=0,J[12]=Y[0]+k-(v*k+h*I+U0*A),J[13]=Y[1]+I-(x*k+d*I+B0*A),J[14]=Y[2]+A-(u*k+W0*I+y0*A),J[15]=1,J}function tt8(J,Z){var Y=Z[0],$=Z[1],W=Z[2],Q=Z[3],X=Y+Y,K=$+$,G=W+W,z=Y*X,F=$*X,V=$*K,H=W*X,q=W*K,U=W*G,L=Q*X,w=Q*K,O=Q*G;return J[0]=1-V-U,J[1]=F+O,J[2]=H-w,J[3]=0,J[4]=F-O,J[5]=1-z-U,J[6]=q+L,J[7]=0,J[8]=H+w,J[9]=q-L,J[10]=1-z-V,J[11]=0,J[12]=0,J[13]=0,J[14]=0,J[15]=1,J}function et8(J,Z,Y,$,W,Q,X){var K=1/(Y-Z),G=1/(W-$),z=1/(Q-X);return J[0]=Q*2*K,J[1]=0,J[2]=0,J[3]=0,J[4]=0,J[5]=Q*2*G,J[6]=0,J[7]=0,J[8]=(Y+Z)*K,J[9]=(W+$)*G,J[10]=(X+Q)*z,J[11]=-1,J[12]=0,J[13]=0,J[14]=X*Q*2*z,J[15]=0,J}function _41(J,Z,Y,$,W){var Q=1/Math.tan(Z/2),X;if(J[0]=Q/Y,J[1]=0,J[2]=0,J[3]=0,J[4]=0,J[5]=Q,J[6]=0,J[7]=0,J[8]=0,J[9]=0,J[11]=-1,J[12]=0,J[13]=0,J[15]=0,W!=null&&W!==1/0)X=1/($-W),J[10]=(W+$)*X,J[14]=2*W*$*X;else J[10]=-1,J[14]=-2*$;return J}var Je8=_41;function Ze8(J,Z,Y,$,W){var Q=1/Math.tan(Z/2),X;if(J[0]=Q/Y,J[1]=0,J[2]=0,J[3]=0,J[4]=0,J[5]=Q,J[6]=0,J[7]=0,J[8]=0,J[9]=0,J[11]=-1,J[12]=0,J[13]=0,J[15]=0,W!=null&&W!==1/0)X=1/($-W),J[10]=W*X,J[14]=W*$*X;else J[10]=-1,J[14]=-$;return J}function Ye8(J,Z,Y,$){var W=Math.tan(Z.upDegrees*Math.PI/180),Q=Math.tan(Z.downDegrees*Math.PI/180),X=Math.tan(Z.leftDegrees*Math.PI/180),K=Math.tan(Z.rightDegrees*Math.PI/180),G=2/(X+K),z=2/(W+Q);return J[0]=G,J[1]=0,J[2]=0,J[3]=0,J[4]=0,J[5]=z,J[6]=0,J[7]=0,J[8]=-((X-K)*G*0.5),J[9]=(W-Q)*z*0.5,J[10]=$/(Y-$),J[11]=-1,J[12]=0,J[13]=0,J[14]=$*Y/(Y-$),J[15]=0,J}function x41(J,Z,Y,$,W,Q,X){var K=1/(Z-Y),G=1/($-W),z=1/(Q-X);return J[0]=-2*K,J[1]=0,J[2]=0,J[3]=0,J[4]=0,J[5]=-2*G,J[6]=0,J[7]=0,J[8]=0,J[9]=0,J[10]=2*z,J[11]=0,J[12]=(Z+Y)*K,J[13]=(W+$)*G,J[14]=(X+Q)*z,J[15]=1,J}var $e8=x41;function We8(J,Z,Y,$,W,Q,X){var K=1/(Z-Y),G=1/($-W),z=1/(Q-X);return J[0]=-2*K,J[1]=0,J[2]=0,J[3]=0,J[4]=0,J[5]=-2*G,J[6]=0,J[7]=0,J[8]=0,J[9]=0,J[10]=z,J[11]=0,J[12]=(Z+Y)*K,J[13]=(W+$)*G,J[14]=Q*z,J[15]=1,J}function Qe8(J,Z,Y,$){var W,Q,X,K,G,z,F,V,H,q,U=Z[0],L=Z[1],w=Z[2],O=$[0],R=$[1],N=$[2],P=Y[0],D=Y[1],j=Y[2];if(Math.abs(U-P)<L0&&Math.abs(L-D)<L0&&Math.abs(w-j)<L0)return E41(J);if(F=U-P,V=L-D,H=w-j,q=1/Math.hypot(F,V,H),F*=q,V*=q,H*=q,W=R*H-N*V,Q=N*F-O*H,X=O*V-R*F,q=Math.hypot(W,Q,X),!q)W=0,Q=0,X=0;else q=1/q,W*=q,Q*=q,X*=q;if(K=V*X-H*Q,G=H*W-F*X,z=F*Q-V*W,q=Math.hypot(K,G,z),!q)K=0,G=0,z=0;else q=1/q,K*=q,G*=q,z*=q;return J[0]=W,J[1]=K,J[2]=F,J[3]=0,J[4]=Q,J[5]=G,J[6]=V,J[7]=0,J[8]=X,J[9]=z,J[10]=H,J[11]=0,J[12]=-(W*U+Q*L+X*w),J[13]=-(K*U+G*L+z*w),J[14]=-(F*U+V*L+H*w),J[15]=1,J}function Xe8(J,Z,Y,$){var W=Z[0],Q=Z[1],X=Z[2],K=$[0],G=$[1],z=$[2],F=W-Y[0],V=Q-Y[1],H=X-Y[2],q=F*F+V*V+H*H;if(q>0)q=1/Math.sqrt(q),F*=q,V*=q,H*=q;var U=G*H-z*V,L=z*F-K*H,w=K*V-G*F;if(q=U*U+L*L+w*w,q>0)q=1/Math.sqrt(q),U*=q,L*=q,w*=q;return J[0]=U,J[1]=L,J[2]=w,J[3]=0,J[4]=V*w-H*L,J[5]=H*U-F*w,J[6]=F*L-V*U,J[7]=0,J[8]=F,J[9]=V,J[10]=H,J[11]=0,J[12]=W,J[13]=Q,J[14]=X,J[15]=1,J}function Ke8(J){return"mat4("+J[0]+", "+J[1]+", "+J[2]+", "+J[3]+", "+J[4]+", "+J[5]+", "+J[6]+", "+J[7]+", "+J[8]+", "+J[9]+", "+J[10]+", "+J[11]+", "+J[12]+", "+J[13]+", "+J[14]+", "+J[15]+")"}function Ge8(J){return Math.hypot(J[0],J[1],J[2],J[3],J[4],J[5],J[6],J[7],J[8],J[9],J[10],J[11],J[12],J[13],J[14],J[15])}function ze8(J,Z,Y){return J[0]=Z[0]+Y[0],J[1]=Z[1]+Y[1],J[2]=Z[2]+Y[2],J[3]=Z[3]+Y[3],J[4]=Z[4]+Y[4],J[5]=Z[5]+Y[5],J[6]=Z[6]+Y[6],J[7]=Z[7]+Y[7],J[8]=Z[8]+Y[8],J[9]=Z[9]+Y[9],J[10]=Z[10]+Y[10],J[11]=Z[11]+Y[11],J[12]=Z[12]+Y[12],J[13]=Z[13]+Y[13],J[14]=Z[14]+Y[14],J[15]=Z[15]+Y[15],J}function A41(J,Z,Y){return J[0]=Z[0]-Y[0],J[1]=Z[1]-Y[1],J[2]=Z[2]-Y[2],J[3]=Z[3]-Y[3],J[4]=Z[4]-Y[4],J[5]=Z[5]-Y[5],J[6]=Z[6]-Y[6],J[7]=Z[7]-Y[7],J[8]=Z[8]-Y[8],J[9]=Z[9]-Y[9],J[10]=Z[10]-Y[10],J[11]=Z[11]-Y[11],J[12]=Z[12]-Y[12],J[13]=Z[13]-Y[13],J[14]=Z[14]-Y[14],J[15]=Z[15]-Y[15],J}function Fe8(J,Z,Y){return J[0]=Z[0]*Y,J[1]=Z[1]*Y,J[2]=Z[2]*Y,J[3]=Z[3]*Y,J[4]=Z[4]*Y,J[5]=Z[5]*Y,J[6]=Z[6]*Y,J[7]=Z[7]*Y,J[8]=Z[8]*Y,J[9]=Z[9]*Y,J[10]=Z[10]*Y,J[11]=Z[11]*Y,J[12]=Z[12]*Y,J[13]=Z[13]*Y,J[14]=Z[14]*Y,J[15]=Z[15]*Y,J}function Ve8(J,Z,Y,$){return J[0]=Z[0]+Y[0]*$,J[1]=Z[1]+Y[1]*$,J[2]=Z[2]+Y[2]*$,J[3]=Z[3]+Y[3]*$,J[4]=Z[4]+Y[4]*$,J[5]=Z[5]+Y[5]*$,J[6]=Z[6]+Y[6]*$,J[7]=Z[7]+Y[7]*$,J[8]=Z[8]+Y[8]*$,J[9]=Z[9]+Y[9]*$,J[10]=Z[10]+Y[10]*$,J[11]=Z[11]+Y[11]*$,J[12]=Z[12]+Y[12]*$,J[13]=Z[13]+Y[13]*$,J[14]=Z[14]+Y[14]*$,J[15]=Z[15]+Y[15]*$,J}function He8(J,Z){return J[0]===Z[0]&&J[1]===Z[1]&&J[2]===Z[2]&&J[3]===Z[3]&&J[4]===Z[4]&&J[5]===Z[5]&&J[6]===Z[6]&&J[7]===Z[7]&&J[8]===Z[8]&&J[9]===Z[9]&&J[10]===Z[10]&&J[11]===Z[11]&&J[12]===Z[12]&&J[13]===Z[13]&&J[14]===Z[14]&&J[15]===Z[15]}function qe8(J,Z){var Y=J[0],$=J[1],W=J[2],Q=J[3],X=J[4],K=J[5],G=J[6],z=J[7],F=J[8],V=J[9],H=J[10],q=J[11],U=J[12],L=J[13],w=J[14],O=J[15],R=Z[0],N=Z[1],P=Z[2],D=Z[3],j=Z[4],C=Z[5],k=Z[6],I=Z[7],A=Z[8],v=Z[9],x=Z[10],u=Z[11],h=Z[12],d=Z[13],W0=Z[14],U0=Z[15];return Math.abs(Y-R)<=L0*Math.max(1,Math.abs(Y),Math.abs(R))&&Math.abs($-N)<=L0*Math.max(1,Math.abs($),Math.abs(N))&&Math.abs(W-P)<=L0*Math.max(1,Math.abs(W),Math.abs(P))&&Math.abs(Q-D)<=L0*Math.max(1,Math.abs(Q),Math.abs(D))&&Math.abs(X-j)<=L0*Math.max(1,Math.abs(X),Math.abs(j))&&Math.abs(K-C)<=L0*Math.max(1,Math.abs(K),Math.abs(C))&&Math.abs(G-k)<=L0*Math.max(1,Math.abs(G),Math.abs(k))&&Math.abs(z-I)<=L0*Math.max(1,Math.abs(z),Math.abs(I))&&Math.abs(F-A)<=L0*Math.max(1,Math.abs(F),Math.abs(A))&&Math.abs(V-v)<=L0*Math.max(1,Math.abs(V),Math.abs(v))&&Math.abs(H-x)<=L0*Math.max(1,Math.abs(H),Math.abs(x))&&Math.abs(q-u)<=L0*Math.max(1,Math.abs(q),Math.abs(u))&&Math.abs(U-h)<=L0*Math.max(1,Math.abs(U),Math.abs(h))&&Math.abs(L-d)<=L0*Math.max(1,Math.abs(L),Math.abs(d))&&Math.abs(w-W0)<=L0*Math.max(1,Math.abs(w),Math.abs(W0))&&Math.abs(O-U0)<=L0*Math.max(1,Math.abs(O),Math.abs(U0))}var Ue8=I41,we8=A41;var V1={};R9(V1,{str:()=>V06,squaredLength:()=>z71,sqrLen:()=>R06,sqlerp:()=>D06,slerp:()=>AO,setAxisAngle:()=>Z71,setAxes:()=>C06,set:()=>w06,scale:()=>X71,rotationTo:()=>j06,rotateZ:()=>W06,rotateY:()=>$06,rotateX:()=>Y06,random:()=>K06,pow:()=>X06,normalize:()=>AA,multiply:()=>Y71,mul:()=>B06,ln:()=>W71,lerp:()=>O06,length:()=>G71,len:()=>M06,invert:()=>G06,identity:()=>ee8,getAxisAngle:()=>J06,getAngle:()=>Z06,fromValues:()=>q06,fromMat3:()=>Q71,fromEuler:()=>F06,exp:()=>$71,exactEquals:()=>N06,equals:()=>P06,dot:()=>K71,create:()=>xA,copy:()=>U06,conjugate:()=>z06,clone:()=>H06,calculateW:()=>Q06,add:()=>L06});var l0={};R9(l0,{zero:()=>me8,transformQuat:()=>he8,transformMat4:()=>xe8,transformMat3:()=>Ae8,subtract:()=>f41,sub:()=>le8,str:()=>ue8,squaredLength:()=>u41,squaredDistance:()=>m41,sqrLen:()=>se8,sqrDist:()=>ae8,set:()=>Oe8,scaleAndAdd:()=>Te8,scale:()=>Ce8,round:()=>De8,rotateZ:()=>be8,rotateY:()=>ye8,rotateX:()=>fe8,random:()=>_e8,normalize:()=>SA,negate:()=>ke8,multiply:()=>y41,mul:()=>pe8,min:()=>Pe8,max:()=>je8,lerp:()=>Ie8,length:()=>h41,len:()=>_A,inverse:()=>Ee8,hermite:()=>ve8,fromValues:()=>_O,forEach:()=>oe8,floor:()=>Ne8,exactEquals:()=>de8,equals:()=>ce8,dot:()=>xO,divide:()=>b41,div:()=>ie8,distance:()=>g41,dist:()=>ne8,cross:()=>BV,create:()=>SO,copy:()=>Be8,clone:()=>Le8,ceil:()=>Re8,bezier:()=>Se8,angle:()=>ge8,add:()=>Me8});function SO(){var J=new n0(3);if(n0!=Float32Array)J[0]=0,J[1]=0,J[2]=0;return J}function Le8(J){var Z=new n0(3);return Z[0]=J[0],Z[1]=J[1],Z[2]=J[2],Z}function h41(J){var Z=J[0],Y=J[1],$=J[2];return Math.hypot(Z,Y,$)}function _O(J,Z,Y){var $=new n0(3);return $[0]=J,$[1]=Z,$[2]=Y,$}function Be8(J,Z){return J[0]=Z[0],J[1]=Z[1],J[2]=Z[2],J}function Oe8(J,Z,Y,$){return J[0]=Z,J[1]=Y,J[2]=$,J}function Me8(J,Z,Y){return J[0]=Z[0]+Y[0],J[1]=Z[1]+Y[1],J[2]=Z[2]+Y[2],J}function f41(J,Z,Y){return J[0]=Z[0]-Y[0],J[1]=Z[1]-Y[1],J[2]=Z[2]-Y[2],J}function y41(J,Z,Y){return J[0]=Z[0]*Y[0],J[1]=Z[1]*Y[1],J[2]=Z[2]*Y[2],J}function b41(J,Z,Y){return J[0]=Z[0]/Y[0],J[1]=Z[1]/Y[1],J[2]=Z[2]/Y[2],J}function Re8(J,Z){return J[0]=Math.ceil(Z[0]),J[1]=Math.ceil(Z[1]),J[2]=Math.ceil(Z[2]),J}function Ne8(J,Z){return J[0]=Math.floor(Z[0]),J[1]=Math.floor(Z[1]),J[2]=Math.floor(Z[2]),J}function Pe8(J,Z,Y){return J[0]=Math.min(Z[0],Y[0]),J[1]=Math.min(Z[1],Y[1]),J[2]=Math.min(Z[2],Y[2]),J}function je8(J,Z,Y){return J[0]=Math.max(Z[0],Y[0]),J[1]=Math.max(Z[1],Y[1]),J[2]=Math.max(Z[2],Y[2]),J}function De8(J,Z){return J[0]=Math.round(Z[0]),J[1]=Math.round(Z[1]),J[2]=Math.round(Z[2]),J}function Ce8(J,Z,Y){return J[0]=Z[0]*Y,J[1]=Z[1]*Y,J[2]=Z[2]*Y,J}function Te8(J,Z,Y,$){return J[0]=Z[0]+Y[0]*$,J[1]=Z[1]+Y[1]*$,J[2]=Z[2]+Y[2]*$,J}function g41(J,Z){var Y=Z[0]-J[0],$=Z[1]-J[1],W=Z[2]-J[2];return Math.hypot(Y,$,W)}function m41(J,Z){var Y=Z[0]-J[0],$=Z[1]-J[1],W=Z[2]-J[2];return Y*Y+$*$+W*W}function u41(J){var Z=J[0],Y=J[1],$=J[2];return Z*Z+Y*Y+$*$}function ke8(J,Z){return J[0]=-Z[0],J[1]=-Z[1],J[2]=-Z[2],J}function Ee8(J,Z){return J[0]=1/Z[0],J[1]=1/Z[1],J[2]=1/Z[2],J}function SA(J,Z){var Y=Z[0],$=Z[1],W=Z[2],Q=Y*Y+$*$+W*W;if(Q>0)Q=1/Math.sqrt(Q);return J[0]=Z[0]*Q,J[1]=Z[1]*Q,J[2]=Z[2]*Q,J}function xO(J,Z){return J[0]*Z[0]+J[1]*Z[1]+J[2]*Z[2]}function BV(J,Z,Y){var $=Z[0],W=Z[1],Q=Z[2],X=Y[0],K=Y[1],G=Y[2];return J[0]=W*G-Q*K,J[1]=Q*X-$*G,J[2]=$*K-W*X,J}function Ie8(J,Z,Y,$){var W=Z[0],Q=Z[1],X=Z[2];return J[0]=W+$*(Y[0]-W),J[1]=Q+$*(Y[1]-Q),J[2]=X+$*(Y[2]-X),J}function ve8(J,Z,Y,$,W,Q){var X=Q*Q,K=X*(2*Q-3)+1,G=X*(Q-2)+Q,z=X*(Q-1),F=X*(3-2*Q);return J[0]=Z[0]*K+Y[0]*G+$[0]*z+W[0]*F,J[1]=Z[1]*K+Y[1]*G+$[1]*z+W[1]*F,J[2]=Z[2]*K+Y[2]*G+$[2]*z+W[2]*F,J}function Se8(J,Z,Y,$,W,Q){var X=1-Q,K=X*X,G=Q*Q,z=K*X,F=3*Q*K,V=3*G*X,H=G*Q;return J[0]=Z[0]*z+Y[0]*F+$[0]*V+W[0]*H,J[1]=Z[1]*z+Y[1]*F+$[1]*V+W[1]*H,J[2]=Z[2]*z+Y[2]*F+$[2]*V+W[2]*H,J}function _e8(J,Z){Z=Z||1;var Y=e4()*2*Math.PI,$=e4()*2-1,W=Math.sqrt(1-$*$)*Z;return J[0]=Math.cos(Y)*W,J[1]=Math.sin(Y)*W,J[2]=$*Z,J}function xe8(J,Z,Y){var $=Z[0],W=Z[1],Q=Z[2],X=Y[3]*$+Y[7]*W+Y[11]*Q+Y[15];return X=X||1,J[0]=(Y[0]*$+Y[4]*W+Y[8]*Q+Y[12])/X,J[1]=(Y[1]*$+Y[5]*W+Y[9]*Q+Y[13])/X,J[2]=(Y[2]*$+Y[6]*W+Y[10]*Q+Y[14])/X,J}function Ae8(J,Z,Y){var $=Z[0],W=Z[1],Q=Z[2];return J[0]=$*Y[0]+W*Y[3]+Q*Y[6],J[1]=$*Y[1]+W*Y[4]+Q*Y[7],J[2]=$*Y[2]+W*Y[5]+Q*Y[8],J}function he8(J,Z,Y){var $=Y[0],W=Y[1],Q=Y[2],X=Y[3],K=Z[0],G=Z[1],z=Z[2],F=W*z-Q*G,V=Q*K-$*z,H=$*G-W*K,q=W*H-Q*V,U=Q*F-$*H,L=$*V-W*F,w=X*2;return F*=w,V*=w,H*=w,q*=2,U*=2,L*=2,J[0]=K+F+q,J[1]=G+V+U,J[2]=z+H+L,J}function fe8(J,Z,Y,$){var W=[],Q=[];return W[0]=Z[0]-Y[0],W[1]=Z[1]-Y[1],W[2]=Z[2]-Y[2],Q[0]=W[0],Q[1]=W[1]*Math.cos($)-W[2]*Math.sin($),Q[2]=W[1]*Math.sin($)+W[2]*Math.cos($),J[0]=Q[0]+Y[0],J[1]=Q[1]+Y[1],J[2]=Q[2]+Y[2],J}function ye8(J,Z,Y,$){var W=[],Q=[];return W[0]=Z[0]-Y[0],W[1]=Z[1]-Y[1],W[2]=Z[2]-Y[2],Q[0]=W[2]*Math.sin($)+W[0]*Math.cos($),Q[1]=W[1],Q[2]=W[2]*Math.cos($)-W[0]*Math.sin($),J[0]=Q[0]+Y[0],J[1]=Q[1]+Y[1],J[2]=Q[2]+Y[2],J}function be8(J,Z,Y,$){var W=[],Q=[];return W[0]=Z[0]-Y[0],W[1]=Z[1]-Y[1],W[2]=Z[2]-Y[2],Q[0]=W[0]*Math.cos($)-W[1]*Math.sin($),Q[1]=W[0]*Math.sin($)+W[1]*Math.cos($),Q[2]=W[2],J[0]=Q[0]+Y[0],J[1]=Q[1]+Y[1],J[2]=Q[2]+Y[2],J}function ge8(J,Z){var Y=J[0],$=J[1],W=J[2],Q=Z[0],X=Z[1],K=Z[2],G=Math.sqrt(Y*Y+$*$+W*W),z=Math.sqrt(Q*Q+X*X+K*K),F=G*z,V=F&&xO(J,Z)/F;return Math.acos(Math.min(Math.max(V,-1),1))}function me8(J){return J[0]=0,J[1]=0,J[2]=0,J}function ue8(J){return"vec3("+J[0]+", "+J[1]+", "+J[2]+")"}function de8(J,Z){return J[0]===Z[0]&&J[1]===Z[1]&&J[2]===Z[2]}function ce8(J,Z){var Y=J[0],$=J[1],W=J[2],Q=Z[0],X=Z[1],K=Z[2];return Math.abs(Y-Q)<=L0*Math.max(1,Math.abs(Y),Math.abs(Q))&&Math.abs($-X)<=L0*Math.max(1,Math.abs($),Math.abs(X))&&Math.abs(W-K)<=L0*Math.max(1,Math.abs(W),Math.abs(K))}var le8=f41,pe8=y41,ie8=b41,ne8=g41,ae8=m41,_A=h41,se8=u41,oe8=function(){var J=SO();return function(Z,Y,$,W,Q,X){var K,G;if(!Y)Y=3;if(!$)$=0;if(W)G=Math.min(W*Y+$,Z.length);else G=Z.length;for(K=$;K<G;K+=Y)J[0]=Z[K],J[1]=Z[K+1],J[2]=Z[K+2],Q(J,J,X),Z[K]=J[0],Z[K+1]=J[1],Z[K+2]=J[2];return Z}}();function re8(){var J=new n0(4);if(n0!=Float32Array)J[0]=0,J[1]=0,J[2]=0,J[3]=0;return J}function d41(J){var Z=new n0(4);return Z[0]=J[0],Z[1]=J[1],Z[2]=J[2],Z[3]=J[3],Z}function c41(J,Z,Y,$){var W=new n0(4);return W[0]=J,W[1]=Z,W[2]=Y,W[3]=$,W}function l41(J,Z){return J[0]=Z[0],J[1]=Z[1],J[2]=Z[2],J[3]=Z[3],J}function p41(J,Z,Y,$,W){return J[0]=Z,J[1]=Y,J[2]=$,J[3]=W,J}function i41(J,Z,Y){return J[0]=Z[0]+Y[0],J[1]=Z[1]+Y[1],J[2]=Z[2]+Y[2],J[3]=Z[3]+Y[3],J}function n41(J,Z,Y){return J[0]=Z[0]*Y,J[1]=Z[1]*Y,J[2]=Z[2]*Y,J[3]=Z[3]*Y,J}function a41(J){var Z=J[0],Y=J[1],$=J[2],W=J[3];return Math.hypot(Z,Y,$,W)}function s41(J){var Z=J[0],Y=J[1],$=J[2],W=J[3];return Z*Z+Y*Y+$*$+W*W}function o41(J,Z){var Y=Z[0],$=Z[1],W=Z[2],Q=Z[3],X=Y*Y+$*$+W*W+Q*Q;if(X>0)X=1/Math.sqrt(X);return J[0]=Y*X,J[1]=$*X,J[2]=W*X,J[3]=Q*X,J}function r41(J,Z){return J[0]*Z[0]+J[1]*Z[1]+J[2]*Z[2]+J[3]*Z[3]}function t41(J,Z,Y,$){var W=Z[0],Q=Z[1],X=Z[2],K=Z[3];return J[0]=W+$*(Y[0]-W),J[1]=Q+$*(Y[1]-Q),J[2]=X+$*(Y[2]-X),J[3]=K+$*(Y[3]-K),J}function e41(J,Z){return J[0]===Z[0]&&J[1]===Z[1]&&J[2]===Z[2]&&J[3]===Z[3]}function J71(J,Z){var Y=J[0],$=J[1],W=J[2],Q=J[3],X=Z[0],K=Z[1],G=Z[2],z=Z[3];return Math.abs(Y-X)<=L0*Math.max(1,Math.abs(Y),Math.abs(X))&&Math.abs($-K)<=L0*Math.max(1,Math.abs($),Math.abs(K))&&Math.abs(W-G)<=L0*Math.max(1,Math.abs(W),Math.abs(G))&&Math.abs(Q-z)<=L0*Math.max(1,Math.abs(Q),Math.abs(z))}var bl6=function(){var J=re8();return function(Z,Y,$,W,Q,X){var K,G;if(!Y)Y=4;if(!$)$=0;if(W)G=Math.min(W*Y+$,Z.length);else G=Z.length;for(K=$;K<G;K+=Y)J[0]=Z[K],J[1]=Z[K+1],J[2]=Z[K+2],J[3]=Z[K+3],Q(J,J,X),Z[K]=J[0],Z[K+1]=J[1],Z[K+2]=J[2],Z[K+3]=J[3];return Z}}();function xA(){var J=new n0(4);if(n0!=Float32Array)J[0]=0,J[1]=0,J[2]=0;return J[3]=1,J}function ee8(J){return J[0]=0,J[1]=0,J[2]=0,J[3]=1,J}function Z71(J,Z,Y){Y=Y*0.5;var $=Math.sin(Y);return J[0]=$*Z[0],J[1]=$*Z[1],J[2]=$*Z[2],J[3]=Math.cos(Y),J}function J06(J,Z){var Y=Math.acos(Z[3])*2,$=Math.sin(Y/2);if($>L0)J[0]=Z[0]/$,J[1]=Z[1]/$,J[2]=Z[2]/$;else J[0]=1,J[1]=0,J[2]=0;return Y}function Z06(J,Z){var Y=K71(J,Z);return Math.acos(2*Y*Y-1)}function Y71(J,Z,Y){var $=Z[0],W=Z[1],Q=Z[2],X=Z[3],K=Y[0],G=Y[1],z=Y[2],F=Y[3];return J[0]=$*F+X*K+W*z-Q*G,J[1]=W*F+X*G+Q*K-$*z,J[2]=Q*F+X*z+$*G-W*K,J[3]=X*F-$*K-W*G-Q*z,J}function Y06(J,Z,Y){Y*=0.5;var $=Z[0],W=Z[1],Q=Z[2],X=Z[3],K=Math.sin(Y),G=Math.cos(Y);return J[0]=$*G+X*K,J[1]=W*G+Q*K,J[2]=Q*G-W*K,J[3]=X*G-$*K,J}function $06(J,Z,Y){Y*=0.5;var $=Z[0],W=Z[1],Q=Z[2],X=Z[3],K=Math.sin(Y),G=Math.cos(Y);return J[0]=$*G-Q*K,J[1]=W*G+X*K,J[2]=Q*G+$*K,J[3]=X*G-W*K,J}function W06(J,Z,Y){Y*=0.5;var $=Z[0],W=Z[1],Q=Z[2],X=Z[3],K=Math.sin(Y),G=Math.cos(Y);return J[0]=$*G+W*K,J[1]=W*G-$*K,J[2]=Q*G+X*K,J[3]=X*G-Q*K,J}function Q06(J,Z){var Y=Z[0],$=Z[1],W=Z[2];return J[0]=Y,J[1]=$,J[2]=W,J[3]=Math.sqrt(Math.abs(1-Y*Y-$*$-W*W)),J}function $71(J,Z){var Y=Z[0],$=Z[1],W=Z[2],Q=Z[3],X=Math.sqrt(Y*Y+$*$+W*W),K=Math.exp(Q),G=X>0?K*Math.sin(X)/X:0;return J[0]=Y*G,J[1]=$*G,J[2]=W*G,J[3]=K*Math.cos(X),J}function W71(J,Z){var Y=Z[0],$=Z[1],W=Z[2],Q=Z[3],X=Math.sqrt(Y*Y+$*$+W*W),K=X>0?Math.atan2(X,Q)/X:0;return J[0]=Y*K,J[1]=$*K,J[2]=W*K,J[3]=0.5*Math.log(Y*Y+$*$+W*W+Q*Q),J}function X06(J,Z,Y){return W71(J,Z),X71(J,J,Y),$71(J,J),J}function AO(J,Z,Y,$){var W=Z[0],Q=Z[1],X=Z[2],K=Z[3],G=Y[0],z=Y[1],F=Y[2],V=Y[3],H,q,U,L,w;if(q=W*G+Q*z+X*F+K*V,q<0)q=-q,G=-G,z=-z,F=-F,V=-V;if(1-q>L0)H=Math.acos(q),U=Math.sin(H),L=Math.sin((1-$)*H)/U,w=Math.sin($*H)/U;else L=1-$,w=$;return J[0]=L*W+w*G,J[1]=L*Q+w*z,J[2]=L*X+w*F,J[3]=L*K+w*V,J}function K06(J){var Z=e4(),Y=e4(),$=e4(),W=Math.sqrt(1-Z),Q=Math.sqrt(Z);return J[0]=W*Math.sin(2*Math.PI*Y),J[1]=W*Math.cos(2*Math.PI*Y),J[2]=Q*Math.sin(2*Math.PI*$),J[3]=Q*Math.cos(2*Math.PI*$),J}function G06(J,Z){var Y=Z[0],$=Z[1],W=Z[2],Q=Z[3],X=Y*Y+$*$+W*W+Q*Q,K=X?1/X:0;return J[0]=-Y*K,J[1]=-$*K,J[2]=-W*K,J[3]=Q*K,J}function z06(J,Z){return J[0]=-Z[0],J[1]=-Z[1],J[2]=-Z[2],J[3]=Z[3],J}function Q71(J,Z){var Y=Z[0]+Z[4]+Z[8],$;if(Y>0)$=Math.sqrt(Y+1),J[3]=0.5*$,$=0.5/$,J[0]=(Z[5]-Z[7])*$,J[1]=(Z[6]-Z[2])*$,J[2]=(Z[1]-Z[3])*$;else{var W=0;if(Z[4]>Z[0])W=1;if(Z[8]>Z[W*3+W])W=2;var Q=(W+1)%3,X=(W+2)%3;$=Math.sqrt(Z[W*3+W]-Z[Q*3+Q]-Z[X*3+X]+1),J[W]=0.5*$,$=0.5/$,J[3]=(Z[Q*3+X]-Z[X*3+Q])*$,J[Q]=(Z[Q*3+W]+Z[W*3+Q])*$,J[X]=(Z[X*3+W]+Z[W*3+X])*$}return J}function F06(J,Z,Y,$){var W=0.5*Math.PI/180;Z*=W,Y*=W,$*=W;var Q=Math.sin(Z),X=Math.cos(Z),K=Math.sin(Y),G=Math.cos(Y),z=Math.sin($),F=Math.cos($);return J[0]=Q*G*F-X*K*z,J[1]=X*K*F+Q*G*z,J[2]=X*G*z-Q*K*F,J[3]=X*G*F+Q*K*z,J}function V06(J){return"quat("+J[0]+", "+J[1]+", "+J[2]+", "+J[3]+")"}var H06=d41,q06=c41,U06=l41,w06=p41,L06=i41,B06=Y71,X71=n41,K71=r41,O06=t41,G71=a41,M06=G71,z71=s41,R06=z71,AA=o41,N06=e41,P06=J71,j06=function(){var J=SO(),Z=_O(1,0,0),Y=_O(0,1,0);return function($,W,Q){var X=xO(W,Q);if(X<-0.999999){if(BV(J,Z,W),_A(J)<0.000001)BV(J,Y,W);return SA(J,J),Z71($,J,Math.PI),$}else if(X>0.999999)return $[0]=0,$[1]=0,$[2]=0,$[3]=1,$;else return BV(J,W,Q),$[0]=J[0],$[1]=J[1],$[2]=J[2],$[3]=1+X,AA($,$)}}(),D06=function(){var J=xA(),Z=xA();return function(Y,$,W,Q,X,K){return AO(J,$,X,K),AO(Z,W,Q,K),AO(Y,J,Z,2*K*(1-K)),Y}}(),C06=function(){var J=vA();return function(Z,Y,$,W){return J[0]=$[0],J[3]=$[1],J[6]=$[2],J[1]=W[0],J[4]=W[1],J[7]=W[2],J[2]=-Y[0],J[5]=-Y[1],J[8]=-Y[2],AA(Z,Q71(Z,J))}}();var r0={};R9(r0,{zero:()=>r06,transformMat4:()=>a06,transformMat3:()=>n06,transformMat2d:()=>i06,transformMat2:()=>p06,subtract:()=>V71,sub:()=>Y16,str:()=>t06,squaredLength:()=>B71,squaredDistance:()=>w71,sqrLen:()=>K16,sqrDist:()=>X16,set:()=>I06,scaleAndAdd:()=>y06,scale:()=>f06,round:()=>h06,rotate:()=>s06,random:()=>l06,normalize:()=>m06,negate:()=>b06,multiply:()=>H71,mul:()=>$16,min:()=>x06,max:()=>A06,lerp:()=>c06,length:()=>L71,len:()=>Z16,inverse:()=>g06,fromValues:()=>k06,forEach:()=>G16,floor:()=>_06,exactEquals:()=>e06,equals:()=>J16,dot:()=>u06,divide:()=>q71,div:()=>W16,distance:()=>U71,dist:()=>Q16,cross:()=>d06,create:()=>F71,copy:()=>E06,clone:()=>T06,ceil:()=>S06,angle:()=>o06,add:()=>v06});function F71(){var J=new n0(2);if(n0!=Float32Array)J[0]=0,J[1]=0;return J}function T06(J){var Z=new n0(2);return Z[0]=J[0],Z[1]=J[1],Z}function k06(J,Z){var Y=new n0(2);return Y[0]=J,Y[1]=Z,Y}function E06(J,Z){return J[0]=Z[0],J[1]=Z[1],J}function I06(J,Z,Y){return J[0]=Z,J[1]=Y,J}function v06(J,Z,Y){return J[0]=Z[0]+Y[0],J[1]=Z[1]+Y[1],J}function V71(J,Z,Y){return J[0]=Z[0]-Y[0],J[1]=Z[1]-Y[1],J}function H71(J,Z,Y){return J[0]=Z[0]*Y[0],J[1]=Z[1]*Y[1],J}function q71(J,Z,Y){return J[0]=Z[0]/Y[0],J[1]=Z[1]/Y[1],J}function S06(J,Z){return J[0]=Math.ceil(Z[0]),J[1]=Math.ceil(Z[1]),J}function _06(J,Z){return J[0]=Math.floor(Z[0]),J[1]=Math.floor(Z[1]),J}function x06(J,Z,Y){return J[0]=Math.min(Z[0],Y[0]),J[1]=Math.min(Z[1],Y[1]),J}function A06(J,Z,Y){return J[0]=Math.max(Z[0],Y[0]),J[1]=Math.max(Z[1],Y[1]),J}function h06(J,Z){return J[0]=Math.round(Z[0]),J[1]=Math.round(Z[1]),J}function f06(J,Z,Y){return J[0]=Z[0]*Y,J[1]=Z[1]*Y,J}function y06(J,Z,Y,$){return J[0]=Z[0]+Y[0]*$,J[1]=Z[1]+Y[1]*$,J}function U71(J,Z){var Y=Z[0]-J[0],$=Z[1]-J[1];return Math.hypot(Y,$)}function w71(J,Z){var Y=Z[0]-J[0],$=Z[1]-J[1];return Y*Y+$*$}function L71(J){var Z=J[0],Y=J[1];return Math.hypot(Z,Y)}function B71(J){var Z=J[0],Y=J[1];return Z*Z+Y*Y}function b06(J,Z){return J[0]=-Z[0],J[1]=-Z[1],J}function g06(J,Z){return J[0]=1/Z[0],J[1]=1/Z[1],J}function m06(J,Z){var Y=Z[0],$=Z[1],W=Y*Y+$*$;if(W>0)W=1/Math.sqrt(W);return J[0]=Z[0]*W,J[1]=Z[1]*W,J}function u06(J,Z){return J[0]*Z[0]+J[1]*Z[1]}function d06(J,Z,Y){var $=Z[0]*Y[1]-Z[1]*Y[0];return J[0]=J[1]=0,J[2]=$,J}function c06(J,Z,Y,$){var W=Z[0],Q=Z[1];return J[0]=W+$*(Y[0]-W),J[1]=Q+$*(Y[1]-Q),J}function l06(J,Z){Z=Z||1;var Y=e4()*2*Math.PI;return J[0]=Math.cos(Y)*Z,J[1]=Math.sin(Y)*Z,J}function p06(J,Z,Y){var $=Z[0],W=Z[1];return J[0]=Y[0]*$+Y[2]*W,J[1]=Y[1]*$+Y[3]*W,J}function i06(J,Z,Y){var $=Z[0],W=Z[1];return J[0]=Y[0]*$+Y[2]*W+Y[4],J[1]=Y[1]*$+Y[3]*W+Y[5],J}function n06(J,Z,Y){var $=Z[0],W=Z[1];return J[0]=Y[0]*$+Y[3]*W+Y[6],J[1]=Y[1]*$+Y[4]*W+Y[7],J}function a06(J,Z,Y){var $=Z[0],W=Z[1];return J[0]=Y[0]*$+Y[4]*W+Y[12],J[1]=Y[1]*$+Y[5]*W+Y[13],J}function s06(J,Z,Y,$){var W=Z[0]-Y[0],Q=Z[1]-Y[1],X=Math.sin($),K=Math.cos($);return J[0]=W*K-Q*X+Y[0],J[1]=W*X+Q*K+Y[1],J}function o06(J,Z){var Y=J[0],$=J[1],W=Z[0],Q=Z[1],X=Math.sqrt(Y*Y+$*$)*Math.sqrt(W*W+Q*Q),K=X&&(Y*W+$*Q)/X;return Math.acos(Math.min(Math.max(K,-1),1))}function r06(J){return J[0]=0,J[1]=0,J}function t06(J){return"vec2("+J[0]+", "+J[1]+")"}function e06(J,Z){return J[0]===Z[0]&&J[1]===Z[1]}function J16(J,Z){var Y=J[0],$=J[1],W=Z[0],Q=Z[1];return Math.abs(Y-W)<=L0*Math.max(1,Math.abs(Y),Math.abs(W))&&Math.abs($-Q)<=L0*Math.max(1,Math.abs($),Math.abs(Q))}var Z16=L71,Y16=V71,$16=H71,W16=q71,Q16=U71,X16=w71,K16=B71,G16=function(){var J=F71();return function(Z,Y,$,W,Q,X){var K,G;if(!Y)Y=2;if(!$)$=0;if(W)G=Math.min(W*Y+$,Z.length);else G=Z.length;for(K=$;K<G;K+=Y)J[0]=Z[K],J[1]=Z[K+1],Q(J,J,X),Z[K]=J[0],Z[K+1]=J[1];return Z}}();class KW extends Float32Array{constructor(J,Z,Y,$){super([J,Z,Y,$])}get determinant(){return D8.determinant(this)}get frobeniusNorm(){return D8.frob(this)}static create(){let J=new KW(0,0,0,0);return D8.identity(J),J}static fromRotation(J){let Z=KW.create();return D8.fromRotation(Z,J),Z}static fromScaling(J){let Z=KW.create();return D8.fromScaling(Z,J),Z}add(J){return D8.add(this,this,J),this}adjoint(){return D8.adjoint(this,this),this}clone(){return new KW(this[0],this[1],this[2],this[3])}copy(J){return D8.copy(this,J),this}equals(J){return D8.equals(this,J)}exactEquals(J){return D8.exactEquals(this,J)}identity(){return D8.identity(this),this}invert(){return D8.invert(this,this),this}multiply(J){return D8.mul(this,this,J),this}multiplyScalar(J){return D8.multiplyScalar(this,this,J),this}rotate(J){return D8.rotate(this,this,J),this}subtract(J){return D8.sub(this,this,J),this}toString(){return`[${this[0]},${this[1]}][${this[2]},${this[3]}]`}transpose(){return D8.transpose(this,this),this}}class J7 extends Float32Array{constructor(J,Z,Y,$,W,Q,X,K,G){super([J,Z,Y,$,W,Q,X,K,G])}get determinant(){return A1.determinant(this)}get frobeniusNorm(){return A1.frob(this)}static create(){let J=new J7(0,0,0,0,0,0,0,0,0);return A1.identity(J),J}static fromMatrix4(J){let Z=J7.create();return A1.fromMat4(Z,J),Z}static fromQuaternion(J){let Z=J7.create();return A1.fromQuat(Z,J),Z}static fromRotation(J){let Z=J7.create();return A1.fromRotation(Z,J),Z}static fromScaling(J){let Z=J7.create();return A1.fromScaling(Z,J),Z}static fromTranslation(J){let Z=J7.create();return A1.fromTranslation(Z,J),Z}add(J){return A1.add(this,this,J),this}adjoint(){return A1.adjoint(this,this),this}clone(){return new J7(this[0],this[1],this[2],this[3],this[4],this[5],this[6],this[7],this[8])}copy(J){return A1.copy(this,J),this}equals(J){return A1.equals(this,J)}exactEquals(J){return A1.exactEquals(this,J)}identity(){return A1.identity(this),this}invert(){return A1.invert(this,this),this}multiply(J){return A1.mul(this,this,J),this}multiplyScalar(J){return A1.multiplyScalar(this,this,J),this}transformVector(J){return J.transformMatrix3(this)}projection(J,Z){return A1.projection(this,J,Z),this}rotate(J){return A1.rotate(this,this,J),this}subtract(J){return A1.sub(this,this,J),this}toString(){return`[${this[0]},${this[1]},${this[2]}][${this[3]},${this[4]},${this[5]}][${this[6]},${this[7]},${this[8]}]`}transpose(){return A1.transpose(this,this),this}}class d6 extends Float32Array{constructor(J,Z,Y,$,W,Q,X,K,G,z,F,V,H,q,U,L){super([J,Z,Y,$,W,Q,X,K,G,z,F,V,H,q,U,L])}get determinant(){return d0.determinant(this)}get frobeniusNorm(){return d0.frob(this)}static create(){let J=new d6(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);return d0.identity(J),J}static fromQuaternion(J){let Z=d6.create();return d0.fromQuat(Z,J),Z}static fromRotation(J,Z){let Y=d6.create();return d0.fromRotation(Y,J,Z),Y}static fromRotationTranslation(J,Z){let Y=d6.create();return d0.fromRotationTranslation(Y,J,Z),Y}static fromRotationTranslationScale(J,Z,Y){let $=d6.create();return d0.fromRotationTranslationScale($,J,Z,Y),$}static fromRotationTranslationScaleOrigin(J,Z,Y,$){let W=d6.create();return d0.fromRotationTranslationScaleOrigin(W,J,Z,Y,$),W}static fromScaling(J){let Z=d6.create();return d0.fromScaling(Z,J),Z}static fromTranslation(J){let Z=d6.create();return d0.fromTranslation(Z,J),Z}static fromXRotation(J){let Z=d6.create();return d0.fromXRotation(Z,J),Z}static fromYRotation(J){let Z=d6.create();return d0.fromYRotation(Z,J),Z}static fromZRotation(J){let Z=d6.create();return d0.fromZRotation(Z,J),Z}add(J){return d0.add(this,this,J),this}adjoint(){return d0.adjoint(this,this),this}clone(){return new d6(this[0],this[1],this[2],this[3],this[4],this[5],this[6],this[7],this[8],this[9],this[10],this[11],this[12],this[13],this[14],this[15])}copy(J){return d0.copy(this,J),this}equals(J){return d0.equals(this,J)}exactEquals(J){return d0.exactEquals(this,J)}frustrum(J,Z,Y,$,W,Q){return d0.frustum(this,J,Z,Y,$,W,Q),this}identity(){return d0.identity(this),this}invert(){return d0.invert(this,this),this}lookAt(J,Z,Y){return d0.lookAt(this,J,Z,Y),this}multiply(J){return d0.mul(this,this,J),this}multiplyScalar(J){return d0.multiplyScalar(this,this,J),this}orthographic(J,Z,Y,$,W,Q){return d0.ortho(this,J,Z,Y,$,W,Q),this}perspective(J,Z,Y,$){return d0.perspective(this,J,Z,Y,$),this}rotate(J,Z){return d0.rotate(this,this,J,Z),this}rotateX(J){return d0.rotateX(this,this,J),this}rotateY(J){return d0.rotateY(this,this,J),this}rotateZ(J){return d0.rotateZ(this,this,J),this}scale(J){return d0.scale(this,this,J),this}subtract(J){return d0.sub(this,this,J),this}targetTo(J,Z,Y){return d0.targetTo(this,J,Z,Y),this}toString(){return`[${this[0]},${this[1]},${this[2]},${this[3]}][${this[4]},${this[5]},${this[6]},${this[7]}][${this[8]},${this[9]},${this[10]},${this[11]}][${this[12]},${this[13]},${this[14]},${this[15]}]`}translate(J){return d0.translate(this,this,J),this}transpose(){return d0.transpose(this,this),this}}class zK extends Float32Array{constructor(J,Z,Y,$){super([J,Z,Y,$])}get length(){return V1.length(this)}get squaredLength(){return V1.squaredLength(this)}get magnitude(){return V1.length(this)}get squaredMagnitude(){return V1.squaredLength(this)}get x(){return this[0]}set x(J){this[0]=J}get y(){return this[1]}set y(J){this[1]=J}get z(){return this[2]}set z(J){this[2]=J}get w(){return this[3]}set w(J){this[3]=J}static fromEuler(J,Z,Y){let $=V1.fromEuler(new Float32Array(4),J,Z,Y);return new zK($[0],$[1],$[2],$[3])}static fromQuaternionLike(J){return new zK(J.x,J.y,J.z,J.w)}clone(){return new zK(this.x,this.y,this.z,this.w)}conjugate(){return V1.conjugate(this,this),this}copy(J){return V1.copy(this,J),this}dot(J){return V1.dot(this,J)}exponential(){return V1.exp(this,this),this}equals(J){return V1.equals(this,J)}exactEquals(J){return V1.exactEquals(this,J)}getAngle(J){return V1.getAngle(this,J)}identity(){return V1.identity(this),this}invert(){return V1.invert(this,this),this}lerp(J,Z){return V1.lerp(this,this,J,Z),this}logarithm(){return V1.ln(this,this),this}multiply(J){return V1.multiply(this,this,J),this}transformVector(J){return J.transformQuaternion(this)}normalize(){return V1.normalize(this,this),this}power(J){return V1.pow(this,this,J),this}randomize(){return V1.random(this),this}rotateX(J){return V1.rotateX(this,this,J),this}rotateY(J){return V1.rotateY(this,this,J),this}rotateZ(J){return V1.rotateZ(this,this,J),this}scale(J){return V1.scale(this,this,J),this}setAxisAngle(J,Z){return V1.setAxisAngle(this,J,Z),this}slerp(J,Z){return V1.slerp(this,this,J,Z),this}toString(){return`${this.x},${this.y},${this.z},${this.w}`}}class OV extends Float32Array{constructor(J,Z){super([J,Z])}get length(){return r0.length(this)}get squaredLength(){return r0.squaredLength(this)}get magnitude(){return r0.length(this)}get squaredMagnitude(){return r0.squaredLength(this)}get x(){return this[0]}set x(J){this[0]=J}get y(){return this[1]}set y(J){this[1]=J}static create(){return new OV(0,0)}add(J){return r0.add(this,this,J),this}angle(J){return r0.angle(this,J)}ceil(){return r0.ceil(this,this),this}clone(){return new OV(this.x,this.y)}copy(J){return r0.copy(this,J),this}distance(J){return r0.distance(this,J)}divide(J){return r0.divide(this,this,J),this}dot(J){return r0.dot(this,J)}equals(J){return r0.equals(this,J)}exactEquals(J){return r0.exactEquals(this,J)}floor(){return r0.floor(this,this),this}invert(){return r0.inverse(this,this),this}lerp(J,Z){return r0.lerp(this,this,J,Z),this}max(J){return r0.max(this,this,J),this}min(J){return r0.min(this,this,J),this}multiply(J){return r0.mul(this,this,J),this}negate(){return r0.negate(this,this),this}normalize(){return r0.normalize(this,this),this}randomize(J){return r0.random(this,J),this}rotate(J,Z){return r0.rotate(this,this,J,Z),this}round(){return r0.round(this,this),this}scale(J){return r0.scale(this,this,J),this}scaleAndAdd(J,Z){return r0.scaleAndAdd(this,this,J,Z),this}subtract(J){return r0.sub(this,this,J),this}toString(){return`${this.x},${this.y}`}transformMatrix2(J){return r0.transformMat2(this,this,J),this}transformMatrix3(J){return r0.transformMat3(this,this,J),this}transformMatrix4(J){return r0.transformMat4(this,this,J),this}zero(){return r0.zero(this),this}}class FK extends Float32Array{constructor(J,Z,Y){super([J,Z,Y])}get length(){return l0.length(this)}get squaredLength(){return l0.squaredLength(this)}get magnitude(){return l0.length(this)}get squaredMagnitude(){return l0.squaredLength(this)}get x(){return this[0]}set x(J){this[0]=J}get y(){return this[1]}set y(J){this[1]=J}get z(){return this[2]}set z(J){this[2]=J}static create(){return new FK(0,0,0)}static fromVector3Like(J){return new FK(J.x,J.y,J.z)}add(J){return l0.add(this,this,J),this}ceil(){return l0.ceil(this,this),this}clone(){return new FK(this.x,this.y,this.z)}copy(J){return l0.copy(this,J),this}cross(J){return l0.cross(this,this,J),this}distance(J){return l0.distance(this,J)}divide(J){return l0.div(this,this,J),this}dot(J){return l0.dot(this,J)}equals(J){return l0.equals(this,J)}exactEquals(J){return l0.exactEquals(this,J)}floor(){return l0.floor(this,this),this}invert(){return l0.inverse(this,this),this}lerp(J,Z){return l0.lerp(this,this,J,Z),this}max(J){return l0.max(this,this,J),this}min(J){return l0.min(this,this,J),this}multiply(J){return l0.mul(this,this,J),this}negate(){return l0.negate(this,this),this}normalize(){return l0.normalize(this,this),this}randomize(J){return l0.random(this,J),this}rotateX(J,Z){return l0.rotateX(this,this,J,Z),this}rotateY(J,Z){return l0.rotateY(this,this,J,Z),this}rotateZ(J,Z){return l0.rotateZ(this,this,J,Z),this}round(){return l0.round(this,this),this}scale(J){return l0.scale(this,this,J),this}scaleAndAdd(J,Z){return l0.scaleAndAdd(this,this,J,Z),this}subtract(J){return l0.sub(this,this,J),this}toString(){return`${this.x},${this.y},${this.z}`}transformMatrix3(J){return l0.transformMat3(this,this,J),this}transformMatrix4(J){return l0.transformMat4(this,this,J),this}transformQuaternion(J){return l0.transformQuat(this,this,J),this}zero(){return l0.zero(this),this}}var H1=function(J,Z,Y,$){function W(Q){return Q instanceof Y?Q:new Y(function(X){X(Q)})}return new(Y||(Y=Promise))(function(Q,X){function K(F){try{z($.next(F))}catch(V){X(V)}}function G(F){try{z($.throw(F))}catch(V){X(V)}}function z(F){F.done?Q(F.value):W(F.value).then(K,G)}z(($=$.apply(J,Z||[])).next())})},z1=function(J,Z){var Y={label:0,sent:function(){if(Q[0]&1)throw Q[1];return Q[1]},trys:[],ops:[]},$,W,Q,X=Object.create((typeof Iterator==="function"?Iterator:Object).prototype);return X.next=K(0),X.throw=K(1),X.return=K(2),typeof Symbol==="function"&&(X[Symbol.iterator]=function(){return this}),X;function K(z){return function(F){return G([z,F])}}function G(z){if($)throw new TypeError("Generator is already executing.");while(X&&(X=0,z[0]&&(Y=0)),Y)try{if($=1,W&&(Q=z[0]&2?W.return:z[0]?W.throw||((Q=W.return)&&Q.call(W),0):W.next)&&!(Q=Q.call(W,z[1])).done)return Q;if(W=0,Q)z=[z[0]&2,Q.value];switch(z[0]){case 0:case 1:Q=z;break;case 4:return Y.label++,{value:z[1],done:!1};case 5:Y.label++,W=z[1],z=[0];continue;case 7:z=Y.ops.pop(),Y.trys.pop();continue;default:if((Q=Y.trys,!(Q=Q.length>0&&Q[Q.length-1]))&&(z[0]===6||z[0]===2)){Y=0;continue}if(z[0]===3&&(!Q||z[1]>Q[0]&&z[1]<Q[3])){Y.label=z[1];break}if(z[0]===6&&Y.label<Q[1]){Y.label=Q[1],Q=z;break}if(Q&&Y.label<Q[2]){Y.label=Q[2],Y.ops.push(z);break}if(Q[2])Y.ops.pop();Y.trys.pop();continue}z=Z.call(J,Y)}catch(F){z=[6,F],W=0}finally{$=Q=0}if(z[0]&5)throw z[1];return{value:z[0]?z[1]:void 0,done:!0}}},q5=function(J,Z){var Y=typeof Symbol==="function"&&J[Symbol.iterator];if(!Y)return J;var $=Y.call(J),W,Q=[],X;try{while((Z===void 0||Z-- >0)&&!(W=$.next()).done)Q.push(W.value)}catch(K){X={error:K}}finally{try{if(W&&!W.done&&(Y=$.return))Y.call($)}finally{if(X)throw X.error}}return Q},B9=function(J,Z,Y){if(Y||arguments.length===2){for(var $=0,W=Z.length,Q;$<W;$++)if(Q||!($ in Z)){if(!Q)Q=Array.prototype.slice.call(Z,0,$);Q[$]=Z[$]}}return J.concat(Q||Array.prototype.slice.call(Z))},O71=function(J){var Z=typeof Symbol==="function"&&Symbol.iterator,Y=Z&&J[Z],$=0;if(Y)return Y.call(J);if(J&&typeof J.length==="number")return{next:function(){if(J&&$>=J.length)J=void 0;return{value:J&&J[$++],done:!J}}};throw new TypeError(Z?"Object is not iterable.":"Symbol.iterator is not defined.")},pl6=function(){function J(Z){if(Z===void 0)Z=J.minComparator;var Y=this;this.compare=Z,this.heapArray=[],this._limit=0,this.offer=this.add,this.element=this.peek,this.poll=this.pop,this._invertedCompare=function($,W){return Y.compare($,W).then(function(Q){return-1*Q})}}return J.getChildrenIndexOf=function(Z){return[Z*2+1,Z*2+2]},J.getParentIndexOf=function(Z){if(Z<=0)return-1;var Y=Z%2?1:2;return Math.floor((Z-Y)/2)},J.getSiblingIndexOf=function(Z){if(Z<=0)return-1;var Y=Z%2?1:-1;return Z+Y},J.minComparator=function(Z,Y){return H1(this,void 0,void 0,function(){return z1(this,function($){if(Z>Y)return[2,1];else if(Z<Y)return[2,-1];else return[2,0]})})},J.maxComparator=function(Z,Y){return H1(this,void 0,void 0,function(){return z1(this,function($){if(Y>Z)return[2,1];else if(Y<Z)return[2,-1];else return[2,0]})})},J.minComparatorNumber=function(Z,Y){return H1(this,void 0,void 0,function(){return z1(this,function($){return[2,Z-Y]})})},J.maxComparatorNumber=function(Z,Y){return H1(this,void 0,void 0,function(){return z1(this,function($){return[2,Y-Z]})})},J.defaultIsEqual=function(Z,Y){return H1(this,void 0,void 0,function(){return z1(this,function($){return[2,Z===Y]})})},J.print=function(Z){function Y(F){var V=J.getParentIndexOf(F);return Math.floor(Math.log2(V+1))}function $(F,V){var H="";for(;V>0;--V)H+=F;return H}var W=0,Q=[],X=Y(Z.length-1)+2,K=0;while(W<Z.length){var G=Y(W)+1;if(W===0)G=0;var z=String(Z.get(W));if(z.length>K)K=z.length;Q[G]=Q[G]||[],Q[G].push(z),W+=1}return Q.map(function(F,V){var H=Math.pow(2,X-V)-1;return $(" ",Math.floor(H/2)*K)+F.map(function(q){var U=(K-q.length)/2;return $(" ",Math.ceil(U))+q+$(" ",Math.floor(U))}).join($(" ",H*K))}).join(`
|
437
437
|
`)},J.heapify=function(Z,Y){return H1(this,void 0,void 0,function(){var $;return z1(this,function(W){switch(W.label){case 0:return $=new J(Y),$.heapArray=Z,[4,$.init()];case 1:return W.sent(),[2,$]}})})},J.heappop=function(Z,Y){var $=new J(Y);return $.heapArray=Z,$.pop()},J.heappush=function(Z,Y,$){return H1(this,void 0,void 0,function(){var W;return z1(this,function(Q){switch(Q.label){case 0:return W=new J($),W.heapArray=Z,[4,W.push(Y)];case 1:return Q.sent(),[2]}})})},J.heappushpop=function(Z,Y,$){var W=new J($);return W.heapArray=Z,W.pushpop(Y)},J.heapreplace=function(Z,Y,$){var W=new J($);return W.heapArray=Z,W.replace(Y)},J.heaptop=function(Z,Y,$){if(Y===void 0)Y=1;var W=new J($);return W.heapArray=Z,W.top(Y)},J.heapbottom=function(Z,Y,$){if(Y===void 0)Y=1;var W=new J($);return W.heapArray=Z,W.bottom(Y)},J.nlargest=function(Z,Y,$){return H1(this,void 0,void 0,function(){var W;return z1(this,function(Q){switch(Q.label){case 0:return W=new J($),W.heapArray=B9([],q5(Y),!1),[4,W.init()];case 1:return Q.sent(),[2,W.top(Z)]}})})},J.nsmallest=function(Z,Y,$){return H1(this,void 0,void 0,function(){var W;return z1(this,function(Q){switch(Q.label){case 0:return W=new J($),W.heapArray=B9([],q5(Y),!1),[4,W.init()];case 1:return Q.sent(),[2,W.bottom(Z)]}})})},J.prototype.add=function(Z){return H1(this,void 0,void 0,function(){return z1(this,function(Y){switch(Y.label){case 0:return[4,this._sortNodeUp(this.heapArray.push(Z)-1)];case 1:return Y.sent(),this._applyLimit(),[2,!0]}})})},J.prototype.addAll=function(Z){return H1(this,void 0,void 0,function(){var Y,$,W;return z1(this,function(Q){switch(Q.label){case 0:Y=this.length,(W=this.heapArray).push.apply(W,B9([],q5(Z),!1)),$=this.length,Q.label=1;case 1:if(!(Y<$))return[3,4];return[4,this._sortNodeUp(Y)];case 2:Q.sent(),Q.label=3;case 3:return++Y,[3,1];case 4:return this._applyLimit(),[2,!0]}})})},J.prototype.bottom=function(){return H1(this,arguments,void 0,function(Z){if(Z===void 0)Z=1;return z1(this,function(Y){if(this.heapArray.length===0||Z<=0)return[2,[]];else if(this.heapArray.length===1)return[2,[this.heapArray[0]]];else if(Z>=this.heapArray.length)return[2,B9([],q5(this.heapArray),!1)];else return[2,this._bottomN_push(~~Z)]})})},J.prototype.check=function(){return H1(this,void 0,void 0,function(){var Z,Y,$,W,Q,X,K,G,z;return z1(this,function(F){switch(F.label){case 0:Z=0,F.label=1;case 1:if(!(Z<this.heapArray.length))return[3,10];Y=this.heapArray[Z],$=this.getChildrenOf(Z),F.label=2;case 2:F.trys.push([2,7,8,9]),W=(G=void 0,O71($)),Q=W.next(),F.label=3;case 3:if(Q.done)return[3,6];return X=Q.value,[4,this.compare(Y,X)];case 4:if(F.sent()>0)return[2,Y];F.label=5;case 5:return Q=W.next(),[3,3];case 6:return[3,9];case 7:return K=F.sent(),G={error:K},[3,9];case 8:try{if(Q&&!Q.done&&(z=W.return))z.call(W)}finally{if(G)throw G.error}return[7];case 9:return++Z,[3,1];case 10:return[2]}})})},J.prototype.clear=function(){this.heapArray=[]},J.prototype.clone=function(){var Z=new J(this.comparator());return Z.heapArray=this.toArray(),Z._limit=this._limit,Z},J.prototype.comparator=function(){return this.compare},J.prototype.contains=function(Z){return H1(this,arguments,void 0,function(Y,$){var W,Q,X,K,G,z;if($===void 0)$=J.defaultIsEqual;return z1(this,function(F){switch(F.label){case 0:F.trys.push([0,5,6,7]),W=O71(this.heapArray),Q=W.next(),F.label=1;case 1:if(Q.done)return[3,4];return X=Q.value,[4,$(X,Y)];case 2:if(F.sent())return[2,!0];F.label=3;case 3:return Q=W.next(),[3,1];case 4:return[3,7];case 5:return K=F.sent(),G={error:K},[3,7];case 6:try{if(Q&&!Q.done&&(z=W.return))z.call(W)}finally{if(G)throw G.error}return[7];case 7:return[2,!1]}})})},J.prototype.init=function(Z){return H1(this,void 0,void 0,function(){var Y;return z1(this,function($){switch($.label){case 0:if(Z)this.heapArray=B9([],q5(Z),!1);Y=Math.floor(this.heapArray.length),$.label=1;case 1:if(!(Y>=0))return[3,4];return[4,this._sortNodeDown(Y)];case 2:$.sent(),$.label=3;case 3:return--Y,[3,1];case 4:return this._applyLimit(),[2]}})})},J.prototype.isEmpty=function(){return this.length===0},J.prototype.leafs=function(){if(this.heapArray.length===0)return[];var Z=J.getParentIndexOf(this.heapArray.length-1);return this.heapArray.slice(Z+1)},Object.defineProperty(J.prototype,"length",{get:function(){return this.heapArray.length},enumerable:!1,configurable:!0}),Object.defineProperty(J.prototype,"limit",{get:function(){return this._limit},set:function(Z){this._limit=~~Z,this._applyLimit()},enumerable:!1,configurable:!0}),J.prototype.peek=function(){return this.heapArray[0]},J.prototype.pop=function(){return H1(this,void 0,void 0,function(){var Z;return z1(this,function(Y){if(Z=this.heapArray.pop(),this.length>0&&Z!==void 0)return[2,this.replace(Z)];return[2,Z]})})},J.prototype.push=function(){var Z=[];for(var Y=0;Y<arguments.length;Y++)Z[Y]=arguments[Y];return H1(this,void 0,void 0,function(){return z1(this,function($){if(Z.length<1)return[2,!1];else if(Z.length===1)return[2,this.add(Z[0])];else return[2,this.addAll(Z)]})})},J.prototype.pushpop=function(Z){return H1(this,void 0,void 0,function(){var Y;return z1(this,function($){switch($.label){case 0:return[4,this.compare(this.heapArray[0],Z)];case 1:if(!($.sent()<0))return[3,3];return Y=q5([this.heapArray[0],Z],2),Z=Y[0],this.heapArray[0]=Y[1],[4,this._sortNodeDown(0)];case 2:$.sent(),$.label=3;case 3:return[2,Z]}})})},J.prototype.remove=function(Z){return H1(this,arguments,void 0,function(Y,$){var W,Q,X,K=this;if($===void 0)$=J.defaultIsEqual;return z1(this,function(G){switch(G.label){case 0:if(!this.heapArray.length)return[2,!1];if(Y!==void 0)return[3,2];return[4,this.pop()];case 1:return G.sent(),[2,!0];case 2:W=[0],G.label=3;case 3:if(!W.length)return[3,13];return Q=W.shift(),[4,$(this.heapArray[Q],Y)];case 4:if(!G.sent())return[3,11];if(Q!==0)return[3,6];return[4,this.pop()];case 5:return G.sent(),[3,10];case 6:if(Q!==this.heapArray.length-1)return[3,7];return this.heapArray.pop(),[3,10];case 7:return this.heapArray.splice(Q,1,this.heapArray.pop()),[4,this._sortNodeUp(Q)];case 8:return G.sent(),[4,this._sortNodeDown(Q)];case 9:G.sent(),G.label=10;case 10:return[2,!0];case 11:X=J.getChildrenIndexOf(Q).filter(function(z){return z<K.heapArray.length}),W.push.apply(W,B9([],q5(X),!1)),G.label=12;case 12:return[3,3];case 13:return[2,!1]}})})},J.prototype.replace=function(Z){return H1(this,void 0,void 0,function(){var Y;return z1(this,function($){switch($.label){case 0:return Y=this.heapArray[0],this.heapArray[0]=Z,[4,this._sortNodeDown(0)];case 1:return $.sent(),[2,Y]}})})},J.prototype.size=function(){return this.length},J.prototype.top=function(){return H1(this,arguments,void 0,function(Z){if(Z===void 0)Z=1;return z1(this,function(Y){if(this.heapArray.length===0||Z<=0)return[2,[]];else if(this.heapArray.length===1||Z===1)return[2,[this.heapArray[0]]];else if(Z>=this.heapArray.length)return[2,B9([],q5(this.heapArray),!1)];else return[2,this._topN_push(~~Z)]})})},J.prototype.toArray=function(){return B9([],q5(this.heapArray),!1)},J.prototype.toString=function(){return this.heapArray.toString()},J.prototype.get=function(Z){return this.heapArray[Z]},J.prototype.getChildrenOf=function(Z){var Y=this;return J.getChildrenIndexOf(Z).map(function($){return Y.heapArray[$]}).filter(function($){return $!==void 0})},J.prototype.getParentOf=function(Z){var Y=J.getParentIndexOf(Z);return this.heapArray[Y]},J.prototype[Symbol.iterator]=function(){return z1(this,function(Z){switch(Z.label){case 0:if(!this.length)return[3,2];return[4,this.pop()];case 1:return Z.sent(),[3,0];case 2:return[2]}})},J.prototype.iterator=function(){return this},J.prototype._applyLimit=function(){if(this._limit&&this._limit<this.heapArray.length){var Z=this.heapArray.length-this._limit;while(Z)this.heapArray.pop(),--Z}},J.prototype._bottomN_push=function(Z){return H1(this,void 0,void 0,function(){var Y,$,W,Q,K,X,K;return z1(this,function(G){switch(G.label){case 0:return Y=new J(this.compare),Y.limit=Z,Y.heapArray=this.heapArray.slice(-Z),[4,Y.init()];case 1:G.sent(),$=this.heapArray.length-1-Z,W=J.getParentIndexOf($),Q=[];for(K=$;K>W;--K)Q.push(K);X=this.heapArray,G.label=2;case 2:if(!Q.length)return[3,6];return K=Q.shift(),[4,this.compare(X[K],Y.peek())];case 3:if(!(G.sent()>0))return[3,5];return[4,Y.replace(X[K])];case 4:if(G.sent(),K%2)Q.push(J.getParentIndexOf(K));G.label=5;case 5:return[3,2];case 6:return[2,Y.toArray()]}})})},J.prototype._moveNode=function(Z,Y){var $;$=q5([this.heapArray[Y],this.heapArray[Z]],2),this.heapArray[Z]=$[0],this.heapArray[Y]=$[1]},J.prototype._sortNodeDown=function(Z){return H1(this,void 0,void 0,function(){var Y,$,W,Q,X,K;return z1(this,function(G){switch(G.label){case 0:Y=this.heapArray.length,G.label=1;case 1:if($=2*Z+1,W=$+1,Q=Z,X=$<Y,!X)return[3,3];return[4,this.compare(this.heapArray[$],this.heapArray[Q])];case 2:X=G.sent()<0,G.label=3;case 3:if(X)Q=$;if(K=W<Y,!K)return[3,5];return[4,this.compare(this.heapArray[W],this.heapArray[Q])];case 4:K=G.sent()<0,G.label=5;case 5:if(K)Q=W;if(Q===Z)return[3,7];this._moveNode(Z,Q),Z=Q,G.label=6;case 6:return[3,1];case 7:return[2]}})})},J.prototype._sortNodeUp=function(Z){return H1(this,void 0,void 0,function(){var Y;return z1(this,function($){switch($.label){case 0:if(!(Z>0))return[3,2];return Y=J.getParentIndexOf(Z),[4,this.compare(this.heapArray[Z],this.heapArray[Y])];case 1:if($.sent()<0)this._moveNode(Z,Y),Z=Y;else return[3,2];return[3,0];case 2:return[2]}})})},J.prototype._topN_push=function(Z){return H1(this,void 0,void 0,function(){var Y,$,W,Q;return z1(this,function(X){switch(X.label){case 0:Y=new J(this._invertedCompare),Y.limit=Z,$=[0],W=this.heapArray,X.label=1;case 1:if(!$.length)return[3,7];if(Q=$.shift(),!(Q<W.length))return[3,6];if(!(Y.length<Z))return[3,3];return[4,Y.push(W[Q])];case 2:return X.sent(),$.push.apply($,B9([],q5(J.getChildrenIndexOf(Q)),!1)),[3,6];case 3:return[4,this.compare(W[Q],Y.peek())];case 4:if(!(X.sent()<0))return[3,6];return[4,Y.replace(W[Q])];case 5:X.sent(),$.push.apply($,B9([],q5(J.getChildrenIndexOf(Q)),!1)),X.label=6;case 6:return[3,1];case 7:return[2,Y.toArray()]}})})},J.prototype._topN_fill=function(Z){return H1(this,void 0,void 0,function(){var Y,$,W,Q,X,X;return z1(this,function(K){switch(K.label){case 0:return Y=this.heapArray,$=new J(this._invertedCompare),$.limit=Z,$.heapArray=Y.slice(0,Z),[4,$.init()];case 1:K.sent(),W=J.getParentIndexOf(Z-1)+1,Q=[];for(X=W;X<Z;++X)Q.push.apply(Q,B9([],q5(J.getChildrenIndexOf(X).filter(function(G){return G<Y.length})),!1));if((Z-1)%2)Q.push(Z);K.label=2;case 2:if(!Q.length)return[3,6];if(X=Q.shift(),!(X<Y.length))return[3,5];return[4,this.compare(Y[X],$.peek())];case 3:if(!(K.sent()<0))return[3,5];return[4,$.replace(Y[X])];case 4:K.sent(),Q.push.apply(Q,B9([],q5(J.getChildrenIndexOf(X)),!1)),K.label=5;case 5:return[3,2];case 6:return[2,$.toArray()]}})})},J.prototype._topN_heap=function(Z){return H1(this,void 0,void 0,function(){var Y,$,W,Q,X;return z1(this,function(K){switch(K.label){case 0:Y=this.clone(),$=[],W=0,K.label=1;case 1:if(!(W<Z))return[3,4];return X=(Q=$).push,[4,Y.pop()];case 2:X.apply(Q,[K.sent()]),K.label=3;case 3:return++W,[3,1];case 4:return[2,$]}})})},J.prototype._topIdxOf=function(Z){return H1(this,void 0,void 0,function(){var Y,$,W,Q;return z1(this,function(X){switch(X.label){case 0:if(!Z.length)return[2,-1];Y=0,$=Z[Y],W=1,X.label=1;case 1:if(!(W<Z.length))return[3,4];return[4,this.compare(Z[W],$)];case 2:if(Q=X.sent(),Q<0)Y=W,$=Z[W];X.label=3;case 3:return++W,[3,1];case 4:return[2,Y]}})})},J.prototype._topOf=function(){var Z=[];for(var Y=0;Y<arguments.length;Y++)Z[Y]=arguments[Y];return H1(this,void 0,void 0,function(){var $;return z1(this,function(W){switch(W.label){case 0:return $=new J(this.compare),[4,$.init(Z)];case 1:return W.sent(),[2,$.peek()]}})})},J}(),z16=function(J,Z){var Y={label:0,sent:function(){if(Q[0]&1)throw Q[1];return Q[1]},trys:[],ops:[]},$,W,Q,X=Object.create((typeof Iterator==="function"?Iterator:Object).prototype);return X.next=K(0),X.throw=K(1),X.return=K(2),typeof Symbol==="function"&&(X[Symbol.iterator]=function(){return this}),X;function K(z){return function(F){return G([z,F])}}function G(z){if($)throw new TypeError("Generator is already executing.");while(X&&(X=0,z[0]&&(Y=0)),Y)try{if($=1,W&&(Q=z[0]&2?W.return:z[0]?W.throw||((Q=W.return)&&Q.call(W),0):W.next)&&!(Q=Q.call(W,z[1])).done)return Q;if(W=0,Q)z=[z[0]&2,Q.value];switch(z[0]){case 0:case 1:Q=z;break;case 4:return Y.label++,{value:z[1],done:!1};case 5:Y.label++,W=z[1],z=[0];continue;case 7:z=Y.ops.pop(),Y.trys.pop();continue;default:if((Q=Y.trys,!(Q=Q.length>0&&Q[Q.length-1]))&&(z[0]===6||z[0]===2)){Y=0;continue}if(z[0]===3&&(!Q||z[1]>Q[0]&&z[1]<Q[3])){Y.label=z[1];break}if(z[0]===6&&Y.label<Q[1]){Y.label=Q[1],Q=z;break}if(Q&&Y.label<Q[2]){Y.label=Q[2],Y.ops.push(z);break}if(Q[2])Y.ops.pop();Y.trys.pop();continue}z=Z.call(J,Y)}catch(F){z=[6,F],W=0}finally{$=Q=0}if(z[0]&5)throw z[1];return{value:z[0]?z[1]:void 0,done:!0}}},e8=function(J,Z){var Y=typeof Symbol==="function"&&J[Symbol.iterator];if(!Y)return J;var $=Y.call(J),W,Q=[],X;try{while((Z===void 0||Z-- >0)&&!(W=$.next()).done)Q.push(W.value)}catch(K){X={error:K}}finally{try{if(W&&!W.done&&(Y=$.return))Y.call($)}finally{if(X)throw X.error}}return Q},c6=function(J,Z,Y){if(Y||arguments.length===2){for(var $=0,W=Z.length,Q;$<W;$++)if(Q||!($ in Z)){if(!Q)Q=Array.prototype.slice.call(Z,0,$);Q[$]=Z[$]}}return J.concat(Q||Array.prototype.slice.call(Z))};var M71=function(){function J(Z){if(Z===void 0)Z=J.minComparator;var Y=this;this.compare=Z,this.heapArray=[],this._limit=0,this.offer=this.add,this.element=this.peek,this.poll=this.pop,this.removeAll=this.clear,this._invertedCompare=function($,W){return-1*Y.compare($,W)}}return J.getChildrenIndexOf=function(Z){return[Z*2+1,Z*2+2]},J.getParentIndexOf=function(Z){if(Z<=0)return-1;var Y=Z%2?1:2;return Math.floor((Z-Y)/2)},J.getSiblingIndexOf=function(Z){if(Z<=0)return-1;var Y=Z%2?1:-1;return Z+Y},J.minComparator=function(Z,Y){if(Z>Y)return 1;else if(Z<Y)return-1;else return 0},J.maxComparator=function(Z,Y){if(Y>Z)return 1;else if(Y<Z)return-1;else return 0},J.minComparatorNumber=function(Z,Y){return Z-Y},J.maxComparatorNumber=function(Z,Y){return Y-Z},J.defaultIsEqual=function(Z,Y){return Z===Y},J.print=function(Z){function Y(F){var V=J.getParentIndexOf(F);return Math.floor(Math.log2(V+1))}function $(F,V){var H="";for(;V>0;--V)H+=F;return H}var W=0,Q=[],X=Y(Z.length-1)+2,K=0;while(W<Z.length){var G=Y(W)+1;if(W===0)G=0;var z=String(Z.get(W));if(z.length>K)K=z.length;Q[G]=Q[G]||[],Q[G].push(z),W+=1}return Q.map(function(F,V){var H=Math.pow(2,X-V)-1;return $(" ",Math.floor(H/2)*K)+F.map(function(q){var U=(K-q.length)/2;return $(" ",Math.ceil(U))+q+$(" ",Math.floor(U))}).join($(" ",H*K))}).join(`
|
438
438
|
`)},J.heapify=function(Z,Y){var $=new J(Y);return $.heapArray=Z,$.init(),$},J.heappop=function(Z,Y){var $=new J(Y);return $.heapArray=Z,$.pop()},J.heappush=function(Z,Y,$){var W=new J($);W.heapArray=Z,W.push(Y)},J.heappushpop=function(Z,Y,$){var W=new J($);return W.heapArray=Z,W.pushpop(Y)},J.heapreplace=function(Z,Y,$){var W=new J($);return W.heapArray=Z,W.replace(Y)},J.heaptop=function(Z,Y,$){if(Y===void 0)Y=1;var W=new J($);return W.heapArray=Z,W.top(Y)},J.heapbottom=function(Z,Y,$){if(Y===void 0)Y=1;var W=new J($);return W.heapArray=Z,W.bottom(Y)},J.nlargest=function(Z,Y,$){var W=new J($);return W.heapArray=c6([],e8(Y),!1),W.init(),W.top(Z)},J.nsmallest=function(Z,Y,$){var W=new J($);return W.heapArray=c6([],e8(Y),!1),W.init(),W.bottom(Z)},J.prototype.add=function(Z){return this._sortNodeUp(this.heapArray.push(Z)-1),this._applyLimit(),!0},J.prototype.addAll=function(Z){var Y,$=this.length;(Y=this.heapArray).push.apply(Y,c6([],e8(Z),!1));for(var W=this.length;$<W;++$)this._sortNodeUp($);return this._applyLimit(),!0},J.prototype.bottom=function(Z){if(Z===void 0)Z=1;if(this.heapArray.length===0||Z<=0)return[];else if(this.heapArray.length===1)return[this.heapArray[0]];else if(Z>=this.heapArray.length)return c6([],e8(this.heapArray),!1);else return this._bottomN_push(~~Z)},J.prototype.check=function(){var Z=this;return this.heapArray.find(function(Y,$){return!!Z.getChildrenOf($).find(function(W){return Z.compare(Y,W)>0})})},J.prototype.clear=function(){this.heapArray=[]},J.prototype.clone=function(){var Z=new J(this.comparator());return Z.heapArray=this.toArray(),Z._limit=this._limit,Z},J.prototype.comparator=function(){return this.compare},J.prototype.contains=function(Z,Y){if(Y===void 0)Y=J.defaultIsEqual;return this.indexOf(Z,Y)!==-1},J.prototype.init=function(Z){if(Z)this.heapArray=c6([],e8(Z),!1);for(var Y=Math.floor(this.heapArray.length);Y>=0;--Y)this._sortNodeDown(Y);this._applyLimit()},J.prototype.isEmpty=function(){return this.length===0},J.prototype.indexOf=function(Z,Y){if(Y===void 0)Y=J.defaultIsEqual;if(this.heapArray.length===0)return-1;var $=[],W=0;while(W<this.heapArray.length){var Q=this.heapArray[W];if(Y(Q,Z))return W;else if(this.compare(Q,Z)<=0)$.push.apply($,c6([],e8(J.getChildrenIndexOf(W)),!1));W=$.shift()||this.heapArray.length}return-1},J.prototype.indexOfEvery=function(Z,Y){if(Y===void 0)Y=J.defaultIsEqual;if(this.heapArray.length===0)return[];var $=[],W=[],Q=0;while(Q<this.heapArray.length){var X=this.heapArray[Q];if(Y(X,Z))W.push(Q),$.push.apply($,c6([],e8(J.getChildrenIndexOf(Q)),!1));else if(this.compare(X,Z)<=0)$.push.apply($,c6([],e8(J.getChildrenIndexOf(Q)),!1));Q=$.shift()||this.heapArray.length}return W},J.prototype.leafs=function(){if(this.heapArray.length===0)return[];var Z=J.getParentIndexOf(this.heapArray.length-1);return this.heapArray.slice(Z+1)},Object.defineProperty(J.prototype,"length",{get:function(){return this.heapArray.length},enumerable:!1,configurable:!0}),Object.defineProperty(J.prototype,"limit",{get:function(){return this._limit},set:function(Z){if(Z<0||isNaN(Z))this._limit=0;else this._limit=~~Z;this._applyLimit()},enumerable:!1,configurable:!0}),J.prototype.setLimit=function(Z){if(this.limit=Z,Z<0||isNaN(Z))return NaN;else return this._limit},J.prototype.peek=function(){return this.heapArray[0]},J.prototype.pop=function(){var Z=this.heapArray.pop();if(this.length>0&&Z!==void 0)return this.replace(Z);return Z},J.prototype.push=function(){var Z=[];for(var Y=0;Y<arguments.length;Y++)Z[Y]=arguments[Y];if(Z.length<1)return!1;else if(Z.length===1)return this.add(Z[0]);else return this.addAll(Z)},J.prototype.pushpop=function(Z){var Y;if(this.compare(this.heapArray[0],Z)<0)Y=e8([this.heapArray[0],Z],2),Z=Y[0],this.heapArray[0]=Y[1],this._sortNodeDown(0);return Z},J.prototype.remove=function(Z,Y){var $=this;if(Y===void 0)Y=J.defaultIsEqual;if(!this.heapArray.length)return!1;if(Z===void 0)return this.pop(),!0;var W=[0];while(W.length){var Q=W.shift();if(Y(this.heapArray[Q],Z)){if(Q===0)this.pop();else if(Q===this.heapArray.length-1)this.heapArray.pop();else this.heapArray.splice(Q,1,this.heapArray.pop()),this._sortNodeUp(Q),this._sortNodeDown(Q);return!0}else if(this.compare(this.heapArray[Q],Z)<=0){var X=J.getChildrenIndexOf(Q).filter(function(K){return K<$.heapArray.length});W.push.apply(W,c6([],e8(X),!1))}}return!1},J.prototype.replace=function(Z){var Y=this.heapArray[0];return this.heapArray[0]=Z,this._sortNodeDown(0),Y},J.prototype.size=function(){return this.length},J.prototype.top=function(Z){if(Z===void 0)Z=1;if(this.heapArray.length===0||Z<=0)return[];else if(this.heapArray.length===1||Z===1)return[this.heapArray[0]];else if(Z>=this.heapArray.length)return c6([],e8(this.heapArray),!1);else return this._topN_push(~~Z)},J.prototype.toArray=function(){return c6([],e8(this.heapArray),!1)},J.prototype.toString=function(){return this.heapArray.toString()},J.prototype.get=function(Z){return this.heapArray[Z]},J.prototype.getChildrenOf=function(Z){var Y=this;return J.getChildrenIndexOf(Z).map(function($){return Y.heapArray[$]}).filter(function($){return $!==void 0})},J.prototype.getParentOf=function(Z){var Y=J.getParentIndexOf(Z);return this.heapArray[Y]},J.prototype[Symbol.iterator]=function(){return z16(this,function(Z){switch(Z.label){case 0:if(!this.length)return[3,2];return[4,this.pop()];case 1:return Z.sent(),[3,0];case 2:return[2]}})},J.prototype.iterator=function(){return this.toArray()},J.prototype._applyLimit=function(){if(this._limit>0&&this._limit<this.heapArray.length){var Z=this.heapArray.length-this._limit;while(Z)this.heapArray.pop(),--Z}},J.prototype._bottomN_push=function(Z){var Y=new J(this.compare);Y.limit=Z,Y.heapArray=this.heapArray.slice(-Z),Y.init();var $=this.heapArray.length-1-Z,W=J.getParentIndexOf($),Q=[];for(var X=$;X>W;--X)Q.push(X);var K=this.heapArray;while(Q.length){var X=Q.shift();if(this.compare(K[X],Y.peek())>0){if(Y.replace(K[X]),X%2)Q.push(J.getParentIndexOf(X))}}return Y.toArray()},J.prototype._moveNode=function(Z,Y){var $;$=e8([this.heapArray[Y],this.heapArray[Z]],2),this.heapArray[Z]=$[0],this.heapArray[Y]=$[1]},J.prototype._sortNodeDown=function(Z){var Y=this.heapArray.length;while(!0){var $=2*Z+1,W=$+1,Q=Z;if($<Y&&this.compare(this.heapArray[$],this.heapArray[Q])<0)Q=$;if(W<Y&&this.compare(this.heapArray[W],this.heapArray[Q])<0)Q=W;if(Q===Z)break;this._moveNode(Z,Q),Z=Q}},J.prototype._sortNodeUp=function(Z){while(Z>0){var Y=J.getParentIndexOf(Z);if(this.compare(this.heapArray[Z],this.heapArray[Y])<0)this._moveNode(Z,Y),Z=Y;else break}},J.prototype._topN_push=function(Z){var Y=new J(this._invertedCompare);Y.limit=Z;var $=[0],W=this.heapArray;while($.length){var Q=$.shift();if(Q<W.length){if(Y.length<Z)Y.push(W[Q]),$.push.apply($,c6([],e8(J.getChildrenIndexOf(Q)),!1));else if(this.compare(W[Q],Y.peek())<0)Y.replace(W[Q]),$.push.apply($,c6([],e8(J.getChildrenIndexOf(Q)),!1))}}return Y.toArray()},J.prototype._topN_fill=function(Z){var Y=this.heapArray,$=new J(this._invertedCompare);$.limit=Z,$.heapArray=Y.slice(0,Z),$.init();var W=J.getParentIndexOf(Z-1)+1,Q=[];for(var X=W;X<Z;++X)Q.push.apply(Q,c6([],e8(J.getChildrenIndexOf(X).filter(function(K){return K<Y.length})),!1));if((Z-1)%2)Q.push(Z);while(Q.length){var X=Q.shift();if(X<Y.length){if(this.compare(Y[X],$.peek())<0)$.replace(Y[X]),Q.push.apply(Q,c6([],e8(J.getChildrenIndexOf(X)),!1))}}return $.toArray()},J.prototype._topN_heap=function(Z){var Y=this.clone(),$=[];for(var W=0;W<Z;++W)$.push(Y.pop());return $},J.prototype._topIdxOf=function(Z){if(!Z.length)return-1;var Y=0,$=Z[Y];for(var W=1;W<Z.length;++W){var Q=this.compare(Z[W],$);if(Q<0)Y=W,$=Z[W]}return Y},J.prototype._topOf=function(){var Z=[];for(var Y=0;Y<arguments.length;Y++)Z[Y]=arguments[Y];var $=new J(this.compare);return $.init(Z),$.peek()},J}();class MV extends gZ{_faceSpeed=0;_faceTarget;_jumpHeight=0;_moveSpeed=0;_moveTarget;_moveIgnoreAxes={};_onFace;_onFaceComplete;_onMove;_onMoveComplete;face(J,Z,Y){this._faceTarget=J,this._faceSpeed=Z,this._onFace=Y?.faceCallback,this._onFaceComplete=Y?.faceCompleteCallback}jump(J){this._jumpHeight=J}move(J,Z,Y){this._moveTarget=J,this._moveSpeed=Z,this._moveIgnoreAxes=Y?.moveIgnoreAxes??{},this._onMove=Y?.moveCallback,this._onMoveComplete=Y?.moveCompleteCallback}tick(J,Z){if(super.tick(J,Z),!this._moveTarget&&!this._faceTarget&&!this._jumpHeight)return;let Y=Z/1000,$=J.position;if(J.isDynamic&&this._jumpHeight>0){let W=Math.abs(J.world.simulation.gravity.y),Q=Math.sqrt(2*W*this._jumpHeight);J.applyImpulse({x:0,y:Q*J.mass,z:0}),this._jumpHeight=0}if(this._moveTarget){let W={x:this._moveIgnoreAxes.x?0:this._moveTarget.x-$.x,y:this._moveIgnoreAxes.y?0:this._moveTarget.y-$.y,z:this._moveIgnoreAxes.z?0:this._moveTarget.z-$.z},Q=W.x*W.x+W.y*W.y+W.z*W.z;if(Q>0.1){let X=Math.sqrt(Q),K=this._moveSpeed*Y,z=Math.min(X,K)/X,F={x:$.x+W.x*z,y:$.y+W.y*z,z:$.z+W.z*z};if(J.setPosition(F),this._onMove)this._onMove(F,this._moveTarget)}else if(this._moveTarget=void 0,this._onMoveComplete){let X=this._onMoveComplete;this._onMove=void 0,this._onMoveComplete=void 0,X($)}}if(this._faceTarget){let W={x:this._faceTarget.x-$.x,z:this._faceTarget.z-$.z},Q=Math.atan2(-W.x,-W.z),X=J.rotation,K=Math.atan2(2*(X.w*X.y),1-2*(X.y*X.y)),G=Q-K;while(G>Math.PI)G-=2*Math.PI;while(G<-Math.PI)G+=2*Math.PI;if(Math.abs(G)>0.01){let z=this._faceSpeed*Y,F=Math.abs(G)<z?G:Math.sign(G)*z,H=(K+F)/2,q={x:0,y:Math.fround(Math.sin(H)),z:0,w:Math.fround(Math.cos(H))};if(J.setRotation(q),this._onFace)this._onFace(X,q)}else if(this._faceTarget=void 0,this._onFaceComplete){let z=this._onFaceComplete;this._onFaceComplete=void 0,z(J.rotation)}}}}class hA extends MV{_debug=!1;_entity;_maxFall=0;_maxJump=0;_maxOpenSetIterations=200;_onPathfindAbort;_onPathfindComplete;_onWaypointMoveComplete;_onWaypointMoveSkipped;_speed=0;_target;_verticalPenalty=0;_waypoints=[];_waypointNextIndex=0;_waypointTimeoutMs=2000;get debug(){return this._debug}get maxFall(){return this._maxFall}get maxJump(){return this._maxJump}get maxOpenSetIterations(){return this._maxOpenSetIterations}get speed(){return this._speed}get target(){return this._target}get verticalPenalty(){return this._verticalPenalty}get waypoints(){return this._waypoints}get waypointNextIndex(){return this._waypointNextIndex}get waypointTimeoutMs(){return this._waypointTimeoutMs}pathfind(J,Z,Y){if(this._target=J,this._speed=Z,this._debug=Y?.debug??!1,this._maxFall=Y?.maxFall?-Math.abs(Y.maxFall):0,this._maxJump=Y?.maxJump?Math.abs(Y.maxJump):0,this._maxOpenSetIterations=Y?.maxOpenSetIterations??200,this._onPathfindAbort=Y?.pathfindAbortCallback,this._onPathfindComplete=Y?.pathfindCompleteCallback,this._onWaypointMoveComplete=Y?.waypointMoveCompleteCallback,this._onWaypointMoveSkipped=Y?.waypointMoveSkippedCallback,this._verticalPenalty=Y?.verticalPenalty??0,this._waypoints=[],this._waypointNextIndex=0,this._waypointTimeoutMs=Y?.waypointTimeoutMs??2000/Z,!this._calculatePath())return!1;return this._moveToNextWaypoint(),!0}attach(J){super.attach(J),this._entity=J}detach(J){super.detach(J),this._entity=void 0}tick(J,Z){super.tick(J,Z)}_calculatePath(){if(!this._target||!this._entity?.world)return f.error("PathfindingEntityController._calculatePath: No target or world"),!1;let J=this._entity.height,Z=this._findGroundedStart();if(!Z){if(this._debug)f.warning(`PathfindingEntityController._calculatePath: No valid grounded start found within maxFall distance, path search aborted. Start: ${this._coordinateToKey(this._target)}, Target: ${this._coordinateToKey(this._target)}`);return!1}let Y={x:Math.floor(this._target.x),y:Math.floor(this._target.y),z:Math.floor(this._target.z)},$=Math.abs(Y.x-Z.x),W=Math.abs(Y.y-Z.y),Q=Math.abs(Y.z-Z.z);if($<=2&&W<=2&&Q<=2&&!this._isNeighborCoordinateBlocked(Z,Y,this._entity.height))return this._waypoints=[{x:Z.x+0.5,y:Z.y+J/2,z:Z.z+0.5},{x:Y.x+0.5,y:Y.y+J/2,z:Y.z+0.5}],!0;if(Z.x===Y.x&&Z.y===Y.y&&Z.z===Y.z)return this._waypoints=[{x:Z.x+0.5,y:Z.y+J/2,z:Z.z+0.5}],!0;let K=this._coordinateToKey(Z),G=new Map,z=new Map([[K,0]]),F=new Map([[K,this._pathfindingHeuristic(Z,Y)]]),V=new Set,H=new M71((N,P)=>{let D=F.get(N[0])??1/0,j=F.get(P[0])??1/0;return D-j});H.push([K,Z]);let q=[{x:0,y:0,z:1},{x:1,y:0,z:0},{x:0,y:0,z:-1},{x:-1,y:0,z:0},{x:1,y:0,z:1},{x:1,y:0,z:-1},{x:-1,y:0,z:1},{x:-1,y:0,z:-1}],U=[];for(let N=this._maxJump;N>=this._maxFall;N--){if(N===0)continue;let P=Math.abs(Z.y+N-Y.y);U.push({y:N,distanceToTargetY:P})}U.sort((N,P)=>N.distanceToTargetY-P.distanceToTargetY);let L=[...q,...U.flatMap(({y:N})=>q.map((P)=>({...P,y:N})))],w=0,O=Math.abs(Y.x-Z.x)+Math.abs(Y.y-Z.y)+Math.abs(Y.z-Z.z),R=Math.min(this._maxOpenSetIterations,O*20);while(!H.isEmpty()&&w<R){w++;let[N,P]=H.pop();if(P.x===Y.x&&P.y===Y.y&&P.z===Y.z){let C=this._reconstructPath(G,P);if(this._waypoints=C.map((k)=>({x:k.x+0.5,y:k.y+J/2,z:k.z+0.5})),this._debug)console.log(`PathfindingEntityController._calculatePath: Path found after ${w} open set iterations. Start: ${this._coordinateToKey(Z)}, Target: ${this._coordinateToKey(this._target)}`);return!0}V.add(N);let D=z.get(N),j=new Map;for(let C of L){let k=`${C.x},${C.z}`,I=C.y<0;if(I&&j.has(k))continue;let A={x:P.x+C.x,y:P.y+C.y,z:P.z+C.z};if(Math.abs(Y.x-A.x)+Math.abs(Y.y-A.y)+Math.abs(Y.z-A.z)>O*1.5)continue;let x=this._coordinateToKey(A);if(V.has(x))continue;let u=this._isNeighborCoordinateBlocked(P,A,this._entity.height);if(I&&u){j.set(k,!0);continue}if(u)continue;let h=Math.abs(C.x),d=Math.abs(C.y),W0=Math.abs(C.z),U0=d===0?0:this._verticalPenalty,B0=(Math.max(h,d,W0)===1&&h+d+W0>1?1.4:1)+U0,y0=D+B0,B1=z.get(x)??1/0;if(y0>=B1)continue;G.set(x,P),z.set(x,y0);let L8=y0+this._pathfindingHeuristic(A,Y);F.set(x,L8),H.push([x,A])}}if(w>=R){if(this._onPathfindAbort?.(),this._debug)f.warning(`PathfindingEntityController._calculatePath: Maximum open set iterations reached (${R}), path search aborted. Start: ${this._coordinateToKey(Z)}, Target: ${this._coordinateToKey(this._target)}`)}else if(this._debug)f.warning(`PathfindingEntityController._calculatePath: No valid path found. Start: ${this._coordinateToKey(Z)}, Target: ${this._coordinateToKey(this._target)}`);return this._target=void 0,this._waypoints=[],!1}_reconstructPath(J,Z){let Y=[Z],$=Z;while(J.has(this._coordinateToKey($)))$=J.get(this._coordinateToKey($)),Y.unshift($);return Y}_coordinateToKey(J){return`${J.x},${J.y},${J.z}`}_moveToNextWaypoint(){let J=this._waypointNextIndex>0?this._waypoints[this._waypointNextIndex-1]:void 0,Z=this._waypoints[this._waypointNextIndex];if(!Z||!this._entity)return;let Y=0;if(this._entity.isDynamic&&J&&Z.y>J.y){let $=Z.y-J.y,W=Math.min($,this._maxJump)+0.75;this.jump(W);let Q=Math.abs(this._entity.world.simulation.gravity.y),X=Math.sqrt(2*Q*W),K=J.x+0.5,G=J.z+0.5,z=Z.x+0.5,F=Z.z+0.5,V=z-K,H=F-G,q=Math.sqrt(V*V+H*H),U=X/Q,L=q/this._speed;Y=Math.min(U*0.8,L)*1000}setTimeout(()=>{if(!this._entity)return;let $=Date.now();this.face(Z,this._speed),this.move(Z,this._speed,{moveIgnoreAxes:{y:this._entity.isDynamic},moveCallback:()=>{if(Date.now()-$>this._waypointTimeoutMs&&this._waypointNextIndex<this._waypoints.length-1)this._onWaypointMoveSkipped?.(Z,this._waypointNextIndex),this._waypointNextIndex++,this._moveToNextWaypoint()},moveCompleteCallback:()=>{if(this._waypointNextIndex<this._waypoints.length-1)this._onWaypointMoveComplete?.(Z,this._waypointNextIndex),this._waypointNextIndex++,this._moveToNextWaypoint();else this._onPathfindComplete?.()}})},Y)}_pathfindingHeuristic(J,Z){return Math.abs(J.x-Z.x)+Math.abs(J.y-Z.y)+Math.abs(J.z-Z.z)}_isNeighborCoordinateBlocked(J,Z,Y){if(!this._entity?.world)return!1;let $=this._entity.world,W=Math.floor(Z.x),Q=Math.floor(Z.y),X=Math.floor(Z.z),K=Math.floor(J.x),G=Math.floor(J.z);if(!$.chunkLattice.hasBlock({x:W,y:Q-1,z:X}))return!0;for(let z=0;z<Y;z++)if($.chunkLattice.hasBlock({x:W,y:Q+z,z:X}))return!0;if(W!==K&&X!==G)for(let z=0;z<Y;z++){let F=$.chunkLattice.hasBlock({x:W,y:Q+z,z:G}),V=$.chunkLattice.hasBlock({x:K,y:Q+z,z:X});if(F||V)return!0}return!1}_findGroundedStart(){if(!this._entity?.world)return;let{x:J,y:Z,z:Y}=this._entity.position,$={x:Math.floor(J),y:Math.floor(Z),z:Math.floor(Y)};for(let W=0;W<=Math.abs(this._maxFall);W++)if(this._entity.world.chunkLattice.hasBlock({...$,y:$.y-W-1}))return{...$,y:$.y-W};return}}export{Tr8 as startServer,N41 as WorldManagerEvent,KK as WorldManager,R41 as WorldLoopEvent,qV as WorldLoop,kA as WorldEvent,UV as World,xk as WebServerEvent,cQ as WebServer,FK as Vector3,OV as Vector2,HV as Ticker,TA as SimulationEvent,FV as Simulation,MV as SimpleEntityController,VV as SceneUIManager,NA as SceneUIEvent,$V as SceneUI,j41 as SUPPORTED_INPUT_KEYS,NG as RigidBodyType,jY as RigidBody,B41 as ROTATION_UPDATE_THRESHOLD,zK as Quaternion,IO as PlayerUIEvent,GV as PlayerUI,U41 as PlayerManagerEvent,j5 as PlayerManager,WV as PlayerEvent,t4 as PlayerEntity,M41 as PlayerCameraMode,DA as PlayerCameraEvent,KV as PlayerCamera,XK as Player,QW as PersistenceManager,hA as PathfindingEntityController,L41 as POSITION_UPDATE_THRESHOLD_SQ,Sk as PORT,u5 as ModelRegistry,d6 as Matrix4,J7 as Matrix3,KW as Matrix2,O41 as LightType,XV as LightManager,PA as LightEvent,jA as Light,P41 as GameServerEvent,JJ as GameServer,S0 as EventRouter,f as ErrorHandler,QV as EntityManager,YV as EntityEvent,_8 as Entity,LV as DefaultPlayerEntityController,IA as DefaultPlayerEntity,w41 as DEFAULT_ENTITY_RIGID_BODY_OPTIONS,D9 as CollisionGroupsBuilder,lZ as CollisionGroup,PG as ColliderShape,zV as ColliderMap,R5 as Collider,Sj as CoefficientCombineRule,ZV as ChunkLattice,RA as ChunkEvent,_5 as Chunk,wV as ChatManager,EA as ChatEvent,xj as BlockTypeRegistryEvent,jG as BlockTypeRegistry,_j as BlockTypeEvent,N5 as BlockType,FW as Block,pA as BaseEntityControllerEvent,gZ as BaseEntityController,UK as AudioManager,fO as AudioEvent,qK as Audio};
|