@loaders.gl/gltf 4.4.0-alpha.17 → 4.4.0-alpha.18

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/dist/dist.dev.js CHANGED
@@ -170,6 +170,16 @@ var __exports__ = (() => {
170
170
 
171
171
  // ../worker-utils/src/lib/library-utils/library-utils.ts
172
172
  var loadLibraryPromises = {};
173
+ function extractLoadLibraryOptions(options = {}) {
174
+ const useLocalLibraries = options.useLocalLibraries ?? options.core?.useLocalLibraries;
175
+ const CDN = options.CDN ?? options.core?.CDN;
176
+ const modules = options.modules;
177
+ return {
178
+ ...useLocalLibraries !== void 0 ? { useLocalLibraries } : {},
179
+ ...CDN !== void 0 ? { CDN } : {},
180
+ ...modules !== void 0 ? { modules } : {}
181
+ };
182
+ }
173
183
  async function loadLibrary(libraryUrl, moduleName = null, options = {}, libraryName = null) {
174
184
  if (moduleName) {
175
185
  libraryUrl = getLibraryUrl(libraryUrl, moduleName, options, libraryName);
@@ -2936,17 +2946,18 @@ var __exports__ = (() => {
2936
2946
  Object.keys(BASIS_FORMAT_TO_OUTPUT_OPTIONS)
2937
2947
  );
2938
2948
  async function parseBasis(data, options = {}) {
2949
+ const loadLibraryOptions = extractLoadLibraryOptions(options);
2939
2950
  if (!options.basis?.containerFormat || options.basis.containerFormat === "auto") {
2940
2951
  if (isKTX(data)) {
2941
- const fileConstructors = await loadBasisEncoderModule(options?.core || {});
2952
+ const fileConstructors = await loadBasisEncoderModule(loadLibraryOptions);
2942
2953
  return parseKTX2File(fileConstructors.KTX2File, data, options);
2943
2954
  }
2944
- const { BasisFile } = await loadBasisTranscoderModule(options?.core || {});
2955
+ const { BasisFile } = await loadBasisTranscoderModule(loadLibraryOptions);
2945
2956
  return parseBasisFile(BasisFile, data, options);
2946
2957
  }
2947
2958
  switch (options.basis.module) {
2948
2959
  case "encoder":
2949
- const fileConstructors = await loadBasisEncoderModule(options?.core || {});
2960
+ const fileConstructors = await loadBasisEncoderModule(loadLibraryOptions);
2950
2961
  switch (options.basis.containerFormat) {
2951
2962
  case "ktx2":
2952
2963
  return parseKTX2File(fileConstructors.KTX2File, data, options);
@@ -2956,7 +2967,7 @@ var __exports__ = (() => {
2956
2967
  }
2957
2968
  case "transcoder":
2958
2969
  default:
2959
- const { BasisFile } = await loadBasisTranscoderModule(options.core || {});
2970
+ const { BasisFile } = await loadBasisTranscoderModule(loadLibraryOptions);
2960
2971
  return parseBasisFile(BasisFile, data, options);
2961
2972
  }
2962
2973
  }
@@ -3159,7 +3170,6 @@ var __exports__ = (() => {
3159
3170
  options: {
3160
3171
  basis: {
3161
3172
  format: "auto",
3162
- libraryPath: "libs/",
3163
3173
  containerFormat: "auto",
3164
3174
  module: "transcoder"
3165
3175
  }
@@ -4315,7 +4325,6 @@ var __exports__ = (() => {
4315
4325
  draco: {
4316
4326
  decoderType: typeof WebAssembly === "object" ? "wasm" : "js",
4317
4327
  // 'js' for IE11
4318
- libraryPath: "libs/",
4319
4328
  extraAttributes: {},
4320
4329
  attributeNameEntry: void 0
4321
4330
  }
@@ -4327,7 +4336,7 @@ var __exports__ = (() => {
4327
4336
  };
4328
4337
  async function parse(arrayBuffer, options) {
4329
4338
  const { draco } = await loadDracoDecoderModule(
4330
- options?.core,
4339
+ extractLoadLibraryOptions(options),
4331
4340
  options?.draco?.decoderType || "wasm"
4332
4341
  );
4333
4342
  const dracoParser = new DracoParser(draco);
package/dist/dist.min.js CHANGED
@@ -4,6 +4,6 @@
4
4
  else if (typeof define === 'function' && define.amd) define([], factory);
5
5
  else if (typeof exports === 'object') exports['loaders'] = factory();
6
6
  else root['loaders'] = factory();})(globalThis, function () {
7
- "use strict";var __exports__=(()=>{var On=Object.create;var ge=Object.defineProperty;var Ln=Object.getOwnPropertyDescriptor;var _n=Object.getOwnPropertyNames;var Sn=Object.getPrototypeOf,Jn=Object.prototype.hasOwnProperty;var Un=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),y=(r,e)=>{for(var t in e)ge(r,t,{get:e[t],enumerable:!0})},he=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of _n(e))!Jn.call(r,o)&&o!==t&&ge(r,o,{get:()=>e[o],enumerable:!(n=Ln(e,o))||n.enumerable});return r},Ce=(r,e,t)=>(he(r,e,"default"),t&&he(t,e,"default")),Hn=(r,e,t)=>(t=r!=null?On(Sn(r)):{},he(e||!r||!r.__esModule?ge(t,"default",{value:r,enumerable:!0}):t,r)),Nn=r=>he(ge({},"__esModule",{value:!0}),r);var Zt=Un((Ra,Wt)=>{Wt.exports=globalThis.loaders});var pe={};y(pe,{EXT_FEATURE_METADATA:()=>Bt,EXT_MESH_FEATURES:()=>at,EXT_STRUCTURAL_METADATA:()=>At,GLBLoader:()=>In,GLBWriter:()=>Rn,GLTFLoader:()=>ke,GLTFScenegraph:()=>l,GLTFWriter:()=>Fn,_getMemoryUsageGLTF:()=>pr,createExtMeshFeatures:()=>ct,createExtStructuralMetadata:()=>mt,postProcessGLTF:()=>wn});Ce(pe,Hn(Zt(),1));var Re={};y(Re,{createExtMeshFeatures:()=>ct,decode:()=>Oo,encode:()=>Lo,name:()=>at});var qt="4.4.0-alpha.17";async function re(r,e,t,n){return n._parse(r,e,t,n)}function T(r,e){if(!r)throw new Error(e||"loader assertion failed.")}var G={self:typeof self<"u"&&self,window:typeof window<"u"&&window,global:typeof global<"u"&&global,document:typeof document<"u"&&document},Pn=G.self||G.window||G.global||{},Kn=G.window||G.self||G.global||{},jn=G.global||G.self||G.window||{},vn=G.document||{};var ne=Boolean(typeof process!="object"||String(process)!=="[object process]"||process.browser);var zt=typeof process<"u"&&process.version&&/v([0-9]*)/.exec(process.version),Qn=zt&&parseFloat(zt[1])||0;var $t=r=>typeof SharedArrayBuffer<"u"&&r instanceof SharedArrayBuffer;function Ve(r){globalThis.loaders||={},globalThis.loaders.modules||={},Object.assign(globalThis.loaders.modules,r)}function We(r){return globalThis.loaders?.modules?.[r]||null}function Xn(){return globalThis._loadersgl_?.version||(globalThis._loadersgl_=globalThis._loadersgl_||{},globalThis._loadersgl_.version="4.4.0-alpha.17"),globalThis._loadersgl_.version}var er=Xn();function tr(r,e){if(!r)throw new Error(e||"loaders.gl assertion failed.")}var D={self:typeof self<"u"&&self,window:typeof window<"u"&&window,global:typeof global<"u"&&global,document:typeof document<"u"&&document},Na=D.self||D.window||D.global||{},Pa=D.window||D.self||D.global||{},Ka=D.global||D.self||D.window||{},ja=D.document||{};var L=typeof process!="object"||String(process)!=="[object process]"||process.browser,oe=typeof importScripts=="function",va=typeof window<"u"&&typeof window.orientation<"u",rr=typeof process<"u"&&process.version&&/v([0-9]*)/.exec(process.version),Qa=rr&&parseFloat(rr[1])||0;var Ze={};async function M(r,e=null,t={},n=null){return e&&(r=nr(r,e,t,n)),Ze[r]=Ze[r]||kn(r),await Ze[r]}function nr(r,e,t={},n=null){if(t?.core)throw new Error("loadLibrary: options.core must be pre-normalized");if(!t.useLocalLibraries&&r.startsWith("http"))return r;n=n||r;let o=t.modules||{};return o[n]?o[n]:L?t.CDN?(tr(t.CDN.startsWith("http")),`${t.CDN}/${e}@${er}/dist/libs/${n}`):oe?`../src/libs/${n}`:`modules/${e}/src/libs/${n}`:`modules/${e}/dist/libs/${n}`}async function kn(r){if(r.endsWith("wasm"))return await Vn(r);if(!L){let{requireFromFile:t}=globalThis.loaders||{};try{let n=await t?.(r);return n||!r.includes("/dist/libs/")?n:await t?.(r.replace("/dist/libs/","/src/libs/"))}catch(n){if(r.includes("/dist/libs/"))try{return await t?.(r.replace("/dist/libs/","/src/libs/"))}catch{}return console.error(n),null}}if(oe)return importScripts(r);let e=await Wn(r);return Yn(e,r)}function Yn(r,e){if(!L){let{requireFromString:n}=globalThis.loaders||{};return n?.(r,e)}if(oe)return eval.call(globalThis,r),null;let t=document.createElement("script");t.id=e;try{t.appendChild(document.createTextNode(r))}catch{t.text=r}return document.body.appendChild(t),null}async function Vn(r){let{readFileAsArrayBuffer:e}=globalThis.loaders||{};if(L||!e||r.startsWith("http"))return await(await fetch(r)).arrayBuffer();try{return await e(r)}catch{if(r.includes("/dist/libs/"))return await e(r.replace("/dist/libs/","/src/libs/"));throw new Error(`Failed to load ArrayBuffer from ${r}`)}}async function Wn(r){let{readFileAsText:e}=globalThis.loaders||{};if(L||!e||r.startsWith("http"))return await(await fetch(r)).text();try{return await e(r)}catch{if(r.includes("/dist/libs/"))return await e(r.replace("/dist/libs/","/src/libs/"));throw new Error(`Failed to load text from ${r}`)}}function sr(r,e=5){return typeof r=="string"?r.slice(0,e):ArrayBuffer.isView(r)?or(r.buffer,r.byteOffset,e):r instanceof ArrayBuffer?or(r,0,e):""}function or(r,e,t){if(r.byteLength<=e+t)return"";let n=new DataView(r),o="";for(let s=0;s<t;s++)o+=String.fromCharCode(n.getUint8(e+s));return o}function qe(r){try{return JSON.parse(r)}catch{throw new Error(`Failed to parse JSON from data starting with "${sr(r)}"`)}}function se(r,e,t){let n=t!==void 0?new Uint8Array(r).subarray(e,e+t):new Uint8Array(r).subarray(e);return new Uint8Array(n).buffer}function R(r,e){return T(r>=0),T(e>0),r+(e-1)&~(e-1)}function ze(r,e,t){let n;if(r instanceof ArrayBuffer)n=new Uint8Array(r);else{let o=r.byteOffset,s=r.byteLength;n=new Uint8Array(r.buffer||r.arrayBuffer,o,s)}return e.set(n,t),t+R(n.byteLength,4)}function be(r,e,t,n){let o=R(t.byteLength,n),s=o-t.byteLength;if(r){let i=new Uint8Array(r.buffer,r.byteOffset+e,t.byteLength),a=new Uint8Array(t);i.set(a);for(let c=0;c<s;++c)r.setUint8(e+t.byteLength+c,32)}return e+=o,e}function $e(r,e,t,n){let s=new TextEncoder().encode(t);return e=be(r,e,s,n),e}function J(r){if(r instanceof ArrayBuffer)return r;if($t(r))return ie(r);let{buffer:e,byteOffset:t,byteLength:n}=r;return e instanceof ArrayBuffer&&t===0&&n===e.byteLength?e:ie(e,t,n)}function ie(r,e=0,t=r.byteLength-e){let n=new Uint8Array(r,e,t),o=new Uint8Array(n.length);return o.set(n),o.buffer}var Zn=globalThis.loaders?.parseImageNode,et=typeof Image<"u",tt=typeof ImageBitmap<"u",qn=Boolean(Zn),rt=ne?!0:qn;function ir(r){switch(r){case"auto":return tt||et||rt;case"imagebitmap":return tt;case"image":return et;case"data":return rt;default:throw new Error(`@loaders.gl/images: image ${r} not supported in this environment`)}}function ar(){if(tt)return"imagebitmap";if(et)return"image";if(rt)return"data";throw new Error("Install '@loaders.gl/polyfills' to parse images under Node.js")}function cr(r){let e=zn(r);if(!e)throw new Error("Not an image");return e}function ae(r){switch(cr(r)){case"data":return r;case"image":case"imagebitmap":let e=document.createElement("canvas"),t=e.getContext("2d");if(!t)throw new Error("getImageData");return e.width=r.width,e.height=r.height,t.drawImage(r,0,0),t.getImageData(0,0,r.width,r.height);default:throw new Error("getImageData")}}function zn(r){return typeof ImageBitmap<"u"&&r instanceof ImageBitmap?"imagebitmap":typeof Image<"u"&&r instanceof Image?"image":r&&typeof r=="object"&&r.data&&r.width&&r.height?"data":null}var $n=/^data:image\/svg\+xml/,eo=/\.svg((\?|#).*)?$/;function xe(r){return r&&($n.test(r)||eo.test(r))}function fr(r,e){if(xe(e)){let n=new TextDecoder().decode(r);try{typeof unescape=="function"&&typeof encodeURIComponent=="function"&&(n=unescape(encodeURIComponent(n)))}catch(s){throw new Error(s.message)}return`data:image/svg+xml;base64,${btoa(n)}`}return nt(r,e)}function nt(r,e){if(xe(e))throw new Error("SVG cannot be parsed directly to imagebitmap");return new Blob([new Uint8Array(r)])}async function Ee(r,e,t){let n=fr(r,t),o=self.URL||self.webkitURL,s=typeof n!="string"&&o.createObjectURL(n);try{return await to(s||n,e)}finally{s&&o.revokeObjectURL(s)}}async function to(r,e){let t=new Image;return t.src=r,e.image&&e.image.decode&&t.decode?(await t.decode(),t):await new Promise((n,o)=>{try{t.onload=()=>n(t),t.onerror=s=>{let i=s instanceof Error?s.message:"error";o(new Error(i))}}catch(s){o(s)}})}var Ar=!0;async function ur(r,e,t){let n;xe(t)?n=await Ee(r,e,t):n=nt(r,t);let o=e&&e.imagebitmap;return await ro(n,o)}async function ro(r,e=null){if((no(e)||!Ar)&&(e=null),e)try{return await createImageBitmap(r,e)}catch(t){console.warn(t),Ar=!1}return await createImageBitmap(r)}function no(r){if(!r)return!0;for(let e in r)if(Object.prototype.hasOwnProperty.call(r,e))return!1;return!0}function mr(r){return!ao(r,"ftyp",4)||!(r[8]&96)?null:oo(r)}function oo(r){switch(so(r,8,12).replace("\0"," ").trim()){case"avif":case"avis":return{extension:"avif",mimeType:"image/avif"};default:return null}}function so(r,e,t){return String.fromCharCode(...r.slice(e,t))}function io(r){return[...r].map(e=>e.charCodeAt(0))}function ao(r,e,t=0){let n=io(e);for(let o=0;o<n.length;++o)if(n[o]!==r[o+t])return!1;return!0}var w=!1,ce=!0;function P(r){let e=fe(r);return fo(e)||mo(e)||Ao(e)||uo(e)||co(e)}function co(r){let e=new Uint8Array(r instanceof DataView?r.buffer:r),t=mr(e);return t?{mimeType:t.mimeType,width:0,height:0}:null}function fo(r){let e=fe(r);return e.byteLength>=24&&e.getUint32(0,w)===2303741511?{mimeType:"image/png",width:e.getUint32(16,w),height:e.getUint32(20,w)}:null}function Ao(r){let e=fe(r);return e.byteLength>=10&&e.getUint32(0,w)===1195984440?{mimeType:"image/gif",width:e.getUint16(6,ce),height:e.getUint16(8,ce)}:null}function uo(r){let e=fe(r);return e.byteLength>=14&&e.getUint16(0,w)===16973&&e.getUint32(2,ce)===e.byteLength?{mimeType:"image/bmp",width:e.getUint32(18,ce),height:e.getUint32(22,ce)}:null}function mo(r){let e=fe(r);if(!(e.byteLength>=3&&e.getUint16(0,w)===65496&&e.getUint8(2)===255))return null;let{tableMarkers:n,sofMarkers:o}=Bo(),s=2;for(;s+9<e.byteLength;){let i=e.getUint16(s,w);if(o.has(i))return{mimeType:"image/jpeg",height:e.getUint16(s+5,w),width:e.getUint16(s+7,w)};if(!n.has(i))return null;s+=2,s+=e.getUint16(s,w)}return null}function Bo(){let r=new Set([65499,65476,65484,65501,65534]);for(let t=65504;t<65520;++t)r.add(t);return{tableMarkers:r,sofMarkers:new Set([65472,65473,65474,65475,65477,65478,65479,65481,65482,65483,65485,65486,65487,65502])}}function fe(r){if(r instanceof DataView)return r;if(ArrayBuffer.isView(r))return new DataView(r.buffer);if(r instanceof ArrayBuffer)return new DataView(r);throw new Error("toDataView")}async function Br(r,e){let{mimeType:t}=P(r)||{},n=globalThis.loaders?.parseImageNode;return T(n),await n(r,t)}async function lr(r,e,t){e=e||{};let o=(e.image||{}).type||"auto",{url:s}=t||{},i=lo(o),a;switch(i){case"imagebitmap":a=await ur(r,e,s);break;case"image":a=await Ee(r,e,s);break;case"data":a=await Br(r,e);break;default:T(!1)}return o==="data"&&(a=ae(a)),a}function lo(r){switch(r){case"auto":case"data":return ar();default:return ir(r),r}}var po=["png","jpg","jpeg","gif","webp","bmp","ico","svg","avif"],ho=["image/png","image/jpeg","image/gif","image/webp","image/avif","image/bmp","image/vnd.microsoft.icon","image/svg+xml"],go={image:{type:"auto",decode:!0}},ot={dataType:null,batchType:null,id:"image",module:"images",name:"Images",version:qt,mimeTypes:ho,extensions:po,parse:lr,tests:[r=>Boolean(P(new DataView(r)))],options:go};var st={};function it(r){if(st[r]===void 0){let e=ne?bo(r):Co(r);st[r]=e}return st[r]}function Co(r){let e=["image/png","image/jpeg","image/gif"],t=globalThis.loaders?.imageFormatsNode||e,n=globalThis.loaders?.parseImageNode;return Boolean(n)&&t.includes(r)}function bo(r){switch(r){case"image/avif":case"image/webp":return xo(r);default:return!0}}function xo(r){try{return document.createElement("canvas").toDataURL(r).indexOf(`data:${r}`)===0}catch{return!1}}function h(r,e){if(!r)throw new Error(e||"assert failed: gltf")}var ye={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},Te={5120:1,5121:1,5122:2,5123:2,5125:4,5126:4};var Eo=1.33,dr=["SCALAR","VEC2","VEC3","VEC4"],yo=[[Int8Array,5120],[Uint8Array,5121],[Int16Array,5122],[Uint16Array,5123],[Uint32Array,5125],[Float32Array,5126],[Float64Array,5130]],To=new Map(yo),Mo={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},Fo={5120:1,5121:1,5122:2,5123:2,5125:4,5126:4},Io={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array};function Me(r){return dr[r-1]||dr[0]}function U(r){let e=To.get(r.constructor);if(!e)throw new Error("Illegal typed array");return e}function Q(r,e){let t=Io[r.componentType],n=Mo[r.type],o=Fo[r.componentType],s=r.count*n,i=r.count*n*o;h(i>=0&&i<=e.byteLength);let a=Te[r.componentType],c=ye[r.type];return{ArrayType:t,length:s,byteLength:i,componentByteSize:a,numberOfComponentsInElement:c}}function pr(r){let{images:e,bufferViews:t}=r;e=e||[],t=t||[];let n=e.map(i=>i.bufferView);t=t.filter(i=>!n.includes(i));let o=t.reduce((i,a)=>i+a.byteLength,0),s=e.reduce((i,a)=>{let{width:c,height:f}=a.image;return i+c*f},0);return o+Math.ceil(4*s*Eo)}function hr(r,e,t){let n=r.bufferViews[t];h(n);let o=n.buffer,s=e[o];h(s);let i=(n.byteOffset||0)+s.byteOffset;return new Uint8Array(s.arrayBuffer,i,n.byteLength)}function gr(r,e,t){let n=typeof t=="number"?r.accessors?.[t]:t;if(!n)throw new Error(`No gltf accessor ${JSON.stringify(t)}`);let o=r.bufferViews?.[n.bufferView||0];if(!o)throw new Error(`No gltf buffer view for accessor ${o}`);let{arrayBuffer:s,byteOffset:i}=e[o.buffer],a=(i||0)+(n.byteOffset||0)+(o.byteOffset||0),{ArrayType:c,length:f,componentByteSize:A,numberOfComponentsInElement:u}=Q(n,o),m=A*u,B=o.byteStride||m;if(typeof o.byteStride>"u"||o.byteStride===m)return new c(s,a,f);let d=new c(f);for(let p=0;p<n.count;p++){let x=new c(s,a+p*B,u);d.set(x,p*u)}return d}function Go(){return{asset:{version:"2.0",generator:"loaders.gl"},buffers:[],extensions:{},extensionsRequired:[],extensionsUsed:[]}}var l=class{gltf;sourceBuffers;byteLength;constructor(e){this.gltf={json:e?.json||Go(),buffers:e?.buffers||[],images:e?.images||[]},this.sourceBuffers=[],this.byteLength=0,this.gltf.buffers&&this.gltf.buffers[0]&&(this.byteLength=this.gltf.buffers[0].byteLength,this.sourceBuffers=[this.gltf.buffers[0]])}get json(){return this.gltf.json}getApplicationData(e){return this.json[e]}getExtraData(e){return(this.json.extras||{})[e]}hasExtension(e){let t=this.getUsedExtensions().find(o=>o===e),n=this.getRequiredExtensions().find(o=>o===e);return typeof t=="string"||typeof n=="string"}getExtension(e){let t=this.getUsedExtensions().find(o=>o===e),n=this.json.extensions||{};return t?n[e]:null}getRequiredExtension(e){return this.getRequiredExtensions().find(n=>n===e)?this.getExtension(e):null}getRequiredExtensions(){return this.json.extensionsRequired||[]}getUsedExtensions(){return this.json.extensionsUsed||[]}getRemovedExtensions(){return this.json.extensionsRemoved||[]}getObjectExtension(e,t){return(e.extensions||{})[t]}getScene(e){return this.getObject("scenes",e)}getNode(e){return this.getObject("nodes",e)}getSkin(e){return this.getObject("skins",e)}getMesh(e){return this.getObject("meshes",e)}getMaterial(e){return this.getObject("materials",e)}getAccessor(e){return this.getObject("accessors",e)}getTexture(e){return this.getObject("textures",e)}getSampler(e){return this.getObject("samplers",e)}getImage(e){return this.getObject("images",e)}getBufferView(e){return this.getObject("bufferViews",e)}getBuffer(e){return this.getObject("buffers",e)}getObject(e,t){if(typeof t=="object")return t;let n=this.json[e]&&this.json[e][t];if(!n)throw new Error(`glTF file error: Could not find ${e}[${t}]`);return n}getTypedArrayForBufferView(e){e=this.getBufferView(e);let t=e.buffer,n=this.gltf.buffers[t];h(n);let o=(e.byteOffset||0)+n.byteOffset;return new Uint8Array(n.arrayBuffer,o,e.byteLength)}getTypedArrayForAccessor(e){let t=this.getAccessor(e);return gr(this.gltf.json,this.gltf.buffers,t)}getTypedArrayForImageData(e){e=this.getAccessor(e);let t=this.getBufferView(e.bufferView),o=this.getBuffer(t.buffer).data,s=t.byteOffset||0;return new Uint8Array(o,s,t.byteLength)}addApplicationData(e,t){return this.json[e]=t,this}addExtraData(e,t){return this.json.extras=this.json.extras||{},this.json.extras[e]=t,this}addObjectExtension(e,t,n){return e.extensions=e.extensions||{},e.extensions[t]=n,this.registerUsedExtension(t),this}setObjectExtension(e,t,n){let o=e.extensions||{};o[t]=n}removeObjectExtension(e,t){let n=e?.extensions||{};if(n[t]){this.json.extensionsRemoved=this.json.extensionsRemoved||[];let o=this.json.extensionsRemoved;o.includes(t)||o.push(t)}delete n[t]}addExtension(e,t={}){return h(t),this.json.extensions=this.json.extensions||{},this.json.extensions[e]=t,this.registerUsedExtension(e),t}addRequiredExtension(e,t={}){return h(t),this.addExtension(e,t),this.registerRequiredExtension(e),t}registerUsedExtension(e){this.json.extensionsUsed=this.json.extensionsUsed||[],this.json.extensionsUsed.find(t=>t===e)||this.json.extensionsUsed.push(e)}registerRequiredExtension(e){this.registerUsedExtension(e),this.json.extensionsRequired=this.json.extensionsRequired||[],this.json.extensionsRequired.find(t=>t===e)||this.json.extensionsRequired.push(e)}removeExtension(e){if(this.json.extensions?.[e]){this.json.extensionsRemoved=this.json.extensionsRemoved||[];let t=this.json.extensionsRemoved;t.includes(e)||t.push(e)}this.json.extensions&&delete this.json.extensions[e],this.json.extensionsRequired&&this._removeStringFromArray(this.json.extensionsRequired,e),this.json.extensionsUsed&&this._removeStringFromArray(this.json.extensionsUsed,e)}setDefaultScene(e){this.json.scene=e}addScene(e){let{nodeIndices:t}=e;return this.json.scenes=this.json.scenes||[],this.json.scenes.push({nodes:t}),this.json.scenes.length-1}addNode(e){let{meshIndex:t,matrix:n}=e;this.json.nodes=this.json.nodes||[];let o={mesh:t};return n&&(o.matrix=n),this.json.nodes.push(o),this.json.nodes.length-1}addMesh(e){let{attributes:t,indices:n,material:o,mode:s=4}=e,a={primitives:[{attributes:this._addAttributes(t),mode:s}]};if(n){let c=this._addIndices(n);a.primitives[0].indices=c}return Number.isFinite(o)&&(a.primitives[0].material=o),this.json.meshes=this.json.meshes||[],this.json.meshes.push(a),this.json.meshes.length-1}addPointCloud(e){let n={primitives:[{attributes:this._addAttributes(e),mode:0}]};return this.json.meshes=this.json.meshes||[],this.json.meshes.push(n),this.json.meshes.length-1}addImage(e,t){let n=P(e),o=t||n?.mimeType,i={bufferView:this.addBufferView(e),mimeType:o};return this.json.images=this.json.images||[],this.json.images.push(i),this.json.images.length-1}addBufferView(e,t=0,n=this.byteLength){let o=e.byteLength;h(Number.isFinite(o)),this.sourceBuffers=this.sourceBuffers||[],this.sourceBuffers.push(e);let s={buffer:t,byteOffset:n,byteLength:o};return this.byteLength+=R(o,4),this.json.bufferViews=this.json.bufferViews||[],this.json.bufferViews.push(s),this.json.bufferViews.length-1}addAccessor(e,t){let n={bufferView:e,type:Me(t.size),componentType:t.componentType,count:t.count,max:t.max,min:t.min};return this.json.accessors=this.json.accessors||[],this.json.accessors.push(n),this.json.accessors.length-1}addBinaryBuffer(e,t={size:3}){let n=this.addBufferView(e),o={min:t.min,max:t.max};(!o.min||!o.max)&&(o=this._getAccessorMinMax(e,t.size));let s={size:t.size,componentType:U(e),count:Math.round(e.length/t.size),min:o.min,max:o.max};return this.addAccessor(n,Object.assign(s,t))}addTexture(e){let{imageIndex:t}=e,n={source:t};return this.json.textures=this.json.textures||[],this.json.textures.push(n),this.json.textures.length-1}addMaterial(e){return this.json.materials=this.json.materials||[],this.json.materials.push(e),this.json.materials.length-1}createBinaryChunk(){let e=this.byteLength,t=new ArrayBuffer(e),n=new Uint8Array(t),o=0;for(let s of this.sourceBuffers||[])o=ze(s,n,o);this.json?.buffers?.[0]?this.json.buffers[0].byteLength=e:this.json.buffers=[{byteLength:e}],this.gltf.binary=t,this.sourceBuffers=[t],this.gltf.buffers=[{arrayBuffer:t,byteOffset:0,byteLength:t.byteLength}]}_removeStringFromArray(e,t){let n=!0;for(;n;){let o=e.indexOf(t);o>-1?e.splice(o,1):n=!1}}_addAttributes(e={}){let t={};for(let n in e){let o=e[n],s=this._getGltfAttributeName(n),i=this.addBinaryBuffer(o.value,o);t[s]=i}return t}_addIndices(e){return this.addBinaryBuffer(e,{size:1})}_getGltfAttributeName(e){switch(e.toLowerCase()){case"position":case"positions":case"vertices":return"POSITION";case"normal":case"normals":return"NORMAL";case"color":case"colors":return"COLOR_0";case"texcoord":case"texcoords":return"TEXCOORD_0";default:return e}}_getAccessorMinMax(e,t){let n={min:null,max:null};if(e.length<t)return n;n.min=[],n.max=[];let o=e.subarray(0,t);for(let s of o)n.min.push(s),n.max.push(s);for(let s=t;s<e.length;s+=t)for(let i=0;i<t;i++)n.min[0+i]=Math.min(n.min[0+i],e[s+i]),n.max[0+i]=Math.max(n.max[0+i],e[s+i]);return n}};function Cr(r){return(r%1+1)%1}var br={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16,BOOLEAN:1,STRING:1,ENUM:1},Do={INT8:Int8Array,UINT8:Uint8Array,INT16:Int16Array,UINT16:Uint16Array,INT32:Int32Array,UINT32:Uint32Array,INT64:BigInt64Array,UINT64:BigUint64Array,FLOAT32:Float32Array,FLOAT64:Float64Array},xr={INT8:1,UINT8:1,INT16:2,UINT16:2,INT32:4,UINT32:4,INT64:8,UINT64:8,FLOAT32:4,FLOAT64:8};function Ae(r,e){return xr[e]*br[r]}function X(r,e,t,n){if(t!=="UINT8"&&t!=="UINT16"&&t!=="UINT32"&&t!=="UINT64")return null;let o=r.getTypedArrayForBufferView(e),s=k(o,"SCALAR",t,n+1);return s instanceof BigInt64Array||s instanceof BigUint64Array?null:s}function k(r,e,t,n=1){let o=br[e],s=Do[t],i=xr[t],a=n*o,c=a*i,f=r.buffer,A=r.byteOffset;return A%i!==0&&(f=new Uint8Array(f).slice(A,A+c).buffer,A=0),new s(J(f),A,a)}function Y(r,e,t){let n=`TEXCOORD_${e.texCoord||0}`,o=t.attributes[n],s=r.getTypedArrayForAccessor(o),i=r.gltf.json,a=e.index,c=i.textures?.[a]?.source;if(typeof c<"u"){let f=i.images?.[c]?.mimeType,A=r.gltf.images?.[c];if(A&&typeof A.width<"u"){let u=[];for(let m=0;m<s.length;m+=2){let B=Ro(A,f,s,m,e.channels);u.push(B)}return u}}return[]}function Fe(r,e,t,n,o){if(!t?.length)return;let s=[];for(let A of t){let u=n.findIndex(m=>m===A);u===-1&&(u=n.push(A)-1),s.push(u)}let i=new Uint32Array(s),a=r.gltf.buffers.push({arrayBuffer:i.buffer,byteOffset:i.byteOffset,byteLength:i.byteLength})-1,c=r.addBufferView(i,a,0),f=r.addAccessor(c,{size:1,componentType:U(i),count:i.length});o.attributes[e]=f}function Ro(r,e,t,n,o=[0]){let s={r:{offset:0,shift:0},g:{offset:1,shift:8},b:{offset:2,shift:16},a:{offset:3,shift:24}},i=t[n],a=t[n+1],c=1;e&&(e.indexOf("image/jpeg")!==-1||e.indexOf("image/png")!==-1)&&(c=4);let f=wo(i,a,r,c),A=0;for(let u of o){let m=typeof u=="number"?Object.values(s)[u]:s[u],B=f+m.offset,d=ae(r);if(d.data.length<=B)throw new Error(`${d.data.length} <= ${B}`);let p=d.data[B];A|=p<<m.shift}return A}function wo(r,e,t,n=1){let o=t.width,s=Cr(r)*(o-1),i=Math.round(s),a=t.height,c=Cr(e)*(a-1),f=Math.round(c),A=t.components?t.components:n;return(f*o+i)*A}function Ie(r,e,t,n,o){let s=[];for(let i=0;i<e;i++){let a=t[i],c=t[i+1]-t[i];if(c+a>n)break;let f=a/o,A=c/o;s.push(r.slice(f,f+A))}return s}function Ge(r,e,t){let n=[];for(let o=0;o<e;o++){let s=o*t;n.push(r.slice(s,s+t))}return n}function De(r,e,t,n){if(t)throw new Error("Not implemented - arrayOffsets for strings is specified");if(n){let o=[],s=new TextDecoder("utf8"),i=0;for(let a=0;a<r;a++){let c=n[a+1]-n[a];if(c+i<=e.length){let f=e.subarray(i,c+i),A=s.decode(f);o.push(A),i+=c}}return o}return[]}var V="EXT_mesh_features",at=V;async function Oo(r,e){let t=new l(r);_o(t,e)}function Lo(r,e){let t=new l(r);return Jo(t,e),t.createBinaryChunk(),t.gltf}function _o(r,e){let t=r.gltf.json;if(t.meshes)for(let n of t.meshes)for(let o of n.primitives)So(r,o,e)}function So(r,e,t){if(!t?.gltf?.loadBuffers)return;let o=e.extensions?.[V]?.featureIds;if(o)for(let s of o){let i;if(typeof s.attribute<"u"){let a=`_FEATURE_ID_${s.attribute}`,c=e.attributes[a];i=r.getTypedArrayForAccessor(c)}else typeof s.texture<"u"&&t?.gltf?.loadImages?i=Y(r,s.texture,e):i=[];s.data=i}}function Jo(r,e){let t=r.gltf.json.meshes;if(t)for(let n of t)for(let o of n.primitives)Uo(r,o)}function ct(r,e,t,n){e.extensions||(e.extensions={});let o=e.extensions[V];o||(o={featureIds:[]},e.extensions[V]=o);let{featureIds:s}=o,i={featureCount:t.length,propertyTable:n,data:t};s.push(i),r.addObjectExtension(e,V,o)}function Uo(r,e){let t=e.extensions?.[V];if(!t)return;let n=t.featureIds;n.forEach((o,s)=>{if(o.data){let{accessorKey:i,index:a}=Ho(e.attributes),c=new Uint32Array(o.data);n[s]={featureCount:c.length,propertyTable:o.propertyTable,attribute:a},r.gltf.buffers.push({arrayBuffer:c.buffer,byteOffset:c.byteOffset,byteLength:c.byteLength});let f=r.addBufferView(c),A=r.addAccessor(f,{size:1,componentType:U(c),count:c.length});e.attributes[i]=A}})}function Ho(r){let e="_FEATURE_ID_",t=Object.keys(r).filter(s=>s.indexOf(e)===0),n=-1;for(let s of t){let i=Number(s.substring(e.length));i>n&&(n=i)}return n++,{accessorKey:`${e}${n}`,index:n}}var we={};y(we,{createExtStructuralMetadata:()=>mt,decode:()=>No,encode:()=>Po,name:()=>At});var W="EXT_structural_metadata",At=W;async function No(r,e){let t=new l(r);Ko(t,e)}function Po(r,e){let t=new l(r);return ns(t,e),t.createBinaryChunk(),t.gltf}function Ko(r,e){if(!e.gltf?.loadBuffers)return;let t=r.getExtension(W);t&&(e.gltf?.loadImages&&jo(r,t),vo(r,t))}function jo(r,e){let t=e.propertyTextures,n=r.gltf.json;if(t&&n.meshes)for(let o of n.meshes)for(let s of o.primitives)Xo(r,t,s,e)}function vo(r,e){let t=e.schema;if(!t)return;let n=t.classes,o=e.propertyTables;if(n&&o)for(let s in n){let i=Qo(o,s);i&&Yo(r,t,i)}}function Qo(r,e){for(let t of r)if(t.class===e)return t;return null}function Xo(r,e,t,n){if(!e)return;let s=t.extensions?.[W]?.propertyTextures;if(s)for(let i of s){let a=e[i];ko(r,a,t,n)}}function ko(r,e,t,n){if(!e.properties)return;n.dataAttributeNames||(n.dataAttributeNames=[]);let o=e.class;for(let s in e.properties){let i=`${o}_${s}`,a=e.properties?.[s];if(!a)continue;a.data||(a.data=[]);let c=a.data,f=Y(r,a,t);f!==null&&(Fe(r,i,f,c,t),a.data=c,n.dataAttributeNames.push(i))}}function Yo(r,e,t){let n=e.classes?.[t.class];if(!n)throw new Error(`Incorrect data in the EXT_structural_metadata extension: no schema class with name ${t.class}`);let o=t.count;for(let s in n.properties){let i=n.properties[s],a=t.properties?.[s];if(a){let c=Vo(r,e,i,o,a);a.data=c}}}function Vo(r,e,t,n,o){let s=[],i=o.values,a=r.getTypedArrayForBufferView(i),c=Wo(r,t,o,n),f=Zo(r,o,n);switch(t.type){case"SCALAR":case"VEC2":case"VEC3":case"VEC4":case"MAT2":case"MAT3":case"MAT4":{s=qo(t,n,a,c);break}case"BOOLEAN":throw new Error(`Not implemented - classProperty.type=${t.type}`);case"STRING":{s=De(n,a,c,f);break}case"ENUM":{s=zo(e,t,n,a,c);break}default:throw new Error(`Unknown classProperty type ${t.type}`)}return s}function Wo(r,e,t,n){return e.array&&typeof e.count>"u"&&typeof t.arrayOffsets<"u"?X(r,t.arrayOffsets,t.arrayOffsetType||"UINT32",n):null}function Zo(r,e,t){return typeof e.stringOffsets<"u"?X(r,e.stringOffsets,e.stringOffsetType||"UINT32",t):null}function qo(r,e,t,n){let o=r.array,s=r.count,i=Ae(r.type,r.componentType),a=t.byteLength/i,c;return r.componentType?c=k(t,r.type,r.componentType,a):c=t,o?n?Ie(c,e,n,t.length,i):s?Ge(c,e,s):[]:c}function zo(r,e,t,n,o){let s=e.enumType;if(!s)throw new Error("Incorrect data in the EXT_structural_metadata extension: classProperty.enumType is not set for type ENUM");let i=r.enums?.[s];if(!i)throw new Error(`Incorrect data in the EXT_structural_metadata extension: schema.enums does't contain ${s}`);let a=i.valueType||"UINT16",c=Ae(e.type,a),f=n.byteLength/c,A=k(n,e.type,a,f);if(A||(A=n),e.array){if(o)return $o({valuesData:A,numberOfElements:t,arrayOffsets:o,valuesDataBytesLength:n.length,elementSize:c,enumEntry:i});let u=e.count;return u?es(A,t,u,i):[]}return ut(A,0,t,i)}function $o(r){let{valuesData:e,numberOfElements:t,arrayOffsets:n,valuesDataBytesLength:o,elementSize:s,enumEntry:i}=r,a=[];for(let c=0;c<t;c++){let f=n[c],A=n[c+1]-n[c];if(A+f>o)break;let u=f/s,m=A/s,B=ut(e,u,m,i);a.push(B)}return a}function es(r,e,t,n){let o=[];for(let s=0;s<e;s++){let i=t*s,a=ut(r,i,t,n);o.push(a)}return o}function ut(r,e,t,n){let o=[];for(let s=0;s<t;s++)if(r instanceof BigInt64Array||r instanceof BigUint64Array)o.push("");else{let i=r[e+s],a=ts(n,i);a?o.push(a.name):o.push("")}return o}function ts(r,e){for(let t of r.values)if(t.value===e)return t;return null}var rs="schemaClassId";function ns(r,e){let t=r.getExtension(W);if(t&&t.propertyTables)for(let n of t.propertyTables){let o=n.class,s=t.schema?.classes?.[o];n.properties&&s&&os(n,s,r)}}function os(r,e,t){for(let n in r.properties){let o=r.properties[n].data;if(o){let s=e.properties[n];if(s){let i=as(o,s,t);r.properties[n]=i}}}}function mt(r,e,t=rs){let n=r.getExtension(W);n||(n=r.addExtension(W)),n.schema=ss(e,t,n.schema);let o=is(e,t,n.schema);return n.propertyTables||(n.propertyTables=[]),n.propertyTables.push(o)-1}function ss(r,e,t){let n=t??{id:"schema_id"},o={properties:{}};for(let s of r){let i={type:s.elementType,componentType:s.componentType};o.properties[s.name]=i}return n.classes={},n.classes[e]=o,n}function is(r,e,t){let n={class:e,count:0},o=0,s=t.classes?.[e];for(let i of r){if(o===0&&(o=i.values.length),o!==i.values.length&&i.values.length)throw new Error("Illegal values in attributes");s?.properties[i.name]&&(n.properties||(n.properties={}),n.properties[i.name]={values:0,data:i.values})}return n.count=o,n}function as(r,e,t){let n={values:0};if(e.type==="STRING"){let{stringData:o,stringOffsets:s}=As(r);n.stringOffsets=ft(s,t),n.values=ft(o,t)}else if(e.type==="SCALAR"&&e.componentType){let o=fs(r,e.componentType);n.values=ft(o,t)}return n}var cs={INT8:Int8Array,UINT8:Uint8Array,INT16:Int16Array,UINT16:Uint16Array,INT32:Int32Array,UINT32:Uint32Array,INT64:Int32Array,UINT64:Uint32Array,FLOAT32:Float32Array,FLOAT64:Float64Array};function fs(r,e){let t=[];for(let o of r)t.push(Number(o));let n=cs[e];if(!n)throw new Error("Illegal component type");return new n(t)}function As(r){let e=new TextEncoder,t=[],n=0;for(let c of r){let f=e.encode(c);n+=f.length,t.push(f)}let o=new Uint8Array(n),s=[],i=0;for(let c of t)o.set(c,i),s.push(i),i+=c.length;s.push(i);let a=new Uint32Array(s);return{stringData:o,stringOffsets:a}}function ft(r,e){return e.gltf.buffers.push({arrayBuffer:J(r.buffer),byteOffset:r.byteOffset,byteLength:r.byteLength}),e.addBufferView(r)}var lt={};y(lt,{decode:()=>us,name:()=>Bt});var Er="EXT_feature_metadata",Bt=Er;async function us(r,e){let t=new l(r);ms(t,e)}function ms(r,e){if(!e.gltf?.loadBuffers)return;let t=r.getExtension(Er);t&&(e.gltf?.loadImages&&Bs(r,t),ls(r,t))}function Bs(r,e){let t=e.schema;if(!t)return;let n=t.classes,{featureTextures:o}=e;if(n&&o)for(let s in n){let i=n[s],a=ps(o,s);a&&gs(r,a,i)}}function ls(r,e){let t=e.schema;if(!t)return;let n=t.classes,o=e.featureTables;if(n&&o)for(let s in n){let i=ds(o,s);i&&hs(r,t,i)}}function ds(r,e){for(let t in r){let n=r[t];if(n.class===e)return n}return null}function ps(r,e){for(let t in r){let n=r[t];if(n.class===e)return n}return null}function hs(r,e,t){if(!t.class)return;let n=e.classes?.[t.class];if(!n)throw new Error(`Incorrect data in the EXT_structural_metadata extension: no schema class with name ${t.class}`);let o=t.count;for(let s in n.properties){let i=n.properties[s],a=t.properties?.[s];if(a){let c=Cs(r,e,i,o,a);a.data=c}}}function gs(r,e,t){let n=e.class;for(let o in t.properties){let s=e?.properties?.[o];if(s){let i=Ts(r,s,n);s.data=i}}}function Cs(r,e,t,n,o){let s=[],i=o.bufferView,a=r.getTypedArrayForBufferView(i),c=bs(r,t,o,n),f=xs(r,t,o,n);return t.type==="STRING"||t.componentType==="STRING"?s=De(n,a,c,f):Es(t)&&(s=ys(t,n,a,c)),s}function bs(r,e,t,n){return e.type==="ARRAY"&&typeof e.componentCount>"u"&&typeof t.arrayOffsetBufferView<"u"?X(r,t.arrayOffsetBufferView,t.offsetType||"UINT32",n):null}function xs(r,e,t,n){return typeof t.stringOffsetBufferView<"u"?X(r,t.stringOffsetBufferView,t.offsetType||"UINT32",n):null}function Es(r){let e=["UINT8","INT16","UINT16","INT32","UINT32","INT64","UINT64","FLOAT32","FLOAT64"];return e.includes(r.type)||typeof r.componentType<"u"&&e.includes(r.componentType)}function ys(r,e,t,n){let o=r.type==="ARRAY",s=r.componentCount,i="SCALAR",a=r.componentType||r.type,c=Ae(i,a),f=t.byteLength/c,A=k(t,i,a,f);return o?n?Ie(A,e,n,t.length,c):s?Ge(A,e,s):[]:A}function Ts(r,e,t){let n=r.gltf.json;if(!n.meshes)return[];let o=[];for(let s of n.meshes)for(let i of s.primitives)Ms(r,t,e,o,i);return o}function Ms(r,e,t,n,o){let s={channels:t.channels,...t.texture},i=Y(r,s,o);i&&Fe(r,e,i,n,o)}var H="4.4.0-alpha.17";var yr="4.4.0-alpha.17";var Oe={TRANSCODER:"basis_transcoder.js",TRANSCODER_WASM:"basis_transcoder.wasm",ENCODER:"basis_encoder.js",ENCODER_WASM:"basis_encoder.wasm"},Tr;async function pt(r){Ve(r.modules);let e=We("basis");return e||(Tr||=Fs(r),await Tr)}async function Fs(r){let e=null,t=null;return[e,t]=await Promise.all([await M(Oe.TRANSCODER,"textures",r),await M(Oe.TRANSCODER_WASM,"textures",r)]),e=e||globalThis.BASIS,await Is(e,t)}function Is(r,e){let t={};return e&&(t.wasmBinary=e),new Promise(n=>{r(t).then(o=>{let{BasisFile:s,initializeBasis:i}=o;i(),n({BasisFile:s})})})}var dt;async function ht(r){let e=r.modules||{};return e.basisEncoder?e.basisEncoder:(dt=dt||Gs(r),await dt)}async function Gs(r){let e=null,t=null;return[e,t]=await Promise.all([await M(Oe.ENCODER,"textures",r),await M(Oe.ENCODER_WASM,"textures",r)]),e=e||globalThis.BASIS,await Ds(e,t)}function Ds(r,e){let t={};return e&&(t.wasmBinary=e),new Promise(n=>{r(t).then(o=>{let{BasisFile:s,KTX2File:i,initializeBasis:a,BasisEncoder:c}=o;a(),n({BasisFile:s,KTX2File:i,BasisEncoder:c})})})}var Rs=["","WEBKIT_","MOZ_"],Mr={WEBGL_compressed_texture_s3tc:["bc1-rgb-unorm-webgl","bc1-rgba-unorm","bc2-rgba-unorm","bc3-rgba-unorm"],WEBGL_compressed_texture_s3tc_srgb:["bc1-rgb-unorm-srgb-webgl","bc1-rgba-unorm-srgb","bc2-rgba-unorm-srgb","bc3-rgba-unorm-srgb"],EXT_texture_compression_rgtc:["bc4-r-unorm","bc4-r-snorm","bc5-rg-unorm","bc5-rg-snorm"],EXT_texture_compression_bptc:["bc6h-rgb-ufloat","bc6h-rgb-float","bc7-rgba-unorm","bc7-rgba-unorm-srgb"],WEBGL_compressed_texture_etc1:["etc1-rbg-unorm-webgl"],WEBGL_compressed_texture_etc:["etc2-rgb8unorm","etc2-rgb8unorm-srgb","etc2-rgb8a1unorm","etc2-rgb8a1unorm-srgb","etc2-rgba8unorm","etc2-rgba8unorm-srgb","eac-r11unorm","eac-r11snorm","eac-rg11unorm","eac-rg11snorm"],WEBGL_compressed_texture_pvrtc:["pvrtc-rgb4unorm-webgl","pvrtc-rgba4unorm-webgl","pvrtc-rbg2unorm-webgl","pvrtc-rgba2unorm-webgl"],WEBGL_compressed_texture_atc:["atc-rgb-unorm-webgl","atc-rgba-unorm-webgl","atc-rgbai-unorm-webgl"],WEBGL_compressed_texture_astc:["astc-4x4-unorm","astc-4x4-unorm-srgb","astc-5x4-unorm","astc-5x4-unorm-srgb","astc-5x5-unorm","astc-5x5-unorm-srgb","astc-6x5-unorm","astc-6x5-unorm-srgb","astc-6x6-unorm","astc-6x6-unorm-srgb","astc-8x5-unorm","astc-8x5-unorm-srgb","astc-8x6-unorm","astc-8x6-unorm-srgb","astc-8x8-unorm","astc-8x8-unorm-srgb","astc-10x5-unorm","astc-10x5-unorm-srgb","astc-10x6-unorm","astc-10x6-unorm-srgb","astc-10x8-unorm","astc-10x8-unorm-srgb","astc-10x10-unorm","astc-10x10-unorm-srgb","astc-12x10-unorm","astc-12x10-unorm-srgb","astc-12x12-unorm","astc-12x12-unorm-srgb"]};var Le=null;function Fr(r){if(!Le){r=r||ws()||void 0,Le=new Set;for(let e of Rs)for(let t in Mr)if(r&&r.getExtension(`${e}${t}`))for(let n of Mr[t])Le.add(n)}return Le}function ws(){try{return document.createElement("canvas").getContext("webgl")}catch{return null}}var E=[171,75,84,88,32,50,48,187,13,10,26,10];function Ir(r){let e=new Uint8Array(r);return!(e.byteLength<E.length||e[0]!==E[0]||e[1]!==E[1]||e[2]!==E[2]||e[3]!==E[3]||e[4]!==E[4]||e[5]!==E[5]||e[6]!==E[6]||e[7]!==E[7]||e[8]!==E[8]||e[9]!==E[9]||e[10]!==E[10]||e[11]!==E[11])}var Rr={etc1:{basisFormat:0,compressed:!0,format:36196,textureFormat:"etc1-rbg-unorm-webgl"},etc2:{basisFormat:1,compressed:!0,format:37493,textureFormat:"etc2-rgba8unorm"},bc1:{basisFormat:2,compressed:!0,format:33776,textureFormat:"bc1-rgb-unorm-webgl"},bc3:{basisFormat:3,compressed:!0,format:33779,textureFormat:"bc3-rgba-unorm"},bc4:{basisFormat:4,compressed:!0,format:36283,textureFormat:"bc4-r-unorm"},bc5:{basisFormat:5,compressed:!0,format:36285,textureFormat:"bc5-rg-unorm"},"bc7-m6-opaque-only":{basisFormat:6,compressed:!0,format:36492,textureFormat:"bc7-rgba-unorm"},"bc7-m5":{basisFormat:7,compressed:!0,format:36492,textureFormat:"bc7-rgba-unorm"},"pvrtc1-4-rgb":{basisFormat:8,compressed:!0,format:35840,textureFormat:"pvrtc-rgb4unorm-webgl"},"pvrtc1-4-rgba":{basisFormat:9,compressed:!0,format:35842,textureFormat:"pvrtc-rgba4unorm-webgl"},"astc-4x4":{basisFormat:10,compressed:!0,format:37808,textureFormat:"astc-4x4-unorm"},"atc-rgb":{basisFormat:11,compressed:!0,format:35986,textureFormat:"atc-rgb-unorm-webgl"},"atc-rgba-interpolated-alpha":{basisFormat:12,compressed:!0,format:34798,textureFormat:"atc-rgbai-unorm-webgl"},rgba32:{basisFormat:13,compressed:!1,format:32856,textureFormat:"rgba8unorm"},rgb565:{basisFormat:14,compressed:!1,format:36194,textureFormat:"rgb565unorm-webgl"},bgr565:{basisFormat:15,compressed:!1,format:36194,textureFormat:"rgb565unorm-webgl"},rgba4444:{basisFormat:16,compressed:!1,format:32854,textureFormat:"rgba4unorm-webgl"}},lA=Object.freeze(Object.keys(Rr));async function wr(r,e={}){if(!e.basis?.containerFormat||e.basis.containerFormat==="auto"){if(Ir(r)){let n=await ht(e?.core||{});return Gr(n.KTX2File,r,e)}let{BasisFile:t}=await pt(e?.core||{});return gt(t,r,e)}switch(e.basis.module){case"encoder":let t=await ht(e?.core||{});switch(e.basis.containerFormat){case"ktx2":return Gr(t.KTX2File,r,e);case"basis":default:return gt(t.BasisFile,r,e)}case"transcoder":default:let{BasisFile:n}=await pt(e.core||{});return gt(n,r,e)}}function gt(r,e,t){let n=new r(new Uint8Array(e));try{if(!n.startTranscoding())throw new Error("Failed to start basis transcoding");let o=n.getNumImages(),s=[];for(let i=0;i<o;i++){let a=n.getNumLevels(i),c=[];for(let f=0;f<a;f++)c.push(_s(n,i,f,t));s.push(c)}return s}finally{n.close(),n.delete()}}function _s(r,e,t,n){let o=r.getImageWidth(e,t),s=r.getImageHeight(e,t),i=r.getHasAlpha(),{compressed:a,format:c,basisFormat:f,textureFormat:A}=Or(n,i),u=r.getImageTranscodedSizeInBytes(e,t,f),m=new Uint8Array(u);if(!r.transcodeImage(m,e,t,f,0,0))throw new Error("failed to start Basis transcoding");return{shape:"texture-level",width:o,height:s,data:m,compressed:a,...c!==void 0?{format:c}:{},...A!==void 0?{textureFormat:A}:{},hasAlpha:i}}function Gr(r,e,t){let n=new r(new Uint8Array(e));try{if(!n.startTranscoding())throw new Error("failed to start KTX2 transcoding");let o=n.getLevels(),s=[];for(let i=0;i<o;i++)s.push(Ss(n,i,t));return[s]}finally{n.close(),n.delete()}}function Ss(r,e,t){let{alphaFlag:n,height:o,width:s}=r.getImageLevelInfo(e,0,0),{compressed:i,format:a,basisFormat:c,textureFormat:f}=Or(t,n),A=r.getImageTranscodedSizeInBytes(e,0,0,c),u=new Uint8Array(A);if(!r.transcodeImage(u,e,0,0,c,0,-1,-1))throw new Error("Failed to transcode KTX2 image");return{shape:"texture-level",width:s,height:o,data:u,compressed:i,...a!==void 0?{format:a}:{},...f!==void 0?{textureFormat:f}:{},levelSize:A,hasAlpha:n}}function Or(r,e){let t=r.basis?.format||"auto";t==="auto"&&(t=r.basis?.supportedTextureFormats?Dr(r.basis.supportedTextureFormats):Dr()),typeof t=="object"&&(t=e?t.alpha:t.noAlpha);let n=t.toLowerCase(),o=Rr[n];if(!o)throw new Error(`Unknown Basis format ${t}`);return o}function Dr(r=Fr()){let e=new Set(r);return Z(e,["astc-4x4-unorm","astc-4x4-unorm-srgb"])?"astc-4x4":Z(e,["bc7-rgba-unorm","bc7-rgba-unorm-srgb"])?{alpha:"bc7-m5",noAlpha:"bc7-m6-opaque-only"}:Z(e,["bc1-rgb-unorm-webgl","bc1-rgb-unorm-srgb-webgl","bc1-rgba-unorm","bc1-rgba-unorm-srgb","bc2-rgba-unorm","bc2-rgba-unorm-srgb","bc3-rgba-unorm","bc3-rgba-unorm-srgb"])?{alpha:"bc3",noAlpha:"bc1"}:Z(e,["pvrtc-rgb4unorm-webgl","pvrtc-rgba4unorm-webgl","pvrtc-rbg2unorm-webgl","pvrtc-rgba2unorm-webgl"])?{alpha:"pvrtc1-4-rgba",noAlpha:"pvrtc1-4-rgb"}:Z(e,["etc2-rgb8unorm","etc2-rgb8unorm-srgb","etc2-rgb8a1unorm","etc2-rgb8a1unorm-srgb","etc2-rgba8unorm","etc2-rgba8unorm-srgb","eac-r11unorm","eac-r11snorm","eac-rg11unorm","eac-rg11snorm"])?"etc2":e.has("etc1-rbg-unorm-webgl")?"etc1":Z(e,["atc-rgb-unorm-webgl","atc-rgba-unorm-webgl","atc-rgbai-unorm-webgl"])?{alpha:"atc-rgba-interpolated-alpha",noAlpha:"atc-rgb"}:"rgb565"}function Z(r,e){return e.some(t=>r.has(t))}var Lr={dataType:null,batchType:null,name:"Basis",id:"basis",module:"textures",version:yr,worker:!0,extensions:["basis","ktx2"],mimeTypes:["application/octet-stream","image/ktx2"],tests:["sB"],binary:!0,options:{basis:{format:"auto",libraryPath:"libs/",containerFormat:"auto",module:"transcoder"}}},Ct={...Lr,parse:wr};var q=!0,_r=1735152710,Et=12,_e=8,Js=1313821514,Us=5130562,Hs=0,Ns=0,Ps=1;function Ks(r,e=0){return`${String.fromCharCode(r.getUint8(e+0))}${String.fromCharCode(r.getUint8(e+1))}${String.fromCharCode(r.getUint8(e+2))}${String.fromCharCode(r.getUint8(e+3))}`}function Sr(r,e=0,t={}){let n=new DataView(r),{magic:o=_r}=t,s=n.getUint32(e,!1);return s===o||s===_r}function Se(r,e,t=0,n={}){let o=new DataView(e),s=Ks(o,t+0),i=o.getUint32(t+4,q),a=o.getUint32(t+8,q);switch(Object.assign(r,{header:{byteOffset:t,byteLength:a,hasBinChunk:!1},type:s,version:i,json:{},binChunks:[]}),t+=Et,r.version){case 1:return js(r,o,t);case 2:return vs(r,o,t,n={});default:throw new Error(`Invalid GLB version ${r.version}. Only supports version 1 and 2.`)}}function js(r,e,t){T(r.header.byteLength>Et+_e);let n=e.getUint32(t+0,q),o=e.getUint32(t+4,q);return t+=_e,T(o===Hs),bt(r,e,t,n),t+=n,t+=xt(r,e,t,r.header.byteLength),t}function vs(r,e,t,n){return T(r.header.byteLength>Et+_e),Qs(r,e,t,n),t+r.header.byteLength}function Qs(r,e,t,n){for(;t+8<=r.header.byteLength;){let o=e.getUint32(t+0,q),s=e.getUint32(t+4,q);switch(t+=_e,s){case Js:bt(r,e,t,o);break;case Us:xt(r,e,t,o);break;case Ns:n.strict||bt(r,e,t,o);break;case Ps:n.strict||xt(r,e,t,o);break;default:break}t+=R(o,4)}return t}function bt(r,e,t,n){let o=new Uint8Array(e.buffer,t,n),i=new TextDecoder("utf8").decode(o);return r.json=JSON.parse(i),R(n,4)}function xt(r,e,t,n){return r.header.hasBinChunk=!0,r.binChunks.push({byteOffset:t,byteLength:n,arrayBuffer:e.buffer}),R(n,4)}function yt(r,e){if(r.startsWith("data:")||r.startsWith("http:")||r.startsWith("https:"))return r;let n=e?.core?.baseUri||e.baseUri||e.uri;if(!n)throw new Error(`'baseUri' must be provided to resolve relative url ${r}`);return n.substr(0,n.lastIndexOf("/")+1)+r}var Mt={};y(Mt,{decode:()=>ri,name:()=>ti});var Xs="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",ks="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",Ys=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]),Vs=new Uint8Array([32,0,65,253,3,1,2,34,4,106,6,5,11,8,7,20,13,33,12,16,128,9,116,64,19,113,127,15,10,21,22,14,255,66,24,54,136,107,18,23,192,26,114,118,132,17,77,101,130,144,27,87,131,44,45,74,156,154,70,167]),Ws={0:"",1:"meshopt_decodeFilterOct",2:"meshopt_decodeFilterQuat",3:"meshopt_decodeFilterExp",NONE:"",OCTAHEDRAL:"meshopt_decodeFilterOct",QUATERNION:"meshopt_decodeFilterQuat",EXPONENTIAL:"meshopt_decodeFilterExp"},Zs={0:"meshopt_decodeVertexBuffer",1:"meshopt_decodeIndexBuffer",2:"meshopt_decodeIndexSequence",ATTRIBUTES:"meshopt_decodeVertexBuffer",TRIANGLES:"meshopt_decodeIndexBuffer",INDICES:"meshopt_decodeIndexSequence"};async function Jr(r,e,t,n,o,s="NONE"){let i=await qs();ei(i,i.exports[Zs[o]],r,e,t,n,i.exports[Ws[s||"NONE"]])}var Tt;async function qs(){return Tt||(Tt=zs()),Tt}async function zs(){let r=Xs;WebAssembly.validate(Ys)&&(r=ks,console.log("Warning: meshopt_decoder is using experimental SIMD support"));let e=await WebAssembly.instantiate($s(r),{});return await e.instance.exports.__wasm_call_ctors(),e.instance}function $s(r){let e=new Uint8Array(r.length);for(let n=0;n<r.length;++n){let o=r.charCodeAt(n);e[n]=o>96?o-71:o>64?o-65:o>47?o+4:o>46?63:62}let t=0;for(let n=0;n<r.length;++n)e[t++]=e[n]<60?Vs[e[n]]:(e[n]-60)*64+e[++n];return e.buffer.slice(0,t)}function ei(r,e,t,n,o,s,i){let a=r.exports.sbrk,c=n+3&-4,f=a(c*o),A=a(s.length),u=new Uint8Array(r.exports.memory.buffer);u.set(s,A);let m=e(f,n,o,A,s.length);if(m===0&&i&&i(f,c,o),t.set(u.subarray(f,f+n*o)),a(f-a(0)),m!==0)throw new Error(`Malformed buffer data: ${m}`)}var Je="EXT_meshopt_compression",ti=Je;async function ri(r,e){let t=new l(r);if(!e?.gltf?.decompressMeshes||!e.gltf?.loadBuffers)return;let n=[];for(let o of r.json.bufferViews||[])n.push(ni(t,o));await Promise.all(n),t.removeExtension(Je)}async function ni(r,e){let t=r.getObjectExtension(e,Je);if(t){let{byteOffset:n=0,byteLength:o=0,byteStride:s,count:i,mode:a,filter:c="NONE",buffer:f}=t,A=r.gltf.buffers[f],u=new Uint8Array(A.arrayBuffer,A.byteOffset+n,o),m=new Uint8Array(r.gltf.buffers[e.buffer].arrayBuffer,e.byteOffset,e.byteLength);await Jr(m,i,s,u,a,c),r.removeObjectExtension(e,Je)}}var Ft={};y(Ft,{name:()=>oi,preprocess:()=>si});var z="EXT_texture_webp",oi=z;function si(r,e){let t=new l(r);if(!it("image/webp")){if(t.getRequiredExtensions().includes(z))throw new Error(`gltf: Required extension ${z} not supported by browser`);return}let{json:n}=t;for(let o of n.textures||[]){let s=t.getObjectExtension(o,z);s&&(o.source=s.source),t.removeObjectExtension(o,z)}t.removeExtension(z)}var It={};y(It,{name:()=>ii,preprocess:()=>ai});var Ue="KHR_texture_basisu",ii=Ue;function ai(r,e){let t=new l(r),{json:n}=t;for(let o of n.textures||[]){let s=t.getObjectExtension(o,Ue);s&&(o.source=s.source,t.removeObjectExtension(o,Ue))}t.removeExtension(Ue)}var _t={};y(_t,{decode:()=>yi,encode:()=>Ti,name:()=>xi,preprocess:()=>Ei});var ci="1.5.6",fi="1.4.1",Gt=`https://www.gstatic.com/draco/versioned/decoders/${ci}`,g={DECODER:"draco_wasm_wrapper.js",DECODER_WASM:"draco_decoder.wasm",FALLBACK_DECODER:"draco_decoder.js",ENCODER:"draco_encoder.js"},ue={[g.DECODER]:`${Gt}/${g.DECODER}`,[g.DECODER_WASM]:`${Gt}/${g.DECODER_WASM}`,[g.FALLBACK_DECODER]:`${Gt}/${g.FALLBACK_DECODER}`,[g.ENCODER]:`https://raw.githubusercontent.com/google/draco/${fi}/javascript/${g.ENCODER}`},Dt;async function Hr(r={},e){let t=r.modules||{};return t.draco3d?Dt||=t.draco3d.createDecoderModule({}).then(n=>({draco:n})):Dt||=Ai(r,e),await Dt}function Ur(r,e){if(r&&typeof r=="object"){if(r.default)return r.default;if(r[e])return r[e]}return r}async function Ai(r,e){let t,n;switch(e){case"js":t=await M(ue[g.FALLBACK_DECODER],"draco",r,g.FALLBACK_DECODER);break;case"wasm":default:try{[t,n]=await Promise.all([await M(ue[g.DECODER],"draco",r,g.DECODER),await M(ue[g.DECODER_WASM],"draco",r,g.DECODER_WASM)])}catch{t=null,n=null}}return t=Ur(t,"DracoDecoderModule"),t=t||globalThis.DracoDecoderModule,!t&&!L&&([t,n]=await Promise.all([await M(ue[g.DECODER],"draco",{...r,useLocalLibraries:!0},g.DECODER),await M(ue[g.DECODER_WASM],"draco",{...r,useLocalLibraries:!0},g.DECODER_WASM)]),t=Ur(t,"DracoDecoderModule"),t=t||globalThis.DracoDecoderModule),await ui(t,n)}function ui(r,e){if(typeof r!="function")throw new Error("DracoDecoderModule could not be loaded");let t={};return e&&(t.wasmBinary=e),new Promise(n=>{r({...t,onModuleLoaded:o=>n({draco:o})})})}var Nr="4.4.0-alpha.17";function Pr(r){switch(r.constructor){case Int8Array:return"int8";case Uint8Array:case Uint8ClampedArray:return"uint8";case Int16Array:return"int16";case Uint16Array:return"uint16";case Int32Array:return"int32";case Uint32Array:return"uint32";case Float32Array:return"float32";case Float64Array:return"float64";default:return"null"}}function Rt(r){let e=1/0,t=1/0,n=1/0,o=-1/0,s=-1/0,i=-1/0,a=r.POSITION?r.POSITION.value:[],c=a&&a.length;for(let f=0;f<c;f+=3){let A=a[f],u=a[f+1],m=a[f+2];e=A<e?A:e,t=u<t?u:t,n=m<n?m:n,o=A>o?A:o,s=u>s?u:s,i=m>i?m:i}return[[e,t,n],[o,s,i]]}function wt(r,e,t){let n=Pr(e.value),o=t||Kr(e);return{name:r,type:{type:"fixed-size-list",listSize:e.size,children:[{name:"value",type:n}]},nullable:!1,metadata:o}}function Kr(r){let e={};return"byteOffset"in r&&(e.byteOffset=r.byteOffset.toString(10)),"byteStride"in r&&(e.byteStride=r.byteStride.toString(10)),"normalized"in r&&(e.normalized=r.normalized.toString()),e}function vr(r,e,t){let n=Qr(e.metadata),o=[],s=mi(e.attributes);for(let i in r){let a=r[i],c=jr(i,a,s[i]);o.push(c)}if(t){let i=jr("indices",t);o.push(i)}return{fields:o,metadata:n}}function mi(r){let e={};for(let t in r){let n=r[t];e[n.name||"undefined"]=n}return e}function jr(r,e,t){let n=t?Qr(t.metadata):void 0;return wt(r,e,n)}function Qr(r){Object.entries(r);let e={};for(let t in r)e[`${t}.string`]=JSON.stringify(r[t]);return e}var Xr={POSITION:"POSITION",NORMAL:"NORMAL",COLOR:"COLOR_0",TEX_COORD:"TEXCOORD_0"},Bi={1:Int8Array,2:Uint8Array,3:Int16Array,4:Uint16Array,5:Int32Array,6:Uint32Array,9:Float32Array},li=4,me=class{draco;decoder;metadataQuerier;constructor(e){this.draco=e,this.decoder=new this.draco.Decoder,this.metadataQuerier=new this.draco.MetadataQuerier}destroy(){this.draco.destroy(this.decoder),this.draco.destroy(this.metadataQuerier)}parseSync(e,t={}){let n=new this.draco.DecoderBuffer;n.Init(new Int8Array(e),e.byteLength),this._disableAttributeTransforms(t);let o=this.decoder.GetEncodedGeometryType(n),s=o===this.draco.TRIANGULAR_MESH?new this.draco.Mesh:new this.draco.PointCloud;try{let i;switch(o){case this.draco.TRIANGULAR_MESH:i=this.decoder.DecodeBufferToMesh(n,s);break;case this.draco.POINT_CLOUD:i=this.decoder.DecodeBufferToPointCloud(n,s);break;default:throw new Error("DRACO: Unknown geometry type.")}if(!i.ok()||!s.ptr){let m=`DRACO decompression failed: ${i.error_msg()}`;throw new Error(m)}let a=this._getDracoLoaderData(s,o,t),c=this._getMeshData(s,a,t),f=Rt(c.attributes),A=vr(c.attributes,a,c.indices);return{loader:"draco",loaderData:a,header:{vertexCount:s.num_points(),boundingBox:f},...c,schema:A}}finally{this.draco.destroy(n),s&&this.draco.destroy(s)}}_getDracoLoaderData(e,t,n){let o=this._getTopLevelMetadata(e),s=this._getDracoAttributes(e,n);return{geometry_type:t,num_attributes:e.num_attributes(),num_points:e.num_points(),num_faces:e instanceof this.draco.Mesh?e.num_faces():0,metadata:o,attributes:s}}_getDracoAttributes(e,t){let n={};for(let o=0;o<e.num_attributes();o++){let s=this.decoder.GetAttribute(e,o),i=this._getAttributeMetadata(e,o);n[s.unique_id()]={unique_id:s.unique_id(),attribute_type:s.attribute_type(),data_type:s.data_type(),num_components:s.num_components(),byte_offset:s.byte_offset(),byte_stride:s.byte_stride(),normalized:s.normalized(),attribute_index:o,metadata:i};let a=this._getQuantizationTransform(s,t);a&&(n[s.unique_id()].quantization_transform=a);let c=this._getOctahedronTransform(s,t);c&&(n[s.unique_id()].octahedron_transform=c)}return n}_getMeshData(e,t,n){let o=this._getMeshAttributes(t,e,n);if(!o.POSITION)throw new Error("DRACO: No position attribute found.");if(e instanceof this.draco.Mesh)switch(n.topology){case"triangle-strip":return{topology:"triangle-strip",mode:4,attributes:o,indices:{value:this._getTriangleStripIndices(e),size:1}};case"triangle-list":default:return{topology:"triangle-list",mode:5,attributes:o,indices:{value:this._getTriangleListIndices(e),size:1}}}return{topology:"point-list",mode:0,attributes:o}}_getMeshAttributes(e,t,n){let o={};for(let s of Object.values(e.attributes)){let i=this._deduceAttributeName(s,n);s.name=i;let a=this._getAttributeValues(t,s);if(a){let{value:c,size:f}=a;o[i]={value:c,size:f,byteOffset:s.byte_offset,byteStride:s.byte_stride,normalized:s.normalized}}}return o}_getTriangleListIndices(e){let n=e.num_faces()*3,o=n*li,s=this.draco._malloc(o);try{return this.decoder.GetTrianglesUInt32Array(e,o,s),new Uint32Array(this.draco.HEAPF32.buffer,s,n).slice()}finally{this.draco._free(s)}}_getTriangleStripIndices(e){let t=new this.draco.DracoInt32Array;try{return this.decoder.GetTriangleStripsFromMesh(e,t),hi(t)}finally{this.draco.destroy(t)}}_getAttributeValues(e,t){let n=Bi[t.data_type];if(!n)return console.warn(`DRACO: Unsupported attribute type ${t.data_type}`),null;let o=t.num_components,i=e.num_points()*o,a=i*n.BYTES_PER_ELEMENT,c=di(this.draco,n),f,A=this.draco._malloc(a);try{let u=this.decoder.GetAttribute(e,t.attribute_index);this.decoder.GetAttributeDataArrayForAllPoints(e,u,c,a,A),f=new n(this.draco.HEAPF32.buffer,A,i).slice()}finally{this.draco._free(A)}return{value:f,size:o}}_deduceAttributeName(e,t){let n=e.unique_id;for(let[i,a]of Object.entries(t.extraAttributes||{}))if(a===n)return i;let o=e.attribute_type;for(let i in Xr)if(this.draco[i]===o)return Xr[i];let s=t.attributeNameEntry||"name";return e.metadata[s]?e.metadata[s].string:`CUSTOM_ATTRIBUTE_${n}`}_getTopLevelMetadata(e){let t=this.decoder.GetMetadata(e);return this._getDracoMetadata(t)}_getAttributeMetadata(e,t){let n=this.decoder.GetAttributeMetadata(e,t);return this._getDracoMetadata(n)}_getDracoMetadata(e){if(!e||!e.ptr)return{};let t={},n=this.metadataQuerier.NumEntries(e);for(let o=0;o<n;o++){let s=this.metadataQuerier.GetEntryName(e,o);t[s]=this._getDracoMetadataField(e,s)}return t}_getDracoMetadataField(e,t){let n=new this.draco.DracoInt32Array;try{this.metadataQuerier.GetIntEntryArray(e,t,n);let o=pi(n);return{int:this.metadataQuerier.GetIntEntry(e,t),string:this.metadataQuerier.GetStringEntry(e,t),double:this.metadataQuerier.GetDoubleEntry(e,t),intArray:o}}finally{this.draco.destroy(n)}}_disableAttributeTransforms(e){let{quantizedAttributes:t=[],octahedronAttributes:n=[]}=e,o=[...t,...n];for(let s of o)this.decoder.SkipAttributeTransform(this.draco[s])}_getQuantizationTransform(e,t){let{quantizedAttributes:n=[]}=t,o=e.attribute_type();if(n.map(i=>this.decoder[i]).includes(o)){let i=new this.draco.AttributeQuantizationTransform;try{if(i.InitFromAttribute(e))return{quantization_bits:i.quantization_bits(),range:i.range(),min_values:new Float32Array([1,2,3]).map(a=>i.min_value(a))}}finally{this.draco.destroy(i)}}return null}_getOctahedronTransform(e,t){let{octahedronAttributes:n=[]}=t,o=e.attribute_type();if(n.map(i=>this.decoder[i]).includes(o)){let i=new this.draco.AttributeQuantizationTransform;try{if(i.InitFromAttribute(e))return{quantization_bits:i.quantization_bits()}}finally{this.draco.destroy(i)}}return null}};function di(r,e){switch(e){case Float32Array:return r.DT_FLOAT32;case Int8Array:return r.DT_INT8;case Int16Array:return r.DT_INT16;case Int32Array:return r.DT_INT32;case Uint8Array:return r.DT_UINT8;case Uint16Array:return r.DT_UINT16;case Uint32Array:return r.DT_UINT32;default:return r.DT_INVALID}}function pi(r){let e=r.size(),t=new Int32Array(e);for(let n=0;n<e;n++)t[n]=r.GetValue(n);return t}function hi(r){let e=r.size(),t=new Int32Array(e);for(let n=0;n<e;n++)t[n]=r.GetValue(n);return t}var kr={dataType:null,batchType:null,name:"Draco",id:"draco",module:"draco",version:Nr,worker:!0,extensions:["drc"],mimeTypes:["application/octet-stream"],binary:!0,tests:["DRACO"],options:{draco:{decoderType:typeof WebAssembly=="object"?"wasm":"js",libraryPath:"libs/",extraAttributes:{},attributeNameEntry:void 0}}},Ot={...kr,parse:gi};async function gi(r,e){let{draco:t}=await Hr(e?.core,e?.draco?.decoderType||"wasm"),n=new me(t);try{return n.parseSync(r,e?.draco)}finally{n.destroy()}}function Yr(r){let e={};for(let t in r){let n=r[t];if(t!=="indices"){let o=Lt(n);e[t]=o}}return e}function Lt(r){let{buffer:e,size:t,count:n}=Ci(r);return{value:e,size:t,byteOffset:0,count:n,type:Me(t),componentType:U(e)}}function Ci(r){let e=r,t=1,n=0;return r&&r.value&&(e=r.value,t=r.size||1),e&&(ArrayBuffer.isView(e)||(e=bi(e,Float32Array)),n=e.length/t),{buffer:e,size:t,count:n}}function bi(r,e,t=!1){return r?Array.isArray(r)?new e(r):t&&!(r instanceof e)?new e(r):r:null}var N="KHR_draco_mesh_compression",xi=N;function Ei(r,e,t){let n=new l(r);for(let o of Vr(n))n.getObjectExtension(o,N)}async function yi(r,e,t){if(!e?.gltf?.decompressMeshes)return;let n=new l(r),o=[];for(let s of Vr(n))n.getObjectExtension(s,N)&&o.push(Mi(n,s,e,t));await Promise.all(o),n.removeExtension(N)}function Ti(r,e={}){let t=new l(r);for(let n of t.json.meshes||[])Fi(n,e),t.addRequiredExtension(N)}async function Mi(r,e,t,n){let o=r.getObjectExtension(e,N);if(!o)return;let s=r.getTypedArrayForBufferView(o.bufferView),i=se(s.buffer,s.byteOffset),a={...t};delete a["3d-tiles"];let c=await re(i,Ot,a,n),f=Yr(c.attributes);for(let[A,u]of Object.entries(f))if(A in e.attributes){let m=e.attributes[A],B=r.getAccessor(m);B?.min&&B?.max&&(u.min=B.min,u.max=B.max)}e.attributes=f,c.indices&&(e.indices=Lt(c.indices)),r.removeObjectExtension(e,N),Ii(e)}function Fi(r,e,t=4,n,o){if(!n.DracoWriter)throw new Error("options.gltf.DracoWriter not provided");let s=n.DracoWriter.encodeSync({attributes:r}),i=o?.parseSync?.({attributes:r}),a=n._addFauxAttributes(i.attributes),c=n.addBufferView(s);return{primitives:[{attributes:a,mode:t,extensions:{[N]:{bufferView:c,attributes:a}}}]}}function Ii(r){if(!r.attributes&&Object.keys(r.attributes).length>0)throw new Error("glTF: Empty primitive detected: Draco decompression failure?")}function*Vr(r){for(let e of r.json.meshes||[])for(let t of e.primitives)yield t}var Kt={};y(Kt,{decode:()=>vi,name:()=>Pi});var iu=1/Math.PI*180,au=1/180*Math.PI,Gi={EPSILON:1e-12,debug:!1,precision:4,printTypes:!1,printDegrees:!1,printRowMajor:!0,_cartographicRadians:!1};globalThis.mathgl=globalThis.mathgl||{config:{...Gi}};var C=globalThis.mathgl.config;function Wr(r,{precision:e=C.precision}={}){return r=Di(r),`${parseFloat(r.toPrecision(e))}`}function $(r){return Array.isArray(r)||ArrayBuffer.isView(r)&&!(r instanceof DataView)}function St(r,e,t){let n=C.EPSILON;t&&(C.EPSILON=t);try{if(r===e)return!0;if($(r)&&$(e)){if(r.length!==e.length)return!1;for(let o=0;o<r.length;++o)if(!St(r[o],e[o]))return!1;return!0}return r&&r.equals?r.equals(e):e&&e.equals?e.equals(r):typeof r=="number"&&typeof e=="number"?Math.abs(r-e)<=C.EPSILON*Math.max(1,Math.abs(r),Math.abs(e)):!1}finally{C.EPSILON=n}}function Di(r){return Math.round(r/C.EPSILON)*C.EPSILON}var ee=class extends Array{clone(){return new this.constructor().copy(this)}fromArray(e,t=0){for(let n=0;n<this.ELEMENTS;++n)this[n]=e[n+t];return this.check()}toArray(e=[],t=0){for(let n=0;n<this.ELEMENTS;++n)e[t+n]=this[n];return e}toObject(e){return e}from(e){return Array.isArray(e)?this.copy(e):this.fromObject(e)}to(e){return e===this?this:$(e)?this.toArray(e):this.toObject(e)}toTarget(e){return e?this.to(e):this}toFloat32Array(){return new Float32Array(this)}toString(){return this.formatString(C)}formatString(e){let t="";for(let n=0;n<this.ELEMENTS;++n)t+=(n>0?", ":"")+Wr(this[n],e);return`${e.printTypes?this.constructor.name:""}[${t}]`}equals(e){if(!e||this.length!==e.length)return!1;for(let t=0;t<this.ELEMENTS;++t)if(!St(this[t],e[t]))return!1;return!0}exactEquals(e){if(!e||this.length!==e.length)return!1;for(let t=0;t<this.ELEMENTS;++t)if(this[t]!==e[t])return!1;return!0}negate(){for(let e=0;e<this.ELEMENTS;++e)this[e]=-this[e];return this.check()}lerp(e,t,n){if(n===void 0)return this.lerp(this,e,t);for(let o=0;o<this.ELEMENTS;++o){let s=e[o],i=typeof t=="number"?t:t[o];this[o]=s+n*(i-s)}return this.check()}min(e){for(let t=0;t<this.ELEMENTS;++t)this[t]=Math.min(e[t],this[t]);return this.check()}max(e){for(let t=0;t<this.ELEMENTS;++t)this[t]=Math.max(e[t],this[t]);return this.check()}clamp(e,t){for(let n=0;n<this.ELEMENTS;++n)this[n]=Math.min(Math.max(this[n],e[n]),t[n]);return this.check()}add(...e){for(let t of e)for(let n=0;n<this.ELEMENTS;++n)this[n]+=t[n];return this.check()}subtract(...e){for(let t of e)for(let n=0;n<this.ELEMENTS;++n)this[n]-=t[n];return this.check()}scale(e){if(typeof e=="number")for(let t=0;t<this.ELEMENTS;++t)this[t]*=e;else for(let t=0;t<this.ELEMENTS&&t<e.length;++t)this[t]*=e[t];return this.check()}multiplyByScalar(e){for(let t=0;t<this.ELEMENTS;++t)this[t]*=e;return this.check()}check(){if(C.debug&&!this.validate())throw new Error(`math.gl: ${this.constructor.name} some fields set to invalid numbers'`);return this}validate(){let e=this.length===this.ELEMENTS;for(let t=0;t<this.ELEMENTS;++t)e=e&&Number.isFinite(this[t]);return e}sub(e){return this.subtract(e)}setScalar(e){for(let t=0;t<this.ELEMENTS;++t)this[t]=e;return this.check()}addScalar(e){for(let t=0;t<this.ELEMENTS;++t)this[t]+=e;return this.check()}subScalar(e){return this.addScalar(-e)}multiplyScalar(e){for(let t=0;t<this.ELEMENTS;++t)this[t]*=e;return this.check()}divideScalar(e){return this.multiplyByScalar(1/e)}clampScalar(e,t){for(let n=0;n<this.ELEMENTS;++n)this[n]=Math.min(Math.max(this[n],e),t);return this.check()}get elements(){return this}};function Ri(r,e){if(r.length!==e)return!1;for(let t=0;t<r.length;++t)if(!Number.isFinite(r[t]))return!1;return!0}function b(r){if(!Number.isFinite(r))throw new Error(`Invalid number ${JSON.stringify(r)}`);return r}function Zr(r,e,t=""){if(C.debug&&!Ri(r,e))throw new Error(`math.gl: ${t} some fields set to invalid numbers'`);return r}function Jt(r,e){if(!r)throw new Error(`math.gl assertion ${e}`)}var He=class extends ee{get x(){return this[0]}set x(e){this[0]=b(e)}get y(){return this[1]}set y(e){this[1]=b(e)}len(){return Math.sqrt(this.lengthSquared())}magnitude(){return this.len()}lengthSquared(){let e=0;for(let t=0;t<this.ELEMENTS;++t)e+=this[t]*this[t];return e}magnitudeSquared(){return this.lengthSquared()}distance(e){return Math.sqrt(this.distanceSquared(e))}distanceSquared(e){let t=0;for(let n=0;n<this.ELEMENTS;++n){let o=this[n]-e[n];t+=o*o}return b(t)}dot(e){let t=0;for(let n=0;n<this.ELEMENTS;++n)t+=this[n]*e[n];return b(t)}normalize(){let e=this.magnitude();if(e!==0)for(let t=0;t<this.ELEMENTS;++t)this[t]/=e;return this.check()}multiply(...e){for(let t of e)for(let n=0;n<this.ELEMENTS;++n)this[n]*=t[n];return this.check()}divide(...e){for(let t of e)for(let n=0;n<this.ELEMENTS;++n)this[n]/=t[n];return this.check()}lengthSq(){return this.lengthSquared()}distanceTo(e){return this.distance(e)}distanceToSquared(e){return this.distanceSquared(e)}getComponent(e){return Jt(e>=0&&e<this.ELEMENTS,"index is out of range"),b(this[e])}setComponent(e,t){return Jt(e>=0&&e<this.ELEMENTS,"index is out of range"),this[e]=t,this.check()}addVectors(e,t){return this.copy(e).add(t)}subVectors(e,t){return this.copy(e).subtract(t)}multiplyVectors(e,t){return this.copy(e).multiply(t)}addScaledVector(e,t){return this.add(new this.constructor(e).multiplyScalar(t))}};var te=typeof Float32Array<"u"?Float32Array:Array;var gu=Math.PI/180;function _i(){let r=new te(2);return te!=Float32Array&&(r[0]=0,r[1]=0),r}function zr(r,e,t){let n=e[0],o=e[1];return r[0]=t[0]*n+t[3]*o+t[6],r[1]=t[1]*n+t[4]*o+t[7],r}var Cu=function(){let r=_i();return function(e,t,n,o,s,i){let a,c;for(t||(t=2),n||(n=0),o?c=Math.min(o*t+n,e.length):c=e.length,a=n;a<c;a+=t)r[0]=e[a],r[1]=e[a+1],s(r,r,i),e[a]=r[0],e[a+1]=r[1];return e}}();function $r(r,e,t){let n=e[0],o=e[1],s=e[2],i=t[3]*n+t[7]*o+t[11]*s||1;return r[0]=(t[0]*n+t[4]*o+t[8]*s)/i,r[1]=(t[1]*n+t[5]*o+t[9]*s)/i,r[2]=(t[2]*n+t[6]*o+t[10]*s)/i,r}function en(r,e,t){let n=e[0],o=e[1];return r[0]=t[0]*n+t[2]*o,r[1]=t[1]*n+t[3]*o,r[2]=e[2],r}function tn(r,e,t){let n=e[0],o=e[1],s=e[2];return r[0]=t[0]*n+t[3]*o+t[6]*s,r[1]=t[1]*n+t[4]*o+t[7]*s,r[2]=t[2]*n+t[5]*o+t[8]*s,r[3]=e[3],r}function Si(){let r=new te(3);return te!=Float32Array&&(r[0]=0,r[1]=0,r[2]=0),r}function Ji(r,e){return r[0]*e[0]+r[1]*e[1]+r[2]*e[2]}function rn(r,e,t){let n=e[0],o=e[1],s=e[2],i=t[0],a=t[1],c=t[2];return r[0]=o*c-s*a,r[1]=s*i-n*c,r[2]=n*a-o*i,r}function nn(r,e,t){let n=e[0],o=e[1],s=e[2],i=t[3]*n+t[7]*o+t[11]*s+t[15];return i=i||1,r[0]=(t[0]*n+t[4]*o+t[8]*s+t[12])/i,r[1]=(t[1]*n+t[5]*o+t[9]*s+t[13])/i,r[2]=(t[2]*n+t[6]*o+t[10]*s+t[14])/i,r}function Ne(r,e,t){let n=e[0],o=e[1],s=e[2];return r[0]=n*t[0]+o*t[3]+s*t[6],r[1]=n*t[1]+o*t[4]+s*t[7],r[2]=n*t[2]+o*t[5]+s*t[8],r}function on(r,e,t){let n=t[0],o=t[1],s=t[2],i=t[3],a=e[0],c=e[1],f=e[2],A=o*f-s*c,u=s*a-n*f,m=n*c-o*a,B=o*m-s*u,d=s*A-n*m,p=n*u-o*A,x=i*2;return A*=x,u*=x,m*=x,B*=2,d*=2,p*=2,r[0]=a+A+B,r[1]=c+u+d,r[2]=f+m+p,r}function sn(r,e,t,n){let o=[],s=[];return o[0]=e[0]-t[0],o[1]=e[1]-t[1],o[2]=e[2]-t[2],s[0]=o[0],s[1]=o[1]*Math.cos(n)-o[2]*Math.sin(n),s[2]=o[1]*Math.sin(n)+o[2]*Math.cos(n),r[0]=s[0]+t[0],r[1]=s[1]+t[1],r[2]=s[2]+t[2],r}function an(r,e,t,n){let o=[],s=[];return o[0]=e[0]-t[0],o[1]=e[1]-t[1],o[2]=e[2]-t[2],s[0]=o[2]*Math.sin(n)+o[0]*Math.cos(n),s[1]=o[1],s[2]=o[2]*Math.cos(n)-o[0]*Math.sin(n),r[0]=s[0]+t[0],r[1]=s[1]+t[1],r[2]=s[2]+t[2],r}function cn(r,e,t,n){let o=[],s=[];return o[0]=e[0]-t[0],o[1]=e[1]-t[1],o[2]=e[2]-t[2],s[0]=o[0]*Math.cos(n)-o[1]*Math.sin(n),s[1]=o[0]*Math.sin(n)+o[1]*Math.cos(n),s[2]=o[2],r[0]=s[0]+t[0],r[1]=s[1]+t[1],r[2]=s[2]+t[2],r}function fn(r,e){let t=r[0],n=r[1],o=r[2],s=e[0],i=e[1],a=e[2],c=Math.sqrt((t*t+n*n+o*o)*(s*s+i*i+a*a)),f=c&&Ji(r,e)/c;return Math.acos(Math.min(Math.max(f,-1),1))}var Eu=function(){let r=Si();return function(e,t,n,o,s,i){let a,c;for(t||(t=3),n||(n=0),o?c=Math.min(o*t+n,e.length):c=e.length,a=n;a<c;a+=t)r[0]=e[a],r[1]=e[a+1],r[2]=e[a+2],s(r,r,i),e[a]=r[0],e[a+1]=r[1],e[a+2]=r[2];return e}}();var Ut=[0,0,0],Pe,K=class extends He{static get ZERO(){return Pe||(Pe=new K(0,0,0),Object.freeze(Pe)),Pe}constructor(e=0,t=0,n=0){super(-0,-0,-0),arguments.length===1&&$(e)?this.copy(e):(C.debug&&(b(e),b(t),b(n)),this[0]=e,this[1]=t,this[2]=n)}set(e,t,n){return this[0]=e,this[1]=t,this[2]=n,this.check()}copy(e){return this[0]=e[0],this[1]=e[1],this[2]=e[2],this.check()}fromObject(e){return C.debug&&(b(e.x),b(e.y),b(e.z)),this[0]=e.x,this[1]=e.y,this[2]=e.z,this.check()}toObject(e){return e.x=this[0],e.y=this[1],e.z=this[2],e}get ELEMENTS(){return 3}get z(){return this[2]}set z(e){this[2]=b(e)}angle(e){return fn(this,e)}cross(e){return rn(this,this,e),this.check()}rotateX({radians:e,origin:t=Ut}){return sn(this,this,t,e),this.check()}rotateY({radians:e,origin:t=Ut}){return an(this,this,t,e),this.check()}rotateZ({radians:e,origin:t=Ut}){return cn(this,this,t,e),this.check()}transform(e){return this.transformAsPoint(e)}transformAsPoint(e){return nn(this,this,e),this.check()}transformAsVector(e){return $r(this,this,e),this.check()}transformByMatrix3(e){return Ne(this,this,e),this.check()}transformByMatrix2(e){return en(this,this,e),this.check()}transformByQuaternion(e){return on(this,this,e),this.check()}};var Ke=class extends ee{toString(){let e="[";if(C.printRowMajor){e+="row-major:";for(let t=0;t<this.RANK;++t)for(let n=0;n<this.RANK;++n)e+=` ${this[n*this.RANK+t]}`}else{e+="column-major:";for(let t=0;t<this.ELEMENTS;++t)e+=` ${this[t]}`}return e+="]",e}getElementIndex(e,t){return t*this.RANK+e}getElement(e,t){return this[t*this.RANK+e]}setElement(e,t,n){return this[t*this.RANK+e]=b(n),this}getColumn(e,t=new Array(this.RANK).fill(-0)){let n=e*this.RANK;for(let o=0;o<this.RANK;++o)t[o]=this[n+o];return t}setColumn(e,t){let n=e*this.RANK;for(let o=0;o<this.RANK;++o)this[n+o]=t[o];return this}};function An(r,e){if(r===e){let t=e[1],n=e[2],o=e[5];r[1]=e[3],r[2]=e[6],r[3]=t,r[5]=e[7],r[6]=n,r[7]=o}else r[0]=e[0],r[1]=e[3],r[2]=e[6],r[3]=e[1],r[4]=e[4],r[5]=e[7],r[6]=e[2],r[7]=e[5],r[8]=e[8];return r}function un(r,e){let t=e[0],n=e[1],o=e[2],s=e[3],i=e[4],a=e[5],c=e[6],f=e[7],A=e[8],u=A*i-a*f,m=-A*s+a*c,B=f*s-i*c,d=t*u+n*m+o*B;return d?(d=1/d,r[0]=u*d,r[1]=(-A*n+o*f)*d,r[2]=(a*n-o*i)*d,r[3]=m*d,r[4]=(A*t-o*c)*d,r[5]=(-a*t+o*s)*d,r[6]=B*d,r[7]=(-f*t+n*c)*d,r[8]=(i*t-n*s)*d,r):null}function mn(r){let e=r[0],t=r[1],n=r[2],o=r[3],s=r[4],i=r[5],a=r[6],c=r[7],f=r[8];return e*(f*s-i*c)+t*(-f*o+i*a)+n*(c*o-s*a)}function Ht(r,e,t){let n=e[0],o=e[1],s=e[2],i=e[3],a=e[4],c=e[5],f=e[6],A=e[7],u=e[8],m=t[0],B=t[1],d=t[2],p=t[3],x=t[4],I=t[5],S=t[6],v=t[7],Ye=t[8];return r[0]=m*n+B*i+d*f,r[1]=m*o+B*a+d*A,r[2]=m*s+B*c+d*u,r[3]=p*n+x*i+I*f,r[4]=p*o+x*a+I*A,r[5]=p*s+x*c+I*u,r[6]=S*n+v*i+Ye*f,r[7]=S*o+v*a+Ye*A,r[8]=S*s+v*c+Ye*u,r}function Bn(r,e,t){let n=e[0],o=e[1],s=e[2],i=e[3],a=e[4],c=e[5],f=e[6],A=e[7],u=e[8],m=t[0],B=t[1];return r[0]=n,r[1]=o,r[2]=s,r[3]=i,r[4]=a,r[5]=c,r[6]=m*n+B*i+f,r[7]=m*o+B*a+A,r[8]=m*s+B*c+u,r}function ln(r,e,t){let n=e[0],o=e[1],s=e[2],i=e[3],a=e[4],c=e[5],f=e[6],A=e[7],u=e[8],m=Math.sin(t),B=Math.cos(t);return r[0]=B*n+m*i,r[1]=B*o+m*a,r[2]=B*s+m*c,r[3]=B*i-m*n,r[4]=B*a-m*o,r[5]=B*c-m*s,r[6]=f,r[7]=A,r[8]=u,r}function Nt(r,e,t){let n=t[0],o=t[1];return r[0]=n*e[0],r[1]=n*e[1],r[2]=n*e[2],r[3]=o*e[3],r[4]=o*e[4],r[5]=o*e[5],r[6]=e[6],r[7]=e[7],r[8]=e[8],r}function dn(r,e){let t=e[0],n=e[1],o=e[2],s=e[3],i=t+t,a=n+n,c=o+o,f=t*i,A=n*i,u=n*a,m=o*i,B=o*a,d=o*c,p=s*i,x=s*a,I=s*c;return r[0]=1-u-d,r[3]=A-I,r[6]=m+x,r[1]=A+I,r[4]=1-f-d,r[7]=B-p,r[2]=m-x,r[5]=B+p,r[8]=1-f-u,r}var Pt;(function(r){r[r.COL0ROW0=0]="COL0ROW0",r[r.COL0ROW1=1]="COL0ROW1",r[r.COL0ROW2=2]="COL0ROW2",r[r.COL1ROW0=3]="COL1ROW0",r[r.COL1ROW1=4]="COL1ROW1",r[r.COL1ROW2=5]="COL1ROW2",r[r.COL2ROW0=6]="COL2ROW0",r[r.COL2ROW1=7]="COL2ROW1",r[r.COL2ROW2=8]="COL2ROW2"})(Pt||(Pt={}));var Ui=Object.freeze([1,0,0,0,1,0,0,0,1]),_=class extends Ke{static get IDENTITY(){return Ni()}static get ZERO(){return Hi()}get ELEMENTS(){return 9}get RANK(){return 3}get INDICES(){return Pt}constructor(e,...t){super(-0,-0,-0,-0,-0,-0,-0,-0,-0),arguments.length===1&&Array.isArray(e)?this.copy(e):t.length>0?this.copy([e,...t]):this.identity()}copy(e){return this[0]=e[0],this[1]=e[1],this[2]=e[2],this[3]=e[3],this[4]=e[4],this[5]=e[5],this[6]=e[6],this[7]=e[7],this[8]=e[8],this.check()}identity(){return this.copy(Ui)}fromObject(e){return this.check()}fromQuaternion(e){return dn(this,e),this.check()}set(e,t,n,o,s,i,a,c,f){return this[0]=e,this[1]=t,this[2]=n,this[3]=o,this[4]=s,this[5]=i,this[6]=a,this[7]=c,this[8]=f,this.check()}setRowMajor(e,t,n,o,s,i,a,c,f){return this[0]=e,this[1]=o,this[2]=a,this[3]=t,this[4]=s,this[5]=c,this[6]=n,this[7]=i,this[8]=f,this.check()}determinant(){return mn(this)}transpose(){return An(this,this),this.check()}invert(){return un(this,this),this.check()}multiplyLeft(e){return Ht(this,e,this),this.check()}multiplyRight(e){return Ht(this,this,e),this.check()}rotate(e){return ln(this,this,e),this.check()}scale(e){return Array.isArray(e)?Nt(this,this,e):Nt(this,this,[e,e]),this.check()}translate(e){return Bn(this,this,e),this.check()}transform(e,t){let n;switch(e.length){case 2:n=zr(t||[-0,-0],e,this);break;case 3:n=Ne(t||[-0,-0,-0],e,this);break;case 4:n=tn(t||[-0,-0,-0,-0],e,this);break;default:throw new Error("Illegal vector")}return Zr(n,e.length),n}transformVector(e,t){return this.transform(e,t)}transformVector2(e,t){return this.transform(e,t)}transformVector3(e,t){return this.transform(e,t)}},je,ve=null;function Hi(){return je||(je=new _([0,0,0,0,0,0,0,0,0]),Object.freeze(je)),je}function Ni(){return ve||(ve=new _,Object.freeze(ve)),ve}var Xe="KHR_texture_transform",Pi=Xe,Qe=new K,Ki=new _,ji=new _;async function vi(r,e){if(!new l(r).hasExtension(Xe)||!e.gltf?.loadBuffers)return;let o=r.json.materials||[];for(let s=0;s<o.length;s++)Qi(s,r)}function Qi(r,e){let t=e.json.materials?.[r],n=[t?.pbrMetallicRoughness?.baseColorTexture,t?.emissiveTexture,t?.normalTexture,t?.occlusionTexture,t?.pbrMetallicRoughness?.metallicRoughnessTexture],o=[];for(let s of n)s&&s?.extensions?.[Xe]&&Xi(e,r,s,o)}function Xi(r,e,t,n){let o=ki(t,n);if(!o)return;let s=r.json.meshes||[];for(let i of s)for(let a of i.primitives){let c=a.material;Number.isFinite(c)&&e===c&&Yi(r,a,o)}}function ki(r,e){let t=r.extensions?.[Xe],{texCoord:n=0}=r,{texCoord:o=n}=t;if(!(e.findIndex(([i,a])=>i===n&&a===o)!==-1)){let i=Zi(t);return n!==o&&(r.texCoord=o),e.push([n,o]),{originalTexCoord:n,texCoord:o,matrix:i}}return null}function Yi(r,e,t){let{originalTexCoord:n,texCoord:o,matrix:s}=t,i=e.attributes[`TEXCOORD_${n}`];if(Number.isFinite(i)){let a=r.json.accessors?.[i];if(a&&a.bufferView!==void 0){let c=r.json.bufferViews?.[a.bufferView];if(c){let{arrayBuffer:f,byteOffset:A}=r.buffers[c.buffer],u=(A||0)+(a.byteOffset||0)+(c.byteOffset||0),{ArrayType:m,length:B}=Q(a,c),d=Te[a.componentType],p=ye[a.type],x=c.byteStride||d*p,I=new Float32Array(B);for(let S=0;S<a.count;S++){let v=new m(f,u+S*x,2);Qe.set(v[0],v[1],1),Qe.transformByMatrix3(s),I.set([Qe[0],Qe[1]],S*p)}n===o?Vi(a,r,I,a.bufferView):Wi(o,a,e,r,I)}}}}function Vi(r,e,t,n){r.componentType=5126,r.byteOffset=0;let i=(e.json.accessors||[]).reduce((f,A)=>A.bufferView===n?f+1:f,0)>1;e.buffers.push({arrayBuffer:J(t.buffer),byteOffset:0,byteLength:t.buffer.byteLength});let a=e.buffers.length-1;if(e.json.bufferViews=e.json.bufferViews||[],i){e.json.bufferViews.push({buffer:a,byteLength:t.buffer.byteLength,byteOffset:0}),r.bufferView=e.json.bufferViews.length-1;return}let c=e.json.bufferViews[n];c&&(c.buffer=a,c.byteOffset=0,c.byteLength=t.buffer.byteLength,c.byteStride!==void 0&&delete c.byteStride)}function Wi(r,e,t,n,o){n.buffers.push({arrayBuffer:J(o.buffer),byteOffset:0,byteLength:o.buffer.byteLength}),n.json.bufferViews=n.json.bufferViews||[];let s=n.json.bufferViews;s.push({buffer:n.buffers.length-1,byteLength:o.buffer.byteLength,byteOffset:0});let i=n.json.accessors;i&&(i.push({bufferView:s?.length-1,byteOffset:0,componentType:5126,count:e.count,type:"VEC2"}),t.attributes[`TEXCOORD_${r}`]=i.length-1)}function Zi(r){let{offset:e=[0,0],rotation:t=0,scale:n=[1,1]}=r,o=new _().set(1,0,0,0,1,0,e[0],e[1],1),s=Ki.set(Math.cos(t),Math.sin(t),0,-Math.sin(t),Math.cos(t),0,0,0,1),i=ji.set(n[0],0,0,0,n[1],0,0,0,1);return o.multiplyRight(s).multiplyRight(i)}var jt={};y(jt,{decode:()=>zi,encode:()=>$i,name:()=>qi});var j="KHR_lights_punctual",qi=j;async function zi(r){let e=new l(r),{json:t}=e,n=e.getExtension(j);n&&(e.json.lights=n.lights,e.removeExtension(j));for(let o of t.nodes||[]){let s=e.getObjectExtension(o,j);s&&(o.light=s.light),e.removeObjectExtension(o,j)}}async function $i(r){let e=new l(r),{json:t}=e;if(t.lights){let n=e.addExtension(j);h(!n.lights),n.lights=t.lights,delete t.lights}if(e.json.lights){for(let n of e.json.lights){let o=n.node;e.addObjectExtension(o,j,n)}delete e.json.lights}}var vt={};y(vt,{decode:()=>ta,encode:()=>ra,name:()=>ea});var Be="KHR_materials_unlit",ea=Be;async function ta(r){let e=new l(r),{json:t}=e;for(let n of t.materials||[])n.extensions&&n.extensions.KHR_materials_unlit&&(n.unlit=!0),e.removeObjectExtension(n,Be);e.removeExtension(Be)}function ra(r){let e=new l(r),{json:t}=e;if(e.materials)for(let n of t.materials||[])n.unlit&&(delete n.unlit,e.addObjectExtension(n,Be,{}),e.addExtension(Be))}var Qt={};y(Qt,{decode:()=>oa,encode:()=>sa,name:()=>na});var le="KHR_techniques_webgl",na=le;async function oa(r){let e=new l(r),{json:t}=e,n=e.getExtension(le);if(n){let o=ia(n,e);for(let s of t.materials||[]){let i=e.getObjectExtension(s,le);i&&(s.technique=Object.assign({},i,o[i.technique]),s.technique.values=aa(s.technique,e)),e.removeObjectExtension(s,le)}e.removeExtension(le)}}async function sa(r,e){}function ia(r,e){let{programs:t=[],shaders:n=[],techniques:o=[]}=r,s=new TextDecoder;return n.forEach(i=>{if(Number.isFinite(i.bufferView))i.code=s.decode(e.getTypedArrayForBufferView(i.bufferView));else throw new Error("KHR_techniques_webgl: no shader code")}),t.forEach(i=>{i.fragmentShader=n[i.fragmentShader],i.vertexShader=n[i.vertexShader]}),o.forEach(i=>{i.program=t[i.program]}),o}function aa(r,e){let t=Object.assign({},r.values);return Object.keys(r.uniforms||{}).forEach(n=>{r.uniforms[n].value&&!(n in t)&&(t[n]=r.uniforms[n].value)}),Object.keys(t).forEach(n=>{typeof t[n]=="object"&&t[n].index!==void 0&&(t[n].texture=e.getTexture(t[n].index))}),t}var pn=[we,Re,Mt,Ft,It,_t,jt,vt,Qt,Kt,lt],ca=[we,Re];function hn(r,e={},t){let n=pn.filter(o=>bn(o.name,e));for(let o of n)o.preprocess?.(r,e,t)}async function gn(r,e={},t){let n=pn.filter(o=>bn(o.name,e));for(let o of n)await o.decode?.(r,e,t)}function Cn(r,e={}){for(let t of ca)r=t.encode?.(r,e)??r;return r}function bn(r,e){let t=e?.gltf?.excludeExtensions||{};return!(r in t&&!t[r])}var Xt="KHR_binary_glTF";function xn(r){let e=new l(r),{json:t}=e;for(let n of t.images||[]){let o=e.getObjectExtension(n,Xt);o&&Object.assign(n,o),e.removeObjectExtension(n,Xt)}t.buffers&&t.buffers[0]&&delete t.buffers[0].uri,e.removeExtension(Xt)}var En={accessors:"accessor",animations:"animation",buffers:"buffer",bufferViews:"bufferView",images:"image",materials:"material",meshes:"mesh",nodes:"node",samplers:"sampler",scenes:"scene",skins:"skin",textures:"texture"},Aa={accessor:"accessors",animations:"animation",buffer:"buffers",bufferView:"bufferViews",image:"images",material:"materials",mesh:"meshes",node:"nodes",sampler:"samplers",scene:"scenes",skin:"skins",texture:"textures"},kt=class{idToIndexMap={animations:{},accessors:{},buffers:{},bufferViews:{},images:{},materials:{},meshes:{},nodes:{},samplers:{},scenes:{},skins:{},textures:{}};json;normalize(e,t){this.json=e.json;let n=e.json;switch(n.asset&&n.asset.version){case"2.0":return;case void 0:case"1.0":break;default:console.warn(`glTF: Unknown version ${n.asset.version}`);return}if(!t.normalize)throw new Error("glTF v1 is not supported.");console.warn("Converting glTF v1 to glTF v2 format. This is experimental and may fail."),this._addAsset(n),this._convertTopLevelObjectsToArrays(n),xn(e),this._convertObjectIdsToArrayIndices(n),this._updateObjects(n),this._updateMaterial(n)}_addAsset(e){e.asset=e.asset||{},e.asset.version="2.0",e.asset.generator=e.asset.generator||"Normalized to glTF 2.0 by loaders.gl"}_convertTopLevelObjectsToArrays(e){for(let t in En)this._convertTopLevelObjectToArray(e,t)}_convertTopLevelObjectToArray(e,t){let n=e[t];if(!(!n||Array.isArray(n))){e[t]=[];for(let o in n){let s=n[o];s.id=s.id||o;let i=e[t].length;e[t].push(s),this.idToIndexMap[t][o]=i}}}_convertObjectIdsToArrayIndices(e){for(let t in En)this._convertIdsToIndices(e,t);"scene"in e&&(e.scene=this._convertIdToIndex(e.scene,"scene"));for(let t of e.textures)this._convertTextureIds(t);for(let t of e.meshes)this._convertMeshIds(t);for(let t of e.nodes)this._convertNodeIds(t);for(let t of e.scenes)this._convertSceneIds(t)}_convertTextureIds(e){e.source&&(e.source=this._convertIdToIndex(e.source,"image"))}_convertMeshIds(e){for(let t of e.primitives){let{attributes:n,indices:o,material:s}=t;for(let i in n)n[i]=this._convertIdToIndex(n[i],"accessor");o&&(t.indices=this._convertIdToIndex(o,"accessor")),s&&(t.material=this._convertIdToIndex(s,"material"))}}_convertNodeIds(e){e.children&&(e.children=e.children.map(t=>this._convertIdToIndex(t,"node"))),e.meshes&&(e.meshes=e.meshes.map(t=>this._convertIdToIndex(t,"mesh")))}_convertSceneIds(e){e.nodes&&(e.nodes=e.nodes.map(t=>this._convertIdToIndex(t,"node")))}_convertIdsToIndices(e,t){e[t]||(console.warn(`gltf v1: json doesn't contain attribute ${t}`),e[t]=[]);for(let n of e[t])for(let o in n){let s=n[o],i=this._convertIdToIndex(s,o);n[o]=i}}_convertIdToIndex(e,t){let n=Aa[t];if(n in this.idToIndexMap){let o=this.idToIndexMap[n][e];if(!Number.isFinite(o))throw new Error(`gltf v1: failed to resolve ${t} with id ${e}`);return o}return e}_updateObjects(e){for(let t of this.json.buffers)delete t.type}_updateMaterial(e){for(let t of e.materials){t.pbrMetallicRoughness={baseColorFactor:[1,1,1,1],metallicFactor:1,roughnessFactor:1};let n=t.values?.tex||t.values?.texture2d_0||t.values?.diffuseTex,o=e.textures.findIndex(s=>s.id===n);o!==-1&&(t.pbrMetallicRoughness.baseColorTexture={index:o})}}};function yn(r,e={}){return new kt().normalize(r,e)}async function Tn(r,e,t=0,n,o){return ua(r,e,t,n),yn(r,{normalize:n?.gltf?.normalize}),hn(r,n,o),n?.gltf?.loadBuffers&&r.json.buffers&&await ma(r,n,o),n?.gltf?.loadImages&&await Ba(r,n,o),await gn(r,n,o),r}function ua(r,e,t,n){if(n.core?.baseUri&&(r.baseUri=n.core?.baseUri),e instanceof ArrayBuffer&&!Sr(e,t,n.glb)&&(e=new TextDecoder().decode(e)),typeof e=="string")r.json=qe(e);else if(e instanceof ArrayBuffer){let i={};t=Se(i,e,t,n.glb),h(i.type==="glTF",`Invalid GLB magic string ${i.type}`),r._glb=i,r.json=i.json}else h(!1,"GLTF: must be ArrayBuffer or string");let o=r.json.buffers||[];if(r.buffers=new Array(o.length).fill(null),r._glb&&r._glb.header.hasBinChunk){let{binChunks:i}=r._glb;r.buffers[0]={arrayBuffer:i[0].arrayBuffer,byteOffset:i[0].byteOffset,byteLength:i[0].byteLength}}let s=r.json.images||[];r.images=new Array(s.length).fill({})}async function ma(r,e,t){let n=r.json.buffers||[];for(let o=0;o<n.length;++o){let s=n[o];if(s.uri){let{fetch:i}=t;h(i);let a=yt(s.uri,e),f=await(await t?.fetch?.(a))?.arrayBuffer?.();r.buffers[o]={arrayBuffer:f,byteOffset:0,byteLength:f.byteLength},delete s.uri}else r.buffers[o]===null&&(r.buffers[o]={arrayBuffer:new ArrayBuffer(s.byteLength),byteOffset:0,byteLength:s.byteLength})}}async function Ba(r,e,t){let n=la(r),o=r.json.images||[],s=[];for(let i of n)s.push(da(r,o[i],i,e,t));return await Promise.all(s)}function la(r){let e=new Set,t=r.json.textures||[];for(let n of t)n.source!==void 0&&e.add(n.source);return Array.from(e).sort()}async function da(r,e,t,n,o){let s;if(e.uri&&!e.hasOwnProperty("bufferView")){let f=yt(e.uri,n),{fetch:A}=o;s=await(await A(f)).arrayBuffer(),e.bufferView={data:s}}if(Number.isFinite(e.bufferView)){let f=hr(r.json,r.buffers,e.bufferView);s=se(f.buffer,f.byteOffset,f.byteLength)}h(s,"glTF image has no data");let i=n,a={...i,core:{...i?.core,mimeType:e.mimeType}},c=await re(s,[ot,Ct],a,o);c&&c[0]&&(c={compressed:!0,mipmaps:!1,width:c[0].width,height:c[0].height,data:c[0]}),r.images=r.images||[],r.images[t]=c}var ke={dataType:null,batchType:null,name:"glTF",id:"gltf",module:"gltf",version:H,extensions:["gltf","glb"],mimeTypes:["model/gltf+json","model/gltf-binary"],text:!0,binary:!0,tests:["glTF"],parse:pa,options:{gltf:{normalize:!0,loadBuffers:!0,loadImages:!0,decompressMeshes:!0}}};async function pa(r,e={},t){let n={...ke.options,...e};n.gltf={...ke.options.gltf,...n.gltf};let o=e?.glb?.byteOffset||0;return await Tn({},r,o,n,t)}var ha=1179937895,ga=1313821514,Ca=5130562,O=!0;function de(r,e,t=0,n={}){let{magic:o=ha,version:s=2,json:i={},binary:a}=r,c=t;e&&(e.setUint32(t+0,o,O),e.setUint32(t+4,s,O),e.setUint32(t+8,0,O));let f=t+8;t+=12;let A=t;e&&(e.setUint32(t+0,0,O),e.setUint32(t+4,ga,O)),t+=8;let u=JSON.stringify(i);if(t=$e(e,t,u,4),e){let m=t-A-8;e.setUint32(A+0,m,O)}if(a){let m=t;if(e&&(e.setUint32(t+0,0,O),e.setUint32(t+4,Ca,O)),t+=8,t=be(e,t,a,4),e){let B=t-m-8;e.setUint32(m+0,B,O)}}if(e){let m=t-c;e.setUint32(f,m,O)}return t}function Yt(r,e,t,n){return ba(r),de(r,e,t,n)}function ba(r){if(r.buffers&&r.buffers.length>1)throw new Error("encodeGLTF: multiple buffers not yet implemented")}var Fn={dataType:null,batchType:null,name:"glTF",id:"gltf",module:"gltf",version:H,extensions:["glb"],mimeTypes:["model/gltf-binary"],binary:!0,options:{gltf:{}},encode:async(r,e={})=>Mn(r,e),encodeSync:Mn};function Mn(r,e={}){let{byteOffset:t=0}=e,n=Cn(r),o=Yt(n,null,t,e),s=new ArrayBuffer(o),i=new DataView(s);return Yt(n,i,t,e),s}var In={dataType:null,batchType:null,name:"GLB",id:"glb",module:"gltf",version:H,extensions:["glb"],mimeTypes:["model/gltf-binary"],binary:!0,parse:xa,parseSync:Gn,options:{glb:{strict:!1}}};async function xa(r,e){return Gn(r,e)}function Gn(r,e){let t={};return Se(t,r,e?.glb?.byteOffset||0,e?.glb),t}var Rn={name:"GLB",id:"glb",module:"gltf",version:H,extensions:["glb"],mimeTypes:["model/gltf-binary"],binary:!0,options:{glb:{}},encode:async(r,e={})=>Dn(r,e),encodeSync:Dn};function Dn(r,e){let{byteOffset:t=0}=e??{},n=de(r,null,t,e),o=new ArrayBuffer(n),s=new DataView(o);return de(r,s,t,e),o}var Ea={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},ya={5120:1,5121:1,5122:2,5123:2,5125:4,5126:4},F={TEXTURE_MAG_FILTER:10240,TEXTURE_MIN_FILTER:10241,TEXTURE_WRAP_S:10242,TEXTURE_WRAP_T:10243,REPEAT:10497,LINEAR:9729,NEAREST_MIPMAP_LINEAR:9986},Ta={magFilter:F.TEXTURE_MAG_FILTER,minFilter:F.TEXTURE_MIN_FILTER,wrapS:F.TEXTURE_WRAP_S,wrapT:F.TEXTURE_WRAP_T},Ma={[F.TEXTURE_MAG_FILTER]:F.LINEAR,[F.TEXTURE_MIN_FILTER]:F.NEAREST_MIPMAP_LINEAR,[F.TEXTURE_WRAP_S]:F.REPEAT,[F.TEXTURE_WRAP_T]:F.REPEAT};function Fa(){return{id:"default-sampler",parameters:Ma}}function Ia(r){return ya[r]}function Ga(r){return Ea[r]}var Vt=class{baseUri="";jsonUnprocessed;json;buffers=[];images=[];postProcess(e,t={}){let{json:n,buffers:o=[],images:s=[]}=e,{baseUri:i=""}=e;return h(n),this.baseUri=i,this.buffers=o,this.images=s,this.jsonUnprocessed=n,this.json=this._resolveTree(e.json,t),this.json}_resolveTree(e,t={}){let n={...e};return this.json=n,e.bufferViews&&(n.bufferViews=e.bufferViews.map((o,s)=>this._resolveBufferView(o,s))),e.images&&(n.images=e.images.map((o,s)=>this._resolveImage(o,s))),e.samplers&&(n.samplers=e.samplers.map((o,s)=>this._resolveSampler(o,s))),e.textures&&(n.textures=e.textures.map((o,s)=>this._resolveTexture(o,s))),e.accessors&&(n.accessors=e.accessors.map((o,s)=>this._resolveAccessor(o,s))),e.materials&&(n.materials=e.materials.map((o,s)=>this._resolveMaterial(o,s))),e.meshes&&(n.meshes=e.meshes.map((o,s)=>this._resolveMesh(o,s))),e.nodes&&(n.nodes=e.nodes.map((o,s)=>this._resolveNode(o,s)),n.nodes=n.nodes.map((o,s)=>this._resolveNodeChildren(o))),e.skins&&(n.skins=e.skins.map((o,s)=>this._resolveSkin(o,s))),e.scenes&&(n.scenes=e.scenes.map((o,s)=>this._resolveScene(o,s))),typeof this.json.scene=="number"&&n.scenes&&(n.scene=n.scenes[this.json.scene]),n}getScene(e){return this._get(this.json.scenes,e)}getNode(e){return this._get(this.json.nodes,e)}getSkin(e){return this._get(this.json.skins,e)}getMesh(e){return this._get(this.json.meshes,e)}getMaterial(e){return this._get(this.json.materials,e)}getAccessor(e){return this._get(this.json.accessors,e)}getCamera(e){return this._get(this.json.cameras,e)}getTexture(e){return this._get(this.json.textures,e)}getSampler(e){return this._get(this.json.samplers,e)}getImage(e){return this._get(this.json.images,e)}getBufferView(e){return this._get(this.json.bufferViews,e)}getBuffer(e){return this._get(this.json.buffers,e)}_get(e,t){if(typeof t=="object")return t;let n=e&&e[t];return n||console.warn(`glTF file error: Could not find ${e}[${t}]`),n}_resolveScene(e,t){return{...e,id:e.id||`scene-${t}`,nodes:(e.nodes||[]).map(n=>this.getNode(n))}}_resolveNode(e,t){let n={...e,id:e?.id||`node-${t}`};return e.mesh!==void 0&&(n.mesh=this.getMesh(e.mesh)),e.camera!==void 0&&(n.camera=this.getCamera(e.camera)),e.skin!==void 0&&(n.skin=this.getSkin(e.skin)),e.meshes!==void 0&&e.meshes.length&&(n.mesh=e.meshes.reduce((o,s)=>{let i=this.getMesh(s);return o.id=i.id,o.primitives=o.primitives.concat(i.primitives),o},{primitives:[]})),n}_resolveNodeChildren(e){return e.children&&(e.children=e.children.map(t=>this.getNode(t))),e}_resolveSkin(e,t){let n=typeof e.inverseBindMatrices=="number"?this.getAccessor(e.inverseBindMatrices):void 0;return{...e,id:e.id||`skin-${t}`,inverseBindMatrices:n}}_resolveMesh(e,t){let n={...e,id:e.id||`mesh-${t}`,primitives:[]};return e.primitives&&(n.primitives=e.primitives.map(o=>{let s={...o,attributes:{},indices:void 0,material:void 0},i=o.attributes;for(let a in i)s.attributes[a]=this.getAccessor(i[a]);return o.indices!==void 0&&(s.indices=this.getAccessor(o.indices)),o.material!==void 0&&(s.material=this.getMaterial(o.material)),s})),n}_resolveMaterial(e,t){let n={...e,id:e.id||`material-${t}`};if(n.normalTexture&&(n.normalTexture={...n.normalTexture},n.normalTexture.texture=this.getTexture(n.normalTexture.index)),n.occlusionTexture&&(n.occlusionTexture={...n.occlusionTexture},n.occlusionTexture.texture=this.getTexture(n.occlusionTexture.index)),n.emissiveTexture&&(n.emissiveTexture={...n.emissiveTexture},n.emissiveTexture.texture=this.getTexture(n.emissiveTexture.index)),n.emissiveFactor||(n.emissiveFactor=n.emissiveTexture?[1,1,1]:[0,0,0]),n.pbrMetallicRoughness){n.pbrMetallicRoughness={...n.pbrMetallicRoughness};let o=n.pbrMetallicRoughness;o.baseColorTexture&&(o.baseColorTexture={...o.baseColorTexture},o.baseColorTexture.texture=this.getTexture(o.baseColorTexture.index)),o.metallicRoughnessTexture&&(o.metallicRoughnessTexture={...o.metallicRoughnessTexture},o.metallicRoughnessTexture.texture=this.getTexture(o.metallicRoughnessTexture.index))}return n}_resolveAccessor(e,t){let n=Ia(e.componentType),o=Ga(e.type),s=n*o,i={...e,id:e.id||`accessor-${t}`,bytesPerComponent:n,components:o,bytesPerElement:s,value:void 0,bufferView:void 0,sparse:void 0};if(e.bufferView!==void 0&&(i.bufferView=this.getBufferView(e.bufferView)),i.bufferView){let a=i.bufferView.buffer,{ArrayType:c,byteLength:f}=Q(i,i.bufferView),A=(i.bufferView.byteOffset||0)+(i.byteOffset||0)+a.byteOffset,u=ie(a.arrayBuffer,A,f);i.bufferView.byteStride&&(u=this._getValueFromInterleavedBuffer(a,A,i.bufferView.byteStride,i.bytesPerElement,i.count)),i.value=new c(u)}return i}_getValueFromInterleavedBuffer(e,t,n,o,s){let i=new Uint8Array(s*o);for(let a=0;a<s;a++){let c=t+a*n;i.set(new Uint8Array(e.arrayBuffer.slice(c,c+o)),a*o)}return i.buffer}_resolveTexture(e,t){return{...e,id:e.id||`texture-${t}`,sampler:typeof e.sampler=="number"?this.getSampler(e.sampler):Fa(),source:typeof e.source=="number"?this.getImage(e.source):void 0}}_resolveSampler(e,t){let n={id:e.id||`sampler-${t}`,...e,parameters:{}};for(let o in n){let s=this._enumSamplerParameter(o);s!==void 0&&(n.parameters[s]=n[o])}return n}_enumSamplerParameter(e){return Ta[e]}_resolveImage(e,t){let n={...e,id:e.id||`image-${t}`,image:null,bufferView:e.bufferView!==void 0?this.getBufferView(e.bufferView):void 0},o=this.images[t];return o&&(n.image=o),n}_resolveBufferView(e,t){let n=e.buffer,o=this.buffers[n].arrayBuffer,s=this.buffers[n].byteOffset||0;return e.byteOffset&&(s+=e.byteOffset),{id:`bufferView-${t}`,...e,buffer:this.buffers[n],data:new Uint8Array(o,s,e.byteLength)}}_resolveCamera(e,t){let n={...e,id:e.id||`camera-${t}`};return n.perspective,n.orthographic,n}};function wn(r,e){return new Vt().postProcess(r,e)}return Nn(pe);})();
7
+ "use strict";var __exports__=(()=>{var Ln=Object.create;var Ce=Object.defineProperty;var _n=Object.getOwnPropertyDescriptor;var Sn=Object.getOwnPropertyNames;var Jn=Object.getPrototypeOf,Un=Object.prototype.hasOwnProperty;var Hn=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),y=(r,e)=>{for(var t in e)Ce(r,t,{get:e[t],enumerable:!0})},ge=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of Sn(e))!Un.call(r,o)&&o!==t&&Ce(r,o,{get:()=>e[o],enumerable:!(n=_n(e,o))||n.enumerable});return r},be=(r,e,t)=>(ge(r,e,"default"),t&&ge(t,e,"default")),Nn=(r,e,t)=>(t=r!=null?Ln(Jn(r)):{},ge(e||!r||!r.__esModule?Ce(t,"default",{value:r,enumerable:!0}):t,r)),Pn=r=>ge(Ce({},"__esModule",{value:!0}),r);var qt=Hn((wa,Zt)=>{Zt.exports=globalThis.loaders});var he={};y(he,{EXT_FEATURE_METADATA:()=>lt,EXT_MESH_FEATURES:()=>ct,EXT_STRUCTURAL_METADATA:()=>ut,GLBLoader:()=>Gn,GLBWriter:()=>wn,GLTFLoader:()=>Ye,GLTFScenegraph:()=>l,GLTFWriter:()=>In,_getMemoryUsageGLTF:()=>hr,createExtMeshFeatures:()=>ft,createExtStructuralMetadata:()=>Bt,postProcessGLTF:()=>On});be(he,Nn(qt(),1));var we={};y(we,{createExtMeshFeatures:()=>ft,decode:()=>Lo,encode:()=>_o,name:()=>ct});var zt="4.4.0-alpha.18";async function re(r,e,t,n){return n._parse(r,e,t,n)}function T(r,e){if(!r)throw new Error(e||"loader assertion failed.")}var G={self:typeof self<"u"&&self,window:typeof window<"u"&&window,global:typeof global<"u"&&global,document:typeof document<"u"&&document},Kn=G.self||G.window||G.global||{},jn=G.window||G.self||G.global||{},vn=G.global||G.self||G.window||{},Qn=G.document||{};var ne=Boolean(typeof process!="object"||String(process)!=="[object process]"||process.browser);var $t=typeof process<"u"&&process.version&&/v([0-9]*)/.exec(process.version),Xn=$t&&parseFloat($t[1])||0;var er=r=>typeof SharedArrayBuffer<"u"&&r instanceof SharedArrayBuffer;function We(r){globalThis.loaders||={},globalThis.loaders.modules||={},Object.assign(globalThis.loaders.modules,r)}function Ze(r){return globalThis.loaders?.modules?.[r]||null}function kn(){return globalThis._loadersgl_?.version||(globalThis._loadersgl_=globalThis._loadersgl_||{},globalThis._loadersgl_.version="4.4.0-alpha.18"),globalThis._loadersgl_.version}var tr=kn();function rr(r,e){if(!r)throw new Error(e||"loaders.gl assertion failed.")}var D={self:typeof self<"u"&&self,window:typeof window<"u"&&window,global:typeof global<"u"&&global,document:typeof document<"u"&&document},Pa=D.self||D.window||D.global||{},Ka=D.window||D.self||D.global||{},ja=D.global||D.self||D.window||{},va=D.document||{};var L=typeof process!="object"||String(process)!=="[object process]"||process.browser,oe=typeof importScripts=="function",Qa=typeof window<"u"&&typeof window.orientation<"u",nr=typeof process<"u"&&process.version&&/v([0-9]*)/.exec(process.version),Xa=nr&&parseFloat(nr[1])||0;var qe={};function se(r={}){let e=r.useLocalLibraries??r.core?.useLocalLibraries,t=r.CDN??r.core?.CDN,n=r.modules;return{...e!==void 0?{useLocalLibraries:e}:{},...t!==void 0?{CDN:t}:{},...n!==void 0?{modules:n}:{}}}async function M(r,e=null,t={},n=null){return e&&(r=or(r,e,t,n)),qe[r]=qe[r]||Yn(r),await qe[r]}function or(r,e,t={},n=null){if(t?.core)throw new Error("loadLibrary: options.core must be pre-normalized");if(!t.useLocalLibraries&&r.startsWith("http"))return r;n=n||r;let o=t.modules||{};return o[n]?o[n]:L?t.CDN?(rr(t.CDN.startsWith("http")),`${t.CDN}/${e}@${tr}/dist/libs/${n}`):oe?`../src/libs/${n}`:`modules/${e}/src/libs/${n}`:`modules/${e}/dist/libs/${n}`}async function Yn(r){if(r.endsWith("wasm"))return await Wn(r);if(!L){let{requireFromFile:t}=globalThis.loaders||{};try{let n=await t?.(r);return n||!r.includes("/dist/libs/")?n:await t?.(r.replace("/dist/libs/","/src/libs/"))}catch(n){if(r.includes("/dist/libs/"))try{return await t?.(r.replace("/dist/libs/","/src/libs/"))}catch{}return console.error(n),null}}if(oe)return importScripts(r);let e=await Zn(r);return Vn(e,r)}function Vn(r,e){if(!L){let{requireFromString:n}=globalThis.loaders||{};return n?.(r,e)}if(oe)return eval.call(globalThis,r),null;let t=document.createElement("script");t.id=e;try{t.appendChild(document.createTextNode(r))}catch{t.text=r}return document.body.appendChild(t),null}async function Wn(r){let{readFileAsArrayBuffer:e}=globalThis.loaders||{};if(L||!e||r.startsWith("http"))return await(await fetch(r)).arrayBuffer();try{return await e(r)}catch{if(r.includes("/dist/libs/"))return await e(r.replace("/dist/libs/","/src/libs/"));throw new Error(`Failed to load ArrayBuffer from ${r}`)}}async function Zn(r){let{readFileAsText:e}=globalThis.loaders||{};if(L||!e||r.startsWith("http"))return await(await fetch(r)).text();try{return await e(r)}catch{if(r.includes("/dist/libs/"))return await e(r.replace("/dist/libs/","/src/libs/"));throw new Error(`Failed to load text from ${r}`)}}function ir(r,e=5){return typeof r=="string"?r.slice(0,e):ArrayBuffer.isView(r)?sr(r.buffer,r.byteOffset,e):r instanceof ArrayBuffer?sr(r,0,e):""}function sr(r,e,t){if(r.byteLength<=e+t)return"";let n=new DataView(r),o="";for(let s=0;s<t;s++)o+=String.fromCharCode(n.getUint8(e+s));return o}function ze(r){try{return JSON.parse(r)}catch{throw new Error(`Failed to parse JSON from data starting with "${ir(r)}"`)}}function ie(r,e,t){let n=t!==void 0?new Uint8Array(r).subarray(e,e+t):new Uint8Array(r).subarray(e);return new Uint8Array(n).buffer}function R(r,e){return T(r>=0),T(e>0),r+(e-1)&~(e-1)}function $e(r,e,t){let n;if(r instanceof ArrayBuffer)n=new Uint8Array(r);else{let o=r.byteOffset,s=r.byteLength;n=new Uint8Array(r.buffer||r.arrayBuffer,o,s)}return e.set(n,t),t+R(n.byteLength,4)}function xe(r,e,t,n){let o=R(t.byteLength,n),s=o-t.byteLength;if(r){let i=new Uint8Array(r.buffer,r.byteOffset+e,t.byteLength),a=new Uint8Array(t);i.set(a);for(let c=0;c<s;++c)r.setUint8(e+t.byteLength+c,32)}return e+=o,e}function et(r,e,t,n){let s=new TextEncoder().encode(t);return e=xe(r,e,s,n),e}function J(r){if(r instanceof ArrayBuffer)return r;if(er(r))return ae(r);let{buffer:e,byteOffset:t,byteLength:n}=r;return e instanceof ArrayBuffer&&t===0&&n===e.byteLength?e:ae(e,t,n)}function ae(r,e=0,t=r.byteLength-e){let n=new Uint8Array(r,e,t),o=new Uint8Array(n.length);return o.set(n),o.buffer}var qn=globalThis.loaders?.parseImageNode,tt=typeof Image<"u",rt=typeof ImageBitmap<"u",zn=Boolean(qn),nt=ne?!0:zn;function ar(r){switch(r){case"auto":return rt||tt||nt;case"imagebitmap":return rt;case"image":return tt;case"data":return nt;default:throw new Error(`@loaders.gl/images: image ${r} not supported in this environment`)}}function cr(){if(rt)return"imagebitmap";if(tt)return"image";if(nt)return"data";throw new Error("Install '@loaders.gl/polyfills' to parse images under Node.js")}function fr(r){let e=$n(r);if(!e)throw new Error("Not an image");return e}function ce(r){switch(fr(r)){case"data":return r;case"image":case"imagebitmap":let e=document.createElement("canvas"),t=e.getContext("2d");if(!t)throw new Error("getImageData");return e.width=r.width,e.height=r.height,t.drawImage(r,0,0),t.getImageData(0,0,r.width,r.height);default:throw new Error("getImageData")}}function $n(r){return typeof ImageBitmap<"u"&&r instanceof ImageBitmap?"imagebitmap":typeof Image<"u"&&r instanceof Image?"image":r&&typeof r=="object"&&r.data&&r.width&&r.height?"data":null}var eo=/^data:image\/svg\+xml/,to=/\.svg((\?|#).*)?$/;function Ee(r){return r&&(eo.test(r)||to.test(r))}function Ar(r,e){if(Ee(e)){let n=new TextDecoder().decode(r);try{typeof unescape=="function"&&typeof encodeURIComponent=="function"&&(n=unescape(encodeURIComponent(n)))}catch(s){throw new Error(s.message)}return`data:image/svg+xml;base64,${btoa(n)}`}return ot(r,e)}function ot(r,e){if(Ee(e))throw new Error("SVG cannot be parsed directly to imagebitmap");return new Blob([new Uint8Array(r)])}async function ye(r,e,t){let n=Ar(r,t),o=self.URL||self.webkitURL,s=typeof n!="string"&&o.createObjectURL(n);try{return await ro(s||n,e)}finally{s&&o.revokeObjectURL(s)}}async function ro(r,e){let t=new Image;return t.src=r,e.image&&e.image.decode&&t.decode?(await t.decode(),t):await new Promise((n,o)=>{try{t.onload=()=>n(t),t.onerror=s=>{let i=s instanceof Error?s.message:"error";o(new Error(i))}}catch(s){o(s)}})}var ur=!0;async function mr(r,e,t){let n;Ee(t)?n=await ye(r,e,t):n=ot(r,t);let o=e&&e.imagebitmap;return await no(n,o)}async function no(r,e=null){if((oo(e)||!ur)&&(e=null),e)try{return await createImageBitmap(r,e)}catch(t){console.warn(t),ur=!1}return await createImageBitmap(r)}function oo(r){if(!r)return!0;for(let e in r)if(Object.prototype.hasOwnProperty.call(r,e))return!1;return!0}function Br(r){return!co(r,"ftyp",4)||!(r[8]&96)?null:so(r)}function so(r){switch(io(r,8,12).replace("\0"," ").trim()){case"avif":case"avis":return{extension:"avif",mimeType:"image/avif"};default:return null}}function io(r,e,t){return String.fromCharCode(...r.slice(e,t))}function ao(r){return[...r].map(e=>e.charCodeAt(0))}function co(r,e,t=0){let n=ao(e);for(let o=0;o<n.length;++o)if(n[o]!==r[o+t])return!1;return!0}var w=!1,fe=!0;function P(r){let e=Ae(r);return Ao(e)||Bo(e)||uo(e)||mo(e)||fo(e)}function fo(r){let e=new Uint8Array(r instanceof DataView?r.buffer:r),t=Br(e);return t?{mimeType:t.mimeType,width:0,height:0}:null}function Ao(r){let e=Ae(r);return e.byteLength>=24&&e.getUint32(0,w)===2303741511?{mimeType:"image/png",width:e.getUint32(16,w),height:e.getUint32(20,w)}:null}function uo(r){let e=Ae(r);return e.byteLength>=10&&e.getUint32(0,w)===1195984440?{mimeType:"image/gif",width:e.getUint16(6,fe),height:e.getUint16(8,fe)}:null}function mo(r){let e=Ae(r);return e.byteLength>=14&&e.getUint16(0,w)===16973&&e.getUint32(2,fe)===e.byteLength?{mimeType:"image/bmp",width:e.getUint32(18,fe),height:e.getUint32(22,fe)}:null}function Bo(r){let e=Ae(r);if(!(e.byteLength>=3&&e.getUint16(0,w)===65496&&e.getUint8(2)===255))return null;let{tableMarkers:n,sofMarkers:o}=lo(),s=2;for(;s+9<e.byteLength;){let i=e.getUint16(s,w);if(o.has(i))return{mimeType:"image/jpeg",height:e.getUint16(s+5,w),width:e.getUint16(s+7,w)};if(!n.has(i))return null;s+=2,s+=e.getUint16(s,w)}return null}function lo(){let r=new Set([65499,65476,65484,65501,65534]);for(let t=65504;t<65520;++t)r.add(t);return{tableMarkers:r,sofMarkers:new Set([65472,65473,65474,65475,65477,65478,65479,65481,65482,65483,65485,65486,65487,65502])}}function Ae(r){if(r instanceof DataView)return r;if(ArrayBuffer.isView(r))return new DataView(r.buffer);if(r instanceof ArrayBuffer)return new DataView(r);throw new Error("toDataView")}async function lr(r,e){let{mimeType:t}=P(r)||{},n=globalThis.loaders?.parseImageNode;return T(n),await n(r,t)}async function dr(r,e,t){e=e||{};let o=(e.image||{}).type||"auto",{url:s}=t||{},i=po(o),a;switch(i){case"imagebitmap":a=await mr(r,e,s);break;case"image":a=await ye(r,e,s);break;case"data":a=await lr(r,e);break;default:T(!1)}return o==="data"&&(a=ce(a)),a}function po(r){switch(r){case"auto":case"data":return cr();default:return ar(r),r}}var ho=["png","jpg","jpeg","gif","webp","bmp","ico","svg","avif"],go=["image/png","image/jpeg","image/gif","image/webp","image/avif","image/bmp","image/vnd.microsoft.icon","image/svg+xml"],Co={image:{type:"auto",decode:!0}},st={dataType:null,batchType:null,id:"image",module:"images",name:"Images",version:zt,mimeTypes:go,extensions:ho,parse:dr,tests:[r=>Boolean(P(new DataView(r)))],options:Co};var it={};function at(r){if(it[r]===void 0){let e=ne?xo(r):bo(r);it[r]=e}return it[r]}function bo(r){let e=["image/png","image/jpeg","image/gif"],t=globalThis.loaders?.imageFormatsNode||e,n=globalThis.loaders?.parseImageNode;return Boolean(n)&&t.includes(r)}function xo(r){switch(r){case"image/avif":case"image/webp":return Eo(r);default:return!0}}function Eo(r){try{return document.createElement("canvas").toDataURL(r).indexOf(`data:${r}`)===0}catch{return!1}}function h(r,e){if(!r)throw new Error(e||"assert failed: gltf")}var Te={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},Me={5120:1,5121:1,5122:2,5123:2,5125:4,5126:4};var yo=1.33,pr=["SCALAR","VEC2","VEC3","VEC4"],To=[[Int8Array,5120],[Uint8Array,5121],[Int16Array,5122],[Uint16Array,5123],[Uint32Array,5125],[Float32Array,5126],[Float64Array,5130]],Mo=new Map(To),Fo={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},Io={5120:1,5121:1,5122:2,5123:2,5125:4,5126:4},Go={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array};function Fe(r){return pr[r-1]||pr[0]}function U(r){let e=Mo.get(r.constructor);if(!e)throw new Error("Illegal typed array");return e}function Q(r,e){let t=Go[r.componentType],n=Fo[r.type],o=Io[r.componentType],s=r.count*n,i=r.count*n*o;h(i>=0&&i<=e.byteLength);let a=Me[r.componentType],c=Te[r.type];return{ArrayType:t,length:s,byteLength:i,componentByteSize:a,numberOfComponentsInElement:c}}function hr(r){let{images:e,bufferViews:t}=r;e=e||[],t=t||[];let n=e.map(i=>i.bufferView);t=t.filter(i=>!n.includes(i));let o=t.reduce((i,a)=>i+a.byteLength,0),s=e.reduce((i,a)=>{let{width:c,height:f}=a.image;return i+c*f},0);return o+Math.ceil(4*s*yo)}function gr(r,e,t){let n=r.bufferViews[t];h(n);let o=n.buffer,s=e[o];h(s);let i=(n.byteOffset||0)+s.byteOffset;return new Uint8Array(s.arrayBuffer,i,n.byteLength)}function Cr(r,e,t){let n=typeof t=="number"?r.accessors?.[t]:t;if(!n)throw new Error(`No gltf accessor ${JSON.stringify(t)}`);let o=r.bufferViews?.[n.bufferView||0];if(!o)throw new Error(`No gltf buffer view for accessor ${o}`);let{arrayBuffer:s,byteOffset:i}=e[o.buffer],a=(i||0)+(n.byteOffset||0)+(o.byteOffset||0),{ArrayType:c,length:f,componentByteSize:A,numberOfComponentsInElement:u}=Q(n,o),m=A*u,B=o.byteStride||m;if(typeof o.byteStride>"u"||o.byteStride===m)return new c(s,a,f);let d=new c(f);for(let p=0;p<n.count;p++){let x=new c(s,a+p*B,u);d.set(x,p*u)}return d}function Do(){return{asset:{version:"2.0",generator:"loaders.gl"},buffers:[],extensions:{},extensionsRequired:[],extensionsUsed:[]}}var l=class{gltf;sourceBuffers;byteLength;constructor(e){this.gltf={json:e?.json||Do(),buffers:e?.buffers||[],images:e?.images||[]},this.sourceBuffers=[],this.byteLength=0,this.gltf.buffers&&this.gltf.buffers[0]&&(this.byteLength=this.gltf.buffers[0].byteLength,this.sourceBuffers=[this.gltf.buffers[0]])}get json(){return this.gltf.json}getApplicationData(e){return this.json[e]}getExtraData(e){return(this.json.extras||{})[e]}hasExtension(e){let t=this.getUsedExtensions().find(o=>o===e),n=this.getRequiredExtensions().find(o=>o===e);return typeof t=="string"||typeof n=="string"}getExtension(e){let t=this.getUsedExtensions().find(o=>o===e),n=this.json.extensions||{};return t?n[e]:null}getRequiredExtension(e){return this.getRequiredExtensions().find(n=>n===e)?this.getExtension(e):null}getRequiredExtensions(){return this.json.extensionsRequired||[]}getUsedExtensions(){return this.json.extensionsUsed||[]}getRemovedExtensions(){return this.json.extensionsRemoved||[]}getObjectExtension(e,t){return(e.extensions||{})[t]}getScene(e){return this.getObject("scenes",e)}getNode(e){return this.getObject("nodes",e)}getSkin(e){return this.getObject("skins",e)}getMesh(e){return this.getObject("meshes",e)}getMaterial(e){return this.getObject("materials",e)}getAccessor(e){return this.getObject("accessors",e)}getTexture(e){return this.getObject("textures",e)}getSampler(e){return this.getObject("samplers",e)}getImage(e){return this.getObject("images",e)}getBufferView(e){return this.getObject("bufferViews",e)}getBuffer(e){return this.getObject("buffers",e)}getObject(e,t){if(typeof t=="object")return t;let n=this.json[e]&&this.json[e][t];if(!n)throw new Error(`glTF file error: Could not find ${e}[${t}]`);return n}getTypedArrayForBufferView(e){e=this.getBufferView(e);let t=e.buffer,n=this.gltf.buffers[t];h(n);let o=(e.byteOffset||0)+n.byteOffset;return new Uint8Array(n.arrayBuffer,o,e.byteLength)}getTypedArrayForAccessor(e){let t=this.getAccessor(e);return Cr(this.gltf.json,this.gltf.buffers,t)}getTypedArrayForImageData(e){e=this.getAccessor(e);let t=this.getBufferView(e.bufferView),o=this.getBuffer(t.buffer).data,s=t.byteOffset||0;return new Uint8Array(o,s,t.byteLength)}addApplicationData(e,t){return this.json[e]=t,this}addExtraData(e,t){return this.json.extras=this.json.extras||{},this.json.extras[e]=t,this}addObjectExtension(e,t,n){return e.extensions=e.extensions||{},e.extensions[t]=n,this.registerUsedExtension(t),this}setObjectExtension(e,t,n){let o=e.extensions||{};o[t]=n}removeObjectExtension(e,t){let n=e?.extensions||{};if(n[t]){this.json.extensionsRemoved=this.json.extensionsRemoved||[];let o=this.json.extensionsRemoved;o.includes(t)||o.push(t)}delete n[t]}addExtension(e,t={}){return h(t),this.json.extensions=this.json.extensions||{},this.json.extensions[e]=t,this.registerUsedExtension(e),t}addRequiredExtension(e,t={}){return h(t),this.addExtension(e,t),this.registerRequiredExtension(e),t}registerUsedExtension(e){this.json.extensionsUsed=this.json.extensionsUsed||[],this.json.extensionsUsed.find(t=>t===e)||this.json.extensionsUsed.push(e)}registerRequiredExtension(e){this.registerUsedExtension(e),this.json.extensionsRequired=this.json.extensionsRequired||[],this.json.extensionsRequired.find(t=>t===e)||this.json.extensionsRequired.push(e)}removeExtension(e){if(this.json.extensions?.[e]){this.json.extensionsRemoved=this.json.extensionsRemoved||[];let t=this.json.extensionsRemoved;t.includes(e)||t.push(e)}this.json.extensions&&delete this.json.extensions[e],this.json.extensionsRequired&&this._removeStringFromArray(this.json.extensionsRequired,e),this.json.extensionsUsed&&this._removeStringFromArray(this.json.extensionsUsed,e)}setDefaultScene(e){this.json.scene=e}addScene(e){let{nodeIndices:t}=e;return this.json.scenes=this.json.scenes||[],this.json.scenes.push({nodes:t}),this.json.scenes.length-1}addNode(e){let{meshIndex:t,matrix:n}=e;this.json.nodes=this.json.nodes||[];let o={mesh:t};return n&&(o.matrix=n),this.json.nodes.push(o),this.json.nodes.length-1}addMesh(e){let{attributes:t,indices:n,material:o,mode:s=4}=e,a={primitives:[{attributes:this._addAttributes(t),mode:s}]};if(n){let c=this._addIndices(n);a.primitives[0].indices=c}return Number.isFinite(o)&&(a.primitives[0].material=o),this.json.meshes=this.json.meshes||[],this.json.meshes.push(a),this.json.meshes.length-1}addPointCloud(e){let n={primitives:[{attributes:this._addAttributes(e),mode:0}]};return this.json.meshes=this.json.meshes||[],this.json.meshes.push(n),this.json.meshes.length-1}addImage(e,t){let n=P(e),o=t||n?.mimeType,i={bufferView:this.addBufferView(e),mimeType:o};return this.json.images=this.json.images||[],this.json.images.push(i),this.json.images.length-1}addBufferView(e,t=0,n=this.byteLength){let o=e.byteLength;h(Number.isFinite(o)),this.sourceBuffers=this.sourceBuffers||[],this.sourceBuffers.push(e);let s={buffer:t,byteOffset:n,byteLength:o};return this.byteLength+=R(o,4),this.json.bufferViews=this.json.bufferViews||[],this.json.bufferViews.push(s),this.json.bufferViews.length-1}addAccessor(e,t){let n={bufferView:e,type:Fe(t.size),componentType:t.componentType,count:t.count,max:t.max,min:t.min};return this.json.accessors=this.json.accessors||[],this.json.accessors.push(n),this.json.accessors.length-1}addBinaryBuffer(e,t={size:3}){let n=this.addBufferView(e),o={min:t.min,max:t.max};(!o.min||!o.max)&&(o=this._getAccessorMinMax(e,t.size));let s={size:t.size,componentType:U(e),count:Math.round(e.length/t.size),min:o.min,max:o.max};return this.addAccessor(n,Object.assign(s,t))}addTexture(e){let{imageIndex:t}=e,n={source:t};return this.json.textures=this.json.textures||[],this.json.textures.push(n),this.json.textures.length-1}addMaterial(e){return this.json.materials=this.json.materials||[],this.json.materials.push(e),this.json.materials.length-1}createBinaryChunk(){let e=this.byteLength,t=new ArrayBuffer(e),n=new Uint8Array(t),o=0;for(let s of this.sourceBuffers||[])o=$e(s,n,o);this.json?.buffers?.[0]?this.json.buffers[0].byteLength=e:this.json.buffers=[{byteLength:e}],this.gltf.binary=t,this.sourceBuffers=[t],this.gltf.buffers=[{arrayBuffer:t,byteOffset:0,byteLength:t.byteLength}]}_removeStringFromArray(e,t){let n=!0;for(;n;){let o=e.indexOf(t);o>-1?e.splice(o,1):n=!1}}_addAttributes(e={}){let t={};for(let n in e){let o=e[n],s=this._getGltfAttributeName(n),i=this.addBinaryBuffer(o.value,o);t[s]=i}return t}_addIndices(e){return this.addBinaryBuffer(e,{size:1})}_getGltfAttributeName(e){switch(e.toLowerCase()){case"position":case"positions":case"vertices":return"POSITION";case"normal":case"normals":return"NORMAL";case"color":case"colors":return"COLOR_0";case"texcoord":case"texcoords":return"TEXCOORD_0";default:return e}}_getAccessorMinMax(e,t){let n={min:null,max:null};if(e.length<t)return n;n.min=[],n.max=[];let o=e.subarray(0,t);for(let s of o)n.min.push(s),n.max.push(s);for(let s=t;s<e.length;s+=t)for(let i=0;i<t;i++)n.min[0+i]=Math.min(n.min[0+i],e[s+i]),n.max[0+i]=Math.max(n.max[0+i],e[s+i]);return n}};function br(r){return(r%1+1)%1}var xr={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16,BOOLEAN:1,STRING:1,ENUM:1},Ro={INT8:Int8Array,UINT8:Uint8Array,INT16:Int16Array,UINT16:Uint16Array,INT32:Int32Array,UINT32:Uint32Array,INT64:BigInt64Array,UINT64:BigUint64Array,FLOAT32:Float32Array,FLOAT64:Float64Array},Er={INT8:1,UINT8:1,INT16:2,UINT16:2,INT32:4,UINT32:4,INT64:8,UINT64:8,FLOAT32:4,FLOAT64:8};function ue(r,e){return Er[e]*xr[r]}function X(r,e,t,n){if(t!=="UINT8"&&t!=="UINT16"&&t!=="UINT32"&&t!=="UINT64")return null;let o=r.getTypedArrayForBufferView(e),s=k(o,"SCALAR",t,n+1);return s instanceof BigInt64Array||s instanceof BigUint64Array?null:s}function k(r,e,t,n=1){let o=xr[e],s=Ro[t],i=Er[t],a=n*o,c=a*i,f=r.buffer,A=r.byteOffset;return A%i!==0&&(f=new Uint8Array(f).slice(A,A+c).buffer,A=0),new s(J(f),A,a)}function Y(r,e,t){let n=`TEXCOORD_${e.texCoord||0}`,o=t.attributes[n],s=r.getTypedArrayForAccessor(o),i=r.gltf.json,a=e.index,c=i.textures?.[a]?.source;if(typeof c<"u"){let f=i.images?.[c]?.mimeType,A=r.gltf.images?.[c];if(A&&typeof A.width<"u"){let u=[];for(let m=0;m<s.length;m+=2){let B=wo(A,f,s,m,e.channels);u.push(B)}return u}}return[]}function Ie(r,e,t,n,o){if(!t?.length)return;let s=[];for(let A of t){let u=n.findIndex(m=>m===A);u===-1&&(u=n.push(A)-1),s.push(u)}let i=new Uint32Array(s),a=r.gltf.buffers.push({arrayBuffer:i.buffer,byteOffset:i.byteOffset,byteLength:i.byteLength})-1,c=r.addBufferView(i,a,0),f=r.addAccessor(c,{size:1,componentType:U(i),count:i.length});o.attributes[e]=f}function wo(r,e,t,n,o=[0]){let s={r:{offset:0,shift:0},g:{offset:1,shift:8},b:{offset:2,shift:16},a:{offset:3,shift:24}},i=t[n],a=t[n+1],c=1;e&&(e.indexOf("image/jpeg")!==-1||e.indexOf("image/png")!==-1)&&(c=4);let f=Oo(i,a,r,c),A=0;for(let u of o){let m=typeof u=="number"?Object.values(s)[u]:s[u],B=f+m.offset,d=ce(r);if(d.data.length<=B)throw new Error(`${d.data.length} <= ${B}`);let p=d.data[B];A|=p<<m.shift}return A}function Oo(r,e,t,n=1){let o=t.width,s=br(r)*(o-1),i=Math.round(s),a=t.height,c=br(e)*(a-1),f=Math.round(c),A=t.components?t.components:n;return(f*o+i)*A}function Ge(r,e,t,n,o){let s=[];for(let i=0;i<e;i++){let a=t[i],c=t[i+1]-t[i];if(c+a>n)break;let f=a/o,A=c/o;s.push(r.slice(f,f+A))}return s}function De(r,e,t){let n=[];for(let o=0;o<e;o++){let s=o*t;n.push(r.slice(s,s+t))}return n}function Re(r,e,t,n){if(t)throw new Error("Not implemented - arrayOffsets for strings is specified");if(n){let o=[],s=new TextDecoder("utf8"),i=0;for(let a=0;a<r;a++){let c=n[a+1]-n[a];if(c+i<=e.length){let f=e.subarray(i,c+i),A=s.decode(f);o.push(A),i+=c}}return o}return[]}var V="EXT_mesh_features",ct=V;async function Lo(r,e){let t=new l(r);So(t,e)}function _o(r,e){let t=new l(r);return Uo(t,e),t.createBinaryChunk(),t.gltf}function So(r,e){let t=r.gltf.json;if(t.meshes)for(let n of t.meshes)for(let o of n.primitives)Jo(r,o,e)}function Jo(r,e,t){if(!t?.gltf?.loadBuffers)return;let o=e.extensions?.[V]?.featureIds;if(o)for(let s of o){let i;if(typeof s.attribute<"u"){let a=`_FEATURE_ID_${s.attribute}`,c=e.attributes[a];i=r.getTypedArrayForAccessor(c)}else typeof s.texture<"u"&&t?.gltf?.loadImages?i=Y(r,s.texture,e):i=[];s.data=i}}function Uo(r,e){let t=r.gltf.json.meshes;if(t)for(let n of t)for(let o of n.primitives)Ho(r,o)}function ft(r,e,t,n){e.extensions||(e.extensions={});let o=e.extensions[V];o||(o={featureIds:[]},e.extensions[V]=o);let{featureIds:s}=o,i={featureCount:t.length,propertyTable:n,data:t};s.push(i),r.addObjectExtension(e,V,o)}function Ho(r,e){let t=e.extensions?.[V];if(!t)return;let n=t.featureIds;n.forEach((o,s)=>{if(o.data){let{accessorKey:i,index:a}=No(e.attributes),c=new Uint32Array(o.data);n[s]={featureCount:c.length,propertyTable:o.propertyTable,attribute:a},r.gltf.buffers.push({arrayBuffer:c.buffer,byteOffset:c.byteOffset,byteLength:c.byteLength});let f=r.addBufferView(c),A=r.addAccessor(f,{size:1,componentType:U(c),count:c.length});e.attributes[i]=A}})}function No(r){let e="_FEATURE_ID_",t=Object.keys(r).filter(s=>s.indexOf(e)===0),n=-1;for(let s of t){let i=Number(s.substring(e.length));i>n&&(n=i)}return n++,{accessorKey:`${e}${n}`,index:n}}var Oe={};y(Oe,{createExtStructuralMetadata:()=>Bt,decode:()=>Po,encode:()=>Ko,name:()=>ut});var W="EXT_structural_metadata",ut=W;async function Po(r,e){let t=new l(r);jo(t,e)}function Ko(r,e){let t=new l(r);return os(t,e),t.createBinaryChunk(),t.gltf}function jo(r,e){if(!e.gltf?.loadBuffers)return;let t=r.getExtension(W);t&&(e.gltf?.loadImages&&vo(r,t),Qo(r,t))}function vo(r,e){let t=e.propertyTextures,n=r.gltf.json;if(t&&n.meshes)for(let o of n.meshes)for(let s of o.primitives)ko(r,t,s,e)}function Qo(r,e){let t=e.schema;if(!t)return;let n=t.classes,o=e.propertyTables;if(n&&o)for(let s in n){let i=Xo(o,s);i&&Vo(r,t,i)}}function Xo(r,e){for(let t of r)if(t.class===e)return t;return null}function ko(r,e,t,n){if(!e)return;let s=t.extensions?.[W]?.propertyTextures;if(s)for(let i of s){let a=e[i];Yo(r,a,t,n)}}function Yo(r,e,t,n){if(!e.properties)return;n.dataAttributeNames||(n.dataAttributeNames=[]);let o=e.class;for(let s in e.properties){let i=`${o}_${s}`,a=e.properties?.[s];if(!a)continue;a.data||(a.data=[]);let c=a.data,f=Y(r,a,t);f!==null&&(Ie(r,i,f,c,t),a.data=c,n.dataAttributeNames.push(i))}}function Vo(r,e,t){let n=e.classes?.[t.class];if(!n)throw new Error(`Incorrect data in the EXT_structural_metadata extension: no schema class with name ${t.class}`);let o=t.count;for(let s in n.properties){let i=n.properties[s],a=t.properties?.[s];if(a){let c=Wo(r,e,i,o,a);a.data=c}}}function Wo(r,e,t,n,o){let s=[],i=o.values,a=r.getTypedArrayForBufferView(i),c=Zo(r,t,o,n),f=qo(r,o,n);switch(t.type){case"SCALAR":case"VEC2":case"VEC3":case"VEC4":case"MAT2":case"MAT3":case"MAT4":{s=zo(t,n,a,c);break}case"BOOLEAN":throw new Error(`Not implemented - classProperty.type=${t.type}`);case"STRING":{s=Re(n,a,c,f);break}case"ENUM":{s=$o(e,t,n,a,c);break}default:throw new Error(`Unknown classProperty type ${t.type}`)}return s}function Zo(r,e,t,n){return e.array&&typeof e.count>"u"&&typeof t.arrayOffsets<"u"?X(r,t.arrayOffsets,t.arrayOffsetType||"UINT32",n):null}function qo(r,e,t){return typeof e.stringOffsets<"u"?X(r,e.stringOffsets,e.stringOffsetType||"UINT32",t):null}function zo(r,e,t,n){let o=r.array,s=r.count,i=ue(r.type,r.componentType),a=t.byteLength/i,c;return r.componentType?c=k(t,r.type,r.componentType,a):c=t,o?n?Ge(c,e,n,t.length,i):s?De(c,e,s):[]:c}function $o(r,e,t,n,o){let s=e.enumType;if(!s)throw new Error("Incorrect data in the EXT_structural_metadata extension: classProperty.enumType is not set for type ENUM");let i=r.enums?.[s];if(!i)throw new Error(`Incorrect data in the EXT_structural_metadata extension: schema.enums does't contain ${s}`);let a=i.valueType||"UINT16",c=ue(e.type,a),f=n.byteLength/c,A=k(n,e.type,a,f);if(A||(A=n),e.array){if(o)return es({valuesData:A,numberOfElements:t,arrayOffsets:o,valuesDataBytesLength:n.length,elementSize:c,enumEntry:i});let u=e.count;return u?ts(A,t,u,i):[]}return mt(A,0,t,i)}function es(r){let{valuesData:e,numberOfElements:t,arrayOffsets:n,valuesDataBytesLength:o,elementSize:s,enumEntry:i}=r,a=[];for(let c=0;c<t;c++){let f=n[c],A=n[c+1]-n[c];if(A+f>o)break;let u=f/s,m=A/s,B=mt(e,u,m,i);a.push(B)}return a}function ts(r,e,t,n){let o=[];for(let s=0;s<e;s++){let i=t*s,a=mt(r,i,t,n);o.push(a)}return o}function mt(r,e,t,n){let o=[];for(let s=0;s<t;s++)if(r instanceof BigInt64Array||r instanceof BigUint64Array)o.push("");else{let i=r[e+s],a=rs(n,i);a?o.push(a.name):o.push("")}return o}function rs(r,e){for(let t of r.values)if(t.value===e)return t;return null}var ns="schemaClassId";function os(r,e){let t=r.getExtension(W);if(t&&t.propertyTables)for(let n of t.propertyTables){let o=n.class,s=t.schema?.classes?.[o];n.properties&&s&&ss(n,s,r)}}function ss(r,e,t){for(let n in r.properties){let o=r.properties[n].data;if(o){let s=e.properties[n];if(s){let i=cs(o,s,t);r.properties[n]=i}}}}function Bt(r,e,t=ns){let n=r.getExtension(W);n||(n=r.addExtension(W)),n.schema=is(e,t,n.schema);let o=as(e,t,n.schema);return n.propertyTables||(n.propertyTables=[]),n.propertyTables.push(o)-1}function is(r,e,t){let n=t??{id:"schema_id"},o={properties:{}};for(let s of r){let i={type:s.elementType,componentType:s.componentType};o.properties[s.name]=i}return n.classes={},n.classes[e]=o,n}function as(r,e,t){let n={class:e,count:0},o=0,s=t.classes?.[e];for(let i of r){if(o===0&&(o=i.values.length),o!==i.values.length&&i.values.length)throw new Error("Illegal values in attributes");s?.properties[i.name]&&(n.properties||(n.properties={}),n.properties[i.name]={values:0,data:i.values})}return n.count=o,n}function cs(r,e,t){let n={values:0};if(e.type==="STRING"){let{stringData:o,stringOffsets:s}=us(r);n.stringOffsets=At(s,t),n.values=At(o,t)}else if(e.type==="SCALAR"&&e.componentType){let o=As(r,e.componentType);n.values=At(o,t)}return n}var fs={INT8:Int8Array,UINT8:Uint8Array,INT16:Int16Array,UINT16:Uint16Array,INT32:Int32Array,UINT32:Uint32Array,INT64:Int32Array,UINT64:Uint32Array,FLOAT32:Float32Array,FLOAT64:Float64Array};function As(r,e){let t=[];for(let o of r)t.push(Number(o));let n=fs[e];if(!n)throw new Error("Illegal component type");return new n(t)}function us(r){let e=new TextEncoder,t=[],n=0;for(let c of r){let f=e.encode(c);n+=f.length,t.push(f)}let o=new Uint8Array(n),s=[],i=0;for(let c of t)o.set(c,i),s.push(i),i+=c.length;s.push(i);let a=new Uint32Array(s);return{stringData:o,stringOffsets:a}}function At(r,e){return e.gltf.buffers.push({arrayBuffer:J(r.buffer),byteOffset:r.byteOffset,byteLength:r.byteLength}),e.addBufferView(r)}var dt={};y(dt,{decode:()=>ms,name:()=>lt});var yr="EXT_feature_metadata",lt=yr;async function ms(r,e){let t=new l(r);Bs(t,e)}function Bs(r,e){if(!e.gltf?.loadBuffers)return;let t=r.getExtension(yr);t&&(e.gltf?.loadImages&&ls(r,t),ds(r,t))}function ls(r,e){let t=e.schema;if(!t)return;let n=t.classes,{featureTextures:o}=e;if(n&&o)for(let s in n){let i=n[s],a=hs(o,s);a&&Cs(r,a,i)}}function ds(r,e){let t=e.schema;if(!t)return;let n=t.classes,o=e.featureTables;if(n&&o)for(let s in n){let i=ps(o,s);i&&gs(r,t,i)}}function ps(r,e){for(let t in r){let n=r[t];if(n.class===e)return n}return null}function hs(r,e){for(let t in r){let n=r[t];if(n.class===e)return n}return null}function gs(r,e,t){if(!t.class)return;let n=e.classes?.[t.class];if(!n)throw new Error(`Incorrect data in the EXT_structural_metadata extension: no schema class with name ${t.class}`);let o=t.count;for(let s in n.properties){let i=n.properties[s],a=t.properties?.[s];if(a){let c=bs(r,e,i,o,a);a.data=c}}}function Cs(r,e,t){let n=e.class;for(let o in t.properties){let s=e?.properties?.[o];if(s){let i=Ms(r,s,n);s.data=i}}}function bs(r,e,t,n,o){let s=[],i=o.bufferView,a=r.getTypedArrayForBufferView(i),c=xs(r,t,o,n),f=Es(r,t,o,n);return t.type==="STRING"||t.componentType==="STRING"?s=Re(n,a,c,f):ys(t)&&(s=Ts(t,n,a,c)),s}function xs(r,e,t,n){return e.type==="ARRAY"&&typeof e.componentCount>"u"&&typeof t.arrayOffsetBufferView<"u"?X(r,t.arrayOffsetBufferView,t.offsetType||"UINT32",n):null}function Es(r,e,t,n){return typeof t.stringOffsetBufferView<"u"?X(r,t.stringOffsetBufferView,t.offsetType||"UINT32",n):null}function ys(r){let e=["UINT8","INT16","UINT16","INT32","UINT32","INT64","UINT64","FLOAT32","FLOAT64"];return e.includes(r.type)||typeof r.componentType<"u"&&e.includes(r.componentType)}function Ts(r,e,t,n){let o=r.type==="ARRAY",s=r.componentCount,i="SCALAR",a=r.componentType||r.type,c=ue(i,a),f=t.byteLength/c,A=k(t,i,a,f);return o?n?Ge(A,e,n,t.length,c):s?De(A,e,s):[]:A}function Ms(r,e,t){let n=r.gltf.json;if(!n.meshes)return[];let o=[];for(let s of n.meshes)for(let i of s.primitives)Fs(r,t,e,o,i);return o}function Fs(r,e,t,n,o){let s={channels:t.channels,...t.texture},i=Y(r,s,o);i&&Ie(r,e,i,n,o)}var H="4.4.0-alpha.18";var Tr="4.4.0-alpha.18";var Le={TRANSCODER:"basis_transcoder.js",TRANSCODER_WASM:"basis_transcoder.wasm",ENCODER:"basis_encoder.js",ENCODER_WASM:"basis_encoder.wasm"},Mr;async function ht(r){We(r.modules);let e=Ze("basis");return e||(Mr||=Is(r),await Mr)}async function Is(r){let e=null,t=null;return[e,t]=await Promise.all([await M(Le.TRANSCODER,"textures",r),await M(Le.TRANSCODER_WASM,"textures",r)]),e=e||globalThis.BASIS,await Gs(e,t)}function Gs(r,e){let t={};return e&&(t.wasmBinary=e),new Promise(n=>{r(t).then(o=>{let{BasisFile:s,initializeBasis:i}=o;i(),n({BasisFile:s})})})}var pt;async function gt(r){let e=r.modules||{};return e.basisEncoder?e.basisEncoder:(pt=pt||Ds(r),await pt)}async function Ds(r){let e=null,t=null;return[e,t]=await Promise.all([await M(Le.ENCODER,"textures",r),await M(Le.ENCODER_WASM,"textures",r)]),e=e||globalThis.BASIS,await Rs(e,t)}function Rs(r,e){let t={};return e&&(t.wasmBinary=e),new Promise(n=>{r(t).then(o=>{let{BasisFile:s,KTX2File:i,initializeBasis:a,BasisEncoder:c}=o;a(),n({BasisFile:s,KTX2File:i,BasisEncoder:c})})})}var ws=["","WEBKIT_","MOZ_"],Fr={WEBGL_compressed_texture_s3tc:["bc1-rgb-unorm-webgl","bc1-rgba-unorm","bc2-rgba-unorm","bc3-rgba-unorm"],WEBGL_compressed_texture_s3tc_srgb:["bc1-rgb-unorm-srgb-webgl","bc1-rgba-unorm-srgb","bc2-rgba-unorm-srgb","bc3-rgba-unorm-srgb"],EXT_texture_compression_rgtc:["bc4-r-unorm","bc4-r-snorm","bc5-rg-unorm","bc5-rg-snorm"],EXT_texture_compression_bptc:["bc6h-rgb-ufloat","bc6h-rgb-float","bc7-rgba-unorm","bc7-rgba-unorm-srgb"],WEBGL_compressed_texture_etc1:["etc1-rbg-unorm-webgl"],WEBGL_compressed_texture_etc:["etc2-rgb8unorm","etc2-rgb8unorm-srgb","etc2-rgb8a1unorm","etc2-rgb8a1unorm-srgb","etc2-rgba8unorm","etc2-rgba8unorm-srgb","eac-r11unorm","eac-r11snorm","eac-rg11unorm","eac-rg11snorm"],WEBGL_compressed_texture_pvrtc:["pvrtc-rgb4unorm-webgl","pvrtc-rgba4unorm-webgl","pvrtc-rbg2unorm-webgl","pvrtc-rgba2unorm-webgl"],WEBGL_compressed_texture_atc:["atc-rgb-unorm-webgl","atc-rgba-unorm-webgl","atc-rgbai-unorm-webgl"],WEBGL_compressed_texture_astc:["astc-4x4-unorm","astc-4x4-unorm-srgb","astc-5x4-unorm","astc-5x4-unorm-srgb","astc-5x5-unorm","astc-5x5-unorm-srgb","astc-6x5-unorm","astc-6x5-unorm-srgb","astc-6x6-unorm","astc-6x6-unorm-srgb","astc-8x5-unorm","astc-8x5-unorm-srgb","astc-8x6-unorm","astc-8x6-unorm-srgb","astc-8x8-unorm","astc-8x8-unorm-srgb","astc-10x5-unorm","astc-10x5-unorm-srgb","astc-10x6-unorm","astc-10x6-unorm-srgb","astc-10x8-unorm","astc-10x8-unorm-srgb","astc-10x10-unorm","astc-10x10-unorm-srgb","astc-12x10-unorm","astc-12x10-unorm-srgb","astc-12x12-unorm","astc-12x12-unorm-srgb"]};var _e=null;function Ir(r){if(!_e){r=r||Os()||void 0,_e=new Set;for(let e of ws)for(let t in Fr)if(r&&r.getExtension(`${e}${t}`))for(let n of Fr[t])_e.add(n)}return _e}function Os(){try{return document.createElement("canvas").getContext("webgl")}catch{return null}}var E=[171,75,84,88,32,50,48,187,13,10,26,10];function Gr(r){let e=new Uint8Array(r);return!(e.byteLength<E.length||e[0]!==E[0]||e[1]!==E[1]||e[2]!==E[2]||e[3]!==E[3]||e[4]!==E[4]||e[5]!==E[5]||e[6]!==E[6]||e[7]!==E[7]||e[8]!==E[8]||e[9]!==E[9]||e[10]!==E[10]||e[11]!==E[11])}var wr={etc1:{basisFormat:0,compressed:!0,format:36196,textureFormat:"etc1-rbg-unorm-webgl"},etc2:{basisFormat:1,compressed:!0,format:37493,textureFormat:"etc2-rgba8unorm"},bc1:{basisFormat:2,compressed:!0,format:33776,textureFormat:"bc1-rgb-unorm-webgl"},bc3:{basisFormat:3,compressed:!0,format:33779,textureFormat:"bc3-rgba-unorm"},bc4:{basisFormat:4,compressed:!0,format:36283,textureFormat:"bc4-r-unorm"},bc5:{basisFormat:5,compressed:!0,format:36285,textureFormat:"bc5-rg-unorm"},"bc7-m6-opaque-only":{basisFormat:6,compressed:!0,format:36492,textureFormat:"bc7-rgba-unorm"},"bc7-m5":{basisFormat:7,compressed:!0,format:36492,textureFormat:"bc7-rgba-unorm"},"pvrtc1-4-rgb":{basisFormat:8,compressed:!0,format:35840,textureFormat:"pvrtc-rgb4unorm-webgl"},"pvrtc1-4-rgba":{basisFormat:9,compressed:!0,format:35842,textureFormat:"pvrtc-rgba4unorm-webgl"},"astc-4x4":{basisFormat:10,compressed:!0,format:37808,textureFormat:"astc-4x4-unorm"},"atc-rgb":{basisFormat:11,compressed:!0,format:35986,textureFormat:"atc-rgb-unorm-webgl"},"atc-rgba-interpolated-alpha":{basisFormat:12,compressed:!0,format:34798,textureFormat:"atc-rgbai-unorm-webgl"},rgba32:{basisFormat:13,compressed:!1,format:32856,textureFormat:"rgba8unorm"},rgb565:{basisFormat:14,compressed:!1,format:36194,textureFormat:"rgb565unorm-webgl"},bgr565:{basisFormat:15,compressed:!1,format:36194,textureFormat:"rgb565unorm-webgl"},rgba4444:{basisFormat:16,compressed:!1,format:32854,textureFormat:"rgba4unorm-webgl"}},pA=Object.freeze(Object.keys(wr));async function Or(r,e={}){let t=se(e);if(!e.basis?.containerFormat||e.basis.containerFormat==="auto"){if(Gr(r)){let o=await gt(t);return Dr(o.KTX2File,r,e)}let{BasisFile:n}=await ht(t);return Ct(n,r,e)}switch(e.basis.module){case"encoder":let n=await gt(t);switch(e.basis.containerFormat){case"ktx2":return Dr(n.KTX2File,r,e);case"basis":default:return Ct(n.BasisFile,r,e)}case"transcoder":default:let{BasisFile:o}=await ht(t);return Ct(o,r,e)}}function Ct(r,e,t){let n=new r(new Uint8Array(e));try{if(!n.startTranscoding())throw new Error("Failed to start basis transcoding");let o=n.getNumImages(),s=[];for(let i=0;i<o;i++){let a=n.getNumLevels(i),c=[];for(let f=0;f<a;f++)c.push(Ss(n,i,f,t));s.push(c)}return s}finally{n.close(),n.delete()}}function Ss(r,e,t,n){let o=r.getImageWidth(e,t),s=r.getImageHeight(e,t),i=r.getHasAlpha(),{compressed:a,format:c,basisFormat:f,textureFormat:A}=Lr(n,i),u=r.getImageTranscodedSizeInBytes(e,t,f),m=new Uint8Array(u);if(!r.transcodeImage(m,e,t,f,0,0))throw new Error("failed to start Basis transcoding");return{shape:"texture-level",width:o,height:s,data:m,compressed:a,...c!==void 0?{format:c}:{},...A!==void 0?{textureFormat:A}:{},hasAlpha:i}}function Dr(r,e,t){let n=new r(new Uint8Array(e));try{if(!n.startTranscoding())throw new Error("failed to start KTX2 transcoding");let o=n.getLevels(),s=[];for(let i=0;i<o;i++)s.push(Js(n,i,t));return[s]}finally{n.close(),n.delete()}}function Js(r,e,t){let{alphaFlag:n,height:o,width:s}=r.getImageLevelInfo(e,0,0),{compressed:i,format:a,basisFormat:c,textureFormat:f}=Lr(t,n),A=r.getImageTranscodedSizeInBytes(e,0,0,c),u=new Uint8Array(A);if(!r.transcodeImage(u,e,0,0,c,0,-1,-1))throw new Error("Failed to transcode KTX2 image");return{shape:"texture-level",width:s,height:o,data:u,compressed:i,...a!==void 0?{format:a}:{},...f!==void 0?{textureFormat:f}:{},levelSize:A,hasAlpha:n}}function Lr(r,e){let t=r.basis?.format||"auto";t==="auto"&&(t=r.basis?.supportedTextureFormats?Rr(r.basis.supportedTextureFormats):Rr()),typeof t=="object"&&(t=e?t.alpha:t.noAlpha);let n=t.toLowerCase(),o=wr[n];if(!o)throw new Error(`Unknown Basis format ${t}`);return o}function Rr(r=Ir()){let e=new Set(r);return Z(e,["astc-4x4-unorm","astc-4x4-unorm-srgb"])?"astc-4x4":Z(e,["bc7-rgba-unorm","bc7-rgba-unorm-srgb"])?{alpha:"bc7-m5",noAlpha:"bc7-m6-opaque-only"}:Z(e,["bc1-rgb-unorm-webgl","bc1-rgb-unorm-srgb-webgl","bc1-rgba-unorm","bc1-rgba-unorm-srgb","bc2-rgba-unorm","bc2-rgba-unorm-srgb","bc3-rgba-unorm","bc3-rgba-unorm-srgb"])?{alpha:"bc3",noAlpha:"bc1"}:Z(e,["pvrtc-rgb4unorm-webgl","pvrtc-rgba4unorm-webgl","pvrtc-rbg2unorm-webgl","pvrtc-rgba2unorm-webgl"])?{alpha:"pvrtc1-4-rgba",noAlpha:"pvrtc1-4-rgb"}:Z(e,["etc2-rgb8unorm","etc2-rgb8unorm-srgb","etc2-rgb8a1unorm","etc2-rgb8a1unorm-srgb","etc2-rgba8unorm","etc2-rgba8unorm-srgb","eac-r11unorm","eac-r11snorm","eac-rg11unorm","eac-rg11snorm"])?"etc2":e.has("etc1-rbg-unorm-webgl")?"etc1":Z(e,["atc-rgb-unorm-webgl","atc-rgba-unorm-webgl","atc-rgbai-unorm-webgl"])?{alpha:"atc-rgba-interpolated-alpha",noAlpha:"atc-rgb"}:"rgb565"}function Z(r,e){return e.some(t=>r.has(t))}var _r={dataType:null,batchType:null,name:"Basis",id:"basis",module:"textures",version:Tr,worker:!0,extensions:["basis","ktx2"],mimeTypes:["application/octet-stream","image/ktx2"],tests:["sB"],binary:!0,options:{basis:{format:"auto",containerFormat:"auto",module:"transcoder"}}},bt={..._r,parse:Or};var q=!0,Sr=1735152710,yt=12,Se=8,Us=1313821514,Hs=5130562,Ns=0,Ps=0,Ks=1;function js(r,e=0){return`${String.fromCharCode(r.getUint8(e+0))}${String.fromCharCode(r.getUint8(e+1))}${String.fromCharCode(r.getUint8(e+2))}${String.fromCharCode(r.getUint8(e+3))}`}function Jr(r,e=0,t={}){let n=new DataView(r),{magic:o=Sr}=t,s=n.getUint32(e,!1);return s===o||s===Sr}function Je(r,e,t=0,n={}){let o=new DataView(e),s=js(o,t+0),i=o.getUint32(t+4,q),a=o.getUint32(t+8,q);switch(Object.assign(r,{header:{byteOffset:t,byteLength:a,hasBinChunk:!1},type:s,version:i,json:{},binChunks:[]}),t+=yt,r.version){case 1:return vs(r,o,t);case 2:return Qs(r,o,t,n={});default:throw new Error(`Invalid GLB version ${r.version}. Only supports version 1 and 2.`)}}function vs(r,e,t){T(r.header.byteLength>yt+Se);let n=e.getUint32(t+0,q),o=e.getUint32(t+4,q);return t+=Se,T(o===Ns),xt(r,e,t,n),t+=n,t+=Et(r,e,t,r.header.byteLength),t}function Qs(r,e,t,n){return T(r.header.byteLength>yt+Se),Xs(r,e,t,n),t+r.header.byteLength}function Xs(r,e,t,n){for(;t+8<=r.header.byteLength;){let o=e.getUint32(t+0,q),s=e.getUint32(t+4,q);switch(t+=Se,s){case Us:xt(r,e,t,o);break;case Hs:Et(r,e,t,o);break;case Ps:n.strict||xt(r,e,t,o);break;case Ks:n.strict||Et(r,e,t,o);break;default:break}t+=R(o,4)}return t}function xt(r,e,t,n){let o=new Uint8Array(e.buffer,t,n),i=new TextDecoder("utf8").decode(o);return r.json=JSON.parse(i),R(n,4)}function Et(r,e,t,n){return r.header.hasBinChunk=!0,r.binChunks.push({byteOffset:t,byteLength:n,arrayBuffer:e.buffer}),R(n,4)}function Tt(r,e){if(r.startsWith("data:")||r.startsWith("http:")||r.startsWith("https:"))return r;let n=e?.core?.baseUri||e.baseUri||e.uri;if(!n)throw new Error(`'baseUri' must be provided to resolve relative url ${r}`);return n.substr(0,n.lastIndexOf("/")+1)+r}var Ft={};y(Ft,{decode:()=>ni,name:()=>ri});var ks="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",Ys="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",Vs=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]),Ws=new Uint8Array([32,0,65,253,3,1,2,34,4,106,6,5,11,8,7,20,13,33,12,16,128,9,116,64,19,113,127,15,10,21,22,14,255,66,24,54,136,107,18,23,192,26,114,118,132,17,77,101,130,144,27,87,131,44,45,74,156,154,70,167]),Zs={0:"",1:"meshopt_decodeFilterOct",2:"meshopt_decodeFilterQuat",3:"meshopt_decodeFilterExp",NONE:"",OCTAHEDRAL:"meshopt_decodeFilterOct",QUATERNION:"meshopt_decodeFilterQuat",EXPONENTIAL:"meshopt_decodeFilterExp"},qs={0:"meshopt_decodeVertexBuffer",1:"meshopt_decodeIndexBuffer",2:"meshopt_decodeIndexSequence",ATTRIBUTES:"meshopt_decodeVertexBuffer",TRIANGLES:"meshopt_decodeIndexBuffer",INDICES:"meshopt_decodeIndexSequence"};async function Ur(r,e,t,n,o,s="NONE"){let i=await zs();ti(i,i.exports[qs[o]],r,e,t,n,i.exports[Zs[s||"NONE"]])}var Mt;async function zs(){return Mt||(Mt=$s()),Mt}async function $s(){let r=ks;WebAssembly.validate(Vs)&&(r=Ys,console.log("Warning: meshopt_decoder is using experimental SIMD support"));let e=await WebAssembly.instantiate(ei(r),{});return await e.instance.exports.__wasm_call_ctors(),e.instance}function ei(r){let e=new Uint8Array(r.length);for(let n=0;n<r.length;++n){let o=r.charCodeAt(n);e[n]=o>96?o-71:o>64?o-65:o>47?o+4:o>46?63:62}let t=0;for(let n=0;n<r.length;++n)e[t++]=e[n]<60?Ws[e[n]]:(e[n]-60)*64+e[++n];return e.buffer.slice(0,t)}function ti(r,e,t,n,o,s,i){let a=r.exports.sbrk,c=n+3&-4,f=a(c*o),A=a(s.length),u=new Uint8Array(r.exports.memory.buffer);u.set(s,A);let m=e(f,n,o,A,s.length);if(m===0&&i&&i(f,c,o),t.set(u.subarray(f,f+n*o)),a(f-a(0)),m!==0)throw new Error(`Malformed buffer data: ${m}`)}var Ue="EXT_meshopt_compression",ri=Ue;async function ni(r,e){let t=new l(r);if(!e?.gltf?.decompressMeshes||!e.gltf?.loadBuffers)return;let n=[];for(let o of r.json.bufferViews||[])n.push(oi(t,o));await Promise.all(n),t.removeExtension(Ue)}async function oi(r,e){let t=r.getObjectExtension(e,Ue);if(t){let{byteOffset:n=0,byteLength:o=0,byteStride:s,count:i,mode:a,filter:c="NONE",buffer:f}=t,A=r.gltf.buffers[f],u=new Uint8Array(A.arrayBuffer,A.byteOffset+n,o),m=new Uint8Array(r.gltf.buffers[e.buffer].arrayBuffer,e.byteOffset,e.byteLength);await Ur(m,i,s,u,a,c),r.removeObjectExtension(e,Ue)}}var It={};y(It,{name:()=>si,preprocess:()=>ii});var z="EXT_texture_webp",si=z;function ii(r,e){let t=new l(r);if(!at("image/webp")){if(t.getRequiredExtensions().includes(z))throw new Error(`gltf: Required extension ${z} not supported by browser`);return}let{json:n}=t;for(let o of n.textures||[]){let s=t.getObjectExtension(o,z);s&&(o.source=s.source),t.removeObjectExtension(o,z)}t.removeExtension(z)}var Gt={};y(Gt,{name:()=>ai,preprocess:()=>ci});var He="KHR_texture_basisu",ai=He;function ci(r,e){let t=new l(r),{json:n}=t;for(let o of n.textures||[]){let s=t.getObjectExtension(o,He);s&&(o.source=s.source,t.removeObjectExtension(o,He))}t.removeExtension(He)}var St={};y(St,{decode:()=>Ti,encode:()=>Mi,name:()=>Ei,preprocess:()=>yi});var fi="1.5.6",Ai="1.4.1",Dt=`https://www.gstatic.com/draco/versioned/decoders/${fi}`,g={DECODER:"draco_wasm_wrapper.js",DECODER_WASM:"draco_decoder.wasm",FALLBACK_DECODER:"draco_decoder.js",ENCODER:"draco_encoder.js"},me={[g.DECODER]:`${Dt}/${g.DECODER}`,[g.DECODER_WASM]:`${Dt}/${g.DECODER_WASM}`,[g.FALLBACK_DECODER]:`${Dt}/${g.FALLBACK_DECODER}`,[g.ENCODER]:`https://raw.githubusercontent.com/google/draco/${Ai}/javascript/${g.ENCODER}`},Rt;async function Nr(r={},e){let t=r.modules||{};return t.draco3d?Rt||=t.draco3d.createDecoderModule({}).then(n=>({draco:n})):Rt||=ui(r,e),await Rt}function Hr(r,e){if(r&&typeof r=="object"){if(r.default)return r.default;if(r[e])return r[e]}return r}async function ui(r,e){let t,n;switch(e){case"js":t=await M(me[g.FALLBACK_DECODER],"draco",r,g.FALLBACK_DECODER);break;case"wasm":default:try{[t,n]=await Promise.all([await M(me[g.DECODER],"draco",r,g.DECODER),await M(me[g.DECODER_WASM],"draco",r,g.DECODER_WASM)])}catch{t=null,n=null}}return t=Hr(t,"DracoDecoderModule"),t=t||globalThis.DracoDecoderModule,!t&&!L&&([t,n]=await Promise.all([await M(me[g.DECODER],"draco",{...r,useLocalLibraries:!0},g.DECODER),await M(me[g.DECODER_WASM],"draco",{...r,useLocalLibraries:!0},g.DECODER_WASM)]),t=Hr(t,"DracoDecoderModule"),t=t||globalThis.DracoDecoderModule),await mi(t,n)}function mi(r,e){if(typeof r!="function")throw new Error("DracoDecoderModule could not be loaded");let t={};return e&&(t.wasmBinary=e),new Promise(n=>{r({...t,onModuleLoaded:o=>n({draco:o})})})}var Pr="4.4.0-alpha.18";function Kr(r){switch(r.constructor){case Int8Array:return"int8";case Uint8Array:case Uint8ClampedArray:return"uint8";case Int16Array:return"int16";case Uint16Array:return"uint16";case Int32Array:return"int32";case Uint32Array:return"uint32";case Float32Array:return"float32";case Float64Array:return"float64";default:return"null"}}function wt(r){let e=1/0,t=1/0,n=1/0,o=-1/0,s=-1/0,i=-1/0,a=r.POSITION?r.POSITION.value:[],c=a&&a.length;for(let f=0;f<c;f+=3){let A=a[f],u=a[f+1],m=a[f+2];e=A<e?A:e,t=u<t?u:t,n=m<n?m:n,o=A>o?A:o,s=u>s?u:s,i=m>i?m:i}return[[e,t,n],[o,s,i]]}function Ot(r,e,t){let n=Kr(e.value),o=t||jr(e);return{name:r,type:{type:"fixed-size-list",listSize:e.size,children:[{name:"value",type:n}]},nullable:!1,metadata:o}}function jr(r){let e={};return"byteOffset"in r&&(e.byteOffset=r.byteOffset.toString(10)),"byteStride"in r&&(e.byteStride=r.byteStride.toString(10)),"normalized"in r&&(e.normalized=r.normalized.toString()),e}function Qr(r,e,t){let n=Xr(e.metadata),o=[],s=Bi(e.attributes);for(let i in r){let a=r[i],c=vr(i,a,s[i]);o.push(c)}if(t){let i=vr("indices",t);o.push(i)}return{fields:o,metadata:n}}function Bi(r){let e={};for(let t in r){let n=r[t];e[n.name||"undefined"]=n}return e}function vr(r,e,t){let n=t?Xr(t.metadata):void 0;return Ot(r,e,n)}function Xr(r){Object.entries(r);let e={};for(let t in r)e[`${t}.string`]=JSON.stringify(r[t]);return e}var kr={POSITION:"POSITION",NORMAL:"NORMAL",COLOR:"COLOR_0",TEX_COORD:"TEXCOORD_0"},li={1:Int8Array,2:Uint8Array,3:Int16Array,4:Uint16Array,5:Int32Array,6:Uint32Array,9:Float32Array},di=4,Be=class{draco;decoder;metadataQuerier;constructor(e){this.draco=e,this.decoder=new this.draco.Decoder,this.metadataQuerier=new this.draco.MetadataQuerier}destroy(){this.draco.destroy(this.decoder),this.draco.destroy(this.metadataQuerier)}parseSync(e,t={}){let n=new this.draco.DecoderBuffer;n.Init(new Int8Array(e),e.byteLength),this._disableAttributeTransforms(t);let o=this.decoder.GetEncodedGeometryType(n),s=o===this.draco.TRIANGULAR_MESH?new this.draco.Mesh:new this.draco.PointCloud;try{let i;switch(o){case this.draco.TRIANGULAR_MESH:i=this.decoder.DecodeBufferToMesh(n,s);break;case this.draco.POINT_CLOUD:i=this.decoder.DecodeBufferToPointCloud(n,s);break;default:throw new Error("DRACO: Unknown geometry type.")}if(!i.ok()||!s.ptr){let m=`DRACO decompression failed: ${i.error_msg()}`;throw new Error(m)}let a=this._getDracoLoaderData(s,o,t),c=this._getMeshData(s,a,t),f=wt(c.attributes),A=Qr(c.attributes,a,c.indices);return{loader:"draco",loaderData:a,header:{vertexCount:s.num_points(),boundingBox:f},...c,schema:A}}finally{this.draco.destroy(n),s&&this.draco.destroy(s)}}_getDracoLoaderData(e,t,n){let o=this._getTopLevelMetadata(e),s=this._getDracoAttributes(e,n);return{geometry_type:t,num_attributes:e.num_attributes(),num_points:e.num_points(),num_faces:e instanceof this.draco.Mesh?e.num_faces():0,metadata:o,attributes:s}}_getDracoAttributes(e,t){let n={};for(let o=0;o<e.num_attributes();o++){let s=this.decoder.GetAttribute(e,o),i=this._getAttributeMetadata(e,o);n[s.unique_id()]={unique_id:s.unique_id(),attribute_type:s.attribute_type(),data_type:s.data_type(),num_components:s.num_components(),byte_offset:s.byte_offset(),byte_stride:s.byte_stride(),normalized:s.normalized(),attribute_index:o,metadata:i};let a=this._getQuantizationTransform(s,t);a&&(n[s.unique_id()].quantization_transform=a);let c=this._getOctahedronTransform(s,t);c&&(n[s.unique_id()].octahedron_transform=c)}return n}_getMeshData(e,t,n){let o=this._getMeshAttributes(t,e,n);if(!o.POSITION)throw new Error("DRACO: No position attribute found.");if(e instanceof this.draco.Mesh)switch(n.topology){case"triangle-strip":return{topology:"triangle-strip",mode:4,attributes:o,indices:{value:this._getTriangleStripIndices(e),size:1}};case"triangle-list":default:return{topology:"triangle-list",mode:5,attributes:o,indices:{value:this._getTriangleListIndices(e),size:1}}}return{topology:"point-list",mode:0,attributes:o}}_getMeshAttributes(e,t,n){let o={};for(let s of Object.values(e.attributes)){let i=this._deduceAttributeName(s,n);s.name=i;let a=this._getAttributeValues(t,s);if(a){let{value:c,size:f}=a;o[i]={value:c,size:f,byteOffset:s.byte_offset,byteStride:s.byte_stride,normalized:s.normalized}}}return o}_getTriangleListIndices(e){let n=e.num_faces()*3,o=n*di,s=this.draco._malloc(o);try{return this.decoder.GetTrianglesUInt32Array(e,o,s),new Uint32Array(this.draco.HEAPF32.buffer,s,n).slice()}finally{this.draco._free(s)}}_getTriangleStripIndices(e){let t=new this.draco.DracoInt32Array;try{return this.decoder.GetTriangleStripsFromMesh(e,t),gi(t)}finally{this.draco.destroy(t)}}_getAttributeValues(e,t){let n=li[t.data_type];if(!n)return console.warn(`DRACO: Unsupported attribute type ${t.data_type}`),null;let o=t.num_components,i=e.num_points()*o,a=i*n.BYTES_PER_ELEMENT,c=pi(this.draco,n),f,A=this.draco._malloc(a);try{let u=this.decoder.GetAttribute(e,t.attribute_index);this.decoder.GetAttributeDataArrayForAllPoints(e,u,c,a,A),f=new n(this.draco.HEAPF32.buffer,A,i).slice()}finally{this.draco._free(A)}return{value:f,size:o}}_deduceAttributeName(e,t){let n=e.unique_id;for(let[i,a]of Object.entries(t.extraAttributes||{}))if(a===n)return i;let o=e.attribute_type;for(let i in kr)if(this.draco[i]===o)return kr[i];let s=t.attributeNameEntry||"name";return e.metadata[s]?e.metadata[s].string:`CUSTOM_ATTRIBUTE_${n}`}_getTopLevelMetadata(e){let t=this.decoder.GetMetadata(e);return this._getDracoMetadata(t)}_getAttributeMetadata(e,t){let n=this.decoder.GetAttributeMetadata(e,t);return this._getDracoMetadata(n)}_getDracoMetadata(e){if(!e||!e.ptr)return{};let t={},n=this.metadataQuerier.NumEntries(e);for(let o=0;o<n;o++){let s=this.metadataQuerier.GetEntryName(e,o);t[s]=this._getDracoMetadataField(e,s)}return t}_getDracoMetadataField(e,t){let n=new this.draco.DracoInt32Array;try{this.metadataQuerier.GetIntEntryArray(e,t,n);let o=hi(n);return{int:this.metadataQuerier.GetIntEntry(e,t),string:this.metadataQuerier.GetStringEntry(e,t),double:this.metadataQuerier.GetDoubleEntry(e,t),intArray:o}}finally{this.draco.destroy(n)}}_disableAttributeTransforms(e){let{quantizedAttributes:t=[],octahedronAttributes:n=[]}=e,o=[...t,...n];for(let s of o)this.decoder.SkipAttributeTransform(this.draco[s])}_getQuantizationTransform(e,t){let{quantizedAttributes:n=[]}=t,o=e.attribute_type();if(n.map(i=>this.decoder[i]).includes(o)){let i=new this.draco.AttributeQuantizationTransform;try{if(i.InitFromAttribute(e))return{quantization_bits:i.quantization_bits(),range:i.range(),min_values:new Float32Array([1,2,3]).map(a=>i.min_value(a))}}finally{this.draco.destroy(i)}}return null}_getOctahedronTransform(e,t){let{octahedronAttributes:n=[]}=t,o=e.attribute_type();if(n.map(i=>this.decoder[i]).includes(o)){let i=new this.draco.AttributeQuantizationTransform;try{if(i.InitFromAttribute(e))return{quantization_bits:i.quantization_bits()}}finally{this.draco.destroy(i)}}return null}};function pi(r,e){switch(e){case Float32Array:return r.DT_FLOAT32;case Int8Array:return r.DT_INT8;case Int16Array:return r.DT_INT16;case Int32Array:return r.DT_INT32;case Uint8Array:return r.DT_UINT8;case Uint16Array:return r.DT_UINT16;case Uint32Array:return r.DT_UINT32;default:return r.DT_INVALID}}function hi(r){let e=r.size(),t=new Int32Array(e);for(let n=0;n<e;n++)t[n]=r.GetValue(n);return t}function gi(r){let e=r.size(),t=new Int32Array(e);for(let n=0;n<e;n++)t[n]=r.GetValue(n);return t}var Yr={dataType:null,batchType:null,name:"Draco",id:"draco",module:"draco",version:Pr,worker:!0,extensions:["drc"],mimeTypes:["application/octet-stream"],binary:!0,tests:["DRACO"],options:{draco:{decoderType:typeof WebAssembly=="object"?"wasm":"js",extraAttributes:{},attributeNameEntry:void 0}}},Lt={...Yr,parse:Ci};async function Ci(r,e){let{draco:t}=await Nr(se(e),e?.draco?.decoderType||"wasm"),n=new Be(t);try{return n.parseSync(r,e?.draco)}finally{n.destroy()}}function Vr(r){let e={};for(let t in r){let n=r[t];if(t!=="indices"){let o=_t(n);e[t]=o}}return e}function _t(r){let{buffer:e,size:t,count:n}=bi(r);return{value:e,size:t,byteOffset:0,count:n,type:Fe(t),componentType:U(e)}}function bi(r){let e=r,t=1,n=0;return r&&r.value&&(e=r.value,t=r.size||1),e&&(ArrayBuffer.isView(e)||(e=xi(e,Float32Array)),n=e.length/t),{buffer:e,size:t,count:n}}function xi(r,e,t=!1){return r?Array.isArray(r)?new e(r):t&&!(r instanceof e)?new e(r):r:null}var N="KHR_draco_mesh_compression",Ei=N;function yi(r,e,t){let n=new l(r);for(let o of Wr(n))n.getObjectExtension(o,N)}async function Ti(r,e,t){if(!e?.gltf?.decompressMeshes)return;let n=new l(r),o=[];for(let s of Wr(n))n.getObjectExtension(s,N)&&o.push(Fi(n,s,e,t));await Promise.all(o),n.removeExtension(N)}function Mi(r,e={}){let t=new l(r);for(let n of t.json.meshes||[])Ii(n,e),t.addRequiredExtension(N)}async function Fi(r,e,t,n){let o=r.getObjectExtension(e,N);if(!o)return;let s=r.getTypedArrayForBufferView(o.bufferView),i=ie(s.buffer,s.byteOffset),a={...t};delete a["3d-tiles"];let c=await re(i,Lt,a,n),f=Vr(c.attributes);for(let[A,u]of Object.entries(f))if(A in e.attributes){let m=e.attributes[A],B=r.getAccessor(m);B?.min&&B?.max&&(u.min=B.min,u.max=B.max)}e.attributes=f,c.indices&&(e.indices=_t(c.indices)),r.removeObjectExtension(e,N),Gi(e)}function Ii(r,e,t=4,n,o){if(!n.DracoWriter)throw new Error("options.gltf.DracoWriter not provided");let s=n.DracoWriter.encodeSync({attributes:r}),i=o?.parseSync?.({attributes:r}),a=n._addFauxAttributes(i.attributes),c=n.addBufferView(s);return{primitives:[{attributes:a,mode:t,extensions:{[N]:{bufferView:c,attributes:a}}}]}}function Gi(r){if(!r.attributes&&Object.keys(r.attributes).length>0)throw new Error("glTF: Empty primitive detected: Draco decompression failure?")}function*Wr(r){for(let e of r.json.meshes||[])for(let t of e.primitives)yield t}var jt={};y(jt,{decode:()=>Qi,name:()=>Ki});var fu=1/Math.PI*180,Au=1/180*Math.PI,Di={EPSILON:1e-12,debug:!1,precision:4,printTypes:!1,printDegrees:!1,printRowMajor:!0,_cartographicRadians:!1};globalThis.mathgl=globalThis.mathgl||{config:{...Di}};var C=globalThis.mathgl.config;function Zr(r,{precision:e=C.precision}={}){return r=Ri(r),`${parseFloat(r.toPrecision(e))}`}function $(r){return Array.isArray(r)||ArrayBuffer.isView(r)&&!(r instanceof DataView)}function Jt(r,e,t){let n=C.EPSILON;t&&(C.EPSILON=t);try{if(r===e)return!0;if($(r)&&$(e)){if(r.length!==e.length)return!1;for(let o=0;o<r.length;++o)if(!Jt(r[o],e[o]))return!1;return!0}return r&&r.equals?r.equals(e):e&&e.equals?e.equals(r):typeof r=="number"&&typeof e=="number"?Math.abs(r-e)<=C.EPSILON*Math.max(1,Math.abs(r),Math.abs(e)):!1}finally{C.EPSILON=n}}function Ri(r){return Math.round(r/C.EPSILON)*C.EPSILON}var ee=class extends Array{clone(){return new this.constructor().copy(this)}fromArray(e,t=0){for(let n=0;n<this.ELEMENTS;++n)this[n]=e[n+t];return this.check()}toArray(e=[],t=0){for(let n=0;n<this.ELEMENTS;++n)e[t+n]=this[n];return e}toObject(e){return e}from(e){return Array.isArray(e)?this.copy(e):this.fromObject(e)}to(e){return e===this?this:$(e)?this.toArray(e):this.toObject(e)}toTarget(e){return e?this.to(e):this}toFloat32Array(){return new Float32Array(this)}toString(){return this.formatString(C)}formatString(e){let t="";for(let n=0;n<this.ELEMENTS;++n)t+=(n>0?", ":"")+Zr(this[n],e);return`${e.printTypes?this.constructor.name:""}[${t}]`}equals(e){if(!e||this.length!==e.length)return!1;for(let t=0;t<this.ELEMENTS;++t)if(!Jt(this[t],e[t]))return!1;return!0}exactEquals(e){if(!e||this.length!==e.length)return!1;for(let t=0;t<this.ELEMENTS;++t)if(this[t]!==e[t])return!1;return!0}negate(){for(let e=0;e<this.ELEMENTS;++e)this[e]=-this[e];return this.check()}lerp(e,t,n){if(n===void 0)return this.lerp(this,e,t);for(let o=0;o<this.ELEMENTS;++o){let s=e[o],i=typeof t=="number"?t:t[o];this[o]=s+n*(i-s)}return this.check()}min(e){for(let t=0;t<this.ELEMENTS;++t)this[t]=Math.min(e[t],this[t]);return this.check()}max(e){for(let t=0;t<this.ELEMENTS;++t)this[t]=Math.max(e[t],this[t]);return this.check()}clamp(e,t){for(let n=0;n<this.ELEMENTS;++n)this[n]=Math.min(Math.max(this[n],e[n]),t[n]);return this.check()}add(...e){for(let t of e)for(let n=0;n<this.ELEMENTS;++n)this[n]+=t[n];return this.check()}subtract(...e){for(let t of e)for(let n=0;n<this.ELEMENTS;++n)this[n]-=t[n];return this.check()}scale(e){if(typeof e=="number")for(let t=0;t<this.ELEMENTS;++t)this[t]*=e;else for(let t=0;t<this.ELEMENTS&&t<e.length;++t)this[t]*=e[t];return this.check()}multiplyByScalar(e){for(let t=0;t<this.ELEMENTS;++t)this[t]*=e;return this.check()}check(){if(C.debug&&!this.validate())throw new Error(`math.gl: ${this.constructor.name} some fields set to invalid numbers'`);return this}validate(){let e=this.length===this.ELEMENTS;for(let t=0;t<this.ELEMENTS;++t)e=e&&Number.isFinite(this[t]);return e}sub(e){return this.subtract(e)}setScalar(e){for(let t=0;t<this.ELEMENTS;++t)this[t]=e;return this.check()}addScalar(e){for(let t=0;t<this.ELEMENTS;++t)this[t]+=e;return this.check()}subScalar(e){return this.addScalar(-e)}multiplyScalar(e){for(let t=0;t<this.ELEMENTS;++t)this[t]*=e;return this.check()}divideScalar(e){return this.multiplyByScalar(1/e)}clampScalar(e,t){for(let n=0;n<this.ELEMENTS;++n)this[n]=Math.min(Math.max(this[n],e),t);return this.check()}get elements(){return this}};function wi(r,e){if(r.length!==e)return!1;for(let t=0;t<r.length;++t)if(!Number.isFinite(r[t]))return!1;return!0}function b(r){if(!Number.isFinite(r))throw new Error(`Invalid number ${JSON.stringify(r)}`);return r}function qr(r,e,t=""){if(C.debug&&!wi(r,e))throw new Error(`math.gl: ${t} some fields set to invalid numbers'`);return r}function Ut(r,e){if(!r)throw new Error(`math.gl assertion ${e}`)}var Ne=class extends ee{get x(){return this[0]}set x(e){this[0]=b(e)}get y(){return this[1]}set y(e){this[1]=b(e)}len(){return Math.sqrt(this.lengthSquared())}magnitude(){return this.len()}lengthSquared(){let e=0;for(let t=0;t<this.ELEMENTS;++t)e+=this[t]*this[t];return e}magnitudeSquared(){return this.lengthSquared()}distance(e){return Math.sqrt(this.distanceSquared(e))}distanceSquared(e){let t=0;for(let n=0;n<this.ELEMENTS;++n){let o=this[n]-e[n];t+=o*o}return b(t)}dot(e){let t=0;for(let n=0;n<this.ELEMENTS;++n)t+=this[n]*e[n];return b(t)}normalize(){let e=this.magnitude();if(e!==0)for(let t=0;t<this.ELEMENTS;++t)this[t]/=e;return this.check()}multiply(...e){for(let t of e)for(let n=0;n<this.ELEMENTS;++n)this[n]*=t[n];return this.check()}divide(...e){for(let t of e)for(let n=0;n<this.ELEMENTS;++n)this[n]/=t[n];return this.check()}lengthSq(){return this.lengthSquared()}distanceTo(e){return this.distance(e)}distanceToSquared(e){return this.distanceSquared(e)}getComponent(e){return Ut(e>=0&&e<this.ELEMENTS,"index is out of range"),b(this[e])}setComponent(e,t){return Ut(e>=0&&e<this.ELEMENTS,"index is out of range"),this[e]=t,this.check()}addVectors(e,t){return this.copy(e).add(t)}subVectors(e,t){return this.copy(e).subtract(t)}multiplyVectors(e,t){return this.copy(e).multiply(t)}addScaledVector(e,t){return this.add(new this.constructor(e).multiplyScalar(t))}};var te=typeof Float32Array<"u"?Float32Array:Array;var xu=Math.PI/180;function Si(){let r=new te(2);return te!=Float32Array&&(r[0]=0,r[1]=0),r}function $r(r,e,t){let n=e[0],o=e[1];return r[0]=t[0]*n+t[3]*o+t[6],r[1]=t[1]*n+t[4]*o+t[7],r}var Eu=function(){let r=Si();return function(e,t,n,o,s,i){let a,c;for(t||(t=2),n||(n=0),o?c=Math.min(o*t+n,e.length):c=e.length,a=n;a<c;a+=t)r[0]=e[a],r[1]=e[a+1],s(r,r,i),e[a]=r[0],e[a+1]=r[1];return e}}();function en(r,e,t){let n=e[0],o=e[1],s=e[2],i=t[3]*n+t[7]*o+t[11]*s||1;return r[0]=(t[0]*n+t[4]*o+t[8]*s)/i,r[1]=(t[1]*n+t[5]*o+t[9]*s)/i,r[2]=(t[2]*n+t[6]*o+t[10]*s)/i,r}function tn(r,e,t){let n=e[0],o=e[1];return r[0]=t[0]*n+t[2]*o,r[1]=t[1]*n+t[3]*o,r[2]=e[2],r}function rn(r,e,t){let n=e[0],o=e[1],s=e[2];return r[0]=t[0]*n+t[3]*o+t[6]*s,r[1]=t[1]*n+t[4]*o+t[7]*s,r[2]=t[2]*n+t[5]*o+t[8]*s,r[3]=e[3],r}function Ji(){let r=new te(3);return te!=Float32Array&&(r[0]=0,r[1]=0,r[2]=0),r}function Ui(r,e){return r[0]*e[0]+r[1]*e[1]+r[2]*e[2]}function nn(r,e,t){let n=e[0],o=e[1],s=e[2],i=t[0],a=t[1],c=t[2];return r[0]=o*c-s*a,r[1]=s*i-n*c,r[2]=n*a-o*i,r}function on(r,e,t){let n=e[0],o=e[1],s=e[2],i=t[3]*n+t[7]*o+t[11]*s+t[15];return i=i||1,r[0]=(t[0]*n+t[4]*o+t[8]*s+t[12])/i,r[1]=(t[1]*n+t[5]*o+t[9]*s+t[13])/i,r[2]=(t[2]*n+t[6]*o+t[10]*s+t[14])/i,r}function Pe(r,e,t){let n=e[0],o=e[1],s=e[2];return r[0]=n*t[0]+o*t[3]+s*t[6],r[1]=n*t[1]+o*t[4]+s*t[7],r[2]=n*t[2]+o*t[5]+s*t[8],r}function sn(r,e,t){let n=t[0],o=t[1],s=t[2],i=t[3],a=e[0],c=e[1],f=e[2],A=o*f-s*c,u=s*a-n*f,m=n*c-o*a,B=o*m-s*u,d=s*A-n*m,p=n*u-o*A,x=i*2;return A*=x,u*=x,m*=x,B*=2,d*=2,p*=2,r[0]=a+A+B,r[1]=c+u+d,r[2]=f+m+p,r}function an(r,e,t,n){let o=[],s=[];return o[0]=e[0]-t[0],o[1]=e[1]-t[1],o[2]=e[2]-t[2],s[0]=o[0],s[1]=o[1]*Math.cos(n)-o[2]*Math.sin(n),s[2]=o[1]*Math.sin(n)+o[2]*Math.cos(n),r[0]=s[0]+t[0],r[1]=s[1]+t[1],r[2]=s[2]+t[2],r}function cn(r,e,t,n){let o=[],s=[];return o[0]=e[0]-t[0],o[1]=e[1]-t[1],o[2]=e[2]-t[2],s[0]=o[2]*Math.sin(n)+o[0]*Math.cos(n),s[1]=o[1],s[2]=o[2]*Math.cos(n)-o[0]*Math.sin(n),r[0]=s[0]+t[0],r[1]=s[1]+t[1],r[2]=s[2]+t[2],r}function fn(r,e,t,n){let o=[],s=[];return o[0]=e[0]-t[0],o[1]=e[1]-t[1],o[2]=e[2]-t[2],s[0]=o[0]*Math.cos(n)-o[1]*Math.sin(n),s[1]=o[0]*Math.sin(n)+o[1]*Math.cos(n),s[2]=o[2],r[0]=s[0]+t[0],r[1]=s[1]+t[1],r[2]=s[2]+t[2],r}function An(r,e){let t=r[0],n=r[1],o=r[2],s=e[0],i=e[1],a=e[2],c=Math.sqrt((t*t+n*n+o*o)*(s*s+i*i+a*a)),f=c&&Ui(r,e)/c;return Math.acos(Math.min(Math.max(f,-1),1))}var Mu=function(){let r=Ji();return function(e,t,n,o,s,i){let a,c;for(t||(t=3),n||(n=0),o?c=Math.min(o*t+n,e.length):c=e.length,a=n;a<c;a+=t)r[0]=e[a],r[1]=e[a+1],r[2]=e[a+2],s(r,r,i),e[a]=r[0],e[a+1]=r[1],e[a+2]=r[2];return e}}();var Ht=[0,0,0],Ke,K=class extends Ne{static get ZERO(){return Ke||(Ke=new K(0,0,0),Object.freeze(Ke)),Ke}constructor(e=0,t=0,n=0){super(-0,-0,-0),arguments.length===1&&$(e)?this.copy(e):(C.debug&&(b(e),b(t),b(n)),this[0]=e,this[1]=t,this[2]=n)}set(e,t,n){return this[0]=e,this[1]=t,this[2]=n,this.check()}copy(e){return this[0]=e[0],this[1]=e[1],this[2]=e[2],this.check()}fromObject(e){return C.debug&&(b(e.x),b(e.y),b(e.z)),this[0]=e.x,this[1]=e.y,this[2]=e.z,this.check()}toObject(e){return e.x=this[0],e.y=this[1],e.z=this[2],e}get ELEMENTS(){return 3}get z(){return this[2]}set z(e){this[2]=b(e)}angle(e){return An(this,e)}cross(e){return nn(this,this,e),this.check()}rotateX({radians:e,origin:t=Ht}){return an(this,this,t,e),this.check()}rotateY({radians:e,origin:t=Ht}){return cn(this,this,t,e),this.check()}rotateZ({radians:e,origin:t=Ht}){return fn(this,this,t,e),this.check()}transform(e){return this.transformAsPoint(e)}transformAsPoint(e){return on(this,this,e),this.check()}transformAsVector(e){return en(this,this,e),this.check()}transformByMatrix3(e){return Pe(this,this,e),this.check()}transformByMatrix2(e){return tn(this,this,e),this.check()}transformByQuaternion(e){return sn(this,this,e),this.check()}};var je=class extends ee{toString(){let e="[";if(C.printRowMajor){e+="row-major:";for(let t=0;t<this.RANK;++t)for(let n=0;n<this.RANK;++n)e+=` ${this[n*this.RANK+t]}`}else{e+="column-major:";for(let t=0;t<this.ELEMENTS;++t)e+=` ${this[t]}`}return e+="]",e}getElementIndex(e,t){return t*this.RANK+e}getElement(e,t){return this[t*this.RANK+e]}setElement(e,t,n){return this[t*this.RANK+e]=b(n),this}getColumn(e,t=new Array(this.RANK).fill(-0)){let n=e*this.RANK;for(let o=0;o<this.RANK;++o)t[o]=this[n+o];return t}setColumn(e,t){let n=e*this.RANK;for(let o=0;o<this.RANK;++o)this[n+o]=t[o];return this}};function un(r,e){if(r===e){let t=e[1],n=e[2],o=e[5];r[1]=e[3],r[2]=e[6],r[3]=t,r[5]=e[7],r[6]=n,r[7]=o}else r[0]=e[0],r[1]=e[3],r[2]=e[6],r[3]=e[1],r[4]=e[4],r[5]=e[7],r[6]=e[2],r[7]=e[5],r[8]=e[8];return r}function mn(r,e){let t=e[0],n=e[1],o=e[2],s=e[3],i=e[4],a=e[5],c=e[6],f=e[7],A=e[8],u=A*i-a*f,m=-A*s+a*c,B=f*s-i*c,d=t*u+n*m+o*B;return d?(d=1/d,r[0]=u*d,r[1]=(-A*n+o*f)*d,r[2]=(a*n-o*i)*d,r[3]=m*d,r[4]=(A*t-o*c)*d,r[5]=(-a*t+o*s)*d,r[6]=B*d,r[7]=(-f*t+n*c)*d,r[8]=(i*t-n*s)*d,r):null}function Bn(r){let e=r[0],t=r[1],n=r[2],o=r[3],s=r[4],i=r[5],a=r[6],c=r[7],f=r[8];return e*(f*s-i*c)+t*(-f*o+i*a)+n*(c*o-s*a)}function Nt(r,e,t){let n=e[0],o=e[1],s=e[2],i=e[3],a=e[4],c=e[5],f=e[6],A=e[7],u=e[8],m=t[0],B=t[1],d=t[2],p=t[3],x=t[4],I=t[5],S=t[6],v=t[7],Ve=t[8];return r[0]=m*n+B*i+d*f,r[1]=m*o+B*a+d*A,r[2]=m*s+B*c+d*u,r[3]=p*n+x*i+I*f,r[4]=p*o+x*a+I*A,r[5]=p*s+x*c+I*u,r[6]=S*n+v*i+Ve*f,r[7]=S*o+v*a+Ve*A,r[8]=S*s+v*c+Ve*u,r}function ln(r,e,t){let n=e[0],o=e[1],s=e[2],i=e[3],a=e[4],c=e[5],f=e[6],A=e[7],u=e[8],m=t[0],B=t[1];return r[0]=n,r[1]=o,r[2]=s,r[3]=i,r[4]=a,r[5]=c,r[6]=m*n+B*i+f,r[7]=m*o+B*a+A,r[8]=m*s+B*c+u,r}function dn(r,e,t){let n=e[0],o=e[1],s=e[2],i=e[3],a=e[4],c=e[5],f=e[6],A=e[7],u=e[8],m=Math.sin(t),B=Math.cos(t);return r[0]=B*n+m*i,r[1]=B*o+m*a,r[2]=B*s+m*c,r[3]=B*i-m*n,r[4]=B*a-m*o,r[5]=B*c-m*s,r[6]=f,r[7]=A,r[8]=u,r}function Pt(r,e,t){let n=t[0],o=t[1];return r[0]=n*e[0],r[1]=n*e[1],r[2]=n*e[2],r[3]=o*e[3],r[4]=o*e[4],r[5]=o*e[5],r[6]=e[6],r[7]=e[7],r[8]=e[8],r}function pn(r,e){let t=e[0],n=e[1],o=e[2],s=e[3],i=t+t,a=n+n,c=o+o,f=t*i,A=n*i,u=n*a,m=o*i,B=o*a,d=o*c,p=s*i,x=s*a,I=s*c;return r[0]=1-u-d,r[3]=A-I,r[6]=m+x,r[1]=A+I,r[4]=1-f-d,r[7]=B-p,r[2]=m-x,r[5]=B+p,r[8]=1-f-u,r}var Kt;(function(r){r[r.COL0ROW0=0]="COL0ROW0",r[r.COL0ROW1=1]="COL0ROW1",r[r.COL0ROW2=2]="COL0ROW2",r[r.COL1ROW0=3]="COL1ROW0",r[r.COL1ROW1=4]="COL1ROW1",r[r.COL1ROW2=5]="COL1ROW2",r[r.COL2ROW0=6]="COL2ROW0",r[r.COL2ROW1=7]="COL2ROW1",r[r.COL2ROW2=8]="COL2ROW2"})(Kt||(Kt={}));var Hi=Object.freeze([1,0,0,0,1,0,0,0,1]),_=class extends je{static get IDENTITY(){return Pi()}static get ZERO(){return Ni()}get ELEMENTS(){return 9}get RANK(){return 3}get INDICES(){return Kt}constructor(e,...t){super(-0,-0,-0,-0,-0,-0,-0,-0,-0),arguments.length===1&&Array.isArray(e)?this.copy(e):t.length>0?this.copy([e,...t]):this.identity()}copy(e){return this[0]=e[0],this[1]=e[1],this[2]=e[2],this[3]=e[3],this[4]=e[4],this[5]=e[5],this[6]=e[6],this[7]=e[7],this[8]=e[8],this.check()}identity(){return this.copy(Hi)}fromObject(e){return this.check()}fromQuaternion(e){return pn(this,e),this.check()}set(e,t,n,o,s,i,a,c,f){return this[0]=e,this[1]=t,this[2]=n,this[3]=o,this[4]=s,this[5]=i,this[6]=a,this[7]=c,this[8]=f,this.check()}setRowMajor(e,t,n,o,s,i,a,c,f){return this[0]=e,this[1]=o,this[2]=a,this[3]=t,this[4]=s,this[5]=c,this[6]=n,this[7]=i,this[8]=f,this.check()}determinant(){return Bn(this)}transpose(){return un(this,this),this.check()}invert(){return mn(this,this),this.check()}multiplyLeft(e){return Nt(this,e,this),this.check()}multiplyRight(e){return Nt(this,this,e),this.check()}rotate(e){return dn(this,this,e),this.check()}scale(e){return Array.isArray(e)?Pt(this,this,e):Pt(this,this,[e,e]),this.check()}translate(e){return ln(this,this,e),this.check()}transform(e,t){let n;switch(e.length){case 2:n=$r(t||[-0,-0],e,this);break;case 3:n=Pe(t||[-0,-0,-0],e,this);break;case 4:n=rn(t||[-0,-0,-0,-0],e,this);break;default:throw new Error("Illegal vector")}return qr(n,e.length),n}transformVector(e,t){return this.transform(e,t)}transformVector2(e,t){return this.transform(e,t)}transformVector3(e,t){return this.transform(e,t)}},ve,Qe=null;function Ni(){return ve||(ve=new _([0,0,0,0,0,0,0,0,0]),Object.freeze(ve)),ve}function Pi(){return Qe||(Qe=new _,Object.freeze(Qe)),Qe}var ke="KHR_texture_transform",Ki=ke,Xe=new K,ji=new _,vi=new _;async function Qi(r,e){if(!new l(r).hasExtension(ke)||!e.gltf?.loadBuffers)return;let o=r.json.materials||[];for(let s=0;s<o.length;s++)Xi(s,r)}function Xi(r,e){let t=e.json.materials?.[r],n=[t?.pbrMetallicRoughness?.baseColorTexture,t?.emissiveTexture,t?.normalTexture,t?.occlusionTexture,t?.pbrMetallicRoughness?.metallicRoughnessTexture],o=[];for(let s of n)s&&s?.extensions?.[ke]&&ki(e,r,s,o)}function ki(r,e,t,n){let o=Yi(t,n);if(!o)return;let s=r.json.meshes||[];for(let i of s)for(let a of i.primitives){let c=a.material;Number.isFinite(c)&&e===c&&Vi(r,a,o)}}function Yi(r,e){let t=r.extensions?.[ke],{texCoord:n=0}=r,{texCoord:o=n}=t;if(!(e.findIndex(([i,a])=>i===n&&a===o)!==-1)){let i=qi(t);return n!==o&&(r.texCoord=o),e.push([n,o]),{originalTexCoord:n,texCoord:o,matrix:i}}return null}function Vi(r,e,t){let{originalTexCoord:n,texCoord:o,matrix:s}=t,i=e.attributes[`TEXCOORD_${n}`];if(Number.isFinite(i)){let a=r.json.accessors?.[i];if(a&&a.bufferView!==void 0){let c=r.json.bufferViews?.[a.bufferView];if(c){let{arrayBuffer:f,byteOffset:A}=r.buffers[c.buffer],u=(A||0)+(a.byteOffset||0)+(c.byteOffset||0),{ArrayType:m,length:B}=Q(a,c),d=Me[a.componentType],p=Te[a.type],x=c.byteStride||d*p,I=new Float32Array(B);for(let S=0;S<a.count;S++){let v=new m(f,u+S*x,2);Xe.set(v[0],v[1],1),Xe.transformByMatrix3(s),I.set([Xe[0],Xe[1]],S*p)}n===o?Wi(a,r,I,a.bufferView):Zi(o,a,e,r,I)}}}}function Wi(r,e,t,n){r.componentType=5126,r.byteOffset=0;let i=(e.json.accessors||[]).reduce((f,A)=>A.bufferView===n?f+1:f,0)>1;e.buffers.push({arrayBuffer:J(t.buffer),byteOffset:0,byteLength:t.buffer.byteLength});let a=e.buffers.length-1;if(e.json.bufferViews=e.json.bufferViews||[],i){e.json.bufferViews.push({buffer:a,byteLength:t.buffer.byteLength,byteOffset:0}),r.bufferView=e.json.bufferViews.length-1;return}let c=e.json.bufferViews[n];c&&(c.buffer=a,c.byteOffset=0,c.byteLength=t.buffer.byteLength,c.byteStride!==void 0&&delete c.byteStride)}function Zi(r,e,t,n,o){n.buffers.push({arrayBuffer:J(o.buffer),byteOffset:0,byteLength:o.buffer.byteLength}),n.json.bufferViews=n.json.bufferViews||[];let s=n.json.bufferViews;s.push({buffer:n.buffers.length-1,byteLength:o.buffer.byteLength,byteOffset:0});let i=n.json.accessors;i&&(i.push({bufferView:s?.length-1,byteOffset:0,componentType:5126,count:e.count,type:"VEC2"}),t.attributes[`TEXCOORD_${r}`]=i.length-1)}function qi(r){let{offset:e=[0,0],rotation:t=0,scale:n=[1,1]}=r,o=new _().set(1,0,0,0,1,0,e[0],e[1],1),s=ji.set(Math.cos(t),Math.sin(t),0,-Math.sin(t),Math.cos(t),0,0,0,1),i=vi.set(n[0],0,0,0,n[1],0,0,0,1);return o.multiplyRight(s).multiplyRight(i)}var vt={};y(vt,{decode:()=>$i,encode:()=>ea,name:()=>zi});var j="KHR_lights_punctual",zi=j;async function $i(r){let e=new l(r),{json:t}=e,n=e.getExtension(j);n&&(e.json.lights=n.lights,e.removeExtension(j));for(let o of t.nodes||[]){let s=e.getObjectExtension(o,j);s&&(o.light=s.light),e.removeObjectExtension(o,j)}}async function ea(r){let e=new l(r),{json:t}=e;if(t.lights){let n=e.addExtension(j);h(!n.lights),n.lights=t.lights,delete t.lights}if(e.json.lights){for(let n of e.json.lights){let o=n.node;e.addObjectExtension(o,j,n)}delete e.json.lights}}var Qt={};y(Qt,{decode:()=>ra,encode:()=>na,name:()=>ta});var le="KHR_materials_unlit",ta=le;async function ra(r){let e=new l(r),{json:t}=e;for(let n of t.materials||[])n.extensions&&n.extensions.KHR_materials_unlit&&(n.unlit=!0),e.removeObjectExtension(n,le);e.removeExtension(le)}function na(r){let e=new l(r),{json:t}=e;if(e.materials)for(let n of t.materials||[])n.unlit&&(delete n.unlit,e.addObjectExtension(n,le,{}),e.addExtension(le))}var Xt={};y(Xt,{decode:()=>sa,encode:()=>ia,name:()=>oa});var de="KHR_techniques_webgl",oa=de;async function sa(r){let e=new l(r),{json:t}=e,n=e.getExtension(de);if(n){let o=aa(n,e);for(let s of t.materials||[]){let i=e.getObjectExtension(s,de);i&&(s.technique=Object.assign({},i,o[i.technique]),s.technique.values=ca(s.technique,e)),e.removeObjectExtension(s,de)}e.removeExtension(de)}}async function ia(r,e){}function aa(r,e){let{programs:t=[],shaders:n=[],techniques:o=[]}=r,s=new TextDecoder;return n.forEach(i=>{if(Number.isFinite(i.bufferView))i.code=s.decode(e.getTypedArrayForBufferView(i.bufferView));else throw new Error("KHR_techniques_webgl: no shader code")}),t.forEach(i=>{i.fragmentShader=n[i.fragmentShader],i.vertexShader=n[i.vertexShader]}),o.forEach(i=>{i.program=t[i.program]}),o}function ca(r,e){let t=Object.assign({},r.values);return Object.keys(r.uniforms||{}).forEach(n=>{r.uniforms[n].value&&!(n in t)&&(t[n]=r.uniforms[n].value)}),Object.keys(t).forEach(n=>{typeof t[n]=="object"&&t[n].index!==void 0&&(t[n].texture=e.getTexture(t[n].index))}),t}var hn=[Oe,we,Ft,It,Gt,St,vt,Qt,Xt,jt,dt],fa=[Oe,we];function gn(r,e={},t){let n=hn.filter(o=>xn(o.name,e));for(let o of n)o.preprocess?.(r,e,t)}async function Cn(r,e={},t){let n=hn.filter(o=>xn(o.name,e));for(let o of n)await o.decode?.(r,e,t)}function bn(r,e={}){for(let t of fa)r=t.encode?.(r,e)??r;return r}function xn(r,e){let t=e?.gltf?.excludeExtensions||{};return!(r in t&&!t[r])}var kt="KHR_binary_glTF";function En(r){let e=new l(r),{json:t}=e;for(let n of t.images||[]){let o=e.getObjectExtension(n,kt);o&&Object.assign(n,o),e.removeObjectExtension(n,kt)}t.buffers&&t.buffers[0]&&delete t.buffers[0].uri,e.removeExtension(kt)}var yn={accessors:"accessor",animations:"animation",buffers:"buffer",bufferViews:"bufferView",images:"image",materials:"material",meshes:"mesh",nodes:"node",samplers:"sampler",scenes:"scene",skins:"skin",textures:"texture"},ua={accessor:"accessors",animations:"animation",buffer:"buffers",bufferView:"bufferViews",image:"images",material:"materials",mesh:"meshes",node:"nodes",sampler:"samplers",scene:"scenes",skin:"skins",texture:"textures"},Yt=class{idToIndexMap={animations:{},accessors:{},buffers:{},bufferViews:{},images:{},materials:{},meshes:{},nodes:{},samplers:{},scenes:{},skins:{},textures:{}};json;normalize(e,t){this.json=e.json;let n=e.json;switch(n.asset&&n.asset.version){case"2.0":return;case void 0:case"1.0":break;default:console.warn(`glTF: Unknown version ${n.asset.version}`);return}if(!t.normalize)throw new Error("glTF v1 is not supported.");console.warn("Converting glTF v1 to glTF v2 format. This is experimental and may fail."),this._addAsset(n),this._convertTopLevelObjectsToArrays(n),En(e),this._convertObjectIdsToArrayIndices(n),this._updateObjects(n),this._updateMaterial(n)}_addAsset(e){e.asset=e.asset||{},e.asset.version="2.0",e.asset.generator=e.asset.generator||"Normalized to glTF 2.0 by loaders.gl"}_convertTopLevelObjectsToArrays(e){for(let t in yn)this._convertTopLevelObjectToArray(e,t)}_convertTopLevelObjectToArray(e,t){let n=e[t];if(!(!n||Array.isArray(n))){e[t]=[];for(let o in n){let s=n[o];s.id=s.id||o;let i=e[t].length;e[t].push(s),this.idToIndexMap[t][o]=i}}}_convertObjectIdsToArrayIndices(e){for(let t in yn)this._convertIdsToIndices(e,t);"scene"in e&&(e.scene=this._convertIdToIndex(e.scene,"scene"));for(let t of e.textures)this._convertTextureIds(t);for(let t of e.meshes)this._convertMeshIds(t);for(let t of e.nodes)this._convertNodeIds(t);for(let t of e.scenes)this._convertSceneIds(t)}_convertTextureIds(e){e.source&&(e.source=this._convertIdToIndex(e.source,"image"))}_convertMeshIds(e){for(let t of e.primitives){let{attributes:n,indices:o,material:s}=t;for(let i in n)n[i]=this._convertIdToIndex(n[i],"accessor");o&&(t.indices=this._convertIdToIndex(o,"accessor")),s&&(t.material=this._convertIdToIndex(s,"material"))}}_convertNodeIds(e){e.children&&(e.children=e.children.map(t=>this._convertIdToIndex(t,"node"))),e.meshes&&(e.meshes=e.meshes.map(t=>this._convertIdToIndex(t,"mesh")))}_convertSceneIds(e){e.nodes&&(e.nodes=e.nodes.map(t=>this._convertIdToIndex(t,"node")))}_convertIdsToIndices(e,t){e[t]||(console.warn(`gltf v1: json doesn't contain attribute ${t}`),e[t]=[]);for(let n of e[t])for(let o in n){let s=n[o],i=this._convertIdToIndex(s,o);n[o]=i}}_convertIdToIndex(e,t){let n=ua[t];if(n in this.idToIndexMap){let o=this.idToIndexMap[n][e];if(!Number.isFinite(o))throw new Error(`gltf v1: failed to resolve ${t} with id ${e}`);return o}return e}_updateObjects(e){for(let t of this.json.buffers)delete t.type}_updateMaterial(e){for(let t of e.materials){t.pbrMetallicRoughness={baseColorFactor:[1,1,1,1],metallicFactor:1,roughnessFactor:1};let n=t.values?.tex||t.values?.texture2d_0||t.values?.diffuseTex,o=e.textures.findIndex(s=>s.id===n);o!==-1&&(t.pbrMetallicRoughness.baseColorTexture={index:o})}}};function Tn(r,e={}){return new Yt().normalize(r,e)}async function Mn(r,e,t=0,n,o){return ma(r,e,t,n),Tn(r,{normalize:n?.gltf?.normalize}),gn(r,n,o),n?.gltf?.loadBuffers&&r.json.buffers&&await Ba(r,n,o),n?.gltf?.loadImages&&await la(r,n,o),await Cn(r,n,o),r}function ma(r,e,t,n){if(n.core?.baseUri&&(r.baseUri=n.core?.baseUri),e instanceof ArrayBuffer&&!Jr(e,t,n.glb)&&(e=new TextDecoder().decode(e)),typeof e=="string")r.json=ze(e);else if(e instanceof ArrayBuffer){let i={};t=Je(i,e,t,n.glb),h(i.type==="glTF",`Invalid GLB magic string ${i.type}`),r._glb=i,r.json=i.json}else h(!1,"GLTF: must be ArrayBuffer or string");let o=r.json.buffers||[];if(r.buffers=new Array(o.length).fill(null),r._glb&&r._glb.header.hasBinChunk){let{binChunks:i}=r._glb;r.buffers[0]={arrayBuffer:i[0].arrayBuffer,byteOffset:i[0].byteOffset,byteLength:i[0].byteLength}}let s=r.json.images||[];r.images=new Array(s.length).fill({})}async function Ba(r,e,t){let n=r.json.buffers||[];for(let o=0;o<n.length;++o){let s=n[o];if(s.uri){let{fetch:i}=t;h(i);let a=Tt(s.uri,e),f=await(await t?.fetch?.(a))?.arrayBuffer?.();r.buffers[o]={arrayBuffer:f,byteOffset:0,byteLength:f.byteLength},delete s.uri}else r.buffers[o]===null&&(r.buffers[o]={arrayBuffer:new ArrayBuffer(s.byteLength),byteOffset:0,byteLength:s.byteLength})}}async function la(r,e,t){let n=da(r),o=r.json.images||[],s=[];for(let i of n)s.push(pa(r,o[i],i,e,t));return await Promise.all(s)}function da(r){let e=new Set,t=r.json.textures||[];for(let n of t)n.source!==void 0&&e.add(n.source);return Array.from(e).sort()}async function pa(r,e,t,n,o){let s;if(e.uri&&!e.hasOwnProperty("bufferView")){let f=Tt(e.uri,n),{fetch:A}=o;s=await(await A(f)).arrayBuffer(),e.bufferView={data:s}}if(Number.isFinite(e.bufferView)){let f=gr(r.json,r.buffers,e.bufferView);s=ie(f.buffer,f.byteOffset,f.byteLength)}h(s,"glTF image has no data");let i=n,a={...i,core:{...i?.core,mimeType:e.mimeType}},c=await re(s,[st,bt],a,o);c&&c[0]&&(c={compressed:!0,mipmaps:!1,width:c[0].width,height:c[0].height,data:c[0]}),r.images=r.images||[],r.images[t]=c}var Ye={dataType:null,batchType:null,name:"glTF",id:"gltf",module:"gltf",version:H,extensions:["gltf","glb"],mimeTypes:["model/gltf+json","model/gltf-binary"],text:!0,binary:!0,tests:["glTF"],parse:ha,options:{gltf:{normalize:!0,loadBuffers:!0,loadImages:!0,decompressMeshes:!0}}};async function ha(r,e={},t){let n={...Ye.options,...e};n.gltf={...Ye.options.gltf,...n.gltf};let o=e?.glb?.byteOffset||0;return await Mn({},r,o,n,t)}var ga=1179937895,Ca=1313821514,ba=5130562,O=!0;function pe(r,e,t=0,n={}){let{magic:o=ga,version:s=2,json:i={},binary:a}=r,c=t;e&&(e.setUint32(t+0,o,O),e.setUint32(t+4,s,O),e.setUint32(t+8,0,O));let f=t+8;t+=12;let A=t;e&&(e.setUint32(t+0,0,O),e.setUint32(t+4,Ca,O)),t+=8;let u=JSON.stringify(i);if(t=et(e,t,u,4),e){let m=t-A-8;e.setUint32(A+0,m,O)}if(a){let m=t;if(e&&(e.setUint32(t+0,0,O),e.setUint32(t+4,ba,O)),t+=8,t=xe(e,t,a,4),e){let B=t-m-8;e.setUint32(m+0,B,O)}}if(e){let m=t-c;e.setUint32(f,m,O)}return t}function Vt(r,e,t,n){return xa(r),pe(r,e,t,n)}function xa(r){if(r.buffers&&r.buffers.length>1)throw new Error("encodeGLTF: multiple buffers not yet implemented")}var In={dataType:null,batchType:null,name:"glTF",id:"gltf",module:"gltf",version:H,extensions:["glb"],mimeTypes:["model/gltf-binary"],binary:!0,options:{gltf:{}},encode:async(r,e={})=>Fn(r,e),encodeSync:Fn};function Fn(r,e={}){let{byteOffset:t=0}=e,n=bn(r),o=Vt(n,null,t,e),s=new ArrayBuffer(o),i=new DataView(s);return Vt(n,i,t,e),s}var Gn={dataType:null,batchType:null,name:"GLB",id:"glb",module:"gltf",version:H,extensions:["glb"],mimeTypes:["model/gltf-binary"],binary:!0,parse:Ea,parseSync:Dn,options:{glb:{strict:!1}}};async function Ea(r,e){return Dn(r,e)}function Dn(r,e){let t={};return Je(t,r,e?.glb?.byteOffset||0,e?.glb),t}var wn={name:"GLB",id:"glb",module:"gltf",version:H,extensions:["glb"],mimeTypes:["model/gltf-binary"],binary:!0,options:{glb:{}},encode:async(r,e={})=>Rn(r,e),encodeSync:Rn};function Rn(r,e){let{byteOffset:t=0}=e??{},n=pe(r,null,t,e),o=new ArrayBuffer(n),s=new DataView(o);return pe(r,s,t,e),o}var ya={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},Ta={5120:1,5121:1,5122:2,5123:2,5125:4,5126:4},F={TEXTURE_MAG_FILTER:10240,TEXTURE_MIN_FILTER:10241,TEXTURE_WRAP_S:10242,TEXTURE_WRAP_T:10243,REPEAT:10497,LINEAR:9729,NEAREST_MIPMAP_LINEAR:9986},Ma={magFilter:F.TEXTURE_MAG_FILTER,minFilter:F.TEXTURE_MIN_FILTER,wrapS:F.TEXTURE_WRAP_S,wrapT:F.TEXTURE_WRAP_T},Fa={[F.TEXTURE_MAG_FILTER]:F.LINEAR,[F.TEXTURE_MIN_FILTER]:F.NEAREST_MIPMAP_LINEAR,[F.TEXTURE_WRAP_S]:F.REPEAT,[F.TEXTURE_WRAP_T]:F.REPEAT};function Ia(){return{id:"default-sampler",parameters:Fa}}function Ga(r){return Ta[r]}function Da(r){return ya[r]}var Wt=class{baseUri="";jsonUnprocessed;json;buffers=[];images=[];postProcess(e,t={}){let{json:n,buffers:o=[],images:s=[]}=e,{baseUri:i=""}=e;return h(n),this.baseUri=i,this.buffers=o,this.images=s,this.jsonUnprocessed=n,this.json=this._resolveTree(e.json,t),this.json}_resolveTree(e,t={}){let n={...e};return this.json=n,e.bufferViews&&(n.bufferViews=e.bufferViews.map((o,s)=>this._resolveBufferView(o,s))),e.images&&(n.images=e.images.map((o,s)=>this._resolveImage(o,s))),e.samplers&&(n.samplers=e.samplers.map((o,s)=>this._resolveSampler(o,s))),e.textures&&(n.textures=e.textures.map((o,s)=>this._resolveTexture(o,s))),e.accessors&&(n.accessors=e.accessors.map((o,s)=>this._resolveAccessor(o,s))),e.materials&&(n.materials=e.materials.map((o,s)=>this._resolveMaterial(o,s))),e.meshes&&(n.meshes=e.meshes.map((o,s)=>this._resolveMesh(o,s))),e.nodes&&(n.nodes=e.nodes.map((o,s)=>this._resolveNode(o,s)),n.nodes=n.nodes.map((o,s)=>this._resolveNodeChildren(o))),e.skins&&(n.skins=e.skins.map((o,s)=>this._resolveSkin(o,s))),e.scenes&&(n.scenes=e.scenes.map((o,s)=>this._resolveScene(o,s))),typeof this.json.scene=="number"&&n.scenes&&(n.scene=n.scenes[this.json.scene]),n}getScene(e){return this._get(this.json.scenes,e)}getNode(e){return this._get(this.json.nodes,e)}getSkin(e){return this._get(this.json.skins,e)}getMesh(e){return this._get(this.json.meshes,e)}getMaterial(e){return this._get(this.json.materials,e)}getAccessor(e){return this._get(this.json.accessors,e)}getCamera(e){return this._get(this.json.cameras,e)}getTexture(e){return this._get(this.json.textures,e)}getSampler(e){return this._get(this.json.samplers,e)}getImage(e){return this._get(this.json.images,e)}getBufferView(e){return this._get(this.json.bufferViews,e)}getBuffer(e){return this._get(this.json.buffers,e)}_get(e,t){if(typeof t=="object")return t;let n=e&&e[t];return n||console.warn(`glTF file error: Could not find ${e}[${t}]`),n}_resolveScene(e,t){return{...e,id:e.id||`scene-${t}`,nodes:(e.nodes||[]).map(n=>this.getNode(n))}}_resolveNode(e,t){let n={...e,id:e?.id||`node-${t}`};return e.mesh!==void 0&&(n.mesh=this.getMesh(e.mesh)),e.camera!==void 0&&(n.camera=this.getCamera(e.camera)),e.skin!==void 0&&(n.skin=this.getSkin(e.skin)),e.meshes!==void 0&&e.meshes.length&&(n.mesh=e.meshes.reduce((o,s)=>{let i=this.getMesh(s);return o.id=i.id,o.primitives=o.primitives.concat(i.primitives),o},{primitives:[]})),n}_resolveNodeChildren(e){return e.children&&(e.children=e.children.map(t=>this.getNode(t))),e}_resolveSkin(e,t){let n=typeof e.inverseBindMatrices=="number"?this.getAccessor(e.inverseBindMatrices):void 0;return{...e,id:e.id||`skin-${t}`,inverseBindMatrices:n}}_resolveMesh(e,t){let n={...e,id:e.id||`mesh-${t}`,primitives:[]};return e.primitives&&(n.primitives=e.primitives.map(o=>{let s={...o,attributes:{},indices:void 0,material:void 0},i=o.attributes;for(let a in i)s.attributes[a]=this.getAccessor(i[a]);return o.indices!==void 0&&(s.indices=this.getAccessor(o.indices)),o.material!==void 0&&(s.material=this.getMaterial(o.material)),s})),n}_resolveMaterial(e,t){let n={...e,id:e.id||`material-${t}`};if(n.normalTexture&&(n.normalTexture={...n.normalTexture},n.normalTexture.texture=this.getTexture(n.normalTexture.index)),n.occlusionTexture&&(n.occlusionTexture={...n.occlusionTexture},n.occlusionTexture.texture=this.getTexture(n.occlusionTexture.index)),n.emissiveTexture&&(n.emissiveTexture={...n.emissiveTexture},n.emissiveTexture.texture=this.getTexture(n.emissiveTexture.index)),n.emissiveFactor||(n.emissiveFactor=n.emissiveTexture?[1,1,1]:[0,0,0]),n.pbrMetallicRoughness){n.pbrMetallicRoughness={...n.pbrMetallicRoughness};let o=n.pbrMetallicRoughness;o.baseColorTexture&&(o.baseColorTexture={...o.baseColorTexture},o.baseColorTexture.texture=this.getTexture(o.baseColorTexture.index)),o.metallicRoughnessTexture&&(o.metallicRoughnessTexture={...o.metallicRoughnessTexture},o.metallicRoughnessTexture.texture=this.getTexture(o.metallicRoughnessTexture.index))}return n}_resolveAccessor(e,t){let n=Ga(e.componentType),o=Da(e.type),s=n*o,i={...e,id:e.id||`accessor-${t}`,bytesPerComponent:n,components:o,bytesPerElement:s,value:void 0,bufferView:void 0,sparse:void 0};if(e.bufferView!==void 0&&(i.bufferView=this.getBufferView(e.bufferView)),i.bufferView){let a=i.bufferView.buffer,{ArrayType:c,byteLength:f}=Q(i,i.bufferView),A=(i.bufferView.byteOffset||0)+(i.byteOffset||0)+a.byteOffset,u=ae(a.arrayBuffer,A,f);i.bufferView.byteStride&&(u=this._getValueFromInterleavedBuffer(a,A,i.bufferView.byteStride,i.bytesPerElement,i.count)),i.value=new c(u)}return i}_getValueFromInterleavedBuffer(e,t,n,o,s){let i=new Uint8Array(s*o);for(let a=0;a<s;a++){let c=t+a*n;i.set(new Uint8Array(e.arrayBuffer.slice(c,c+o)),a*o)}return i.buffer}_resolveTexture(e,t){return{...e,id:e.id||`texture-${t}`,sampler:typeof e.sampler=="number"?this.getSampler(e.sampler):Ia(),source:typeof e.source=="number"?this.getImage(e.source):void 0}}_resolveSampler(e,t){let n={id:e.id||`sampler-${t}`,...e,parameters:{}};for(let o in n){let s=this._enumSamplerParameter(o);s!==void 0&&(n.parameters[s]=n[o])}return n}_enumSamplerParameter(e){return Ma[e]}_resolveImage(e,t){let n={...e,id:e.id||`image-${t}`,image:null,bufferView:e.bufferView!==void 0?this.getBufferView(e.bufferView):void 0},o=this.images[t];return o&&(n.image=o),n}_resolveBufferView(e,t){let n=e.buffer,o=this.buffers[n].arrayBuffer,s=this.buffers[n].byteOffset||0;return e.byteOffset&&(s+=e.byteOffset),{id:`bufferView-${t}`,...e,buffer:this.buffers[n],data:new Uint8Array(o,s,e.byteLength)}}_resolveCamera(e,t){let n={...e,id:e.id||`camera-${t}`};return n.perspective,n.orthographic,n}};function On(r,e){return new Wt().postProcess(r,e)}return Pn(he);})();
8
8
  return __exports__;
9
9
  });
package/dist/index.cjs CHANGED
@@ -1695,7 +1695,7 @@ function processPrimitiveTextures(scenegraph, attributeName, featureTexturePrope
1695
1695
  }
1696
1696
 
1697
1697
  // dist/lib/utils/version.js
1698
- var VERSION = true ? "4.4.0-alpha.17" : "latest";
1698
+ var VERSION = true ? "4.4.0-alpha.18" : "latest";
1699
1699
 
1700
1700
  // dist/lib/parsers/parse-gltf.js
1701
1701
  var import_loader_utils7 = require("@loaders.gl/loader-utils");
@@ -1,5 +1,5 @@
1
1
  // Version constant cannot be imported, it needs to correspond to the build version of **this** module.
2
2
  // __VERSION__ is injected by babel-plugin-version-inline
3
3
  // @ts-ignore TS2304: Cannot find name '__VERSION__'.
4
- export const VERSION = typeof "4.4.0-alpha.17" !== 'undefined' ? "4.4.0-alpha.17" : 'latest';
4
+ export const VERSION = typeof "4.4.0-alpha.18" !== 'undefined' ? "4.4.0-alpha.18" : 'latest';
5
5
  //# sourceMappingURL=version.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@loaders.gl/gltf",
3
- "version": "4.4.0-alpha.17",
3
+ "version": "4.4.0-alpha.18",
4
4
  "description": "Framework-independent loader for the glTF format",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -43,15 +43,15 @@
43
43
  "build-bundle-dev": "ocular-bundle ./bundle.ts --env=dev --output=dist/dist.dev.js"
44
44
  },
45
45
  "dependencies": {
46
- "@loaders.gl/draco": "4.4.0-alpha.17",
47
- "@loaders.gl/images": "4.4.0-alpha.17",
48
- "@loaders.gl/loader-utils": "4.4.0-alpha.17",
49
- "@loaders.gl/schema": "4.4.0-alpha.17",
50
- "@loaders.gl/textures": "4.4.0-alpha.17",
46
+ "@loaders.gl/draco": "4.4.0-alpha.18",
47
+ "@loaders.gl/images": "4.4.0-alpha.18",
48
+ "@loaders.gl/loader-utils": "4.4.0-alpha.18",
49
+ "@loaders.gl/schema": "4.4.0-alpha.18",
50
+ "@loaders.gl/textures": "4.4.0-alpha.18",
51
51
  "@math.gl/core": "^4.1.0"
52
52
  },
53
53
  "peerDependencies": {
54
54
  "@loaders.gl/core": "4.4.0-alpha.1"
55
55
  },
56
- "gitHead": "1379fa4a0c29df20dbc834a4ed1c9800e4aaec2f"
56
+ "gitHead": "6f37278ba24a83a68a1a081389eaef2ffac1ff09"
57
57
  }