r.name===(typeof e=="string"?e:e.name))||this._defaultModules.push(e)}removeDefaultModule(e){let r=typeof e=="string"?e:e.name;this._defaultModules=this._defaultModules.filter(i=>i.name!==r)}addShaderHook(e,r){r&&(e=Object.assign(r,{hook:e})),this._hookFunctions.push(e)}assembleShader(e){let r=this._getModuleList(e.modules),i=this._hookFunctions,s=lf(e);return{...pm({platformInfo:e.platformInfo,...s,modules:r,hookFunctions:i}),modules:r}}assembleShaderPair(e){let r=lf(e),i=this._getModuleList(e.modules),s=this._hookFunctions,{platformInfo:n}=e;return{...e.platformInfo.shaderLanguage==="wgsl"?gm({platformInfo:n,...r,modules:i,hookFunctions:s}):mm({platformInfo:n,...r,modules:i,hookFunctions:s}),modules:i}}_getModuleList(e=[]){let r=new Array(this._defaultModules.length+e.length),i={},s=0;for(let n=0,o=this._defaultModules.length;nt.startsWith(e))}function ac(t){let e=m1.exec(t);if(e){let[,r,i,s,n,o]=e;if(r){let a=`${s}${i}`,c=oc(a);return{format:r,components:r.length,srgb:n==="-srgb",unsized:o==="-unsized",webgl:o==="-webgl",...c}}}return y1(t)}var _1={"rgba4unorm-webgl":{format:"rgba",bpp:2},"rgb565unorm-webgl":{format:"rgb",bpp:2},"rgb5a1unorm-webgl":{format:"rgba",bbp:2},rgb9e5ufloat:{format:"rgb",bbp:4},rg11b10ufloat:{format:"rgb",bbp:4},rgb10a2unorm:{format:"rgba",bbp:4},"rgb10a2uint-webgl":{format:"rgba",bbp:4},stencil8:{components:1,bpp:1,a:"stencil"},depth16unorm:{components:1,bpp:2,a:"depth"},depth24plus:{components:1,bpp:3,a:"depth"},depth32float:{components:1,bpp:4,a:"depth"},"depth24plus-stencil8":{components:2,bpp:4,a:"depth-stencil"},"depth24unorm-stencil8":{components:2,bpp:4,a:"depth-stencil"},"depth32float-stencil8":{components:2,bpp:4,a:"depth-stencil"}};function y1(t){let e=_1[t];if(!e)throw new Error(`Unknown format ${t}`);return{format:e.format||"",components:e.components||e.format?.length||1,byteLength:e.bpp||1,srgb:!1,unsized:!1}}var Nn=class{},Fn=class{features;disabledFeatures;constructor(e=[],r){this.features=new Set(e),this.disabledFeatures=r||{}}*[Symbol.iterator](){yield*this.features}has(e){return!this.disabledFeatures[e]&&this.features.has(e)}},hr=class t{static defaultProps={id:null,canvas:null,container:null,manageState:!0,width:800,height:600,requestMaxLimits:!0,debug:!!O.get("debug"),spector:!!(O.get("spector")||O.get("spectorjs")),break:[],initalizeFeatures:!0,disabledFeatures:{"compilation-status-async-webgl":!0},gl:null,onError:e=>O.error(e.message)};get[Symbol.toStringTag](){return"Device"}static VERSION=ym;constructor(e){this.props={...t.defaultProps,...e},this.id=this.props.id||Fe(this[Symbol.toStringTag].toLowerCase())}id;props;userData={};statsManager=ls;_lumaData={};isTextureFormatCompressed(e){return Tm(e)}loseDevice(){return!1}getCanvasContext(){if(!this.canvasContext)throw new Error("Device has no CanvasContext");return this.canvasContext}createTexture(e){return(e instanceof Promise||typeof e=="string")&&(e={data:e}),this._createTexture(e)}createCommandEncoder(e={}){throw new Error("not implemented")}readPixelsToArrayWebGL(e,r){throw new Error("not implemented")}readPixelsToBufferWebGL(e,r){throw new Error("not implemented")}setParametersWebGL(e){throw new Error("not implemented")}getParametersWebGL(e){throw new Error("not implemented")}withParametersWebGL(e,r){throw new Error("not implemented")}clearWebGL(e){throw new Error("not implemented")}resetWebGL(){throw new Error("not implemented")}timestamp=0;incrementTimestamp(){return this.timestamp++}onError(e){this.props.onError(e)}_getBufferProps(e){(e instanceof ArrayBuffer||ArrayBuffer.isView(e))&&(e={data:e});let r={...e};return(e.usage||0)&ie.INDEX&&!e.indexType&&(e.data instanceof Uint32Array?r.indexType="uint32":e.data instanceof Uint16Array?r.indexType="uint16":O.warn("indices buffer content must be of integer type")()),r}};function ee(t,e){if(!t)throw new Error(e||"luma.gl: assertion failed.")}var Dn=new Map,dr=class t{static defaultProps={...hr.defaultProps,type:"best-available",devices:void 0};static stats=ls;static log=O;static registerDevices(e){for(let r of e)ee(r.type&&r.isSupported&&r.create),Dn.set(r.type,r)}static getAvailableDevices(){return Array.from(Dn).map(e=>e.type)}static getSupportedDevices(){return Array.from(Dn).filter(e=>e.isSupported()).map(e=>e.type)}static setDefaultDeviceProps(e){Object.assign(hr.defaultProps,e)}static async attachDevice(e){let r=vm(e.devices)||Dn;if(e.handle instanceof WebGL2RenderingContext){let i=r.get("webgl");if(i)return await i.attach(e.handle)}if(e.handle===null){let i=r.get("unknown");if(i)return await i.attach(null)}throw new Error("Failed to attach device. Ensure `@luma.gl/webgl` and/or `@luma.gl/webgpu` modules are imported.")}static async createDevice(e={}){e={...t.defaultProps,...e},e.gl&&(e.type="webgl");let r=vm(e.devices)||Dn;switch(e.type){case"webgpu":let i=r.get("webgpu");if(i)return await i.create(e);break;case"webgl":let s=r.get("webgl");if(s)return await s.create(e);break;case"unknown":let n=r.get("unknown");if(n)return await n.create(e);break;case"best-available":if(i=r.get("webgpu"),i?.isSupported?.())return await i.create(e);if(s=r.get("webgl"),s?.isSupported?.())return await s.create(e);break}throw new Error("No matching device found. Ensure `@luma.gl/webgl` and/or `@luma.gl/webgpu` modules are imported.")}static enforceWebGL2(e=!0){let r=HTMLCanvasElement.prototype;if(!e&&r.originalGetContext){r.getContext=r.originalGetContext,r.originalGetContext=void 0;return}r.originalGetContext=r.getContext,r.getContext=function(i,s){return i==="webgl"||i==="experimental-webgl"?this.originalGetContext("webgl2",s):this.originalGetContext(i,s)}}};function vm(t){if(!t||t?.length===0)return null;let e=new Map;for(let r of t)e.set(r.type,r);return e}var x1=ke()&&typeof document<"u",cc=()=>x1&&document.readyState==="complete",T1={canvas:null,width:800,height:600,useDevicePixels:!0,autoResize:!0,container:null,visible:!0,colorSpace:"srgb",alphaMode:"opaque"},Ti=class{id;props;canvas;htmlCanvas;offscreenCanvas;type;width=1;height=1;resizeObserver;_canvasSizeInfo={clientWidth:0,clientHeight:0,devicePixelRatio:1};static get isPageLoaded(){return cc()}static pageLoaded=v1();constructor(e){if(this.props={...T1,...e},e=this.props,!ke()){this.id="node-canvas-context",this.type="node",this.width=this.props.width,this.height=this.props.height,this.canvas=null;return}if(e.canvas)typeof e.canvas=="string"?this.canvas=S1(e.canvas):this.canvas=e.canvas;else{let r=A1(e),i=b1(e?.container||null);i.insertBefore(r,i.firstChild),this.canvas=r,e?.visible||(this.canvas.style.visibility="hidden")}this.canvas instanceof HTMLCanvasElement?(this.id=this.canvas.id,this.type="html-canvas",this.htmlCanvas=this.canvas):(this.id="offscreen-canvas",this.type="offscreen-canvas",this.offscreenCanvas=this.canvas),this.canvas instanceof HTMLCanvasElement&&e.autoResize&&(this.resizeObserver=new ResizeObserver(r=>{for(let i of r)i.target===this.canvas&&this.update()}),this.resizeObserver.observe(this.canvas))}getDevicePixelRatio(e){return typeof OffscreenCanvas<"u"&&this.canvas instanceof OffscreenCanvas||(e=e===void 0?this.props.useDevicePixels:e,!e||e<=0)?1:e===!0?typeof window<"u"&&window.devicePixelRatio||1:e}getPixelSize(){switch(this.type){case"node":return[this.width,this.height];case"offscreen-canvas":return[this.canvas.width,this.canvas.height];case"html-canvas":let e=this.getDevicePixelRatio(),r=this.canvas;return r.parentElement?[r.clientWidth*e,r.clientHeight*e]:[this.canvas.width,this.canvas.height];default:throw new Error(this.type)}}getAspect(){let[e,r]=this.getPixelSize();return e/r}cssToDeviceRatio(){try{let[e]=this.getDrawingBufferSize(),{clientWidth:r}=this._canvasSizeInfo;return r?e/r:1}catch{return 1}}cssToDevicePixels(e,r=!0){let i=this.cssToDeviceRatio(),[s,n]=this.getDrawingBufferSize();return E1(e,i,s,n,r)}setDevicePixelRatio(e,r={}){if(!this.htmlCanvas)return;let i="width"in r?r.width:this.htmlCanvas.clientWidth,s="height"in r?r.height:this.htmlCanvas.clientHeight;(!i||!s)&&(O.log(1,"Canvas clientWidth/clientHeight is 0")(),e=1,i=this.htmlCanvas.width||1,s=this.htmlCanvas.height||1);let n=this._canvasSizeInfo;if(n.clientWidth!==i||n.clientHeight!==s||n.devicePixelRatio!==e){let o=e,a=Math.floor(i*o),c=Math.floor(s*o);this.htmlCanvas.width=a,this.htmlCanvas.height=c;let[l,u]=this.getDrawingBufferSize();(l!==a||u!==c)&&(o=Math.min(l/i,u/s),this.htmlCanvas.width=Math.floor(i*o),this.htmlCanvas.height=Math.floor(s*o),O.warn("Device pixel ratio clamped")()),this._canvasSizeInfo.clientWidth=i,this._canvasSizeInfo.clientHeight=s,this._canvasSizeInfo.devicePixelRatio=e}}getDrawingBufferSize(){let e=this.device.gl;if(!e)throw new Error("canvas size");return[e.drawingBufferWidth,e.drawingBufferHeight]}_setAutoCreatedCanvasId(e){this.htmlCanvas?.id==="lumagl-auto-created-canvas"&&(this.htmlCanvas.id=e)}};function v1(){return cc()||typeof window>"u"?Promise.resolve():new Promise(t=>{window.addEventListener("load",()=>t())})}function b1(t){if(typeof t=="string"){let e=document.getElementById(t);if(!e&&!cc())throw new Error(`Accessing '${t}' before page was loaded`);if(!e)throw new Error(`${t} is not an HTML element`);return e}else if(t)return t;return document.body}function S1(t){let e=document.getElementById(t);if(!e&&!cc())throw new Error(`Accessing '${t}' before page was loaded`);if(!(e instanceof HTMLCanvasElement))throw new Error("Object is not a canvas element");return e}function A1(t){let{width:e,height:r}=t,i=document.createElement("canvas");return i.id="lumagl-auto-created-canvas",i.width=e||1,i.height=r||1,i.style.width=Number.isFinite(e)?`${e}px`:"100%",i.style.height=Number.isFinite(r)?`${r}px`:"100%",i}function E1(t,e,r,i,s){let n=t,o=bm(n[0],e,r),a=Sm(n[1],e,i,s),c=bm(n[0]+1,e,r),l=c===r-1?c:c-1;c=Sm(n[1]+1,e,i,s);let u;return s?(c=c===0?c:c+1,u=a,a=c):u=c===i-1?c:c-1,{x:o,y:a,width:Math.max(l-o+1,1),height:Math.max(u-a+1,1)}}function bm(t,e,r){return Math.min(Math.round(t*e),r-1)}function Sm(t,e,r,i){return i?Math.max(0,r-1-Math.round(t*e)):Math.min(Math.round(t*e),r-1)}var Ae=class t extends Q{static defaultProps={...Q.defaultProps,data:null,dimension:"2d",format:"rgba8unorm",width:void 0,height:void 0,depth:1,mipmaps:!0,compressed:!1,usage:0,mipLevels:void 0,samples:void 0,type:void 0,sampler:{},view:void 0};static COPY_SRC=1;static COPY_DST=2;static TEXTURE_BINDING=4;static STORAGE_BINDING=8;static RENDER_ATTACHMENT=16;get[Symbol.toStringTag](){return"Texture"}dimension;format;width;height;depth;updateTimestamp;constructor(e,r,i=t.defaultProps){super(e,r,i),this.dimension=this.props.dimension,this.format=this.props.format,this.width=this.props.width,this.height=this.props.height,this.depth=this.props.depth,this.updateTimestamp=e.incrementTimestamp()}};var vi=class t extends Q{static defaultProps={...Q.defaultProps,format:void 0,dimension:void 0,aspect:"all",baseMipLevel:0,mipLevelCount:void 0,baseArrayLayer:0,arrayLayerCount:void 0};get[Symbol.toStringTag](){return"TextureView"}constructor(e,r){super(e,r,t.defaultProps)}};function Em(t,e,r){let i="",s=e.split(/\r?\n/),n=t.slice().sort((o,a)=>o.lineNum-a.lineNum);switch(r?.showSourceCode||"no"){case"all":let o=0;for(let a=1;a<=s.length;a++)for(i+=wm(s[a-1],a,r);n.length>o&&n[o].lineNum===a;){let c=n[o++];i+=Am(c,s,c.lineNum,{...r,inlineSource:!1})}return i;case"issues":case"no":for(let a of t)i+=Am(a,s,a.lineNum,{inlineSource:r?.showSourceCode!=="no"});return i}}function Am(t,e,r,i){if(i?.inlineSource){let s=w1(e,r),n=t.linePos>0?`${" ".repeat(t.linePos+5)}^^^
+}`}function l1(t){switch(t){case 1:return"float";case 2:return"vec2";case 3:return"vec3";case 4:return"vec4";default:throw new Error(`invalid channels: ${t}`)}}function _m(t,e){switch(e){case 1:return`vec4(${t}, 0.0, 0.0, 1.0)`;case 2:return`vec4(${t}, 0.0, 1.0)`;case 3:return`vec4(${t}, 1.0)`;case 4:return t;default:throw new Error(`invalid channels: ${e}`)}}var O=new qe({id:"luma.gl"});var gf=class{stats=new Map;getStats(e){return this.get(e)}get(e){return this.stats.has(e)||this.stats.set(e,new dt({id:e})),this.stats.get(e)}},ls=new gf;function u1(){let t="9.0.14",e="set luma.log.level=1 (or higher) to trace rendering";if(globalThis.luma&&globalThis.luma.VERSION!==t)throw new Error(`luma.gl - multiple VERSIONs detected: ${globalThis.luma.VERSION} vs ${t}`);return globalThis.luma||(ke()&&O.log(1,`${t} - ${e}`)(),globalThis.luma=globalThis.luma||{VERSION:t,version:t,log:O,stats:ls}),t}var ym=u1();function f1(t){return ArrayBuffer.isView(t)&&!(t instanceof DataView)?t:null}function kr(t){return Array.isArray(t)?t.length===0||typeof t[0]=="number"?t:null:f1(t)}var mf={};function Fe(t="id"){mf[t]=mf[t]||1;let e=mf[t]++;return`${t}-${e}`}function Br(t){let e=!0;for(let r in t){e=!1;break}return e}var Q=class{static defaultProps={id:"undefined",handle:void 0,userData:void 0};id;props;userData={};_device;destroyed=!1;allocatedBytes=0;_attachedResources=new Set;constructor(e,r,i){if(!e)throw new Error("no device");this._device=e,this.props=h1(r,i);let s=this.props.id!=="undefined"?this.props.id:Fe(this[Symbol.toStringTag]);this.props.id=s,this.id=s,this.userData=this.props.userData||{},this.addStats()}destroy(){this.destroyResource()}delete(){return this.destroy(),this}toString(){return`${this[Symbol.toStringTag]||this.constructor.name}(${this.id})`}getProps(){return this.props}attachResource(e){this._attachedResources.add(e)}detachResource(e){this._attachedResources.delete(e)}destroyAttachedResource(e){this._attachedResources.delete(e)&&e.destroy()}destroyAttachedResources(){for(let e of Object.values(this._attachedResources))e.destroy();this._attachedResources=new Set}destroyResource(){this.destroyAttachedResources(),this.removeStats(),this.destroyed=!0}removeStats(){let e=this._device.statsManager.getStats("Resource Counts"),r=this[Symbol.toStringTag];e.get(`${r}s Active`).decrementCount()}trackAllocatedMemory(e,r=this[Symbol.toStringTag]){let i=this._device.statsManager.getStats("Resource Counts");i.get("GPU Memory").addCount(e),i.get(`${r} Memory`).addCount(e),this.allocatedBytes=e}trackDeallocatedMemory(e=this[Symbol.toStringTag]){let r=this._device.statsManager.getStats("Resource Counts");r.get("GPU Memory").subtractCount(this.allocatedBytes),r.get(`${e} Memory`).subtractCount(this.allocatedBytes),this.allocatedBytes=0}addStats(){let e=this._device.statsManager.getStats("Resource Counts"),r=this[Symbol.toStringTag];e.get("Resources Created").incrementCount(),e.get(`${r}s Created`).incrementCount(),e.get(`${r}s Active`).incrementCount()}};function h1(t,e){let r={...e};for(let i in t)t[i]!==void 0&&(r[i]=t[i]);return r}var ie=class t extends Q{static defaultProps={...Q.defaultProps,usage:0,byteLength:0,byteOffset:0,data:null,indexType:"uint16",mappedAtCreation:!1};static MAP_READ=1;static MAP_WRITE=2;static COPY_SRC=4;static COPY_DST=8;static INDEX=16;static VERTEX=32;static UNIFORM=64;static STORAGE=128;static INDIRECT=256;static QUERY_RESOLVE=512;get[Symbol.toStringTag](){return"Buffer"}usage;indexType;updateTimestamp;constructor(e,r){let i={...r};(r.usage||0)&t.INDEX&&!r.indexType&&(r.data instanceof Uint32Array?i.indexType="uint32":r.data instanceof Uint16Array&&(i.indexType="uint16")),super(e,i,t.defaultProps),this.usage=r.usage||0,this.indexType=i.indexType,this.updateTimestamp=e.incrementTimestamp()}readSyncWebGL(e,r){throw new Error("not implemented")}static DEBUG_DATA_MAX_LENGTH=32;debugData=new ArrayBuffer(0);_setDebugData(e,r,i){let s=ArrayBuffer.isView(e)?e.buffer:e,n=Math.min(e?e.byteLength:i,t.DEBUG_DATA_MAX_LENGTH);e===null?this.debugData=new ArrayBuffer(n):r===0&&i===e.byteLength?this.debugData=s.slice(0,n):this.debugData=s.slice(r,r+n)}};function oc(t){let e=xm[t],r=d1(e),i=t.includes("norm"),s=!i&&!t.startsWith("float"),n=t.startsWith("s");return{dataType:xm[t],byteLength:r,integer:s,signed:n,normalized:i}}function d1(t){return p1[t]}var xm={uint8:"uint8",sint8:"sint8",unorm8:"uint8",snorm8:"sint8",uint16:"uint16",sint16:"sint16",unorm16:"uint16",snorm16:"sint16",float16:"float16",float32:"float32",uint32:"uint32",sint32:"sint32"},p1={uint8:1,sint8:1,uint16:2,sint16:2,float16:2,float32:4,uint32:4,sint32:4};var g1=["bc1","bc2","bc3","bc4","bc5","bc6","bc7","etc1","etc2","eac","atc","astc","pvrtc"],m1=/^(rg?b?a?)([0-9]*)([a-z]*)(-srgb)?(-webgl|-unsized)?$/;function Tm(t){return g1.some(e=>t.startsWith(e))}function ac(t){let e=m1.exec(t);if(e){let[,r,i,s,n,o]=e;if(r){let a=`${s}${i}`,c=oc(a);return{format:r,components:r.length,srgb:n==="-srgb",unsized:o==="-unsized",webgl:o==="-webgl",...c}}}return y1(t)}var _1={"rgba4unorm-webgl":{format:"rgba",bpp:2},"rgb565unorm-webgl":{format:"rgb",bpp:2},"rgb5a1unorm-webgl":{format:"rgba",bbp:2},rgb9e5ufloat:{format:"rgb",bbp:4},rg11b10ufloat:{format:"rgb",bbp:4},rgb10a2unorm:{format:"rgba",bbp:4},"rgb10a2uint-webgl":{format:"rgba",bbp:4},stencil8:{components:1,bpp:1,a:"stencil"},depth16unorm:{components:1,bpp:2,a:"depth"},depth24plus:{components:1,bpp:3,a:"depth"},depth32float:{components:1,bpp:4,a:"depth"},"depth24plus-stencil8":{components:2,bpp:4,a:"depth-stencil"},"depth24unorm-stencil8":{components:2,bpp:4,a:"depth-stencil"},"depth32float-stencil8":{components:2,bpp:4,a:"depth-stencil"}};function y1(t){let e=_1[t];if(!e)throw new Error(`Unknown format ${t}`);return{format:e.format||"",components:e.components||e.format?.length||1,byteLength:e.bpp||1,srgb:!1,unsized:!1}}var Nn=class{},Fn=class{features;disabledFeatures;constructor(e=[],r){this.features=new Set(e),this.disabledFeatures=r||{}}*[Symbol.iterator](){yield*this.features}has(e){return!this.disabledFeatures[e]&&this.features.has(e)}},hr=class t{static defaultProps={id:null,canvas:null,container:null,manageState:!0,width:800,height:600,requestMaxLimits:!0,debug:!!O.get("debug"),spector:!!(O.get("spector")||O.get("spectorjs")),break:[],initalizeFeatures:!0,disabledFeatures:{"compilation-status-async-webgl":!0},gl:null,onError:e=>O.error(e.message)};get[Symbol.toStringTag](){return"Device"}static VERSION=ym;constructor(e){this.props={...t.defaultProps,...e},this.id=this.props.id||Fe(this[Symbol.toStringTag].toLowerCase())}id;props;userData={};statsManager=ls;_lumaData={};isTextureFormatCompressed(e){return Tm(e)}loseDevice(){return!1}getCanvasContext(){if(!this.canvasContext)throw new Error("Device has no CanvasContext");return this.canvasContext}createTexture(e){return(e instanceof Promise||typeof e=="string")&&(e={data:e}),this._createTexture(e)}createCommandEncoder(e={}){throw new Error("not implemented")}readPixelsToArrayWebGL(e,r){throw new Error("not implemented")}readPixelsToBufferWebGL(e,r){throw new Error("not implemented")}setParametersWebGL(e){throw new Error("not implemented")}getParametersWebGL(e){throw new Error("not implemented")}withParametersWebGL(e,r){throw new Error("not implemented")}clearWebGL(e){throw new Error("not implemented")}resetWebGL(){throw new Error("not implemented")}timestamp=0;incrementTimestamp(){return this.timestamp++}onError(e){this.props.onError(e)}_getBufferProps(e){(e instanceof ArrayBuffer||ArrayBuffer.isView(e))&&(e={data:e});let r={...e};return(e.usage||0)&ie.INDEX&&!e.indexType&&(e.data instanceof Uint32Array?r.indexType="uint32":e.data instanceof Uint16Array?r.indexType="uint16":O.warn("indices buffer content must be of integer type")()),r}};function ee(t,e){if(!t)throw new Error(e||"luma.gl: assertion failed.")}var Dn=new Map,dr=class t{static defaultProps={...hr.defaultProps,type:"best-available",devices:void 0};static stats=ls;static log=O;static registerDevices(e){for(let r of e)ee(r.type&&r.isSupported&&r.create),Dn.set(r.type,r)}static getAvailableDevices(){return Array.from(Dn).map(e=>e.type)}static getSupportedDevices(){return Array.from(Dn).filter(e=>e.isSupported()).map(e=>e.type)}static setDefaultDeviceProps(e){Object.assign(hr.defaultProps,e)}static async attachDevice(e){let r=vm(e.devices)||Dn;if(e.handle instanceof WebGL2RenderingContext){let i=r.get("webgl");if(i)return await i.attach(e.handle)}if(e.handle===null){let i=r.get("unknown");if(i)return await i.attach(null)}throw new Error("Failed to attach device. Ensure `@luma.gl/webgl` and/or `@luma.gl/webgpu` modules are imported.")}static async createDevice(e={}){e={...t.defaultProps,...e},e.gl&&(e.type="webgl");let r=vm(e.devices)||Dn;switch(e.type){case"webgpu":let i=r.get("webgpu");if(i)return await i.create(e);break;case"webgl":let s=r.get("webgl");if(s)return await s.create(e);break;case"unknown":let n=r.get("unknown");if(n)return await n.create(e);break;case"best-available":if(i=r.get("webgpu"),i?.isSupported?.())return await i.create(e);if(s=r.get("webgl"),s?.isSupported?.())return await s.create(e);break}throw new Error("No matching device found. Ensure `@luma.gl/webgl` and/or `@luma.gl/webgpu` modules are imported.")}static enforceWebGL2(e=!0){let r=HTMLCanvasElement.prototype;if(!e&&r.originalGetContext){r.getContext=r.originalGetContext,r.originalGetContext=void 0;return}r.originalGetContext=r.getContext,r.getContext=function(i,s){return i==="webgl"||i==="experimental-webgl"?this.originalGetContext("webgl2",s):this.originalGetContext(i,s)}}};function vm(t){if(!t||t?.length===0)return null;let e=new Map;for(let r of t)e.set(r.type,r);return e}var x1=ke()&&typeof document<"u",cc=()=>x1&&document.readyState==="complete",T1={canvas:null,width:800,height:600,useDevicePixels:!0,autoResize:!0,container:null,visible:!0,colorSpace:"srgb",alphaMode:"opaque"},Ti=class{id;props;canvas;htmlCanvas;offscreenCanvas;type;width=1;height=1;resizeObserver;_canvasSizeInfo={clientWidth:0,clientHeight:0,devicePixelRatio:1};static get isPageLoaded(){return cc()}static pageLoaded=v1();constructor(e){if(this.props={...T1,...e},e=this.props,!ke()){this.id="node-canvas-context",this.type="node",this.width=this.props.width,this.height=this.props.height,this.canvas=null;return}if(e.canvas)typeof e.canvas=="string"?this.canvas=S1(e.canvas):this.canvas=e.canvas;else{let r=A1(e),i=b1(e?.container||null);i.insertBefore(r,i.firstChild),this.canvas=r,e?.visible||(this.canvas.style.visibility="hidden")}this.canvas instanceof HTMLCanvasElement?(this.id=this.canvas.id,this.type="html-canvas",this.htmlCanvas=this.canvas):(this.id="offscreen-canvas",this.type="offscreen-canvas",this.offscreenCanvas=this.canvas),this.canvas instanceof HTMLCanvasElement&&e.autoResize&&(this.resizeObserver=new ResizeObserver(r=>{for(let i of r)i.target===this.canvas&&this.update()}),this.resizeObserver.observe(this.canvas))}getDevicePixelRatio(e){return typeof OffscreenCanvas<"u"&&this.canvas instanceof OffscreenCanvas||(e=e===void 0?this.props.useDevicePixels:e,!e||e<=0)?1:e===!0?typeof window<"u"&&window.devicePixelRatio||1:e}getPixelSize(){switch(this.type){case"node":return[this.width,this.height];case"offscreen-canvas":return[this.canvas.width,this.canvas.height];case"html-canvas":let e=this.getDevicePixelRatio(),r=this.canvas;return r.parentElement?[r.clientWidth*e,r.clientHeight*e]:[this.canvas.width,this.canvas.height];default:throw new Error(this.type)}}getAspect(){let[e,r]=this.getPixelSize();return e/r}cssToDeviceRatio(){try{let[e]=this.getDrawingBufferSize(),{clientWidth:r}=this._canvasSizeInfo;return r?e/r:1}catch{return 1}}cssToDevicePixels(e,r=!0){let i=this.cssToDeviceRatio(),[s,n]=this.getDrawingBufferSize();return E1(e,i,s,n,r)}setDevicePixelRatio(e,r={}){if(!this.htmlCanvas)return;let i="width"in r?r.width:this.htmlCanvas.clientWidth,s="height"in r?r.height:this.htmlCanvas.clientHeight;(!i||!s)&&(O.log(1,"Canvas clientWidth/clientHeight is 0")(),e=1,i=this.htmlCanvas.width||1,s=this.htmlCanvas.height||1);let n=this._canvasSizeInfo;if(n.clientWidth!==i||n.clientHeight!==s||n.devicePixelRatio!==e){let o=e,a=Math.floor(i*o),c=Math.floor(s*o);this.htmlCanvas.width=a,this.htmlCanvas.height=c;let[l,u]=this.getDrawingBufferSize();(l!==a||u!==c)&&(o=Math.min(l/i,u/s),this.htmlCanvas.width=Math.floor(i*o),this.htmlCanvas.height=Math.floor(s*o),O.warn("Device pixel ratio clamped")()),this._canvasSizeInfo.clientWidth=i,this._canvasSizeInfo.clientHeight=s,this._canvasSizeInfo.devicePixelRatio=e}}getDrawingBufferSize(){let e=this.device.gl;if(!e)throw new Error("canvas size");return[e.drawingBufferWidth,e.drawingBufferHeight]}_setAutoCreatedCanvasId(e){this.htmlCanvas?.id==="lumagl-auto-created-canvas"&&(this.htmlCanvas.id=e)}};function v1(){return cc()||typeof window>"u"?Promise.resolve():new Promise(t=>{window.addEventListener("load",()=>t())})}function b1(t){if(typeof t=="string"){let e=document.getElementById(t);if(!e&&!cc())throw new Error(`Accessing '${t}' before page was loaded`);if(!e)throw new Error(`${t} is not an HTML element`);return e}else if(t)return t;return document.body}function S1(t){let e=document.getElementById(t);if(!e&&!cc())throw new Error(`Accessing '${t}' before page was loaded`);if(!(e instanceof HTMLCanvasElement))throw new Error("Object is not a canvas element");return e}function A1(t){let{width:e,height:r}=t,i=document.createElement("canvas");return i.id="lumagl-auto-created-canvas",i.width=e||1,i.height=r||1,i.style.width=Number.isFinite(e)?`${e}px`:"100%",i.style.height=Number.isFinite(r)?`${r}px`:"100%",i}function E1(t,e,r,i,s){let n=t,o=bm(n[0],e,r),a=Sm(n[1],e,i,s),c=bm(n[0]+1,e,r),l=c===r-1?c:c-1;c=Sm(n[1]+1,e,i,s);let u;return s?(c=c===0?c:c+1,u=a,a=c):u=c===i-1?c:c-1,{x:o,y:a,width:Math.max(l-o+1,1),height:Math.max(u-a+1,1)}}function bm(t,e,r){return Math.min(Math.round(t*e),r-1)}function Sm(t,e,r,i){return i?Math.max(0,r-1-Math.round(t*e)):Math.min(Math.round(t*e),r-1)}var Ae=class t extends Q{static defaultProps={...Q.defaultProps,data:null,dimension:"2d",format:"rgba8unorm",width:void 0,height:void 0,depth:1,mipmaps:!0,compressed:!1,usage:0,mipLevels:void 0,samples:void 0,type:void 0,sampler:{},view:void 0};static COPY_SRC=1;static COPY_DST=2;static TEXTURE_BINDING=4;static STORAGE_BINDING=8;static RENDER_ATTACHMENT=16;get[Symbol.toStringTag](){return"Texture"}dimension;format;width;height;depth;updateTimestamp;constructor(e,r,i=t.defaultProps){super(e,r,i),this.dimension=this.props.dimension,this.format=this.props.format,this.width=this.props.width,this.height=this.props.height,this.depth=this.props.depth,this.updateTimestamp=e.incrementTimestamp()}};var vi=class t extends Q{static defaultProps={...Q.defaultProps,format:void 0,dimension:void 0,aspect:"all",baseMipLevel:0,mipLevelCount:void 0,baseArrayLayer:0,arrayLayerCount:void 0};get[Symbol.toStringTag](){return"TextureView"}constructor(e,r){super(e,r,t.defaultProps)}};function Em(t,e,r){let i="",s=e.split(/\r?\n/),n=t.slice().sort((o,a)=>o.lineNum-a.lineNum);switch(r?.showSourceCode||"no"){case"all":let o=0;for(let a=1;a<=s.length;a++)for(i+=wm(s[a-1],a,r);n.length>o&&n[o].lineNum===a;){let c=n[o++];i+=Am(c,s,c.lineNum,{...r,inlineSource:!1})}return i;case"issues":case"no":for(let a of t)i+=Am(a,s,a.lineNum,{inlineSource:r?.showSourceCode!=="no"});return i}}function Am(t,e,r,i){if(i?.inlineSource){let s=w1(e,r),n=t.linePos>0?`${" ".repeat(t.linePos+5)}^^^
`:"";return`
${s}${n}${t.type.toUpperCase()}: ${t.message}
`}return i?.html?` ${t.type.toUpperCase()}: ${t.message}
`:`${t.type.toUpperCase()}: ${t.message}`}function w1(t,e,r){let i="";for(let s=e-2;s<=e;s++){let n=t[s-1];n!==void 0&&(i+=wm(n,e,r))}return i}function wm(t,e,r){let i=r?.html?R1(t):t;return`${P1(String(e),4)}: ${i}${r?.html?"
":`
-`}`}function P1(t,e){let r="";for(let i=t.length;i",">").replaceAll('"',""").replaceAll("'","'")}function yf(t,e){return{name:C1(t,e),language:"glsl",version:M1(t)}}function C1(t,e="unnamed"){let i=/#define[\s*]SHADER_NAME[\s*]([A-Za-z0-9_-]+)[\s*]/.exec(t);return i?i[1]:e}function M1(t){let e=100,r=t.match(/[^\s]+/g);if(r&&r.length>=2&&r[0]==="#version"){let i=parseInt(r[1],10);Number.isFinite(i)&&(e=i)}return e}var bi=class t extends Q{static defaultProps={...Q.defaultProps,language:"auto",stage:void 0,source:"",sourceMap:null,entryPoint:"main",debug:"errors"};get[Symbol.toStringTag](){return"Shader"}stage;source;compilationStatus="pending";constructor(e,r){super(e,{id:I1(r),...r},t.defaultProps),this.stage=this.props.stage,this.source=this.props.source}getCompilationInfoSync(){return null}getTranslatedSource(){return null}async debugShader(e=this.props.debug){switch(e){case"never":return;case"errors":if(this.compilationStatus==="success")return;break;case"warnings":case"always":break}let r=await this.getCompilationInfo();this.props.debug==="warnings"&&r?.length===0||this._displayShaderLog(r)}_displayShaderLog(e){if(typeof document>"u"||!document?.createElement)return;let r=yf(this.source).name,i=`${this.stage} ${r}`,s=Em(e,this.source,{showSourceCode:"all",html:!0}),n=this.getTranslatedSource();n&&(s+=`
Translated Source
${n}
`);let o=document.createElement("Button");o.innerHTML=`
+`}`}function P1(t,e){let r="";for(let i=t.length;i",">").replaceAll('"',""").replaceAll("'","'")}function _f(t,e){return{name:C1(t,e),language:"glsl",version:M1(t)}}function C1(t,e="unnamed"){let i=/#define[\s*]SHADER_NAME[\s*]([A-Za-z0-9_-]+)[\s*]/.exec(t);return i?i[1]:e}function M1(t){let e=100,r=t.match(/[^\s]+/g);if(r&&r.length>=2&&r[0]==="#version"){let i=parseInt(r[1],10);Number.isFinite(i)&&(e=i)}return e}var bi=class t extends Q{static defaultProps={...Q.defaultProps,language:"auto",stage:void 0,source:"",sourceMap:null,entryPoint:"main",debug:"errors"};get[Symbol.toStringTag](){return"Shader"}stage;source;compilationStatus="pending";constructor(e,r){super(e,{id:I1(r),...r},t.defaultProps),this.stage=this.props.stage,this.source=this.props.source}getCompilationInfoSync(){return null}getTranslatedSource(){return null}async debugShader(e=this.props.debug){switch(e){case"never":return;case"errors":if(this.compilationStatus==="success")return;break;case"warnings":case"always":break}let r=await this.getCompilationInfo();this.props.debug==="warnings"&&r?.length===0||this._displayShaderLog(r)}_displayShaderLog(e){if(typeof document>"u"||!document?.createElement)return;let r=_f(this.source).name,i=`${this.stage} ${r}`,s=Em(e,this.source,{showSourceCode:"all",html:!0}),n=this.getTranslatedSource();n&&(s+=`
Translated Source
${n}
`);let o=document.createElement("Button");o.innerHTML=`
Shader Compilation Error in ${i}
${s}
-
`,o.style.top="10px",o.style.left="10px",o.style.position="absolute",o.style.zIndex="9999",o.style.width="100%",o.style.textAlign="left",document.body.appendChild(o);let a=document.getElementsByClassName("luma-compiler-log-error");a[0]?.scrollIntoView&&a[0].scrollIntoView(),o.onclick=()=>{let c=`data:text/plain,${encodeURIComponent(this.source)}`;navigator.clipboard.writeText(c)}}};function I1(t){return yf(t.source).name||t.id||Fe(`unnamed ${t.stage}-shader`)}var Si=class t extends Q{static defaultProps={...Q.defaultProps,type:"color-sampler",addressModeU:"clamp-to-edge",addressModeV:"clamp-to-edge",addressModeW:"clamp-to-edge",magFilter:"nearest",minFilter:"nearest",mipmapFilter:"nearest",lodMinClamp:0,lodMaxClamp:32,compare:"less-equal",maxAnisotropy:1};get[Symbol.toStringTag](){return"Sampler"}constructor(e,r){super(e,r,t.defaultProps)}};var Ai=class t extends Q{static defaultProps={...Q.defaultProps,width:1,height:1,colorAttachments:[],depthStencilAttachment:null};get[Symbol.toStringTag](){return"Framebuffer"}width;height;colorAttachments=[];depthStencilAttachment=null;constructor(e,r={}){super(e,r,t.defaultProps),this.width=this.props.width,this.height=this.props.height}resize(e){let r=!e;if(e){let[i,s]=Array.isArray(e)?e:[e.width,e.height];r=r||s!==this.height||i!==this.width,this.width=i,this.height=s}r&&(O.log(2,`Resizing framebuffer ${this.id} to ${this.width}x${this.height}`)(),this.resizeAttachments(this.width,this.height))}autoCreateAttachmentTextures(){if(this.props.colorAttachments.length===0&&!this.props.depthStencilAttachment)throw new Error("Framebuffer has noattachments");this.colorAttachments=this.props.colorAttachments.map(r=>{if(typeof r=="string"){let i=this.createColorTexture(r);return this.attachResource(i),i.view}return r instanceof Ae?r.view:r});let e=this.props.depthStencilAttachment;if(e)if(typeof e=="string"){let r=this.createDepthStencilTexture(e);this.attachResource(r),this.depthStencilAttachment=r.view}else e instanceof Ae?this.depthStencilAttachment=e.view:this.depthStencilAttachment=e}createColorTexture(e){return this.device.createTexture({id:"color-attachment",usage:Ae.RENDER_ATTACHMENT,format:e,width:this.width,height:this.height})}createDepthStencilTexture(e){return this.device.createTexture({id:"depth-stencil-attachment",usage:Ae.RENDER_ATTACHMENT,format:e,width:this.width,height:this.height})}resizeAttachments(e,r){for(let i=0;i":["f32",2],"vec3":["f32",3],"vec4":["f32",4],f16:["f16",1],"vec2":["f16",2],"vec3":["f16",3],"vec4":["f16",4],i32:["i32",1],"vec2":["i32",2],"vec3":["i32",3],"vec4":["i32",4],u32:["u32",1],"vec2":["u32",2],"vec3":["u32",3],"vec4":["u32",4]},F1={f32:4,f16:2,i32:4,u32:4};function xf(t){let e;t.endsWith("-webgl")&&(t.replace("-webgl",""),e=!0);let[r,i]=t.split("x"),s=r,n=i?parseInt(i):1,o=oc(s),a={type:s,components:n,byteLength:o.byteLength*n,integer:o.integer,signed:o.signed,normalized:o.normalized};return e&&(a.webglOnly=!0),a}function lc(t,e){let r={};for(let i of t.attributes)r[i.name]=D1(t,e,i.name);return r}function Rm(t,e,r=16){let i=lc(t,e),s=new Array(r).fill(null);for(let n of Object.values(i))s[n.location]=n;return s}function D1(t,e,r){let i=L1(t,r),s=k1(e,r);if(!i)return null;let n=Pm(i.type),o=s?.vertexFormat||n.defaultVertexFormat,a=xf(o);return{attributeName:s?.attributeName||i.name,bufferName:s?.bufferName||i.name,location:i.location,shaderType:i.type,shaderDataType:n.dataType,shaderComponents:n.components,vertexFormat:o,bufferDataType:a.type,bufferComponents:a.components,normalized:a.normalized,integer:n.integer,stepMode:s?.stepMode||i.stepMode,byteOffset:s?.byteOffset||0,byteStride:s?.byteStride||0}}function L1(t,e){let r=t.attributes.find(i=>i.name===e);return r||O.warn(`shader layout attribute "${e}" not present in shader`),r||null}function k1(t,e){B1(t);let r=U1(t,e);return r||(r=z1(t,e),r)?r:(O.warn(`layout for attribute "${e}" not present in buffer layout`),null)}function B1(t){for(let e of t)(e.attributes&&e.format||!e.attributes&&!e.format)&&O.warn(`BufferLayout ${name} must have either 'attributes' or 'format' field`)}function U1(t,e){for(let r of t)if(r.format&&r.name===e)return{attributeName:r.name,bufferName:e,stepMode:r.stepMode,vertexFormat:r.format,byteOffset:0,byteStride:r.byteStride||0};return null}function z1(t,e){for(let r of t){let i=r.byteStride;if(typeof r.byteStride!="number")for(let n of r.attributes||[]){let o=xf(n.format);i+=o.byteLength}let s=r.attributes?.find(n=>n.attribute===e);if(s)return{attributeName:s.attribute,bufferName:r.name,stepMode:r.stepMode,vertexFormat:s.format,byteOffset:s.byteOffset,byteStride:i}}return null}function Tf(t,e){let r={...t,attributes:t.attributes.map(i=>({...i}))};for(let i of e?.attributes||[]){let s=r.attributes.find(n=>n.name===i.name);s?(s.type=i.type||s.type,s.stepMode=i.stepMode||s.stepMode):O.warn(`shader layout attribute ${i.name} not present in shader`)}return r}var Un=class t extends Q{static defaultProps={...Q.defaultProps,renderPipeline:null};get[Symbol.toStringTag](){return"VertexArray"}maxVertexAttributes;attributeInfos;indexBuffer=null;attributes;constructor(e,r){super(e,r,t.defaultProps),this.maxVertexAttributes=e.limits.maxVertexAttributes,this.attributes=new Array(this.maxVertexAttributes).fill(null),this.attributeInfos=Rm(r.renderPipeline.shaderLayout,r.renderPipeline.bufferLayout,this.maxVertexAttributes)}setConstantWebGL(e,r){throw new Error("constant attributes not supported")}};var zn=class t extends Q{static defaultProps={...Q.defaultProps,layout:void 0,buffers:{}};get[Symbol.toStringTag](){return"TransformFeedback"}constructor(e,r){super(e,r,t.defaultProps)}};var Vn=class t extends Q{static defaultProps={...Q.defaultProps,type:void 0,count:void 0};get[Symbol.toStringTag](){return"QuerySet"}constructor(e,r){super(e,r,t.defaultProps)}};var V1={f32:{type:"f32",components:1},i32:{type:"i32",components:1},u32:{type:"u32",components:1},"vec2":{type:"f32",components:2},"vec3":{type:"f32",components:3},"vec4":{type:"f32",components:4},"vec2":{type:"i32",components:2},"vec3":{type:"i32",components:3},"vec4":{type:"i32",components:4},"vec2":{type:"u32",components:2},"vec3":{type:"u32",components:3},"vec4":{type:"u32",components:4},"mat2x2":{type:"f32",components:4},"mat2x3":{type:"f32",components:6},"mat2x4":{type:"f32",components:8},"mat3x2":{type:"f32",components:6},"mat3x3":{type:"f32",components:9},"mat3x4":{type:"f32",components:12},"mat4x2":{type:"f32",components:8},"mat4x3":{type:"f32",components:12},"mat4x4":{type:"f32",components:16}};function Cm(t){let e=V1[t];return ee(t),e}function Mm(t,e){switch(e){case 1:return t;case 2:return t+t%2;default:return t+(4-t%4)%4}}var uc;function fc(t){return(!uc||uc.byteLengths.type==="uniform"&&s.name===e?.name);if(!r)throw new Error(e?.name);let i=r;for(let s of i.uniforms||[])this.bindingLayout[s.name]=s}}setUniforms(e){for(let[r,i]of Object.entries(e))this._setUniform(r,i),this.needsRedraw||this.setNeedsRedraw(`${this.name}.${r}=${i}`)}setNeedsRedraw(e){this.needsRedraw=this.needsRedraw||e}getAllUniforms(){return this.modifiedUniforms={},this.needsRedraw=!1,this.uniforms||{}}_setUniform(e,r){Om(this.uniforms[e],r)||(this.uniforms[e]=Nm(r),this.modifiedUniforms[e]=!0,this.modified=!0)}};var Wn=class{uniformBlocks=new Map;uniformBufferLayouts=new Map;uniformBuffers=new Map;constructor(e){for(let[r,i]of Object.entries(e)){let s=r,n=new hc(i.uniformTypes||{});this.uniformBufferLayouts.set(s,n);let o=new dc({name:r});o.setUniforms(i.defaultUniforms||{}),this.uniformBlocks.set(s,o)}}destroy(){for(let e of this.uniformBuffers.values())e.destroy()}setUniforms(e){for(let[r,i]of Object.entries(e))this.uniformBlocks.get(r).setUniforms(i);this.updateUniformBuffers()}getUniformBufferByteLength(e){return this.uniformBufferLayouts.get(e).byteLength}getUniformBufferData(e){let r=this.uniformBlocks.get(e).getAllUniforms();return this.uniformBufferLayouts.get(e).getData(r)}createUniformBuffer(e,r,i){i&&this.setUniforms(i);let s=this.getUniformBufferByteLength(r),n=e.createBuffer({usage:ie.UNIFORM|ie.COPY_DST,byteLength:s}),o=this.getUniformBufferData(r);return n.write(o),n}getManagedUniformBuffer(e,r){if(!this.uniformBuffers.get(r)){let i=this.getUniformBufferByteLength(r),s=e.createBuffer({usage:ie.UNIFORM|ie.COPY_DST,byteLength:i});this.uniformBuffers.set(r,s)}return this.uniformBuffers.get(r)}updateUniformBuffers(){let e=!1;for(let r of this.uniformBlocks.keys()){let i=this.updateUniformBuffer(r);e||=i}return e&&O.log(3,`UniformStore.updateUniformBuffers(): ${e}`)(),e}updateUniformBuffer(e){let r=this.uniformBlocks.get(e),i=this.uniformBuffers.get(e),s=!1;if(i&&r.needsRedraw){s||=r.needsRedraw;let n=this.getUniformBufferData(e);this.uniformBuffers.get(e).write(n);let a=this.uniformBlocks.get(e).getAllUniforms();O.log(4,`Writing to uniform buffer ${String(e)}`,n,a)()}return s}};function pc(t){let e=ArrayBuffer.isView(t)?t.constructor:t;switch(e){case Float32Array:return"float32";case Uint16Array:return"uint16";case Uint32Array:return"uint32";case Uint8Array:case Uint8ClampedArray:return"uint8";case Int8Array:return"sint8";case Int16Array:return"sint16";case Int32Array:return"sint32";default:throw new Error(e.constructor.name)}}function Hn(t){switch(t){case"float32":return Float32Array;case"uint32":return Uint32Array;case"sint32":return Int32Array;case"uint16":case"unorm16":return Uint16Array;case"sint16":case"snorm16":return Int16Array;case"uint8":case"unorm8":return Uint8Array;case"sint8":case"snorm8":return Int8Array;default:throw new Error(t)}}function Sf(t,e,r){if(!e||e>4)throw new Error(`size ${e}`);let i=e,s=pc(t);if(s==="uint8"||s==="sint8"){if(i===1||i===3)throw new Error(`size: ${e}`);return r&&(s=s.replace("int","norm")),`${s}x${i}`}if(s==="uint16"||s==="sint16"){if(i===1||i===3)throw new Error(`size: ${e}`);return r&&(s=s.replace("int","norm")),`${s}x${i}`}return i===1?s:`${s}x${i}`}function Fm(t){return kr(t)!==null||typeof t=="number"||typeof t=="boolean"}function jn(t){let e={bindings:{},uniforms:{}};return Object.keys(t).forEach(r=>{let i=t[r];Fm(i)?e.uniforms[r]=i:e.bindings[r]=i}),e}function Af(t,e,r){let{removedProps:i={},deprecatedProps:s={},replacedProps:n={}}=r;for(let a in i)if(a in e){let l=i[a]?`${t}.${i[a]}`:"N/A";O.removed(`${t}.${a}`,l)()}for(let a in s)if(a in e){let c=s[a];O.deprecated(`${t}.${a}`,`${t}.${c}`)()}let o=null;for(let[a,c]of Object.entries(n))a in e&&(O.deprecated(`${t}.${a}`,`${t}.${c}`)(),o=o||Object.assign({},e),o[c]=e[a],delete o[a]);return o||e}var W1="";async function Ef(t,e){return await new Promise((r,i)=>{try{let s=new Image;s.onload=()=>r(s),s.onerror=()=>i(new Error(`Could not load image ${t}.`)),s.crossOrigin=e?.crossOrigin||"anonymous",s.src=t.startsWith("http")?t:W1+t}catch(s){i(s)}})}async function Xn(t,e){let r=document.getElementsByTagName("head")[0];if(!r)throw new Error("loadScript");let i=document.createElement("script");return i.setAttribute("type","text/javascript"),i.setAttribute("src",t),e&&(i.id=e),new Promise((s,n)=>{i.onload=s,i.onerror=o=>n(new Error(`Unable to load script '${t}': ${o}`)),r.appendChild(i)})}function $n(t,e,r){if(t===e)return!0;if(!r||!t||!e)return!1;if(Array.isArray(t)){if(!Array.isArray(e)||t.length!==e.length)return!1;for(let i=0;i>="})(Kn||(Kn={}));(function(t){function e(r){let i=r;if(i=="parse")throw new Error("Invalid value for AssignOperator");return t[i]}t.parse=e})(Kn||(Kn={}));var Ff=class extends de{constructor(e,r,i){super(),this.operator=e,this.variable=r,this.value=i}get astNodeType(){return"assign"}},Df=class extends de{constructor(e,r){super(),this.name=e,this.args=r}get astNodeType(){return"call"}},Lf=class extends de{constructor(e,r){super(),this.body=e,this.continuing=r}get astNodeType(){return"loop"}},kf=class extends de{constructor(e,r){super(),this.condition=e,this.body=r}get astNodeType(){return"body"}},Bf=class extends de{constructor(e,r,i,s){super(),this.condition=e,this.body=r,this.elseif=i,this.else=s}get astNodeType(){return"if"}},Uf=class extends de{constructor(e){super(),this.value=e}get astNodeType(){return"return"}},zf=class extends de{constructor(e){super(),this.name=e}get astNodeType(){return"enable"}},xc=class extends de{constructor(e,r){super(),this.name=e,this.type=r}get astNodeType(){return"alias"}},Vf=class extends de{constructor(){super()}get astNodeType(){return"discard"}},Wf=class extends de{constructor(){super()}get astNodeType(){return"break"}},Hf=class extends de{constructor(){super()}get astNodeType(){return"continue"}},mr=class extends de{constructor(e){super(),this.name=e}get astNodeType(){return"type"}get isStruct(){return!1}get isArray(){return!1}},pr=class extends mr{constructor(e,r){super(e),this.members=r}get astNodeType(){return"struct"}get isStruct(){return!0}getMemberIndex(e){for(let r=0;r":return this.left.evaluate(e)>this.right.evaluate(e)?1:0;case"<=":return this.left.evaluate(e)<=this.right.evaluate(e)?1:0;case">=":return this.left.evaluate(e)>=this.right.evaluate(e)?1:0;case"&&":return this.left.evaluate(e)&&this.right.evaluate(e)?1:0;case"||":return this.left.evaluate(e)||this.right.evaluate(e)?1:0;default:throw new Error(`Unknown operator ${this.operator}`)}}},Pc=class extends gr{constructor(){super()}},Gf=class extends Pc{constructor(e,r){super(),this.selector=e,this.body=r}get astNodeType(){return"case"}},Zf=class extends Pc{constructor(e){super(),this.body=e}get astNodeType(){return"default"}},Jf=class extends gr{constructor(e,r,i){super(),this.name=e,this.type=r,this.attributes=i}get astNodeType(){return"argument"}},Qf=class extends gr{constructor(e,r){super(),this.condition=e,this.body=r}get astNodeType(){return"elseif"}},eh=class extends gr{constructor(e,r,i){super(),this.name=e,this.type=r,this.attributes=i}get astNodeType(){return"member"}},Rc=class extends gr{constructor(e,r){super(),this.name=e,this.value=r}get astNodeType(){return"attribute"}},I,w;(function(t){t[t.token=0]="token",t[t.keyword=1]="keyword",t[t.reserved=2]="reserved"})(w||(w={}));var E=class{constructor(e,r,i){this.name=e,this.type=r,this.rule=i}toString(){return this.name}},T=class{};I=T;T.none=new E("",w.reserved,"");T.eof=new E("EOF",w.token,"");T.reserved={asm:new E("asm",w.reserved,"asm"),bf16:new E("bf16",w.reserved,"bf16"),do:new E("do",w.reserved,"do"),enum:new E("enum",w.reserved,"enum"),f16:new E("f16",w.reserved,"f16"),f64:new E("f64",w.reserved,"f64"),handle:new E("handle",w.reserved,"handle"),i8:new E("i8",w.reserved,"i8"),i16:new E("i16",w.reserved,"i16"),i64:new E("i64",w.reserved,"i64"),mat:new E("mat",w.reserved,"mat"),premerge:new E("premerge",w.reserved,"premerge"),regardless:new E("regardless",w.reserved,"regardless"),typedef:new E("typedef",w.reserved,"typedef"),u8:new E("u8",w.reserved,"u8"),u16:new E("u16",w.reserved,"u16"),u64:new E("u64",w.reserved,"u64"),unless:new E("unless",w.reserved,"unless"),using:new E("using",w.reserved,"using"),vec:new E("vec",w.reserved,"vec"),void:new E("void",w.reserved,"void")};T.keywords={array:new E("array",w.keyword,"array"),atomic:new E("atomic",w.keyword,"atomic"),bool:new E("bool",w.keyword,"bool"),f32:new E("f32",w.keyword,"f32"),i32:new E("i32",w.keyword,"i32"),mat2x2:new E("mat2x2",w.keyword,"mat2x2"),mat2x3:new E("mat2x3",w.keyword,"mat2x3"),mat2x4:new E("mat2x4",w.keyword,"mat2x4"),mat3x2:new E("mat3x2",w.keyword,"mat3x2"),mat3x3:new E("mat3x3",w.keyword,"mat3x3"),mat3x4:new E("mat3x4",w.keyword,"mat3x4"),mat4x2:new E("mat4x2",w.keyword,"mat4x2"),mat4x3:new E("mat4x3",w.keyword,"mat4x3"),mat4x4:new E("mat4x4",w.keyword,"mat4x4"),ptr:new E("ptr",w.keyword,"ptr"),sampler:new E("sampler",w.keyword,"sampler"),sampler_comparison:new E("sampler_comparison",w.keyword,"sampler_comparison"),struct:new E("struct",w.keyword,"struct"),texture_1d:new E("texture_1d",w.keyword,"texture_1d"),texture_2d:new E("texture_2d",w.keyword,"texture_2d"),texture_2d_array:new E("texture_2d_array",w.keyword,"texture_2d_array"),texture_3d:new E("texture_3d",w.keyword,"texture_3d"),texture_cube:new E("texture_cube",w.keyword,"texture_cube"),texture_cube_array:new E("texture_cube_array",w.keyword,"texture_cube_array"),texture_multisampled_2d:new E("texture_multisampled_2d",w.keyword,"texture_multisampled_2d"),texture_storage_1d:new E("texture_storage_1d",w.keyword,"texture_storage_1d"),texture_storage_2d:new E("texture_storage_2d",w.keyword,"texture_storage_2d"),texture_storage_2d_array:new E("texture_storage_2d_array",w.keyword,"texture_storage_2d_array"),texture_storage_3d:new E("texture_storage_3d",w.keyword,"texture_storage_3d"),texture_depth_2d:new E("texture_depth_2d",w.keyword,"texture_depth_2d"),texture_depth_2d_array:new E("texture_depth_2d_array",w.keyword,"texture_depth_2d_array"),texture_depth_cube:new E("texture_depth_cube",w.keyword,"texture_depth_cube"),texture_depth_cube_array:new E("texture_depth_cube_array",w.keyword,"texture_depth_cube_array"),texture_depth_multisampled_2d:new E("texture_depth_multisampled_2d",w.keyword,"texture_depth_multisampled_2d"),texture_external:new E("texture_external",w.keyword,"texture_external"),u32:new E("u32",w.keyword,"u32"),vec2:new E("vec2",w.keyword,"vec2"),vec3:new E("vec3",w.keyword,"vec3"),vec4:new E("vec4",w.keyword,"vec4"),bitcast:new E("bitcast",w.keyword,"bitcast"),block:new E("block",w.keyword,"block"),break:new E("break",w.keyword,"break"),case:new E("case",w.keyword,"case"),continue:new E("continue",w.keyword,"continue"),continuing:new E("continuing",w.keyword,"continuing"),default:new E("default",w.keyword,"default"),discard:new E("discard",w.keyword,"discard"),else:new E("else",w.keyword,"else"),enable:new E("enable",w.keyword,"enable"),fallthrough:new E("fallthrough",w.keyword,"fallthrough"),false:new E("false",w.keyword,"false"),fn:new E("fn",w.keyword,"fn"),for:new E("for",w.keyword,"for"),function:new E("function",w.keyword,"function"),if:new E("if",w.keyword,"if"),let:new E("let",w.keyword,"let"),const:new E("const",w.keyword,"const"),loop:new E("loop",w.keyword,"loop"),while:new E("while",w.keyword,"while"),private:new E("private",w.keyword,"private"),read:new E("read",w.keyword,"read"),read_write:new E("read_write",w.keyword,"read_write"),return:new E("return",w.keyword,"return"),storage:new E("storage",w.keyword,"storage"),switch:new E("switch",w.keyword,"switch"),true:new E("true",w.keyword,"true"),alias:new E("alias",w.keyword,"alias"),type:new E("type",w.keyword,"type"),uniform:new E("uniform",w.keyword,"uniform"),var:new E("var",w.keyword,"var"),override:new E("override",w.keyword,"override"),workgroup:new E("workgroup",w.keyword,"workgroup"),write:new E("write",w.keyword,"write"),r8unorm:new E("r8unorm",w.keyword,"r8unorm"),r8snorm:new E("r8snorm",w.keyword,"r8snorm"),r8uint:new E("r8uint",w.keyword,"r8uint"),r8sint:new E("r8sint",w.keyword,"r8sint"),r16uint:new E("r16uint",w.keyword,"r16uint"),r16sint:new E("r16sint",w.keyword,"r16sint"),r16float:new E("r16float",w.keyword,"r16float"),rg8unorm:new E("rg8unorm",w.keyword,"rg8unorm"),rg8snorm:new E("rg8snorm",w.keyword,"rg8snorm"),rg8uint:new E("rg8uint",w.keyword,"rg8uint"),rg8sint:new E("rg8sint",w.keyword,"rg8sint"),r32uint:new E("r32uint",w.keyword,"r32uint"),r32sint:new E("r32sint",w.keyword,"r32sint"),r32float:new E("r32float",w.keyword,"r32float"),rg16uint:new E("rg16uint",w.keyword,"rg16uint"),rg16sint:new E("rg16sint",w.keyword,"rg16sint"),rg16float:new E("rg16float",w.keyword,"rg16float"),rgba8unorm:new E("rgba8unorm",w.keyword,"rgba8unorm"),rgba8unorm_srgb:new E("rgba8unorm_srgb",w.keyword,"rgba8unorm_srgb"),rgba8snorm:new E("rgba8snorm",w.keyword,"rgba8snorm"),rgba8uint:new E("rgba8uint",w.keyword,"rgba8uint"),rgba8sint:new E("rgba8sint",w.keyword,"rgba8sint"),bgra8unorm:new E("bgra8unorm",w.keyword,"bgra8unorm"),bgra8unorm_srgb:new E("bgra8unorm_srgb",w.keyword,"bgra8unorm_srgb"),rgb10a2unorm:new E("rgb10a2unorm",w.keyword,"rgb10a2unorm"),rg11b10float:new E("rg11b10float",w.keyword,"rg11b10float"),rg32uint:new E("rg32uint",w.keyword,"rg32uint"),rg32sint:new E("rg32sint",w.keyword,"rg32sint"),rg32float:new E("rg32float",w.keyword,"rg32float"),rgba16uint:new E("rgba16uint",w.keyword,"rgba16uint"),rgba16sint:new E("rgba16sint",w.keyword,"rgba16sint"),rgba16float:new E("rgba16float",w.keyword,"rgba16float"),rgba32uint:new E("rgba32uint",w.keyword,"rgba32uint"),rgba32sint:new E("rgba32sint",w.keyword,"rgba32sint"),rgba32float:new E("rgba32float",w.keyword,"rgba32float"),static_assert:new E("static_assert",w.keyword,"static_assert")};T.tokens={decimal_float_literal:new E("decimal_float_literal",w.token,/((-?[0-9]*\.[0-9]+|-?[0-9]+\.[0-9]*)((e|E)(\+|-)?[0-9]+)?f?)|(-?[0-9]+(e|E)(\+|-)?[0-9]+f?)|([0-9]+f)/),hex_float_literal:new E("hex_float_literal",w.token,/-?0x((([0-9a-fA-F]*\.[0-9a-fA-F]+|[0-9a-fA-F]+\.[0-9a-fA-F]*)((p|P)(\+|-)?[0-9]+f?)?)|([0-9a-fA-F]+(p|P)(\+|-)?[0-9]+f?))/),int_literal:new E("int_literal",w.token,/-?0x[0-9a-fA-F]+|0i?|-?[1-9][0-9]*i?/),uint_literal:new E("uint_literal",w.token,/0x[0-9a-fA-F]+u|0u|[1-9][0-9]*u/),ident:new E("ident",w.token,/[a-zA-Z][0-9a-zA-Z_]*/),and:new E("and",w.token,"&"),and_and:new E("and_and",w.token,"&&"),arrow:new E("arrow ",w.token,"->"),attr:new E("attr",w.token,"@"),attr_left:new E("attr_left",w.token,"[["),attr_right:new E("attr_right",w.token,"]]"),forward_slash:new E("forward_slash",w.token,"/"),bang:new E("bang",w.token,"!"),bracket_left:new E("bracket_left",w.token,"["),bracket_right:new E("bracket_right",w.token,"]"),brace_left:new E("brace_left",w.token,"{"),brace_right:new E("brace_right",w.token,"}"),colon:new E("colon",w.token,":"),comma:new E("comma",w.token,","),equal:new E("equal",w.token,"="),equal_equal:new E("equal_equal",w.token,"=="),not_equal:new E("not_equal",w.token,"!="),greater_than:new E("greater_than",w.token,">"),greater_than_equal:new E("greater_than_equal",w.token,">="),shift_right:new E("shift_right",w.token,">>"),less_than:new E("less_than",w.token,"<"),less_than_equal:new E("less_than_equal",w.token,"<="),shift_left:new E("shift_left",w.token,"<<"),modulo:new E("modulo",w.token,"%"),minus:new E("minus",w.token,"-"),minus_minus:new E("minus_minus",w.token,"--"),period:new E("period",w.token,"."),plus:new E("plus",w.token,"+"),plus_plus:new E("plus_plus",w.token,"++"),or:new E("or",w.token,"|"),or_or:new E("or_or",w.token,"||"),paren_left:new E("paren_left",w.token,"("),paren_right:new E("paren_right",w.token,")"),semicolon:new E("semicolon",w.token,";"),star:new E("star",w.token,"*"),tilde:new E("tilde",w.token,"~"),underscore:new E("underscore",w.token,"_"),xor:new E("xor",w.token,"^"),plus_equal:new E("plus_equal",w.token,"+="),minus_equal:new E("minus_equal",w.token,"-="),times_equal:new E("times_equal",w.token,"*="),division_equal:new E("division_equal",w.token,"/="),modulo_equal:new E("modulo_equal",w.token,"%="),and_equal:new E("and_equal",w.token,"&="),or_equal:new E("or_equal",w.token,"|="),xor_equal:new E("xor_equal",w.token,"^="),shift_right_equal:new E("shift_right_equal",w.token,">>="),shift_left_equal:new E("shift_left_equal",w.token,"<<=")};T.storage_class=[I.keywords.function,I.keywords.private,I.keywords.workgroup,I.keywords.uniform,I.keywords.storage];T.access_mode=[I.keywords.read,I.keywords.write,I.keywords.read_write];T.sampler_type=[I.keywords.sampler,I.keywords.sampler_comparison];T.sampled_texture_type=[I.keywords.texture_1d,I.keywords.texture_2d,I.keywords.texture_2d_array,I.keywords.texture_3d,I.keywords.texture_cube,I.keywords.texture_cube_array];T.multisampled_texture_type=[I.keywords.texture_multisampled_2d];T.storage_texture_type=[I.keywords.texture_storage_1d,I.keywords.texture_storage_2d,I.keywords.texture_storage_2d_array,I.keywords.texture_storage_3d];T.depth_texture_type=[I.keywords.texture_depth_2d,I.keywords.texture_depth_2d_array,I.keywords.texture_depth_cube,I.keywords.texture_depth_cube_array,I.keywords.texture_depth_multisampled_2d];T.texture_external_type=[I.keywords.texture_external];T.any_texture_type=[...I.sampled_texture_type,...I.multisampled_texture_type,...I.storage_texture_type,...I.depth_texture_type,...I.texture_external_type];T.texel_format=[I.keywords.r8unorm,I.keywords.r8snorm,I.keywords.r8uint,I.keywords.r8sint,I.keywords.r16uint,I.keywords.r16sint,I.keywords.r16float,I.keywords.rg8unorm,I.keywords.rg8snorm,I.keywords.rg8uint,I.keywords.rg8sint,I.keywords.r32uint,I.keywords.r32sint,I.keywords.r32float,I.keywords.rg16uint,I.keywords.rg16sint,I.keywords.rg16float,I.keywords.rgba8unorm,I.keywords.rgba8unorm_srgb,I.keywords.rgba8snorm,I.keywords.rgba8uint,I.keywords.rgba8sint,I.keywords.bgra8unorm,I.keywords.bgra8unorm_srgb,I.keywords.rgb10a2unorm,I.keywords.rg11b10float,I.keywords.rg32uint,I.keywords.rg32sint,I.keywords.rg32float,I.keywords.rgba16uint,I.keywords.rgba16sint,I.keywords.rgba16float,I.keywords.rgba32uint,I.keywords.rgba32sint,I.keywords.rgba32float];T.const_literal=[I.tokens.int_literal,I.tokens.uint_literal,I.tokens.decimal_float_literal,I.tokens.hex_float_literal,I.keywords.true,I.keywords.false];T.literal_or_ident=[I.tokens.ident,I.tokens.int_literal,I.tokens.uint_literal,I.tokens.decimal_float_literal,I.tokens.hex_float_literal];T.element_count_expression=[I.tokens.int_literal,I.tokens.uint_literal,I.tokens.ident];T.template_types=[I.keywords.vec2,I.keywords.vec3,I.keywords.vec4,I.keywords.mat2x2,I.keywords.mat2x3,I.keywords.mat2x4,I.keywords.mat3x2,I.keywords.mat3x3,I.keywords.mat3x4,I.keywords.mat4x2,I.keywords.mat4x3,I.keywords.mat4x4,I.keywords.atomic,I.keywords.bitcast,...I.any_texture_type];T.attribute_name=[I.tokens.ident,I.keywords.block];T.assignment_operators=[I.tokens.equal,I.tokens.plus_equal,I.tokens.minus_equal,I.tokens.times_equal,I.tokens.division_equal,I.tokens.modulo_equal,I.tokens.and_equal,I.tokens.or_equal,I.tokens.xor_equal,I.tokens.shift_right_equal,I.tokens.shift_left_equal];T.increment_operators=[I.tokens.plus_plus,I.tokens.minus_minus];var Cc=class{constructor(e,r,i){this.type=e,this.lexeme=r,this.line=i}toString(){return this.lexeme}isTemplateType(){return T.template_types.indexOf(this.type)!=-1}isArrayType(){return this.type==T.keywords.array}isArrayOrTemplateType(){return this.isArrayType()||this.isTemplateType()}},th=class{constructor(e){this._tokens=[],this._start=0,this._current=0,this._line=1,this._source=e??""}scanTokens(){for(;!this._isAtEnd();)if(this._start=this._current,!this.scanToken())throw`Invalid syntax at line ${this._line}`;return this._tokens.push(new Cc(T.eof,"",this._line)),this._tokens}scanToken(){let e=this._advance();if(e==`
+`,o.style.top="10px",o.style.left="10px",o.style.position="absolute",o.style.zIndex="9999",o.style.width="100%",o.style.textAlign="left",document.body.appendChild(o);let a=document.getElementsByClassName("luma-compiler-log-error");a[0]?.scrollIntoView&&a[0].scrollIntoView(),o.onclick=()=>{let c=`data:text/plain,${encodeURIComponent(this.source)}`;navigator.clipboard.writeText(c)}}};function I1(t){return _f(t.source).name||t.id||Fe(`unnamed ${t.stage}-shader`)}var Si=class t extends Q{static defaultProps={...Q.defaultProps,type:"color-sampler",addressModeU:"clamp-to-edge",addressModeV:"clamp-to-edge",addressModeW:"clamp-to-edge",magFilter:"nearest",minFilter:"nearest",mipmapFilter:"nearest",lodMinClamp:0,lodMaxClamp:32,compare:"less-equal",maxAnisotropy:1};get[Symbol.toStringTag](){return"Sampler"}constructor(e,r){super(e,r,t.defaultProps)}};var Ai=class t extends Q{static defaultProps={...Q.defaultProps,width:1,height:1,colorAttachments:[],depthStencilAttachment:null};get[Symbol.toStringTag](){return"Framebuffer"}width;height;colorAttachments=[];depthStencilAttachment=null;constructor(e,r={}){super(e,r,t.defaultProps),this.width=this.props.width,this.height=this.props.height}resize(e){let r=!e;if(e){let[i,s]=Array.isArray(e)?e:[e.width,e.height];r=r||s!==this.height||i!==this.width,this.width=i,this.height=s}r&&(O.log(2,`Resizing framebuffer ${this.id} to ${this.width}x${this.height}`)(),this.resizeAttachments(this.width,this.height))}autoCreateAttachmentTextures(){if(this.props.colorAttachments.length===0&&!this.props.depthStencilAttachment)throw new Error("Framebuffer has noattachments");this.colorAttachments=this.props.colorAttachments.map(r=>{if(typeof r=="string"){let i=this.createColorTexture(r);return this.attachResource(i),i.view}return r instanceof Ae?r.view:r});let e=this.props.depthStencilAttachment;if(e)if(typeof e=="string"){let r=this.createDepthStencilTexture(e);this.attachResource(r),this.depthStencilAttachment=r.view}else e instanceof Ae?this.depthStencilAttachment=e.view:this.depthStencilAttachment=e}createColorTexture(e){return this.device.createTexture({id:"color-attachment",usage:Ae.RENDER_ATTACHMENT,format:e,width:this.width,height:this.height})}createDepthStencilTexture(e){return this.device.createTexture({id:"depth-stencil-attachment",usage:Ae.RENDER_ATTACHMENT,format:e,width:this.width,height:this.height})}resizeAttachments(e,r){for(let i=0;i":["f32",2],"vec3":["f32",3],"vec4":["f32",4],f16:["f16",1],"vec2":["f16",2],"vec3":["f16",3],"vec4":["f16",4],i32:["i32",1],"vec2":["i32",2],"vec3":["i32",3],"vec4":["i32",4],u32:["u32",1],"vec2":["u32",2],"vec3":["u32",3],"vec4":["u32",4]},F1={f32:4,f16:2,i32:4,u32:4};function yf(t){let e;t.endsWith("-webgl")&&(t.replace("-webgl",""),e=!0);let[r,i]=t.split("x"),s=r,n=i?parseInt(i):1,o=oc(s),a={type:s,components:n,byteLength:o.byteLength*n,integer:o.integer,signed:o.signed,normalized:o.normalized};return e&&(a.webglOnly=!0),a}function lc(t,e){let r={};for(let i of t.attributes)r[i.name]=D1(t,e,i.name);return r}function Rm(t,e,r=16){let i=lc(t,e),s=new Array(r).fill(null);for(let n of Object.values(i))s[n.location]=n;return s}function D1(t,e,r){let i=L1(t,r),s=k1(e,r);if(!i)return null;let n=Pm(i.type),o=s?.vertexFormat||n.defaultVertexFormat,a=yf(o);return{attributeName:s?.attributeName||i.name,bufferName:s?.bufferName||i.name,location:i.location,shaderType:i.type,shaderDataType:n.dataType,shaderComponents:n.components,vertexFormat:o,bufferDataType:a.type,bufferComponents:a.components,normalized:a.normalized,integer:n.integer,stepMode:s?.stepMode||i.stepMode,byteOffset:s?.byteOffset||0,byteStride:s?.byteStride||0}}function L1(t,e){let r=t.attributes.find(i=>i.name===e);return r||O.warn(`shader layout attribute "${e}" not present in shader`),r||null}function k1(t,e){B1(t);let r=U1(t,e);return r||(r=z1(t,e),r)?r:(O.warn(`layout for attribute "${e}" not present in buffer layout`),null)}function B1(t){for(let e of t)(e.attributes&&e.format||!e.attributes&&!e.format)&&O.warn(`BufferLayout ${name} must have either 'attributes' or 'format' field`)}function U1(t,e){for(let r of t)if(r.format&&r.name===e)return{attributeName:r.name,bufferName:e,stepMode:r.stepMode,vertexFormat:r.format,byteOffset:0,byteStride:r.byteStride||0};return null}function z1(t,e){for(let r of t){let i=r.byteStride;if(typeof r.byteStride!="number")for(let n of r.attributes||[]){let o=yf(n.format);i+=o.byteLength}let s=r.attributes?.find(n=>n.attribute===e);if(s)return{attributeName:s.attribute,bufferName:r.name,stepMode:r.stepMode,vertexFormat:s.format,byteOffset:s.byteOffset,byteStride:i}}return null}function xf(t,e){let r={...t,attributes:t.attributes.map(i=>({...i}))};for(let i of e?.attributes||[]){let s=r.attributes.find(n=>n.name===i.name);s?(s.type=i.type||s.type,s.stepMode=i.stepMode||s.stepMode):O.warn(`shader layout attribute ${i.name} not present in shader`)}return r}var Un=class t extends Q{static defaultProps={...Q.defaultProps,renderPipeline:null};get[Symbol.toStringTag](){return"VertexArray"}maxVertexAttributes;attributeInfos;indexBuffer=null;attributes;constructor(e,r){super(e,r,t.defaultProps),this.maxVertexAttributes=e.limits.maxVertexAttributes,this.attributes=new Array(this.maxVertexAttributes).fill(null),this.attributeInfos=Rm(r.renderPipeline.shaderLayout,r.renderPipeline.bufferLayout,this.maxVertexAttributes)}setConstantWebGL(e,r){throw new Error("constant attributes not supported")}};var zn=class t extends Q{static defaultProps={...Q.defaultProps,layout:void 0,buffers:{}};get[Symbol.toStringTag](){return"TransformFeedback"}constructor(e,r){super(e,r,t.defaultProps)}};var Vn=class t extends Q{static defaultProps={...Q.defaultProps,type:void 0,count:void 0};get[Symbol.toStringTag](){return"QuerySet"}constructor(e,r){super(e,r,t.defaultProps)}};var V1={f32:{type:"f32",components:1},i32:{type:"i32",components:1},u32:{type:"u32",components:1},"vec2":{type:"f32",components:2},"vec3":{type:"f32",components:3},"vec4":{type:"f32",components:4},"vec2":{type:"i32",components:2},"vec3":{type:"i32",components:3},"vec4":{type:"i32",components:4},"vec2":{type:"u32",components:2},"vec3":{type:"u32",components:3},"vec4":{type:"u32",components:4},"mat2x2":{type:"f32",components:4},"mat2x3":{type:"f32",components:6},"mat2x4":{type:"f32",components:8},"mat3x2":{type:"f32",components:6},"mat3x3":{type:"f32",components:9},"mat3x4":{type:"f32",components:12},"mat4x2":{type:"f32",components:8},"mat4x3":{type:"f32",components:12},"mat4x4":{type:"f32",components:16}};function Cm(t){let e=V1[t];return ee(t),e}function Mm(t,e){switch(e){case 1:return t;case 2:return t+t%2;default:return t+(4-t%4)%4}}var uc;function fc(t){return(!uc||uc.byteLengths.type==="uniform"&&s.name===e?.name);if(!r)throw new Error(e?.name);let i=r;for(let s of i.uniforms||[])this.bindingLayout[s.name]=s}}setUniforms(e){for(let[r,i]of Object.entries(e))this._setUniform(r,i),this.needsRedraw||this.setNeedsRedraw(`${this.name}.${r}=${i}`)}setNeedsRedraw(e){this.needsRedraw=this.needsRedraw||e}getAllUniforms(){return this.modifiedUniforms={},this.needsRedraw=!1,this.uniforms||{}}_setUniform(e,r){Om(this.uniforms[e],r)||(this.uniforms[e]=Nm(r),this.modifiedUniforms[e]=!0,this.modified=!0)}};var Wn=class{uniformBlocks=new Map;uniformBufferLayouts=new Map;uniformBuffers=new Map;constructor(e){for(let[r,i]of Object.entries(e)){let s=r,n=new hc(i.uniformTypes||{});this.uniformBufferLayouts.set(s,n);let o=new dc({name:r});o.setUniforms(i.defaultUniforms||{}),this.uniformBlocks.set(s,o)}}destroy(){for(let e of this.uniformBuffers.values())e.destroy()}setUniforms(e){for(let[r,i]of Object.entries(e))this.uniformBlocks.get(r).setUniforms(i);this.updateUniformBuffers()}getUniformBufferByteLength(e){return this.uniformBufferLayouts.get(e).byteLength}getUniformBufferData(e){let r=this.uniformBlocks.get(e).getAllUniforms();return this.uniformBufferLayouts.get(e).getData(r)}createUniformBuffer(e,r,i){i&&this.setUniforms(i);let s=this.getUniformBufferByteLength(r),n=e.createBuffer({usage:ie.UNIFORM|ie.COPY_DST,byteLength:s}),o=this.getUniformBufferData(r);return n.write(o),n}getManagedUniformBuffer(e,r){if(!this.uniformBuffers.get(r)){let i=this.getUniformBufferByteLength(r),s=e.createBuffer({usage:ie.UNIFORM|ie.COPY_DST,byteLength:i});this.uniformBuffers.set(r,s)}return this.uniformBuffers.get(r)}updateUniformBuffers(){let e=!1;for(let r of this.uniformBlocks.keys()){let i=this.updateUniformBuffer(r);e||=i}return e&&O.log(3,`UniformStore.updateUniformBuffers(): ${e}`)(),e}updateUniformBuffer(e){let r=this.uniformBlocks.get(e),i=this.uniformBuffers.get(e),s=!1;if(i&&r.needsRedraw){s||=r.needsRedraw;let n=this.getUniformBufferData(e);this.uniformBuffers.get(e).write(n);let a=this.uniformBlocks.get(e).getAllUniforms();O.log(4,`Writing to uniform buffer ${String(e)}`,n,a)()}return s}};function pc(t){let e=ArrayBuffer.isView(t)?t.constructor:t;switch(e){case Float32Array:return"float32";case Uint16Array:return"uint16";case Uint32Array:return"uint32";case Uint8Array:case Uint8ClampedArray:return"uint8";case Int8Array:return"sint8";case Int16Array:return"sint16";case Int32Array:return"sint32";default:throw new Error(e.constructor.name)}}function Hn(t){switch(t){case"float32":return Float32Array;case"uint32":return Uint32Array;case"sint32":return Int32Array;case"uint16":case"unorm16":return Uint16Array;case"sint16":case"snorm16":return Int16Array;case"uint8":case"unorm8":return Uint8Array;case"sint8":case"snorm8":return Int8Array;default:throw new Error(t)}}function bf(t,e,r){if(!e||e>4)throw new Error(`size ${e}`);let i=e,s=pc(t);if(s==="uint8"||s==="sint8"){if(i===1||i===3)throw new Error(`size: ${e}`);return r&&(s=s.replace("int","norm")),`${s}x${i}`}if(s==="uint16"||s==="sint16"){if(i===1||i===3)throw new Error(`size: ${e}`);return r&&(s=s.replace("int","norm")),`${s}x${i}`}return i===1?s:`${s}x${i}`}function Fm(t){return kr(t)!==null||typeof t=="number"||typeof t=="boolean"}function jn(t){let e={bindings:{},uniforms:{}};return Object.keys(t).forEach(r=>{let i=t[r];Fm(i)?e.uniforms[r]=i:e.bindings[r]=i}),e}function Sf(t,e,r){let{removedProps:i={},deprecatedProps:s={},replacedProps:n={}}=r;for(let a in i)if(a in e){let l=i[a]?`${t}.${i[a]}`:"N/A";O.removed(`${t}.${a}`,l)()}for(let a in s)if(a in e){let c=s[a];O.deprecated(`${t}.${a}`,`${t}.${c}`)()}let o=null;for(let[a,c]of Object.entries(n))a in e&&(O.deprecated(`${t}.${a}`,`${t}.${c}`)(),o=o||Object.assign({},e),o[c]=e[a],delete o[a]);return o||e}var W1="";async function Af(t,e){return await new Promise((r,i)=>{try{let s=new Image;s.onload=()=>r(s),s.onerror=()=>i(new Error(`Could not load image ${t}.`)),s.crossOrigin=e?.crossOrigin||"anonymous",s.src=t.startsWith("http")?t:W1+t}catch(s){i(s)}})}async function Xn(t,e){let r=document.getElementsByTagName("head")[0];if(!r)throw new Error("loadScript");let i=document.createElement("script");return i.setAttribute("type","text/javascript"),i.setAttribute("src",t),e&&(i.id=e),new Promise((s,n)=>{i.onload=s,i.onerror=o=>n(new Error(`Unable to load script '${t}': ${o}`)),r.appendChild(i)})}function $n(t,e,r){if(t===e)return!0;if(!r||!t||!e)return!1;if(Array.isArray(t)){if(!Array.isArray(e)||t.length!==e.length)return!1;for(let i=0;i>="})(Kn||(Kn={}));(function(t){function e(r){let i=r;if(i=="parse")throw new Error("Invalid value for AssignOperator");return t[i]}t.parse=e})(Kn||(Kn={}));var Nf=class extends de{constructor(e,r,i){super(),this.operator=e,this.variable=r,this.value=i}get astNodeType(){return"assign"}},Ff=class extends de{constructor(e,r){super(),this.name=e,this.args=r}get astNodeType(){return"call"}},Df=class extends de{constructor(e,r){super(),this.body=e,this.continuing=r}get astNodeType(){return"loop"}},Lf=class extends de{constructor(e,r){super(),this.condition=e,this.body=r}get astNodeType(){return"body"}},kf=class extends de{constructor(e,r,i,s){super(),this.condition=e,this.body=r,this.elseif=i,this.else=s}get astNodeType(){return"if"}},Bf=class extends de{constructor(e){super(),this.value=e}get astNodeType(){return"return"}},Uf=class extends de{constructor(e){super(),this.name=e}get astNodeType(){return"enable"}},xc=class extends de{constructor(e,r){super(),this.name=e,this.type=r}get astNodeType(){return"alias"}},zf=class extends de{constructor(){super()}get astNodeType(){return"discard"}},Vf=class extends de{constructor(){super()}get astNodeType(){return"break"}},Wf=class extends de{constructor(){super()}get astNodeType(){return"continue"}},mr=class extends de{constructor(e){super(),this.name=e}get astNodeType(){return"type"}get isStruct(){return!1}get isArray(){return!1}},pr=class extends mr{constructor(e,r){super(e),this.members=r}get astNodeType(){return"struct"}get isStruct(){return!0}getMemberIndex(e){for(let r=0;r":return this.left.evaluate(e)>this.right.evaluate(e)?1:0;case"<=":return this.left.evaluate(e)<=this.right.evaluate(e)?1:0;case">=":return this.left.evaluate(e)>=this.right.evaluate(e)?1:0;case"&&":return this.left.evaluate(e)&&this.right.evaluate(e)?1:0;case"||":return this.left.evaluate(e)||this.right.evaluate(e)?1:0;default:throw new Error(`Unknown operator ${this.operator}`)}}},Pc=class extends gr{constructor(){super()}},qf=class extends Pc{constructor(e,r){super(),this.selector=e,this.body=r}get astNodeType(){return"case"}},Gf=class extends Pc{constructor(e){super(),this.body=e}get astNodeType(){return"default"}},Zf=class extends gr{constructor(e,r,i){super(),this.name=e,this.type=r,this.attributes=i}get astNodeType(){return"argument"}},Jf=class extends gr{constructor(e,r){super(),this.condition=e,this.body=r}get astNodeType(){return"elseif"}},Qf=class extends gr{constructor(e,r,i){super(),this.name=e,this.type=r,this.attributes=i}get astNodeType(){return"member"}},Rc=class extends gr{constructor(e,r){super(),this.name=e,this.value=r}get astNodeType(){return"attribute"}},I,w;(function(t){t[t.token=0]="token",t[t.keyword=1]="keyword",t[t.reserved=2]="reserved"})(w||(w={}));var E=class{constructor(e,r,i){this.name=e,this.type=r,this.rule=i}toString(){return this.name}},T=class{};I=T;T.none=new E("",w.reserved,"");T.eof=new E("EOF",w.token,"");T.reserved={asm:new E("asm",w.reserved,"asm"),bf16:new E("bf16",w.reserved,"bf16"),do:new E("do",w.reserved,"do"),enum:new E("enum",w.reserved,"enum"),f16:new E("f16",w.reserved,"f16"),f64:new E("f64",w.reserved,"f64"),handle:new E("handle",w.reserved,"handle"),i8:new E("i8",w.reserved,"i8"),i16:new E("i16",w.reserved,"i16"),i64:new E("i64",w.reserved,"i64"),mat:new E("mat",w.reserved,"mat"),premerge:new E("premerge",w.reserved,"premerge"),regardless:new E("regardless",w.reserved,"regardless"),typedef:new E("typedef",w.reserved,"typedef"),u8:new E("u8",w.reserved,"u8"),u16:new E("u16",w.reserved,"u16"),u64:new E("u64",w.reserved,"u64"),unless:new E("unless",w.reserved,"unless"),using:new E("using",w.reserved,"using"),vec:new E("vec",w.reserved,"vec"),void:new E("void",w.reserved,"void")};T.keywords={array:new E("array",w.keyword,"array"),atomic:new E("atomic",w.keyword,"atomic"),bool:new E("bool",w.keyword,"bool"),f32:new E("f32",w.keyword,"f32"),i32:new E("i32",w.keyword,"i32"),mat2x2:new E("mat2x2",w.keyword,"mat2x2"),mat2x3:new E("mat2x3",w.keyword,"mat2x3"),mat2x4:new E("mat2x4",w.keyword,"mat2x4"),mat3x2:new E("mat3x2",w.keyword,"mat3x2"),mat3x3:new E("mat3x3",w.keyword,"mat3x3"),mat3x4:new E("mat3x4",w.keyword,"mat3x4"),mat4x2:new E("mat4x2",w.keyword,"mat4x2"),mat4x3:new E("mat4x3",w.keyword,"mat4x3"),mat4x4:new E("mat4x4",w.keyword,"mat4x4"),ptr:new E("ptr",w.keyword,"ptr"),sampler:new E("sampler",w.keyword,"sampler"),sampler_comparison:new E("sampler_comparison",w.keyword,"sampler_comparison"),struct:new E("struct",w.keyword,"struct"),texture_1d:new E("texture_1d",w.keyword,"texture_1d"),texture_2d:new E("texture_2d",w.keyword,"texture_2d"),texture_2d_array:new E("texture_2d_array",w.keyword,"texture_2d_array"),texture_3d:new E("texture_3d",w.keyword,"texture_3d"),texture_cube:new E("texture_cube",w.keyword,"texture_cube"),texture_cube_array:new E("texture_cube_array",w.keyword,"texture_cube_array"),texture_multisampled_2d:new E("texture_multisampled_2d",w.keyword,"texture_multisampled_2d"),texture_storage_1d:new E("texture_storage_1d",w.keyword,"texture_storage_1d"),texture_storage_2d:new E("texture_storage_2d",w.keyword,"texture_storage_2d"),texture_storage_2d_array:new E("texture_storage_2d_array",w.keyword,"texture_storage_2d_array"),texture_storage_3d:new E("texture_storage_3d",w.keyword,"texture_storage_3d"),texture_depth_2d:new E("texture_depth_2d",w.keyword,"texture_depth_2d"),texture_depth_2d_array:new E("texture_depth_2d_array",w.keyword,"texture_depth_2d_array"),texture_depth_cube:new E("texture_depth_cube",w.keyword,"texture_depth_cube"),texture_depth_cube_array:new E("texture_depth_cube_array",w.keyword,"texture_depth_cube_array"),texture_depth_multisampled_2d:new E("texture_depth_multisampled_2d",w.keyword,"texture_depth_multisampled_2d"),texture_external:new E("texture_external",w.keyword,"texture_external"),u32:new E("u32",w.keyword,"u32"),vec2:new E("vec2",w.keyword,"vec2"),vec3:new E("vec3",w.keyword,"vec3"),vec4:new E("vec4",w.keyword,"vec4"),bitcast:new E("bitcast",w.keyword,"bitcast"),block:new E("block",w.keyword,"block"),break:new E("break",w.keyword,"break"),case:new E("case",w.keyword,"case"),continue:new E("continue",w.keyword,"continue"),continuing:new E("continuing",w.keyword,"continuing"),default:new E("default",w.keyword,"default"),discard:new E("discard",w.keyword,"discard"),else:new E("else",w.keyword,"else"),enable:new E("enable",w.keyword,"enable"),fallthrough:new E("fallthrough",w.keyword,"fallthrough"),false:new E("false",w.keyword,"false"),fn:new E("fn",w.keyword,"fn"),for:new E("for",w.keyword,"for"),function:new E("function",w.keyword,"function"),if:new E("if",w.keyword,"if"),let:new E("let",w.keyword,"let"),const:new E("const",w.keyword,"const"),loop:new E("loop",w.keyword,"loop"),while:new E("while",w.keyword,"while"),private:new E("private",w.keyword,"private"),read:new E("read",w.keyword,"read"),read_write:new E("read_write",w.keyword,"read_write"),return:new E("return",w.keyword,"return"),storage:new E("storage",w.keyword,"storage"),switch:new E("switch",w.keyword,"switch"),true:new E("true",w.keyword,"true"),alias:new E("alias",w.keyword,"alias"),type:new E("type",w.keyword,"type"),uniform:new E("uniform",w.keyword,"uniform"),var:new E("var",w.keyword,"var"),override:new E("override",w.keyword,"override"),workgroup:new E("workgroup",w.keyword,"workgroup"),write:new E("write",w.keyword,"write"),r8unorm:new E("r8unorm",w.keyword,"r8unorm"),r8snorm:new E("r8snorm",w.keyword,"r8snorm"),r8uint:new E("r8uint",w.keyword,"r8uint"),r8sint:new E("r8sint",w.keyword,"r8sint"),r16uint:new E("r16uint",w.keyword,"r16uint"),r16sint:new E("r16sint",w.keyword,"r16sint"),r16float:new E("r16float",w.keyword,"r16float"),rg8unorm:new E("rg8unorm",w.keyword,"rg8unorm"),rg8snorm:new E("rg8snorm",w.keyword,"rg8snorm"),rg8uint:new E("rg8uint",w.keyword,"rg8uint"),rg8sint:new E("rg8sint",w.keyword,"rg8sint"),r32uint:new E("r32uint",w.keyword,"r32uint"),r32sint:new E("r32sint",w.keyword,"r32sint"),r32float:new E("r32float",w.keyword,"r32float"),rg16uint:new E("rg16uint",w.keyword,"rg16uint"),rg16sint:new E("rg16sint",w.keyword,"rg16sint"),rg16float:new E("rg16float",w.keyword,"rg16float"),rgba8unorm:new E("rgba8unorm",w.keyword,"rgba8unorm"),rgba8unorm_srgb:new E("rgba8unorm_srgb",w.keyword,"rgba8unorm_srgb"),rgba8snorm:new E("rgba8snorm",w.keyword,"rgba8snorm"),rgba8uint:new E("rgba8uint",w.keyword,"rgba8uint"),rgba8sint:new E("rgba8sint",w.keyword,"rgba8sint"),bgra8unorm:new E("bgra8unorm",w.keyword,"bgra8unorm"),bgra8unorm_srgb:new E("bgra8unorm_srgb",w.keyword,"bgra8unorm_srgb"),rgb10a2unorm:new E("rgb10a2unorm",w.keyword,"rgb10a2unorm"),rg11b10float:new E("rg11b10float",w.keyword,"rg11b10float"),rg32uint:new E("rg32uint",w.keyword,"rg32uint"),rg32sint:new E("rg32sint",w.keyword,"rg32sint"),rg32float:new E("rg32float",w.keyword,"rg32float"),rgba16uint:new E("rgba16uint",w.keyword,"rgba16uint"),rgba16sint:new E("rgba16sint",w.keyword,"rgba16sint"),rgba16float:new E("rgba16float",w.keyword,"rgba16float"),rgba32uint:new E("rgba32uint",w.keyword,"rgba32uint"),rgba32sint:new E("rgba32sint",w.keyword,"rgba32sint"),rgba32float:new E("rgba32float",w.keyword,"rgba32float"),static_assert:new E("static_assert",w.keyword,"static_assert")};T.tokens={decimal_float_literal:new E("decimal_float_literal",w.token,/((-?[0-9]*\.[0-9]+|-?[0-9]+\.[0-9]*)((e|E)(\+|-)?[0-9]+)?f?)|(-?[0-9]+(e|E)(\+|-)?[0-9]+f?)|([0-9]+f)/),hex_float_literal:new E("hex_float_literal",w.token,/-?0x((([0-9a-fA-F]*\.[0-9a-fA-F]+|[0-9a-fA-F]+\.[0-9a-fA-F]*)((p|P)(\+|-)?[0-9]+f?)?)|([0-9a-fA-F]+(p|P)(\+|-)?[0-9]+f?))/),int_literal:new E("int_literal",w.token,/-?0x[0-9a-fA-F]+|0i?|-?[1-9][0-9]*i?/),uint_literal:new E("uint_literal",w.token,/0x[0-9a-fA-F]+u|0u|[1-9][0-9]*u/),ident:new E("ident",w.token,/[a-zA-Z][0-9a-zA-Z_]*/),and:new E("and",w.token,"&"),and_and:new E("and_and",w.token,"&&"),arrow:new E("arrow ",w.token,"->"),attr:new E("attr",w.token,"@"),attr_left:new E("attr_left",w.token,"[["),attr_right:new E("attr_right",w.token,"]]"),forward_slash:new E("forward_slash",w.token,"/"),bang:new E("bang",w.token,"!"),bracket_left:new E("bracket_left",w.token,"["),bracket_right:new E("bracket_right",w.token,"]"),brace_left:new E("brace_left",w.token,"{"),brace_right:new E("brace_right",w.token,"}"),colon:new E("colon",w.token,":"),comma:new E("comma",w.token,","),equal:new E("equal",w.token,"="),equal_equal:new E("equal_equal",w.token,"=="),not_equal:new E("not_equal",w.token,"!="),greater_than:new E("greater_than",w.token,">"),greater_than_equal:new E("greater_than_equal",w.token,">="),shift_right:new E("shift_right",w.token,">>"),less_than:new E("less_than",w.token,"<"),less_than_equal:new E("less_than_equal",w.token,"<="),shift_left:new E("shift_left",w.token,"<<"),modulo:new E("modulo",w.token,"%"),minus:new E("minus",w.token,"-"),minus_minus:new E("minus_minus",w.token,"--"),period:new E("period",w.token,"."),plus:new E("plus",w.token,"+"),plus_plus:new E("plus_plus",w.token,"++"),or:new E("or",w.token,"|"),or_or:new E("or_or",w.token,"||"),paren_left:new E("paren_left",w.token,"("),paren_right:new E("paren_right",w.token,")"),semicolon:new E("semicolon",w.token,";"),star:new E("star",w.token,"*"),tilde:new E("tilde",w.token,"~"),underscore:new E("underscore",w.token,"_"),xor:new E("xor",w.token,"^"),plus_equal:new E("plus_equal",w.token,"+="),minus_equal:new E("minus_equal",w.token,"-="),times_equal:new E("times_equal",w.token,"*="),division_equal:new E("division_equal",w.token,"/="),modulo_equal:new E("modulo_equal",w.token,"%="),and_equal:new E("and_equal",w.token,"&="),or_equal:new E("or_equal",w.token,"|="),xor_equal:new E("xor_equal",w.token,"^="),shift_right_equal:new E("shift_right_equal",w.token,">>="),shift_left_equal:new E("shift_left_equal",w.token,"<<=")};T.storage_class=[I.keywords.function,I.keywords.private,I.keywords.workgroup,I.keywords.uniform,I.keywords.storage];T.access_mode=[I.keywords.read,I.keywords.write,I.keywords.read_write];T.sampler_type=[I.keywords.sampler,I.keywords.sampler_comparison];T.sampled_texture_type=[I.keywords.texture_1d,I.keywords.texture_2d,I.keywords.texture_2d_array,I.keywords.texture_3d,I.keywords.texture_cube,I.keywords.texture_cube_array];T.multisampled_texture_type=[I.keywords.texture_multisampled_2d];T.storage_texture_type=[I.keywords.texture_storage_1d,I.keywords.texture_storage_2d,I.keywords.texture_storage_2d_array,I.keywords.texture_storage_3d];T.depth_texture_type=[I.keywords.texture_depth_2d,I.keywords.texture_depth_2d_array,I.keywords.texture_depth_cube,I.keywords.texture_depth_cube_array,I.keywords.texture_depth_multisampled_2d];T.texture_external_type=[I.keywords.texture_external];T.any_texture_type=[...I.sampled_texture_type,...I.multisampled_texture_type,...I.storage_texture_type,...I.depth_texture_type,...I.texture_external_type];T.texel_format=[I.keywords.r8unorm,I.keywords.r8snorm,I.keywords.r8uint,I.keywords.r8sint,I.keywords.r16uint,I.keywords.r16sint,I.keywords.r16float,I.keywords.rg8unorm,I.keywords.rg8snorm,I.keywords.rg8uint,I.keywords.rg8sint,I.keywords.r32uint,I.keywords.r32sint,I.keywords.r32float,I.keywords.rg16uint,I.keywords.rg16sint,I.keywords.rg16float,I.keywords.rgba8unorm,I.keywords.rgba8unorm_srgb,I.keywords.rgba8snorm,I.keywords.rgba8uint,I.keywords.rgba8sint,I.keywords.bgra8unorm,I.keywords.bgra8unorm_srgb,I.keywords.rgb10a2unorm,I.keywords.rg11b10float,I.keywords.rg32uint,I.keywords.rg32sint,I.keywords.rg32float,I.keywords.rgba16uint,I.keywords.rgba16sint,I.keywords.rgba16float,I.keywords.rgba32uint,I.keywords.rgba32sint,I.keywords.rgba32float];T.const_literal=[I.tokens.int_literal,I.tokens.uint_literal,I.tokens.decimal_float_literal,I.tokens.hex_float_literal,I.keywords.true,I.keywords.false];T.literal_or_ident=[I.tokens.ident,I.tokens.int_literal,I.tokens.uint_literal,I.tokens.decimal_float_literal,I.tokens.hex_float_literal];T.element_count_expression=[I.tokens.int_literal,I.tokens.uint_literal,I.tokens.ident];T.template_types=[I.keywords.vec2,I.keywords.vec3,I.keywords.vec4,I.keywords.mat2x2,I.keywords.mat2x3,I.keywords.mat2x4,I.keywords.mat3x2,I.keywords.mat3x3,I.keywords.mat3x4,I.keywords.mat4x2,I.keywords.mat4x3,I.keywords.mat4x4,I.keywords.atomic,I.keywords.bitcast,...I.any_texture_type];T.attribute_name=[I.tokens.ident,I.keywords.block];T.assignment_operators=[I.tokens.equal,I.tokens.plus_equal,I.tokens.minus_equal,I.tokens.times_equal,I.tokens.division_equal,I.tokens.modulo_equal,I.tokens.and_equal,I.tokens.or_equal,I.tokens.xor_equal,I.tokens.shift_right_equal,I.tokens.shift_left_equal];T.increment_operators=[I.tokens.plus_plus,I.tokens.minus_minus];var Cc=class{constructor(e,r,i){this.type=e,this.lexeme=r,this.line=i}toString(){return this.lexeme}isTemplateType(){return T.template_types.indexOf(this.type)!=-1}isArrayType(){return this.type==T.keywords.array}isArrayOrTemplateType(){return this.isArrayType()||this.isTemplateType()}},eh=class{constructor(e){this._tokens=[],this._start=0,this._current=0,this._line=1,this._source=e??""}scanTokens(){for(;!this._isAtEnd();)if(this._start=this._current,!this.scanToken())throw`Invalid syntax at line ${this._line}`;return this._tokens.push(new Cc(T.eof,"",this._line)),this._tokens}scanToken(){let e=this._advance();if(e==`
`)return this._line++,!0;if(this._isWhitespace(e))return!0;if(e=="/"){if(this._peekAhead()=="/"){for(;e!=`
`;){if(this._isAtEnd())return!0;e=this._advance()}return this._line++,!0}else if(this._peekAhead()=="*"){this._advance();let i=1;for(;i>0;){if(this._isAtEnd())return!0;if(e=this._advance(),e==`
-`)this._line++;else if(e=="*"){if(this._peekAhead()=="/"&&(this._advance(),i--,i==0))return!0}else e=="/"&&this._peekAhead()=="*"&&(this._advance(),i++)}return!0}}let r=T.none;for(;;){let i=this._findType(e),s=this._peekAhead();if(e==">"&&(s==">"||s=="=")){let n=!1,o=this._tokens.length-1;for(let a=0;a<5&&o>=0;++a,--o)if(this._tokens[o].type===T.tokens.less_than){o>0&&this._tokens[o-1].isArrayOrTemplateType()&&(n=!0);break}if(n)return this._addToken(i),!0}if(i===T.none){let n=e,o=0,a=2;for(let c=0;c=this._source.length}_isWhitespace(e){return e==" "||e==" "||e=="\r"}_advance(e=0){let r=this._source[this._current];return e=e||0,e++,this._current+=e,r}_peekAhead(e=0){return e=e||0,this._current+e>=this._source.length?"\0":this._source[this._current+e]}_addToken(e){let r=this._source.substring(this._start,this._current);this._tokens.push(new Cc(e,r,this._line))}},rh=class{constructor(){this._tokens=[],this._current=0,this._context=new Rf}parse(e){this._initialize(e);let r=[];for(;!this._isAtEnd();){let i=this._global_decl_or_directive();if(!i)break;r.push(i)}return r}_initialize(e){if(e)if(typeof e=="string"){let r=new th(e);this._tokens=r.scanTokens()}else this._tokens=e;else this._tokens=[];this._current=0}_error(e,r){return console.error(e,r),{token:e,message:r,toString:function(){return`${r}`}}}_isAtEnd(){return this._current>=this._tokens.length||this._peek().type==T.eof}_match(e){if(e instanceof E)return this._check(e)?(this._advance(),!0):!1;for(let r=0,i=e.length;r'.");let s=this._paren_expression();return new Yf(i,s)}let e=this._type_decl(),r=this._argument_expression_list();return new Kf(e,r)}_argument_expression_list(){if(!this._match(T.tokens.paren_left))return null;let e=[];do{if(this._check(T.tokens.paren_right))break;let r=this._short_circuit_or_expression();e.push(r)}while(this._match(T.tokens.comma));return this._consume(T.tokens.paren_right,"Expected ')' for agument list"),e}_optional_paren_expression(){this._match(T.tokens.paren_left);let e=this._short_circuit_or_expression();return this._match(T.tokens.paren_right),new Ec([e])}_paren_expression(){this._consume(T.tokens.paren_left,"Expected '('.");let e=this._short_circuit_or_expression();return this._consume(T.tokens.paren_right,"Expected ')'."),new Ec([e])}_struct_decl(){if(!this._match(T.keywords.struct))return null;let e=this._consume(T.tokens.ident,"Expected name for struct.").toString();this._consume(T.tokens.brace_left,"Expected '{' for struct body.");let r=[];for(;!this._check(T.tokens.brace_right);){let s=this._attribute(),n=this._consume(T.tokens.ident,"Expected variable name.").toString();this._consume(T.tokens.colon,"Expected ':' for struct member type.");let o=this._attribute(),a=this._type_decl();a!=null&&(a.attributes=o),this._check(T.tokens.brace_right)?this._match(T.tokens.comma):this._consume(T.tokens.comma,"Expected ',' for struct member."),r.push(new eh(n,a,s))}this._consume(T.tokens.brace_right,"Expected '}' after struct body.");let i=new pr(e,r);return this._context.structs.set(e,i),i}_global_variable_decl(){let e=this._variable_decl();return e&&this._match(T.tokens.equal)&&(e.value=this._const_expression()),e}_override_variable_decl(){let e=this._override_decl();return e&&this._match(T.tokens.equal)&&(e.value=this._const_expression()),e}_global_const_decl(){if(!this._match(T.keywords.const))return null;let e=this._consume(T.tokens.ident,"Expected variable name"),r=null;if(this._match(T.tokens.colon)){let n=this._attribute();r=this._type_decl(),r!=null&&(r.attributes=n)}let i=null;if(this._match(T.tokens.equal)){let n=this._short_circuit_or_expression();if(n instanceof wi)i=n;else if(n instanceof Sc&&n.initializer instanceof wi)i=n.initializer;else try{let o=n.evaluate(this._context);i=new Ac(o)}catch{i=n}}let s=new yc(e.toString(),r,"","",i);return this._context.constants.set(s.name,s),s}_global_let_decl(){if(!this._match(T.keywords.let))return null;let e=this._consume(T.tokens.ident,"Expected variable name"),r=null;if(this._match(T.tokens.colon)){let s=this._attribute();r=this._type_decl(),r!=null&&(r.attributes=s)}let i=null;return this._match(T.tokens.equal)&&(i=this._const_expression()),new _c(e.toString(),r,"","",i)}_const_expression(){if(this._match(T.const_literal))return new bc(this._previous().toString());let e=this._type_decl();this._consume(T.tokens.paren_left,"Expected '('.");let r=[];for(;!this._check(T.tokens.paren_right)&&(r.push(this._const_expression()),!!this._check(T.tokens.comma));)this._advance();return this._consume(T.tokens.paren_right,"Expected ')'."),new wi(e,r)}_variable_decl(){if(!this._match(T.keywords.var))return null;let e="",r="";this._match(T.tokens.less_than)&&(e=this._consume(T.storage_class,"Expected storage_class.").toString(),this._match(T.tokens.comma)&&(r=this._consume(T.access_mode,"Expected access_mode.").toString()),this._consume(T.tokens.greater_than,"Expected '>'."));let i=this._consume(T.tokens.ident,"Expected variable name"),s=null;if(this._match(T.tokens.colon)){let n=this._attribute();s=this._type_decl(),s!=null&&(s.attributes=n)}return new zr(i.toString(),s,e,r,null)}_override_decl(){if(!this._match(T.keywords.override))return null;let e=this._consume(T.tokens.ident,"Expected variable name"),r=null;if(this._match(T.tokens.colon)){let i=this._attribute();r=this._type_decl(),r!=null&&(r.attributes=i)}return new mc(e.toString(),r,null)}_enable_directive(){let e=this._consume(T.tokens.ident,"identity expected.");return new zf(e.toString())}_type_alias(){let e=this._consume(T.tokens.ident,"identity expected.");this._consume(T.tokens.equal,"Expected '=' for type alias.");let r=this._type_decl();if(r===null)throw this._error(this._peek(),"Expected Type for Alias.");this._context.aliases.has(r.name)&&(r=this._context.aliases.get(r.name).type);let i=new xc(e.toString(),r);return this._context.aliases.set(i.name,i),i}_type_decl(){if(this._check([T.tokens.ident,...T.texel_format,T.keywords.bool,T.keywords.f32,T.keywords.i32,T.keywords.u32])){let i=this._advance(),s=i.toString();return this._context.structs.has(s)?this._context.structs.get(s):this._context.aliases.has(s)?this._context.aliases.get(s).type:new mr(i.toString())}let e=this._texture_sampler_types();if(e)return e;if(this._check(T.template_types)){let i=this._advance().toString(),s=null,n=null;return this._match(T.tokens.less_than)&&(s=this._type_decl(),n=null,this._match(T.tokens.comma)&&(n=this._consume(T.access_mode,"Expected access_mode for pointer").toString()),this._consume(T.tokens.greater_than,"Expected '>' for type.")),new Tc(i,s,n)}if(this._match(T.keywords.ptr)){let i=this._previous().toString();this._consume(T.tokens.less_than,"Expected '<' for pointer.");let s=this._consume(T.storage_class,"Expected storage_class for pointer");this._consume(T.tokens.comma,"Expected ',' for pointer.");let n=this._type_decl(),o=null;return this._match(T.tokens.comma)&&(o=this._consume(T.access_mode,"Expected access_mode for pointer").toString()),this._consume(T.tokens.greater_than,"Expected '>' for pointer."),new jf(i,s.toString(),n,o)}let r=this._attribute();if(this._match(T.keywords.array)){let i=null,s=-1,n=this._previous();if(this._match(T.tokens.less_than)){i=this._type_decl(),this._context.aliases.has(i.name)&&(i=this._context.aliases.get(i.name).type);let o="";this._match(T.tokens.comma)&&(o=this._shift_expression().evaluate(this._context).toString()),this._consume(T.tokens.greater_than,"Expected '>' for array."),s=o?parseInt(o):0}return new vc(n.toString(),r,i,s)}return null}_texture_sampler_types(){if(this._match(T.sampler_type))return new Ei(this._previous().toString(),null,null);if(this._match(T.depth_texture_type))return new Ei(this._previous().toString(),null,null);if(this._match(T.sampled_texture_type)||this._match(T.multisampled_texture_type)){let e=this._previous();this._consume(T.tokens.less_than,"Expected '<' for sampler type.");let r=this._type_decl();return this._consume(T.tokens.greater_than,"Expected '>' for sampler type."),new Ei(e.toString(),r,null)}if(this._match(T.storage_texture_type)){let e=this._previous();this._consume(T.tokens.less_than,"Expected '<' for sampler type.");let r=this._consume(T.texel_format,"Invalid texel format.").toString();this._consume(T.tokens.comma,"Expected ',' after texel format.");let i=this._consume(T.access_mode,"Expected access mode for storage texture type.").toString();return this._consume(T.tokens.greater_than,"Expected '>' for sampler type."),new Ei(e.toString(),r,i)}return null}_attribute(){let e=[];for(;this._match(T.tokens.attr);){let r=this._consume(T.attribute_name,"Expected attribute name"),i=new Rc(r.toString(),null);if(this._match(T.tokens.paren_left)){if(i.value=this._consume(T.literal_or_ident,"Expected attribute value").toString(),this._check(T.tokens.comma)){this._advance();do{let s=this._consume(T.literal_or_ident,"Expected attribute value").toString();i.value instanceof Array||(i.value=[i.value]),i.value.push(s)}while(this._match(T.tokens.comma))}this._consume(T.tokens.paren_right,"Expected ')'")}e.push(i)}for(;this._match(T.tokens.attr_left);){if(!this._check(T.tokens.attr_right))do{let r=this._consume(T.attribute_name,"Expected attribute name"),i=new Rc(r.toString(),null);if(this._match(T.tokens.paren_left)){if(i.value=[this._consume(T.literal_or_ident,"Expected attribute value").toString()],this._check(T.tokens.comma)){this._advance();do{let s=this._consume(T.literal_or_ident,"Expected attribute value").toString();i.value.push(s)}while(this._match(T.tokens.comma))}this._consume(T.tokens.paren_right,"Expected ')'")}e.push(i)}while(this._match(T.tokens.comma));this._consume(T.tokens.attr_right,"Expected ']]' after attribute declarations")}return e.length==0?null:e}},Vr=class{constructor(e,r){this.name=e,this.attributes=r,this.size=0}get isArray(){return!1}get isStruct(){return!1}get isTemplate(){return!1}},Mc=class{constructor(e,r,i){this.name=e,this.type=r,this.attributes=i,this.offset=0,this.size=0}get isArray(){return this.type.isArray}get isStruct(){return this.type.isStruct}get isTemplate(){return this.type.isTemplate}get align(){return this.type.isStruct?this.type.align:0}get members(){return this.type.isStruct?this.type.members:null}get format(){return this.type.isArray?this.type.format:this.type.isTemplate?this.type.format:null}get count(){return this.type.isArray?this.type.count:0}get stride(){return this.type.isArray?this.type.stride:this.size}},fs=class extends Vr{constructor(e,r){super(e,r),this.members=[],this.align=0}get isStruct(){return!0}},Yn=class extends Vr{constructor(e,r){super(e,r),this.count=0,this.stride=0}get isArray(){return!0}},Ic=class extends Vr{constructor(e,r,i,s){super(e,i),this.format=r,this.access=s}get isTemplate(){return!0}},Ur;(function(t){t[t.Uniform=0]="Uniform",t[t.Storage=1]="Storage",t[t.Texture=2]="Texture",t[t.Sampler=3]="Sampler",t[t.StorageTexture=4]="StorageTexture"})(Ur||(Ur={}));var hs=class{constructor(e,r,i,s,n,o,a){this.name=e,this.type=r,this.group=i,this.binding=s,this.attributes=n,this.resourceType=o,this.access=a}get isArray(){return this.type.isArray}get isStruct(){return this.type.isStruct}get isTemplate(){return this.type.isTemplate}get size(){return this.type.size}get align(){return this.type.isStruct?this.type.align:0}get members(){return this.type.isStruct?this.type.members:null}get format(){return this.type.isArray?this.type.format:this.type.isTemplate?this.type.format:null}get count(){return this.type.isArray?this.type.count:0}get stride(){return this.type.isArray?this.type.stride:this.size}},ih=class{constructor(e,r){this.name=e,this.type=r}},ds=class{constructor(e,r){this.align=e,this.size=r}},sh=class{constructor(e,r,i,s){this.name=e,this.type=r,this.locationType=i,this.location=s,this.interpolation=null}},Oc=class{constructor(e,r,i,s){this.name=e,this.type=r,this.locationType=i,this.location=s}},nh=class{constructor(e,r=null){this.stage=null,this.inputs=[],this.outputs=[],this.name=e,this.stage=r}},oh=class{constructor(){this.vertex=[],this.fragment=[],this.compute=[]}},ah=class{constructor(e,r,i,s){this.name=e,this.type=r,this.attributes=i,this.id=s}},Pi=class t{constructor(e){this.uniforms=[],this.storage=[],this.textures=[],this.samplers=[],this.aliases=[],this.overrides=[],this.structs=[],this.entry=new oh,this._types=new Map,e&&this.update(e)}_isStorageTexture(e){return e.name=="texture_storage_1d"||e.name=="texture_storage_2d"||e.name=="texture_storage_2d_array"||e.name=="texture_storage_3d"}update(e){let i=new rh().parse(e);for(let s of i){if(s instanceof pr){let n=this._getTypeInfo(s,null);n instanceof fs&&this.structs.push(n);continue}if(s instanceof xc){this.aliases.push(this._getAliasInfo(s));continue}if(s instanceof mc){let n=s,o=this._getAttributeNum(n.attributes,"id",0),a=n.type!=null?this._getTypeInfo(n.type,n.attributes):null;this.overrides.push(new ah(n.name,a,n.attributes,o));continue}if(this._isUniformVar(s)){let n=s,o=this._getAttributeNum(n.attributes,"group",0),a=this._getAttributeNum(n.attributes,"binding",0),c=this._getTypeInfo(n.type,n.attributes),l=new hs(n.name,c,o,a,n.attributes,Ur.Uniform,n.access);this.uniforms.push(l);continue}if(this._isStorageVar(s)){let n=s,o=this._getAttributeNum(n.attributes,"group",0),a=this._getAttributeNum(n.attributes,"binding",0),c=this._getTypeInfo(n.type,n.attributes),l=this._isStorageTexture(c),u=new hs(n.name,c,o,a,n.attributes,l?Ur.StorageTexture:Ur.Storage,n.access);this.storage.push(u);continue}if(this._isTextureVar(s)){let n=s,o=this._getAttributeNum(n.attributes,"group",0),a=this._getAttributeNum(n.attributes,"binding",0),c=this._getTypeInfo(n.type,n.attributes),l=this._isStorageTexture(c),u=new hs(n.name,c,o,a,n.attributes,l?Ur.StorageTexture:Ur.Texture,n.access);l?this.storage.push(u):this.textures.push(u);continue}if(this._isSamplerVar(s)){let n=s,o=this._getAttributeNum(n.attributes,"group",0),a=this._getAttributeNum(n.attributes,"binding",0),c=this._getTypeInfo(n.type,n.attributes),l=new hs(n.name,c,o,a,n.attributes,Ur.Sampler,n.access);this.samplers.push(l);continue}if(s instanceof gc){let n=this._getAttribute(s,"vertex"),o=this._getAttribute(s,"fragment"),a=this._getAttribute(s,"compute"),c=n||o||a;if(c){let l=new nh(s.name,c.name);l.inputs=this._getInputs(s.args),l.outputs=this._getOutputs(s.returnType),this.entry[c.name].push(l)}continue}}}getBindGroups(){let e=[];function r(i,s){i>=e.length&&(e.length=i+1),e[i]===void 0&&(e[i]=[]),s>=e[i].length&&(e[i].length=s+1)}for(let i of this.uniforms){r(i.group,i.binding);let s=e[i.group];s[i.binding]=i}for(let i of this.storage){r(i.group,i.binding);let s=e[i.group];s[i.binding]=i}for(let i of this.textures){r(i.group,i.binding);let s=e[i.group];s[i.binding]=i}for(let i of this.samplers){r(i.group,i.binding);let s=e[i.group];s[i.binding]=i}return e}_getOutputs(e,r=void 0){if(r===void 0&&(r=[]),e instanceof pr)this._getStructOutputs(e,r);else{let i=this._getOutputInfo(e);i!==null&&r.push(i)}return r}_getStructOutputs(e,r){for(let i of e.members)if(i.type instanceof pr)this._getStructOutputs(i.type,r);else{let s=this._getAttribute(i,"location")||this._getAttribute(i,"builtin");if(s!==null){let n=this._getTypeInfo(i.type,i.type.attributes),o=this._parseInt(s.value),a=new Oc(i.name,n,s.name,o);r.push(a)}}}_getOutputInfo(e){let r=this._getAttribute(e,"location")||this._getAttribute(e,"builtin");if(r!==null){let i=this._getTypeInfo(e,e.attributes),s=this._parseInt(r.value);return new Oc("",i,r.name,s)}return null}_getInputs(e,r=void 0){r===void 0&&(r=[]);for(let i of e)if(i.type instanceof pr)this._getStructInputs(i.type,r);else{let s=this._getInputInfo(i);s!==null&&r.push(s)}return r}_getStructInputs(e,r){for(let i of e.members)if(i.type instanceof pr)this._getStructInputs(i.type,r);else{let s=this._getInputInfo(i);s!==null&&r.push(s)}}_getInputInfo(e){let r=this._getAttribute(e,"location")||this._getAttribute(e,"builtin");if(r!==null){let i=this._getAttribute(e,"interpolation"),s=this._getTypeInfo(e.type,e.attributes),n=this._parseInt(r.value),o=new sh(e.name,s,r.name,n);return i!==null&&(o.interpolation=this._parseString(i.value)),o}return null}_parseString(e){return e instanceof Array&&(e=e[0]),e}_parseInt(e){e instanceof Array&&(e=e[0]);let r=parseInt(e);return isNaN(r)?e:r}_getAlias(e){for(let r of this.aliases)if(r.name==e)return r.type;return null}_getAliasInfo(e){return new ih(e.name,this._getTypeInfo(e.type,null))}_getTypeInfo(e,r){if(this._types.has(e))return this._types.get(e);if(e instanceof vc){let s=e,n=this._getTypeInfo(s.format,s.attributes),o=new Yn(s.name,r);return o.format=n,o.count=s.count,this._types.set(e,o),this._updateTypeInfo(o),o}if(e instanceof pr){let s=e,n=new fs(s.name,r);for(let o of s.members){let a=this._getTypeInfo(o.type,o.attributes);n.members.push(new Mc(o.name,a,o.attributes))}return this._types.set(e,n),this._updateTypeInfo(n),n}if(e instanceof Ei){let s=e,n=s.format instanceof mr,o=s.format?n?this._getTypeInfo(s.format,null):new Vr(s.format,null):null,a=new Ic(s.name,o,r,s.access);return this._types.set(e,a),this._updateTypeInfo(a),a}if(e instanceof Tc){let s=e,n=s.format?this._getTypeInfo(s.format,null):null,o=new Ic(s.name,n,r,s.access);return this._types.set(e,o),this._updateTypeInfo(o),o}let i=new Vr(e.name,r);return this._types.set(e,i),this._updateTypeInfo(i),i}_updateTypeInfo(e){var r,i;let s=this._getTypeSize(e);if(e.size=(r=s?.size)!==null&&r!==void 0?r:0,e instanceof Yn){let n=this._getTypeSize(e.format);e.stride=(i=n?.size)!==null&&i!==void 0?i:0,this._updateTypeInfo(e.format)}e instanceof fs&&this._updateStructInfo(e)}_updateStructInfo(e){var r;let i=0,s=0,n=0,o=0;for(let a=0,c=e.members.length;at.name);Pi._samplerTypes=T.sampler_type.map(t=>t.name);function ch(t){let e={attributes:[],bindings:[]},r;try{r=H1(t)}catch(n){return O.error(n.message)(),e}for(let n of r.uniforms){let o=[];for(let a of n.type.members)o.push({name:a.name,type:Dm(a.type)});e.bindings.push({type:"uniform",name:n.name,location:n.binding,group:n.group,members:o})}let i=r.entry.vertex[0],s=i?.inputs.length||0;for(let n=0;n`:t.name}function H1(t){try{return new Pi(t)}catch(e){if(e instanceof Error)throw e;let r="WGSL parse error";throw typeof e=="object"&&e?.message&&(r+=`: ${e.message} `),typeof e=="object"&&e?.token&&(r+=e.token.line||""),new Error(r,{cause:e})}}var j1=`#ifdef LUMA_FP32_TAN_PRECISION_WORKAROUND
+`)this._line++;else if(e=="*"){if(this._peekAhead()=="/"&&(this._advance(),i--,i==0))return!0}else e=="/"&&this._peekAhead()=="*"&&(this._advance(),i++)}return!0}}let r=T.none;for(;;){let i=this._findType(e),s=this._peekAhead();if(e==">"&&(s==">"||s=="=")){let n=!1,o=this._tokens.length-1;for(let a=0;a<5&&o>=0;++a,--o)if(this._tokens[o].type===T.tokens.less_than){o>0&&this._tokens[o-1].isArrayOrTemplateType()&&(n=!0);break}if(n)return this._addToken(i),!0}if(i===T.none){let n=e,o=0,a=2;for(let c=0;c=this._source.length}_isWhitespace(e){return e==" "||e==" "||e=="\r"}_advance(e=0){let r=this._source[this._current];return e=e||0,e++,this._current+=e,r}_peekAhead(e=0){return e=e||0,this._current+e>=this._source.length?"\0":this._source[this._current+e]}_addToken(e){let r=this._source.substring(this._start,this._current);this._tokens.push(new Cc(e,r,this._line))}},th=class{constructor(){this._tokens=[],this._current=0,this._context=new Pf}parse(e){this._initialize(e);let r=[];for(;!this._isAtEnd();){let i=this._global_decl_or_directive();if(!i)break;r.push(i)}return r}_initialize(e){if(e)if(typeof e=="string"){let r=new eh(e);this._tokens=r.scanTokens()}else this._tokens=e;else this._tokens=[];this._current=0}_error(e,r){return console.error(e,r),{token:e,message:r,toString:function(){return`${r}`}}}_isAtEnd(){return this._current>=this._tokens.length||this._peek().type==T.eof}_match(e){if(e instanceof E)return this._check(e)?(this._advance(),!0):!1;for(let r=0,i=e.length;r'.");let s=this._paren_expression();return new $f(i,s)}let e=this._type_decl(),r=this._argument_expression_list();return new Yf(e,r)}_argument_expression_list(){if(!this._match(T.tokens.paren_left))return null;let e=[];do{if(this._check(T.tokens.paren_right))break;let r=this._short_circuit_or_expression();e.push(r)}while(this._match(T.tokens.comma));return this._consume(T.tokens.paren_right,"Expected ')' for agument list"),e}_optional_paren_expression(){this._match(T.tokens.paren_left);let e=this._short_circuit_or_expression();return this._match(T.tokens.paren_right),new Ec([e])}_paren_expression(){this._consume(T.tokens.paren_left,"Expected '('.");let e=this._short_circuit_or_expression();return this._consume(T.tokens.paren_right,"Expected ')'."),new Ec([e])}_struct_decl(){if(!this._match(T.keywords.struct))return null;let e=this._consume(T.tokens.ident,"Expected name for struct.").toString();this._consume(T.tokens.brace_left,"Expected '{' for struct body.");let r=[];for(;!this._check(T.tokens.brace_right);){let s=this._attribute(),n=this._consume(T.tokens.ident,"Expected variable name.").toString();this._consume(T.tokens.colon,"Expected ':' for struct member type.");let o=this._attribute(),a=this._type_decl();a!=null&&(a.attributes=o),this._check(T.tokens.brace_right)?this._match(T.tokens.comma):this._consume(T.tokens.comma,"Expected ',' for struct member."),r.push(new Qf(n,a,s))}this._consume(T.tokens.brace_right,"Expected '}' after struct body.");let i=new pr(e,r);return this._context.structs.set(e,i),i}_global_variable_decl(){let e=this._variable_decl();return e&&this._match(T.tokens.equal)&&(e.value=this._const_expression()),e}_override_variable_decl(){let e=this._override_decl();return e&&this._match(T.tokens.equal)&&(e.value=this._const_expression()),e}_global_const_decl(){if(!this._match(T.keywords.const))return null;let e=this._consume(T.tokens.ident,"Expected variable name"),r=null;if(this._match(T.tokens.colon)){let n=this._attribute();r=this._type_decl(),r!=null&&(r.attributes=n)}let i=null;if(this._match(T.tokens.equal)){let n=this._short_circuit_or_expression();if(n instanceof wi)i=n;else if(n instanceof Sc&&n.initializer instanceof wi)i=n.initializer;else try{let o=n.evaluate(this._context);i=new Ac(o)}catch{i=n}}let s=new yc(e.toString(),r,"","",i);return this._context.constants.set(s.name,s),s}_global_let_decl(){if(!this._match(T.keywords.let))return null;let e=this._consume(T.tokens.ident,"Expected variable name"),r=null;if(this._match(T.tokens.colon)){let s=this._attribute();r=this._type_decl(),r!=null&&(r.attributes=s)}let i=null;return this._match(T.tokens.equal)&&(i=this._const_expression()),new _c(e.toString(),r,"","",i)}_const_expression(){if(this._match(T.const_literal))return new bc(this._previous().toString());let e=this._type_decl();this._consume(T.tokens.paren_left,"Expected '('.");let r=[];for(;!this._check(T.tokens.paren_right)&&(r.push(this._const_expression()),!!this._check(T.tokens.comma));)this._advance();return this._consume(T.tokens.paren_right,"Expected ')'."),new wi(e,r)}_variable_decl(){if(!this._match(T.keywords.var))return null;let e="",r="";this._match(T.tokens.less_than)&&(e=this._consume(T.storage_class,"Expected storage_class.").toString(),this._match(T.tokens.comma)&&(r=this._consume(T.access_mode,"Expected access_mode.").toString()),this._consume(T.tokens.greater_than,"Expected '>'."));let i=this._consume(T.tokens.ident,"Expected variable name"),s=null;if(this._match(T.tokens.colon)){let n=this._attribute();s=this._type_decl(),s!=null&&(s.attributes=n)}return new zr(i.toString(),s,e,r,null)}_override_decl(){if(!this._match(T.keywords.override))return null;let e=this._consume(T.tokens.ident,"Expected variable name"),r=null;if(this._match(T.tokens.colon)){let i=this._attribute();r=this._type_decl(),r!=null&&(r.attributes=i)}return new mc(e.toString(),r,null)}_enable_directive(){let e=this._consume(T.tokens.ident,"identity expected.");return new Uf(e.toString())}_type_alias(){let e=this._consume(T.tokens.ident,"identity expected.");this._consume(T.tokens.equal,"Expected '=' for type alias.");let r=this._type_decl();if(r===null)throw this._error(this._peek(),"Expected Type for Alias.");this._context.aliases.has(r.name)&&(r=this._context.aliases.get(r.name).type);let i=new xc(e.toString(),r);return this._context.aliases.set(i.name,i),i}_type_decl(){if(this._check([T.tokens.ident,...T.texel_format,T.keywords.bool,T.keywords.f32,T.keywords.i32,T.keywords.u32])){let i=this._advance(),s=i.toString();return this._context.structs.has(s)?this._context.structs.get(s):this._context.aliases.has(s)?this._context.aliases.get(s).type:new mr(i.toString())}let e=this._texture_sampler_types();if(e)return e;if(this._check(T.template_types)){let i=this._advance().toString(),s=null,n=null;return this._match(T.tokens.less_than)&&(s=this._type_decl(),n=null,this._match(T.tokens.comma)&&(n=this._consume(T.access_mode,"Expected access_mode for pointer").toString()),this._consume(T.tokens.greater_than,"Expected '>' for type.")),new Tc(i,s,n)}if(this._match(T.keywords.ptr)){let i=this._previous().toString();this._consume(T.tokens.less_than,"Expected '<' for pointer.");let s=this._consume(T.storage_class,"Expected storage_class for pointer");this._consume(T.tokens.comma,"Expected ',' for pointer.");let n=this._type_decl(),o=null;return this._match(T.tokens.comma)&&(o=this._consume(T.access_mode,"Expected access_mode for pointer").toString()),this._consume(T.tokens.greater_than,"Expected '>' for pointer."),new Hf(i,s.toString(),n,o)}let r=this._attribute();if(this._match(T.keywords.array)){let i=null,s=-1,n=this._previous();if(this._match(T.tokens.less_than)){i=this._type_decl(),this._context.aliases.has(i.name)&&(i=this._context.aliases.get(i.name).type);let o="";this._match(T.tokens.comma)&&(o=this._shift_expression().evaluate(this._context).toString()),this._consume(T.tokens.greater_than,"Expected '>' for array."),s=o?parseInt(o):0}return new vc(n.toString(),r,i,s)}return null}_texture_sampler_types(){if(this._match(T.sampler_type))return new Ei(this._previous().toString(),null,null);if(this._match(T.depth_texture_type))return new Ei(this._previous().toString(),null,null);if(this._match(T.sampled_texture_type)||this._match(T.multisampled_texture_type)){let e=this._previous();this._consume(T.tokens.less_than,"Expected '<' for sampler type.");let r=this._type_decl();return this._consume(T.tokens.greater_than,"Expected '>' for sampler type."),new Ei(e.toString(),r,null)}if(this._match(T.storage_texture_type)){let e=this._previous();this._consume(T.tokens.less_than,"Expected '<' for sampler type.");let r=this._consume(T.texel_format,"Invalid texel format.").toString();this._consume(T.tokens.comma,"Expected ',' after texel format.");let i=this._consume(T.access_mode,"Expected access mode for storage texture type.").toString();return this._consume(T.tokens.greater_than,"Expected '>' for sampler type."),new Ei(e.toString(),r,i)}return null}_attribute(){let e=[];for(;this._match(T.tokens.attr);){let r=this._consume(T.attribute_name,"Expected attribute name"),i=new Rc(r.toString(),null);if(this._match(T.tokens.paren_left)){if(i.value=this._consume(T.literal_or_ident,"Expected attribute value").toString(),this._check(T.tokens.comma)){this._advance();do{let s=this._consume(T.literal_or_ident,"Expected attribute value").toString();i.value instanceof Array||(i.value=[i.value]),i.value.push(s)}while(this._match(T.tokens.comma))}this._consume(T.tokens.paren_right,"Expected ')'")}e.push(i)}for(;this._match(T.tokens.attr_left);){if(!this._check(T.tokens.attr_right))do{let r=this._consume(T.attribute_name,"Expected attribute name"),i=new Rc(r.toString(),null);if(this._match(T.tokens.paren_left)){if(i.value=[this._consume(T.literal_or_ident,"Expected attribute value").toString()],this._check(T.tokens.comma)){this._advance();do{let s=this._consume(T.literal_or_ident,"Expected attribute value").toString();i.value.push(s)}while(this._match(T.tokens.comma))}this._consume(T.tokens.paren_right,"Expected ')'")}e.push(i)}while(this._match(T.tokens.comma));this._consume(T.tokens.attr_right,"Expected ']]' after attribute declarations")}return e.length==0?null:e}},Vr=class{constructor(e,r){this.name=e,this.attributes=r,this.size=0}get isArray(){return!1}get isStruct(){return!1}get isTemplate(){return!1}},Mc=class{constructor(e,r,i){this.name=e,this.type=r,this.attributes=i,this.offset=0,this.size=0}get isArray(){return this.type.isArray}get isStruct(){return this.type.isStruct}get isTemplate(){return this.type.isTemplate}get align(){return this.type.isStruct?this.type.align:0}get members(){return this.type.isStruct?this.type.members:null}get format(){return this.type.isArray?this.type.format:this.type.isTemplate?this.type.format:null}get count(){return this.type.isArray?this.type.count:0}get stride(){return this.type.isArray?this.type.stride:this.size}},fs=class extends Vr{constructor(e,r){super(e,r),this.members=[],this.align=0}get isStruct(){return!0}},Yn=class extends Vr{constructor(e,r){super(e,r),this.count=0,this.stride=0}get isArray(){return!0}},Ic=class extends Vr{constructor(e,r,i,s){super(e,i),this.format=r,this.access=s}get isTemplate(){return!0}},Ur;(function(t){t[t.Uniform=0]="Uniform",t[t.Storage=1]="Storage",t[t.Texture=2]="Texture",t[t.Sampler=3]="Sampler",t[t.StorageTexture=4]="StorageTexture"})(Ur||(Ur={}));var hs=class{constructor(e,r,i,s,n,o,a){this.name=e,this.type=r,this.group=i,this.binding=s,this.attributes=n,this.resourceType=o,this.access=a}get isArray(){return this.type.isArray}get isStruct(){return this.type.isStruct}get isTemplate(){return this.type.isTemplate}get size(){return this.type.size}get align(){return this.type.isStruct?this.type.align:0}get members(){return this.type.isStruct?this.type.members:null}get format(){return this.type.isArray?this.type.format:this.type.isTemplate?this.type.format:null}get count(){return this.type.isArray?this.type.count:0}get stride(){return this.type.isArray?this.type.stride:this.size}},rh=class{constructor(e,r){this.name=e,this.type=r}},ds=class{constructor(e,r){this.align=e,this.size=r}},ih=class{constructor(e,r,i,s){this.name=e,this.type=r,this.locationType=i,this.location=s,this.interpolation=null}},Oc=class{constructor(e,r,i,s){this.name=e,this.type=r,this.locationType=i,this.location=s}},sh=class{constructor(e,r=null){this.stage=null,this.inputs=[],this.outputs=[],this.name=e,this.stage=r}},nh=class{constructor(){this.vertex=[],this.fragment=[],this.compute=[]}},oh=class{constructor(e,r,i,s){this.name=e,this.type=r,this.attributes=i,this.id=s}},Pi=class t{constructor(e){this.uniforms=[],this.storage=[],this.textures=[],this.samplers=[],this.aliases=[],this.overrides=[],this.structs=[],this.entry=new nh,this._types=new Map,e&&this.update(e)}_isStorageTexture(e){return e.name=="texture_storage_1d"||e.name=="texture_storage_2d"||e.name=="texture_storage_2d_array"||e.name=="texture_storage_3d"}update(e){let i=new th().parse(e);for(let s of i){if(s instanceof pr){let n=this._getTypeInfo(s,null);n instanceof fs&&this.structs.push(n);continue}if(s instanceof xc){this.aliases.push(this._getAliasInfo(s));continue}if(s instanceof mc){let n=s,o=this._getAttributeNum(n.attributes,"id",0),a=n.type!=null?this._getTypeInfo(n.type,n.attributes):null;this.overrides.push(new oh(n.name,a,n.attributes,o));continue}if(this._isUniformVar(s)){let n=s,o=this._getAttributeNum(n.attributes,"group",0),a=this._getAttributeNum(n.attributes,"binding",0),c=this._getTypeInfo(n.type,n.attributes),l=new hs(n.name,c,o,a,n.attributes,Ur.Uniform,n.access);this.uniforms.push(l);continue}if(this._isStorageVar(s)){let n=s,o=this._getAttributeNum(n.attributes,"group",0),a=this._getAttributeNum(n.attributes,"binding",0),c=this._getTypeInfo(n.type,n.attributes),l=this._isStorageTexture(c),u=new hs(n.name,c,o,a,n.attributes,l?Ur.StorageTexture:Ur.Storage,n.access);this.storage.push(u);continue}if(this._isTextureVar(s)){let n=s,o=this._getAttributeNum(n.attributes,"group",0),a=this._getAttributeNum(n.attributes,"binding",0),c=this._getTypeInfo(n.type,n.attributes),l=this._isStorageTexture(c),u=new hs(n.name,c,o,a,n.attributes,l?Ur.StorageTexture:Ur.Texture,n.access);l?this.storage.push(u):this.textures.push(u);continue}if(this._isSamplerVar(s)){let n=s,o=this._getAttributeNum(n.attributes,"group",0),a=this._getAttributeNum(n.attributes,"binding",0),c=this._getTypeInfo(n.type,n.attributes),l=new hs(n.name,c,o,a,n.attributes,Ur.Sampler,n.access);this.samplers.push(l);continue}if(s instanceof gc){let n=this._getAttribute(s,"vertex"),o=this._getAttribute(s,"fragment"),a=this._getAttribute(s,"compute"),c=n||o||a;if(c){let l=new sh(s.name,c.name);l.inputs=this._getInputs(s.args),l.outputs=this._getOutputs(s.returnType),this.entry[c.name].push(l)}continue}}}getBindGroups(){let e=[];function r(i,s){i>=e.length&&(e.length=i+1),e[i]===void 0&&(e[i]=[]),s>=e[i].length&&(e[i].length=s+1)}for(let i of this.uniforms){r(i.group,i.binding);let s=e[i.group];s[i.binding]=i}for(let i of this.storage){r(i.group,i.binding);let s=e[i.group];s[i.binding]=i}for(let i of this.textures){r(i.group,i.binding);let s=e[i.group];s[i.binding]=i}for(let i of this.samplers){r(i.group,i.binding);let s=e[i.group];s[i.binding]=i}return e}_getOutputs(e,r=void 0){if(r===void 0&&(r=[]),e instanceof pr)this._getStructOutputs(e,r);else{let i=this._getOutputInfo(e);i!==null&&r.push(i)}return r}_getStructOutputs(e,r){for(let i of e.members)if(i.type instanceof pr)this._getStructOutputs(i.type,r);else{let s=this._getAttribute(i,"location")||this._getAttribute(i,"builtin");if(s!==null){let n=this._getTypeInfo(i.type,i.type.attributes),o=this._parseInt(s.value),a=new Oc(i.name,n,s.name,o);r.push(a)}}}_getOutputInfo(e){let r=this._getAttribute(e,"location")||this._getAttribute(e,"builtin");if(r!==null){let i=this._getTypeInfo(e,e.attributes),s=this._parseInt(r.value);return new Oc("",i,r.name,s)}return null}_getInputs(e,r=void 0){r===void 0&&(r=[]);for(let i of e)if(i.type instanceof pr)this._getStructInputs(i.type,r);else{let s=this._getInputInfo(i);s!==null&&r.push(s)}return r}_getStructInputs(e,r){for(let i of e.members)if(i.type instanceof pr)this._getStructInputs(i.type,r);else{let s=this._getInputInfo(i);s!==null&&r.push(s)}}_getInputInfo(e){let r=this._getAttribute(e,"location")||this._getAttribute(e,"builtin");if(r!==null){let i=this._getAttribute(e,"interpolation"),s=this._getTypeInfo(e.type,e.attributes),n=this._parseInt(r.value),o=new ih(e.name,s,r.name,n);return i!==null&&(o.interpolation=this._parseString(i.value)),o}return null}_parseString(e){return e instanceof Array&&(e=e[0]),e}_parseInt(e){e instanceof Array&&(e=e[0]);let r=parseInt(e);return isNaN(r)?e:r}_getAlias(e){for(let r of this.aliases)if(r.name==e)return r.type;return null}_getAliasInfo(e){return new rh(e.name,this._getTypeInfo(e.type,null))}_getTypeInfo(e,r){if(this._types.has(e))return this._types.get(e);if(e instanceof vc){let s=e,n=this._getTypeInfo(s.format,s.attributes),o=new Yn(s.name,r);return o.format=n,o.count=s.count,this._types.set(e,o),this._updateTypeInfo(o),o}if(e instanceof pr){let s=e,n=new fs(s.name,r);for(let o of s.members){let a=this._getTypeInfo(o.type,o.attributes);n.members.push(new Mc(o.name,a,o.attributes))}return this._types.set(e,n),this._updateTypeInfo(n),n}if(e instanceof Ei){let s=e,n=s.format instanceof mr,o=s.format?n?this._getTypeInfo(s.format,null):new Vr(s.format,null):null,a=new Ic(s.name,o,r,s.access);return this._types.set(e,a),this._updateTypeInfo(a),a}if(e instanceof Tc){let s=e,n=s.format?this._getTypeInfo(s.format,null):null,o=new Ic(s.name,n,r,s.access);return this._types.set(e,o),this._updateTypeInfo(o),o}let i=new Vr(e.name,r);return this._types.set(e,i),this._updateTypeInfo(i),i}_updateTypeInfo(e){var r,i;let s=this._getTypeSize(e);if(e.size=(r=s?.size)!==null&&r!==void 0?r:0,e instanceof Yn){let n=this._getTypeSize(e.format);e.stride=(i=n?.size)!==null&&i!==void 0?i:0,this._updateTypeInfo(e.format)}e instanceof fs&&this._updateStructInfo(e)}_updateStructInfo(e){var r;let i=0,s=0,n=0,o=0;for(let a=0,c=e.members.length;at.name);Pi._samplerTypes=T.sampler_type.map(t=>t.name);function ah(t){let e={attributes:[],bindings:[]},r;try{r=H1(t)}catch(n){return O.error(n.message)(),e}for(let n of r.uniforms){let o=[];for(let a of n.type.members)o.push({name:a.name,type:Dm(a.type)});e.bindings.push({type:"uniform",name:n.name,location:n.binding,group:n.group,members:o})}let i=r.entry.vertex[0],s=i?.inputs.length||0;for(let n=0;n`:t.name}function H1(t){try{return new Pi(t)}catch(e){if(e instanceof Error)throw e;let r="WGSL parse error";throw typeof e=="object"&&e?.message&&(r+=`: ${e.message} `),typeof e=="object"&&e?.token&&(r+=e.token.line||""),new Error(r,{cause:e})}}var j1=`#ifdef LUMA_FP32_TAN_PRECISION_WORKAROUND
const float TWO_PI = 6.2831854820251465;
const float PI_2 = 1.5707963705062866;
const float PI_16 = 0.1963495463132858;
@@ -217,7 +217,7 @@ return tan_taylor_fp32(a);
return tan(a);
#endif
}
-`,lh={name:"fp32",vs:j1};var X1=new Float32Array([0,1,1,1]),$1=`uniform pickingUniforms {
+`,ch={name:"fp32",vs:j1};var X1=new Float32Array([0,1,1,1]),$1=`uniform pickingUniforms {
float isActive;
float isAttribute;
float isHighlightActive;
@@ -306,7 +306,7 @@ vec4 picking_filterColor(vec4 color) {
vec4 highlightColor = picking_filterHighlightColor(color);
return picking_filterPickingColor(highlightColor);
}
-`,Nc={name:"picking",vs:$1,fs:Y1,uniformTypes:{isActive:"f32",isAttribute:"f32",isHighlightActive:"f32",useFloatColors:"f32",highlightedObjectColor:"vec3",highlightColor:"vec4"},defaultUniforms:{isActive:!1,isAttribute:!1,isHighlightActive:!1,useFloatColors:!0,highlightedObjectColor:new Float32Array([0,0,0]),highlightColor:X1},getUniforms:K1};function K1(t={},e){let r={};if(t.highlightedObjectColor!==void 0)if(t.highlightedObjectColor===null)r.isHighlightActive=!1;else{r.isHighlightActive=!0;let i=t.highlightedObjectColor.slice(0,3);r.highlightedObjectColor=i}if(t.highlightColor){let i=Array.from(t.highlightColor,s=>s/255);Number.isFinite(i[3])||(i[3]=1),r.highlightColor=i}return t.isActive!==void 0&&(r.isActive=!!t.isActive,r.isAttribute=!!t.isAttribute),t.useFloatColors!==void 0&&(r.useFloatColors=!!t.useFloatColors),r}function uh(t,e=[],r=0){let i=Math.fround(t),s=t-i;return e[r]=i,e[r+1]=s,e}function Lm(t){return t-Math.fround(t)}function km(t){let e=new Float32Array(32);for(let r=0;r<4;++r)for(let i=0;i<4;++i){let s=r*4+i;uh(t[i*4+r],e,s*2)}return e}var Bm=`uniform float ONE;
+`,Nc={name:"picking",vs:$1,fs:Y1,uniformTypes:{isActive:"f32",isAttribute:"f32",isHighlightActive:"f32",useFloatColors:"f32",highlightedObjectColor:"vec3",highlightColor:"vec4"},defaultUniforms:{isActive:!1,isAttribute:!1,isHighlightActive:!1,useFloatColors:!0,highlightedObjectColor:new Float32Array([0,0,0]),highlightColor:X1},getUniforms:K1};function K1(t={},e){let r={};if(t.highlightedObjectColor!==void 0)if(t.highlightedObjectColor===null)r.isHighlightActive=!1;else{r.isHighlightActive=!0;let i=t.highlightedObjectColor.slice(0,3);r.highlightedObjectColor=i}if(t.highlightColor){let i=Array.from(t.highlightColor,s=>s/255);Number.isFinite(i[3])||(i[3]=1),r.highlightColor=i}return t.isActive!==void 0&&(r.isActive=!!t.isActive,r.isAttribute=!!t.isAttribute),t.useFloatColors!==void 0&&(r.useFloatColors=!!t.useFloatColors),r}function lh(t,e=[],r=0){let i=Math.fround(t),s=t-i;return e[r]=i,e[r+1]=s,e}function Lm(t){return t-Math.fround(t)}function km(t){let e=new Float32Array(32);for(let r=0;r<4;++r)for(let i=0;i<4;++i){let s=r*4+i;lh(t[i*4+r],e,s*2)}return e}var Bm=`uniform float ONE;
vec2 split(float a) {
const float SPLIT = 4097.0;
float t = a * SPLIT;
@@ -438,7 +438,7 @@ return sum_fp64(split(yn), prod);
return sum_fp64(vec2(yn, 0.0), prod);
#endif
}
-`;var q1={ONE:1};function G1(){return q1}var Wr={name:"fp64-arithmetic",vs:Bm,getUniforms:G1,fp64ify:uh,fp64LowPart:Lm,fp64ifyMatrix4:km};var UU=1/Math.PI*180,zU=1/180*Math.PI,Z1={EPSILON:1e-12,debug:!1,precision:4,printTypes:!1,printDegrees:!1,printRowMajor:!0,_cartographicRadians:!1};globalThis.mathgl=globalThis.mathgl||{config:{...Z1}};var Me=globalThis.mathgl.config;function fh(t,{precision:e=Me.precision}={}){return t=J1(t),`${parseFloat(t.toPrecision(e))}`}function _r(t){return Array.isArray(t)||ArrayBuffer.isView(t)&&!(t instanceof DataView)}function yt(t,e,r){return eA(t,i=>Math.max(e,Math.min(r,i)))}function Ct(t,e,r){return _r(t)?t.map((i,s)=>Ct(i,e[s],r)):r*e+(1-r)*t}function yr(t,e,r){let i=Me.EPSILON;r&&(Me.EPSILON=r);try{if(t===e)return!0;if(_r(t)&&_r(e)){if(t.length!==e.length)return!1;for(let s=0;s0?", ":"")+fh(this[i],e);return`${e.printTypes?this.constructor.name:""}[${r}]`}equals(e){if(!e||this.length!==e.length)return!1;for(let r=0;r=0&&e=0&&eoA,angle:()=>EA,ceil:()=>aA,clone:()=>rA,copy:()=>sA,create:()=>Um,cross:()=>yA,dist:()=>FA,distance:()=>Hm,div:()=>NA,divide:()=>Wm,dot:()=>_A,equals:()=>CA,exactEquals:()=>RA,floor:()=>cA,forEach:()=>kA,fromValues:()=>iA,inverse:()=>gA,len:()=>MA,length:()=>Xm,lerp:()=>xA,max:()=>uA,min:()=>lA,mul:()=>OA,multiply:()=>Vm,negate:()=>pA,normalize:()=>mA,random:()=>TA,rotate:()=>AA,round:()=>fA,scale:()=>hA,scaleAndAdd:()=>dA,set:()=>nA,sqrDist:()=>DA,sqrLen:()=>LA,squaredDistance:()=>jm,squaredLength:()=>$m,str:()=>PA,sub:()=>IA,subtract:()=>zm,transformMat2:()=>vA,transformMat2d:()=>bA,transformMat3:()=>SA,transformMat4:()=>dh,zero:()=>wA});var Te=typeof Float32Array<"u"?Float32Array:Array,Gt=Math.random;function xt(t){return t>=0?Math.round(t):t%.5===0?Math.floor(t):Math.round(t)}var ZU=Math.PI/180;function Um(){let t=new Te(2);return Te!=Float32Array&&(t[0]=0,t[1]=0),t}function rA(t){let e=new Te(2);return e[0]=t[0],e[1]=t[1],e}function iA(t,e){let r=new Te(2);return r[0]=t,r[1]=e,r}function sA(t,e){return t[0]=e[0],t[1]=e[1],t}function nA(t,e,r){return t[0]=e,t[1]=r,t}function oA(t,e,r){return t[0]=e[0]+r[0],t[1]=e[1]+r[1],t}function zm(t,e,r){return t[0]=e[0]-r[0],t[1]=e[1]-r[1],t}function Vm(t,e,r){return t[0]=e[0]*r[0],t[1]=e[1]*r[1],t}function Wm(t,e,r){return t[0]=e[0]/r[0],t[1]=e[1]/r[1],t}function aA(t,e){return t[0]=Math.ceil(e[0]),t[1]=Math.ceil(e[1]),t}function cA(t,e){return t[0]=Math.floor(e[0]),t[1]=Math.floor(e[1]),t}function lA(t,e,r){return t[0]=Math.min(e[0],r[0]),t[1]=Math.min(e[1],r[1]),t}function uA(t,e,r){return t[0]=Math.max(e[0],r[0]),t[1]=Math.max(e[1],r[1]),t}function fA(t,e){return t[0]=xt(e[0]),t[1]=xt(e[1]),t}function hA(t,e,r){return t[0]=e[0]*r,t[1]=e[1]*r,t}function dA(t,e,r,i){return t[0]=e[0]+r[0]*i,t[1]=e[1]+r[1]*i,t}function Hm(t,e){let r=e[0]-t[0],i=e[1]-t[1];return Math.sqrt(r*r+i*i)}function jm(t,e){let r=e[0]-t[0],i=e[1]-t[1];return r*r+i*i}function Xm(t){let e=t[0],r=t[1];return Math.sqrt(e*e+r*r)}function $m(t){let e=t[0],r=t[1];return e*e+r*r}function pA(t,e){return t[0]=-e[0],t[1]=-e[1],t}function gA(t,e){return t[0]=1/e[0],t[1]=1/e[1],t}function mA(t,e){let r=e[0],i=e[1],s=r*r+i*i;return s>0&&(s=1/Math.sqrt(s)),t[0]=e[0]*s,t[1]=e[1]*s,t}function _A(t,e){return t[0]*e[0]+t[1]*e[1]}function yA(t,e,r){let i=e[0]*r[1]-e[1]*r[0];return t[0]=t[1]=0,t[2]=i,t}function xA(t,e,r,i){let s=e[0],n=e[1];return t[0]=s+i*(r[0]-s),t[1]=n+i*(r[1]-n),t}function TA(t,e){e=e===void 0?1:e;let r=Gt()*2*Math.PI;return t[0]=Math.cos(r)*e,t[1]=Math.sin(r)*e,t}function vA(t,e,r){let i=e[0],s=e[1];return t[0]=r[0]*i+r[2]*s,t[1]=r[1]*i+r[3]*s,t}function bA(t,e,r){let i=e[0],s=e[1];return t[0]=r[0]*i+r[2]*s+r[4],t[1]=r[1]*i+r[3]*s+r[5],t}function SA(t,e,r){let i=e[0],s=e[1];return t[0]=r[0]*i+r[3]*s+r[6],t[1]=r[1]*i+r[4]*s+r[7],t}function dh(t,e,r){let i=e[0],s=e[1];return t[0]=r[0]*i+r[4]*s+r[12],t[1]=r[1]*i+r[5]*s+r[13],t}function AA(t,e,r,i){let s=e[0]-r[0],n=e[1]-r[1],o=Math.sin(i),a=Math.cos(i);return t[0]=s*a-n*o+r[0],t[1]=s*o+n*a+r[1],t}function EA(t,e){let r=t[0],i=t[1],s=e[0],n=e[1],o=Math.sqrt((r*r+i*i)*(s*s+n*n)),a=o&&(r*s+i*n)/o;return Math.acos(Math.min(Math.max(a,-1),1))}function wA(t){return t[0]=0,t[1]=0,t}function PA(t){return`vec2(${t[0]}, ${t[1]})`}function RA(t,e){return t[0]===e[0]&&t[1]===e[1]}function CA(t,e){let r=t[0],i=t[1],s=e[0],n=e[1];return Math.abs(r-s)<=1e-6*Math.max(1,Math.abs(r),Math.abs(s))&&Math.abs(i-n)<=1e-6*Math.max(1,Math.abs(i),Math.abs(n))}var MA=Xm,IA=zm,OA=Vm,NA=Wm,FA=Hm,DA=jm,LA=$m,kA=function(){let t=Um();return function(e,r,i,s,n,o){let a,c;for(r||(r=2),i||(i=0),s?c=Math.min(s*r+i,e.length):c=e.length,a=i;aWA,angle:()=>vh,bezier:()=>rE,ceil:()=>HA,clone:()=>BA,copy:()=>zA,create:()=>qm,cross:()=>gh,dist:()=>fE,distance:()=>e_,div:()=>uE,divide:()=>Qm,dot:()=>ph,equals:()=>aE,exactEquals:()=>oE,floor:()=>jA,forEach:()=>gE,fromValues:()=>UA,hermite:()=>tE,inverse:()=>ZA,len:()=>dE,length:()=>Gm,lerp:()=>QA,max:()=>$A,min:()=>XA,mul:()=>lE,multiply:()=>Jm,negate:()=>GA,normalize:()=>JA,random:()=>iE,rotateX:()=>yh,rotateY:()=>xh,rotateZ:()=>Th,round:()=>YA,scale:()=>KA,scaleAndAdd:()=>qA,set:()=>VA,slerp:()=>eE,sqrDist:()=>hE,sqrLen:()=>pE,squaredDistance:()=>t_,squaredLength:()=>r_,str:()=>nE,sub:()=>cE,subtract:()=>Zm,transformMat3:()=>mh,transformMat4:()=>qn,transformQuat:()=>_h,zero:()=>sE});function qm(){let t=new Te(3);return Te!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0),t}function BA(t){let e=new Te(3);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e}function Gm(t){let e=t[0],r=t[1],i=t[2];return Math.sqrt(e*e+r*r+i*i)}function UA(t,e,r){let i=new Te(3);return i[0]=t,i[1]=e,i[2]=r,i}function zA(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}function VA(t,e,r,i){return t[0]=e,t[1]=r,t[2]=i,t}function WA(t,e,r){return t[0]=e[0]+r[0],t[1]=e[1]+r[1],t[2]=e[2]+r[2],t}function Zm(t,e,r){return t[0]=e[0]-r[0],t[1]=e[1]-r[1],t[2]=e[2]-r[2],t}function Jm(t,e,r){return t[0]=e[0]*r[0],t[1]=e[1]*r[1],t[2]=e[2]*r[2],t}function Qm(t,e,r){return t[0]=e[0]/r[0],t[1]=e[1]/r[1],t[2]=e[2]/r[2],t}function HA(t,e){return t[0]=Math.ceil(e[0]),t[1]=Math.ceil(e[1]),t[2]=Math.ceil(e[2]),t}function jA(t,e){return t[0]=Math.floor(e[0]),t[1]=Math.floor(e[1]),t[2]=Math.floor(e[2]),t}function XA(t,e,r){return t[0]=Math.min(e[0],r[0]),t[1]=Math.min(e[1],r[1]),t[2]=Math.min(e[2],r[2]),t}function $A(t,e,r){return t[0]=Math.max(e[0],r[0]),t[1]=Math.max(e[1],r[1]),t[2]=Math.max(e[2],r[2]),t}function YA(t,e){return t[0]=xt(e[0]),t[1]=xt(e[1]),t[2]=xt(e[2]),t}function KA(t,e,r){return t[0]=e[0]*r,t[1]=e[1]*r,t[2]=e[2]*r,t}function qA(t,e,r,i){return t[0]=e[0]+r[0]*i,t[1]=e[1]+r[1]*i,t[2]=e[2]+r[2]*i,t}function e_(t,e){let r=e[0]-t[0],i=e[1]-t[1],s=e[2]-t[2];return Math.sqrt(r*r+i*i+s*s)}function t_(t,e){let r=e[0]-t[0],i=e[1]-t[1],s=e[2]-t[2];return r*r+i*i+s*s}function r_(t){let e=t[0],r=t[1],i=t[2];return e*e+r*r+i*i}function GA(t,e){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t}function ZA(t,e){return t[0]=1/e[0],t[1]=1/e[1],t[2]=1/e[2],t}function JA(t,e){let r=e[0],i=e[1],s=e[2],n=r*r+i*i+s*s;return n>0&&(n=1/Math.sqrt(n)),t[0]=e[0]*n,t[1]=e[1]*n,t[2]=e[2]*n,t}function ph(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}function gh(t,e,r){let i=e[0],s=e[1],n=e[2],o=r[0],a=r[1],c=r[2];return t[0]=s*c-n*a,t[1]=n*o-i*c,t[2]=i*a-s*o,t}function QA(t,e,r,i){let s=e[0],n=e[1],o=e[2];return t[0]=s+i*(r[0]-s),t[1]=n+i*(r[1]-n),t[2]=o+i*(r[2]-o),t}function eE(t,e,r,i){let s=Math.acos(Math.min(Math.max(ph(e,r),-1),1)),n=Math.sin(s),o=Math.sin((1-i)*s)/n,a=Math.sin(i*s)/n;return t[0]=o*e[0]+a*r[0],t[1]=o*e[1]+a*r[1],t[2]=o*e[2]+a*r[2],t}function tE(t,e,r,i,s,n){let o=n*n,a=o*(2*n-3)+1,c=o*(n-2)+n,l=o*(n-1),u=o*(3-2*n);return t[0]=e[0]*a+r[0]*c+i[0]*l+s[0]*u,t[1]=e[1]*a+r[1]*c+i[1]*l+s[1]*u,t[2]=e[2]*a+r[2]*c+i[2]*l+s[2]*u,t}function rE(t,e,r,i,s,n){let o=1-n,a=o*o,c=n*n,l=a*o,u=3*n*a,f=3*c*o,h=c*n;return t[0]=e[0]*l+r[0]*u+i[0]*f+s[0]*h,t[1]=e[1]*l+r[1]*u+i[1]*f+s[1]*h,t[2]=e[2]*l+r[2]*u+i[2]*f+s[2]*h,t}function iE(t,e){e=e===void 0?1:e;let r=Gt()*2*Math.PI,i=Gt()*2-1,s=Math.sqrt(1-i*i)*e;return t[0]=Math.cos(r)*s,t[1]=Math.sin(r)*s,t[2]=i*e,t}function qn(t,e,r){let i=e[0],s=e[1],n=e[2],o=r[3]*i+r[7]*s+r[11]*n+r[15];return o=o||1,t[0]=(r[0]*i+r[4]*s+r[8]*n+r[12])/o,t[1]=(r[1]*i+r[5]*s+r[9]*n+r[13])/o,t[2]=(r[2]*i+r[6]*s+r[10]*n+r[14])/o,t}function mh(t,e,r){let i=e[0],s=e[1],n=e[2];return t[0]=i*r[0]+s*r[3]+n*r[6],t[1]=i*r[1]+s*r[4]+n*r[7],t[2]=i*r[2]+s*r[5]+n*r[8],t}function _h(t,e,r){let i=r[0],s=r[1],n=r[2],o=r[3],a=e[0],c=e[1],l=e[2],u=s*l-n*c,f=n*a-i*l,h=i*c-s*a,d=s*h-n*f,p=n*u-i*h,g=i*f-s*u,_=o*2;return u*=_,f*=_,h*=_,d*=2,p*=2,g*=2,t[0]=a+u+d,t[1]=c+f+p,t[2]=l+h+g,t}function yh(t,e,r,i){let s=[],n=[];return s[0]=e[0]-r[0],s[1]=e[1]-r[1],s[2]=e[2]-r[2],n[0]=s[0],n[1]=s[1]*Math.cos(i)-s[2]*Math.sin(i),n[2]=s[1]*Math.sin(i)+s[2]*Math.cos(i),t[0]=n[0]+r[0],t[1]=n[1]+r[1],t[2]=n[2]+r[2],t}function xh(t,e,r,i){let s=[],n=[];return s[0]=e[0]-r[0],s[1]=e[1]-r[1],s[2]=e[2]-r[2],n[0]=s[2]*Math.sin(i)+s[0]*Math.cos(i),n[1]=s[1],n[2]=s[2]*Math.cos(i)-s[0]*Math.sin(i),t[0]=n[0]+r[0],t[1]=n[1]+r[1],t[2]=n[2]+r[2],t}function Th(t,e,r,i){let s=[],n=[];return s[0]=e[0]-r[0],s[1]=e[1]-r[1],s[2]=e[2]-r[2],n[0]=s[0]*Math.cos(i)-s[1]*Math.sin(i),n[1]=s[0]*Math.sin(i)+s[1]*Math.cos(i),n[2]=s[2],t[0]=n[0]+r[0],t[1]=n[1]+r[1],t[2]=n[2]+r[2],t}function vh(t,e){let r=t[0],i=t[1],s=t[2],n=e[0],o=e[1],a=e[2],c=Math.sqrt((r*r+i*i+s*s)*(n*n+o*o+a*a)),l=c&&ph(t,e)/c;return Math.acos(Math.min(Math.max(l,-1),1))}function sE(t){return t[0]=0,t[1]=0,t[2]=0,t}function nE(t){return`vec3(${t[0]}, ${t[1]}, ${t[2]})`}function oE(t,e){return t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]}function aE(t,e){let r=t[0],i=t[1],s=t[2],n=e[0],o=e[1],a=e[2];return Math.abs(r-n)<=1e-6*Math.max(1,Math.abs(r),Math.abs(n))&&Math.abs(i-o)<=1e-6*Math.max(1,Math.abs(i),Math.abs(o))&&Math.abs(s-a)<=1e-6*Math.max(1,Math.abs(s),Math.abs(a))}var cE=Zm,lE=Jm,uE=Qm,fE=e_,hE=t_,dE=Gm,pE=r_,gE=function(){let t=qm();return function(e,r,i,s,n,o){let a,c;for(r||(r=3),i||(i=0),s?c=Math.min(s*r+i,e.length):c=e.length,a=i;azE,adjoint:()=>vE,clone:()=>_E,copy:()=>yE,create:()=>mE,decompose:()=>IE,determinant:()=>Eh,equals:()=>jE,exactEquals:()=>HE,frob:()=>UE,fromQuat:()=>Oh,fromQuat2:()=>RE,fromRotation:()=>AE,fromRotationTranslation:()=>s_,fromRotationTranslationScale:()=>OE,fromRotationTranslationScaleOrigin:()=>NE,fromScaling:()=>SE,fromTranslation:()=>bE,fromValues:()=>xE,fromXRotation:()=>EE,fromYRotation:()=>wE,fromZRotation:()=>PE,frustum:()=>Nh,getRotation:()=>ME,getScaling:()=>n_,getTranslation:()=>CE,identity:()=>i_,invert:()=>Ah,lookAt:()=>Lh,mul:()=>XE,multiply:()=>Gn,multiplyScalar:()=>VE,multiplyScalarAndAdd:()=>WE,ortho:()=>Dh,orthoNO:()=>a_,orthoZO:()=>LE,perspective:()=>Fh,perspectiveFromFieldOfView:()=>DE,perspectiveNO:()=>o_,perspectiveZO:()=>FE,rotate:()=>Rh,rotateX:()=>Ch,rotateY:()=>Mh,rotateZ:()=>Ih,scale:()=>Ph,set:()=>TE,str:()=>BE,sub:()=>$E,subtract:()=>c_,targetTo:()=>kE,translate:()=>wh,transpose:()=>Sh});function mE(){let t=new Te(16);return Te!=Float32Array&&(t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0),t[0]=1,t[5]=1,t[10]=1,t[15]=1,t}function _E(t){let e=new Te(16);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e}function yE(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t}function xE(t,e,r,i,s,n,o,a,c,l,u,f,h,d,p,g){let _=new Te(16);return _[0]=t,_[1]=e,_[2]=r,_[3]=i,_[4]=s,_[5]=n,_[6]=o,_[7]=a,_[8]=c,_[9]=l,_[10]=u,_[11]=f,_[12]=h,_[13]=d,_[14]=p,_[15]=g,_}function TE(t,e,r,i,s,n,o,a,c,l,u,f,h,d,p,g,_){return t[0]=e,t[1]=r,t[2]=i,t[3]=s,t[4]=n,t[5]=o,t[6]=a,t[7]=c,t[8]=l,t[9]=u,t[10]=f,t[11]=h,t[12]=d,t[13]=p,t[14]=g,t[15]=_,t}function i_(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}function Sh(t,e){if(t===e){let r=e[1],i=e[2],s=e[3],n=e[6],o=e[7],a=e[11];t[1]=e[4],t[2]=e[8],t[3]=e[12],t[4]=r,t[6]=e[9],t[7]=e[13],t[8]=i,t[9]=n,t[11]=e[14],t[12]=s,t[13]=o,t[14]=a}else t[0]=e[0],t[1]=e[4],t[2]=e[8],t[3]=e[12],t[4]=e[1],t[5]=e[5],t[6]=e[9],t[7]=e[13],t[8]=e[2],t[9]=e[6],t[10]=e[10],t[11]=e[14],t[12]=e[3],t[13]=e[7],t[14]=e[11],t[15]=e[15];return t}function Ah(t,e){let r=e[0],i=e[1],s=e[2],n=e[3],o=e[4],a=e[5],c=e[6],l=e[7],u=e[8],f=e[9],h=e[10],d=e[11],p=e[12],g=e[13],_=e[14],x=e[15],v=r*a-i*o,b=r*c-s*o,A=r*l-n*o,C=i*c-s*a,M=i*l-n*a,F=s*l-n*c,N=u*g-f*p,D=u*_-h*p,L=u*x-d*p,Y=f*_-h*g,X=f*x-d*g,$=h*x-d*_,Z=v*$-b*X+A*Y+C*L-M*D+F*N;return Z?(Z=1/Z,t[0]=(a*$-c*X+l*Y)*Z,t[1]=(s*X-i*$-n*Y)*Z,t[2]=(g*F-_*M+x*C)*Z,t[3]=(h*M-f*F-d*C)*Z,t[4]=(c*L-o*$-l*D)*Z,t[5]=(r*$-s*L+n*D)*Z,t[6]=(_*A-p*F-x*b)*Z,t[7]=(u*F-h*A+d*b)*Z,t[8]=(o*X-a*L+l*N)*Z,t[9]=(i*L-r*X-n*N)*Z,t[10]=(p*M-g*A+x*v)*Z,t[11]=(f*A-u*M-d*v)*Z,t[12]=(a*D-o*Y-c*N)*Z,t[13]=(r*Y-i*D+s*N)*Z,t[14]=(g*b-p*C-_*v)*Z,t[15]=(u*C-f*b+h*v)*Z,t):null}function vE(t,e){let r=e[0],i=e[1],s=e[2],n=e[3],o=e[4],a=e[5],c=e[6],l=e[7],u=e[8],f=e[9],h=e[10],d=e[11],p=e[12],g=e[13],_=e[14],x=e[15],v=r*a-i*o,b=r*c-s*o,A=r*l-n*o,C=i*c-s*a,M=i*l-n*a,F=s*l-n*c,N=u*g-f*p,D=u*_-h*p,L=u*x-d*p,Y=f*_-h*g,X=f*x-d*g,$=h*x-d*_;return t[0]=a*$-c*X+l*Y,t[1]=s*X-i*$-n*Y,t[2]=g*F-_*M+x*C,t[3]=h*M-f*F-d*C,t[4]=c*L-o*$-l*D,t[5]=r*$-s*L+n*D,t[6]=_*A-p*F-x*b,t[7]=u*F-h*A+d*b,t[8]=o*X-a*L+l*N,t[9]=i*L-r*X-n*N,t[10]=p*M-g*A+x*v,t[11]=f*A-u*M-d*v,t[12]=a*D-o*Y-c*N,t[13]=r*Y-i*D+s*N,t[14]=g*b-p*C-_*v,t[15]=u*C-f*b+h*v,t}function Eh(t){let e=t[0],r=t[1],i=t[2],s=t[3],n=t[4],o=t[5],a=t[6],c=t[7],l=t[8],u=t[9],f=t[10],h=t[11],d=t[12],p=t[13],g=t[14],_=t[15],x=e*o-r*n,v=e*a-i*n,b=r*a-i*o,A=l*p-u*d,C=l*g-f*d,M=u*g-f*p,F=e*M-r*C+i*A,N=n*M-o*C+a*A,D=l*b-u*v+f*x,L=d*b-p*v+g*x;return c*F-s*N+_*D-h*L}function Gn(t,e,r){let i=e[0],s=e[1],n=e[2],o=e[3],a=e[4],c=e[5],l=e[6],u=e[7],f=e[8],h=e[9],d=e[10],p=e[11],g=e[12],_=e[13],x=e[14],v=e[15],b=r[0],A=r[1],C=r[2],M=r[3];return t[0]=b*i+A*a+C*f+M*g,t[1]=b*s+A*c+C*h+M*_,t[2]=b*n+A*l+C*d+M*x,t[3]=b*o+A*u+C*p+M*v,b=r[4],A=r[5],C=r[6],M=r[7],t[4]=b*i+A*a+C*f+M*g,t[5]=b*s+A*c+C*h+M*_,t[6]=b*n+A*l+C*d+M*x,t[7]=b*o+A*u+C*p+M*v,b=r[8],A=r[9],C=r[10],M=r[11],t[8]=b*i+A*a+C*f+M*g,t[9]=b*s+A*c+C*h+M*_,t[10]=b*n+A*l+C*d+M*x,t[11]=b*o+A*u+C*p+M*v,b=r[12],A=r[13],C=r[14],M=r[15],t[12]=b*i+A*a+C*f+M*g,t[13]=b*s+A*c+C*h+M*_,t[14]=b*n+A*l+C*d+M*x,t[15]=b*o+A*u+C*p+M*v,t}function wh(t,e,r){let i=r[0],s=r[1],n=r[2],o,a,c,l,u,f,h,d,p,g,_,x;return e===t?(t[12]=e[0]*i+e[4]*s+e[8]*n+e[12],t[13]=e[1]*i+e[5]*s+e[9]*n+e[13],t[14]=e[2]*i+e[6]*s+e[10]*n+e[14],t[15]=e[3]*i+e[7]*s+e[11]*n+e[15]):(o=e[0],a=e[1],c=e[2],l=e[3],u=e[4],f=e[5],h=e[6],d=e[7],p=e[8],g=e[9],_=e[10],x=e[11],t[0]=o,t[1]=a,t[2]=c,t[3]=l,t[4]=u,t[5]=f,t[6]=h,t[7]=d,t[8]=p,t[9]=g,t[10]=_,t[11]=x,t[12]=o*i+u*s+p*n+e[12],t[13]=a*i+f*s+g*n+e[13],t[14]=c*i+h*s+_*n+e[14],t[15]=l*i+d*s+x*n+e[15]),t}function Ph(t,e,r){let i=r[0],s=r[1],n=r[2];return t[0]=e[0]*i,t[1]=e[1]*i,t[2]=e[2]*i,t[3]=e[3]*i,t[4]=e[4]*s,t[5]=e[5]*s,t[6]=e[6]*s,t[7]=e[7]*s,t[8]=e[8]*n,t[9]=e[9]*n,t[10]=e[10]*n,t[11]=e[11]*n,t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t}function Rh(t,e,r,i){let s=i[0],n=i[1],o=i[2],a=Math.sqrt(s*s+n*n+o*o),c,l,u,f,h,d,p,g,_,x,v,b,A,C,M,F,N,D,L,Y,X,$,Z,ge;return a<1e-6?null:(a=1/a,s*=a,n*=a,o*=a,l=Math.sin(r),c=Math.cos(r),u=1-c,f=e[0],h=e[1],d=e[2],p=e[3],g=e[4],_=e[5],x=e[6],v=e[7],b=e[8],A=e[9],C=e[10],M=e[11],F=s*s*u+c,N=n*s*u+o*l,D=o*s*u-n*l,L=s*n*u-o*l,Y=n*n*u+c,X=o*n*u+s*l,$=s*o*u+n*l,Z=n*o*u-s*l,ge=o*o*u+c,t[0]=f*F+g*N+b*D,t[1]=h*F+_*N+A*D,t[2]=d*F+x*N+C*D,t[3]=p*F+v*N+M*D,t[4]=f*L+g*Y+b*X,t[5]=h*L+_*Y+A*X,t[6]=d*L+x*Y+C*X,t[7]=p*L+v*Y+M*X,t[8]=f*$+g*Z+b*ge,t[9]=h*$+_*Z+A*ge,t[10]=d*$+x*Z+C*ge,t[11]=p*$+v*Z+M*ge,e!==t&&(t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]),t)}function Ch(t,e,r){let i=Math.sin(r),s=Math.cos(r),n=e[4],o=e[5],a=e[6],c=e[7],l=e[8],u=e[9],f=e[10],h=e[11];return e!==t&&(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]),t[4]=n*s+l*i,t[5]=o*s+u*i,t[6]=a*s+f*i,t[7]=c*s+h*i,t[8]=l*s-n*i,t[9]=u*s-o*i,t[10]=f*s-a*i,t[11]=h*s-c*i,t}function Mh(t,e,r){let i=Math.sin(r),s=Math.cos(r),n=e[0],o=e[1],a=e[2],c=e[3],l=e[8],u=e[9],f=e[10],h=e[11];return e!==t&&(t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]),t[0]=n*s-l*i,t[1]=o*s-u*i,t[2]=a*s-f*i,t[3]=c*s-h*i,t[8]=n*i+l*s,t[9]=o*i+u*s,t[10]=a*i+f*s,t[11]=c*i+h*s,t}function Ih(t,e,r){let i=Math.sin(r),s=Math.cos(r),n=e[0],o=e[1],a=e[2],c=e[3],l=e[4],u=e[5],f=e[6],h=e[7];return e!==t&&(t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]),t[0]=n*s+l*i,t[1]=o*s+u*i,t[2]=a*s+f*i,t[3]=c*s+h*i,t[4]=l*s-n*i,t[5]=u*s-o*i,t[6]=f*s-a*i,t[7]=h*s-c*i,t}function bE(t,e){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=e[0],t[13]=e[1],t[14]=e[2],t[15]=1,t}function SE(t,e){return t[0]=e[0],t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=e[1],t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=e[2],t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}function AE(t,e,r){let i=r[0],s=r[1],n=r[2],o=Math.sqrt(i*i+s*s+n*n),a,c,l;return o<1e-6?null:(o=1/o,i*=o,s*=o,n*=o,c=Math.sin(e),a=Math.cos(e),l=1-a,t[0]=i*i*l+a,t[1]=s*i*l+n*c,t[2]=n*i*l-s*c,t[3]=0,t[4]=i*s*l-n*c,t[5]=s*s*l+a,t[6]=n*s*l+i*c,t[7]=0,t[8]=i*n*l+s*c,t[9]=s*n*l-i*c,t[10]=n*n*l+a,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t)}function EE(t,e){let r=Math.sin(e),i=Math.cos(e);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=i,t[6]=r,t[7]=0,t[8]=0,t[9]=-r,t[10]=i,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}function wE(t,e){let r=Math.sin(e),i=Math.cos(e);return t[0]=i,t[1]=0,t[2]=-r,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=r,t[9]=0,t[10]=i,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}function PE(t,e){let r=Math.sin(e),i=Math.cos(e);return t[0]=i,t[1]=r,t[2]=0,t[3]=0,t[4]=-r,t[5]=i,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}function s_(t,e,r){let i=e[0],s=e[1],n=e[2],o=e[3],a=i+i,c=s+s,l=n+n,u=i*a,f=i*c,h=i*l,d=s*c,p=s*l,g=n*l,_=o*a,x=o*c,v=o*l;return t[0]=1-(d+g),t[1]=f+v,t[2]=h-x,t[3]=0,t[4]=f-v,t[5]=1-(u+g),t[6]=p+_,t[7]=0,t[8]=h+x,t[9]=p-_,t[10]=1-(u+d),t[11]=0,t[12]=r[0],t[13]=r[1],t[14]=r[2],t[15]=1,t}function RE(t,e){let r=new Te(3),i=-e[0],s=-e[1],n=-e[2],o=e[3],a=e[4],c=e[5],l=e[6],u=e[7],f=i*i+s*s+n*n+o*o;return f>0?(r[0]=(a*o+u*i+c*n-l*s)*2/f,r[1]=(c*o+u*s+l*i-a*n)*2/f,r[2]=(l*o+u*n+a*s-c*i)*2/f):(r[0]=(a*o+u*i+c*n-l*s)*2,r[1]=(c*o+u*s+l*i-a*n)*2,r[2]=(l*o+u*n+a*s-c*i)*2),s_(t,e,r),t}function CE(t,e){return t[0]=e[12],t[1]=e[13],t[2]=e[14],t}function n_(t,e){let r=e[0],i=e[1],s=e[2],n=e[4],o=e[5],a=e[6],c=e[8],l=e[9],u=e[10];return t[0]=Math.sqrt(r*r+i*i+s*s),t[1]=Math.sqrt(n*n+o*o+a*a),t[2]=Math.sqrt(c*c+l*l+u*u),t}function ME(t,e){let r=new Te(3);n_(r,e);let i=1/r[0],s=1/r[1],n=1/r[2],o=e[0]*i,a=e[1]*s,c=e[2]*n,l=e[4]*i,u=e[5]*s,f=e[6]*n,h=e[8]*i,d=e[9]*s,p=e[10]*n,g=o+u+p,_=0;return g>0?(_=Math.sqrt(g+1)*2,t[3]=.25*_,t[0]=(f-d)/_,t[1]=(h-c)/_,t[2]=(a-l)/_):o>u&&o>p?(_=Math.sqrt(1+o-u-p)*2,t[3]=(f-d)/_,t[0]=.25*_,t[1]=(a+l)/_,t[2]=(h+c)/_):u>p?(_=Math.sqrt(1+u-o-p)*2,t[3]=(h-c)/_,t[0]=(a+l)/_,t[1]=.25*_,t[2]=(f+d)/_):(_=Math.sqrt(1+p-o-u)*2,t[3]=(a-l)/_,t[0]=(h+c)/_,t[1]=(f+d)/_,t[2]=.25*_),t}function IE(t,e,r,i){e[0]=i[12],e[1]=i[13],e[2]=i[14];let s=i[0],n=i[1],o=i[2],a=i[4],c=i[5],l=i[6],u=i[8],f=i[9],h=i[10];r[0]=Math.sqrt(s*s+n*n+o*o),r[1]=Math.sqrt(a*a+c*c+l*l),r[2]=Math.sqrt(u*u+f*f+h*h);let d=1/r[0],p=1/r[1],g=1/r[2],_=s*d,x=n*p,v=o*g,b=a*d,A=c*p,C=l*g,M=u*d,F=f*p,N=h*g,D=_+A+N,L=0;return D>0?(L=Math.sqrt(D+1)*2,t[3]=.25*L,t[0]=(C-F)/L,t[1]=(M-v)/L,t[2]=(x-b)/L):_>A&&_>N?(L=Math.sqrt(1+_-A-N)*2,t[3]=(C-F)/L,t[0]=.25*L,t[1]=(x+b)/L,t[2]=(M+v)/L):A>N?(L=Math.sqrt(1+A-_-N)*2,t[3]=(M-v)/L,t[0]=(x+b)/L,t[1]=.25*L,t[2]=(C+F)/L):(L=Math.sqrt(1+N-_-A)*2,t[3]=(x-b)/L,t[0]=(M+v)/L,t[1]=(C+F)/L,t[2]=.25*L),t}function OE(t,e,r,i){let s=e[0],n=e[1],o=e[2],a=e[3],c=s+s,l=n+n,u=o+o,f=s*c,h=s*l,d=s*u,p=n*l,g=n*u,_=o*u,x=a*c,v=a*l,b=a*u,A=i[0],C=i[1],M=i[2];return t[0]=(1-(p+_))*A,t[1]=(h+b)*A,t[2]=(d-v)*A,t[3]=0,t[4]=(h-b)*C,t[5]=(1-(f+_))*C,t[6]=(g+x)*C,t[7]=0,t[8]=(d+v)*M,t[9]=(g-x)*M,t[10]=(1-(f+p))*M,t[11]=0,t[12]=r[0],t[13]=r[1],t[14]=r[2],t[15]=1,t}function NE(t,e,r,i,s){let n=e[0],o=e[1],a=e[2],c=e[3],l=n+n,u=o+o,f=a+a,h=n*l,d=n*u,p=n*f,g=o*u,_=o*f,x=a*f,v=c*l,b=c*u,A=c*f,C=i[0],M=i[1],F=i[2],N=s[0],D=s[1],L=s[2],Y=(1-(g+x))*C,X=(d+A)*C,$=(p-b)*C,Z=(d-A)*M,ge=(1-(h+x))*M,rt=(_+v)*M,ot=(p+b)*F,Pt=(_-v)*F,Vt=(1-(h+g))*F;return t[0]=Y,t[1]=X,t[2]=$,t[3]=0,t[4]=Z,t[5]=ge,t[6]=rt,t[7]=0,t[8]=ot,t[9]=Pt,t[10]=Vt,t[11]=0,t[12]=r[0]+N-(Y*N+Z*D+ot*L),t[13]=r[1]+D-(X*N+ge*D+Pt*L),t[14]=r[2]+L-($*N+rt*D+Vt*L),t[15]=1,t}function Oh(t,e){let r=e[0],i=e[1],s=e[2],n=e[3],o=r+r,a=i+i,c=s+s,l=r*o,u=i*o,f=i*a,h=s*o,d=s*a,p=s*c,g=n*o,_=n*a,x=n*c;return t[0]=1-f-p,t[1]=u+x,t[2]=h-_,t[3]=0,t[4]=u-x,t[5]=1-l-p,t[6]=d+g,t[7]=0,t[8]=h+_,t[9]=d-g,t[10]=1-l-f,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}function Nh(t,e,r,i,s,n,o){let a=1/(r-e),c=1/(s-i),l=1/(n-o);return t[0]=n*2*a,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=n*2*c,t[6]=0,t[7]=0,t[8]=(r+e)*a,t[9]=(s+i)*c,t[10]=(o+n)*l,t[11]=-1,t[12]=0,t[13]=0,t[14]=o*n*2*l,t[15]=0,t}function o_(t,e,r,i,s){let n=1/Math.tan(e/2);if(t[0]=n/r,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=n,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[11]=-1,t[12]=0,t[13]=0,t[15]=0,s!=null&&s!==1/0){let o=1/(i-s);t[10]=(s+i)*o,t[14]=2*s*i*o}else t[10]=-1,t[14]=-2*i;return t}var Fh=o_;function FE(t,e,r,i,s){let n=1/Math.tan(e/2);if(t[0]=n/r,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=n,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[11]=-1,t[12]=0,t[13]=0,t[15]=0,s!=null&&s!==1/0){let o=1/(i-s);t[10]=s*o,t[14]=s*i*o}else t[10]=-1,t[14]=-i;return t}function DE(t,e,r,i){let s=Math.tan(e.upDegrees*Math.PI/180),n=Math.tan(e.downDegrees*Math.PI/180),o=Math.tan(e.leftDegrees*Math.PI/180),a=Math.tan(e.rightDegrees*Math.PI/180),c=2/(o+a),l=2/(s+n);return t[0]=c,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=l,t[6]=0,t[7]=0,t[8]=-((o-a)*c*.5),t[9]=(s-n)*l*.5,t[10]=i/(r-i),t[11]=-1,t[12]=0,t[13]=0,t[14]=i*r/(r-i),t[15]=0,t}function a_(t,e,r,i,s,n,o){let a=1/(e-r),c=1/(i-s),l=1/(n-o);return t[0]=-2*a,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=-2*c,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=2*l,t[11]=0,t[12]=(e+r)*a,t[13]=(s+i)*c,t[14]=(o+n)*l,t[15]=1,t}var Dh=a_;function LE(t,e,r,i,s,n,o){let a=1/(e-r),c=1/(i-s),l=1/(n-o);return t[0]=-2*a,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=-2*c,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=l,t[11]=0,t[12]=(e+r)*a,t[13]=(s+i)*c,t[14]=n*l,t[15]=1,t}function Lh(t,e,r,i){let s,n,o,a,c,l,u,f,h,d,p=e[0],g=e[1],_=e[2],x=i[0],v=i[1],b=i[2],A=r[0],C=r[1],M=r[2];return Math.abs(p-A)<1e-6&&Math.abs(g-C)<1e-6&&Math.abs(_-M)<1e-6?i_(t):(f=p-A,h=g-C,d=_-M,s=1/Math.sqrt(f*f+h*h+d*d),f*=s,h*=s,d*=s,n=v*d-b*h,o=b*f-x*d,a=x*h-v*f,s=Math.sqrt(n*n+o*o+a*a),s?(s=1/s,n*=s,o*=s,a*=s):(n=0,o=0,a=0),c=h*a-d*o,l=d*n-f*a,u=f*o-h*n,s=Math.sqrt(c*c+l*l+u*u),s?(s=1/s,c*=s,l*=s,u*=s):(c=0,l=0,u=0),t[0]=n,t[1]=c,t[2]=f,t[3]=0,t[4]=o,t[5]=l,t[6]=h,t[7]=0,t[8]=a,t[9]=u,t[10]=d,t[11]=0,t[12]=-(n*p+o*g+a*_),t[13]=-(c*p+l*g+u*_),t[14]=-(f*p+h*g+d*_),t[15]=1,t)}function kE(t,e,r,i){let s=e[0],n=e[1],o=e[2],a=i[0],c=i[1],l=i[2],u=s-r[0],f=n-r[1],h=o-r[2],d=u*u+f*f+h*h;d>0&&(d=1/Math.sqrt(d),u*=d,f*=d,h*=d);let p=c*h-l*f,g=l*u-a*h,_=a*f-c*u;return d=p*p+g*g+_*_,d>0&&(d=1/Math.sqrt(d),p*=d,g*=d,_*=d),t[0]=p,t[1]=g,t[2]=_,t[3]=0,t[4]=f*_-h*g,t[5]=h*p-u*_,t[6]=u*g-f*p,t[7]=0,t[8]=u,t[9]=f,t[10]=h,t[11]=0,t[12]=s,t[13]=n,t[14]=o,t[15]=1,t}function BE(t){return`mat4(${t[0]}, ${t[1]}, ${t[2]}, ${t[3]}, ${t[4]}, ${t[5]}, ${t[6]}, ${t[7]}, ${t[8]}, ${t[9]}, ${t[10]}, ${t[11]}, ${t[12]}, ${t[13]}, ${t[14]}, ${t[15]})`}function UE(t){return Math.sqrt(t[0]*t[0]+t[1]*t[1]+t[2]*t[2]+t[3]*t[3]+t[4]*t[4]+t[5]*t[5]+t[6]*t[6]+t[7]*t[7]+t[8]*t[8]+t[9]*t[9]+t[10]*t[10]+t[11]*t[11]+t[12]*t[12]+t[13]*t[13]+t[14]*t[14]+t[15]*t[15])}function zE(t,e,r){return t[0]=e[0]+r[0],t[1]=e[1]+r[1],t[2]=e[2]+r[2],t[3]=e[3]+r[3],t[4]=e[4]+r[4],t[5]=e[5]+r[5],t[6]=e[6]+r[6],t[7]=e[7]+r[7],t[8]=e[8]+r[8],t[9]=e[9]+r[9],t[10]=e[10]+r[10],t[11]=e[11]+r[11],t[12]=e[12]+r[12],t[13]=e[13]+r[13],t[14]=e[14]+r[14],t[15]=e[15]+r[15],t}function c_(t,e,r){return t[0]=e[0]-r[0],t[1]=e[1]-r[1],t[2]=e[2]-r[2],t[3]=e[3]-r[3],t[4]=e[4]-r[4],t[5]=e[5]-r[5],t[6]=e[6]-r[6],t[7]=e[7]-r[7],t[8]=e[8]-r[8],t[9]=e[9]-r[9],t[10]=e[10]-r[10],t[11]=e[11]-r[11],t[12]=e[12]-r[12],t[13]=e[13]-r[13],t[14]=e[14]-r[14],t[15]=e[15]-r[15],t}function VE(t,e,r){return t[0]=e[0]*r,t[1]=e[1]*r,t[2]=e[2]*r,t[3]=e[3]*r,t[4]=e[4]*r,t[5]=e[5]*r,t[6]=e[6]*r,t[7]=e[7]*r,t[8]=e[8]*r,t[9]=e[9]*r,t[10]=e[10]*r,t[11]=e[11]*r,t[12]=e[12]*r,t[13]=e[13]*r,t[14]=e[14]*r,t[15]=e[15]*r,t}function WE(t,e,r,i){return t[0]=e[0]+r[0]*i,t[1]=e[1]+r[1]*i,t[2]=e[2]+r[2]*i,t[3]=e[3]+r[3]*i,t[4]=e[4]+r[4]*i,t[5]=e[5]+r[5]*i,t[6]=e[6]+r[6]*i,t[7]=e[7]+r[7]*i,t[8]=e[8]+r[8]*i,t[9]=e[9]+r[9]*i,t[10]=e[10]+r[10]*i,t[11]=e[11]+r[11]*i,t[12]=e[12]+r[12]*i,t[13]=e[13]+r[13]*i,t[14]=e[14]+r[14]*i,t[15]=e[15]+r[15]*i,t}function HE(t,e){return t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]&&t[3]===e[3]&&t[4]===e[4]&&t[5]===e[5]&&t[6]===e[6]&&t[7]===e[7]&&t[8]===e[8]&&t[9]===e[9]&&t[10]===e[10]&&t[11]===e[11]&&t[12]===e[12]&&t[13]===e[13]&&t[14]===e[14]&&t[15]===e[15]}function jE(t,e){let r=t[0],i=t[1],s=t[2],n=t[3],o=t[4],a=t[5],c=t[6],l=t[7],u=t[8],f=t[9],h=t[10],d=t[11],p=t[12],g=t[13],_=t[14],x=t[15],v=e[0],b=e[1],A=e[2],C=e[3],M=e[4],F=e[5],N=e[6],D=e[7],L=e[8],Y=e[9],X=e[10],$=e[11],Z=e[12],ge=e[13],rt=e[14],ot=e[15];return Math.abs(r-v)<=1e-6*Math.max(1,Math.abs(r),Math.abs(v))&&Math.abs(i-b)<=1e-6*Math.max(1,Math.abs(i),Math.abs(b))&&Math.abs(s-A)<=1e-6*Math.max(1,Math.abs(s),Math.abs(A))&&Math.abs(n-C)<=1e-6*Math.max(1,Math.abs(n),Math.abs(C))&&Math.abs(o-M)<=1e-6*Math.max(1,Math.abs(o),Math.abs(M))&&Math.abs(a-F)<=1e-6*Math.max(1,Math.abs(a),Math.abs(F))&&Math.abs(c-N)<=1e-6*Math.max(1,Math.abs(c),Math.abs(N))&&Math.abs(l-D)<=1e-6*Math.max(1,Math.abs(l),Math.abs(D))&&Math.abs(u-L)<=1e-6*Math.max(1,Math.abs(u),Math.abs(L))&&Math.abs(f-Y)<=1e-6*Math.max(1,Math.abs(f),Math.abs(Y))&&Math.abs(h-X)<=1e-6*Math.max(1,Math.abs(h),Math.abs(X))&&Math.abs(d-$)<=1e-6*Math.max(1,Math.abs(d),Math.abs($))&&Math.abs(p-Z)<=1e-6*Math.max(1,Math.abs(p),Math.abs(Z))&&Math.abs(g-ge)<=1e-6*Math.max(1,Math.abs(g),Math.abs(ge))&&Math.abs(_-rt)<=1e-6*Math.max(1,Math.abs(_),Math.abs(rt))&&Math.abs(x-ot)<=1e-6*Math.max(1,Math.abs(x),Math.abs(ot))}var XE=Gn,$E=c_;var Jt={};ui(Jt,{add:()=>ZE,ceil:()=>JE,clone:()=>YE,copy:()=>qE,create:()=>l_,cross:()=>lw,dist:()=>Tw,distance:()=>d_,div:()=>xw,divide:()=>h_,dot:()=>cw,equals:()=>mw,exactEquals:()=>gw,floor:()=>QE,forEach:()=>Aw,fromValues:()=>KE,inverse:()=>ow,len:()=>bw,length:()=>g_,lerp:()=>uw,max:()=>tw,min:()=>ew,mul:()=>yw,multiply:()=>f_,negate:()=>nw,normalize:()=>aw,random:()=>fw,round:()=>rw,scale:()=>iw,scaleAndAdd:()=>sw,set:()=>GE,sqrDist:()=>vw,sqrLen:()=>Sw,squaredDistance:()=>p_,squaredLength:()=>m_,str:()=>pw,sub:()=>_w,subtract:()=>u_,transformMat4:()=>kh,transformQuat:()=>hw,zero:()=>dw});function l_(){let t=new Te(4);return Te!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0,t[3]=0),t}function YE(t){let e=new Te(4);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e}function KE(t,e,r,i){let s=new Te(4);return s[0]=t,s[1]=e,s[2]=r,s[3]=i,s}function qE(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t}function GE(t,e,r,i,s){return t[0]=e,t[1]=r,t[2]=i,t[3]=s,t}function ZE(t,e,r){return t[0]=e[0]+r[0],t[1]=e[1]+r[1],t[2]=e[2]+r[2],t[3]=e[3]+r[3],t}function u_(t,e,r){return t[0]=e[0]-r[0],t[1]=e[1]-r[1],t[2]=e[2]-r[2],t[3]=e[3]-r[3],t}function f_(t,e,r){return t[0]=e[0]*r[0],t[1]=e[1]*r[1],t[2]=e[2]*r[2],t[3]=e[3]*r[3],t}function h_(t,e,r){return t[0]=e[0]/r[0],t[1]=e[1]/r[1],t[2]=e[2]/r[2],t[3]=e[3]/r[3],t}function JE(t,e){return t[0]=Math.ceil(e[0]),t[1]=Math.ceil(e[1]),t[2]=Math.ceil(e[2]),t[3]=Math.ceil(e[3]),t}function QE(t,e){return t[0]=Math.floor(e[0]),t[1]=Math.floor(e[1]),t[2]=Math.floor(e[2]),t[3]=Math.floor(e[3]),t}function ew(t,e,r){return t[0]=Math.min(e[0],r[0]),t[1]=Math.min(e[1],r[1]),t[2]=Math.min(e[2],r[2]),t[3]=Math.min(e[3],r[3]),t}function tw(t,e,r){return t[0]=Math.max(e[0],r[0]),t[1]=Math.max(e[1],r[1]),t[2]=Math.max(e[2],r[2]),t[3]=Math.max(e[3],r[3]),t}function rw(t,e){return t[0]=xt(e[0]),t[1]=xt(e[1]),t[2]=xt(e[2]),t[3]=xt(e[3]),t}function iw(t,e,r){return t[0]=e[0]*r,t[1]=e[1]*r,t[2]=e[2]*r,t[3]=e[3]*r,t}function sw(t,e,r,i){return t[0]=e[0]+r[0]*i,t[1]=e[1]+r[1]*i,t[2]=e[2]+r[2]*i,t[3]=e[3]+r[3]*i,t}function d_(t,e){let r=e[0]-t[0],i=e[1]-t[1],s=e[2]-t[2],n=e[3]-t[3];return Math.sqrt(r*r+i*i+s*s+n*n)}function p_(t,e){let r=e[0]-t[0],i=e[1]-t[1],s=e[2]-t[2],n=e[3]-t[3];return r*r+i*i+s*s+n*n}function g_(t){let e=t[0],r=t[1],i=t[2],s=t[3];return Math.sqrt(e*e+r*r+i*i+s*s)}function m_(t){let e=t[0],r=t[1],i=t[2],s=t[3];return e*e+r*r+i*i+s*s}function nw(t,e){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t[3]=-e[3],t}function ow(t,e){return t[0]=1/e[0],t[1]=1/e[1],t[2]=1/e[2],t[3]=1/e[3],t}function aw(t,e){let r=e[0],i=e[1],s=e[2],n=e[3],o=r*r+i*i+s*s+n*n;return o>0&&(o=1/Math.sqrt(o)),t[0]=r*o,t[1]=i*o,t[2]=s*o,t[3]=n*o,t}function cw(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]+t[3]*e[3]}function lw(t,e,r,i){let s=r[0]*i[1]-r[1]*i[0],n=r[0]*i[2]-r[2]*i[0],o=r[0]*i[3]-r[3]*i[0],a=r[1]*i[2]-r[2]*i[1],c=r[1]*i[3]-r[3]*i[1],l=r[2]*i[3]-r[3]*i[2],u=e[0],f=e[1],h=e[2],d=e[3];return t[0]=f*l-h*c+d*a,t[1]=-(u*l)+h*o-d*n,t[2]=u*c-f*o+d*s,t[3]=-(u*a)+f*n-h*s,t}function uw(t,e,r,i){let s=e[0],n=e[1],o=e[2],a=e[3];return t[0]=s+i*(r[0]-s),t[1]=n+i*(r[1]-n),t[2]=o+i*(r[2]-o),t[3]=a+i*(r[3]-a),t}function fw(t,e){e=e===void 0?1:e;let r,i,s,n,o,a;do r=Gt()*2-1,i=Gt()*2-1,o=r*r+i*i;while(o>=1);do s=Gt()*2-1,n=Gt()*2-1,a=s*s+n*n;while(a>=1);let c=Math.sqrt((1-o)/a);return t[0]=e*r,t[1]=e*i,t[2]=e*s*c,t[3]=e*n*c,t}function kh(t,e,r){let i=e[0],s=e[1],n=e[2],o=e[3];return t[0]=r[0]*i+r[4]*s+r[8]*n+r[12]*o,t[1]=r[1]*i+r[5]*s+r[9]*n+r[13]*o,t[2]=r[2]*i+r[6]*s+r[10]*n+r[14]*o,t[3]=r[3]*i+r[7]*s+r[11]*n+r[15]*o,t}function hw(t,e,r){let i=e[0],s=e[1],n=e[2],o=r[0],a=r[1],c=r[2],l=r[3],u=l*i+a*n-c*s,f=l*s+c*i-o*n,h=l*n+o*s-a*i,d=-o*i-a*s-c*n;return t[0]=u*l+d*-o+f*-c-h*-a,t[1]=f*l+d*-a+h*-o-u*-c,t[2]=h*l+d*-c+u*-a-f*-o,t[3]=e[3],t}function dw(t){return t[0]=0,t[1]=0,t[2]=0,t[3]=0,t}function pw(t){return`vec4(${t[0]}, ${t[1]}, ${t[2]}, ${t[3]})`}function gw(t,e){return t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]&&t[3]===e[3]}function mw(t,e){let r=t[0],i=t[1],s=t[2],n=t[3],o=e[0],a=e[1],c=e[2],l=e[3];return Math.abs(r-o)<=1e-6*Math.max(1,Math.abs(r),Math.abs(o))&&Math.abs(i-a)<=1e-6*Math.max(1,Math.abs(i),Math.abs(a))&&Math.abs(s-c)<=1e-6*Math.max(1,Math.abs(s),Math.abs(c))&&Math.abs(n-l)<=1e-6*Math.max(1,Math.abs(n),Math.abs(l))}var _w=u_,yw=f_,xw=h_,Tw=d_,vw=p_,bw=g_,Sw=m_,Aw=function(){let t=l_();return function(e,r,i,s,n,o){let a,c;for(r||(r=4),i||(i=0),s?c=Math.min(s*r+i,e.length):c=e.length,a=i;aMath.PI*2)throw Error("expected radians")}function Mw(t,e,r,i,s,n){let o=2*n/(r-e),a=2*n/(s-i),c=(r+e)/(r-e),l=(s+i)/(s-i),u=-1,f=-1,h=-2*n;return t[0]=o,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=a,t[6]=0,t[7]=0,t[8]=c,t[9]=l,t[10]=u,t[11]=f,t[12]=0,t[13]=0,t[14]=h,t[15]=0,t}var Vh=`#if (defined(SHADER_TYPE_FRAGMENT) && defined(LIGHTING_FRAGMENT)) || (defined(SHADER_TYPE_VERTEX) && defined(LIGHTING_VERTEX))
+`;var q1={ONE:1};function G1(){return q1}var Wr={name:"fp64-arithmetic",vs:Bm,getUniforms:G1,fp64ify:lh,fp64LowPart:Lm,fp64ifyMatrix4:km};var UU=1/Math.PI*180,zU=1/180*Math.PI,Z1={EPSILON:1e-12,debug:!1,precision:4,printTypes:!1,printDegrees:!1,printRowMajor:!0,_cartographicRadians:!1};globalThis.mathgl=globalThis.mathgl||{config:{...Z1}};var Me=globalThis.mathgl.config;function uh(t,{precision:e=Me.precision}={}){return t=J1(t),`${parseFloat(t.toPrecision(e))}`}function _r(t){return Array.isArray(t)||ArrayBuffer.isView(t)&&!(t instanceof DataView)}function yt(t,e,r){return eA(t,i=>Math.max(e,Math.min(r,i)))}function Ct(t,e,r){return _r(t)?t.map((i,s)=>Ct(i,e[s],r)):r*e+(1-r)*t}function yr(t,e,r){let i=Me.EPSILON;r&&(Me.EPSILON=r);try{if(t===e)return!0;if(_r(t)&&_r(e)){if(t.length!==e.length)return!1;for(let s=0;s0?", ":"")+uh(this[i],e);return`${e.printTypes?this.constructor.name:""}[${r}]`}equals(e){if(!e||this.length!==e.length)return!1;for(let r=0;r=0&&e=0&&eoA,angle:()=>EA,ceil:()=>aA,clone:()=>rA,copy:()=>sA,create:()=>Um,cross:()=>yA,dist:()=>FA,distance:()=>Hm,div:()=>NA,divide:()=>Wm,dot:()=>_A,equals:()=>CA,exactEquals:()=>RA,floor:()=>cA,forEach:()=>kA,fromValues:()=>iA,inverse:()=>gA,len:()=>MA,length:()=>Xm,lerp:()=>xA,max:()=>uA,min:()=>lA,mul:()=>OA,multiply:()=>Vm,negate:()=>pA,normalize:()=>mA,random:()=>TA,rotate:()=>AA,round:()=>fA,scale:()=>hA,scaleAndAdd:()=>dA,set:()=>nA,sqrDist:()=>DA,sqrLen:()=>LA,squaredDistance:()=>jm,squaredLength:()=>$m,str:()=>PA,sub:()=>IA,subtract:()=>zm,transformMat2:()=>vA,transformMat2d:()=>bA,transformMat3:()=>SA,transformMat4:()=>hh,zero:()=>wA});var Te=typeof Float32Array<"u"?Float32Array:Array,Gt=Math.random;function xt(t){return t>=0?Math.round(t):t%.5===0?Math.floor(t):Math.round(t)}var ZU=Math.PI/180;function Um(){let t=new Te(2);return Te!=Float32Array&&(t[0]=0,t[1]=0),t}function rA(t){let e=new Te(2);return e[0]=t[0],e[1]=t[1],e}function iA(t,e){let r=new Te(2);return r[0]=t,r[1]=e,r}function sA(t,e){return t[0]=e[0],t[1]=e[1],t}function nA(t,e,r){return t[0]=e,t[1]=r,t}function oA(t,e,r){return t[0]=e[0]+r[0],t[1]=e[1]+r[1],t}function zm(t,e,r){return t[0]=e[0]-r[0],t[1]=e[1]-r[1],t}function Vm(t,e,r){return t[0]=e[0]*r[0],t[1]=e[1]*r[1],t}function Wm(t,e,r){return t[0]=e[0]/r[0],t[1]=e[1]/r[1],t}function aA(t,e){return t[0]=Math.ceil(e[0]),t[1]=Math.ceil(e[1]),t}function cA(t,e){return t[0]=Math.floor(e[0]),t[1]=Math.floor(e[1]),t}function lA(t,e,r){return t[0]=Math.min(e[0],r[0]),t[1]=Math.min(e[1],r[1]),t}function uA(t,e,r){return t[0]=Math.max(e[0],r[0]),t[1]=Math.max(e[1],r[1]),t}function fA(t,e){return t[0]=xt(e[0]),t[1]=xt(e[1]),t}function hA(t,e,r){return t[0]=e[0]*r,t[1]=e[1]*r,t}function dA(t,e,r,i){return t[0]=e[0]+r[0]*i,t[1]=e[1]+r[1]*i,t}function Hm(t,e){let r=e[0]-t[0],i=e[1]-t[1];return Math.sqrt(r*r+i*i)}function jm(t,e){let r=e[0]-t[0],i=e[1]-t[1];return r*r+i*i}function Xm(t){let e=t[0],r=t[1];return Math.sqrt(e*e+r*r)}function $m(t){let e=t[0],r=t[1];return e*e+r*r}function pA(t,e){return t[0]=-e[0],t[1]=-e[1],t}function gA(t,e){return t[0]=1/e[0],t[1]=1/e[1],t}function mA(t,e){let r=e[0],i=e[1],s=r*r+i*i;return s>0&&(s=1/Math.sqrt(s)),t[0]=e[0]*s,t[1]=e[1]*s,t}function _A(t,e){return t[0]*e[0]+t[1]*e[1]}function yA(t,e,r){let i=e[0]*r[1]-e[1]*r[0];return t[0]=t[1]=0,t[2]=i,t}function xA(t,e,r,i){let s=e[0],n=e[1];return t[0]=s+i*(r[0]-s),t[1]=n+i*(r[1]-n),t}function TA(t,e){e=e===void 0?1:e;let r=Gt()*2*Math.PI;return t[0]=Math.cos(r)*e,t[1]=Math.sin(r)*e,t}function vA(t,e,r){let i=e[0],s=e[1];return t[0]=r[0]*i+r[2]*s,t[1]=r[1]*i+r[3]*s,t}function bA(t,e,r){let i=e[0],s=e[1];return t[0]=r[0]*i+r[2]*s+r[4],t[1]=r[1]*i+r[3]*s+r[5],t}function SA(t,e,r){let i=e[0],s=e[1];return t[0]=r[0]*i+r[3]*s+r[6],t[1]=r[1]*i+r[4]*s+r[7],t}function hh(t,e,r){let i=e[0],s=e[1];return t[0]=r[0]*i+r[4]*s+r[12],t[1]=r[1]*i+r[5]*s+r[13],t}function AA(t,e,r,i){let s=e[0]-r[0],n=e[1]-r[1],o=Math.sin(i),a=Math.cos(i);return t[0]=s*a-n*o+r[0],t[1]=s*o+n*a+r[1],t}function EA(t,e){let r=t[0],i=t[1],s=e[0],n=e[1],o=Math.sqrt((r*r+i*i)*(s*s+n*n)),a=o&&(r*s+i*n)/o;return Math.acos(Math.min(Math.max(a,-1),1))}function wA(t){return t[0]=0,t[1]=0,t}function PA(t){return`vec2(${t[0]}, ${t[1]})`}function RA(t,e){return t[0]===e[0]&&t[1]===e[1]}function CA(t,e){let r=t[0],i=t[1],s=e[0],n=e[1];return Math.abs(r-s)<=1e-6*Math.max(1,Math.abs(r),Math.abs(s))&&Math.abs(i-n)<=1e-6*Math.max(1,Math.abs(i),Math.abs(n))}var MA=Xm,IA=zm,OA=Vm,NA=Wm,FA=Hm,DA=jm,LA=$m,kA=function(){let t=Um();return function(e,r,i,s,n,o){let a,c;for(r||(r=2),i||(i=0),s?c=Math.min(s*r+i,e.length):c=e.length,a=i;aWA,angle:()=>Th,bezier:()=>rE,ceil:()=>HA,clone:()=>BA,copy:()=>zA,create:()=>qm,cross:()=>ph,dist:()=>fE,distance:()=>e_,div:()=>uE,divide:()=>Qm,dot:()=>dh,equals:()=>aE,exactEquals:()=>oE,floor:()=>jA,forEach:()=>gE,fromValues:()=>UA,hermite:()=>tE,inverse:()=>ZA,len:()=>dE,length:()=>Gm,lerp:()=>QA,max:()=>$A,min:()=>XA,mul:()=>lE,multiply:()=>Jm,negate:()=>GA,normalize:()=>JA,random:()=>iE,rotateX:()=>_h,rotateY:()=>yh,rotateZ:()=>xh,round:()=>YA,scale:()=>KA,scaleAndAdd:()=>qA,set:()=>VA,slerp:()=>eE,sqrDist:()=>hE,sqrLen:()=>pE,squaredDistance:()=>t_,squaredLength:()=>r_,str:()=>nE,sub:()=>cE,subtract:()=>Zm,transformMat3:()=>gh,transformMat4:()=>qn,transformQuat:()=>mh,zero:()=>sE});function qm(){let t=new Te(3);return Te!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0),t}function BA(t){let e=new Te(3);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e}function Gm(t){let e=t[0],r=t[1],i=t[2];return Math.sqrt(e*e+r*r+i*i)}function UA(t,e,r){let i=new Te(3);return i[0]=t,i[1]=e,i[2]=r,i}function zA(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}function VA(t,e,r,i){return t[0]=e,t[1]=r,t[2]=i,t}function WA(t,e,r){return t[0]=e[0]+r[0],t[1]=e[1]+r[1],t[2]=e[2]+r[2],t}function Zm(t,e,r){return t[0]=e[0]-r[0],t[1]=e[1]-r[1],t[2]=e[2]-r[2],t}function Jm(t,e,r){return t[0]=e[0]*r[0],t[1]=e[1]*r[1],t[2]=e[2]*r[2],t}function Qm(t,e,r){return t[0]=e[0]/r[0],t[1]=e[1]/r[1],t[2]=e[2]/r[2],t}function HA(t,e){return t[0]=Math.ceil(e[0]),t[1]=Math.ceil(e[1]),t[2]=Math.ceil(e[2]),t}function jA(t,e){return t[0]=Math.floor(e[0]),t[1]=Math.floor(e[1]),t[2]=Math.floor(e[2]),t}function XA(t,e,r){return t[0]=Math.min(e[0],r[0]),t[1]=Math.min(e[1],r[1]),t[2]=Math.min(e[2],r[2]),t}function $A(t,e,r){return t[0]=Math.max(e[0],r[0]),t[1]=Math.max(e[1],r[1]),t[2]=Math.max(e[2],r[2]),t}function YA(t,e){return t[0]=xt(e[0]),t[1]=xt(e[1]),t[2]=xt(e[2]),t}function KA(t,e,r){return t[0]=e[0]*r,t[1]=e[1]*r,t[2]=e[2]*r,t}function qA(t,e,r,i){return t[0]=e[0]+r[0]*i,t[1]=e[1]+r[1]*i,t[2]=e[2]+r[2]*i,t}function e_(t,e){let r=e[0]-t[0],i=e[1]-t[1],s=e[2]-t[2];return Math.sqrt(r*r+i*i+s*s)}function t_(t,e){let r=e[0]-t[0],i=e[1]-t[1],s=e[2]-t[2];return r*r+i*i+s*s}function r_(t){let e=t[0],r=t[1],i=t[2];return e*e+r*r+i*i}function GA(t,e){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t}function ZA(t,e){return t[0]=1/e[0],t[1]=1/e[1],t[2]=1/e[2],t}function JA(t,e){let r=e[0],i=e[1],s=e[2],n=r*r+i*i+s*s;return n>0&&(n=1/Math.sqrt(n)),t[0]=e[0]*n,t[1]=e[1]*n,t[2]=e[2]*n,t}function dh(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}function ph(t,e,r){let i=e[0],s=e[1],n=e[2],o=r[0],a=r[1],c=r[2];return t[0]=s*c-n*a,t[1]=n*o-i*c,t[2]=i*a-s*o,t}function QA(t,e,r,i){let s=e[0],n=e[1],o=e[2];return t[0]=s+i*(r[0]-s),t[1]=n+i*(r[1]-n),t[2]=o+i*(r[2]-o),t}function eE(t,e,r,i){let s=Math.acos(Math.min(Math.max(dh(e,r),-1),1)),n=Math.sin(s),o=Math.sin((1-i)*s)/n,a=Math.sin(i*s)/n;return t[0]=o*e[0]+a*r[0],t[1]=o*e[1]+a*r[1],t[2]=o*e[2]+a*r[2],t}function tE(t,e,r,i,s,n){let o=n*n,a=o*(2*n-3)+1,c=o*(n-2)+n,l=o*(n-1),u=o*(3-2*n);return t[0]=e[0]*a+r[0]*c+i[0]*l+s[0]*u,t[1]=e[1]*a+r[1]*c+i[1]*l+s[1]*u,t[2]=e[2]*a+r[2]*c+i[2]*l+s[2]*u,t}function rE(t,e,r,i,s,n){let o=1-n,a=o*o,c=n*n,l=a*o,u=3*n*a,f=3*c*o,h=c*n;return t[0]=e[0]*l+r[0]*u+i[0]*f+s[0]*h,t[1]=e[1]*l+r[1]*u+i[1]*f+s[1]*h,t[2]=e[2]*l+r[2]*u+i[2]*f+s[2]*h,t}function iE(t,e){e=e===void 0?1:e;let r=Gt()*2*Math.PI,i=Gt()*2-1,s=Math.sqrt(1-i*i)*e;return t[0]=Math.cos(r)*s,t[1]=Math.sin(r)*s,t[2]=i*e,t}function qn(t,e,r){let i=e[0],s=e[1],n=e[2],o=r[3]*i+r[7]*s+r[11]*n+r[15];return o=o||1,t[0]=(r[0]*i+r[4]*s+r[8]*n+r[12])/o,t[1]=(r[1]*i+r[5]*s+r[9]*n+r[13])/o,t[2]=(r[2]*i+r[6]*s+r[10]*n+r[14])/o,t}function gh(t,e,r){let i=e[0],s=e[1],n=e[2];return t[0]=i*r[0]+s*r[3]+n*r[6],t[1]=i*r[1]+s*r[4]+n*r[7],t[2]=i*r[2]+s*r[5]+n*r[8],t}function mh(t,e,r){let i=r[0],s=r[1],n=r[2],o=r[3],a=e[0],c=e[1],l=e[2],u=s*l-n*c,f=n*a-i*l,h=i*c-s*a,d=s*h-n*f,p=n*u-i*h,g=i*f-s*u,_=o*2;return u*=_,f*=_,h*=_,d*=2,p*=2,g*=2,t[0]=a+u+d,t[1]=c+f+p,t[2]=l+h+g,t}function _h(t,e,r,i){let s=[],n=[];return s[0]=e[0]-r[0],s[1]=e[1]-r[1],s[2]=e[2]-r[2],n[0]=s[0],n[1]=s[1]*Math.cos(i)-s[2]*Math.sin(i),n[2]=s[1]*Math.sin(i)+s[2]*Math.cos(i),t[0]=n[0]+r[0],t[1]=n[1]+r[1],t[2]=n[2]+r[2],t}function yh(t,e,r,i){let s=[],n=[];return s[0]=e[0]-r[0],s[1]=e[1]-r[1],s[2]=e[2]-r[2],n[0]=s[2]*Math.sin(i)+s[0]*Math.cos(i),n[1]=s[1],n[2]=s[2]*Math.cos(i)-s[0]*Math.sin(i),t[0]=n[0]+r[0],t[1]=n[1]+r[1],t[2]=n[2]+r[2],t}function xh(t,e,r,i){let s=[],n=[];return s[0]=e[0]-r[0],s[1]=e[1]-r[1],s[2]=e[2]-r[2],n[0]=s[0]*Math.cos(i)-s[1]*Math.sin(i),n[1]=s[0]*Math.sin(i)+s[1]*Math.cos(i),n[2]=s[2],t[0]=n[0]+r[0],t[1]=n[1]+r[1],t[2]=n[2]+r[2],t}function Th(t,e){let r=t[0],i=t[1],s=t[2],n=e[0],o=e[1],a=e[2],c=Math.sqrt((r*r+i*i+s*s)*(n*n+o*o+a*a)),l=c&&dh(t,e)/c;return Math.acos(Math.min(Math.max(l,-1),1))}function sE(t){return t[0]=0,t[1]=0,t[2]=0,t}function nE(t){return`vec3(${t[0]}, ${t[1]}, ${t[2]})`}function oE(t,e){return t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]}function aE(t,e){let r=t[0],i=t[1],s=t[2],n=e[0],o=e[1],a=e[2];return Math.abs(r-n)<=1e-6*Math.max(1,Math.abs(r),Math.abs(n))&&Math.abs(i-o)<=1e-6*Math.max(1,Math.abs(i),Math.abs(o))&&Math.abs(s-a)<=1e-6*Math.max(1,Math.abs(s),Math.abs(a))}var cE=Zm,lE=Jm,uE=Qm,fE=e_,hE=t_,dE=Gm,pE=r_,gE=function(){let t=qm();return function(e,r,i,s,n,o){let a,c;for(r||(r=3),i||(i=0),s?c=Math.min(s*r+i,e.length):c=e.length,a=i;azE,adjoint:()=>vE,clone:()=>_E,copy:()=>yE,create:()=>mE,decompose:()=>IE,determinant:()=>Ah,equals:()=>jE,exactEquals:()=>HE,frob:()=>UE,fromQuat:()=>Ih,fromQuat2:()=>RE,fromRotation:()=>AE,fromRotationTranslation:()=>s_,fromRotationTranslationScale:()=>OE,fromRotationTranslationScaleOrigin:()=>NE,fromScaling:()=>SE,fromTranslation:()=>bE,fromValues:()=>xE,fromXRotation:()=>EE,fromYRotation:()=>wE,fromZRotation:()=>PE,frustum:()=>Oh,getRotation:()=>ME,getScaling:()=>n_,getTranslation:()=>CE,identity:()=>i_,invert:()=>Sh,lookAt:()=>Dh,mul:()=>XE,multiply:()=>Gn,multiplyScalar:()=>VE,multiplyScalarAndAdd:()=>WE,ortho:()=>Fh,orthoNO:()=>a_,orthoZO:()=>LE,perspective:()=>Nh,perspectiveFromFieldOfView:()=>DE,perspectiveNO:()=>o_,perspectiveZO:()=>FE,rotate:()=>Ph,rotateX:()=>Rh,rotateY:()=>Ch,rotateZ:()=>Mh,scale:()=>wh,set:()=>TE,str:()=>BE,sub:()=>$E,subtract:()=>c_,targetTo:()=>kE,translate:()=>Eh,transpose:()=>bh});function mE(){let t=new Te(16);return Te!=Float32Array&&(t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0),t[0]=1,t[5]=1,t[10]=1,t[15]=1,t}function _E(t){let e=new Te(16);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e}function yE(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t}function xE(t,e,r,i,s,n,o,a,c,l,u,f,h,d,p,g){let _=new Te(16);return _[0]=t,_[1]=e,_[2]=r,_[3]=i,_[4]=s,_[5]=n,_[6]=o,_[7]=a,_[8]=c,_[9]=l,_[10]=u,_[11]=f,_[12]=h,_[13]=d,_[14]=p,_[15]=g,_}function TE(t,e,r,i,s,n,o,a,c,l,u,f,h,d,p,g,_){return t[0]=e,t[1]=r,t[2]=i,t[3]=s,t[4]=n,t[5]=o,t[6]=a,t[7]=c,t[8]=l,t[9]=u,t[10]=f,t[11]=h,t[12]=d,t[13]=p,t[14]=g,t[15]=_,t}function i_(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}function bh(t,e){if(t===e){let r=e[1],i=e[2],s=e[3],n=e[6],o=e[7],a=e[11];t[1]=e[4],t[2]=e[8],t[3]=e[12],t[4]=r,t[6]=e[9],t[7]=e[13],t[8]=i,t[9]=n,t[11]=e[14],t[12]=s,t[13]=o,t[14]=a}else t[0]=e[0],t[1]=e[4],t[2]=e[8],t[3]=e[12],t[4]=e[1],t[5]=e[5],t[6]=e[9],t[7]=e[13],t[8]=e[2],t[9]=e[6],t[10]=e[10],t[11]=e[14],t[12]=e[3],t[13]=e[7],t[14]=e[11],t[15]=e[15];return t}function Sh(t,e){let r=e[0],i=e[1],s=e[2],n=e[3],o=e[4],a=e[5],c=e[6],l=e[7],u=e[8],f=e[9],h=e[10],d=e[11],p=e[12],g=e[13],_=e[14],x=e[15],v=r*a-i*o,b=r*c-s*o,A=r*l-n*o,C=i*c-s*a,M=i*l-n*a,F=s*l-n*c,N=u*g-f*p,D=u*_-h*p,L=u*x-d*p,Y=f*_-h*g,X=f*x-d*g,$=h*x-d*_,Z=v*$-b*X+A*Y+C*L-M*D+F*N;return Z?(Z=1/Z,t[0]=(a*$-c*X+l*Y)*Z,t[1]=(s*X-i*$-n*Y)*Z,t[2]=(g*F-_*M+x*C)*Z,t[3]=(h*M-f*F-d*C)*Z,t[4]=(c*L-o*$-l*D)*Z,t[5]=(r*$-s*L+n*D)*Z,t[6]=(_*A-p*F-x*b)*Z,t[7]=(u*F-h*A+d*b)*Z,t[8]=(o*X-a*L+l*N)*Z,t[9]=(i*L-r*X-n*N)*Z,t[10]=(p*M-g*A+x*v)*Z,t[11]=(f*A-u*M-d*v)*Z,t[12]=(a*D-o*Y-c*N)*Z,t[13]=(r*Y-i*D+s*N)*Z,t[14]=(g*b-p*C-_*v)*Z,t[15]=(u*C-f*b+h*v)*Z,t):null}function vE(t,e){let r=e[0],i=e[1],s=e[2],n=e[3],o=e[4],a=e[5],c=e[6],l=e[7],u=e[8],f=e[9],h=e[10],d=e[11],p=e[12],g=e[13],_=e[14],x=e[15],v=r*a-i*o,b=r*c-s*o,A=r*l-n*o,C=i*c-s*a,M=i*l-n*a,F=s*l-n*c,N=u*g-f*p,D=u*_-h*p,L=u*x-d*p,Y=f*_-h*g,X=f*x-d*g,$=h*x-d*_;return t[0]=a*$-c*X+l*Y,t[1]=s*X-i*$-n*Y,t[2]=g*F-_*M+x*C,t[3]=h*M-f*F-d*C,t[4]=c*L-o*$-l*D,t[5]=r*$-s*L+n*D,t[6]=_*A-p*F-x*b,t[7]=u*F-h*A+d*b,t[8]=o*X-a*L+l*N,t[9]=i*L-r*X-n*N,t[10]=p*M-g*A+x*v,t[11]=f*A-u*M-d*v,t[12]=a*D-o*Y-c*N,t[13]=r*Y-i*D+s*N,t[14]=g*b-p*C-_*v,t[15]=u*C-f*b+h*v,t}function Ah(t){let e=t[0],r=t[1],i=t[2],s=t[3],n=t[4],o=t[5],a=t[6],c=t[7],l=t[8],u=t[9],f=t[10],h=t[11],d=t[12],p=t[13],g=t[14],_=t[15],x=e*o-r*n,v=e*a-i*n,b=r*a-i*o,A=l*p-u*d,C=l*g-f*d,M=u*g-f*p,F=e*M-r*C+i*A,N=n*M-o*C+a*A,D=l*b-u*v+f*x,L=d*b-p*v+g*x;return c*F-s*N+_*D-h*L}function Gn(t,e,r){let i=e[0],s=e[1],n=e[2],o=e[3],a=e[4],c=e[5],l=e[6],u=e[7],f=e[8],h=e[9],d=e[10],p=e[11],g=e[12],_=e[13],x=e[14],v=e[15],b=r[0],A=r[1],C=r[2],M=r[3];return t[0]=b*i+A*a+C*f+M*g,t[1]=b*s+A*c+C*h+M*_,t[2]=b*n+A*l+C*d+M*x,t[3]=b*o+A*u+C*p+M*v,b=r[4],A=r[5],C=r[6],M=r[7],t[4]=b*i+A*a+C*f+M*g,t[5]=b*s+A*c+C*h+M*_,t[6]=b*n+A*l+C*d+M*x,t[7]=b*o+A*u+C*p+M*v,b=r[8],A=r[9],C=r[10],M=r[11],t[8]=b*i+A*a+C*f+M*g,t[9]=b*s+A*c+C*h+M*_,t[10]=b*n+A*l+C*d+M*x,t[11]=b*o+A*u+C*p+M*v,b=r[12],A=r[13],C=r[14],M=r[15],t[12]=b*i+A*a+C*f+M*g,t[13]=b*s+A*c+C*h+M*_,t[14]=b*n+A*l+C*d+M*x,t[15]=b*o+A*u+C*p+M*v,t}function Eh(t,e,r){let i=r[0],s=r[1],n=r[2],o,a,c,l,u,f,h,d,p,g,_,x;return e===t?(t[12]=e[0]*i+e[4]*s+e[8]*n+e[12],t[13]=e[1]*i+e[5]*s+e[9]*n+e[13],t[14]=e[2]*i+e[6]*s+e[10]*n+e[14],t[15]=e[3]*i+e[7]*s+e[11]*n+e[15]):(o=e[0],a=e[1],c=e[2],l=e[3],u=e[4],f=e[5],h=e[6],d=e[7],p=e[8],g=e[9],_=e[10],x=e[11],t[0]=o,t[1]=a,t[2]=c,t[3]=l,t[4]=u,t[5]=f,t[6]=h,t[7]=d,t[8]=p,t[9]=g,t[10]=_,t[11]=x,t[12]=o*i+u*s+p*n+e[12],t[13]=a*i+f*s+g*n+e[13],t[14]=c*i+h*s+_*n+e[14],t[15]=l*i+d*s+x*n+e[15]),t}function wh(t,e,r){let i=r[0],s=r[1],n=r[2];return t[0]=e[0]*i,t[1]=e[1]*i,t[2]=e[2]*i,t[3]=e[3]*i,t[4]=e[4]*s,t[5]=e[5]*s,t[6]=e[6]*s,t[7]=e[7]*s,t[8]=e[8]*n,t[9]=e[9]*n,t[10]=e[10]*n,t[11]=e[11]*n,t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t}function Ph(t,e,r,i){let s=i[0],n=i[1],o=i[2],a=Math.sqrt(s*s+n*n+o*o),c,l,u,f,h,d,p,g,_,x,v,b,A,C,M,F,N,D,L,Y,X,$,Z,ge;return a<1e-6?null:(a=1/a,s*=a,n*=a,o*=a,l=Math.sin(r),c=Math.cos(r),u=1-c,f=e[0],h=e[1],d=e[2],p=e[3],g=e[4],_=e[5],x=e[6],v=e[7],b=e[8],A=e[9],C=e[10],M=e[11],F=s*s*u+c,N=n*s*u+o*l,D=o*s*u-n*l,L=s*n*u-o*l,Y=n*n*u+c,X=o*n*u+s*l,$=s*o*u+n*l,Z=n*o*u-s*l,ge=o*o*u+c,t[0]=f*F+g*N+b*D,t[1]=h*F+_*N+A*D,t[2]=d*F+x*N+C*D,t[3]=p*F+v*N+M*D,t[4]=f*L+g*Y+b*X,t[5]=h*L+_*Y+A*X,t[6]=d*L+x*Y+C*X,t[7]=p*L+v*Y+M*X,t[8]=f*$+g*Z+b*ge,t[9]=h*$+_*Z+A*ge,t[10]=d*$+x*Z+C*ge,t[11]=p*$+v*Z+M*ge,e!==t&&(t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]),t)}function Rh(t,e,r){let i=Math.sin(r),s=Math.cos(r),n=e[4],o=e[5],a=e[6],c=e[7],l=e[8],u=e[9],f=e[10],h=e[11];return e!==t&&(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]),t[4]=n*s+l*i,t[5]=o*s+u*i,t[6]=a*s+f*i,t[7]=c*s+h*i,t[8]=l*s-n*i,t[9]=u*s-o*i,t[10]=f*s-a*i,t[11]=h*s-c*i,t}function Ch(t,e,r){let i=Math.sin(r),s=Math.cos(r),n=e[0],o=e[1],a=e[2],c=e[3],l=e[8],u=e[9],f=e[10],h=e[11];return e!==t&&(t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]),t[0]=n*s-l*i,t[1]=o*s-u*i,t[2]=a*s-f*i,t[3]=c*s-h*i,t[8]=n*i+l*s,t[9]=o*i+u*s,t[10]=a*i+f*s,t[11]=c*i+h*s,t}function Mh(t,e,r){let i=Math.sin(r),s=Math.cos(r),n=e[0],o=e[1],a=e[2],c=e[3],l=e[4],u=e[5],f=e[6],h=e[7];return e!==t&&(t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]),t[0]=n*s+l*i,t[1]=o*s+u*i,t[2]=a*s+f*i,t[3]=c*s+h*i,t[4]=l*s-n*i,t[5]=u*s-o*i,t[6]=f*s-a*i,t[7]=h*s-c*i,t}function bE(t,e){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=e[0],t[13]=e[1],t[14]=e[2],t[15]=1,t}function SE(t,e){return t[0]=e[0],t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=e[1],t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=e[2],t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}function AE(t,e,r){let i=r[0],s=r[1],n=r[2],o=Math.sqrt(i*i+s*s+n*n),a,c,l;return o<1e-6?null:(o=1/o,i*=o,s*=o,n*=o,c=Math.sin(e),a=Math.cos(e),l=1-a,t[0]=i*i*l+a,t[1]=s*i*l+n*c,t[2]=n*i*l-s*c,t[3]=0,t[4]=i*s*l-n*c,t[5]=s*s*l+a,t[6]=n*s*l+i*c,t[7]=0,t[8]=i*n*l+s*c,t[9]=s*n*l-i*c,t[10]=n*n*l+a,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t)}function EE(t,e){let r=Math.sin(e),i=Math.cos(e);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=i,t[6]=r,t[7]=0,t[8]=0,t[9]=-r,t[10]=i,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}function wE(t,e){let r=Math.sin(e),i=Math.cos(e);return t[0]=i,t[1]=0,t[2]=-r,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=r,t[9]=0,t[10]=i,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}function PE(t,e){let r=Math.sin(e),i=Math.cos(e);return t[0]=i,t[1]=r,t[2]=0,t[3]=0,t[4]=-r,t[5]=i,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}function s_(t,e,r){let i=e[0],s=e[1],n=e[2],o=e[3],a=i+i,c=s+s,l=n+n,u=i*a,f=i*c,h=i*l,d=s*c,p=s*l,g=n*l,_=o*a,x=o*c,v=o*l;return t[0]=1-(d+g),t[1]=f+v,t[2]=h-x,t[3]=0,t[4]=f-v,t[5]=1-(u+g),t[6]=p+_,t[7]=0,t[8]=h+x,t[9]=p-_,t[10]=1-(u+d),t[11]=0,t[12]=r[0],t[13]=r[1],t[14]=r[2],t[15]=1,t}function RE(t,e){let r=new Te(3),i=-e[0],s=-e[1],n=-e[2],o=e[3],a=e[4],c=e[5],l=e[6],u=e[7],f=i*i+s*s+n*n+o*o;return f>0?(r[0]=(a*o+u*i+c*n-l*s)*2/f,r[1]=(c*o+u*s+l*i-a*n)*2/f,r[2]=(l*o+u*n+a*s-c*i)*2/f):(r[0]=(a*o+u*i+c*n-l*s)*2,r[1]=(c*o+u*s+l*i-a*n)*2,r[2]=(l*o+u*n+a*s-c*i)*2),s_(t,e,r),t}function CE(t,e){return t[0]=e[12],t[1]=e[13],t[2]=e[14],t}function n_(t,e){let r=e[0],i=e[1],s=e[2],n=e[4],o=e[5],a=e[6],c=e[8],l=e[9],u=e[10];return t[0]=Math.sqrt(r*r+i*i+s*s),t[1]=Math.sqrt(n*n+o*o+a*a),t[2]=Math.sqrt(c*c+l*l+u*u),t}function ME(t,e){let r=new Te(3);n_(r,e);let i=1/r[0],s=1/r[1],n=1/r[2],o=e[0]*i,a=e[1]*s,c=e[2]*n,l=e[4]*i,u=e[5]*s,f=e[6]*n,h=e[8]*i,d=e[9]*s,p=e[10]*n,g=o+u+p,_=0;return g>0?(_=Math.sqrt(g+1)*2,t[3]=.25*_,t[0]=(f-d)/_,t[1]=(h-c)/_,t[2]=(a-l)/_):o>u&&o>p?(_=Math.sqrt(1+o-u-p)*2,t[3]=(f-d)/_,t[0]=.25*_,t[1]=(a+l)/_,t[2]=(h+c)/_):u>p?(_=Math.sqrt(1+u-o-p)*2,t[3]=(h-c)/_,t[0]=(a+l)/_,t[1]=.25*_,t[2]=(f+d)/_):(_=Math.sqrt(1+p-o-u)*2,t[3]=(a-l)/_,t[0]=(h+c)/_,t[1]=(f+d)/_,t[2]=.25*_),t}function IE(t,e,r,i){e[0]=i[12],e[1]=i[13],e[2]=i[14];let s=i[0],n=i[1],o=i[2],a=i[4],c=i[5],l=i[6],u=i[8],f=i[9],h=i[10];r[0]=Math.sqrt(s*s+n*n+o*o),r[1]=Math.sqrt(a*a+c*c+l*l),r[2]=Math.sqrt(u*u+f*f+h*h);let d=1/r[0],p=1/r[1],g=1/r[2],_=s*d,x=n*p,v=o*g,b=a*d,A=c*p,C=l*g,M=u*d,F=f*p,N=h*g,D=_+A+N,L=0;return D>0?(L=Math.sqrt(D+1)*2,t[3]=.25*L,t[0]=(C-F)/L,t[1]=(M-v)/L,t[2]=(x-b)/L):_>A&&_>N?(L=Math.sqrt(1+_-A-N)*2,t[3]=(C-F)/L,t[0]=.25*L,t[1]=(x+b)/L,t[2]=(M+v)/L):A>N?(L=Math.sqrt(1+A-_-N)*2,t[3]=(M-v)/L,t[0]=(x+b)/L,t[1]=.25*L,t[2]=(C+F)/L):(L=Math.sqrt(1+N-_-A)*2,t[3]=(x-b)/L,t[0]=(M+v)/L,t[1]=(C+F)/L,t[2]=.25*L),t}function OE(t,e,r,i){let s=e[0],n=e[1],o=e[2],a=e[3],c=s+s,l=n+n,u=o+o,f=s*c,h=s*l,d=s*u,p=n*l,g=n*u,_=o*u,x=a*c,v=a*l,b=a*u,A=i[0],C=i[1],M=i[2];return t[0]=(1-(p+_))*A,t[1]=(h+b)*A,t[2]=(d-v)*A,t[3]=0,t[4]=(h-b)*C,t[5]=(1-(f+_))*C,t[6]=(g+x)*C,t[7]=0,t[8]=(d+v)*M,t[9]=(g-x)*M,t[10]=(1-(f+p))*M,t[11]=0,t[12]=r[0],t[13]=r[1],t[14]=r[2],t[15]=1,t}function NE(t,e,r,i,s){let n=e[0],o=e[1],a=e[2],c=e[3],l=n+n,u=o+o,f=a+a,h=n*l,d=n*u,p=n*f,g=o*u,_=o*f,x=a*f,v=c*l,b=c*u,A=c*f,C=i[0],M=i[1],F=i[2],N=s[0],D=s[1],L=s[2],Y=(1-(g+x))*C,X=(d+A)*C,$=(p-b)*C,Z=(d-A)*M,ge=(1-(h+x))*M,rt=(_+v)*M,ot=(p+b)*F,Pt=(_-v)*F,Vt=(1-(h+g))*F;return t[0]=Y,t[1]=X,t[2]=$,t[3]=0,t[4]=Z,t[5]=ge,t[6]=rt,t[7]=0,t[8]=ot,t[9]=Pt,t[10]=Vt,t[11]=0,t[12]=r[0]+N-(Y*N+Z*D+ot*L),t[13]=r[1]+D-(X*N+ge*D+Pt*L),t[14]=r[2]+L-($*N+rt*D+Vt*L),t[15]=1,t}function Ih(t,e){let r=e[0],i=e[1],s=e[2],n=e[3],o=r+r,a=i+i,c=s+s,l=r*o,u=i*o,f=i*a,h=s*o,d=s*a,p=s*c,g=n*o,_=n*a,x=n*c;return t[0]=1-f-p,t[1]=u+x,t[2]=h-_,t[3]=0,t[4]=u-x,t[5]=1-l-p,t[6]=d+g,t[7]=0,t[8]=h+_,t[9]=d-g,t[10]=1-l-f,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}function Oh(t,e,r,i,s,n,o){let a=1/(r-e),c=1/(s-i),l=1/(n-o);return t[0]=n*2*a,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=n*2*c,t[6]=0,t[7]=0,t[8]=(r+e)*a,t[9]=(s+i)*c,t[10]=(o+n)*l,t[11]=-1,t[12]=0,t[13]=0,t[14]=o*n*2*l,t[15]=0,t}function o_(t,e,r,i,s){let n=1/Math.tan(e/2);if(t[0]=n/r,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=n,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[11]=-1,t[12]=0,t[13]=0,t[15]=0,s!=null&&s!==1/0){let o=1/(i-s);t[10]=(s+i)*o,t[14]=2*s*i*o}else t[10]=-1,t[14]=-2*i;return t}var Nh=o_;function FE(t,e,r,i,s){let n=1/Math.tan(e/2);if(t[0]=n/r,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=n,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[11]=-1,t[12]=0,t[13]=0,t[15]=0,s!=null&&s!==1/0){let o=1/(i-s);t[10]=s*o,t[14]=s*i*o}else t[10]=-1,t[14]=-i;return t}function DE(t,e,r,i){let s=Math.tan(e.upDegrees*Math.PI/180),n=Math.tan(e.downDegrees*Math.PI/180),o=Math.tan(e.leftDegrees*Math.PI/180),a=Math.tan(e.rightDegrees*Math.PI/180),c=2/(o+a),l=2/(s+n);return t[0]=c,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=l,t[6]=0,t[7]=0,t[8]=-((o-a)*c*.5),t[9]=(s-n)*l*.5,t[10]=i/(r-i),t[11]=-1,t[12]=0,t[13]=0,t[14]=i*r/(r-i),t[15]=0,t}function a_(t,e,r,i,s,n,o){let a=1/(e-r),c=1/(i-s),l=1/(n-o);return t[0]=-2*a,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=-2*c,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=2*l,t[11]=0,t[12]=(e+r)*a,t[13]=(s+i)*c,t[14]=(o+n)*l,t[15]=1,t}var Fh=a_;function LE(t,e,r,i,s,n,o){let a=1/(e-r),c=1/(i-s),l=1/(n-o);return t[0]=-2*a,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=-2*c,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=l,t[11]=0,t[12]=(e+r)*a,t[13]=(s+i)*c,t[14]=n*l,t[15]=1,t}function Dh(t,e,r,i){let s,n,o,a,c,l,u,f,h,d,p=e[0],g=e[1],_=e[2],x=i[0],v=i[1],b=i[2],A=r[0],C=r[1],M=r[2];return Math.abs(p-A)<1e-6&&Math.abs(g-C)<1e-6&&Math.abs(_-M)<1e-6?i_(t):(f=p-A,h=g-C,d=_-M,s=1/Math.sqrt(f*f+h*h+d*d),f*=s,h*=s,d*=s,n=v*d-b*h,o=b*f-x*d,a=x*h-v*f,s=Math.sqrt(n*n+o*o+a*a),s?(s=1/s,n*=s,o*=s,a*=s):(n=0,o=0,a=0),c=h*a-d*o,l=d*n-f*a,u=f*o-h*n,s=Math.sqrt(c*c+l*l+u*u),s?(s=1/s,c*=s,l*=s,u*=s):(c=0,l=0,u=0),t[0]=n,t[1]=c,t[2]=f,t[3]=0,t[4]=o,t[5]=l,t[6]=h,t[7]=0,t[8]=a,t[9]=u,t[10]=d,t[11]=0,t[12]=-(n*p+o*g+a*_),t[13]=-(c*p+l*g+u*_),t[14]=-(f*p+h*g+d*_),t[15]=1,t)}function kE(t,e,r,i){let s=e[0],n=e[1],o=e[2],a=i[0],c=i[1],l=i[2],u=s-r[0],f=n-r[1],h=o-r[2],d=u*u+f*f+h*h;d>0&&(d=1/Math.sqrt(d),u*=d,f*=d,h*=d);let p=c*h-l*f,g=l*u-a*h,_=a*f-c*u;return d=p*p+g*g+_*_,d>0&&(d=1/Math.sqrt(d),p*=d,g*=d,_*=d),t[0]=p,t[1]=g,t[2]=_,t[3]=0,t[4]=f*_-h*g,t[5]=h*p-u*_,t[6]=u*g-f*p,t[7]=0,t[8]=u,t[9]=f,t[10]=h,t[11]=0,t[12]=s,t[13]=n,t[14]=o,t[15]=1,t}function BE(t){return`mat4(${t[0]}, ${t[1]}, ${t[2]}, ${t[3]}, ${t[4]}, ${t[5]}, ${t[6]}, ${t[7]}, ${t[8]}, ${t[9]}, ${t[10]}, ${t[11]}, ${t[12]}, ${t[13]}, ${t[14]}, ${t[15]})`}function UE(t){return Math.sqrt(t[0]*t[0]+t[1]*t[1]+t[2]*t[2]+t[3]*t[3]+t[4]*t[4]+t[5]*t[5]+t[6]*t[6]+t[7]*t[7]+t[8]*t[8]+t[9]*t[9]+t[10]*t[10]+t[11]*t[11]+t[12]*t[12]+t[13]*t[13]+t[14]*t[14]+t[15]*t[15])}function zE(t,e,r){return t[0]=e[0]+r[0],t[1]=e[1]+r[1],t[2]=e[2]+r[2],t[3]=e[3]+r[3],t[4]=e[4]+r[4],t[5]=e[5]+r[5],t[6]=e[6]+r[6],t[7]=e[7]+r[7],t[8]=e[8]+r[8],t[9]=e[9]+r[9],t[10]=e[10]+r[10],t[11]=e[11]+r[11],t[12]=e[12]+r[12],t[13]=e[13]+r[13],t[14]=e[14]+r[14],t[15]=e[15]+r[15],t}function c_(t,e,r){return t[0]=e[0]-r[0],t[1]=e[1]-r[1],t[2]=e[2]-r[2],t[3]=e[3]-r[3],t[4]=e[4]-r[4],t[5]=e[5]-r[5],t[6]=e[6]-r[6],t[7]=e[7]-r[7],t[8]=e[8]-r[8],t[9]=e[9]-r[9],t[10]=e[10]-r[10],t[11]=e[11]-r[11],t[12]=e[12]-r[12],t[13]=e[13]-r[13],t[14]=e[14]-r[14],t[15]=e[15]-r[15],t}function VE(t,e,r){return t[0]=e[0]*r,t[1]=e[1]*r,t[2]=e[2]*r,t[3]=e[3]*r,t[4]=e[4]*r,t[5]=e[5]*r,t[6]=e[6]*r,t[7]=e[7]*r,t[8]=e[8]*r,t[9]=e[9]*r,t[10]=e[10]*r,t[11]=e[11]*r,t[12]=e[12]*r,t[13]=e[13]*r,t[14]=e[14]*r,t[15]=e[15]*r,t}function WE(t,e,r,i){return t[0]=e[0]+r[0]*i,t[1]=e[1]+r[1]*i,t[2]=e[2]+r[2]*i,t[3]=e[3]+r[3]*i,t[4]=e[4]+r[4]*i,t[5]=e[5]+r[5]*i,t[6]=e[6]+r[6]*i,t[7]=e[7]+r[7]*i,t[8]=e[8]+r[8]*i,t[9]=e[9]+r[9]*i,t[10]=e[10]+r[10]*i,t[11]=e[11]+r[11]*i,t[12]=e[12]+r[12]*i,t[13]=e[13]+r[13]*i,t[14]=e[14]+r[14]*i,t[15]=e[15]+r[15]*i,t}function HE(t,e){return t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]&&t[3]===e[3]&&t[4]===e[4]&&t[5]===e[5]&&t[6]===e[6]&&t[7]===e[7]&&t[8]===e[8]&&t[9]===e[9]&&t[10]===e[10]&&t[11]===e[11]&&t[12]===e[12]&&t[13]===e[13]&&t[14]===e[14]&&t[15]===e[15]}function jE(t,e){let r=t[0],i=t[1],s=t[2],n=t[3],o=t[4],a=t[5],c=t[6],l=t[7],u=t[8],f=t[9],h=t[10],d=t[11],p=t[12],g=t[13],_=t[14],x=t[15],v=e[0],b=e[1],A=e[2],C=e[3],M=e[4],F=e[5],N=e[6],D=e[7],L=e[8],Y=e[9],X=e[10],$=e[11],Z=e[12],ge=e[13],rt=e[14],ot=e[15];return Math.abs(r-v)<=1e-6*Math.max(1,Math.abs(r),Math.abs(v))&&Math.abs(i-b)<=1e-6*Math.max(1,Math.abs(i),Math.abs(b))&&Math.abs(s-A)<=1e-6*Math.max(1,Math.abs(s),Math.abs(A))&&Math.abs(n-C)<=1e-6*Math.max(1,Math.abs(n),Math.abs(C))&&Math.abs(o-M)<=1e-6*Math.max(1,Math.abs(o),Math.abs(M))&&Math.abs(a-F)<=1e-6*Math.max(1,Math.abs(a),Math.abs(F))&&Math.abs(c-N)<=1e-6*Math.max(1,Math.abs(c),Math.abs(N))&&Math.abs(l-D)<=1e-6*Math.max(1,Math.abs(l),Math.abs(D))&&Math.abs(u-L)<=1e-6*Math.max(1,Math.abs(u),Math.abs(L))&&Math.abs(f-Y)<=1e-6*Math.max(1,Math.abs(f),Math.abs(Y))&&Math.abs(h-X)<=1e-6*Math.max(1,Math.abs(h),Math.abs(X))&&Math.abs(d-$)<=1e-6*Math.max(1,Math.abs(d),Math.abs($))&&Math.abs(p-Z)<=1e-6*Math.max(1,Math.abs(p),Math.abs(Z))&&Math.abs(g-ge)<=1e-6*Math.max(1,Math.abs(g),Math.abs(ge))&&Math.abs(_-rt)<=1e-6*Math.max(1,Math.abs(_),Math.abs(rt))&&Math.abs(x-ot)<=1e-6*Math.max(1,Math.abs(x),Math.abs(ot))}var XE=Gn,$E=c_;var Jt={};ui(Jt,{add:()=>ZE,ceil:()=>JE,clone:()=>YE,copy:()=>qE,create:()=>l_,cross:()=>lw,dist:()=>Tw,distance:()=>d_,div:()=>xw,divide:()=>h_,dot:()=>cw,equals:()=>mw,exactEquals:()=>gw,floor:()=>QE,forEach:()=>Aw,fromValues:()=>KE,inverse:()=>ow,len:()=>bw,length:()=>g_,lerp:()=>uw,max:()=>tw,min:()=>ew,mul:()=>yw,multiply:()=>f_,negate:()=>nw,normalize:()=>aw,random:()=>fw,round:()=>rw,scale:()=>iw,scaleAndAdd:()=>sw,set:()=>GE,sqrDist:()=>vw,sqrLen:()=>Sw,squaredDistance:()=>p_,squaredLength:()=>m_,str:()=>pw,sub:()=>_w,subtract:()=>u_,transformMat4:()=>Lh,transformQuat:()=>hw,zero:()=>dw});function l_(){let t=new Te(4);return Te!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0,t[3]=0),t}function YE(t){let e=new Te(4);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e}function KE(t,e,r,i){let s=new Te(4);return s[0]=t,s[1]=e,s[2]=r,s[3]=i,s}function qE(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t}function GE(t,e,r,i,s){return t[0]=e,t[1]=r,t[2]=i,t[3]=s,t}function ZE(t,e,r){return t[0]=e[0]+r[0],t[1]=e[1]+r[1],t[2]=e[2]+r[2],t[3]=e[3]+r[3],t}function u_(t,e,r){return t[0]=e[0]-r[0],t[1]=e[1]-r[1],t[2]=e[2]-r[2],t[3]=e[3]-r[3],t}function f_(t,e,r){return t[0]=e[0]*r[0],t[1]=e[1]*r[1],t[2]=e[2]*r[2],t[3]=e[3]*r[3],t}function h_(t,e,r){return t[0]=e[0]/r[0],t[1]=e[1]/r[1],t[2]=e[2]/r[2],t[3]=e[3]/r[3],t}function JE(t,e){return t[0]=Math.ceil(e[0]),t[1]=Math.ceil(e[1]),t[2]=Math.ceil(e[2]),t[3]=Math.ceil(e[3]),t}function QE(t,e){return t[0]=Math.floor(e[0]),t[1]=Math.floor(e[1]),t[2]=Math.floor(e[2]),t[3]=Math.floor(e[3]),t}function ew(t,e,r){return t[0]=Math.min(e[0],r[0]),t[1]=Math.min(e[1],r[1]),t[2]=Math.min(e[2],r[2]),t[3]=Math.min(e[3],r[3]),t}function tw(t,e,r){return t[0]=Math.max(e[0],r[0]),t[1]=Math.max(e[1],r[1]),t[2]=Math.max(e[2],r[2]),t[3]=Math.max(e[3],r[3]),t}function rw(t,e){return t[0]=xt(e[0]),t[1]=xt(e[1]),t[2]=xt(e[2]),t[3]=xt(e[3]),t}function iw(t,e,r){return t[0]=e[0]*r,t[1]=e[1]*r,t[2]=e[2]*r,t[3]=e[3]*r,t}function sw(t,e,r,i){return t[0]=e[0]+r[0]*i,t[1]=e[1]+r[1]*i,t[2]=e[2]+r[2]*i,t[3]=e[3]+r[3]*i,t}function d_(t,e){let r=e[0]-t[0],i=e[1]-t[1],s=e[2]-t[2],n=e[3]-t[3];return Math.sqrt(r*r+i*i+s*s+n*n)}function p_(t,e){let r=e[0]-t[0],i=e[1]-t[1],s=e[2]-t[2],n=e[3]-t[3];return r*r+i*i+s*s+n*n}function g_(t){let e=t[0],r=t[1],i=t[2],s=t[3];return Math.sqrt(e*e+r*r+i*i+s*s)}function m_(t){let e=t[0],r=t[1],i=t[2],s=t[3];return e*e+r*r+i*i+s*s}function nw(t,e){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t[3]=-e[3],t}function ow(t,e){return t[0]=1/e[0],t[1]=1/e[1],t[2]=1/e[2],t[3]=1/e[3],t}function aw(t,e){let r=e[0],i=e[1],s=e[2],n=e[3],o=r*r+i*i+s*s+n*n;return o>0&&(o=1/Math.sqrt(o)),t[0]=r*o,t[1]=i*o,t[2]=s*o,t[3]=n*o,t}function cw(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]+t[3]*e[3]}function lw(t,e,r,i){let s=r[0]*i[1]-r[1]*i[0],n=r[0]*i[2]-r[2]*i[0],o=r[0]*i[3]-r[3]*i[0],a=r[1]*i[2]-r[2]*i[1],c=r[1]*i[3]-r[3]*i[1],l=r[2]*i[3]-r[3]*i[2],u=e[0],f=e[1],h=e[2],d=e[3];return t[0]=f*l-h*c+d*a,t[1]=-(u*l)+h*o-d*n,t[2]=u*c-f*o+d*s,t[3]=-(u*a)+f*n-h*s,t}function uw(t,e,r,i){let s=e[0],n=e[1],o=e[2],a=e[3];return t[0]=s+i*(r[0]-s),t[1]=n+i*(r[1]-n),t[2]=o+i*(r[2]-o),t[3]=a+i*(r[3]-a),t}function fw(t,e){e=e===void 0?1:e;let r,i,s,n,o,a;do r=Gt()*2-1,i=Gt()*2-1,o=r*r+i*i;while(o>=1);do s=Gt()*2-1,n=Gt()*2-1,a=s*s+n*n;while(a>=1);let c=Math.sqrt((1-o)/a);return t[0]=e*r,t[1]=e*i,t[2]=e*s*c,t[3]=e*n*c,t}function Lh(t,e,r){let i=e[0],s=e[1],n=e[2],o=e[3];return t[0]=r[0]*i+r[4]*s+r[8]*n+r[12]*o,t[1]=r[1]*i+r[5]*s+r[9]*n+r[13]*o,t[2]=r[2]*i+r[6]*s+r[10]*n+r[14]*o,t[3]=r[3]*i+r[7]*s+r[11]*n+r[15]*o,t}function hw(t,e,r){let i=e[0],s=e[1],n=e[2],o=r[0],a=r[1],c=r[2],l=r[3],u=l*i+a*n-c*s,f=l*s+c*i-o*n,h=l*n+o*s-a*i,d=-o*i-a*s-c*n;return t[0]=u*l+d*-o+f*-c-h*-a,t[1]=f*l+d*-a+h*-o-u*-c,t[2]=h*l+d*-c+u*-a-f*-o,t[3]=e[3],t}function dw(t){return t[0]=0,t[1]=0,t[2]=0,t[3]=0,t}function pw(t){return`vec4(${t[0]}, ${t[1]}, ${t[2]}, ${t[3]})`}function gw(t,e){return t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]&&t[3]===e[3]}function mw(t,e){let r=t[0],i=t[1],s=t[2],n=t[3],o=e[0],a=e[1],c=e[2],l=e[3];return Math.abs(r-o)<=1e-6*Math.max(1,Math.abs(r),Math.abs(o))&&Math.abs(i-a)<=1e-6*Math.max(1,Math.abs(i),Math.abs(a))&&Math.abs(s-c)<=1e-6*Math.max(1,Math.abs(s),Math.abs(c))&&Math.abs(n-l)<=1e-6*Math.max(1,Math.abs(n),Math.abs(l))}var _w=u_,yw=f_,xw=h_,Tw=d_,vw=p_,bw=g_,Sw=m_,Aw=function(){let t=l_();return function(e,r,i,s,n,o){let a,c;for(r||(r=4),i||(i=0),s?c=Math.min(s*r+i,e.length):c=e.length,a=i;aMath.PI*2)throw Error("expected radians")}function Mw(t,e,r,i,s,n){let o=2*n/(r-e),a=2*n/(s-i),c=(r+e)/(r-e),l=(s+i)/(s-i),u=-1,f=-1,h=-2*n;return t[0]=o,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=a,t[6]=0,t[7]=0,t[8]=c,t[9]=l,t[10]=u,t[11]=f,t[12]=0,t[13]=0,t[14]=h,t[15]=0,t}var zh=`#if (defined(SHADER_TYPE_FRAGMENT) && defined(LIGHTING_FRAGMENT)) || (defined(SHADER_TYPE_VERTEX) && defined(LIGHTING_VERTEX))
struct AmbientLight {
vec3 color;
};
@@ -463,7 +463,7 @@ return pointLight.attenuation.x
+ pointLight.attenuation.z * distance * distance;
}
#endif
-`;var Iw={lightSources:{}};function Wh(t={}){let{color:e=[0,0,0],intensity:r=1}=t;return e.map(i=>i*r/255)}function Ow({ambientLight:t,pointLights:e=[],directionalLights:r=[]}){let i={};return t?i["lighting_uAmbientLight.color"]=Wh(t):i["lighting_uAmbientLight.color"]=[0,0,0],e.forEach((s,n)=>{i[`lighting_uPointLight[${n}].color`]=Wh(s),i[`lighting_uPointLight[${n}].position`]=s.position,i[`lighting_uPointLight[${n}].attenuation`]=s.attenuation||[1,0,0]}),i.lighting_uPointLightCount=e.length,r.forEach((s,n)=>{i[`lighting_uDirectionalLight[${n}].color`]=Wh(s),i[`lighting_uDirectionalLight[${n}].direction`]=s.direction}),i.lighting_uDirectionalLightCount=r.length,i}function y_(t=Iw){if("lightSources"in t){let{ambientLight:e,pointLights:r,directionalLights:i}=t.lightSources||{};return e||r&&r.length>0||i&&i.length>0?Object.assign({},Ow({ambientLight:e,pointLights:r,directionalLights:i}),{lighting_uEnabled:!0}):{lighting_uEnabled:!1}}if("lights"in t){let e={pointLights:[],directionalLights:[]};for(let r of t.lights||[])switch(r.type){case"ambient":e.ambientLight=r;break;case"directional":e.directionalLights?.push(r);break;case"point":e.pointLights?.push(r);break;default:}return y_({lightSources:e})}return{}}var Hh={name:"lights",vs:Vh,fs:Vh,getUniforms:y_,defines:{MAX_LIGHTS:3}};var jh=`uniform float lighting_uAmbient;
+`;var Iw={lightSources:{}};function Vh(t={}){let{color:e=[0,0,0],intensity:r=1}=t;return e.map(i=>i*r/255)}function Ow({ambientLight:t,pointLights:e=[],directionalLights:r=[]}){let i={};return t?i["lighting_uAmbientLight.color"]=Vh(t):i["lighting_uAmbientLight.color"]=[0,0,0],e.forEach((s,n)=>{i[`lighting_uPointLight[${n}].color`]=Vh(s),i[`lighting_uPointLight[${n}].position`]=s.position,i[`lighting_uPointLight[${n}].attenuation`]=s.attenuation||[1,0,0]}),i.lighting_uPointLightCount=e.length,r.forEach((s,n)=>{i[`lighting_uDirectionalLight[${n}].color`]=Vh(s),i[`lighting_uDirectionalLight[${n}].direction`]=s.direction}),i.lighting_uDirectionalLightCount=r.length,i}function y_(t=Iw){if("lightSources"in t){let{ambientLight:e,pointLights:r,directionalLights:i}=t.lightSources||{};return e||r&&r.length>0||i&&i.length>0?Object.assign({},Ow({ambientLight:e,pointLights:r,directionalLights:i}),{lighting_uEnabled:!0}):{lighting_uEnabled:!1}}if("lights"in t){let e={pointLights:[],directionalLights:[]};for(let r of t.lights||[])switch(r.type){case"ambient":e.ambientLight=r;break;case"directional":e.directionalLights?.push(r);break;case"point":e.pointLights?.push(r);break;default:}return y_({lightSources:e})}return{}}var Wh={name:"lights",vs:zh,fs:zh,getUniforms:y_,defines:{MAX_LIGHTS:3}};var Hh=`uniform float lighting_uAmbient;
uniform float lighting_uDiffuse;
uniform float lighting_uShininess;
uniform vec3 lighting_uSpecularColor;
@@ -526,7 +526,7 @@ lightColor += lighting_getLightColor(surfaceColor, -directionalLight.direction,
}
return lightColor;
}
-`;var Nw={};function Fw(t){let{ambient:e=.35,diffuse:r=.6,shininess:i=32,specularColor:s=[30,30,30]}=t;return{lighting_uAmbient:e,lighting_uDiffuse:r,lighting_uShininess:i,lighting_uSpecularColor:s.map(n=>n/255)}}function x_(t=Nw){if(!("material"in t))return{};let{material:e}=t;return e?Fw(e):{lighting_uEnabled:!1}}var Mt={name:"gouraud-lighting",dependencies:[Hh],vs:jh,defines:{LIGHTING_VERTEX:1},getUniforms:x_},Zn={name:"phong-lighting",dependencies:[Hh],fs:jh,defines:{LIGHTING_FRAGMENT:1},getUniforms:x_};var T_="#define SMOOTH_EDGE_RADIUS 0.5",Dw=`
+`;var Nw={};function Fw(t){let{ambient:e=.35,diffuse:r=.6,shininess:i=32,specularColor:s=[30,30,30]}=t;return{lighting_uAmbient:e,lighting_uDiffuse:r,lighting_uShininess:i,lighting_uSpecularColor:s.map(n=>n/255)}}function x_(t=Nw){if(!("material"in t))return{};let{material:e}=t;return e?Fw(e):{lighting_uEnabled:!1}}var Mt={name:"gouraud-lighting",dependencies:[Wh],vs:Hh,defines:{LIGHTING_VERTEX:1},getUniforms:x_},Zn={name:"phong-lighting",dependencies:[Wh],fs:Hh,defines:{LIGHTING_FRAGMENT:1},getUniforms:x_};var T_="#define SMOOTH_EDGE_RADIUS 0.5",Dw=`
${T_}
struct VertexGeometry {
@@ -743,7 +743,7 @@ return pixels / project_uScale;
vec2 project_pixel_size(vec2 pixels) {
return pixels / project_uScale;
}
-`;function zw(t,e){if(t===e)return!0;if(Array.isArray(t)){let r=t.length;if(!e||e.length!==r)return!1;for(let i=0;i{for(let s in i)if(!zw(i[s],e[s])){r=t(i),e=i;break}return r}}var S_=[0,0,0,0],Vw=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0],A_=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],Ww=[0,0,0],E_=[0,0,0],Hw=Qt(Xw);function Xh(t,e,r=E_){r.length<3&&(r=[r[0],r[1],0]);let i=r,s,n=!0;switch(e===q.LNGLAT_OFFSETS||e===q.METER_OFFSETS?s=r:s=t.isGeospatial?[Math.fround(t.longitude),Math.fround(t.latitude),0]:null,t.projectionMode){case Ge.WEB_MERCATOR:(e===q.LNGLAT||e===q.CARTESIAN)&&(s=[0,0,0],n=!1);break;case Ge.WEB_MERCATOR_AUTO_OFFSET:e===q.LNGLAT?i=s:e===q.CARTESIAN&&(i=[Math.fround(t.center[0]),Math.fround(t.center[1]),0],s=t.unprojectPosition(i),i[0]-=r[0],i[1]-=r[1],i[2]-=r[2]);break;case Ge.IDENTITY:i=t.position.map(Math.fround),i[2]=i[2]||0;break;case Ge.GLOBE:n=!1,s=null;break;default:n=!1}return{geospatialOrigin:s,shaderCoordinateOrigin:i,offsetMode:n}}function jw(t,e,r){let{viewMatrixUncentered:i,projectionMatrix:s}=t,{viewMatrix:n,viewProjectionMatrix:o}=t,a=S_,c=S_,l=t.cameraPosition,{geospatialOrigin:u,shaderCoordinateOrigin:f,offsetMode:h}=Xh(t,e,r);return h&&(c=t.projectPosition(u||f),l=[l[0]-c[0],l[1]-c[1],l[2]-c[2]],c[3]=1,a=Jt.transformMat4([],c,o),n=i||n,o=Pe.multiply([],s,n),o=Pe.multiply([],o,Vw)),{viewMatrix:n,viewProjectionMatrix:o,projectionCenter:a,originCommon:c,cameraPosCommon:l,shaderCoordinateOrigin:f,geospatialOrigin:u}}function w_({viewport:t,devicePixelRatio:e=1,modelMatrix:r=null,coordinateSystem:i=q.DEFAULT,coordinateOrigin:s=E_,autoWrapLongitude:n=!1}){i===q.DEFAULT&&(i=t.isGeospatial?q.LNGLAT:q.CARTESIAN);let o=Hw({viewport:t,devicePixelRatio:e,coordinateSystem:i,coordinateOrigin:s});return o.project_uWrapLongitude=n,o.project_uModelMatrix=r||A_,o}function Xw({viewport:t,devicePixelRatio:e,coordinateSystem:r,coordinateOrigin:i}){let{projectionCenter:s,viewProjectionMatrix:n,originCommon:o,cameraPosCommon:a,shaderCoordinateOrigin:c,geospatialOrigin:l}=jw(t,r,i),u=t.getDistanceScales(),f=[t.width*e,t.height*e],h=Jt.transformMat4([],[0,0,-t.focalDistance,1],t.projectionMatrix)[3]||1,d={project_uCoordinateSystem:r,project_uProjectionMode:t.projectionMode,project_uCoordinateOrigin:c,project_uCommonOrigin:o.slice(0,3),project_uCenter:s,project_uPseudoMeters:!!t._pseudoMeters,project_uViewportSize:f,project_uDevicePixelRatio:e,project_uFocalDistance:h,project_uCommonUnitsPerMeter:u.unitsPerMeter,project_uCommonUnitsPerWorldUnit:u.unitsPerMeter,project_uCommonUnitsPerWorldUnit2:Ww,project_uScale:t.scale,project_uWrapLongitude:!1,project_uViewProjectionMatrix:n,project_uModelMatrix:A_,project_uCameraPosition:a};if(l){let p=t.getDistanceScales(l);switch(r){case q.METER_OFFSETS:d.project_uCommonUnitsPerWorldUnit=p.unitsPerMeter,d.project_uCommonUnitsPerWorldUnit2=p.unitsPerMeter2;break;case q.LNGLAT:case q.LNGLAT_OFFSETS:t._pseudoMeters||(d.project_uCommonUnitsPerMeter=p.unitsPerMeter),d.project_uCommonUnitsPerWorldUnit=p.unitsPerDegree,d.project_uCommonUnitsPerWorldUnit2=p.unitsPerDegree2;break;case q.CARTESIAN:d.project_uCommonUnitsPerWorldUnit=[1,1,p.unitsPerMeter[2]],d.project_uCommonUnitsPerWorldUnit2=[0,0,p.unitsPerMeter2[2]];break;default:break}}return d}var $w={};function Yw(t=$w){return"viewport"in t?w_(t):{}}var Ri={name:"project",dependencies:[lh,v_],vs:b_,getUniforms:Yw};var Kw=`
+`;function zw(t,e){if(t===e)return!0;if(Array.isArray(t)){let r=t.length;if(!e||e.length!==r)return!1;for(let i=0;i{for(let s in i)if(!zw(i[s],e[s])){r=t(i),e=i;break}return r}}var S_=[0,0,0,0],Vw=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0],A_=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],Ww=[0,0,0],E_=[0,0,0],Hw=Qt(Xw);function jh(t,e,r=E_){r.length<3&&(r=[r[0],r[1],0]);let i=r,s,n=!0;switch(e===q.LNGLAT_OFFSETS||e===q.METER_OFFSETS?s=r:s=t.isGeospatial?[Math.fround(t.longitude),Math.fround(t.latitude),0]:null,t.projectionMode){case Ge.WEB_MERCATOR:(e===q.LNGLAT||e===q.CARTESIAN)&&(s=[0,0,0],n=!1);break;case Ge.WEB_MERCATOR_AUTO_OFFSET:e===q.LNGLAT?i=s:e===q.CARTESIAN&&(i=[Math.fround(t.center[0]),Math.fround(t.center[1]),0],s=t.unprojectPosition(i),i[0]-=r[0],i[1]-=r[1],i[2]-=r[2]);break;case Ge.IDENTITY:i=t.position.map(Math.fround),i[2]=i[2]||0;break;case Ge.GLOBE:n=!1,s=null;break;default:n=!1}return{geospatialOrigin:s,shaderCoordinateOrigin:i,offsetMode:n}}function jw(t,e,r){let{viewMatrixUncentered:i,projectionMatrix:s}=t,{viewMatrix:n,viewProjectionMatrix:o}=t,a=S_,c=S_,l=t.cameraPosition,{geospatialOrigin:u,shaderCoordinateOrigin:f,offsetMode:h}=jh(t,e,r);return h&&(c=t.projectPosition(u||f),l=[l[0]-c[0],l[1]-c[1],l[2]-c[2]],c[3]=1,a=Jt.transformMat4([],c,o),n=i||n,o=Pe.multiply([],s,n),o=Pe.multiply([],o,Vw)),{viewMatrix:n,viewProjectionMatrix:o,projectionCenter:a,originCommon:c,cameraPosCommon:l,shaderCoordinateOrigin:f,geospatialOrigin:u}}function w_({viewport:t,devicePixelRatio:e=1,modelMatrix:r=null,coordinateSystem:i=q.DEFAULT,coordinateOrigin:s=E_,autoWrapLongitude:n=!1}){i===q.DEFAULT&&(i=t.isGeospatial?q.LNGLAT:q.CARTESIAN);let o=Hw({viewport:t,devicePixelRatio:e,coordinateSystem:i,coordinateOrigin:s});return o.project_uWrapLongitude=n,o.project_uModelMatrix=r||A_,o}function Xw({viewport:t,devicePixelRatio:e,coordinateSystem:r,coordinateOrigin:i}){let{projectionCenter:s,viewProjectionMatrix:n,originCommon:o,cameraPosCommon:a,shaderCoordinateOrigin:c,geospatialOrigin:l}=jw(t,r,i),u=t.getDistanceScales(),f=[t.width*e,t.height*e],h=Jt.transformMat4([],[0,0,-t.focalDistance,1],t.projectionMatrix)[3]||1,d={project_uCoordinateSystem:r,project_uProjectionMode:t.projectionMode,project_uCoordinateOrigin:c,project_uCommonOrigin:o.slice(0,3),project_uCenter:s,project_uPseudoMeters:!!t._pseudoMeters,project_uViewportSize:f,project_uDevicePixelRatio:e,project_uFocalDistance:h,project_uCommonUnitsPerMeter:u.unitsPerMeter,project_uCommonUnitsPerWorldUnit:u.unitsPerMeter,project_uCommonUnitsPerWorldUnit2:Ww,project_uScale:t.scale,project_uWrapLongitude:!1,project_uViewProjectionMatrix:n,project_uModelMatrix:A_,project_uCameraPosition:a};if(l){let p=t.getDistanceScales(l);switch(r){case q.METER_OFFSETS:d.project_uCommonUnitsPerWorldUnit=p.unitsPerMeter,d.project_uCommonUnitsPerWorldUnit2=p.unitsPerMeter2;break;case q.LNGLAT:case q.LNGLAT_OFFSETS:t._pseudoMeters||(d.project_uCommonUnitsPerMeter=p.unitsPerMeter),d.project_uCommonUnitsPerWorldUnit=p.unitsPerDegree,d.project_uCommonUnitsPerWorldUnit2=p.unitsPerDegree2;break;case q.CARTESIAN:d.project_uCommonUnitsPerWorldUnit=[1,1,p.unitsPerMeter[2]],d.project_uCommonUnitsPerWorldUnit2=[0,0,p.unitsPerMeter2[2]];break;default:break}}return d}var $w={};function Yw(t=$w){return"viewport"in t?w_(t):{}}var Ri={name:"project",dependencies:[ch,v_],vs:b_,getUniforms:Yw};var Kw=`
vec4 project_position_to_clipspace(
vec3 position, vec3 position64Low, vec3 offset, out vec4 commonPosition
) {
@@ -764,7 +764,7 @@ vec4 project_position_to_clipspace(
vec4 commonPosition;
return project_position_to_clipspace(position, position64Low, offset, commonPosition);
}
-`,ae={name:"project32",dependencies:[Ri],vs:Kw};function $h(){return[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}function Hr(t,e){let r=Jt.transformMat4([],e,t);return Jt.scale(r,r,1/r[3]),r}function Yh(t,e){let r=t%e;return r<0?e+r:r}function Qn(t,e,r){return tr?r:t}function qw(t){return Math.log(t)*Math.LOG2E}var _s=Math.log2||qw;function It(t,e){if(!t)throw new Error(e||"@math.gl/web-mercator: assertion failed.")}var Ot=Math.PI,P_=Ot/4,Tt=Ot/180,Kh=180/Ot,ys=512,Wc=4003e4,xs=85.051129,R_=1.5;function qh(t){return _s(t)}function Ze(t){let[e,r]=t;It(Number.isFinite(e)),It(Number.isFinite(r)&&r>=-90&&r<=90,"invalid latitude");let i=e*Tt,s=r*Tt,n=ys*(i+Ot)/(2*Ot),o=ys*(Ot+Math.log(Math.tan(P_+s*.5)))/(2*Ot);return[n,o]}function it(t){let[e,r]=t,i=e/ys*(2*Ot)-Ot,s=2*(Math.atan(Math.exp(r/ys*(2*Ot)-Ot))-P_);return[i*Kh,s*Kh]}function Gh(t){let{latitude:e}=t;It(Number.isFinite(e));let r=Math.cos(e*Tt);return qh(Wc*r)-9}function Mi(t){let e=Math.cos(t*Tt);return ys/Wc/e}function Ts(t){let{latitude:e,longitude:r,highPrecision:i=!1}=t;It(Number.isFinite(e)&&Number.isFinite(r));let s=ys,n=Math.cos(e*Tt),o=s/360,a=o/n,c=s/Wc/n,l={unitsPerMeter:[c,c,c],metersPerUnit:[1/c,1/c,1/c],unitsPerDegree:[o,a,c],degreesPerUnit:[1/o,1/a,1/c]};if(i){let u=Tt*Math.tan(e*Tt)/n,f=o*u/2,h=s/Wc*u,d=h/a*c;l.unitsPerDegree2=[0,f,h],l.unitsPerMeter2=[d,0,d]}return l}function eo(t,e){let[r,i,s]=t,[n,o,a]=e,{unitsPerMeter:c,unitsPerMeter2:l}=Ts({longitude:r,latitude:i,highPrecision:!0}),u=Ze(t);u[0]+=n*(c[0]+l[0]*o),u[1]+=o*(c[1]+l[1]*o);let f=it(u),h=(s||0)+(a||0);return Number.isFinite(s)||Number.isFinite(a)?[f[0],f[1],h]:f}function Hc(t){let{height:e,pitch:r,bearing:i,altitude:s,scale:n,center:o}=t,a=$h();Pe.translate(a,a,[0,0,-s]),Pe.rotateX(a,a,-r*Tt),Pe.rotateZ(a,a,i*Tt);let c=n/e;return Pe.scale(a,a,[c,c,c]),o&&Pe.translate(a,a,ms.negate([],o)),a}function Zh(t){let{width:e,height:r,altitude:i,pitch:s=0,offset:n,center:o,scale:a,nearZMultiplier:c=1,farZMultiplier:l=1}=t,{fovy:u=Ci(R_)}=t;i!==void 0&&(u=Ci(i));let f=u*Tt,h=s*Tt,d=to(u),p=d;o&&(p+=o[2]*a/Math.cos(h)/r);let g=f*(.5+(n?n[1]:0)/r),_=Math.sin(g)*p/Math.sin(Qn(Math.PI/2-h-g,.01,Math.PI-.01)),x=Math.sin(h)*_+p,v=p*10,b=Math.min(x*l,v);return{fov:f,aspect:e/r,focalDistance:d,near:c,far:b}}function Ci(t){return 2*Math.atan(.5/t)*Kh}function to(t){return .5/Math.tan(.5*t*Tt)}function vs(t,e){let[r,i,s=0]=t;return It(Number.isFinite(r)&&Number.isFinite(i)&&Number.isFinite(s)),Hr(e,[r,i,s,1])}function jr(t,e,r=0){let[i,s,n]=t;if(It(Number.isFinite(i)&&Number.isFinite(s),"invalid pixel coordinate"),Number.isFinite(n))return Hr(e,[i,s,n,1]);let o=Hr(e,[i,s,0,1]),a=Hr(e,[i,s,1,1]),c=o[2],l=a[2],u=c===l?0:((r||0)-c)/(l-c);return Zt.lerp([],o,a,u)}function jc(t){let{width:e,height:r,bounds:i,minExtent:s=0,maxZoom:n=24,offset:o=[0,0]}=t,[[a,c],[l,u]]=i,f=Gw(t.padding),h=Ze([a,Qn(u,-xs,xs)]),d=Ze([l,Qn(c,-xs,xs)]),p=[Math.max(Math.abs(d[0]-h[0]),s),Math.max(Math.abs(d[1]-h[1]),s)],g=[e-f.left-f.right-Math.abs(o[0])*2,r-f.top-f.bottom-Math.abs(o[1])*2];It(g[0]>0&&g[1]>0);let _=g[0]/p[0],x=g[1]/p[1],v=(f.right-f.left)/2/_,b=(f.top-f.bottom)/2/x,A=[(d[0]+h[0])/2+v,(d[1]+h[1])/2+b],C=it(A),M=Math.min(n,_s(Math.abs(Math.min(_,x))));return It(Number.isFinite(M)),{longitude:C[0],latitude:C[1],zoom:M}}function Gw(t=0){return typeof t=="number"?{top:t,bottom:t,left:t,right:t}:(It(Number.isFinite(t.top)&&Number.isFinite(t.bottom)&&Number.isFinite(t.left)&&Number.isFinite(t.right)),t)}var C_=Math.PI/180;function Xc(t,e=0){let{width:r,height:i,unproject:s}=t,n={targetZ:e},o=s([0,i],n),a=s([r,i],n),c,l,u=t.fovy?.5*t.fovy*C_:Math.atan(.5/t.altitude),f=(90-t.pitch)*C_;return u>f-.01?(c=M_(t,0,e),l=M_(t,r,e)):(c=s([0,0],n),l=s([r,0],n)),[o,a,l,c]}function M_(t,e,r){let{pixelUnprojectionMatrix:i}=t,s=Hr(i,[e,0,1,1]),n=Hr(i,[e,t.height,1,1]),a=(r*t.distanceScales.unitsPerMeter[2]-s[2])/(n[2]-s[2]),c=Zt.lerp([],s,n,a),l=it(c);return l.push(r),l}var O_=512;function Jh(t){let{width:e,height:r,pitch:i=0}=t,{longitude:s,latitude:n,zoom:o,bearing:a=0}=t;(s<-180||s>180)&&(s=Yh(s+180,360)-180),(a<-180||a>180)&&(a=Yh(a+180,360)-180);let c=_s(r/O_);if(o<=c)o=c,n=0;else{let l=r/2/Math.pow(2,o),u=it([0,l])[1];if(nf&&(n=f)}}return{width:e,height:r,longitude:s,latitude:n,zoom:o,pitch:i,bearing:a}}var Qw=`
+`,ae={name:"project32",dependencies:[Ri],vs:Kw};function Xh(){return[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}function Hr(t,e){let r=Jt.transformMat4([],e,t);return Jt.scale(r,r,1/r[3]),r}function $h(t,e){let r=t%e;return r<0?e+r:r}function Qn(t,e,r){return tr?r:t}function qw(t){return Math.log(t)*Math.LOG2E}var _s=Math.log2||qw;function It(t,e){if(!t)throw new Error(e||"@math.gl/web-mercator: assertion failed.")}var Ot=Math.PI,P_=Ot/4,Tt=Ot/180,Yh=180/Ot,ys=512,Wc=4003e4,xs=85.051129,R_=1.5;function Kh(t){return _s(t)}function Ze(t){let[e,r]=t;It(Number.isFinite(e)),It(Number.isFinite(r)&&r>=-90&&r<=90,"invalid latitude");let i=e*Tt,s=r*Tt,n=ys*(i+Ot)/(2*Ot),o=ys*(Ot+Math.log(Math.tan(P_+s*.5)))/(2*Ot);return[n,o]}function it(t){let[e,r]=t,i=e/ys*(2*Ot)-Ot,s=2*(Math.atan(Math.exp(r/ys*(2*Ot)-Ot))-P_);return[i*Yh,s*Yh]}function qh(t){let{latitude:e}=t;It(Number.isFinite(e));let r=Math.cos(e*Tt);return Kh(Wc*r)-9}function Mi(t){let e=Math.cos(t*Tt);return ys/Wc/e}function Ts(t){let{latitude:e,longitude:r,highPrecision:i=!1}=t;It(Number.isFinite(e)&&Number.isFinite(r));let s=ys,n=Math.cos(e*Tt),o=s/360,a=o/n,c=s/Wc/n,l={unitsPerMeter:[c,c,c],metersPerUnit:[1/c,1/c,1/c],unitsPerDegree:[o,a,c],degreesPerUnit:[1/o,1/a,1/c]};if(i){let u=Tt*Math.tan(e*Tt)/n,f=o*u/2,h=s/Wc*u,d=h/a*c;l.unitsPerDegree2=[0,f,h],l.unitsPerMeter2=[d,0,d]}return l}function eo(t,e){let[r,i,s]=t,[n,o,a]=e,{unitsPerMeter:c,unitsPerMeter2:l}=Ts({longitude:r,latitude:i,highPrecision:!0}),u=Ze(t);u[0]+=n*(c[0]+l[0]*o),u[1]+=o*(c[1]+l[1]*o);let f=it(u),h=(s||0)+(a||0);return Number.isFinite(s)||Number.isFinite(a)?[f[0],f[1],h]:f}function Hc(t){let{height:e,pitch:r,bearing:i,altitude:s,scale:n,center:o}=t,a=Xh();Pe.translate(a,a,[0,0,-s]),Pe.rotateX(a,a,-r*Tt),Pe.rotateZ(a,a,i*Tt);let c=n/e;return Pe.scale(a,a,[c,c,c]),o&&Pe.translate(a,a,ms.negate([],o)),a}function Gh(t){let{width:e,height:r,altitude:i,pitch:s=0,offset:n,center:o,scale:a,nearZMultiplier:c=1,farZMultiplier:l=1}=t,{fovy:u=Ci(R_)}=t;i!==void 0&&(u=Ci(i));let f=u*Tt,h=s*Tt,d=to(u),p=d;o&&(p+=o[2]*a/Math.cos(h)/r);let g=f*(.5+(n?n[1]:0)/r),_=Math.sin(g)*p/Math.sin(Qn(Math.PI/2-h-g,.01,Math.PI-.01)),x=Math.sin(h)*_+p,v=p*10,b=Math.min(x*l,v);return{fov:f,aspect:e/r,focalDistance:d,near:c,far:b}}function Ci(t){return 2*Math.atan(.5/t)*Yh}function to(t){return .5/Math.tan(.5*t*Tt)}function vs(t,e){let[r,i,s=0]=t;return It(Number.isFinite(r)&&Number.isFinite(i)&&Number.isFinite(s)),Hr(e,[r,i,s,1])}function jr(t,e,r=0){let[i,s,n]=t;if(It(Number.isFinite(i)&&Number.isFinite(s),"invalid pixel coordinate"),Number.isFinite(n))return Hr(e,[i,s,n,1]);let o=Hr(e,[i,s,0,1]),a=Hr(e,[i,s,1,1]),c=o[2],l=a[2],u=c===l?0:((r||0)-c)/(l-c);return Zt.lerp([],o,a,u)}function jc(t){let{width:e,height:r,bounds:i,minExtent:s=0,maxZoom:n=24,offset:o=[0,0]}=t,[[a,c],[l,u]]=i,f=Gw(t.padding),h=Ze([a,Qn(u,-xs,xs)]),d=Ze([l,Qn(c,-xs,xs)]),p=[Math.max(Math.abs(d[0]-h[0]),s),Math.max(Math.abs(d[1]-h[1]),s)],g=[e-f.left-f.right-Math.abs(o[0])*2,r-f.top-f.bottom-Math.abs(o[1])*2];It(g[0]>0&&g[1]>0);let _=g[0]/p[0],x=g[1]/p[1],v=(f.right-f.left)/2/_,b=(f.top-f.bottom)/2/x,A=[(d[0]+h[0])/2+v,(d[1]+h[1])/2+b],C=it(A),M=Math.min(n,_s(Math.abs(Math.min(_,x))));return It(Number.isFinite(M)),{longitude:C[0],latitude:C[1],zoom:M}}function Gw(t=0){return typeof t=="number"?{top:t,bottom:t,left:t,right:t}:(It(Number.isFinite(t.top)&&Number.isFinite(t.bottom)&&Number.isFinite(t.left)&&Number.isFinite(t.right)),t)}var C_=Math.PI/180;function Xc(t,e=0){let{width:r,height:i,unproject:s}=t,n={targetZ:e},o=s([0,i],n),a=s([r,i],n),c,l,u=t.fovy?.5*t.fovy*C_:Math.atan(.5/t.altitude),f=(90-t.pitch)*C_;return u>f-.01?(c=M_(t,0,e),l=M_(t,r,e)):(c=s([0,0],n),l=s([r,0],n)),[o,a,l,c]}function M_(t,e,r){let{pixelUnprojectionMatrix:i}=t,s=Hr(i,[e,0,1,1]),n=Hr(i,[e,t.height,1,1]),a=(r*t.distanceScales.unitsPerMeter[2]-s[2])/(n[2]-s[2]),c=Zt.lerp([],s,n,a),l=it(c);return l.push(r),l}var O_=512;function Zh(t){let{width:e,height:r,pitch:i=0}=t,{longitude:s,latitude:n,zoom:o,bearing:a=0}=t;(s<-180||s>180)&&(s=$h(s+180,360)-180),(a<-180||a>180)&&(a=$h(a+180,360)-180);let c=_s(r/O_);if(o<=c)o=c,n=0;else{let l=r/2/Math.pow(2,o),u=it([0,l])[1];if(nf&&(n=f)}}return{width:e,height:r,longitude:s,latitude:n,zoom:o,pitch:i,bearing:a}}var Qw=`
const int max_lights = 2;
uniform mat4 shadow_uViewProjectionMatrices[max_lights];
uniform vec4 shadow_uProjectCenters[max_lights];
@@ -848,8 +848,8 @@ vec4 shadow_filterShadowColor(vec4 color) {
// use picking color if rendering to picking FBO.
color = picking_filterPickingColor(color);
- `}}};var lP=[Ri],uP=["vs:DECKGL_FILTER_SIZE(inout vec3 size, VertexGeometry geometry)","vs:DECKGL_FILTER_GL_POSITION(inout vec4 position, VertexGeometry geometry)","vs:DECKGL_FILTER_COLOR(inout vec4 color, VertexGeometry geometry)","fs:DECKGL_FILTER_COLOR(inout vec4 color, FragmentGeometry geometry)"];function ro(){let t=xi.getDefaultShaderAssembler();for(let e of lP)t.addDefaultModule(e);for(let e of uP)t.addShaderHook(e);return t}var fP=[255,255,255],hP=1,dP=0,Yc=class{constructor(e={}){this.type="ambient";let{color:r=fP}=e,{intensity:i=hP}=e;this.id=e.id||`ambient-${dP++}`,this.color=r,this.intensity=i}};var pP=[255,255,255],gP=1,mP=[0,0,-1],_P=0,io=class{constructor(e={}){this.type="directional";let{color:r=pP}=e,{intensity:i=gP}=e,{direction:s=mP}=e,{_shadow:n=!1}=e;this.id=e.id||`directional-${_P++}`,this.color=r,this.intensity=i,this.type="directional",this.direction=new Ue(s).normalize().toArray(),this.shadow=n}getProjectedLight(e){return this}};var so=class{constructor(e,r={id:"pass"}){let{id:i}=r;this.id=i,this.device=e,this.props={...r}}setProps(e){Object.assign(this.props,e)}render(e){}cleanup(){}};var xr=class extends so{constructor(){super(...arguments),this._lastRenderIndex=-1}render(e){let[r,i]=this.device.canvasContext.getDrawingBufferSize(),s=e.clearCanvas??!0,n=e.clearColor??(s?[0,0,0,0]:!1),o=s?1:!1,a=s?0:!1,c=e.colorMask??15,l={viewport:[0,0,r,i]};e.colorMask&&(l.colorMask=c),e.scissorRect&&(l.scissorRect=e.scissorRect);let u=this.device.beginRenderPass({framebuffer:e.target,parameters:l,clearColor:n,clearDepth:o,clearStencil:a});try{return this._drawLayers(u,e)}finally{u.end()}}_drawLayers(e,r){let{target:i,moduleParameters:s,viewports:n,views:o,onViewportActive:a,clearStack:c=!0}=r;r.pass=r.pass||"unknown",c&&(this._lastRenderIndex=-1);let l=[];for(let u of n){let f=o&&o[u.id];a?.(u);let h=this._getDrawLayerParams(u,r),d=u.subViewports||[u];for(let p of d){let g=this._drawLayersInViewport(e,{target:i,moduleParameters:s,viewport:p,view:f,pass:r.pass,layers:r.layers},h);l.push(g)}}return l}_getDrawLayerParams(e,{layers:r,pass:i,isPicking:s=!1,layerFilter:n,cullRect:o,effects:a,moduleParameters:c},l=!1){let u=[],f=N_(this._lastRenderIndex+1),h={layer:r[0],viewport:e,isPicking:s,renderPass:i,cullRect:o},d={};for(let p=0;pthis.device.clearWebGL(f))}let u={totalCount:r.length,visibleCount:0,compositeCount:0,pickableCount:0};e.setParameters({viewport:l});for(let f=0;f{let o=s.props._offset,a=s.id,c=s.parent&&s.parent.id,l;if(c&&!(c in e)&&i(s.parent,!1),c in r){let u=r[c]=r[c]||N_(e[c],e);l=u(s,n),r[a]=u}else Number.isFinite(o)?(l=o+(e[c]||0),r[a]=null):l=t;return n&&l>=t&&(t=l+1),e[a]=l,l};return i}function yP(t,{moduleParameters:e,target:r,viewport:i}){let s=e&&e.devicePixelRatio||t.canvasContext.cssToDeviceRatio(),[,n]=t.canvasContext.getDrawingBufferSize(),o=r?r.height:n,a=i;return[a.x*s,o-(a.y+a.height)*s,a.width*s,a.height*s]}var no=class extends xr{constructor(e,r){super(e,r),this.shadowMap=e.createTexture({width:1,height:1,sampler:{minFilter:"linear",magFilter:"linear",addressModeU:"clamp-to-edge",addressModeV:"clamp-to-edge"}}),this.depthBuffer=e.createTexture({format:"depth16unorm",width:1,height:1,mipmaps:!1,dataFormat:6402,type:5125}),this.fbo=e.createFramebuffer({id:"shadowmap",width:1,height:1,colorAttachments:[this.shadowMap],depthStencilAttachment:this.depthBuffer})}render(e){let r=this.fbo,i=this.device.canvasContext.cssToDeviceRatio(),s=e.viewports[0],n=s.width*i,o=s.height*i,a=[1,1,1,1];(n!==r.width||o!==r.height)&&r.resize({width:n,height:o}),super.render({...e,clearColor:a,target:r,pass:"shadow"})}getLayerParameters(e,r,i){return{...e.props.parameters,blend:!1,depthRange:[0,1],depthTest:!0}}shouldDrawLayer(e){return e.props.shadowEnabled!==!1}getModuleParameters(){return{drawToShadowMap:!0}}delete(){this.fbo&&(this.fbo.destroy(),this.fbo=null),this.shadowMap&&(this.shadowMap.destroy(),this.shadowMap=null),this.depthBuffer&&(this.depthBuffer.destroy(),this.depthBuffer=null)}};var xP={color:[255,255,255],intensity:1},F_=[{color:[255,255,255],intensity:1,direction:[-1,3,-1]},{color:[255,255,255],intensity:.9,direction:[1,-8,-2.5]}],TP=[0,0,0,200/255],bs=class{constructor(e={}){this.id="lighting-effect",this.shadowColor=TP,this.shadow=!1,this.ambientLight=null,this.directionalLights=[],this.pointLights=[],this.shadowPasses=[],this.shadowMaps=[],this.dummyShadowMap=null,this.setProps(e)}setup(e){this.context=e;let{device:r,deck:i}=e;this.shadow&&!this.dummyShadowMap&&(this._createShadowPasses(r),i._addDefaultShaderModule($c),this.dummyShadowMap=r.createTexture({width:1,height:1}))}setProps(e){this.ambientLight=null,this.directionalLights=[],this.pointLights=[];for(let r in e){let i=e[r];switch(i.type){case"ambient":this.ambientLight=i;break;case"directional":this.directionalLights.push(i);break;case"point":this.pointLights.push(i);break;default:}}this._applyDefaultLights(),this.shadow=this.directionalLights.some(r=>r.shadow),this.context&&this.setup(this.context),this.props=e}preRender({layers:e,layerFilter:r,viewports:i,onViewportActive:s,views:n}){if(this.shadow){this.shadowMatrices=this._calculateMatrices();for(let o=0;oi.getProjectedLight({layer:e})),pointLights:this.pointLights.map(i=>i.getProjectedLight({layer:e}))},r}cleanup(e){for(let r of this.shadowPasses)r.delete();this.shadowPasses.length=0,this.shadowMaps.length=0,this.dummyShadowMap&&(this.dummyShadowMap.destroy(),this.dummyShadowMap=null,e.deck._removeDefaultShaderModule($c))}_calculateMatrices(){let e=[];for(let r of this.directionalLights){let i=new De().lookAt({eye:new Ue(r.direction).negate()});e.push(i)}return e}_createShadowPasses(e){for(let r=0;rs&&(n=s);let o=this._pool,a=e.BYTES_PER_ELEMENT*n,c=o.findIndex(l=>l.byteLength>=a);if(c>=0){let l=new e(o.splice(c,1)[0],0,n);return i&&l.fill(0),l}return new e(n)}_release(e){if(!ArrayBuffer.isView(e))return;let r=this._pool,{buffer:i}=e,{byteLength:s}=i,n=r.findIndex(o=>o.byteLength>=s);n<0?r.push(i):(n>0||r.lengththis.opts.poolSize&&r.shift()}},Nt=new Qh;function As(){return[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}function L_(t){return[t[12],t[13],t[14]]}function k_(t){return{left:Ss(t[3]+t[0],t[7]+t[4],t[11]+t[8],t[15]+t[12]),right:Ss(t[3]-t[0],t[7]-t[4],t[11]-t[8],t[15]-t[12]),bottom:Ss(t[3]+t[1],t[7]+t[5],t[11]+t[9],t[15]+t[13]),top:Ss(t[3]-t[1],t[7]-t[5],t[11]-t[9],t[15]-t[13]),near:Ss(t[3]+t[2],t[7]+t[6],t[11]+t[10],t[15]+t[14]),far:Ss(t[3]-t[2],t[7]-t[6],t[11]-t[10],t[15]-t[14])}}var D_=new Ue;function Ss(t,e,r,i){D_.set(t,e,r);let s=D_.len();return{distance:i/s,normal:new Ue(-t/s,-e/s,-r/s)}}function Ii(t){return t-Math.fround(t)}var oo;function Kc(t,e){let{size:r=1,startIndex:i=0}=e,s=e.endIndex!==void 0?e.endIndex:t.length,n=(s-i)/r;oo=Nt.allocate(oo,n,{type:Float32Array,size:r*2});let o=i,a=0;for(;o=r.delay+r.duration*r.repeat}getTime(e){if(e===void 0)return this.time;let r=this.channels.get(e);return r===void 0?-1:r.time}setTime(e){this.time=Math.max(0,e);let r=this.channels.values();for(let s of r)this._setChannelTime(s,this.time);let i=this.animations.values();for(let s of i){let{animation:n,channel:o}=s;n.setTime(this.getTime(o))}}play(){this.playing=!0}pause(){this.playing=!1,this.lastEngineTime=-1}reset(){this.setTime(0)}attachAnimation(e,r){let i=PP++;return this.animations.set(i,{animation:e,channel:r}),e.setTime(this.getTime(r)),i}detachAnimation(e){this.animations.delete(e)}update(e){this.playing&&(this.lastEngineTime===-1&&(this.lastEngineTime=e),this.setTime(this.time+(e-this.lastEngineTime)),this.lastEngineTime=e)}_setChannelTime(e,r){let i=r-e.delay,s=e.duration*e.repeat;i>=s?e.time=e.duration*e.rate:(e.time=Math.max(0,i)%e.duration,e.time*=e.rate)}};var RP=0,CP={device:null,onAddHTML:()=>"",onInitialize:async()=>null,onRender:()=>{},onFinalize:()=>{},onError:t=>console.error(t),stats:dr.stats.get(`animation-loop-${RP++}`),useDevicePixels:!0,autoResizeViewport:!1,autoResizeDrawingBuffer:!1},ao=class{device=null;canvas=null;props;animationProps=null;timeline=null;stats;cpuTime;gpuTime;frameRate;display;needsRedraw="initialized";_initialized=!1;_running=!1;_animationFrameId=null;_nextFramePromise=null;_resolveNextFrame=null;_cpuStartTime=0;constructor(e){if(this.props={...CP,...e},e=this.props,!e.device)throw new Error("No device provided");let{useDevicePixels:r=!0}=this.props;this.stats=e.stats||new dt({id:"animation-loop-stats"}),this.cpuTime=this.stats.get("CPU Time"),this.gpuTime=this.stats.get("GPU Time"),this.frameRate=this.stats.get("Frame Rate"),this.setProps({autoResizeViewport:e.autoResizeViewport,autoResizeDrawingBuffer:e.autoResizeDrawingBuffer,useDevicePixels:r}),this.start=this.start.bind(this),this.stop=this.stop.bind(this),this._onMousemove=this._onMousemove.bind(this),this._onMouseleave=this._onMouseleave.bind(this)}destroy(){this.stop(),this._setDisplay(null)}delete(){this.destroy()}setNeedsRedraw(e){return this.needsRedraw=this.needsRedraw||e,this}setProps(e){return"autoResizeViewport"in e&&(this.props.autoResizeViewport=e.autoResizeViewport||!1),"autoResizeDrawingBuffer"in e&&(this.props.autoResizeDrawingBuffer=e.autoResizeDrawingBuffer||!1),"useDevicePixels"in e&&(this.props.useDevicePixels=e.useDevicePixels||!1),this}async start(){if(this._running)return this;this._running=!0;try{let e;return this._initialized||(this._initialized=!0,await this._initDevice(),this._initialize(),await this.props.onInitialize(this._getAnimationProps())),this._running?(e!==!1&&(this._cancelAnimationFrame(),this._requestAnimationFrame()),this):null}catch(e){let r=e instanceof Error?e:new Error("Unknown error");throw this.props.onError(r),r}}stop(){return this._running&&(this.animationProps&&this.props.onFinalize(this.animationProps),this._cancelAnimationFrame(),this._nextFramePromise=null,this._resolveNextFrame=null,this._running=!1),this}redraw(){return this.device?.isLost?this:(this._beginFrameTimers(),this._setupFrame(),this._updateAnimationProps(),this._renderFrame(this._getAnimationProps()),this._clearNeedsRedraw(),this._resolveNextFrame&&(this._resolveNextFrame(this),this._nextFramePromise=null,this._resolveNextFrame=null),this._endFrameTimers(),this)}attachTimeline(e){return this.timeline=e,this.timeline}detachTimeline(){this.timeline=null}waitForRender(){return this.setNeedsRedraw("waitForRender"),this._nextFramePromise||(this._nextFramePromise=new Promise(e=>{this._resolveNextFrame=e})),this._nextFramePromise}async toDataURL(){if(this.setNeedsRedraw("toDataURL"),await this.waitForRender(),this.canvas instanceof HTMLCanvasElement)return this.canvas.toDataURL();throw new Error("OffscreenCanvas")}_initialize(){this._startEventHandling(),this._initializeAnimationProps(),this._updateAnimationProps(),this._resizeCanvasDrawingBuffer(),this._resizeViewport()}_setDisplay(e){this.display&&(this.display.destroy(),this.display.animationLoop=null),e&&(e.animationLoop=this),this.display=e}_requestAnimationFrame(){this._running&&(this._animationFrameId=wf(this._animationFrame.bind(this)))}_cancelAnimationFrame(){this._animationFrameId!==null&&(Pf(this._animationFrameId),this._animationFrameId=null)}_animationFrame(){this._running&&(this.redraw(),this._requestAnimationFrame())}_renderFrame(e){if(this.display){this.display._renderFrame(e);return}this.props.onRender(this._getAnimationProps()),this.device.submit()}_clearNeedsRedraw(){this.needsRedraw=!1}_setupFrame(){this._resizeCanvasDrawingBuffer(),this._resizeViewport()}_initializeAnimationProps(){if(!this.device)throw new Error("loop");this.animationProps={animationLoop:this,device:this.device,canvas:this.device?.canvasContext?.canvas,timeline:this.timeline,useDevicePixels:this.props.useDevicePixels,needsRedraw:!1,width:1,height:1,aspect:1,time:0,startTime:Date.now(),engineTime:0,tick:0,tock:0,_mousePosition:null}}_getAnimationProps(){if(!this.animationProps)throw new Error("animationProps");return this.animationProps}_updateAnimationProps(){if(!this.animationProps)return;let{width:e,height:r,aspect:i}=this._getSizeAndAspect();(e!==this.animationProps.width||r!==this.animationProps.height)&&this.setNeedsRedraw("drawing buffer resized"),i!==this.animationProps.aspect&&this.setNeedsRedraw("drawing buffer aspect changed"),this.animationProps.width=e,this.animationProps.height=r,this.animationProps.aspect=i,this.animationProps.needsRedraw=this.needsRedraw,this.animationProps.engineTime=Date.now()-this.animationProps.startTime,this.timeline&&this.timeline.update(this.animationProps.engineTime),this.animationProps.tick=Math.floor(this.animationProps.time/1e3*60),this.animationProps.tock++,this.animationProps.time=this.timeline?this.timeline.getTime():this.animationProps.engineTime}async _initDevice(){if(this.device=await this.props.device,!this.device)throw new Error("No device provided");this.canvas=this.device.canvasContext?.canvas||null}_createInfoDiv(){if(this.canvas&&this.props.onAddHTML){let e=document.createElement("div");document.body.appendChild(e),e.style.position="relative";let r=document.createElement("div");r.style.position="absolute",r.style.left="10px",r.style.bottom="10px",r.style.width="300px",r.style.background="white",this.canvas instanceof HTMLCanvasElement&&e.appendChild(this.canvas),e.appendChild(r);let i=this.props.onAddHTML(r);i&&(r.innerHTML=i)}}_getSizeAndAspect(){if(!this.device)return{width:1,height:1,aspect:1};let[e,r]=this.device?.canvasContext?.getPixelSize()||[1,1],i=1,s=this.device?.canvasContext?.canvas;return s&&s.clientHeight?i=s.clientWidth/s.clientHeight:e>0&&r>0&&(i=e/r),{width:e,height:r,aspect:i}}_resizeViewport(){this.props.autoResizeViewport&&this.device.gl&&this.device.gl.viewport(0,0,this.device.gl.drawingBufferWidth,this.device.gl.drawingBufferHeight)}_resizeCanvasDrawingBuffer(){this.props.autoResizeDrawingBuffer&&this.device?.canvasContext?.resize({useDevicePixels:this.props.useDevicePixels})}_beginFrameTimers(){this.frameRate.timeEnd(),this.frameRate.timeStart(),this.cpuTime.timeStart()}_endFrameTimers(){this.cpuTime.timeEnd()}_startEventHandling(){this.canvas&&(this.canvas.addEventListener("mousemove",this._onMousemove.bind(this)),this.canvas.addEventListener("mouseleave",this._onMouseleave.bind(this)))}_onMousemove(e){e instanceof MouseEvent&&(this._getAnimationProps()._mousePosition=[e.offsetX,e.offsetY])}_onMouseleave(e){this._getAnimationProps()._mousePosition=null}};var qc=class{id;userData={};topology;bufferLayout=[];vertexCount;indices;attributes;constructor(e){this.id=e.id||Fe("geometry"),this.topology=e.topology,this.indices=e.indices||null,this.attributes=e.attributes,this.vertexCount=e.vertexCount,this.bufferLayout=e.bufferLayout||[],this.indices&&ee(this.indices.usage===ie.INDEX)}destroy(){this.indices?.destroy();for(let e of Object.values(this.attributes))e.destroy()}getVertexCount(){return this.vertexCount}getAttributes(){return this.attributes}getIndexes(){return this.indices}_calculateVertexCount(e){return e.byteLength/12}};function W_(t,e){if(e instanceof qc)return e;let r=MP(t,e),{attributes:i,bufferLayout:s}=IP(t,e);return new qc({topology:e.topology||"triangle-list",bufferLayout:s,vertexCount:e.vertexCount,indices:r,attributes:i})}function MP(t,e){if(!e.indices)return;let r=e.indices.value;return t.createBuffer({usage:ie.INDEX,data:r})}function IP(t,e){let r=[],i={};for(let[n,o]of Object.entries(e.attributes)){let a=n;switch(n){case"POSITION":a="positions";break;case"NORMAL":a="normals";break;case"TEXCOORD_0":a="texCoords";break;case"COLOR_0":a="colors";break}i[a]=t.createBuffer({data:o.value,id:`${n}-buffer`});let{value:c,size:l,normalized:u}=o;r.push({name:a,format:Sf(c,l,u)})}let s=e._calculateVertexCount(e.attributes,e.indices);return{attributes:i,bufferLayout:r,vertexCount:s}}var Gc=class{modules;moduleUniforms;moduleBindings;moduleUniformsChanged;constructor(e){let r=yi(Object.values(e).filter(i=>i.dependencies));for(let i of r)e[i.name]=i;O.log(1,"Creating ShaderInputs with modules",Object.keys(e))(),this.modules=e,this.moduleUniforms={},this.moduleBindings={};for(let[i,s]of Object.entries(e)){let n=i;this.moduleUniforms[n]=s.defaultUniforms||{},this.moduleBindings[n]={}}}destroy(){}setProps(e){for(let r of Object.keys(e)){let i=r,s=e[i],n=this.modules[i];if(!n){O.warn(`Module ${r} not found`)();continue}let o=this.moduleUniforms[i],a=n.getUniforms?.(s,this.moduleUniforms[i])||s;this.moduleUniforms[i]={...o,...a}}}getModules(){return Object.values(this.modules)}getUniformValues(){return this.moduleUniforms}getBindings(){let e={};for(let r of Object.values(this.moduleBindings))Object.assign(e,r);return e}getDebugTable(){let e={};for(let[r,i]of Object.entries(this.moduleUniforms))for(let[s,n]of Object.entries(i))e[`${r}.${s}`]={type:this.modules[r].uniformTypes?.[s],value:String(n)};return e}};var Zc=class t{static defaultProps={...qt.defaultProps};device;_hashCounter=0;_hashes={};_renderPipelineCache={};_computePipelineCache={};static getDefaultPipelineFactory(e){return e._lumaData.defaultPipelineFactory=e._lumaData.defaultPipelineFactory||new t(e),e._lumaData.defaultPipelineFactory}constructor(e){this.device=e}createRenderPipeline(e){let r={...qt.defaultProps,...e},i=this._hashRenderPipeline(r);if(!this._renderPipelineCache[i]){let s=this.device.createRenderPipeline({...r,id:r.id?`${r.id}-cached`:void 0});s.hash=i,this._renderPipelineCache[i]={pipeline:s,useCount:0}}return this._renderPipelineCache[i].useCount++,this._renderPipelineCache[i].pipeline}createComputePipeline(e){let r={...us.defaultProps,...e},i=this._hashComputePipeline(r);if(!this._computePipelineCache[i]){let s=this.device.createComputePipeline({...r,id:r.id?`${r.id}-cached`:void 0});s.hash=i,this._computePipelineCache[i]={pipeline:s,useCount:0}}return this._computePipelineCache[i].useCount++,this._computePipelineCache[i].pipeline}release(e){let r=e.hash,i=e instanceof us?this._computePipelineCache:this._renderPipelineCache;i[r].useCount--,i[r].useCount===0&&(i[r].pipeline.destroy(),delete i[r])}_hashComputePipeline(e){return`${this._getHash(e.shader.source)}`}_hashRenderPipeline(e){let r=this._getHash(e.vs.source),i=e.fs?this._getHash(e.fs.source):0,s="-",n=this._getHash(JSON.stringify(e.bufferLayout));switch(this.device.type){case"webgl":return`${r}/${i}V${s}BL${n}`;default:let o=this._getHash(JSON.stringify(e.parameters));return`${r}/${i}V${s}T${e.topology}P${o}BL${n}`}}_getHash(e){return this._hashes[e]===void 0&&(this._hashes[e]=this._hashCounter++),this._hashes[e]}};var Jc=class t{static defaultProps={...bi.defaultProps};device;_cache={};static getDefaultShaderFactory(e){return e._lumaData.defaultShaderFactory||=new t(e),e._lumaData.defaultShaderFactory}constructor(e){this.device=e}createShader(e){let r=this._hashShader(e),i=this._cache[r];if(!i){let s=this.device.createShader({...e,id:e.id?`${e.id}-cached`:void 0});this._cache[r]=i={shader:s,useCount:0}}return i.useCount++,i.shader}release(e){let r=this._hashShader(e),i=this._cache[r];i&&(i.useCount--,i.useCount===0&&(delete this._cache[r],i.shader.destroy()))}_hashShader(e){return`${e.stage}:${e.source}`}};function H_(t,e){let r={},i="Values";if(t.attributes.length===0&&!t.varyings?.length)return{"No attributes or varyings":{[i]:"N/A"}};for(let s of t.attributes)if(s){let n=`${s.location} ${s.name}: ${s.type}`;r[`in ${n}`]={[i]:s.stepMode||"vertex"}}for(let s of t.varyings||[]){let n=`${s.location} ${s.name}`;r[`out ${n}`]={[i]:JSON.stringify(s.accessor)}}return r}var Ie=null,rd=null;function j_(t,{id:e,minimap:r,opaque:i,top:s="0",left:n="0",rgbaScale:o=1}){Ie||(Ie=document.createElement("canvas"),Ie.id=e,Ie.title=e,Ie.style.zIndex="100",Ie.style.position="absolute",Ie.style.top=s,Ie.style.left=n,Ie.style.border="blue 1px solid",Ie.style.transform="scaleY(-1)",document.body.appendChild(Ie),rd=Ie.getContext("2d")),(Ie.width!==t.width||Ie.height!==t.height)&&(Ie.width=t.width/2,Ie.height=t.height/2,Ie.style.width="400px",Ie.style.height="400px");let a=t.device.readPixelsToArrayWebGL(t),c=rd.createImageData(t.width,t.height),l=0;for(let u=0;u[a.name,a])||[]);this.setShaderInputs(r.shaderInputs||new Gc(i));let s=NP(e),n=(this.props.modules?.length>0?this.props.modules:this.shaderInputs?.getModules())||[];if(this.device.type==="webgpu"&&this.props.source){this.props.shaderLayout||=ch(this.props.source);let{source:a,getUniforms:c}=this.props.shaderAssembler.assembleShader({platformInfo:s,...this.props,modules:n});this.source=a,this._getModuleUniforms=c}else{let{vs:a,fs:c,getUniforms:l}=this.props.shaderAssembler.assembleShaderPair({platformInfo:s,...this.props,modules:n});this.vs=a,this.fs=c,this._getModuleUniforms=l}this.vertexCount=this.props.vertexCount,this.instanceCount=this.props.instanceCount,this.topology=this.props.topology,this.bufferLayout=this.props.bufferLayout,this.parameters=this.props.parameters,r.geometry&&this.setGeometry(r.geometry),this.pipelineFactory=r.pipelineFactory||Zc.getDefaultPipelineFactory(this.device),this.shaderFactory=r.shaderFactory||Jc.getDefaultShaderFactory(this.device),this.pipeline=this._updatePipeline(),this.vertexArray=e.createVertexArray({renderPipeline:this.pipeline}),this._gpuGeometry&&this._setGeometryAttributes(this._gpuGeometry),"isInstanced"in r&&(this.isInstanced=r.isInstanced),r.instanceCount&&this.setInstanceCount(r.instanceCount),r.vertexCount&&this.setVertexCount(r.vertexCount),r.indexBuffer&&this.setIndexBuffer(r.indexBuffer),r.attributes&&this.setAttributes(r.attributes),r.constantAttributes&&this.setConstantAttributes(r.constantAttributes),r.bindings&&this.setBindings(r.bindings),r.uniforms&&this.setUniforms(r.uniforms),r.moduleSettings&&this.updateModuleSettings(r.moduleSettings),r.transformFeedback&&(this.transformFeedback=r.transformFeedback),Object.seal(this)}destroy(){this._destroyed||(this.pipelineFactory.release(this.pipeline),this.shaderFactory.release(this.pipeline.vs),this.pipeline.fs&&this.shaderFactory.release(this.pipeline.fs),this._uniformStore.destroy(),this._gpuGeometry?.destroy(),this._destroyed=!0)}needsRedraw(){this._getBindingsUpdateTimestamp()>this._lastDrawTimestamp&&this.setNeedsRedraw("contents of bound textures or buffers updated");let e=this._needsRedraw;return this._needsRedraw=!1,e}setNeedsRedraw(e){this._needsRedraw||=e}predraw(){this.updateShaderInputs(),this.pipeline=this._updatePipeline()}draw(e){this.predraw();let r;try{this._logDrawCallStart(),this.pipeline=this._updatePipeline(),this.pipeline.setBindings(this.bindings,{disableWarnings:this.props.disableWarnings}),Br(this.uniforms)||this.pipeline.setUniformsWebGL(this.uniforms);let{indexBuffer:i}=this.vertexArray,s=i?i.byteLength/(i.indexType==="uint32"?4:2):void 0;r=this.pipeline.draw({renderPass:e,vertexArray:this.vertexArray,isInstanced:this.isInstanced,vertexCount:this.vertexCount,instanceCount:this.instanceCount,indexCount:s,transformFeedback:this.transformFeedback||void 0,parameters:this.parameters,topology:this.topology})}finally{this._logDrawCallEnd()}return this._logFramebuffer(e),r?(this._lastDrawTimestamp=this.device.timestamp,this._needsRedraw=!1):this._needsRedraw="waiting for resource initialization",r}setGeometry(e){this._gpuGeometry?.destroy();let r=e&&W_(this.device,e);r&&(this.setTopology(r.topology||"triangle-list"),this.bufferLayout=X_(r.bufferLayout,this.bufferLayout),this.vertexArray&&this._setGeometryAttributes(r)),this._gpuGeometry=r}setTopology(e){e!==this.topology&&(this.topology=e,this._setPipelineNeedsUpdate("topology"))}setBufferLayout(e){this.bufferLayout=this._gpuGeometry?X_(e,this._gpuGeometry.bufferLayout):e,this._setPipelineNeedsUpdate("bufferLayout"),this.pipeline=this._updatePipeline(),this.vertexArray=this.device.createVertexArray({renderPipeline:this.pipeline}),this._gpuGeometry&&this._setGeometryAttributes(this._gpuGeometry)}setParameters(e){$n(e,this.parameters,2)||(this.parameters=e,this._setPipelineNeedsUpdate("parameters"))}setInstanceCount(e){this.instanceCount=e,this.isInstanced===void 0&&e>0&&(this.isInstanced=!0),this.setNeedsRedraw("instanceCount")}setVertexCount(e){this.vertexCount=e,this.setNeedsRedraw("vertexCount")}setShaderInputs(e){this.shaderInputs=e,this._uniformStore=new Wn(this.shaderInputs.modules);for(let r of Object.keys(this.shaderInputs.modules)){let i=this._uniformStore.getManagedUniformBuffer(this.device,r);this.bindings[`${r}Uniforms`]=i}this.setNeedsRedraw("shaderInputs")}updateShaderInputs(){this._uniformStore.setUniforms(this.shaderInputs.getUniformValues()),this.setNeedsRedraw("shaderInputs")}setBindings(e){Object.assign(this.bindings,e),this.setNeedsRedraw("bindings")}setTransformFeedback(e){this.transformFeedback=e,this.setNeedsRedraw("transformFeedback")}setIndexBuffer(e){this.vertexArray.setIndexBuffer(e),this.setNeedsRedraw("indexBuffer")}setAttributes(e,r){e.indices&&O.warn(`Model:${this.id} setAttributes() - indexBuffer should be set using setIndexBuffer()`)();for(let[i,s]of Object.entries(e)){let n=this.bufferLayout.find(c=>$_(c).includes(i));if(!n){O.warn(`Model(${this.id}): Missing layout for buffer "${i}".`)();continue}let o=$_(n),a=!1;for(let c of o){let l=this._attributeInfos[c];l&&(this.vertexArray.setBuffer(l.location,s),a=!0)}!a&&!(r?.disableWarnings??this.props.disableWarnings)&&O.warn(`Model(${this.id}): Ignoring buffer "${s.id}" for unknown attribute "${i}"`)()}this.setNeedsRedraw("attributes")}setConstantAttributes(e,r){for(let[i,s]of Object.entries(e)){let n=this._attributeInfos[i];n?this.vertexArray.setConstantWebGL(n.location,s):(r?.disableWarnings??this.props.disableWarnings)||O.warn(`Model "${this.id}: Ignoring constant supplied for unknown attribute "${i}"`)()}this.setNeedsRedraw("constants")}setUniforms(e){Br(e)||(this.pipeline.setUniformsWebGL(e),Object.assign(this.uniforms,e)),this.setNeedsRedraw("uniforms")}updateModuleSettings(e){let{bindings:r,uniforms:i}=jn(this._getModuleUniforms(e));Object.assign(this.bindings,r),Object.assign(this.uniforms,i),this.setNeedsRedraw("moduleSettings")}_getBindingsUpdateTimestamp(){let e=0;for(let r of Object.values(this.bindings))r instanceof vi?e=Math.max(e,r.texture.updateTimestamp):r instanceof ie||r instanceof Ae?e=Math.max(e,r.updateTimestamp):r instanceof Si||(e=Math.max(e,r.buffer.updateTimestamp));return e}_setGeometryAttributes(e){let r={...e.attributes};for(let[i]of Object.entries(r))!this.pipeline.shaderLayout.attributes.find(s=>s.name===i)&&i!=="positions"&&delete r[i];this.vertexCount=e.vertexCount,this.setIndexBuffer(e.indices||null),this.setAttributes(e.attributes,{disableWarnings:!0}),this.setAttributes(r,{disableWarnings:this.props.disableWarnings}),this.setNeedsRedraw("geometry attributes")}_setPipelineNeedsUpdate(e){this._pipelineNeedsUpdate||=e,this.setNeedsRedraw(e)}_updatePipeline(){if(this._pipelineNeedsUpdate){let e=null,r=null;this.pipeline&&(O.log(1,`Model ${this.id}: Recreating pipeline because "${this._pipelineNeedsUpdate}".`)(),e=this.pipeline.vs,r=this.pipeline.fs),this._pipelineNeedsUpdate=!1;let i=this.shaderFactory.createShader({id:`${this.id}-vertex`,stage:"vertex",source:this.source||this.vs,debug:this.props.debugShaders}),s=null;this.source?s=i:this.fs&&(s=this.shaderFactory.createShader({id:`${this.id}-fragment`,stage:"fragment",source:this.source||this.fs,debug:this.props.debugShaders})),this.pipeline=this.pipelineFactory.createRenderPipeline({...this.props,bufferLayout:this.bufferLayout,topology:this.topology,parameters:this.parameters,vs:i,fs:s}),this._attributeInfos=lc(this.pipeline.shaderLayout,this.bufferLayout),e&&this.shaderFactory.release(e),r&&this.shaderFactory.release(r)}return this.pipeline}_lastLogTime=0;_logOpen=!1;_logDrawCallStart(){let e=O.level>3?0:OP;O.level<2||Date.now()-this._lastLogTime>> DRAWING MODEL ${this.id}`,{collapsed:O.level<=2})())}_logDrawCallEnd(){if(this._logOpen){let e=H_(this.pipeline.shaderLayout,this.id);O.table(Es,e)();let r=this.shaderInputs.getDebugTable();for(let[s,n]of Object.entries(this.uniforms))r[s]={value:n};O.table(Es,r)();let i=this._getAttributeDebugTable();O.table(Es,this._attributeInfos)(),O.table(Es,i)(),O.groupEnd(Es)(),this._logOpen=!1}}_drawCount=0;_logFramebuffer(e){let r=O.get("framebuffer");if(this._drawCount++,!r||this._drawCount++>3&&this._drawCount%60)return;let i=e.props.framebuffer;i&&j_(i,{id:i.id,minimap:!0})}_getAttributeDebugTable(){let e={};for(let[r,i]of Object.entries(this._attributeInfos))e[i.location]={name:r,type:i.shaderType,values:this._getBufferOrConstantValues(this.vertexArray.attributes[i.location],i.bufferDataType)};if(this.vertexArray.indexBuffer){let{indexBuffer:r}=this.vertexArray,i=r.indexType==="uint32"?new Uint32Array(r.debugData):new Uint16Array(r.debugData);e.indices={name:"indices",type:r.indexType,values:i.toString()}}return e}_getBufferOrConstantValues(e,r){let i=Hn(r);return(e instanceof ie?new i(e.debugData):e).toString()}};function X_(t,e){let r=[...t];for(let i of e){let s=r.findIndex(n=>n.name===i.name);s<0?r.push(i):r[s]=i}return r}function NP(t){return{type:t.type,shaderLanguage:t.info.shadingLanguage,shaderLanguageVersion:t.info.shadingLanguageVersion,gpu:t.info.gpu,features:t.features}}function $_(t){return t.attributes?t.attributes?.map(e=>e.attribute):[t.name]}var Xr=class t{device;model;transformFeedback;static isSupported(e){return e?.info?.type==="webgl"}constructor(e,r=te.defaultProps){ee(t.isSupported(e),"BufferTransform not yet implemented on WebGPU"),this.device=e,this.model=new te(this.device,{id:r.id||"buffer-transform-model",fs:r.fs||On(),topology:r.topology||"point-list",...r}),this.transformFeedback=this.device.createTransformFeedback({layout:this.model.pipeline.shaderLayout,buffers:r.feedbackBuffers}),this.model.setTransformFeedback(this.transformFeedback),Object.seal(this)}destroy(){this.model&&this.model.destroy()}delete(){this.destroy()}run(e){let r=this.device.beginRenderPass(e);this.model.draw(r),r.end()}update(...e){console.warn("TextureTransform#update() not implemented")}getBuffer(e){return this.transformFeedback.getBuffer(e)}readAsync(e){let r=this.getBuffer(e);if(r instanceof ie)return r.readAsync();let{buffer:i,byteOffset:s=0,byteLength:n=i.byteLength}=r;return i.readAsync(s,n)}};var FP="transform_output",$r=class{device;model;sampler;currentIndex=0;samplerTextureMap=null;bindings=[];resources={};constructor(e,r){this.device=e,this.sampler=e.createSampler({addressModeU:"clamp-to-edge",addressModeV:"clamp-to-edge",minFilter:"nearest",magFilter:"nearest",mipmapFilter:"nearest"}),this.model=new te(this.device,{id:r.id||"texture-transform-model",fs:r.fs||On({input:r.targetTextureVarying,inputChannels:r.targetTextureChannels,output:FP}),vertexCount:r.vertexCount,...r}),this._initialize(r),Object.seal(this)}destroy(){}delete(){this.destroy()}run(e){let{framebuffer:r}=this.bindings[this.currentIndex],i=this.device.beginRenderPass({framebuffer:r,...e});this.model.draw(i),i.end()}update(...e){console.warn("TextureTransform#update() not implemented")}getData({packed:e=!1}={}){throw new Error("getData() not implemented")}getTargetTexture(){let{targetTexture:e}=this.bindings[this.currentIndex];return e}getFramebuffer(){return this.bindings[this.currentIndex].framebuffer}_initialize(e){this._updateBindings(e)}_updateBindings(e){this.bindings[this.currentIndex]=this._updateBinding(this.bindings[this.currentIndex],e)}_updateBinding(e,{sourceBuffers:r,sourceTextures:i,targetTexture:s}){if(e||(e={sourceBuffers:{},sourceTextures:{},targetTexture:null}),Object.assign(e.sourceTextures,i),Object.assign(e.sourceBuffers,r),s){e.targetTexture=s;let{width:n,height:o}=s;e.framebuffer&&e.framebuffer.destroy(),e.framebuffer=this.device.createFramebuffer({id:"transform-framebuffer",width:n,height:o,colorAttachments:[s]}),e.framebuffer.resize({width:n,height:o})}return e}_setSourceTextureParameters(){let e=this.currentIndex,{sourceTextures:r}=this.bindings[e];for(let i in r)r[i].sampler=this.sampler}};var fe=class{id;topology;vertexCount;indices;attributes;userData={};constructor(e){let{attributes:r={},indices:i=null,vertexCount:s=null}=e;this.id=e.id||Fe("geometry"),this.topology=e.topology,i&&(this.indices=ArrayBuffer.isView(i)?{value:i,size:1}:i),this.attributes={};for(let[n,o]of Object.entries(r)){let a=ArrayBuffer.isView(o)?{value:o}:o;ee(ArrayBuffer.isView(a.value),`${this._print(n)}: must be typed array or object with value as typed array`),(n==="POSITION"||n==="positions")&&!a.size&&(a.size=3),n==="indices"?(ee(!this.indices),this.indices=a):this.attributes[n]=a}this.indices&&this.indices.isIndexed!==void 0&&(this.indices=Object.assign({},this.indices),delete this.indices.isIndexed),this.vertexCount=s||this._calculateVertexCount(this.attributes,this.indices)}getVertexCount(){return this.vertexCount}getAttributes(){return this.indices?{indices:this.indices,...this.attributes}:this.attributes}_print(e){return`Geometry ${this.id} attribute ${e}`}_setAttributes(e,r){return this}_calculateVertexCount(e,r){if(r)return r.value.length;let i=1/0;for(let s of Object.values(e)){let{value:n,size:o,constant:a}=s;!a&&n&&o>=1&&(i=Math.min(i,n.length/o))}return ee(Number.isFinite(i)),i}};var Fi=class extends fe{constructor(e={}){let{id:r=Fe("cube-geometry"),indices:i=!0}=e;super(i?{...e,id:r,topology:"triangle-list",indices:{size:1,value:DP},attributes:{...WP,...e.attributes}}:{...e,id:r,topology:"triangle-list",indices:void 0,attributes:{...HP,...e.attributes}})}},DP=new Uint16Array([0,1,2,0,2,3,4,5,6,4,6,7,8,9,10,8,10,11,12,13,14,12,14,15,16,17,18,16,18,19,20,21,22,20,22,23]),LP=new Float32Array([-1,-1,1,1,-1,1,1,1,1,-1,1,1,-1,-1,-1,-1,1,-1,1,1,-1,1,-1,-1,-1,1,-1,-1,1,1,1,1,1,1,1,-1,-1,-1,-1,1,-1,-1,1,-1,1,-1,-1,1,1,-1,-1,1,1,-1,1,1,1,1,-1,1,-1,-1,-1,-1,-1,1,-1,1,1,-1,1,-1]),kP=new Float32Array([0,0,1,0,0,1,0,0,1,0,0,1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,1,0,0,1,0,0,1,0,0,1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,1,0,0,1,0,0,1,0,0,1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0]),BP=new Float32Array([0,0,1,0,1,1,0,1,1,0,1,1,0,1,0,0,0,1,0,0,1,0,1,1,1,1,0,1,0,0,1,0,1,0,1,1,0,1,0,0,0,0,1,0,1,1,0,1]),UP=new Float32Array([1,-1,1,-1,-1,1,-1,-1,-1,1,-1,-1,1,-1,1,-1,-1,-1,1,1,1,1,-1,1,1,-1,-1,1,1,-1,1,1,1,1,-1,-1,-1,1,1,1,1,1,1,1,-1,-1,1,-1,-1,1,1,1,1,-1,-1,-1,1,-1,1,1,-1,1,-1,-1,-1,-1,-1,-1,1,-1,1,-1,1,1,1,-1,1,1,-1,-1,1,-1,-1,1,1,-1,1,1,1,1,1,-1,-1,-1,-1,-1,-1,1,-1,1,1,-1,1,-1,-1,-1,1,-1]),zP=new Float32Array([1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,0,0,1,0,1,1,1,1,0,1,0,0,1,0,1,1,0,0]),VP=new Float32Array([1,0,1,1,0,0,1,1,0,0,0,1,1,0,0,1,1,0,1,1,0,0,0,1,1,1,1,1,1,0,1,1,1,0,0,1,1,1,0,1,1,1,1,1,1,0,0,1,0,1,1,1,1,1,1,1,1,1,0,1,0,1,0,1,0,1,1,1,1,1,0,1,0,0,1,1,0,1,1,1,0,1,0,1,0,0,0,1,0,0,1,1,0,1,0,1,1,1,1,1,0,1,1,1,0,0,1,1,0,0,1,1,1,0,1,1,1,1,1,1,1,0,0,1,0,0,0,1,0,1,0,1,1,1,0,1,1,0,0,1,0,1,0,1]),WP={POSITION:{size:3,value:LP},NORMAL:{size:3,value:kP},TEXCOORD_0:{size:2,value:BP}},HP={POSITION:{size:3,value:UP},TEXCOORD_0:{size:2,value:zP},COLOR_0:{size:3,value:VP}};var jP={blendColorOperation:"add",blendColorSrcFactor:"one",blendColorDstFactor:"zero",blendAlphaOperation:"add",blendAlphaSrcFactor:"constant-alpha",blendAlphaDstFactor:"zero"},Di=class extends xr{constructor(){super(...arguments),this._colorEncoderState=null}render(e){return"pickingFBO"in e?this._drawPickingBuffer(e):super.render(e)}_drawPickingBuffer({layers:e,layerFilter:r,views:i,viewports:s,onViewportActive:n,pickingFBO:o,deviceRect:{x:a,y:c,width:l,height:u},cullRect:f,effects:h,pass:d="picking",pickZ:p,moduleParameters:g}){this.pickZ=p;let _=this._resetColorEncoder(p),x=[a,c,l,u],v=super.render({target:o,layers:e,layerFilter:r,views:i,viewports:s,onViewportActive:n,cullRect:f,effects:h?.filter(A=>A.useInPicking),pass:d,isPicking:!0,moduleParameters:g,clearColor:[0,0,0,0],colorMask:15,scissorRect:x});return this._colorEncoderState=null,{decodePickingColor:_&&$P.bind(null,_),stats:v}}shouldDrawLayer(e){let{pickable:r,operation:i}=e.props;return r&&i.includes("draw")||i.includes("terrain")||i.includes("mask")}getModuleParameters(){return{picking:{isActive:1,isAttribute:this.pickZ},lightSources:{}}}getLayerParameters(e,r,i){let s={depthMask:!0,depthTest:!0,depthRange:[0,1],...e.props.parameters},{pickable:n,operation:o}=e.props;return!this._colorEncoderState||o.includes("terrain")?s.blend=!1:n&&o.includes("draw")&&(Object.assign(s,jP),s.blend=!0,s.blendColor=XP(this._colorEncoderState,e,i)),s}_resetColorEncoder(e){return this._colorEncoderState=e?null:{byLayer:new Map,byAlpha:[]},this._colorEncoderState}};function XP(t,e,r){let{byLayer:i,byAlpha:s}=t,n,o=i.get(e);return o?(o.viewports.push(r),n=o.a):(n=i.size+1,n<=255?(o={a:n,layer:e,viewports:[r]},i.set(e,o),s[n]=o):(U.warn("Too many pickable layers, only picking the first 255")(),n=0)),[0,0,0,n/255]}function $P(t,e){let r=t.byAlpha[e[3]];return r&&{pickedLayer:r.layer,pickedViewports:r.viewports,pickedObjectIndex:r.layer.decodePickingColor(e)}}var Yr={NO_STATE:"Awaiting state",MATCHED:"Matched. State transferred from previous layer",INITIALIZED:"Initialized",AWAITING_GC:"Discarded. Awaiting garbage collection",AWAITING_FINALIZATION:"No longer matched. Awaiting garbage collection",FINALIZED:"Finalized! Awaiting garbage collection"},ws=Symbol.for("component"),vt=Symbol.for("propTypes"),Qc=Symbol.for("deprecatedProps"),Tr=Symbol.for("asyncPropDefaults"),tr=Symbol.for("asyncPropOriginal"),Ft=Symbol.for("asyncPropResolved");function bt(t,e=()=>!0){return Array.isArray(t)?Y_(t,e,[]):e(t)?[t]:[]}function Y_(t,e,r){let i=-1;for(;++i0}delete(){}getData(){return this.isLoaded?this._error?Promise.reject(this._error):this._content:this._loader.then(()=>this.getData())}setData(e,r){if(e===this._data&&!r)return;this._data=e;let i=++this._loadCount,s=e;typeof e=="string"&&(s=Lr(e)),s instanceof Promise?(this.isLoaded=!1,this._loader=s.then(n=>{this._loadCount===i&&(this.isLoaded=!0,this._error=void 0,this._content=n)}).catch(n=>{this._loadCount===i&&(this.isLoaded=!0,this._error=n||!0)})):(this.isLoaded=!0,this._error=void 0,this._content=e);for(let n of this._subscribers)n.onChange(this.getData())}};var lo=class{constructor(e){this.protocol=e.protocol||"resource://",this._context={device:e.device,gl:e.device?.gl,resourceManager:this},this._resources={},this._consumers={},this._pruneRequest=null}contains(e){return e.startsWith(this.protocol)?!0:e in this._resources}add({resourceId:e,data:r,forceUpdate:i=!1,persistent:s=!0}){let n=this._resources[e];n?n.setData(r,i):(n=new co(e,r,this._context),this._resources[e]=n),n.persistent=s}remove(e){let r=this._resources[e];r&&(r.delete(),delete this._resources[e])}unsubscribe({consumerId:e}){let r=this._consumers[e];if(r){for(let i in r){let s=r[i],n=this._resources[s.resourceId];n&&n.unsubscribe(s)}delete this._consumers[e],this.prune()}}subscribe({resourceId:e,onChange:r,consumerId:i,requestId:s="default"}){let{_resources:n,protocol:o}=this;e.startsWith(o)&&(e=e.replace(o,""),n[e]||this.add({resourceId:e,data:null,persistent:!1}));let a=n[e];if(this._track(i,s,a,r),a)return a.getData()}prune(){this._pruneRequest||(this._pruneRequest=setTimeout(()=>this._prune(),0))}finalize(){for(let e in this._resources)this._resources[e].delete()}_track(e,r,i,s){let n=this._consumers,o=n[e]=n[e]||{},a=o[r],c=a&&a.resourceId&&this._resources[a.resourceId];c&&(c.unsubscribe(a),this.prune()),i&&(a?(a.onChange=s,a.resourceId=i.id):a={onChange:s,resourceId:i.id},o[r]=a,i.subscribe(a))}_prune(){this._pruneRequest=null;for(let e of Object.keys(this._resources)){let r=this._resources[e];!r.persistent&&!r.inUse()&&(r.delete(),delete this._resources[e])}}};var YP="layerManager.setLayers",KP="layerManager.activateViewport",uo=class{constructor(e,r){this._lastRenderedLayers=[],this._needsRedraw=!1,this._needsUpdate=!1,this._nextLayers=null,this._debug=!1,this._defaultShaderModulesChanged=!1,this.activateViewport=a=>{xe(KP,this,a),a&&(this.context.viewport=a)};let{deck:i,stats:s,viewport:n,timeline:o}=r||{};this.layers=[],this.resourceManager=new lo({device:e,protocol:"deck://"}),this.context={mousePosition:null,userData:{},layerManager:this,device:e,gl:e?.gl,deck:i,shaderAssembler:ro(),defaultShaderModules:[],renderPass:void 0,stats:s||new dt({id:"deck.gl"}),viewport:n||new Oi({id:"DEFAULT-INITIAL-VIEWPORT"}),timeline:o||new Ni,resourceManager:this.resourceManager,onError:void 0},Object.seal(this)}finalize(){this.resourceManager.finalize();for(let e of this.layers)this._finalizeLayer(e)}needsRedraw(e={clearRedrawFlags:!1}){let r=this._needsRedraw;e.clearRedrawFlags&&(this._needsRedraw=!1);for(let i of this.layers){let s=i.getNeedsRedraw(e);r=r||s}return r}needsUpdate(){return this._nextLayers&&this._nextLayers!==this._lastRenderedLayers?"layers changed":this._defaultShaderModulesChanged?"shader modules changed":this._needsUpdate}setNeedsRedraw(e){this._needsRedraw=this._needsRedraw||e}setNeedsUpdate(e){this._needsUpdate=this._needsUpdate||e}getLayers({layerIds:e}={}){return e?this.layers.filter(r=>e.find(i=>r.id.indexOf(i)===0)):this.layers}setProps(e){"debug"in e&&(this._debug=e.debug),"userData"in e&&(this.context.userData=e.userData),"layers"in e&&(this._nextLayers=e.layers),"onError"in e&&(this.context.onError=e.onError)}setLayers(e,r){xe(YP,this,r,e),this._lastRenderedLayers=e;let i=bt(e,Boolean);for(let s of i)s.context=this.context;this._updateLayers(this.layers,i)}updateLayers(){let e=this.needsUpdate();e&&(this.setNeedsRedraw(`updating layers: ${e}`),this.setLayers(this._nextLayers||this._lastRenderedLayers,e)),this._nextLayers=null}addDefaultShaderModule(e){let{defaultShaderModules:r}=this.context;r.find(i=>i.name===e.name)||(r.push(e),this._defaultShaderModulesChanged=!0)}removeDefaultShaderModule(e){let{defaultShaderModules:r}=this.context,i=r.findIndex(s=>s.name===e.name);i>=0&&(r.splice(i,1),this._defaultShaderModulesChanged=!0)}_handleError(e,r,i){i.raiseError(r,`${e} of ${i}`)}_updateLayers(e,r){let i={};for(let o of e)i[o.id]?U.warn(`Multiple old layers with same id ${o.id}`)():i[o.id]=o;if(this._defaultShaderModulesChanged){for(let o of e)o.setNeedsUpdate(),o.setChangeFlags({extensionsChanged:!0});this._defaultShaderModulesChanged=!1}let s=[];this._updateSublayersRecursively(r,i,s),this._finalizeOldLayers(i);let n=!1;for(let o of s)if(o.hasUniformTransition()){n=`Uniform transition in ${o}`;break}this._needsUpdate=n,this.layers=s}_updateSublayersRecursively(e,r,i){for(let s of e){s.context=this.context;let n=r[s.id];n===null&&U.warn(`Multiple new layers with same id ${s.id}`)(),r[s.id]=null;let o=null;try{this._debug&&n!==s&&s.validateProps(),n?(this._transferLayerState(n,s),this._updateLayer(s)):this._initializeLayer(s),i.push(s),o=s.isComposite?s.getSubLayers():null}catch(a){this._handleError("matching",a,s)}o&&this._updateSublayersRecursively(o,r,i)}}_finalizeOldLayers(e){for(let r in e){let i=e[r];i&&this._finalizeLayer(i)}}_initializeLayer(e){try{e._initialize(),e.lifecycle=Yr.INITIALIZED}catch(r){this._handleError("initialization",r,e)}}_transferLayerState(e,r){r._transferState(e),r.lifecycle=Yr.MATCHED,r!==e&&(e.lifecycle=Yr.AWAITING_GC)}_updateLayer(e){try{e._update()}catch(r){this._handleError("update",r,e)}}_finalizeLayer(e){this._needsRedraw=this._needsRedraw||`finalized ${e}`,e.lifecycle=Yr.AWAITING_FINALIZATION;try{e._finalize(),e.lifecycle=Yr.FINALIZED}catch(r){this._handleError("finalization",r,e)}}};function Le(t,e,r){if(t===e)return!0;if(!r||!t||!e)return!1;if(Array.isArray(t)){if(!Array.isArray(e)||t.length!==e.length)return!1;for(let i=0;ir.containsPixel(e)):this._viewports}getViews(){let e={};return this.views.forEach(r=>{e[r.id]=r}),e}getView(e){return this.views.find(r=>r.id===e)}getViewState(e){let r=typeof e=="string"?this.getView(e):e,i=r&&this.viewState[r.getViewStateId()]||this.viewState;return r?r.filterViewState(i):i}getViewport(e){return this._viewportMap[e]}unproject(e,r){let i=this.getViewports(),s={x:e[0],y:e[1]};for(let n=i.length-1;n>=0;--n){let o=i[n];if(o.containsPixel(s)){let a=e.slice();return a[0]-=o.x,a[1]-=o.y,o.unproject(a,r)}}return null}setProps(e){e.views&&this._setViews(e.views),e.viewState&&this._setViewState(e.viewState),("width"in e||"height"in e)&&this._setSize(e.width,e.height),this._isUpdating||this._update()}_update(){this._isUpdating=!0,this._needsUpdate&&(this._needsUpdate=!1,this._rebuildViewports()),this._needsUpdate&&(this._needsUpdate=!1,this._rebuildViewports()),this._isUpdating=!1}_setSize(e,r){(e!==this.width||r!==this.height)&&(this.width=e,this.height=r,this.setNeedsUpdate("Size changed"))}_setViews(e){e=bt(e,Boolean),this._diffViews(e,this.views)&&this.setNeedsUpdate("views changed"),this.views=e}_setViewState(e){e?(!Le(e,this.viewState,3)&&this.setNeedsUpdate("viewState changed"),this.viewState=e):U.warn("missing `viewState` or `initialViewState`")()}_createController(e,r){let i=r.type;return new i({timeline:this.timeline,eventManager:this._eventManager,onViewStateChange:this._eventCallbacks.onViewStateChange,onStateChange:this._eventCallbacks.onInteractionStateChange,makeViewport:n=>this.getView(e.id)?.makeViewport({viewState:n,width:this.width,height:this.height})})}_updateController(e,r,i,s){let n=e.controller;if(n&&i){let o={...r,...n,id:e.id,x:i.x,y:i.y,width:i.width,height:i.height};return(!s||s.constructor!==n.type)&&(s=this._createController(e,o)),s&&s.setProps(o),s}return null}_rebuildViewports(){let{views:e}=this,r=this.controllers;this._viewports=[],this.controllers={};let i=!1;for(let s=e.length;s--;){let n=e[s],o=this.getViewState(n),a=n.makeViewport({viewState:o,width:this.width,height:this.height}),c=r[n.id],l=!!n.controller;l&&!c&&(i=!0),(i||!l)&&c&&(c.finalize(),c=null),this.controllers[n.id]=this._updateController(n,o,a,c),a&&this._viewports.unshift(a)}for(let s in r){let n=r[s];n&&!this.controllers[s]&&n.finalize()}this._buildViewportMap()}_buildViewportMap(){this._viewportMap={},this._viewports.forEach(e=>{e.id&&(this._viewportMap[e.id]=this._viewportMap[e.id]||e)})}_diffViews(e,r){return e.length!==r.length?!0:e.some((i,s)=>!e[s].equals(r[s]))}};var qP=/([0-9]+\.?[0-9]*)(%|px)/;function vr(t){switch(typeof t){case"number":return{position:t,relative:!1};case"string":let e=qP.exec(t);if(e&&e.length>=3){let r=e[2]==="%",i=parseFloat(e[1]);return{position:r?i/100:i,relative:r}}default:throw new Error(`Could not parse position string ${t}`)}}function br(t,e){return t.relative?Math.round(t.position*e):t.position}var ho=class{constructor(e){let{id:r,x:i=0,y:s=0,width:n="100%",height:o="100%",padding:a=null}=e;this.id=r||this.constructor.displayName||"view",this.props={...e,id:this.id},this._x=vr(i),this._y=vr(s),this._width=vr(n),this._height=vr(o),this._padding=a&&{left:vr(a.left||0),right:vr(a.right||0),top:vr(a.top||0),bottom:vr(a.bottom||0)},this.equals=this.equals.bind(this),Object.seal(this)}equals(e){return this===e?!0:this.ViewportType===e.ViewportType&&Le(this.props,e.props,2)}makeViewport({width:e,height:r,viewState:i}){i=this.filterViewState(i);let s=this.getDimensions({width:e,height:r});return!s.height||!s.width?null:new this.ViewportType({...i,...this.props,...s})}getViewStateId(){let{viewState:e}=this.props;return typeof e=="string"?e:e?.id||this.id}filterViewState(e){if(this.props.viewState&&typeof this.props.viewState=="object"){if(!this.props.viewState.id)return this.props.viewState;let r={...e};for(let i in this.props.viewState)i!=="id"&&(r[i]=this.props.viewState[i]);return r}return e}getDimensions({width:e,height:r}){let i={x:br(this._x,e),y:br(this._y,r),width:br(this._width,e),height:br(this._height,r)};return this._padding&&(i.padding={left:br(this._padding.left,e),top:br(this._padding.top,r),right:br(this._padding.right,e),bottom:br(this._padding.bottom,r)}),i}get controller(){let e=this.props.controller;return e?e===!0?{type:this.ControllerType}:typeof e=="function"?{type:e}:{type:this.ControllerType,...e}:null}};var Dt=class{constructor(e){this._inProgress=!1,this._handle=null,this.time=0,this.settings={duration:0},this._timeline=e}get inProgress(){return this._inProgress}start(e){this.cancel(),this.settings=e,this._inProgress=!0,this.settings.onStart?.(this)}end(){this._inProgress&&(this._timeline.removeChannel(this._handle),this._handle=null,this._inProgress=!1,this.settings.onEnd?.(this))}cancel(){this._inProgress&&(this.settings.onInterrupt?.(this),this._timeline.removeChannel(this._handle),this._handle=null,this._inProgress=!1)}update(){if(!this._inProgress)return!1;if(this._handle===null){let{_timeline:e,settings:r}=this;this._handle=e.addChannel({delay:e.getTime(),duration:r.duration})}return this.time=this._timeline.getTime(this._handle),this._onUpdate(),this.settings.onUpdate?.(this),this._timeline.isFinished(this._handle)&&this.end(),!0}_onUpdate(){}};var K_=()=>{},sd={BREAK:1,SNAP_TO_END:2,IGNORE:3},GP=t=>t,ZP=sd.BREAK,po=class{constructor(e){this._onTransitionUpdate=r=>{let{time:i,settings:{interpolator:s,startProps:n,endProps:o,duration:a,easing:c}}=r,l=c(i/a),u=s.interpolateProps(n,o,l);this.propsInTransition=this.getControllerState({...this.props,...u}).getViewportProps(),this.onViewStateChange({viewState:this.propsInTransition,oldViewState:this.props})},this.getControllerState=e.getControllerState,this.propsInTransition=null,this.transition=new Dt(e.timeline),this.onViewStateChange=e.onViewStateChange||K_,this.onStateChange=e.onStateChange||K_}finalize(){this.transition.cancel()}getViewportInTransition(){return this.propsInTransition}processViewStateChange(e){let r=!1,i=this.props;if(this.props=e,!i||this._shouldIgnoreViewportChange(i,e))return!1;if(this._isTransitionEnabled(e)){let s=i;if(this.transition.inProgress){let{interruption:n,endProps:o}=this.transition.settings;s={...i,...n===sd.SNAP_TO_END?o:this.propsInTransition||i}}this._triggerTransition(s,e),r=!0}else this.transition.cancel();return r}updateTransition(){this.transition.update()}_isTransitionEnabled(e){let{transitionDuration:r,transitionInterpolator:i}=e;return(r>0||r==="auto")&&!!i}_isUpdateDueToCurrentTransition(e){return this.transition.inProgress&&this.propsInTransition?this.transition.settings.interpolator.arePropsEqual(e,this.propsInTransition):!1}_shouldIgnoreViewportChange(e,r){return this.transition.inProgress?this.transition.settings.interruption===sd.IGNORE||this._isUpdateDueToCurrentTransition(r):this._isTransitionEnabled(r)?r.transitionInterpolator.arePropsEqual(e,r):!0}_triggerTransition(e,r){let i=this.getControllerState(e),s=this.getControllerState(r).shortestPathFrom(i),n=r.transitionInterpolator,o=n.getDuration?n.getDuration(e,r):r.transitionDuration;if(o===0)return;let a=n.initializeProps(e,s);this.propsInTransition={};let c={duration:o,easing:r.transitionEasing||GP,interpolator:n,interruption:r.transitionInterruption||ZP,startProps:a.start,endProps:a.end,onStart:r.onTransitionStart,onUpdate:this._onTransitionUpdate,onInterrupt:this._onTransitionEnd(r.onTransitionInterrupt),onEnd:this._onTransitionEnd(r.onTransitionEnd)};this.transition.start(c),this.onStateChange({inTransition:!0}),this.updateTransition()}_onTransitionEnd(e){return r=>{this.propsInTransition=null,this.onStateChange({inTransition:!1,isZooming:!1,isPanning:!1,isRotating:!1}),e?.(r)}}};function oe(t,e){if(!t)throw new Error(e||"deck.gl: assertion failed.")}var go=class{constructor(e){let{compare:r,extract:i,required:s}=e;this._propsToCompare=r,this._propsToExtract=i||r,this._requiredProps=s}arePropsEqual(e,r){for(let i of this._propsToCompare)if(!(i in e)||!(i in r)||!yr(e[i],r[i]))return!1;return!0}initializeProps(e,r){let i={},s={};for(let n of this._propsToExtract)(n in e||n in r)&&(i[n]=e[n],s[n]=r[n]);return this._checkRequiredProps(i),this._checkRequiredProps(s),{start:i,end:s}}getDuration(e,r){return r.transitionDuration}_checkRequiredProps(e){this._requiredProps&&this._requiredProps.forEach(r=>{let i=e[r];oe(Number.isFinite(i)||Array.isArray(i),`${r} is required for transition`)})}};var JP=["longitude","latitude","zoom","bearing","pitch"],QP=["longitude","latitude","zoom"],Li=class extends go{constructor(e={}){let r=Array.isArray(e)?e:e.transitionProps,i=Array.isArray(e)?{}:e;i.transitionProps=Array.isArray(r)?{compare:r,required:r}:r||{compare:JP,required:QP},super(i.transitionProps),this.opts=i}initializeProps(e,r){let i=super.initializeProps(e,r),{makeViewport:s,around:n}=this.opts;if(s&&n){let o=s(e),a=s(r),c=o.unproject(n);i.start.around=n,Object.assign(i.end,{around:a.project(c),aroundPosition:c,width:r.width,height:r.height})}return i}interpolateProps(e,r,i){let s={};for(let n of this._propsToExtract)s[n]=Ct(e[n]||0,r[n]||0,i);if(r.aroundPosition&&this.opts.makeViewport){let n=this.opts.makeViewport({...r,...s});Object.assign(s,n.panByPosition(r.aroundPosition,Ct(e.around,r.around,i)))}return s}};var Kr={transitionDuration:0},eR=300,el=t=>1-(1-t)*(1-t),Ps={WHEEL:["wheel"],PAN:["panstart","panmove","panend"],PINCH:["pinchstart","pinchmove","pinchend"],TRIPLE_PAN:["tripanstart","tripanmove","tripanend"],DOUBLE_TAP:["doubletap"],KEYBOARD:["keydown"]},ki={},mo=class{constructor(e){this.state={},this._events={},this._interactionState={isDragging:!1},this._customEvents=[],this._eventStartBlocked=null,this._panMove=!1,this.invertPan=!1,this.dragMode="rotate",this.inertia=0,this.scrollZoom=!0,this.dragPan=!0,this.dragRotate=!0,this.doubleClickZoom=!0,this.touchZoom=!0,this.touchRotate=!1,this.keyboard=!0,this.transitionManager=new po({...e,getControllerState:r=>new this.ControllerState(r),onViewStateChange:this._onTransition.bind(this),onStateChange:this._setInteractionState.bind(this)}),this.handleEvent=this.handleEvent.bind(this),this.eventManager=e.eventManager,this.onViewStateChange=e.onViewStateChange||(()=>{}),this.onStateChange=e.onStateChange||(()=>{}),this.makeViewport=e.makeViewport}set events(e){this.toggleEvents(this._customEvents,!1),this.toggleEvents(e,!0),this._customEvents=e,this.props&&this.setProps(this.props)}finalize(){for(let e in this._events)this._events[e]&&this.eventManager?.off(e,this.handleEvent);this.transitionManager.finalize()}handleEvent(e){this._controllerState=void 0;let r=this._eventStartBlocked;switch(e.type){case"panstart":return r?!1:this._onPanStart(e);case"panmove":return this._onPan(e);case"panend":return this._onPanEnd(e);case"pinchstart":return r?!1:this._onPinchStart(e);case"pinchmove":return this._onPinch(e);case"pinchend":return this._onPinchEnd(e);case"tripanstart":return r?!1:this._onTriplePanStart(e);case"tripanmove":return this._onTriplePan(e);case"tripanend":return this._onTriplePanEnd(e);case"doubletap":return this._onDoubleTap(e);case"wheel":return this._onWheel(e);case"keydown":return this._onKeyDown(e);default:return!1}}get controllerState(){return this._controllerState=this._controllerState||new this.ControllerState({makeViewport:this.makeViewport,...this.props,...this.state}),this._controllerState}getCenter(e){let{x:r,y:i}=this.props,{offsetCenter:s}=e;return[s.x-r,s.y-i]}isPointInBounds(e,r){let{width:i,height:s}=this.props;if(r&&r.handled)return!1;let n=e[0]>=0&&e[0]<=i&&e[1]>=0&&e[1]<=s;return n&&r&&r.stopPropagation(),n}isFunctionKeyPressed(e){let{srcEvent:r}=e;return!!(r.metaKey||r.altKey||r.ctrlKey||r.shiftKey)}isDragging(){return this._interactionState.isDragging||!1}blockEvents(e){let r=setTimeout(()=>{this._eventStartBlocked===r&&(this._eventStartBlocked=null)},e);this._eventStartBlocked=r}setProps(e){e.dragMode&&(this.dragMode=e.dragMode),this.props=e,"transitionInterpolator"in e||(e.transitionInterpolator=this._getTransitionProps().transitionInterpolator),this.transitionManager.processViewStateChange(e);let{inertia:r}=e;this.inertia=Number.isFinite(r)?r:r===!0?eR:0;let{scrollZoom:i=!0,dragPan:s=!0,dragRotate:n=!0,doubleClickZoom:o=!0,touchZoom:a=!0,touchRotate:c=!1,keyboard:l=!0}=e,u=!!this.onViewStateChange;this.toggleEvents(Ps.WHEEL,u&&i),this.toggleEvents(Ps.PAN,u),this.toggleEvents(Ps.PINCH,u&&(a||c)),this.toggleEvents(Ps.TRIPLE_PAN,u&&c),this.toggleEvents(Ps.DOUBLE_TAP,u&&o),this.toggleEvents(Ps.KEYBOARD,u&&l),this.scrollZoom=i,this.dragPan=s,this.dragRotate=n,this.doubleClickZoom=o,this.touchZoom=a,this.touchRotate=c,this.keyboard=l}updateTransition(){this.transitionManager.updateTransition()}toggleEvents(e,r){this.eventManager&&e.forEach(i=>{this._events[i]!==r&&(this._events[i]=r,r?this.eventManager.on(i,this.handleEvent):this.eventManager.off(i,this.handleEvent))})}updateViewport(e,r=null,i={}){let s={...e.getViewportProps(),...r},n=this.controllerState!==e;if(this.state=e.getState(),this._setInteractionState(i),n){let o=this.controllerState&&this.controllerState.getViewportProps();this.onViewStateChange&&this.onViewStateChange({viewState:s,interactionState:this._interactionState,oldViewState:o,viewId:this.props.id})}}_onTransition(e){this.onViewStateChange({...e,interactionState:this._interactionState,viewId:this.props.id})}_setInteractionState(e){Object.assign(this._interactionState,e),this.onStateChange(this._interactionState)}_onPanStart(e){let r=this.getCenter(e);if(!this.isPointInBounds(r,e))return!1;let i=this.isFunctionKeyPressed(e)||e.rightButton||!1;(this.invertPan||this.dragMode==="pan")&&(i=!i);let s=this.controllerState[i?"panStart":"rotateStart"]({pos:r});return this._panMove=i,this.updateViewport(s,Kr,{isDragging:!0}),!0}_onPan(e){return this.isDragging()?this._panMove?this._onPanMove(e):this._onPanRotate(e):!1}_onPanEnd(e){return this.isDragging()?this._panMove?this._onPanMoveEnd(e):this._onPanRotateEnd(e):!1}_onPanMove(e){if(!this.dragPan)return!1;let r=this.getCenter(e),i=this.controllerState.pan({pos:r});return this.updateViewport(i,Kr,{isDragging:!0,isPanning:!0}),!0}_onPanMoveEnd(e){let{inertia:r}=this;if(this.dragPan&&r&&e.velocity){let i=this.getCenter(e),s=[i[0]+e.velocityX*r/2,i[1]+e.velocityY*r/2],n=this.controllerState.pan({pos:s}).panEnd();this.updateViewport(n,{...this._getTransitionProps(),transitionDuration:r,transitionEasing:el},{isDragging:!1,isPanning:!0})}else{let i=this.controllerState.panEnd();this.updateViewport(i,null,{isDragging:!1,isPanning:!1})}return!0}_onPanRotate(e){if(!this.dragRotate)return!1;let r=this.getCenter(e),i=this.controllerState.rotate({pos:r});return this.updateViewport(i,Kr,{isDragging:!0,isRotating:!0}),!0}_onPanRotateEnd(e){let{inertia:r}=this;if(this.dragRotate&&r&&e.velocity){let i=this.getCenter(e),s=[i[0]+e.velocityX*r/2,i[1]+e.velocityY*r/2],n=this.controllerState.rotate({pos:s}).rotateEnd();this.updateViewport(n,{...this._getTransitionProps(),transitionDuration:r,transitionEasing:el},{isDragging:!1,isRotating:!0})}else{let i=this.controllerState.rotateEnd();this.updateViewport(i,null,{isDragging:!1,isRotating:!1})}return!0}_onWheel(e){if(!this.scrollZoom)return!1;let r=this.getCenter(e);if(!this.isPointInBounds(r,e))return!1;e.srcEvent.preventDefault();let{speed:i=.01,smooth:s=!1}=this.scrollZoom===!0?{}:this.scrollZoom,{delta:n}=e,o=2/(1+Math.exp(-Math.abs(n*i)));n<0&&o!==0&&(o=1/o);let a=this.controllerState.zoom({pos:r,scale:o});return this.updateViewport(a,{...this._getTransitionProps({around:r}),transitionDuration:s?250:1},{isZooming:!0,isPanning:!0}),!0}_onTriplePanStart(e){let r=this.getCenter(e);if(!this.isPointInBounds(r,e))return!1;let i=this.controllerState.rotateStart({pos:r});return this.updateViewport(i,Kr,{isDragging:!0}),!0}_onTriplePan(e){if(!this.touchRotate||!this.isDragging())return!1;let r=this.getCenter(e);r[0]-=e.deltaX;let i=this.controllerState.rotate({pos:r});return this.updateViewport(i,Kr,{isDragging:!0,isRotating:!0}),!0}_onTriplePanEnd(e){if(!this.isDragging())return!1;let{inertia:r}=this;if(this.touchRotate&&r&&e.velocityY){let i=this.getCenter(e),s=[i[0],i[1]+=e.velocityY*r/2],n=this.controllerState.rotate({pos:s});this.updateViewport(n,{...this._getTransitionProps(),transitionDuration:r,transitionEasing:el},{isDragging:!1,isRotating:!0}),this.blockEvents(r)}else{let i=this.controllerState.rotateEnd();this.updateViewport(i,null,{isDragging:!1,isRotating:!1})}return!0}_onPinchStart(e){let r=this.getCenter(e);if(!this.isPointInBounds(r,e))return!1;let i=this.controllerState.zoomStart({pos:r}).rotateStart({pos:r});return ki._startPinchRotation=e.rotation,ki._lastPinchEvent=e,this.updateViewport(i,Kr,{isDragging:!0}),!0}_onPinch(e){if(!this.touchZoom&&!this.touchRotate||!this.isDragging())return!1;let r=this.controllerState;if(this.touchZoom){let{scale:i}=e,s=this.getCenter(e);r=r.zoom({pos:s,scale:i})}if(this.touchRotate){let{rotation:i}=e;r=r.rotate({deltaAngleX:ki._startPinchRotation-i})}return this.updateViewport(r,Kr,{isDragging:!0,isPanning:this.touchZoom,isZooming:this.touchZoom,isRotating:this.touchRotate}),ki._lastPinchEvent=e,!0}_onPinchEnd(e){if(!this.isDragging())return!1;let{inertia:r}=this,{_lastPinchEvent:i}=ki;if(this.touchZoom&&r&&i&&e.scale!==i.scale){let s=this.getCenter(e),n=this.controllerState.rotateEnd(),o=Math.log2(e.scale),a=(o-Math.log2(i.scale))/(e.deltaTime-i.deltaTime),c=Math.pow(2,o+a*r/2);n=n.zoom({pos:s,scale:c}).zoomEnd(),this.updateViewport(n,{...this._getTransitionProps({around:s}),transitionDuration:r,transitionEasing:el},{isDragging:!1,isPanning:this.touchZoom,isZooming:this.touchZoom,isRotating:!1}),this.blockEvents(r)}else{let s=this.controllerState.zoomEnd().rotateEnd();this.updateViewport(s,null,{isDragging:!1,isPanning:!1,isZooming:!1,isRotating:!1})}return ki._startPinchRotation=null,ki._lastPinchEvent=null,!0}_onDoubleTap(e){if(!this.doubleClickZoom)return!1;let r=this.getCenter(e);if(!this.isPointInBounds(r,e))return!1;let i=this.isFunctionKeyPressed(e),s=this.controllerState.zoom({pos:r,scale:i?.5:2});return this.updateViewport(s,this._getTransitionProps({around:r}),{isZooming:!0,isPanning:!0}),this.blockEvents(100),!0}_onKeyDown(e){if(!this.keyboard)return!1;let r=this.isFunctionKeyPressed(e),{zoomSpeed:i,moveSpeed:s,rotateSpeedX:n,rotateSpeedY:o}=this.keyboard===!0?{}:this.keyboard,{controllerState:a}=this,c,l={};switch(e.srcEvent.code){case"Minus":c=r?a.zoomOut(i).zoomOut(i):a.zoomOut(i),l.isZooming=!0;break;case"Equal":c=r?a.zoomIn(i).zoomIn(i):a.zoomIn(i),l.isZooming=!0;break;case"ArrowLeft":r?(c=a.rotateLeft(n),l.isRotating=!0):(c=a.moveLeft(s),l.isPanning=!0);break;case"ArrowRight":r?(c=a.rotateRight(n),l.isRotating=!0):(c=a.moveRight(s),l.isPanning=!0);break;case"ArrowUp":r?(c=a.rotateUp(o),l.isRotating=!0):(c=a.moveUp(s),l.isPanning=!0);break;case"ArrowDown":r?(c=a.rotateDown(o),l.isRotating=!0):(c=a.moveDown(s),l.isPanning=!0);break;default:return!1}return this.updateViewport(c,this._getTransitionProps(),l),!0}_getTransitionProps(e){let{transition:r}=this;return!r||!r.transitionInterpolator?Kr:e?{...r,transitionInterpolator:new Li({...e,...r.transitionInterpolator.opts,makeViewport:this.controllerState.makeViewport})}:r}};var _o=class{constructor(e,r){this._viewportProps=this.applyConstraints(e),this._state=r}getViewportProps(){return this._viewportProps}getState(){return this._state}};var q_=5,tR=1.2,nd=class extends _o{constructor(e){let{width:r,height:i,latitude:s,longitude:n,zoom:o,bearing:a=0,pitch:c=0,altitude:l=1.5,position:u=[0,0,0],maxZoom:f=20,minZoom:h=0,maxPitch:d=60,minPitch:p=0,startPanLngLat:g,startZoomLngLat:_,startRotatePos:x,startBearing:v,startPitch:b,startZoom:A,normalize:C=!0}=e;oe(Number.isFinite(n)),oe(Number.isFinite(s)),oe(Number.isFinite(o)),super({width:r,height:i,latitude:s,longitude:n,zoom:o,bearing:a,pitch:c,altitude:l,maxZoom:f,minZoom:h,maxPitch:d,minPitch:p,normalize:C,position:u},{startPanLngLat:g,startZoomLngLat:_,startRotatePos:x,startBearing:v,startPitch:b,startZoom:A}),this.makeViewport=e.makeViewport}panStart({pos:e}){return this._getUpdatedState({startPanLngLat:this._unproject(e)})}pan({pos:e,startPos:r}){let i=this.getState().startPanLngLat||this._unproject(r);if(!i)return this;let n=this.makeViewport(this.getViewportProps()).panByPosition(i,e);return this._getUpdatedState(n)}panEnd(){return this._getUpdatedState({startPanLngLat:null})}rotateStart({pos:e}){return this._getUpdatedState({startRotatePos:e,startBearing:this.getViewportProps().bearing,startPitch:this.getViewportProps().pitch})}rotate({pos:e,deltaAngleX:r=0,deltaAngleY:i=0}){let{startRotatePos:s,startBearing:n,startPitch:o}=this.getState();if(!s||n===void 0||o===void 0)return this;let a;return e?a=this._getNewRotation(e,s,o,n):a={bearing:n+r,pitch:o+i},this._getUpdatedState(a)}rotateEnd(){return this._getUpdatedState({startBearing:null,startPitch:null})}zoomStart({pos:e}){return this._getUpdatedState({startZoomLngLat:this._unproject(e),startZoom:this.getViewportProps().zoom})}zoom({pos:e,startPos:r,scale:i}){let{startZoom:s,startZoomLngLat:n}=this.getState();if(n||(s=this.getViewportProps().zoom,n=this._unproject(r)||this._unproject(e)),!n)return this;let{maxZoom:o,minZoom:a}=this.getViewportProps(),c=s+Math.log2(i);c=yt(c,a,o);let l=this.makeViewport({...this.getViewportProps(),zoom:c});return this._getUpdatedState({zoom:c,...l.panByPosition(n,e)})}zoomEnd(){return this._getUpdatedState({startZoomLngLat:null,startZoom:null})}zoomIn(e=2){return this._zoomFromCenter(e)}zoomOut(e=2){return this._zoomFromCenter(1/e)}moveLeft(e=100){return this._panFromCenter([e,0])}moveRight(e=100){return this._panFromCenter([-e,0])}moveUp(e=100){return this._panFromCenter([0,e])}moveDown(e=100){return this._panFromCenter([0,-e])}rotateLeft(e=15){return this._getUpdatedState({bearing:this.getViewportProps().bearing-e})}rotateRight(e=15){return this._getUpdatedState({bearing:this.getViewportProps().bearing+e})}rotateUp(e=10){return this._getUpdatedState({pitch:this.getViewportProps().pitch+e})}rotateDown(e=10){return this._getUpdatedState({pitch:this.getViewportProps().pitch-e})}shortestPathFrom(e){let r=e.getViewportProps(),i={...this.getViewportProps()},{bearing:s,longitude:n}=i;return Math.abs(s-r.bearing)>180&&(i.bearing=s<0?s+360:s-360),Math.abs(n-r.longitude)>180&&(i.longitude=n<0?n+360:n-360),i}applyConstraints(e){let{maxZoom:r,minZoom:i,zoom:s}=e;e.zoom=yt(s,i,r);let{maxPitch:n,minPitch:o,pitch:a}=e;e.pitch=yt(a,o,n);let{normalize:c=!0}=e;return c&&Object.assign(e,Jh(e)),e}_zoomFromCenter(e){let{width:r,height:i}=this.getViewportProps();return this.zoom({pos:[r/2,i/2],scale:e})}_panFromCenter(e){let{width:r,height:i}=this.getViewportProps();return this.pan({startPos:[r/2,i/2],pos:[r/2+e[0],i/2+e[1]]})}_getUpdatedState(e){return new this.constructor({makeViewport:this.makeViewport,...this.getViewportProps(),...this.getState(),...e})}_unproject(e){let r=this.makeViewport(this.getViewportProps());return e&&r.unproject(e)}_getNewRotation(e,r,i,s){let n=e[0]-r[0],o=e[1]-r[1],a=e[1],c=r[1],{width:l,height:u}=this.getViewportProps(),f=n/l,h=0;o>0?Math.abs(u-c)>q_&&(h=o/(c-u)*tR):o<0&&c>q_&&(h=1-a/c),h=yt(h,-1,1);let{minPitch:d,maxPitch:p}=this.getViewportProps(),g=s+180*f,_=i;return h>0?_=i+h*(p-i):h<0&&(_=i-h*(d-i)),{pitch:_,bearing:g}}},yo=class extends mo{constructor(){super(...arguments),this.ControllerState=nd,this.transition={transitionDuration:300,transitionInterpolator:new Li({transitionProps:{compare:["longitude","latitude","zoom","bearing","pitch","position"],required:["longitude","latitude","zoom"]}})},this.dragMode="pan"}setProps(e){e.position=e.position||[0,0,0];let r=this.props;super.setProps(e),(!r||r.height!==e.height)&&this.updateViewport(new this.ControllerState({makeViewport:this.makeViewport,...e,...this.state}))}};var qr=class extends ho{static{this.displayName="MapView"}constructor(e={}){super(e)}get ViewportType(){return er}get ControllerType(){return yo}};var rR=new bs;function iR(t,e){let r=t.order??1/0,i=e.order??1/0;return r-i}var xo=class{constructor(e){this._resolvedEffects=[],this._defaultEffects=[],this.effects=[],this._context=e,this._needsRedraw="Initial render",this._setEffects([])}addDefaultEffect(e){let r=this._defaultEffects;if(!r.find(i=>i.id===e.id)){let i=r.findIndex(s=>iR(s,e)>0);i<0?r.push(e):r.splice(i,0,e),e.setup(this._context),this._setEffects(this.effects)}}setProps(e){"effects"in e&&(Le(e.effects,this.effects,1)||this._setEffects(e.effects))}needsRedraw(e={clearRedrawFlags:!1}){let r=this._needsRedraw;return e.clearRedrawFlags&&(this._needsRedraw=!1),r}getEffects(){return this._resolvedEffects}_setEffects(e){let r={};for(let s of this.effects)r[s.id]=s;let i=[];for(let s of e){let n=r[s.id],o=s;n&&n!==s?n.setProps?(n.setProps(s.props),o=n):n.cleanup(this._context):n||s.setup(this._context),i.push(o),delete r[s.id]}for(let s in r)r[s].cleanup(this._context);this.effects=i,this._resolvedEffects=i.concat(this._defaultEffects),e.some(s=>s instanceof bs)||this._resolvedEffects.push(rR),this._needsRedraw="effects changed"}finalize(){for(let e of this._resolvedEffects)e.cleanup(this._context);this.effects.length=0,this._resolvedEffects.length=0,this._defaultEffects.length=0}};var To=class extends xr{shouldDrawLayer(e){let{operation:r}=e.props;return r.includes("draw")||r.includes("terrain")}};var sR="deckRenderer.renderLayers",vo=class{constructor(e){this.device=e,this.gl=e.gl,this.layerFilter=null,this.drawPickingColors=!1,this.drawLayersPass=new To(e),this.pickLayersPass=new Di(e),this.renderCount=0,this._needsRedraw="Initial render",this.renderBuffers=[],this.lastPostProcessEffect=null}setProps(e){this.layerFilter!==e.layerFilter&&(this.layerFilter=e.layerFilter,this._needsRedraw="layerFilter changed"),this.drawPickingColors!==e.drawPickingColors&&(this.drawPickingColors=e.drawPickingColors,this._needsRedraw="drawPickingColors changed")}renderLayers(e){if(!e.viewports.length)return;let r=this.drawPickingColors?this.pickLayersPass:this.drawLayersPass,i={layerFilter:this.layerFilter,isPicking:this.drawPickingColors,...e};i.effects&&this._preRender(i.effects,i);let s=this.lastPostProcessEffect?this.renderBuffers[0]:i.target;this.lastPostProcessEffect&&(i.clearColor=[0,0,0,0],i.clearCanvas=!0);let n=r.render({...i,target:s});i.effects&&this._postRender(i.effects,i),this.renderCount++,xe(sR,this,n,e)}needsRedraw(e={clearRedrawFlags:!1}){let r=this._needsRedraw;return e.clearRedrawFlags&&(this._needsRedraw=!1),r}finalize(){let{renderBuffers:e}=this;for(let r of e)r.delete();e.length=0}_preRender(e,r){this.lastPostProcessEffect=null,r.preRenderStats=r.preRenderStats||{};for(let i of e)r.preRenderStats[i.id]=i.preRender(r),i.postRender&&(this.lastPostProcessEffect=i.id);this.lastPostProcessEffect&&this._resizeRenderBuffers()}_resizeRenderBuffers(){let{renderBuffers:e}=this,r=this.device.canvasContext.getDrawingBufferSize();e.length===0&&[0,1].map(i=>{let s=this.device.createTexture({sampler:{minFilter:"linear",magFilter:"linear"}});e.push(this.device.createFramebuffer({id:`deck-renderbuffer-${i}`,colorAttachments:[s]}))});for(let i of e)i.resize(r)}_postRender(e,r){let{renderBuffers:i}=this,s={...r,inputBuffer:i[0],swapBuffer:i[1]};for(let n of e)if(n.postRender){s.target=n.id===this.lastPostProcessEffect?r.target:void 0;let o=n.postRender(s);s.inputBuffer=o,s.swapBuffer=o===i[0]?i[1]:i[0]}}};var nR={pickedColor:null,pickedObjectIndex:-1};function G_({pickedColors:t,decodePickingColor:e,deviceX:r,deviceY:i,deviceRadius:s,deviceRect:n}){let{x:o,y:a,width:c,height:l}=n,u=s*s,f=-1,h=0;for(let d=0;du)h+=4*c;else for(let _=0;_=0){let v=_+o-r,b=v*v+g;b<=u&&(u=b,f=h)}h+=4}}if(f>=0){let d=t.slice(f,f+4),p=e(d);if(p){let g=Math.floor(f/4/c),_=f/4-g*c;return{...p,pickedColor:d,pickedX:o+_,pickedY:a+g}}U.error("Picked non-existent layer. Is picking buffer corrupt?")()}return nR}function Z_({pickedColors:t,decodePickingColor:e}){let r=new Map;if(t){for(let i=0;i=0){let n=t.slice(i,i+4),o=n.join(",");if(!r.has(o)){let a=e(n);a?r.set(o,{...a,color:n}):U.error("Picked non-existent layer. Is picking buffer corrupt?")()}}}return Array.from(r.values())}function od({pickInfo:t,viewports:e,pixelRatio:r,x:i,y:s,z:n}){let o=e[0];e.length>1&&(o=oR(t?.pickedViewports||e,{x:i,y:s}));let a;if(o){let c=[i-o.x,s-o.y];n!==void 0&&(c[2]=n),a=o.unproject(c)}return{color:null,layer:null,viewport:o,index:-1,picked:!1,x:i,y:s,pixel:[i,s],coordinate:a,devicePixel:t&&"pickedX"in t?[t.pickedX,t.pickedY]:void 0,pixelRatio:r}}function J_(t){let{pickInfo:e,lastPickedInfo:r,mode:i,layers:s}=t,{pickedColor:n,pickedLayer:o,pickedObjectIndex:a}=e,c=o?[o]:[];if(i==="hover"){let f=r.index,h=r.layerId,d=o?o.props.id:null;if(d!==h||a!==f){if(d!==h){let p=s.find(g=>g.props.id===h);p&&c.unshift(p)}r.layerId=d,r.index=a,r.info=null}}let l=od(t),u=new Map;return u.set(null,l),c.forEach(f=>{let h={...l};f===o&&(h.color=n,h.index=a,h.picked=!0),h=ad({layer:f,info:h,mode:i});let d=h.layer;f===o&&i==="hover"&&(r.info=h),u.set(d.id,h),i==="hover"&&d.updateAutoHighlight(h)}),u}function ad({layer:t,info:e,mode:r}){for(;t&&e;){let i=e.layer||null;e.sourceLayer=i,e.layer=t,e=t.getPickingInfo({info:e,mode:r,sourceLayer:i}),t=t.parent}return e}function oR(t,e){for(let r=t.length-1;r>=0;r--){let i=t[r];if(i.containsPixel(e))return i}return t[0]}var bo=class{constructor(e){this._pickable=!0,this.device=e,this.pickLayersPass=new Di(e),this.lastPickedInfo={index:-1,layerId:null,info:null}}setProps(e){"layerFilter"in e&&(this.layerFilter=e.layerFilter),"_pickable"in e&&(this._pickable=e._pickable)}finalize(){this.pickingFBO&&this.pickingFBO.destroy(),this.depthFBO&&this.depthFBO.destroy()}pickObject(e){return this._pickClosestObject(e)}pickObjects(e){return this._pickVisibleObjects(e)}getLastPickedObject({x:e,y:r,layers:i,viewports:s},n=this.lastPickedInfo.info){let o=n&&n.layer&&n.layer.id,a=n&&n.viewport&&n.viewport.id,c=o?i.find(h=>h.id===o):null,l=a&&s.find(h=>h.id===a)||s[0],u=l&&l.unproject([e-l.x,r-l.y]);return{...n,...{x:e,y:r,viewport:l,coordinate:u,layer:c}}}_resizeBuffer(){if(!this.pickingFBO&&(this.pickingFBO=this.device.createFramebuffer({colorAttachments:["rgba8unorm"],depthStencilAttachment:"depth16unorm"}),this.device.isTextureFormatRenderable("rgba32float"))){let r=this.device.createFramebuffer({colorAttachments:["rgba32float"],depthStencilAttachment:"depth16unorm"});this.depthFBO=r}let e=this.device.gl;this.pickingFBO?.resize({width:e.canvas.width,height:e.canvas.height}),this.depthFBO?.resize({width:e.canvas.width,height:e.canvas.height})}_getPickable(e){if(this._pickable===!1)return null;let r=e.filter(i=>this.pickLayersPass.shouldDrawLayer(i)&&!i.isComposite);return r.length?r:null}_pickClosestObject({layers:e,views:r,viewports:i,x:s,y:n,radius:o=0,depth:a=1,mode:c="query",unproject3D:l,onViewportActive:u,effects:f}){let h=this.device.canvasContext.cssToDeviceRatio(),d=this._getPickable(e);if(!d||i.length===0)return{result:[],emptyInfo:od({viewports:i,x:s,y:n,pixelRatio:h})};this._resizeBuffer();let p=this.device.canvasContext.cssToDevicePixels([s,n],!0),g=[p.x+Math.floor(p.width/2),p.y+Math.floor(p.height/2)],_=Math.round(o*h),{width:x,height:v}=this.pickingFBO,b=this._getPickingRect({deviceX:g[0],deviceY:g[1],deviceRadius:_,deviceWidth:x,deviceHeight:v}),A={x:s-o,y:n-o,width:o*2+1,height:o*2+1},C,M=[],F=new Set;for(let N=0;N=l);L++){let Y=M[L],X={color:Y.pickedColor,layer:null,index:Y.pickedObjectIndex,picked:!0,x:s,y:n,pixelRatio:d};X=ad({layer:Y.pickedLayer,info:X,mode:c});let $=X.layer.id;F.has($)||F.set($,new Set);let Z=F.get($),ge=X.object??X.index;Z.has(ge)||(Z.add(ge),N.push(X))}return N}_drawAndSample({layers:e,views:r,viewports:i,onViewportActive:s,deviceRect:n,cullRect:o,effects:a,pass:c},l=!1){let u=l?this.depthFBO:this.pickingFBO,f={layers:e,layerFilter:this.layerFilter,views:r,viewports:i,onViewportActive:s,pickingFBO:u,deviceRect:n,cullRect:o,effects:a,pass:c,pickZ:l,preRenderStats:{}};for(let v of a)v.useInPicking&&(f.preRenderStats[v.id]=v.preRender(f));let{decodePickingColor:h}=this.pickLayersPass.render(f),{x:d,y:p,width:g,height:_}=n,x=new(l?Float32Array:Uint8Array)(g*_*4);return this.device.readPixelsToArrayWebGL(u,{sourceX:d,sourceY:p,sourceWidth:g,sourceHeight:_,target:x}),{pickedColors:x,decodePickingColor:h}}_getPickingRect({deviceX:e,deviceY:r,deviceRadius:i,deviceWidth:s,deviceHeight:n}){let o=Math.max(0,e-i),a=Math.max(0,r-i),c=Math.min(s,e+i+1)-o,l=Math.min(n,r+i+1)-a;return c<=0||l<=0?null:{x:o,y:a,width:c,height:l}}};var aR={"top-left":{top:0,left:0},"top-right":{top:0,right:0},"bottom-left":{bottom:0,left:0},"bottom-right":{bottom:0,right:0},fill:{top:0,left:0,bottom:0,right:0}},cR="top-left",Q_="__root",tl=class{constructor({deck:e,parentElement:r}){this.defaultWidgets=[],this.widgets=[],this.resolvedWidgets=[],this.containers={},this.lastViewports={},this.deck=e,this.parentElement=r}getWidgets(){return this.resolvedWidgets}setProps(e){e.widgets&&!Le(e.widgets,this.widgets,1)&&this._setWidgets(e.widgets)}finalize(){for(let e of this.getWidgets())this._remove(e);this.defaultWidgets.length=0,this.resolvedWidgets.length=0;for(let e in this.containers)this.containers[e].remove()}addDefault(e){this.defaultWidgets.find(r=>r.id===e.id)||(this._add(e),this.defaultWidgets.push(e),this._setWidgets(this.widgets))}_setWidgets(e){let r={};for(let i of this.resolvedWidgets)r[i.id]=i;this.resolvedWidgets.length=0;for(let i of this.defaultWidgets)r[i.id]=null,this.resolvedWidgets.push(i);for(let i of e){let s=r[i.id];s?s.viewId!==i.viewId||s.placement!==i.placement?(this._remove(s),this._add(i)):i!==s&&(s.setProps(i.props),i=s):this._add(i),r[i.id]=null,this.resolvedWidgets.push(i)}for(let i in r){let s=r[i];s&&this._remove(s)}this.widgets=e}_add(e){let{viewId:r=null,placement:i=cR}=e,s=e.onAdd({deck:this.deck,viewId:r});s&&this._getContainer(r,i).append(s),e._element=s}_remove(e){e.onRemove(),e._element&&e._element.remove(),e._element=void 0}_getContainer(e,r){let i=e||Q_,s=this.containers[i];s||(s=document.createElement("div"),s.style.pointerEvents="none",s.style.position="absolute",s.style.overflow="hidden",this.parentElement?.append(s),this.containers[i]=s);let n=s.querySelector(`.${r}`);return n||(n=document.createElement("div"),n.className=r,n.style.position="absolute",n.style.zIndex="2",Object.assign(n.style,aR[r]),s.append(n)),n}_updateContainers(){let e=this.deck.width,r=this.deck.height;for(let i in this.containers){let s=this.lastViewports[i]||null,n=i===Q_||s,o=this.containers[i];n?(o.style.display="block",o.style.left=`${s?s.x:0}px`,o.style.top=`${s?s.y:0}px`,o.style.width=`${s?s.width:e}px`,o.style.height=`${s?s.height:r}px`):o.style.display="none"}}onRedraw({viewports:e,layers:r}){let i=e.reduce((n,o)=>(n[o.id]=o,n),{}),{lastViewports:s}=this;for(let n of this.getWidgets()){let{viewId:o}=n;if(o){let a=i[o];a&&(n.onViewportChange&&!a.equals(s[o])&&n.onViewportChange(a),n.onRedraw?.({viewports:[a],layers:r}))}else{if(n.onViewportChange)for(let a of e)a.equals(s[a.id])||n.onViewportChange(a);n.onRedraw?.({viewports:e,layers:r})}}this.lastViewports=i,this._updateContainers()}onHover(e,r){for(let i of this.getWidgets()){let{viewId:s}=i;(!s||s===e.viewport?.id)&&i.onHover?.(e,r)}}onEvent(e,r){let i=Jn[r.type];if(i)for(let s of this.getWidgets()){let{viewId:n}=s;(!n||n===e.viewport?.id)&&s[i.handler]?.(e,r)}}};var lR={zIndex:"1",position:"absolute",pointerEvents:"none",color:"#a0a7b4",backgroundColor:"#29323c",padding:"10px",top:"0",left:"0",display:"none"},So=class{constructor(){this.id="default-tooltip",this.placement="fill",this.props={},this.isVisible=!1}onAdd({deck:e}){let r=document.createElement("div");return r.className="deck-tooltip",Object.assign(r.style,lR),this.deck=e,this.element=r,r}onRemove(){this.deck=void 0,this.element=void 0}setProps(){}onViewportChange(e){this.isVisible&&e.id===this.lastViewport?.id&&e!==this.lastViewport&&this.setTooltip(null)}onHover(e){let{deck:r}=this,i=r&&r.props.getTooltip;if(!i)return;let s=i(e);this.lastViewport=e.viewport,this.setTooltip(s,e.x,e.y)}setTooltip(e,r,i){let s=this.element;if(s){if(typeof e=="string")s.innerText=e;else if(e)e.text&&(s.innerText=e.text),e.html&&(s.innerHTML=e.html),e.className&&(s.className=e.className);else{this.isVisible=!1,s.style.display="none";return}this.isVisible=!0,s.style.display="block",s.style.transform=`translate(${r}px, ${i}px)`,e&&typeof e=="object"&&"style"in e&&Object.assign(s.style,e.style)}}};var Gr;(function(t){t[t.DEPTH_BUFFER_BIT=256]="DEPTH_BUFFER_BIT",t[t.STENCIL_BUFFER_BIT=1024]="STENCIL_BUFFER_BIT",t[t.COLOR_BUFFER_BIT=16384]="COLOR_BUFFER_BIT",t[t.POINTS=0]="POINTS",t[t.LINES=1]="LINES",t[t.LINE_LOOP=2]="LINE_LOOP",t[t.LINE_STRIP=3]="LINE_STRIP",t[t.TRIANGLES=4]="TRIANGLES",t[t.TRIANGLE_STRIP=5]="TRIANGLE_STRIP",t[t.TRIANGLE_FAN=6]="TRIANGLE_FAN",t[t.ZERO=0]="ZERO",t[t.ONE=1]="ONE",t[t.SRC_COLOR=768]="SRC_COLOR",t[t.ONE_MINUS_SRC_COLOR=769]="ONE_MINUS_SRC_COLOR",t[t.SRC_ALPHA=770]="SRC_ALPHA",t[t.ONE_MINUS_SRC_ALPHA=771]="ONE_MINUS_SRC_ALPHA",t[t.DST_ALPHA=772]="DST_ALPHA",t[t.ONE_MINUS_DST_ALPHA=773]="ONE_MINUS_DST_ALPHA",t[t.DST_COLOR=774]="DST_COLOR",t[t.ONE_MINUS_DST_COLOR=775]="ONE_MINUS_DST_COLOR",t[t.SRC_ALPHA_SATURATE=776]="SRC_ALPHA_SATURATE",t[t.CONSTANT_COLOR=32769]="CONSTANT_COLOR",t[t.ONE_MINUS_CONSTANT_COLOR=32770]="ONE_MINUS_CONSTANT_COLOR",t[t.CONSTANT_ALPHA=32771]="CONSTANT_ALPHA",t[t.ONE_MINUS_CONSTANT_ALPHA=32772]="ONE_MINUS_CONSTANT_ALPHA",t[t.FUNC_ADD=32774]="FUNC_ADD",t[t.FUNC_SUBTRACT=32778]="FUNC_SUBTRACT",t[t.FUNC_REVERSE_SUBTRACT=32779]="FUNC_REVERSE_SUBTRACT",t[t.BLEND_EQUATION=32777]="BLEND_EQUATION",t[t.BLEND_EQUATION_RGB=32777]="BLEND_EQUATION_RGB",t[t.BLEND_EQUATION_ALPHA=34877]="BLEND_EQUATION_ALPHA",t[t.BLEND_DST_RGB=32968]="BLEND_DST_RGB",t[t.BLEND_SRC_RGB=32969]="BLEND_SRC_RGB",t[t.BLEND_DST_ALPHA=32970]="BLEND_DST_ALPHA",t[t.BLEND_SRC_ALPHA=32971]="BLEND_SRC_ALPHA",t[t.BLEND_COLOR=32773]="BLEND_COLOR",t[t.ARRAY_BUFFER_BINDING=34964]="ARRAY_BUFFER_BINDING",t[t.ELEMENT_ARRAY_BUFFER_BINDING=34965]="ELEMENT_ARRAY_BUFFER_BINDING",t[t.LINE_WIDTH=2849]="LINE_WIDTH",t[t.ALIASED_POINT_SIZE_RANGE=33901]="ALIASED_POINT_SIZE_RANGE",t[t.ALIASED_LINE_WIDTH_RANGE=33902]="ALIASED_LINE_WIDTH_RANGE",t[t.CULL_FACE_MODE=2885]="CULL_FACE_MODE",t[t.FRONT_FACE=2886]="FRONT_FACE",t[t.DEPTH_RANGE=2928]="DEPTH_RANGE",t[t.DEPTH_WRITEMASK=2930]="DEPTH_WRITEMASK",t[t.DEPTH_CLEAR_VALUE=2931]="DEPTH_CLEAR_VALUE",t[t.DEPTH_FUNC=2932]="DEPTH_FUNC",t[t.STENCIL_CLEAR_VALUE=2961]="STENCIL_CLEAR_VALUE",t[t.STENCIL_FUNC=2962]="STENCIL_FUNC",t[t.STENCIL_FAIL=2964]="STENCIL_FAIL",t[t.STENCIL_PASS_DEPTH_FAIL=2965]="STENCIL_PASS_DEPTH_FAIL",t[t.STENCIL_PASS_DEPTH_PASS=2966]="STENCIL_PASS_DEPTH_PASS",t[t.STENCIL_REF=2967]="STENCIL_REF",t[t.STENCIL_VALUE_MASK=2963]="STENCIL_VALUE_MASK",t[t.STENCIL_WRITEMASK=2968]="STENCIL_WRITEMASK",t[t.STENCIL_BACK_FUNC=34816]="STENCIL_BACK_FUNC",t[t.STENCIL_BACK_FAIL=34817]="STENCIL_BACK_FAIL",t[t.STENCIL_BACK_PASS_DEPTH_FAIL=34818]="STENCIL_BACK_PASS_DEPTH_FAIL",t[t.STENCIL_BACK_PASS_DEPTH_PASS=34819]="STENCIL_BACK_PASS_DEPTH_PASS",t[t.STENCIL_BACK_REF=36003]="STENCIL_BACK_REF",t[t.STENCIL_BACK_VALUE_MASK=36004]="STENCIL_BACK_VALUE_MASK",t[t.STENCIL_BACK_WRITEMASK=36005]="STENCIL_BACK_WRITEMASK",t[t.VIEWPORT=2978]="VIEWPORT",t[t.SCISSOR_BOX=3088]="SCISSOR_BOX",t[t.COLOR_CLEAR_VALUE=3106]="COLOR_CLEAR_VALUE",t[t.COLOR_WRITEMASK=3107]="COLOR_WRITEMASK",t[t.UNPACK_ALIGNMENT=3317]="UNPACK_ALIGNMENT",t[t.PACK_ALIGNMENT=3333]="PACK_ALIGNMENT",t[t.MAX_TEXTURE_SIZE=3379]="MAX_TEXTURE_SIZE",t[t.MAX_VIEWPORT_DIMS=3386]="MAX_VIEWPORT_DIMS",t[t.SUBPIXEL_BITS=3408]="SUBPIXEL_BITS",t[t.RED_BITS=3410]="RED_BITS",t[t.GREEN_BITS=3411]="GREEN_BITS",t[t.BLUE_BITS=3412]="BLUE_BITS",t[t.ALPHA_BITS=3413]="ALPHA_BITS",t[t.DEPTH_BITS=3414]="DEPTH_BITS",t[t.STENCIL_BITS=3415]="STENCIL_BITS",t[t.POLYGON_OFFSET_UNITS=10752]="POLYGON_OFFSET_UNITS",t[t.POLYGON_OFFSET_FACTOR=32824]="POLYGON_OFFSET_FACTOR",t[t.TEXTURE_BINDING_2D=32873]="TEXTURE_BINDING_2D",t[t.SAMPLE_BUFFERS=32936]="SAMPLE_BUFFERS",t[t.SAMPLES=32937]="SAMPLES",t[t.SAMPLE_COVERAGE_VALUE=32938]="SAMPLE_COVERAGE_VALUE",t[t.SAMPLE_COVERAGE_INVERT=32939]="SAMPLE_COVERAGE_INVERT",t[t.COMPRESSED_TEXTURE_FORMATS=34467]="COMPRESSED_TEXTURE_FORMATS",t[t.VENDOR=7936]="VENDOR",t[t.RENDERER=7937]="RENDERER",t[t.VERSION=7938]="VERSION",t[t.IMPLEMENTATION_COLOR_READ_TYPE=35738]="IMPLEMENTATION_COLOR_READ_TYPE",t[t.IMPLEMENTATION_COLOR_READ_FORMAT=35739]="IMPLEMENTATION_COLOR_READ_FORMAT",t[t.BROWSER_DEFAULT_WEBGL=37444]="BROWSER_DEFAULT_WEBGL",t[t.STATIC_DRAW=35044]="STATIC_DRAW",t[t.STREAM_DRAW=35040]="STREAM_DRAW",t[t.DYNAMIC_DRAW=35048]="DYNAMIC_DRAW",t[t.ARRAY_BUFFER=34962]="ARRAY_BUFFER",t[t.ELEMENT_ARRAY_BUFFER=34963]="ELEMENT_ARRAY_BUFFER",t[t.BUFFER_SIZE=34660]="BUFFER_SIZE",t[t.BUFFER_USAGE=34661]="BUFFER_USAGE",t[t.CURRENT_VERTEX_ATTRIB=34342]="CURRENT_VERTEX_ATTRIB",t[t.VERTEX_ATTRIB_ARRAY_ENABLED=34338]="VERTEX_ATTRIB_ARRAY_ENABLED",t[t.VERTEX_ATTRIB_ARRAY_SIZE=34339]="VERTEX_ATTRIB_ARRAY_SIZE",t[t.VERTEX_ATTRIB_ARRAY_STRIDE=34340]="VERTEX_ATTRIB_ARRAY_STRIDE",t[t.VERTEX_ATTRIB_ARRAY_TYPE=34341]="VERTEX_ATTRIB_ARRAY_TYPE",t[t.VERTEX_ATTRIB_ARRAY_NORMALIZED=34922]="VERTEX_ATTRIB_ARRAY_NORMALIZED",t[t.VERTEX_ATTRIB_ARRAY_POINTER=34373]="VERTEX_ATTRIB_ARRAY_POINTER",t[t.VERTEX_ATTRIB_ARRAY_BUFFER_BINDING=34975]="VERTEX_ATTRIB_ARRAY_BUFFER_BINDING",t[t.CULL_FACE=2884]="CULL_FACE",t[t.FRONT=1028]="FRONT",t[t.BACK=1029]="BACK",t[t.FRONT_AND_BACK=1032]="FRONT_AND_BACK",t[t.BLEND=3042]="BLEND",t[t.DEPTH_TEST=2929]="DEPTH_TEST",t[t.DITHER=3024]="DITHER",t[t.POLYGON_OFFSET_FILL=32823]="POLYGON_OFFSET_FILL",t[t.SAMPLE_ALPHA_TO_COVERAGE=32926]="SAMPLE_ALPHA_TO_COVERAGE",t[t.SAMPLE_COVERAGE=32928]="SAMPLE_COVERAGE",t[t.SCISSOR_TEST=3089]="SCISSOR_TEST",t[t.STENCIL_TEST=2960]="STENCIL_TEST",t[t.NO_ERROR=0]="NO_ERROR",t[t.INVALID_ENUM=1280]="INVALID_ENUM",t[t.INVALID_VALUE=1281]="INVALID_VALUE",t[t.INVALID_OPERATION=1282]="INVALID_OPERATION",t[t.OUT_OF_MEMORY=1285]="OUT_OF_MEMORY",t[t.CONTEXT_LOST_WEBGL=37442]="CONTEXT_LOST_WEBGL",t[t.CW=2304]="CW",t[t.CCW=2305]="CCW",t[t.DONT_CARE=4352]="DONT_CARE",t[t.FASTEST=4353]="FASTEST",t[t.NICEST=4354]="NICEST",t[t.GENERATE_MIPMAP_HINT=33170]="GENERATE_MIPMAP_HINT",t[t.BYTE=5120]="BYTE",t[t.UNSIGNED_BYTE=5121]="UNSIGNED_BYTE",t[t.SHORT=5122]="SHORT",t[t.UNSIGNED_SHORT=5123]="UNSIGNED_SHORT",t[t.INT=5124]="INT",t[t.UNSIGNED_INT=5125]="UNSIGNED_INT",t[t.FLOAT=5126]="FLOAT",t[t.DOUBLE=5130]="DOUBLE",t[t.DEPTH_COMPONENT=6402]="DEPTH_COMPONENT",t[t.ALPHA=6406]="ALPHA",t[t.RGB=6407]="RGB",t[t.RGBA=6408]="RGBA",t[t.LUMINANCE=6409]="LUMINANCE",t[t.LUMINANCE_ALPHA=6410]="LUMINANCE_ALPHA",t[t.UNSIGNED_SHORT_4_4_4_4=32819]="UNSIGNED_SHORT_4_4_4_4",t[t.UNSIGNED_SHORT_5_5_5_1=32820]="UNSIGNED_SHORT_5_5_5_1",t[t.UNSIGNED_SHORT_5_6_5=33635]="UNSIGNED_SHORT_5_6_5",t[t.FRAGMENT_SHADER=35632]="FRAGMENT_SHADER",t[t.VERTEX_SHADER=35633]="VERTEX_SHADER",t[t.COMPILE_STATUS=35713]="COMPILE_STATUS",t[t.DELETE_STATUS=35712]="DELETE_STATUS",t[t.LINK_STATUS=35714]="LINK_STATUS",t[t.VALIDATE_STATUS=35715]="VALIDATE_STATUS",t[t.ATTACHED_SHADERS=35717]="ATTACHED_SHADERS",t[t.ACTIVE_ATTRIBUTES=35721]="ACTIVE_ATTRIBUTES",t[t.ACTIVE_UNIFORMS=35718]="ACTIVE_UNIFORMS",t[t.MAX_VERTEX_ATTRIBS=34921]="MAX_VERTEX_ATTRIBS",t[t.MAX_VERTEX_UNIFORM_VECTORS=36347]="MAX_VERTEX_UNIFORM_VECTORS",t[t.MAX_VARYING_VECTORS=36348]="MAX_VARYING_VECTORS",t[t.MAX_COMBINED_TEXTURE_IMAGE_UNITS=35661]="MAX_COMBINED_TEXTURE_IMAGE_UNITS",t[t.MAX_VERTEX_TEXTURE_IMAGE_UNITS=35660]="MAX_VERTEX_TEXTURE_IMAGE_UNITS",t[t.MAX_TEXTURE_IMAGE_UNITS=34930]="MAX_TEXTURE_IMAGE_UNITS",t[t.MAX_FRAGMENT_UNIFORM_VECTORS=36349]="MAX_FRAGMENT_UNIFORM_VECTORS",t[t.SHADER_TYPE=35663]="SHADER_TYPE",t[t.SHADING_LANGUAGE_VERSION=35724]="SHADING_LANGUAGE_VERSION",t[t.CURRENT_PROGRAM=35725]="CURRENT_PROGRAM",t[t.NEVER=512]="NEVER",t[t.LESS=513]="LESS",t[t.EQUAL=514]="EQUAL",t[t.LEQUAL=515]="LEQUAL",t[t.GREATER=516]="GREATER",t[t.NOTEQUAL=517]="NOTEQUAL",t[t.GEQUAL=518]="GEQUAL",t[t.ALWAYS=519]="ALWAYS",t[t.KEEP=7680]="KEEP",t[t.REPLACE=7681]="REPLACE",t[t.INCR=7682]="INCR",t[t.DECR=7683]="DECR",t[t.INVERT=5386]="INVERT",t[t.INCR_WRAP=34055]="INCR_WRAP",t[t.DECR_WRAP=34056]="DECR_WRAP",t[t.NEAREST=9728]="NEAREST",t[t.LINEAR=9729]="LINEAR",t[t.NEAREST_MIPMAP_NEAREST=9984]="NEAREST_MIPMAP_NEAREST",t[t.LINEAR_MIPMAP_NEAREST=9985]="LINEAR_MIPMAP_NEAREST",t[t.NEAREST_MIPMAP_LINEAR=9986]="NEAREST_MIPMAP_LINEAR",t[t.LINEAR_MIPMAP_LINEAR=9987]="LINEAR_MIPMAP_LINEAR",t[t.TEXTURE_MAG_FILTER=10240]="TEXTURE_MAG_FILTER",t[t.TEXTURE_MIN_FILTER=10241]="TEXTURE_MIN_FILTER",t[t.TEXTURE_WRAP_S=10242]="TEXTURE_WRAP_S",t[t.TEXTURE_WRAP_T=10243]="TEXTURE_WRAP_T",t[t.TEXTURE_2D=3553]="TEXTURE_2D",t[t.TEXTURE=5890]="TEXTURE",t[t.TEXTURE_CUBE_MAP=34067]="TEXTURE_CUBE_MAP",t[t.TEXTURE_BINDING_CUBE_MAP=34068]="TEXTURE_BINDING_CUBE_MAP",t[t.TEXTURE_CUBE_MAP_POSITIVE_X=34069]="TEXTURE_CUBE_MAP_POSITIVE_X",t[t.TEXTURE_CUBE_MAP_NEGATIVE_X=34070]="TEXTURE_CUBE_MAP_NEGATIVE_X",t[t.TEXTURE_CUBE_MAP_POSITIVE_Y=34071]="TEXTURE_CUBE_MAP_POSITIVE_Y",t[t.TEXTURE_CUBE_MAP_NEGATIVE_Y=34072]="TEXTURE_CUBE_MAP_NEGATIVE_Y",t[t.TEXTURE_CUBE_MAP_POSITIVE_Z=34073]="TEXTURE_CUBE_MAP_POSITIVE_Z",t[t.TEXTURE_CUBE_MAP_NEGATIVE_Z=34074]="TEXTURE_CUBE_MAP_NEGATIVE_Z",t[t.MAX_CUBE_MAP_TEXTURE_SIZE=34076]="MAX_CUBE_MAP_TEXTURE_SIZE",t[t.TEXTURE0=33984]="TEXTURE0",t[t.ACTIVE_TEXTURE=34016]="ACTIVE_TEXTURE",t[t.REPEAT=10497]="REPEAT",t[t.CLAMP_TO_EDGE=33071]="CLAMP_TO_EDGE",t[t.MIRRORED_REPEAT=33648]="MIRRORED_REPEAT",t[t.TEXTURE_WIDTH=4096]="TEXTURE_WIDTH",t[t.TEXTURE_HEIGHT=4097]="TEXTURE_HEIGHT",t[t.FLOAT_VEC2=35664]="FLOAT_VEC2",t[t.FLOAT_VEC3=35665]="FLOAT_VEC3",t[t.FLOAT_VEC4=35666]="FLOAT_VEC4",t[t.INT_VEC2=35667]="INT_VEC2",t[t.INT_VEC3=35668]="INT_VEC3",t[t.INT_VEC4=35669]="INT_VEC4",t[t.BOOL=35670]="BOOL",t[t.BOOL_VEC2=35671]="BOOL_VEC2",t[t.BOOL_VEC3=35672]="BOOL_VEC3",t[t.BOOL_VEC4=35673]="BOOL_VEC4",t[t.FLOAT_MAT2=35674]="FLOAT_MAT2",t[t.FLOAT_MAT3=35675]="FLOAT_MAT3",t[t.FLOAT_MAT4=35676]="FLOAT_MAT4",t[t.SAMPLER_2D=35678]="SAMPLER_2D",t[t.SAMPLER_CUBE=35680]="SAMPLER_CUBE",t[t.LOW_FLOAT=36336]="LOW_FLOAT",t[t.MEDIUM_FLOAT=36337]="MEDIUM_FLOAT",t[t.HIGH_FLOAT=36338]="HIGH_FLOAT",t[t.LOW_INT=36339]="LOW_INT",t[t.MEDIUM_INT=36340]="MEDIUM_INT",t[t.HIGH_INT=36341]="HIGH_INT",t[t.FRAMEBUFFER=36160]="FRAMEBUFFER",t[t.RENDERBUFFER=36161]="RENDERBUFFER",t[t.RGBA4=32854]="RGBA4",t[t.RGB5_A1=32855]="RGB5_A1",t[t.RGB565=36194]="RGB565",t[t.DEPTH_COMPONENT16=33189]="DEPTH_COMPONENT16",t[t.STENCIL_INDEX=6401]="STENCIL_INDEX",t[t.STENCIL_INDEX8=36168]="STENCIL_INDEX8",t[t.DEPTH_STENCIL=34041]="DEPTH_STENCIL",t[t.RENDERBUFFER_WIDTH=36162]="RENDERBUFFER_WIDTH",t[t.RENDERBUFFER_HEIGHT=36163]="RENDERBUFFER_HEIGHT",t[t.RENDERBUFFER_INTERNAL_FORMAT=36164]="RENDERBUFFER_INTERNAL_FORMAT",t[t.RENDERBUFFER_RED_SIZE=36176]="RENDERBUFFER_RED_SIZE",t[t.RENDERBUFFER_GREEN_SIZE=36177]="RENDERBUFFER_GREEN_SIZE",t[t.RENDERBUFFER_BLUE_SIZE=36178]="RENDERBUFFER_BLUE_SIZE",t[t.RENDERBUFFER_ALPHA_SIZE=36179]="RENDERBUFFER_ALPHA_SIZE",t[t.RENDERBUFFER_DEPTH_SIZE=36180]="RENDERBUFFER_DEPTH_SIZE",t[t.RENDERBUFFER_STENCIL_SIZE=36181]="RENDERBUFFER_STENCIL_SIZE",t[t.FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE=36048]="FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE",t[t.FRAMEBUFFER_ATTACHMENT_OBJECT_NAME=36049]="FRAMEBUFFER_ATTACHMENT_OBJECT_NAME",t[t.FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL=36050]="FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL",t[t.FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE=36051]="FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE",t[t.COLOR_ATTACHMENT0=36064]="COLOR_ATTACHMENT0",t[t.DEPTH_ATTACHMENT=36096]="DEPTH_ATTACHMENT",t[t.STENCIL_ATTACHMENT=36128]="STENCIL_ATTACHMENT",t[t.DEPTH_STENCIL_ATTACHMENT=33306]="DEPTH_STENCIL_ATTACHMENT",t[t.NONE=0]="NONE",t[t.FRAMEBUFFER_COMPLETE=36053]="FRAMEBUFFER_COMPLETE",t[t.FRAMEBUFFER_INCOMPLETE_ATTACHMENT=36054]="FRAMEBUFFER_INCOMPLETE_ATTACHMENT",t[t.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT=36055]="FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT",t[t.FRAMEBUFFER_INCOMPLETE_DIMENSIONS=36057]="FRAMEBUFFER_INCOMPLETE_DIMENSIONS",t[t.FRAMEBUFFER_UNSUPPORTED=36061]="FRAMEBUFFER_UNSUPPORTED",t[t.FRAMEBUFFER_BINDING=36006]="FRAMEBUFFER_BINDING",t[t.RENDERBUFFER_BINDING=36007]="RENDERBUFFER_BINDING",t[t.READ_FRAMEBUFFER=36008]="READ_FRAMEBUFFER",t[t.DRAW_FRAMEBUFFER=36009]="DRAW_FRAMEBUFFER",t[t.MAX_RENDERBUFFER_SIZE=34024]="MAX_RENDERBUFFER_SIZE",t[t.INVALID_FRAMEBUFFER_OPERATION=1286]="INVALID_FRAMEBUFFER_OPERATION",t[t.UNPACK_FLIP_Y_WEBGL=37440]="UNPACK_FLIP_Y_WEBGL",t[t.UNPACK_PREMULTIPLY_ALPHA_WEBGL=37441]="UNPACK_PREMULTIPLY_ALPHA_WEBGL",t[t.UNPACK_COLORSPACE_CONVERSION_WEBGL=37443]="UNPACK_COLORSPACE_CONVERSION_WEBGL",t[t.READ_BUFFER=3074]="READ_BUFFER",t[t.UNPACK_ROW_LENGTH=3314]="UNPACK_ROW_LENGTH",t[t.UNPACK_SKIP_ROWS=3315]="UNPACK_SKIP_ROWS",t[t.UNPACK_SKIP_PIXELS=3316]="UNPACK_SKIP_PIXELS",t[t.PACK_ROW_LENGTH=3330]="PACK_ROW_LENGTH",t[t.PACK_SKIP_ROWS=3331]="PACK_SKIP_ROWS",t[t.PACK_SKIP_PIXELS=3332]="PACK_SKIP_PIXELS",t[t.TEXTURE_BINDING_3D=32874]="TEXTURE_BINDING_3D",t[t.UNPACK_SKIP_IMAGES=32877]="UNPACK_SKIP_IMAGES",t[t.UNPACK_IMAGE_HEIGHT=32878]="UNPACK_IMAGE_HEIGHT",t[t.MAX_3D_TEXTURE_SIZE=32883]="MAX_3D_TEXTURE_SIZE",t[t.MAX_ELEMENTS_VERTICES=33e3]="MAX_ELEMENTS_VERTICES",t[t.MAX_ELEMENTS_INDICES=33001]="MAX_ELEMENTS_INDICES",t[t.MAX_TEXTURE_LOD_BIAS=34045]="MAX_TEXTURE_LOD_BIAS",t[t.MAX_FRAGMENT_UNIFORM_COMPONENTS=35657]="MAX_FRAGMENT_UNIFORM_COMPONENTS",t[t.MAX_VERTEX_UNIFORM_COMPONENTS=35658]="MAX_VERTEX_UNIFORM_COMPONENTS",t[t.MAX_ARRAY_TEXTURE_LAYERS=35071]="MAX_ARRAY_TEXTURE_LAYERS",t[t.MIN_PROGRAM_TEXEL_OFFSET=35076]="MIN_PROGRAM_TEXEL_OFFSET",t[t.MAX_PROGRAM_TEXEL_OFFSET=35077]="MAX_PROGRAM_TEXEL_OFFSET",t[t.MAX_VARYING_COMPONENTS=35659]="MAX_VARYING_COMPONENTS",t[t.FRAGMENT_SHADER_DERIVATIVE_HINT=35723]="FRAGMENT_SHADER_DERIVATIVE_HINT",t[t.RASTERIZER_DISCARD=35977]="RASTERIZER_DISCARD",t[t.VERTEX_ARRAY_BINDING=34229]="VERTEX_ARRAY_BINDING",t[t.MAX_VERTEX_OUTPUT_COMPONENTS=37154]="MAX_VERTEX_OUTPUT_COMPONENTS",t[t.MAX_FRAGMENT_INPUT_COMPONENTS=37157]="MAX_FRAGMENT_INPUT_COMPONENTS",t[t.MAX_SERVER_WAIT_TIMEOUT=37137]="MAX_SERVER_WAIT_TIMEOUT",t[t.MAX_ELEMENT_INDEX=36203]="MAX_ELEMENT_INDEX",t[t.RED=6403]="RED",t[t.RGB8=32849]="RGB8",t[t.RGBA8=32856]="RGBA8",t[t.RGB10_A2=32857]="RGB10_A2",t[t.TEXTURE_3D=32879]="TEXTURE_3D",t[t.TEXTURE_WRAP_R=32882]="TEXTURE_WRAP_R",t[t.TEXTURE_MIN_LOD=33082]="TEXTURE_MIN_LOD",t[t.TEXTURE_MAX_LOD=33083]="TEXTURE_MAX_LOD",t[t.TEXTURE_BASE_LEVEL=33084]="TEXTURE_BASE_LEVEL",t[t.TEXTURE_MAX_LEVEL=33085]="TEXTURE_MAX_LEVEL",t[t.TEXTURE_COMPARE_MODE=34892]="TEXTURE_COMPARE_MODE",t[t.TEXTURE_COMPARE_FUNC=34893]="TEXTURE_COMPARE_FUNC",t[t.SRGB=35904]="SRGB",t[t.SRGB8=35905]="SRGB8",t[t.SRGB8_ALPHA8=35907]="SRGB8_ALPHA8",t[t.COMPARE_REF_TO_TEXTURE=34894]="COMPARE_REF_TO_TEXTURE",t[t.RGBA32F=34836]="RGBA32F",t[t.RGB32F=34837]="RGB32F",t[t.RGBA16F=34842]="RGBA16F",t[t.RGB16F=34843]="RGB16F",t[t.TEXTURE_2D_ARRAY=35866]="TEXTURE_2D_ARRAY",t[t.TEXTURE_BINDING_2D_ARRAY=35869]="TEXTURE_BINDING_2D_ARRAY",t[t.R11F_G11F_B10F=35898]="R11F_G11F_B10F",t[t.RGB9_E5=35901]="RGB9_E5",t[t.RGBA32UI=36208]="RGBA32UI",t[t.RGB32UI=36209]="RGB32UI",t[t.RGBA16UI=36214]="RGBA16UI",t[t.RGB16UI=36215]="RGB16UI",t[t.RGBA8UI=36220]="RGBA8UI",t[t.RGB8UI=36221]="RGB8UI",t[t.RGBA32I=36226]="RGBA32I",t[t.RGB32I=36227]="RGB32I",t[t.RGBA16I=36232]="RGBA16I",t[t.RGB16I=36233]="RGB16I",t[t.RGBA8I=36238]="RGBA8I",t[t.RGB8I=36239]="RGB8I",t[t.RED_INTEGER=36244]="RED_INTEGER",t[t.RGB_INTEGER=36248]="RGB_INTEGER",t[t.RGBA_INTEGER=36249]="RGBA_INTEGER",t[t.R8=33321]="R8",t[t.RG8=33323]="RG8",t[t.R16F=33325]="R16F",t[t.R32F=33326]="R32F",t[t.RG16F=33327]="RG16F",t[t.RG32F=33328]="RG32F",t[t.R8I=33329]="R8I",t[t.R8UI=33330]="R8UI",t[t.R16I=33331]="R16I",t[t.R16UI=33332]="R16UI",t[t.R32I=33333]="R32I",t[t.R32UI=33334]="R32UI",t[t.RG8I=33335]="RG8I",t[t.RG8UI=33336]="RG8UI",t[t.RG16I=33337]="RG16I",t[t.RG16UI=33338]="RG16UI",t[t.RG32I=33339]="RG32I",t[t.RG32UI=33340]="RG32UI",t[t.R8_SNORM=36756]="R8_SNORM",t[t.RG8_SNORM=36757]="RG8_SNORM",t[t.RGB8_SNORM=36758]="RGB8_SNORM",t[t.RGBA8_SNORM=36759]="RGBA8_SNORM",t[t.RGB10_A2UI=36975]="RGB10_A2UI",t[t.TEXTURE_IMMUTABLE_FORMAT=37167]="TEXTURE_IMMUTABLE_FORMAT",t[t.TEXTURE_IMMUTABLE_LEVELS=33503]="TEXTURE_IMMUTABLE_LEVELS",t[t.UNSIGNED_INT_2_10_10_10_REV=33640]="UNSIGNED_INT_2_10_10_10_REV",t[t.UNSIGNED_INT_10F_11F_11F_REV=35899]="UNSIGNED_INT_10F_11F_11F_REV",t[t.UNSIGNED_INT_5_9_9_9_REV=35902]="UNSIGNED_INT_5_9_9_9_REV",t[t.FLOAT_32_UNSIGNED_INT_24_8_REV=36269]="FLOAT_32_UNSIGNED_INT_24_8_REV",t[t.UNSIGNED_INT_24_8=34042]="UNSIGNED_INT_24_8",t[t.HALF_FLOAT=5131]="HALF_FLOAT",t[t.RG=33319]="RG",t[t.RG_INTEGER=33320]="RG_INTEGER",t[t.INT_2_10_10_10_REV=36255]="INT_2_10_10_10_REV",t[t.CURRENT_QUERY=34917]="CURRENT_QUERY",t[t.QUERY_RESULT=34918]="QUERY_RESULT",t[t.QUERY_RESULT_AVAILABLE=34919]="QUERY_RESULT_AVAILABLE",t[t.ANY_SAMPLES_PASSED=35887]="ANY_SAMPLES_PASSED",t[t.ANY_SAMPLES_PASSED_CONSERVATIVE=36202]="ANY_SAMPLES_PASSED_CONSERVATIVE",t[t.MAX_DRAW_BUFFERS=34852]="MAX_DRAW_BUFFERS",t[t.DRAW_BUFFER0=34853]="DRAW_BUFFER0",t[t.DRAW_BUFFER1=34854]="DRAW_BUFFER1",t[t.DRAW_BUFFER2=34855]="DRAW_BUFFER2",t[t.DRAW_BUFFER3=34856]="DRAW_BUFFER3",t[t.DRAW_BUFFER4=34857]="DRAW_BUFFER4",t[t.DRAW_BUFFER5=34858]="DRAW_BUFFER5",t[t.DRAW_BUFFER6=34859]="DRAW_BUFFER6",t[t.DRAW_BUFFER7=34860]="DRAW_BUFFER7",t[t.DRAW_BUFFER8=34861]="DRAW_BUFFER8",t[t.DRAW_BUFFER9=34862]="DRAW_BUFFER9",t[t.DRAW_BUFFER10=34863]="DRAW_BUFFER10",t[t.DRAW_BUFFER11=34864]="DRAW_BUFFER11",t[t.DRAW_BUFFER12=34865]="DRAW_BUFFER12",t[t.DRAW_BUFFER13=34866]="DRAW_BUFFER13",t[t.DRAW_BUFFER14=34867]="DRAW_BUFFER14",t[t.DRAW_BUFFER15=34868]="DRAW_BUFFER15",t[t.MAX_COLOR_ATTACHMENTS=36063]="MAX_COLOR_ATTACHMENTS",t[t.COLOR_ATTACHMENT1=36065]="COLOR_ATTACHMENT1",t[t.COLOR_ATTACHMENT2=36066]="COLOR_ATTACHMENT2",t[t.COLOR_ATTACHMENT3=36067]="COLOR_ATTACHMENT3",t[t.COLOR_ATTACHMENT4=36068]="COLOR_ATTACHMENT4",t[t.COLOR_ATTACHMENT5=36069]="COLOR_ATTACHMENT5",t[t.COLOR_ATTACHMENT6=36070]="COLOR_ATTACHMENT6",t[t.COLOR_ATTACHMENT7=36071]="COLOR_ATTACHMENT7",t[t.COLOR_ATTACHMENT8=36072]="COLOR_ATTACHMENT8",t[t.COLOR_ATTACHMENT9=36073]="COLOR_ATTACHMENT9",t[t.COLOR_ATTACHMENT10=36074]="COLOR_ATTACHMENT10",t[t.COLOR_ATTACHMENT11=36075]="COLOR_ATTACHMENT11",t[t.COLOR_ATTACHMENT12=36076]="COLOR_ATTACHMENT12",t[t.COLOR_ATTACHMENT13=36077]="COLOR_ATTACHMENT13",t[t.COLOR_ATTACHMENT14=36078]="COLOR_ATTACHMENT14",t[t.COLOR_ATTACHMENT15=36079]="COLOR_ATTACHMENT15",t[t.SAMPLER_3D=35679]="SAMPLER_3D",t[t.SAMPLER_2D_SHADOW=35682]="SAMPLER_2D_SHADOW",t[t.SAMPLER_2D_ARRAY=36289]="SAMPLER_2D_ARRAY",t[t.SAMPLER_2D_ARRAY_SHADOW=36292]="SAMPLER_2D_ARRAY_SHADOW",t[t.SAMPLER_CUBE_SHADOW=36293]="SAMPLER_CUBE_SHADOW",t[t.INT_SAMPLER_2D=36298]="INT_SAMPLER_2D",t[t.INT_SAMPLER_3D=36299]="INT_SAMPLER_3D",t[t.INT_SAMPLER_CUBE=36300]="INT_SAMPLER_CUBE",t[t.INT_SAMPLER_2D_ARRAY=36303]="INT_SAMPLER_2D_ARRAY",t[t.UNSIGNED_INT_SAMPLER_2D=36306]="UNSIGNED_INT_SAMPLER_2D",t[t.UNSIGNED_INT_SAMPLER_3D=36307]="UNSIGNED_INT_SAMPLER_3D",t[t.UNSIGNED_INT_SAMPLER_CUBE=36308]="UNSIGNED_INT_SAMPLER_CUBE",t[t.UNSIGNED_INT_SAMPLER_2D_ARRAY=36311]="UNSIGNED_INT_SAMPLER_2D_ARRAY",t[t.MAX_SAMPLES=36183]="MAX_SAMPLES",t[t.SAMPLER_BINDING=35097]="SAMPLER_BINDING",t[t.PIXEL_PACK_BUFFER=35051]="PIXEL_PACK_BUFFER",t[t.PIXEL_UNPACK_BUFFER=35052]="PIXEL_UNPACK_BUFFER",t[t.PIXEL_PACK_BUFFER_BINDING=35053]="PIXEL_PACK_BUFFER_BINDING",t[t.PIXEL_UNPACK_BUFFER_BINDING=35055]="PIXEL_UNPACK_BUFFER_BINDING",t[t.COPY_READ_BUFFER=36662]="COPY_READ_BUFFER",t[t.COPY_WRITE_BUFFER=36663]="COPY_WRITE_BUFFER",t[t.COPY_READ_BUFFER_BINDING=36662]="COPY_READ_BUFFER_BINDING",t[t.COPY_WRITE_BUFFER_BINDING=36663]="COPY_WRITE_BUFFER_BINDING",t[t.FLOAT_MAT2x3=35685]="FLOAT_MAT2x3",t[t.FLOAT_MAT2x4=35686]="FLOAT_MAT2x4",t[t.FLOAT_MAT3x2=35687]="FLOAT_MAT3x2",t[t.FLOAT_MAT3x4=35688]="FLOAT_MAT3x4",t[t.FLOAT_MAT4x2=35689]="FLOAT_MAT4x2",t[t.FLOAT_MAT4x3=35690]="FLOAT_MAT4x3",t[t.UNSIGNED_INT_VEC2=36294]="UNSIGNED_INT_VEC2",t[t.UNSIGNED_INT_VEC3=36295]="UNSIGNED_INT_VEC3",t[t.UNSIGNED_INT_VEC4=36296]="UNSIGNED_INT_VEC4",t[t.UNSIGNED_NORMALIZED=35863]="UNSIGNED_NORMALIZED",t[t.SIGNED_NORMALIZED=36764]="SIGNED_NORMALIZED",t[t.VERTEX_ATTRIB_ARRAY_INTEGER=35069]="VERTEX_ATTRIB_ARRAY_INTEGER",t[t.VERTEX_ATTRIB_ARRAY_DIVISOR=35070]="VERTEX_ATTRIB_ARRAY_DIVISOR",t[t.TRANSFORM_FEEDBACK_BUFFER_MODE=35967]="TRANSFORM_FEEDBACK_BUFFER_MODE",t[t.MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS=35968]="MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS",t[t.TRANSFORM_FEEDBACK_VARYINGS=35971]="TRANSFORM_FEEDBACK_VARYINGS",t[t.TRANSFORM_FEEDBACK_BUFFER_START=35972]="TRANSFORM_FEEDBACK_BUFFER_START",t[t.TRANSFORM_FEEDBACK_BUFFER_SIZE=35973]="TRANSFORM_FEEDBACK_BUFFER_SIZE",t[t.TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN=35976]="TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN",t[t.MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS=35978]="MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS",t[t.MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS=35979]="MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS",t[t.INTERLEAVED_ATTRIBS=35980]="INTERLEAVED_ATTRIBS",t[t.SEPARATE_ATTRIBS=35981]="SEPARATE_ATTRIBS",t[t.TRANSFORM_FEEDBACK_BUFFER=35982]="TRANSFORM_FEEDBACK_BUFFER",t[t.TRANSFORM_FEEDBACK_BUFFER_BINDING=35983]="TRANSFORM_FEEDBACK_BUFFER_BINDING",t[t.TRANSFORM_FEEDBACK=36386]="TRANSFORM_FEEDBACK",t[t.TRANSFORM_FEEDBACK_PAUSED=36387]="TRANSFORM_FEEDBACK_PAUSED",t[t.TRANSFORM_FEEDBACK_ACTIVE=36388]="TRANSFORM_FEEDBACK_ACTIVE",t[t.TRANSFORM_FEEDBACK_BINDING=36389]="TRANSFORM_FEEDBACK_BINDING",t[t.FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING=33296]="FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING",t[t.FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE=33297]="FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE",t[t.FRAMEBUFFER_ATTACHMENT_RED_SIZE=33298]="FRAMEBUFFER_ATTACHMENT_RED_SIZE",t[t.FRAMEBUFFER_ATTACHMENT_GREEN_SIZE=33299]="FRAMEBUFFER_ATTACHMENT_GREEN_SIZE",t[t.FRAMEBUFFER_ATTACHMENT_BLUE_SIZE=33300]="FRAMEBUFFER_ATTACHMENT_BLUE_SIZE",t[t.FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE=33301]="FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE",t[t.FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE=33302]="FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE",t[t.FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE=33303]="FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE",t[t.FRAMEBUFFER_DEFAULT=33304]="FRAMEBUFFER_DEFAULT",t[t.DEPTH24_STENCIL8=35056]="DEPTH24_STENCIL8",t[t.DRAW_FRAMEBUFFER_BINDING=36006]="DRAW_FRAMEBUFFER_BINDING",t[t.READ_FRAMEBUFFER_BINDING=36010]="READ_FRAMEBUFFER_BINDING",t[t.RENDERBUFFER_SAMPLES=36011]="RENDERBUFFER_SAMPLES",t[t.FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER=36052]="FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER",t[t.FRAMEBUFFER_INCOMPLETE_MULTISAMPLE=36182]="FRAMEBUFFER_INCOMPLETE_MULTISAMPLE",t[t.UNIFORM_BUFFER=35345]="UNIFORM_BUFFER",t[t.UNIFORM_BUFFER_BINDING=35368]="UNIFORM_BUFFER_BINDING",t[t.UNIFORM_BUFFER_START=35369]="UNIFORM_BUFFER_START",t[t.UNIFORM_BUFFER_SIZE=35370]="UNIFORM_BUFFER_SIZE",t[t.MAX_VERTEX_UNIFORM_BLOCKS=35371]="MAX_VERTEX_UNIFORM_BLOCKS",t[t.MAX_FRAGMENT_UNIFORM_BLOCKS=35373]="MAX_FRAGMENT_UNIFORM_BLOCKS",t[t.MAX_COMBINED_UNIFORM_BLOCKS=35374]="MAX_COMBINED_UNIFORM_BLOCKS",t[t.MAX_UNIFORM_BUFFER_BINDINGS=35375]="MAX_UNIFORM_BUFFER_BINDINGS",t[t.MAX_UNIFORM_BLOCK_SIZE=35376]="MAX_UNIFORM_BLOCK_SIZE",t[t.MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS=35377]="MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS",t[t.MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS=35379]="MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS",t[t.UNIFORM_BUFFER_OFFSET_ALIGNMENT=35380]="UNIFORM_BUFFER_OFFSET_ALIGNMENT",t[t.ACTIVE_UNIFORM_BLOCKS=35382]="ACTIVE_UNIFORM_BLOCKS",t[t.UNIFORM_TYPE=35383]="UNIFORM_TYPE",t[t.UNIFORM_SIZE=35384]="UNIFORM_SIZE",t[t.UNIFORM_BLOCK_INDEX=35386]="UNIFORM_BLOCK_INDEX",t[t.UNIFORM_OFFSET=35387]="UNIFORM_OFFSET",t[t.UNIFORM_ARRAY_STRIDE=35388]="UNIFORM_ARRAY_STRIDE",t[t.UNIFORM_MATRIX_STRIDE=35389]="UNIFORM_MATRIX_STRIDE",t[t.UNIFORM_IS_ROW_MAJOR=35390]="UNIFORM_IS_ROW_MAJOR",t[t.UNIFORM_BLOCK_BINDING=35391]="UNIFORM_BLOCK_BINDING",t[t.UNIFORM_BLOCK_DATA_SIZE=35392]="UNIFORM_BLOCK_DATA_SIZE",t[t.UNIFORM_BLOCK_ACTIVE_UNIFORMS=35394]="UNIFORM_BLOCK_ACTIVE_UNIFORMS",t[t.UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES=35395]="UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES",t[t.UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER=35396]="UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER",t[t.UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER=35398]="UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER",t[t.OBJECT_TYPE=37138]="OBJECT_TYPE",t[t.SYNC_CONDITION=37139]="SYNC_CONDITION",t[t.SYNC_STATUS=37140]="SYNC_STATUS",t[t.SYNC_FLAGS=37141]="SYNC_FLAGS",t[t.SYNC_FENCE=37142]="SYNC_FENCE",t[t.SYNC_GPU_COMMANDS_COMPLETE=37143]="SYNC_GPU_COMMANDS_COMPLETE",t[t.UNSIGNALED=37144]="UNSIGNALED",t[t.SIGNALED=37145]="SIGNALED",t[t.ALREADY_SIGNALED=37146]="ALREADY_SIGNALED",t[t.TIMEOUT_EXPIRED=37147]="TIMEOUT_EXPIRED",t[t.CONDITION_SATISFIED=37148]="CONDITION_SATISFIED",t[t.WAIT_FAILED=37149]="WAIT_FAILED",t[t.SYNC_FLUSH_COMMANDS_BIT=1]="SYNC_FLUSH_COMMANDS_BIT",t[t.COLOR=6144]="COLOR",t[t.DEPTH=6145]="DEPTH",t[t.STENCIL=6146]="STENCIL",t[t.MIN=32775]="MIN",t[t.MAX=32776]="MAX",t[t.DEPTH_COMPONENT24=33190]="DEPTH_COMPONENT24",t[t.STREAM_READ=35041]="STREAM_READ",t[t.STREAM_COPY=35042]="STREAM_COPY",t[t.STATIC_READ=35045]="STATIC_READ",t[t.STATIC_COPY=35046]="STATIC_COPY",t[t.DYNAMIC_READ=35049]="DYNAMIC_READ",t[t.DYNAMIC_COPY=35050]="DYNAMIC_COPY",t[t.DEPTH_COMPONENT32F=36012]="DEPTH_COMPONENT32F",t[t.DEPTH32F_STENCIL8=36013]="DEPTH32F_STENCIL8",t[t.INVALID_INDEX=4294967295]="INVALID_INDEX",t[t.TIMEOUT_IGNORED=-1]="TIMEOUT_IGNORED",t[t.MAX_CLIENT_WAIT_TIMEOUT_WEBGL=37447]="MAX_CLIENT_WAIT_TIMEOUT_WEBGL",t[t.UNMASKED_VENDOR_WEBGL=37445]="UNMASKED_VENDOR_WEBGL",t[t.UNMASKED_RENDERER_WEBGL=37446]="UNMASKED_RENDERER_WEBGL",t[t.MAX_TEXTURE_MAX_ANISOTROPY_EXT=34047]="MAX_TEXTURE_MAX_ANISOTROPY_EXT",t[t.TEXTURE_MAX_ANISOTROPY_EXT=34046]="TEXTURE_MAX_ANISOTROPY_EXT",t[t.R16_EXT=33322]="R16_EXT",t[t.RG16_EXT=33324]="RG16_EXT",t[t.RGB16_EXT=32852]="RGB16_EXT",t[t.RGBA16_EXT=32859]="RGBA16_EXT",t[t.R16_SNORM_EXT=36760]="R16_SNORM_EXT",t[t.RG16_SNORM_EXT=36761]="RG16_SNORM_EXT",t[t.RGB16_SNORM_EXT=36762]="RGB16_SNORM_EXT",t[t.RGBA16_SNORM_EXT=36763]="RGBA16_SNORM_EXT",t[t.COMPRESSED_RGB_S3TC_DXT1_EXT=33776]="COMPRESSED_RGB_S3TC_DXT1_EXT",t[t.COMPRESSED_RGBA_S3TC_DXT1_EXT=33777]="COMPRESSED_RGBA_S3TC_DXT1_EXT",t[t.COMPRESSED_RGBA_S3TC_DXT3_EXT=33778]="COMPRESSED_RGBA_S3TC_DXT3_EXT",t[t.COMPRESSED_RGBA_S3TC_DXT5_EXT=33779]="COMPRESSED_RGBA_S3TC_DXT5_EXT",t[t.COMPRESSED_SRGB_S3TC_DXT1_EXT=35916]="COMPRESSED_SRGB_S3TC_DXT1_EXT",t[t.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT=35917]="COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT",t[t.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT=35918]="COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT",t[t.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT=35919]="COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT",t[t.COMPRESSED_RED_RGTC1_EXT=36283]="COMPRESSED_RED_RGTC1_EXT",t[t.COMPRESSED_SIGNED_RED_RGTC1_EXT=36284]="COMPRESSED_SIGNED_RED_RGTC1_EXT",t[t.COMPRESSED_RED_GREEN_RGTC2_EXT=36285]="COMPRESSED_RED_GREEN_RGTC2_EXT",t[t.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT=36286]="COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT",t[t.COMPRESSED_RGBA_BPTC_UNORM_EXT=36492]="COMPRESSED_RGBA_BPTC_UNORM_EXT",t[t.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT=36493]="COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT",t[t.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT=36494]="COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT",t[t.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT=36495]="COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT",t[t.COMPRESSED_R11_EAC=37488]="COMPRESSED_R11_EAC",t[t.COMPRESSED_SIGNED_R11_EAC=37489]="COMPRESSED_SIGNED_R11_EAC",t[t.COMPRESSED_RG11_EAC=37490]="COMPRESSED_RG11_EAC",t[t.COMPRESSED_SIGNED_RG11_EAC=37491]="COMPRESSED_SIGNED_RG11_EAC",t[t.COMPRESSED_RGB8_ETC2=37492]="COMPRESSED_RGB8_ETC2",t[t.COMPRESSED_RGBA8_ETC2_EAC=37493]="COMPRESSED_RGBA8_ETC2_EAC",t[t.COMPRESSED_SRGB8_ETC2=37494]="COMPRESSED_SRGB8_ETC2",t[t.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC=37495]="COMPRESSED_SRGB8_ALPHA8_ETC2_EAC",t[t.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2=37496]="COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2",t[t.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2=37497]="COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2",t[t.COMPRESSED_RGB_PVRTC_4BPPV1_IMG=35840]="COMPRESSED_RGB_PVRTC_4BPPV1_IMG",t[t.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG=35842]="COMPRESSED_RGBA_PVRTC_4BPPV1_IMG",t[t.COMPRESSED_RGB_PVRTC_2BPPV1_IMG=35841]="COMPRESSED_RGB_PVRTC_2BPPV1_IMG",t[t.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG=35843]="COMPRESSED_RGBA_PVRTC_2BPPV1_IMG",t[t.COMPRESSED_RGB_ETC1_WEBGL=36196]="COMPRESSED_RGB_ETC1_WEBGL",t[t.COMPRESSED_RGB_ATC_WEBGL=35986]="COMPRESSED_RGB_ATC_WEBGL",t[t.COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL=35986]="COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL",t[t.COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL=34798]="COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL",t[t.COMPRESSED_RGBA_ASTC_4x4_KHR=37808]="COMPRESSED_RGBA_ASTC_4x4_KHR",t[t.COMPRESSED_RGBA_ASTC_5x4_KHR=37809]="COMPRESSED_RGBA_ASTC_5x4_KHR",t[t.COMPRESSED_RGBA_ASTC_5x5_KHR=37810]="COMPRESSED_RGBA_ASTC_5x5_KHR",t[t.COMPRESSED_RGBA_ASTC_6x5_KHR=37811]="COMPRESSED_RGBA_ASTC_6x5_KHR",t[t.COMPRESSED_RGBA_ASTC_6x6_KHR=37812]="COMPRESSED_RGBA_ASTC_6x6_KHR",t[t.COMPRESSED_RGBA_ASTC_8x5_KHR=37813]="COMPRESSED_RGBA_ASTC_8x5_KHR",t[t.COMPRESSED_RGBA_ASTC_8x6_KHR=37814]="COMPRESSED_RGBA_ASTC_8x6_KHR",t[t.COMPRESSED_RGBA_ASTC_8x8_KHR=37815]="COMPRESSED_RGBA_ASTC_8x8_KHR",t[t.COMPRESSED_RGBA_ASTC_10x5_KHR=37816]="COMPRESSED_RGBA_ASTC_10x5_KHR",t[t.COMPRESSED_RGBA_ASTC_10x6_KHR=37817]="COMPRESSED_RGBA_ASTC_10x6_KHR",t[t.COMPRESSED_RGBA_ASTC_10x8_KHR=37818]="COMPRESSED_RGBA_ASTC_10x8_KHR",t[t.COMPRESSED_RGBA_ASTC_10x10_KHR=37819]="COMPRESSED_RGBA_ASTC_10x10_KHR",t[t.COMPRESSED_RGBA_ASTC_12x10_KHR=37820]="COMPRESSED_RGBA_ASTC_12x10_KHR",t[t.COMPRESSED_RGBA_ASTC_12x12_KHR=37821]="COMPRESSED_RGBA_ASTC_12x12_KHR",t[t.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR=37840]="COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR",t[t.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR=37841]="COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR",t[t.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR=37842]="COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR",t[t.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR=37843]="COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR",t[t.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR=37844]="COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR",t[t.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR=37845]="COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR",t[t.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR=37846]="COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR",t[t.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR=37847]="COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR",t[t.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR=37848]="COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR",t[t.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR=37849]="COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR",t[t.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR=37850]="COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR",t[t.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR=37851]="COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR",t[t.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR=37852]="COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR",t[t.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR=37853]="COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR",t[t.QUERY_COUNTER_BITS_EXT=34916]="QUERY_COUNTER_BITS_EXT",t[t.CURRENT_QUERY_EXT=34917]="CURRENT_QUERY_EXT",t[t.QUERY_RESULT_EXT=34918]="QUERY_RESULT_EXT",t[t.QUERY_RESULT_AVAILABLE_EXT=34919]="QUERY_RESULT_AVAILABLE_EXT",t[t.TIME_ELAPSED_EXT=35007]="TIME_ELAPSED_EXT",t[t.TIMESTAMP_EXT=36392]="TIMESTAMP_EXT",t[t.GPU_DISJOINT_EXT=36795]="GPU_DISJOINT_EXT",t[t.COMPLETION_STATUS_KHR=37297]="COMPLETION_STATUS_KHR",t[t.DEPTH_CLAMP_EXT=34383]="DEPTH_CLAMP_EXT",t[t.FIRST_VERTEX_CONVENTION_WEBGL=36429]="FIRST_VERTEX_CONVENTION_WEBGL",t[t.LAST_VERTEX_CONVENTION_WEBGL=36430]="LAST_VERTEX_CONVENTION_WEBGL",t[t.PROVOKING_VERTEX_WEBL=36431]="PROVOKING_VERTEX_WEBL",t[t.POLYGON_MODE_WEBGL=2880]="POLYGON_MODE_WEBGL",t[t.POLYGON_OFFSET_LINE_WEBGL=10754]="POLYGON_OFFSET_LINE_WEBGL",t[t.LINE_WEBGL=6913]="LINE_WEBGL",t[t.FILL_WEBGL=6914]="FILL_WEBGL",t[t.MAX_CLIP_DISTANCES_WEBGL=3378]="MAX_CLIP_DISTANCES_WEBGL",t[t.MAX_CULL_DISTANCES_WEBGL=33529]="MAX_CULL_DISTANCES_WEBGL",t[t.MAX_COMBINED_CLIP_AND_CULL_DISTANCES_WEBGL=33530]="MAX_COMBINED_CLIP_AND_CULL_DISTANCES_WEBGL",t[t.CLIP_DISTANCE0_WEBGL=12288]="CLIP_DISTANCE0_WEBGL",t[t.CLIP_DISTANCE1_WEBGL=12289]="CLIP_DISTANCE1_WEBGL",t[t.CLIP_DISTANCE2_WEBGL=12290]="CLIP_DISTANCE2_WEBGL",t[t.CLIP_DISTANCE3_WEBGL=12291]="CLIP_DISTANCE3_WEBGL",t[t.CLIP_DISTANCE4_WEBGL=12292]="CLIP_DISTANCE4_WEBGL",t[t.CLIP_DISTANCE5_WEBGL=12293]="CLIP_DISTANCE5_WEBGL",t[t.CLIP_DISTANCE6_WEBGL=12294]="CLIP_DISTANCE6_WEBGL",t[t.CLIP_DISTANCE7_WEBGL=12295]="CLIP_DISTANCE7_WEBGL",t[t.POLYGON_OFFSET_CLAMP_EXT=36379]="POLYGON_OFFSET_CLAMP_EXT",t[t.LOWER_LEFT_EXT=36001]="LOWER_LEFT_EXT",t[t.UPPER_LEFT_EXT=36002]="UPPER_LEFT_EXT",t[t.NEGATIVE_ONE_TO_ONE_EXT=37726]="NEGATIVE_ONE_TO_ONE_EXT",t[t.ZERO_TO_ONE_EXT=37727]="ZERO_TO_ONE_EXT",t[t.CLIP_ORIGIN_EXT=37724]="CLIP_ORIGIN_EXT",t[t.CLIP_DEPTH_MODE_EXT=37725]="CLIP_DEPTH_MODE_EXT",t[t.SRC1_COLOR_WEBGL=35065]="SRC1_COLOR_WEBGL",t[t.SRC1_ALPHA_WEBGL=34185]="SRC1_ALPHA_WEBGL",t[t.ONE_MINUS_SRC1_COLOR_WEBGL=35066]="ONE_MINUS_SRC1_COLOR_WEBGL",t[t.ONE_MINUS_SRC1_ALPHA_WEBGL=35067]="ONE_MINUS_SRC1_ALPHA_WEBGL",t[t.MAX_DUAL_SOURCE_DRAW_BUFFERS_WEBGL=35068]="MAX_DUAL_SOURCE_DRAW_BUFFERS_WEBGL",t[t.MIRROR_CLAMP_TO_EDGE_EXT=34627]="MIRROR_CLAMP_TO_EDGE_EXT"})(Gr||(Gr={}));var Eo={3042:!1,32773:new Float32Array([0,0,0,0]),32777:32774,34877:32774,32969:1,32968:0,32971:1,32970:0,3106:new Float32Array([0,0,0,0]),3107:[!0,!0,!0,!0],2884:!1,2885:1029,2929:!1,2931:1,2932:513,2928:new Float32Array([0,1]),2930:!0,3024:!0,35725:null,36006:null,36007:null,34229:null,34964:null,2886:2305,33170:4352,2849:1,32823:!1,32824:0,10752:0,32926:!1,32928:!1,32938:1,32939:!1,3089:!1,3088:new Int32Array([0,0,1024,1024]),2960:!1,2961:0,2968:4294967295,36005:4294967295,2962:519,2967:0,2963:4294967295,34816:519,36003:0,36004:4294967295,2964:7680,2965:7680,2966:7680,34817:7680,34818:7680,34819:7680,2978:[0,0,1024,1024],36389:null,36662:null,36663:null,35053:null,35055:null,35723:4352,36010:null,35977:!1,3333:4,3317:4,37440:!1,37441:!1,37443:37444,3330:0,3332:0,3331:0,3314:0,32878:0,3316:0,3315:0,32877:0},Ee=(t,e,r)=>e?t.enable(r):t.disable(r),ey=(t,e,r)=>t.hint(r,e),st=(t,e,r)=>t.pixelStorei(r,e),ty=(t,e,r)=>{let i=r===36006?36009:36008;return t.bindFramebuffer(i,e)},Ao=(t,e,r)=>{let s={34964:34962,36662:36662,36663:36663,35053:35051,35055:35052}[r];t.bindBuffer(s,e)};function cd(t){return Array.isArray(t)||ArrayBuffer.isView(t)&&!(t instanceof DataView)}var ry={3042:Ee,32773:(t,e)=>t.blendColor(...e),32777:"blendEquation",34877:"blendEquation",32969:"blendFunc",32968:"blendFunc",32971:"blendFunc",32970:"blendFunc",3106:(t,e)=>t.clearColor(...e),3107:(t,e)=>t.colorMask(...e),2884:Ee,2885:(t,e)=>t.cullFace(e),2929:Ee,2931:(t,e)=>t.clearDepth(e),2932:(t,e)=>t.depthFunc(e),2928:(t,e)=>t.depthRange(...e),2930:(t,e)=>t.depthMask(e),3024:Ee,35723:ey,35725:(t,e)=>t.useProgram(e),36007:(t,e)=>t.bindRenderbuffer(36161,e),36389:(t,e)=>t.bindTransformFeedback?.(36386,e),34229:(t,e)=>t.bindVertexArray(e),36006:ty,36010:ty,34964:Ao,36662:Ao,36663:Ao,35053:Ao,35055:Ao,2886:(t,e)=>t.frontFace(e),33170:ey,2849:(t,e)=>t.lineWidth(e),32823:Ee,32824:"polygonOffset",10752:"polygonOffset",35977:Ee,32926:Ee,32928:Ee,32938:"sampleCoverage",32939:"sampleCoverage",3089:Ee,3088:(t,e)=>t.scissor(...e),2960:Ee,2961:(t,e)=>t.clearStencil(e),2968:(t,e)=>t.stencilMaskSeparate(1028,e),36005:(t,e)=>t.stencilMaskSeparate(1029,e),2962:"stencilFuncFront",2967:"stencilFuncFront",2963:"stencilFuncFront",34816:"stencilFuncBack",36003:"stencilFuncBack",36004:"stencilFuncBack",2964:"stencilOpFront",2965:"stencilOpFront",2966:"stencilOpFront",34817:"stencilOpBack",34818:"stencilOpBack",34819:"stencilOpBack",2978:(t,e)=>t.viewport(...e),34383:Ee,10754:Ee,12288:Ee,12289:Ee,12290:Ee,12291:Ee,12292:Ee,12293:Ee,12294:Ee,12295:Ee,3333:st,3317:st,37440:st,37441:st,37443:st,3330:st,3332:st,3331:st,3314:st,32878:st,3316:st,3315:st,32877:st,framebuffer:(t,e)=>{let r=e&&"handle"in e?e.handle:e;return t.bindFramebuffer(36160,r)},blend:(t,e)=>e?t.enable(3042):t.disable(3042),blendColor:(t,e)=>t.blendColor(...e),blendEquation:(t,e)=>{let r=typeof e=="number"?[e,e]:e;t.blendEquationSeparate(...r)},blendFunc:(t,e)=>{let r=e?.length===2?[...e,...e]:e;t.blendFuncSeparate(...r)},clearColor:(t,e)=>t.clearColor(...e),clearDepth:(t,e)=>t.clearDepth(e),clearStencil:(t,e)=>t.clearStencil(e),colorMask:(t,e)=>t.colorMask(...e),cull:(t,e)=>e?t.enable(2884):t.disable(2884),cullFace:(t,e)=>t.cullFace(e),depthTest:(t,e)=>e?t.enable(2929):t.disable(2929),depthFunc:(t,e)=>t.depthFunc(e),depthMask:(t,e)=>t.depthMask(e),depthRange:(t,e)=>t.depthRange(...e),dither:(t,e)=>e?t.enable(3024):t.disable(3024),derivativeHint:(t,e)=>{t.hint(35723,e)},frontFace:(t,e)=>t.frontFace(e),mipmapHint:(t,e)=>t.hint(33170,e),lineWidth:(t,e)=>t.lineWidth(e),polygonOffsetFill:(t,e)=>e?t.enable(32823):t.disable(32823),polygonOffset:(t,e)=>t.polygonOffset(...e),sampleCoverage:(t,e)=>t.sampleCoverage(...e),scissorTest:(t,e)=>e?t.enable(3089):t.disable(3089),scissor:(t,e)=>t.scissor(...e),stencilTest:(t,e)=>e?t.enable(2960):t.disable(2960),stencilMask:(t,e)=>{e=cd(e)?e:[e,e];let[r,i]=e;t.stencilMaskSeparate(1028,r),t.stencilMaskSeparate(1029,i)},stencilFunc:(t,e)=>{e=cd(e)&&e.length===3?[...e,...e]:e;let[r,i,s,n,o,a]=e;t.stencilFuncSeparate(1028,r,i,s),t.stencilFuncSeparate(1029,n,o,a)},stencilOp:(t,e)=>{e=cd(e)&&e.length===3?[...e,...e]:e;let[r,i,s,n,o,a]=e;t.stencilOpSeparate(1028,r,i,s),t.stencilOpSeparate(1029,n,o,a)},viewport:(t,e)=>t.viewport(...e)};function ve(t,e,r){return e[t]!==void 0?e[t]:r[t]}var iy={blendEquation:(t,e,r)=>t.blendEquationSeparate(ve(32777,e,r),ve(34877,e,r)),blendFunc:(t,e,r)=>t.blendFuncSeparate(ve(32969,e,r),ve(32968,e,r),ve(32971,e,r),ve(32970,e,r)),polygonOffset:(t,e,r)=>t.polygonOffset(ve(32824,e,r),ve(10752,e,r)),sampleCoverage:(t,e,r)=>t.sampleCoverage(ve(32938,e,r),ve(32939,e,r)),stencilFuncFront:(t,e,r)=>t.stencilFuncSeparate(1028,ve(2962,e,r),ve(2967,e,r),ve(2963,e,r)),stencilFuncBack:(t,e,r)=>t.stencilFuncSeparate(1029,ve(34816,e,r),ve(36003,e,r),ve(36004,e,r)),stencilOpFront:(t,e,r)=>t.stencilOpSeparate(1028,ve(2964,e,r),ve(2965,e,r),ve(2966,e,r)),stencilOpBack:(t,e,r)=>t.stencilOpSeparate(1029,ve(34817,e,r),ve(34818,e,r),ve(34819,e,r))},ld={enable:(t,e)=>t({[e]:!0}),disable:(t,e)=>t({[e]:!1}),pixelStorei:(t,e,r)=>t({[e]:r}),hint:(t,e,r)=>t({[e]:r}),useProgram:(t,e)=>t({35725:e}),bindRenderbuffer:(t,e,r)=>t({36007:r}),bindTransformFeedback:(t,e,r)=>t({36389:r}),bindVertexArray:(t,e)=>t({34229:e}),bindFramebuffer:(t,e,r)=>{switch(e){case 36160:return t({36006:r,36010:r});case 36009:return t({36006:r});case 36008:return t({36010:r});default:return null}},bindBuffer:(t,e,r)=>{let i={34962:[34964],36662:[36662],36663:[36663],35051:[35053],35052:[35055]}[e];return i?t({[i]:r}):{valueChanged:!0}},blendColor:(t,e,r,i,s)=>t({32773:new Float32Array([e,r,i,s])}),blendEquation:(t,e)=>t({32777:e,34877:e}),blendEquationSeparate:(t,e,r)=>t({32777:e,34877:r}),blendFunc:(t,e,r)=>t({32969:e,32968:r,32971:e,32970:r}),blendFuncSeparate:(t,e,r,i,s)=>t({32969:e,32968:r,32971:i,32970:s}),clearColor:(t,e,r,i,s)=>t({3106:new Float32Array([e,r,i,s])}),clearDepth:(t,e)=>t({2931:e}),clearStencil:(t,e)=>t({2961:e}),colorMask:(t,e,r,i,s)=>t({3107:[e,r,i,s]}),cullFace:(t,e)=>t({2885:e}),depthFunc:(t,e)=>t({2932:e}),depthRange:(t,e,r)=>t({2928:new Float32Array([e,r])}),depthMask:(t,e)=>t({2930:e}),frontFace:(t,e)=>t({2886:e}),lineWidth:(t,e)=>t({2849:e}),polygonOffset:(t,e,r)=>t({32824:e,10752:r}),sampleCoverage:(t,e,r)=>t({32938:e,32939:r}),scissor:(t,e,r,i,s)=>t({3088:new Int32Array([e,r,i,s])}),stencilMask:(t,e)=>t({2968:e,36005:e}),stencilMaskSeparate:(t,e,r)=>t({[e===1028?2968:36005]:r}),stencilFunc:(t,e,r,i)=>t({2962:e,2967:r,2963:i,34816:e,36003:r,36004:i}),stencilFuncSeparate:(t,e,r,i,s)=>t({[e===1028?2962:34816]:r,[e===1028?2967:36003]:i,[e===1028?2963:36004]:s}),stencilOp:(t,e,r,i)=>t({2964:e,2965:r,2966:i,34817:e,34818:r,34819:i}),stencilOpSeparate:(t,e,r,i,s)=>t({[e===1028?2964:34817]:r,[e===1028?2965:34818]:i,[e===1028?2966:34819]:s}),viewport:(t,e,r,i,s)=>t({2978:[e,r,i,s]})},rr=(t,e)=>t.isEnabled(e),ud={3042:rr,2884:rr,2929:rr,3024:rr,32823:rr,32926:rr,32928:rr,3089:rr,2960:rr,35977:rr},sy=new Set([34016,36388,36387,35983,35368,34965,35739,35738,3074,34853,34854,34855,34856,34857,34858,34859,34860,34861,34862,34863,34864,34865,34866,34867,34868,35097,32873,35869,32874,34068]);function Lt(t,e){if(uR(e))return;let r={};for(let s in e){let n=Number(s),o=ry[s];o&&(typeof o=="string"?r[o]=!0:o(t,e[s],n))}let i=t.state&&t.state.cache;if(i)for(let s in r){let n=iy[s];n(t,e,i)}}function rl(t,e=Eo){if(typeof e=="number"){let s=e,n=ud[s];return n?n(t,s):t.getParameter(s)}let r=Array.isArray(e)?e:Object.keys(e),i={};for(let s of r){let n=ud[s];i[s]=n?n(t,Number(s)):t.getParameter(Number(s))}return i}function ny(t){Lt(t,Eo)}function uR(t){for(let e in t)return!1;return!0}function oy(t,e){if(t===e)return!0;let r=Array.isArray(t)||ArrayBuffer.isView(t),i=Array.isArray(e)||ArrayBuffer.isView(e);if(r&&i&&t.length===e.length){for(let s=0;s{}}={}){this.gl=e,this.cache=r?rl(e):Object.assign({},Eo),this.log=i,this._updateCache=this._updateCache.bind(this),Object.seal(this)}push(e={}){this.stateStack.push({})}pop(){ee(this.stateStack.length>0);let e=this.stateStack[this.stateStack.length-1];Lt(this.gl,e),this.stateStack.pop()}_updateCache(e){let r=!1,i,s=this.stateStack.length>0?this.stateStack[this.stateStack.length-1]:null;for(let n in e){ee(n!==void 0);let o=e[n],a=this.cache[n];oy(o,a)||(r=!0,i=a,s&&!(n in s)&&(s[n]=a),this.cache[n]=o)}return{valueChanged:r,oldValue:i}}};function Bi(t){return t.state}function hd(t,e){let{enable:r=!0,copyState:i}=e;if(ee(i!==void 0),!t.state){t.state=new fd(t,{copyState:i}),hR(t);for(let n in ld){let o=ld[n];fR(t,n,o)}ay(t,"getParameter"),ay(t,"isEnabled")}let s=Bi(t);return s.enable=r,t}function Zr(t){let e=Bi(t);e||(hd(t,{copyState:!1}),e=Bi(t)),e.push()}function Sr(t){let e=Bi(t);ee(e),e.pop()}function ay(t,e){let r=t[e].bind(t);t[e]=function(s){if(s===void 0||sy.has(s))return r(s);let n=Bi(t);return s in n.cache||(n.cache[s]=r(s)),n.enable?n.cache[s]:r(s)},Object.defineProperty(t[e],"name",{value:`${e}-from-cache`,configurable:!1})}function fR(t,e,r){if(!t[e])return;let i=t[e].bind(t);t[e]=function(...n){let o=Bi(t),{valueChanged:a,oldValue:c}=r(o._updateCache,...n);return a&&i(...n),c},Object.defineProperty(t[e],"name",{value:`${e}-to-cache`,configurable:!1})}function hR(t){let e=t.useProgram.bind(t);t.useProgram=function(i){let s=Bi(t);s.program!==i&&(e(i),s.program=i)}}var dR={powerPreference:"high-performance",onContextLost:()=>console.error("WebGL context lost"),onContextRestored:()=>console.info("WebGL context restored")};function cy(t,e){e={...dR,...e};let r=null,i=n=>r=n.statusMessage||r;t.addEventListener("webglcontextcreationerror",i,!1);let s=null;if(s||=t.getContext("webgl2",e),t.removeEventListener("webglcontextcreationerror",i,!1),!s)throw new Error(`Failed to create WebGL context: ${r||"Unknown error"}`);if(e.onContextLost){let{onContextLost:n}=e;t.addEventListener("webglcontextlost",o=>n(o),!1)}if(e.onContextRestored){let{onContextRestored:n}=e;t.addEventListener("webglcontextrestored",o=>n(o),!1)}return s}function St(t,e,r){return r[e]===void 0&&(r[e]=t.getExtension(e)||null),r[e]}function ly(t,e){let r=t.getParameter(7936),i=t.getParameter(7937);St(t,"WEBGL_debug_renderer_info",e);let s=e.WEBGL_debug_renderer_info,n=t.getParameter(s?s.UNMASKED_VENDOR_WEBGL:7936),o=t.getParameter(s?s.UNMASKED_RENDERER_WEBGL:7937),a=n||r,c=o||i,l=t.getParameter(7938),u=uy(a,c),f=pR(a,c),h=gR(a,c);return{type:"webgl",gpu:u,gpuType:h,gpuBackend:f,vendor:a,renderer:c,version:l,shadingLanguage:"glsl",shadingLanguageVersion:300}}function uy(t,e){return/NVIDIA/i.exec(t)||/NVIDIA/i.exec(e)?"nvidia":/INTEL/i.exec(t)||/INTEL/i.exec(e)?"intel":/Apple/i.exec(t)||/Apple/i.exec(e)?"apple":/AMD/i.exec(t)||/AMD/i.exec(e)||/ATI/i.exec(t)||/ATI/i.exec(e)?"amd":/SwiftShader/i.exec(t)||/SwiftShader/i.exec(e)?"software":"unknown"}function pR(t,e){return/Metal/i.exec(t)||/Metal/i.exec(e)?"metal":/ANGLE/i.exec(t)||/ANGLE/i.exec(e)?"opengl":"unknown"}function gR(t,e){if(/SwiftShader/i.exec(t)||/SwiftShader/i.exec(e))return"cpu";switch(uy(t,e)){case"intel":return"integrated";case"software":return"cpu";case"unknown":return"unknown";default:return"discrete"}}function il(t){switch(t){case"uint8":return 5121;case"sint8":return 5120;case"unorm8":return 5121;case"snorm8":return 5120;case"uint16":return 5123;case"sint16":return 5122;case"unorm16":return 5123;case"snorm16":return 5122;case"uint32":return 5125;case"sint32":return 5124;case"float16":return 5131;case"float32":return 5126}throw new Error(String(t))}var ze="texture-compression-bc",ce="texture-compression-astc",ir="texture-compression-etc2",mR="texture-compression-etc1-webgl",sl="texture-compression-pvrtc-webgl",dd="texture-compression-atc-webgl",wo="float32-renderable-webgl",pd="float16-renderable-webgl",_R="rgb9e5ufloat_renderable-webgl",gd="snorm8-renderable-webgl",Po="norm16-renderable-webgl",md="snorm16-renderable-webgl",nl="float32-filterable",fy="float16-filterable-webgl",Ro="WEBGL_compressed_texture_s3tc",Co="WEBGL_compressed_texture_s3tc_srgb",Rs="EXT_texture_compression_rgtc",Cs="EXT_texture_compression_bptc",yR="WEBGL_compressed_texture_etc",xR="WEBGL_compressed_texture_astc",TR="WEBGL_compressed_texture_etc1",vR="WEBGL_compressed_texture_pvrtc",bR="WEBGL_compressed_texture_atc",hy="EXT_texture_norm16",dy="EXT_render_snorm",SR="EXT_color_buffer_float",ol={"float32-renderable-webgl":["EXT_color_buffer_float"],"float16-renderable-webgl":["EXT_color_buffer_half_float"],"rgb9e5ufloat_renderable-webgl":["WEBGL_render_shared_exponent"],"snorm8-renderable-webgl":[dy],"norm16-renderable-webgl":[hy],"snorm16-renderable-webgl":[hy,dy],"float32-filterable":["OES_texture_float_linear"],"float16-filterable-webgl":["OES_texture_half_float_linear"],"texture-filterable-anisotropic-webgl":["EXT_texture_filter_anisotropic"],"texture-blend-float-webgl":["EXT_float_blend"],"texture-compression-bc":[Ro,Co,Rs,Cs],"texture-compression-bc5-webgl":[Rs],"texture-compression-bc7-webgl":[Cs],"texture-compression-etc2":[yR],"texture-compression-astc":[xR],"texture-compression-etc1-webgl":[TR],"texture-compression-pvrtc-webgl":[vR],"texture-compression-atc-webgl":[bR]};function py(t){return t in ol}function gy(t,e,r){return(ol[e]||[]).every(s=>St(t,s,r))}var al={"rgb8unorm-unsized":{gl:6407,b:4,c:2,bpp:4,dataFormat:6407,types:[5121,33635]},"rgba8unorm-unsized":{gl:6408,b:4,c:2,bpp:4,dataFormat:6408,types:[5121,32819,32820]},r8unorm:{gl:33321,b:1,c:1,rb:!0},r8snorm:{gl:36756,b:1,c:1,render:gd},r8uint:{gl:33330,b:1,c:1,rb:!0},r8sint:{gl:33329,b:1,c:1,rb:!0},rg8unorm:{gl:33323,b:2,c:2,rb:!0},rg8snorm:{gl:36757,b:2,c:2,render:gd},rg8uint:{gl:33336,b:2,c:2,rb:!0},rg8sint:{gl:33335,b:2,c:2,rb:!0},r16uint:{gl:33332,b:2,c:1,rb:!0},r16sint:{gl:33331,b:2,c:1,rb:!0},r16float:{gl:33325,b:2,c:1,render:pd,filter:"float16-filterable-webgl",rb:!0},"r16unorm-webgl":{gl:33322,b:2,c:1,f:Po,rb:!0},"r16snorm-webgl":{gl:36760,b:2,c:1,f:md},"rgba4unorm-webgl":{gl:32854,b:2,c:4,wgpu:!1,rb:!0},"rgb565unorm-webgl":{gl:36194,b:2,c:4,wgpu:!1,rb:!0},"rgb5a1unorm-webgl":{gl:32855,b:2,c:4,wgpu:!1,rb:!0},"rgb8unorm-webgl":{gl:32849,b:3,c:3,wgpu:!1},"rgb8snorm-webgl":{gl:36758,b:3,c:3,wgpu:!1},rgba8unorm:{gl:32856,b:4,c:2,bpp:4},"rgba8unorm-srgb":{gl:35907,b:4,c:4,bpp:4},rgba8snorm:{gl:36759,b:4,c:4,render:gd},rgba8uint:{gl:36220,b:4,c:4,bpp:4},rgba8sint:{gl:36238,b:4,c:4,bpp:4},bgra8unorm:{b:4,c:4},"bgra8unorm-srgb":{b:4,c:4},rg16uint:{gl:33338,b:4,c:1,bpp:4},rg16sint:{gl:33337,b:4,c:2,bpp:4},rg16float:{gl:33327,bpp:4,b:4,c:2,render:pd,filter:fy,rb:!0},"rg16unorm-webgl":{gl:33324,b:2,c:2,render:Po},"rg16snorm-webgl":{gl:36761,b:2,c:2,render:md},r32uint:{gl:33334,b:4,c:1,bpp:4,rb:!0},r32sint:{gl:33333,b:4,c:1,bpp:4,rb:!0},r32float:{gl:33326,bpp:4,b:4,c:1,render:wo,filter:nl},rgb9e5ufloat:{gl:35901,b:4,c:3,p:1,render:_R},rg11b10ufloat:{gl:35898,b:4,c:3,p:1,render:wo,rb:!0},rgb10a2unorm:{gl:32857,b:4,c:4,p:1,rb:!0},"rgb10a2uint-webgl":{b:4,c:4,gl:36975,p:1,wgpu:!1,bpp:4,rb:!0},"rgb16unorm-webgl":{gl:32852,b:2,c:3,f:Po},"rgb16snorm-webgl":{gl:36762,b:2,c:3,f:Po},rg32uint:{gl:33340,b:8,c:2,rb:!0},rg32sint:{gl:33339,b:8,c:2,rb:!0},rg32float:{gl:33328,b:8,c:2,render:wo,filter:nl,rb:!0},rgba16uint:{gl:36214,b:8,c:4,rb:!0},rgba16sint:{gl:36232,b:8,c:4,rb:!0},rgba16float:{gl:34842,b:8,c:4,render:pd,filter:fy},"rgba16unorm-webgl":{gl:32859,b:2,c:4,render:Po,rb:!0},"rgba16snorm-webgl":{gl:36763,b:2,c:4,render:md},"rgb32float-webgl":{gl:34837,render:wo,filter:nl,gl2ext:SR,dataFormat:6407,types:[5126]},rgba32uint:{gl:36208,b:16,c:4,rb:!0},rgba32sint:{gl:36226,b:16,c:4,rb:!0},rgba32float:{gl:34836,b:16,c:4,render:wo,filter:nl,rb:!0},stencil8:{gl:36168,b:1,c:1,attachment:36128,rb:!0},depth16unorm:{gl:33189,b:2,c:1,attachment:36096,dataFormat:6402,types:[5123],rb:!0},depth24plus:{gl:33190,b:3,c:1,attachment:36096,dataFormat:6402,types:[5125]},depth32float:{gl:36012,b:4,c:1,attachment:36096,dataFormat:6402,types:[5126],rb:!0},"depth24plus-stencil8":{gl:35056,b:4,c:2,p:1,attachment:33306,rb:!0,depthTexture:!0,dataFormat:34041,types:[34042]},"depth24unorm-stencil8":{gl:35056,b:4,c:2,p:1,attachment:33306,dataFormat:34041,types:[34042],rb:!0},"depth32float-stencil8":{gl:36013,b:5,c:2,p:1,attachment:33306,dataFormat:34041,types:[36269],rb:!0},"bc1-rgb-unorm-webgl":{gl:33776,x:Ro,f:ze},"bc1-rgb-unorm-srgb-webgl":{gl:35916,x:Co,f:ze},"bc1-rgba-unorm":{gl:33777,x:Ro,f:ze},"bc1-rgba-unorm-srgb":{gl:35916,x:Co,f:ze},"bc2-rgba-unorm":{gl:33778,x:Ro,f:ze},"bc2-rgba-unorm-srgb":{gl:35918,x:Co,f:ze},"bc3-rgba-unorm":{gl:33779,x:Ro,f:ze},"bc3-rgba-unorm-srgb":{gl:35919,x:Co,f:ze},"bc4-r-unorm":{gl:36283,x:Rs,f:ze},"bc4-r-snorm":{gl:36284,x:Rs,f:ze},"bc5-rg-unorm":{gl:36285,x:Rs,f:ze},"bc5-rg-snorm":{gl:36286,x:Rs,f:ze},"bc6h-rgb-ufloat":{gl:36495,x:Cs,f:ze},"bc6h-rgb-float":{gl:36494,x:Cs,f:ze},"bc7-rgba-unorm":{gl:36492,x:Cs,f:ze},"bc7-rgba-unorm-srgb":{gl:36493,x:Cs,f:ze},"etc2-rgb8unorm":{gl:37492,f:ir},"etc2-rgb8unorm-srgb":{gl:37494,f:ir},"etc2-rgb8a1unorm":{gl:37496,f:ir},"etc2-rgb8a1unorm-srgb":{gl:37497,f:ir},"etc2-rgba8unorm":{gl:37493,f:ir},"etc2-rgba8unorm-srgb":{gl:37495,f:ir},"eac-r11unorm":{gl:37488,f:ir},"eac-r11snorm":{gl:37489,f:ir},"eac-rg11unorm":{gl:37490,f:ir},"eac-rg11snorm":{gl:37491,f:ir},"astc-4x4-unorm":{gl:37808,f:ce},"astc-4x4-unorm-srgb":{gl:37840,f:ce},"astc-5x4-unorm":{gl:37809,f:ce},"astc-5x4-unorm-srgb":{gl:37841,f:ce},"astc-5x5-unorm":{gl:37810,f:ce},"astc-5x5-unorm-srgb":{gl:37842,f:ce},"astc-6x5-unorm":{gl:37811,f:ce},"astc-6x5-unorm-srgb":{gl:37843,f:ce},"astc-6x6-unorm":{gl:37812,f:ce},"astc-6x6-unorm-srgb":{gl:37844,f:ce},"astc-8x5-unorm":{gl:37813,f:ce},"astc-8x5-unorm-srgb":{gl:37845,f:ce},"astc-8x6-unorm":{gl:37814,f:ce},"astc-8x6-unorm-srgb":{gl:37846,f:ce},"astc-8x8-unorm":{gl:37815,f:ce},"astc-8x8-unorm-srgb":{gl:37847,f:ce},"astc-10x5-unorm":{gl:37819,f:ce},"astc-10x5-unorm-srgb":{gl:37851,f:ce},"astc-10x6-unorm":{gl:37817,f:ce},"astc-10x6-unorm-srgb":{gl:37849,f:ce},"astc-10x8-unorm":{gl:37818,f:ce},"astc-10x8-unorm-srgb":{gl:37850,f:ce},"astc-10x10-unorm":{gl:37819,f:ce},"astc-10x10-unorm-srgb":{gl:37851,f:ce},"astc-12x10-unorm":{gl:37820,f:ce},"astc-12x10-unorm-srgb":{gl:37852,f:ce},"astc-12x12-unorm":{gl:37821,f:ce},"astc-12x12-unorm-srgb":{gl:37853,f:ce},"pvrtc-rgb4unorm-webgl":{gl:35840,f:sl},"pvrtc-rgba4unorm-webgl":{gl:35842,f:sl},"pvrtc-rbg2unorm-webgl":{gl:35841,f:sl},"pvrtc-rgba2unorm-webgl":{gl:35843,f:sl},"etc1-rbg-unorm-webgl":{gl:36196,f:mR},"atc-rgb-unorm-webgl":{gl:35986,f:dd},"atc-rgba-unorm-webgl":{gl:35986,f:dd},"atc-rgbai-unorm-webgl":{gl:34798,f:dd}},AR={6403:1,36244:1,33319:2,33320:2,6407:3,36248:3,6408:4,36249:4,6402:1,34041:1,6406:1,6409:1,6410:2},ER={5126:4,5125:4,5124:4,5123:2,5122:2,5131:2,5120:1,5121:1};function cl(t,e,r){let i=al[e];if(!i||i.gl===void 0)return!1;let s=i.x||i.gl2ext;return s?!!St(t,s,r):!0}function _d(t){let r=al[t]?.gl;if(r===void 0)throw new Error(`Unsupported texture format ${t}`);return r}function my(t,e,r){if(!cl(t,e,r)||e.startsWith("depth")||e.startsWith("stencil"))return!1;try{if(ac(e).signed)return!1}catch{return!1}return e.endsWith("32float")?!!St(t,"OES_texture_float_linear, extensions",r):e.endsWith("16float")?!!St(t,"OES_texture_half_float_linear, extensions",r):!0}function _y(t,e,r){return!(!cl(t,e,r)||typeof e=="number")}function Ms(t){let e=al[t],r=_d(t),i=ac(t);return{format:r,dataFormat:e?.dataFormat||wR(i.format,i.integer,i.normalized,r),type:i.dataType?il(i.dataType):e?.types?.[0]||5121,compressed:i.compressed}}function yy(t){let e=al[t];if(!e?.attachment)throw new Error(`${t} is not a depth stencil format`);return e.attachment}function yd(t){let e=Ms(t),r=AR[e.dataFormat]||4,i=ER[e.type]||1;return r*i}function wR(t,e,r,i){if(i===6408||i===6407)return i;switch(t){case"r":return e&&!r?36244:6403;case"rg":return e&&!r?33320:33319;case"rgb":return e&&!r?36248:6407;case"rgba":return e&&!r?36249:6408;default:return 6408}}var xy={"depth-clip-control":"EXT_depth_clamp","timer-query-webgl":"EXT_disjoint_timer_query_webgl2","compilation-status-async-webgl":"KHR_parallel_shader_compile","polygon-mode-webgl":"WEBGL_polygon_mode","provoking-vertex-webgl":"WEBGL_provoking_vertex","shader-clip-cull-distance-webgl":"WEBGL_clip_cull_distance","shader-noperspective-interpolation-webgl":"NV_shader_noperspective_interpolation","shader-conservative-depth-webgl":"EXT_conservative_depth"},ll=class extends Fn{gl;extensions;testedFeatures=new Set;constructor(e,r,i){super([],i),this.gl=e,this.extensions=r,St(e,"EXT_color_buffer_float",r)}*[Symbol.iterator](){let e=this.getFeatures();for(let r of e)this.has(r)&&(yield r);return[]}has(e){return this.disabledFeatures[e]?!1:(this.testedFeatures.has(e)||(this.testedFeatures.add(e),py(e)&&gy(this.gl,e,this.extensions)&&this.features.add(e),this.getWebGLFeature(e)&&this.features.add(e)),this.features.has(e))}initializeFeatures(){let e=this.getFeatures().filter(r=>r!=="polygon-mode-webgl");for(let r of e)this.has(r)}getFeatures(){return[...Object.keys(xy),...Object.keys(ol)]}getWebGLFeature(e){let r=xy[e];return typeof r=="string"?!!St(this.gl,r,this.extensions):!!r}};var ul=class extends Nn{get maxTextureDimension1D(){return 0}get maxTextureDimension2D(){return this.getParameter(3379)}get maxTextureDimension3D(){return this.getParameter(32883)}get maxTextureArrayLayers(){return this.getParameter(35071)}get maxBindGroups(){return 0}get maxDynamicUniformBuffersPerPipelineLayout(){return 0}get maxDynamicStorageBuffersPerPipelineLayout(){return 0}get maxSampledTexturesPerShaderStage(){return this.getParameter(35660)}get maxSamplersPerShaderStage(){return this.getParameter(35661)}get maxStorageBuffersPerShaderStage(){return 0}get maxStorageTexturesPerShaderStage(){return 0}get maxUniformBuffersPerShaderStage(){return this.getParameter(35375)}get maxUniformBufferBindingSize(){return this.getParameter(35376)}get maxStorageBufferBindingSize(){return 0}get minUniformBufferOffsetAlignment(){return this.getParameter(35380)}get minStorageBufferOffsetAlignment(){return 0}get maxVertexBuffers(){return 16}get maxVertexAttributes(){return this.getParameter(34921)}get maxVertexBufferArrayStride(){return 2048}get maxInterStageShaderComponents(){return this.getParameter(35659)}get maxComputeWorkgroupStorageSize(){return 0}get maxComputeInvocationsPerWorkgroup(){return 0}get maxComputeWorkgroupSizeX(){return 0}get maxComputeWorkgroupSizeY(){return 0}get maxComputeWorkgroupSizeZ(){return 0}get maxComputeWorkgroupsPerDimension(){return 0}gl;limits={};constructor(e){super(),this.gl=e}getParameter(e){return this.limits[e]===void 0&&(this.limits[e]=this.gl.getParameter(e)),this.limits[e]}};function At(t,e,r){if(PR(e))return r(t);let{nocatch:i=!0}=e;Zr(t),Lt(t,e);let s;if(i)s=r(t),Sr(t);else try{s=r(t)}finally{Sr(t)}return s}function PR(t){for(let e in t)return!1;return!0}function vy(t,e,r,i){if(Br(e))return i(t);let s=t;Zr(s.gl);try{return RR(t,e),Lt(s.gl,r),i(t)}finally{Sr(s.gl)}}function RR(t,e){let r=t,{gl:i}=r;if(e.cullMode)switch(e.cullMode){case"none":i.disable(2884);break;case"front":i.enable(2884),i.cullFace(1028);break;case"back":i.enable(2884),i.cullFace(1029);break}if(e.frontFace&&i.frontFace(Ui("frontFace",e.frontFace,{ccw:2305,cw:2304})),e.unclippedDepth&&t.features.has("depth-clip-control")&&i.enable(34383),e.depthBias!==void 0&&(i.enable(32823),i.polygonOffset(e.depthBias,e.depthBiasSlopeScale||0)),e.provokingVertex&&t.features.has("provoking-vertex-webgl")){let n=r.getExtension("WEBGL_provoking_vertex").WEBGL_provoking_vertex,o=Ui("provokingVertex",e.provokingVertex,{first:36429,last:36430});n?.provokingVertexWEBGL(o)}if((e.polygonMode||e.polygonOffsetLine)&&t.features.has("polygon-mode-webgl")){if(e.polygonMode){let n=r.getExtension("WEBGL_polygon_mode").WEBGL_polygon_mode,o=Ui("polygonMode",e.polygonMode,{fill:6914,line:6913});n?.polygonModeWEBGL(1028,o),n?.polygonModeWEBGL(1029,o)}e.polygonOffsetLine&&i.enable(10754)}if(t.features.has("shader-clip-cull-distance-webgl")&&(e.clipDistance0&&i.enable(12288),e.clipDistance1&&i.enable(12289),e.clipDistance2&&i.enable(12290),e.clipDistance3&&i.enable(12291),e.clipDistance4&&i.enable(12292),e.clipDistance5&&i.enable(12293),e.clipDistance6&&i.enable(12294),e.clipDistance7&&i.enable(12295)),e.depthWriteEnabled!==void 0&&i.depthMask(MR("depthWriteEnabled",e.depthWriteEnabled)),e.depthCompare&&(e.depthCompare!=="always"?i.enable(2929):i.disable(2929),i.depthFunc(hl("depthCompare",e.depthCompare))),e.stencilWriteMask){let s=e.stencilWriteMask;i.stencilMaskSeparate(1028,s),i.stencilMaskSeparate(1029,s)}if(e.stencilReadMask&&O.warn("stencilReadMask not supported under WebGL"),e.stencilCompare){let s=e.stencilReadMask||4294967295,n=hl("depthCompare",e.stencilCompare);e.stencilCompare!=="always"?i.enable(2960):i.disable(2960),i.stencilFuncSeparate(1028,n,0,s),i.stencilFuncSeparate(1029,n,0,s)}if(e.stencilPassOperation&&e.stencilFailOperation&&e.stencilDepthFailOperation){let s=xd("stencilPassOperation",e.stencilPassOperation),n=xd("stencilFailOperation",e.stencilFailOperation),o=xd("stencilDepthFailOperation",e.stencilDepthFailOperation);i.stencilOpSeparate(1028,n,o,s),i.stencilOpSeparate(1029,n,o,s)}if(e.blendColorOperation||e.blendAlphaOperation){i.enable(3042);let s=Ty("blendColorOperation",e.blendColorOperation||"add"),n=Ty("blendAlphaOperation",e.blendAlphaOperation||"add");i.blendEquationSeparate(s,n);let o=fl("blendColorSrcFactor",e.blendColorSrcFactor||"one"),a=fl("blendColorDstFactor",e.blendColorDstFactor||"zero"),c=fl("blendAlphaSrcFactor",e.blendAlphaSrcFactor||"one"),l=fl("blendAlphaDstFactor",e.blendAlphaDstFactor||"zero");i.blendFuncSeparate(o,a,c,l)}}function hl(t,e){return Ui(t,e,{never:512,less:513,equal:514,"less-equal":515,greater:516,"not-equal":517,"greater-equal":518,always:519})}function xd(t,e){return Ui(t,e,{keep:7680,zero:0,replace:7681,invert:5386,"increment-clamp":7682,"decrement-clamp":7683,"increment-wrap":34055,"decrement-wrap":34056})}function Ty(t,e){return Ui(t,e,{add:32774,subtract:32778,"reverse-subtract":32779,min:32775,max:32776})}function fl(t,e){return Ui(t,e,{one:1,zero:0,"src-color":768,"one-minus-src-color":769,"dst-color":774,"one-minus-dst-color":775,"src-alpha":770,"one-minus-src-alpha":771,"dst-alpha":772,"one-minus-dst-alpha":773,"src-alpha-saturated":776,"constant-color":32769,"one-minus-constant-color":32770,"constant-alpha":32771,"one-minus-constant-alpha":32772})}function CR(t,e){return`Illegal parameter ${e} for ${t}`}function Ui(t,e,r){if(!(e in r))throw new Error(CR(t,e));return r[e]}function MR(t,e){return e}function dl(t){let e={};return t.addressModeU&&(e[10242]=Td(t.addressModeU)),t.addressModeV&&(e[10243]=Td(t.addressModeV)),t.addressModeW&&(e[32882]=Td(t.addressModeW)),t.magFilter&&(e[10240]=by(t.magFilter)),(t.minFilter||t.mipmapFilter)&&(e[10241]=IR(t.minFilter||"linear",t.mipmapFilter)),t.lodMinClamp!==void 0&&(e[33082]=t.lodMinClamp),t.lodMaxClamp!==void 0&&(e[33083]=t.lodMaxClamp),t.type==="comparison-sampler"&&(e[34892]=34894),t.compare&&(e[34893]=hl("compare",t.compare)),t.maxAnisotropy&&(e[34046]=t.maxAnisotropy),e}function Td(t){switch(t){case"clamp-to-edge":return 33071;case"repeat":return 10497;case"mirror-repeat":return 33648}}function by(t){switch(t){case"nearest":return 9728;case"linear":return 9729}}function IR(t,e){if(!e)return by(t);switch(t){case"nearest":return e==="nearest"?9984:9986;case"linear":return e==="nearest"?9985:9987}}var Xe=class extends ie{device;gl;handle;glTarget;glUsage;glIndexType=5123;byteLength;bytesUsed;constructor(e,r={}){super(e,r),this.device=e,this.gl=this.device.gl;let i=typeof r=="object"?r.handle:void 0;this.handle=i||this.gl.createBuffer(),e.setSpectorMetadata(this.handle,{...this.props,data:typeof this.props.data}),this.glTarget=OR(this.props.usage),this.glUsage=NR(this.props.usage),this.glIndexType=this.props.indexType==="uint32"?5125:5123,r.data?this._initWithData(r.data,r.byteOffset,r.byteLength):this._initWithByteLength(r.byteLength||0)}_initWithData(e,r=0,i=e.byteLength+r){let s=this.glTarget;this.gl.bindBuffer(s,this.handle),this.gl.bufferData(s,i,this.glUsage),this.gl.bufferSubData(s,r,e),this.gl.bindBuffer(s,null),this.bytesUsed=i,this.byteLength=i,this._setDebugData(e,r,i),this.trackAllocatedMemory(i)}_initWithByteLength(e){ee(e>=0);let r=e;e===0&&(r=new Float32Array(0));let i=this.glTarget;return this.gl.bindBuffer(i,this.handle),this.gl.bufferData(i,r,this.glUsage),this.gl.bindBuffer(i,null),this.bytesUsed=e,this.byteLength=e,this._setDebugData(null,0,e),this.trackAllocatedMemory(e),this}destroy(){!this.destroyed&&this.handle&&(this.removeStats(),this.trackDeallocatedMemory(),this.gl.deleteBuffer(this.handle),this.destroyed=!0,this.handle=null)}write(e,r=0){this.gl.bindBuffer(36663,this.handle),this.gl.bufferSubData(36663,r,e),this.gl.bindBuffer(36663,null),this._setDebugData(e,r,e.byteLength)}async readAsync(e=0,r){return this.readSyncWebGL(e,r)}readSyncWebGL(e=0,r){r=r??this.byteLength-e;let i=new Uint8Array(r),s=0;return this.gl.bindBuffer(36662,this.handle),this.gl.getBufferSubData(36662,e,i,s,r),this.gl.bindBuffer(36662,null),this._setDebugData(i,e,r),i}};function OR(t){return t&ie.INDEX?34963:t&ie.VERTEX?34962:t&ie.UNIFORM?35345:34962}function NR(t){return t&ie.INDEX||t&ie.VERTEX?35044:t&ie.UNIFORM?35048:35044}var zi=class extends Si{device;handle;parameters;constructor(e,r){super(e,r),this.device=e,this.parameters=dl(r),this.handle=this.handle||this.device.gl.createSampler(),this._setSamplerParameters(this.parameters)}destroy(){this.handle&&(this.device.gl.deleteSampler(this.handle),this.handle=void 0)}toString(){return`Sampler(${this.id},${JSON.stringify(this.props)})`}_setSamplerParameters(e){for(let[r,i]of Object.entries(e)){let s=Number(r);switch(s){case 33082:case 33083:this.device.gl.samplerParameterf(this.handle,s,i);break;default:this.device.gl.samplerParameteri(this.handle,s,i);break}}}};var kt=class extends vi{device;gl;handle;texture;constructor(e,r){super(e,{...Ae.defaultProps,...r}),this.device=e,this.gl=this.device.gl,this.handle=null,this.texture=r.texture}};var FR={parameters:{},pixelStore:{},pixels:null,border:0,dataFormat:void 0,textureUnit:void 0,target:void 0},Je=class t extends Ae{static FACES=[34069,34070,34071,34072,34073,34074];MAX_ATTRIBUTES;device;gl;handle;sampler=void 0;view=void 0;glFormat=void 0;type=void 0;dataFormat=void 0;mipmaps=void 0;target;textureUnit=void 0;loaded=!1;_video;constructor(e,r){super(e,{...FR,format:"rgba8unorm",...r}),this.device=e,this.gl=this.device.gl,this.handle=this.props.handle||this.gl.createTexture(),this.device.setSpectorMetadata(this.handle,{...this.props,data:typeof this.props.data}),this.glFormat=6408,this.target=DR(this.props),this.loaded=!1,typeof this.props?.data=="string"&&Object.assign(this.props,{data:Ef(this.props.data)}),this.initialize(this.props),Object.seal(this)}destroy(){this.handle&&(this.gl.deleteTexture(this.handle),this.removeStats(),this.trackDeallocatedMemory("Texture"),this.destroyed=!0)}toString(){return`Texture(${this.id},${this.width}x${this.height})`}createView(e){return new kt(this.device,{...e,texture:this})}initialize(e={}){if(this.props.dimension==="cube")return this.initializeCube(e);let r=e.data;if(r instanceof Promise)return r.then(_=>this.initialize(Object.assign({},e,{pixels:_,data:_}))),this;let i=typeof HTMLVideoElement<"u"&&r instanceof HTMLVideoElement;if(i&&r.readyStatethis.initialize(e)),this;let{parameters:s={}}=e,{pixels:n=null,pixelStore:o={},textureUnit:a=void 0,mipmaps:c=!0}=e;r||(r=n);let{width:l,height:u,dataFormat:f,type:h,compressed:d=!1}=e,{depth:p=0}=e,g=_d(e.format);return{width:l,height:u,compressed:d,dataFormat:f,type:h}=this._deduceParameters({format:e.format,type:h,dataFormat:f,compressed:d,data:r,width:l,height:u}),this.width=l,this.height=u,this.glFormat=g,this.type=h,this.dataFormat=f,this.textureUnit=a,Number.isFinite(this.textureUnit)&&(this.gl.activeTexture(33984+this.textureUnit),this.gl.bindTexture(this.target,this.handle)),this.mipmaps=c,this.setImageData({data:r,width:l,height:u,depth:p,format:g,type:h,dataFormat:f,parameters:o,compressed:d}),this.setSampler(e.sampler),this._setSamplerParameters(s),this.view=this.createView({...this.props,mipLevelCount:1,arrayLayerCount:1}),c&&this.device.isTextureFormatFilterable(e.format)&&this.generateMipmap(),i&&(this._video={video:r,parameters:s,lastTime:r.readyState>=HTMLVideoElement.HAVE_CURRENT_DATA?r.currentTime:-1}),this}initializeCube(e){let{mipmaps:r=!0,parameters:i={}}=e;return this.setCubeMapImageData(e).then(()=>{this.loaded=!0,r&&this.generateMipmap(e),this.setSampler(e.sampler),this._setSamplerParameters(i)}),this}setSampler(e={}){let r;e instanceof zi?(this.sampler=e,r=e.props):(this.sampler=new zi(this.device,e),r=e);let i=dl(r);return this._setSamplerParameters(i),this}resize(e){let{height:r,width:i,mipmaps:s=!1}=e;return i!==this.width||r!==this.height?this.initialize({width:i,height:r,format:this.format,type:this.type,dataFormat:this.dataFormat,mipmaps:s}):this}update(){if(this._video){let{video:e,parameters:r,lastTime:i}=this._video;if(i===e.currentTime||e.readyState{this.gl.generateMipmap(this.target)}),this.gl.bindTexture(this.target,null),this}setImageData(e){if(this.props.dimension==="3d"||this.props.dimension==="2d-array")return this.setImageData3D(e);this.trackDeallocatedMemory("Texture");let{target:r=this.target,pixels:i=null,level:s=0,glFormat:n=this.glFormat,offset:o=0,parameters:a={}}=e,{data:c=null,type:l=this.type,width:u=this.width,height:f=this.height,dataFormat:h=this.dataFormat,compressed:d=!1}=e;c||(c=i),{type:l,dataFormat:h,compressed:d,width:u,height:f}=this._deduceParameters({format:this.props.format,type:l,dataFormat:h,compressed:d,data:c,width:u,height:f});let{gl:p}=this;p.bindTexture(this.target,this.handle);let g=null;if({data:c,dataType:g}=this._getDataType({data:c,compressed:d}),At(this.gl,a,()=>{switch(g){case"null":p.texImage2D(r,s,n,u,f,0,h,l,c);break;case"typed-array":p.texImage2D(r,s,n,u,f,0,h,l,c,o);break;case"buffer":this.device.gl.bindBuffer(35052,c.handle||c),this.device.gl.texImage2D(r,s,n,u,f,0,h,l,o),this.device.gl.bindBuffer(35052,null);break;case"browser-object":p.texImage2D(r,s,n,u,f,0,h,l,c);break;case"compressed":for(let[_,x]of c.entries())p.compressedTexImage2D(r,_,x.format,x.width,x.height,0,x.data);break;default:ee(!1,"Unknown image data type")}}),c&&c.byteLength)this.trackAllocatedMemory(c.byteLength,"Texture");else{let _=yd(this.props.format);this.trackAllocatedMemory(this.width*this.height*_,"Texture")}return this.loaded=!0,this}setSubImageData({target:e=this.target,pixels:r=null,data:i=null,x:s=0,y:n=0,width:o=this.width,height:a=this.height,level:c=0,glFormat:l=this.glFormat,type:u=this.type,dataFormat:f=this.dataFormat,compressed:h=!1,offset:d=0,parameters:p={}}){if({type:u,dataFormat:f,compressed:h,width:o,height:a}=this._deduceParameters({format:this.props.format,type:u,dataFormat:f,compressed:h,data:i,width:o,height:a}),ee(this.depth===1,"texSubImage not supported for 3D textures"),i||(i=r),i&&i.data){let g=i;i=g.data,o=g.shape[0],a=g.shape[1]}i instanceof Xe&&(i=i.handle),this.gl.bindTexture(this.target,this.handle),At(this.gl,p,()=>{h?this.gl.compressedTexSubImage2D(e,c,s,n,o,a,l,i):i===null?this.gl.texSubImage2D(e,c,s,n,o,a,f,u,null):ArrayBuffer.isView(i)?this.gl.texSubImage2D(e,c,s,n,o,a,f,u,i,d):typeof WebGLBuffer<"u"&&i instanceof WebGLBuffer?(this.device.gl.bindBuffer(35052,i),this.device.gl.texSubImage2D(e,c,s,n,o,a,f,u,d),this.device.gl.bindBuffer(35052,null)):this.device.gl.texSubImage2D(e,c,s,n,o,a,f,u,i)}),this.gl.bindTexture(this.target,null)}copyFramebuffer(e={}){return O.error("Texture.copyFramebuffer({...}) is no logner supported, use copyToTexture(source, target, opts})")(),null}getActiveUnit(){return this.gl.getParameter(34016)-33984}bind(e=this.textureUnit){let{gl:r}=this;return e!==void 0&&(this.textureUnit=e,r.activeTexture(33984+e)),r.bindTexture(this.target,this.handle),e}unbind(e=this.textureUnit){let{gl:r}=this;return e!==void 0&&(this.textureUnit=e,r.activeTexture(33984+e)),r.bindTexture(this.target,null),e}_getDataType({data:e,compressed:r=!1}){return r?{data:e,dataType:"compressed"}:e===null?{data:e,dataType:"null"}:ArrayBuffer.isView(e)?{data:e,dataType:"typed-array"}:e instanceof Xe?{data:e.handle,dataType:"buffer"}:typeof WebGLBuffer<"u"&&e instanceof WebGLBuffer?{data:e,dataType:"buffer"}:{data:e,dataType:"browser-object"}}_deduceParameters(e){let{format:r,data:i}=e,{width:s,height:n,dataFormat:o,type:a,compressed:c}=e,l=Ms(r);return o=o||l.dataFormat,a=a||l.type,c=c||l.compressed,{width:s,height:n}=this._deduceImageSize(i,s,n),{dataFormat:o,type:a,compressed:c,width:s,height:n,format:r,data:i}}_deduceImageSize(e,r,i){let s;return typeof ImageData<"u"&&e instanceof ImageData?s={width:e.width,height:e.height}:typeof HTMLImageElement<"u"&&e instanceof HTMLImageElement?s={width:e.naturalWidth,height:e.naturalHeight}:typeof HTMLCanvasElement<"u"&&e instanceof HTMLCanvasElement?s={width:e.width,height:e.height}:typeof ImageBitmap<"u"&&e instanceof ImageBitmap?s={width:e.width,height:e.height}:typeof HTMLVideoElement<"u"&&e instanceof HTMLVideoElement?s={width:e.videoWidth,height:e.videoHeight}:e?s={width:r,height:i}:s={width:r>=0?r:1,height:i>=0?i:1},ee(s,"Could not deduced texture size"),ee(r===void 0||s.width===r,"Deduced texture width does not match supplied width"),ee(i===void 0||s.height===i,"Deduced texture height does not match supplied height"),s}async setCubeMapImageData(e){let{gl:r}=this,{width:i,height:s,pixels:n,data:o,format:a=6408,type:c=5121}=e,l=n||o,u=await Promise.all(t.FACES.map(f=>{let h=l[f];return Promise.all(Array.isArray(h)?h:[h])}));this.bind(),t.FACES.forEach((f,h)=>{u[h].length>1&&this.props.mipmaps!==!1&&O.warn(`${this.id} has mipmap and multiple LODs.`)(),u[h].forEach((d,p)=>{i&&s?r.texImage2D(f,p,a,i,s,0,a,c,d):r.texImage2D(f,p,a,a,c,d)})}),this.unbind()}setImageDataForFace(e){let{face:r,width:i,height:s,pixels:n,data:o,format:a=6408,type:c=5121}=e,{gl:l}=this,u=n||o;return this.bind(),u instanceof Promise?u.then(f=>this.setImageDataForFace(Object.assign({},e,{face:r,data:f,pixels:f}))):this.width||this.height?l.texImage2D(r,0,a,i,s,0,a,c,u):l.texImage2D(r,0,a,a,c,u),this}setImageData3D(e){let{level:r=0,dataFormat:i,format:s,type:n,width:o,height:a,depth:c=1,offset:l=0,data:u,parameters:f={}}=e;this.trackDeallocatedMemory("Texture"),this.gl.bindTexture(this.target,this.handle);let h=Ms(s);if(At(this.gl,f,()=>{ArrayBuffer.isView(u)&&this.gl.texImage3D(this.target,r,h.format,o,a,c,0,h.dataFormat,h.type,u),u instanceof Xe&&(this.gl.bindBuffer(35052,u.handle),this.gl.texImage3D(this.target,r,i,o,a,c,0,s,n,l))}),u&&u.byteLength)this.trackAllocatedMemory(u.byteLength,"Texture");else{let d=yd(this.props.format);this.trackAllocatedMemory(this.width*this.height*this.depth*d,"Texture")}return this.loaded=!0,this}_setSamplerParameters(e){if(!Br(e)){LR(e),this.gl.bindTexture(this.target,this.handle);for(let[r,i]of Object.entries(e)){let s=Number(r),n=i;switch(s){case 33082:case 33083:this.gl.texParameterf(this.target,s,n);break;default:this.gl.texParameteri(this.target,s,n);break}}this.gl.bindTexture(this.target,null)}}};function DR(t){switch(t.dimension){case"2d":return 3553;case"cube":return 34067;case"2d-array":return 35866;case"3d":return 32879;case"1d":case"cube-array":default:throw new Error(t.dimension)}}function LR(t){O.log(1,"texture sampler parameters",t)()}var sr=class extends Ai{device;gl;handle;get texture(){return this.colorAttachments[0]}constructor(e,r){super(e,r);let i=r.handle===null;if(this.device=e,this.gl=e.gl,this.handle=this.props.handle||i?this.props.handle:this.gl.createFramebuffer(),!i){e.setSpectorMetadata(this.handle,{id:this.props.id,props:this.props}),this.autoCreateAttachmentTextures();let s=this.gl.bindFramebuffer(36160,this.handle);for(let n=0;nO.info("Spector capture started:",e)()),Qe?.onCapture.add(e=>{O.info("Spector capture complete:",e)(),Qe?.getResultUI(),Qe?.resultView.display(),Qe?.resultView.addCapture(e)})),t?.canvas){if(typeof t.spector=="string"&&t.spector!==t.canvas.id)return Qe;Qe?.startCapture(t?.canvas,500),new Promise(e=>setTimeout(e,2e3)).then(e=>{O.info("Spector capture stopped after 2 seconds")(),Qe?.stopCapture()})}return Qe}var WR="https://unpkg.com/webgl-debug@2.0.1/index.js";function wy(t){return t.luma=t.luma||{},t.luma}async function Py(){ke()&&!globalThis.WebGLDebugUtils&&(globalThis.global=globalThis.global||globalThis,globalThis.global.module={},await Xn(WR))}function Ry(t,e={}){return t?e.debug?jR(t,e):HR(t):null}function HR(t){let e=wy(t);return e.realContext?e.realContext:t}function jR(t,e){if(!globalThis.WebGLDebugUtils)return O.warn("webgl-debug not loaded")(),t;let r=wy(t);if(r.debugContext)return r.debugContext;globalThis.WebGLDebugUtils.init({...Gr,...t});let i=globalThis.WebGLDebugUtils.makeDebugContext(t,XR.bind(null,e),$R.bind(null,e));for(let o in Gr)!(o in i)&&typeof Gr[o]=="number"&&(i[o]=Gr[o]);class s{}Object.setPrototypeOf(i,Object.getPrototypeOf(t)),Object.setPrototypeOf(s,i);let n=Object.create(s);return r.realContext=t,r.debugContext=n,n.debug=!0,n}function vd(t,e){e=Array.from(e).map(i=>i===void 0?"undefined":i);let r=globalThis.WebGLDebugUtils.glFunctionArgsToString(t,e);return r=`${r.slice(0,100)}${r.length>100?"...":""}`,`gl.${t}(${r})`}function XR(t,e,r,i){i=Array.from(i).map(a=>a===void 0?"undefined":a);let s=globalThis.WebGLDebugUtils.glEnumToString(e),n=globalThis.WebGLDebugUtils.glFunctionArgsToString(r,i),o=`${s} in gl.${r}(${n})`;O.error(o)();debugger;if(t.throwOnError)throw new Error(o)}function $R(t,e,r){let i="";if(O.level>=1&&(i=vd(e,r),O.log(1,i)()),t.break&&t.break.length>0&&(i=i||vd(e,r),t.break.every(n=>i.indexOf(n)!==-1)))debugger;for(let s of r)if(s===void 0){if(i=i||vd(e,r),t.throwOnError)throw new Error(`Undefined argument: ${i}`);O.error(`Undefined argument: ${i}`)();debugger}}function My(t){let e=t.split(/\r?\n/),r=[];for(let i of e){if(i.length<=1)continue;let s=i.split(":");if(s.length===2){let[f,h]=s;r.push({message:h.trim(),type:Cy(f),lineNum:0,linePos:0});continue}let[n,o,a,...c]=s,l=parseInt(a,10);isNaN(l)&&(l=0);let u=parseInt(o,10);isNaN(u)&&(u=0),r.push({message:c.join(":").trim(),type:Cy(n),lineNum:l,linePos:u})}return r}function Cy(t){let e=["warning","error","info"],r=t.toLowerCase();return e.includes(r)?r:"info"}var gl=class extends bi{device;handle;constructor(e,r){switch(super(e,r),this.device=e,this.props.stage){case"vertex":this.handle=this.props.handle||this.device.gl.createShader(35633);break;case"fragment":this.handle=this.props.handle||this.device.gl.createShader(35632);break;default:throw new Error(this.props.stage)}this._compile(this.source)}destroy(){this.handle&&(this.removeStats(),this.device.gl.deleteShader(this.handle),this.destroyed=!0)}async getCompilationInfo(){return await this._waitForCompilationComplete(),this.getCompilationInfoSync()}getCompilationInfoSync(){let e=this.device.gl.getShaderInfoLog(this.handle);return My(e)}getTranslatedSource(){return this.device.getExtension("WEBGL_debug_shaders").WEBGL_debug_shaders?.getTranslatedShaderSource(this.handle)}async _compile(e){e=(s=>s.startsWith("#version ")?s:`#version 100
-${s}`)(e);let{gl:i}=this.device;if(i.shaderSource(this.handle,e),i.compileShader(this.handle),O.level===0){this.compilationStatus="pending";return}if(!this.device.features.has("compilation-status-async-webgl")){if(this._getCompilationStatus(),this.debugShader(),this.compilationStatus==="error")throw new Error(`GLSL compilation errors in ${this.props.stage} shader ${this.props.id}`);return}O.once(1,"Shader compilation is asynchronous")(),await this._waitForCompilationComplete(),O.info(2,`Shader ${this.id} - async compilation complete: ${this.compilationStatus}`)(),this._getCompilationStatus(),this.debugShader()}async _waitForCompilationComplete(){let e=async s=>await new Promise(n=>setTimeout(n,s));if(!this.device.features.has("compilation-status-async-webgl")){await e(10);return}let{gl:i}=this.device;for(;;){if(i.getShaderParameter(this.handle,37297))return;await e(10)}}_getCompilationStatus(){this.compilationStatus=this.device.gl.getShaderParameter(this.handle,35713)?"success":"error"}};var YR=256,KR=1024,qR=16384,bd=6144,GR=[1,2,4,8],ml=class extends Ln{device;glParameters;constructor(e,r){super(e,r),this.device=e,Zr(this.device.gl),this.setParameters(this.props.parameters),this.clear()}end(){Sr(this.device.gl)}pushDebugGroup(e){}popDebugGroup(){}insertDebugMarker(e){}setParameters(e={}){let r={...this.glParameters};this.props.framebuffer&&(r.framebuffer=this.props.framebuffer),this.props.depthReadOnly&&(r.depthMask=!this.props.depthReadOnly),r.stencilMask=this.props.stencilReadOnly?0:1,r[35977]=this.props.discard,e.viewport&&(e.viewport.length>=6?(r.viewport=e.viewport.slice(0,4),r.depthRange=[e.viewport[4],e.viewport[5]]):r.viewport=e.viewport),e.scissorRect&&(r.scissorTest=!0,r.scissor=e.scissorRect),e.blendConstant&&(r.blendColor=e.blendConstant),e.stencilReference&&(console.warn("RenderPassParameters.stencilReference not yet implemented in WebGL"),e[2967]=e.stencilReference),e.colorMask&&(r.colorMask=GR.map(i=>!!(i&e.colorMask))),this.glParameters=r,Lt(this.device.gl,r)}beginOcclusionQuery(e){this.props.occlusionQuerySet?.beginOcclusionQuery()}endOcclusionQuery(){this.props.occlusionQuerySet?.endOcclusionQuery()}clear(){let e={...this.glParameters},r=0;this.props.clearColor!==!1&&(r|=qR,e.clearColor=this.props.clearColor),this.props.clearDepth!==!1&&(r|=YR,e.clearDepth=this.props.clearDepth),this.props.clearStencil!==!1&&(r|=KR,e.clearStencil=this.props.clearStencil),r!==0&&At(this.device.gl,e,()=>{this.device.gl.clear(r)})}clearColorBuffer(e=0,r=[0,0,0,0]){At(this.device.gl,{framebuffer:this.props.framebuffer},()=>{switch(r.constructor){case Int32Array:this.device.gl.clearBufferiv(bd,e,r);break;case Uint32Array:this.device.gl.clearBufferuiv(bd,e,r);break;case Float32Array:default:this.device.gl.clearBufferfv(bd,e,r);break}})}};var ZR="Failed to deduce GL constant from typed array";function Iy(t){switch(ArrayBuffer.isView(t)?t.constructor:t){case Float32Array:return 5126;case Uint16Array:return 5123;case Uint32Array:return 5125;case Uint8Array:return 5121;case Uint8ClampedArray:return 5121;case Int8Array:return 5120;case Int16Array:return 5122;case Int32Array:return 5124;default:throw new Error(ZR)}}function Mo(t,e){let{clamped:r=!0}=e||{};switch(t){case 5126:return Float32Array;case 5123:case 33635:case 32819:case 32820:return Uint16Array;case 5125:return Uint32Array;case 5121:return r?Uint8ClampedArray:Uint8Array;case 5120:return Int8Array;case 5122:return Int16Array;case 5124:return Int32Array;default:throw new Error("Failed to deduce typed array type from GL constant")}}var JR={offset:0,stride:0,type:5126,size:1,divisor:0,normalized:!1,integer:!1},QR={deprecatedProps:{instanced:"divisor",isInstanced:"divisor"}},_l=class t{offset;stride;type;size;divisor;normalized;integer;buffer;index;static getBytesPerElement(e){return Mo(e.type||5126).BYTES_PER_ELEMENT}static getBytesPerVertex(e){return ee(e.size),Mo(e.type||5126).BYTES_PER_ELEMENT*e.size}static resolve(...e){return new t(JR,...e)}constructor(...e){e.forEach(r=>this._assign(r)),Object.freeze(this)}toString(){return JSON.stringify(this)}get BYTES_PER_ELEMENT(){return t.getBytesPerElement(this)}get BYTES_PER_VERTEX(){return t.getBytesPerVertex(this)}_assign(e={}){return e=Af("Accessor",e,QR),e.type!==void 0&&(this.type=e.type,(e.type===5124||e.type===5125)&&(this.integer=!0)),e.size!==void 0&&(this.size=e.size),e.offset!==void 0&&(this.offset=e.offset),e.stride!==void 0&&(this.stride=e.stride),e.normalize!==void 0&&(this.normalized=e.normalize),e.normalized!==void 0&&(this.normalized=e.normalized),e.integer!==void 0&&(this.integer=e.integer),e.divisor!==void 0&&(this.divisor=e.divisor),e.buffer!==void 0&&(this.buffer=e.buffer),e.index!==void 0&&(typeof e.index=="boolean"?this.index=e.index?1:0:this.index=e.index),e.instanced!==void 0&&(this.divisor=e.instanced?1:0),e.isInstanced!==void 0&&(this.divisor=e.isInstanced?1:0),this.offset===void 0&&delete this.offset,this.stride===void 0&&delete this.stride,this.type===void 0&&delete this.type,this.size===void 0&&delete this.size,this.divisor===void 0&&delete this.divisor,this.normalized===void 0&&delete this.normalized,this.integer===void 0&&delete this.integer,this.buffer===void 0&&delete this.buffer,this.index===void 0&&delete this.index,this}};function Oy(t){return eC.includes(t)}var eC=[35678,35680,35679,35682,36289,36292,36293,36298,36299,36300,36303,36306,36307,36308,36311],Ny={5126:[5126,1,"float","f32","float32"],35664:[5126,2,"vec2","vec2","float32x2"],35665:[5126,3,"vec3","vec3","float32x3"],35666:[5126,4,"vec4","vec4","float32x4"],5124:[5124,1,"int","i32","sint32"],35667:[5124,2,"ivec2","vec2","sint32x2"],35668:[5124,3,"ivec3","vec3","sint32x3"],35669:[5124,4,"ivec4","vec4","sint32x4"],5125:[5125,1,"uint","u32","uint32"],36294:[5125,2,"uvec2","vec2","uint32x2"],36295:[5125,3,"uvec3","vec3","uint32x3"],36296:[5125,4,"uvec4","vec4","uint32x4"],35670:[5126,1,"bool","f32","float32"],35671:[5126,2,"bvec2","vec2","float32x2"],35672:[5126,3,"bvec3","vec3","float32x3"],35673:[5126,4,"bvec4","vec4","float32x4"],35674:[5126,8,"mat2","mat2x2"],35685:[5126,8,"mat2x3","mat2x3"],35686:[5126,8,"mat2x4","mat2x4"],35687:[5126,12,"mat3x2","mat3x2"],35675:[5126,12,"mat3","mat3x3"],35688:[5126,12,"mat3x4","mat3x4"],35689:[5126,16,"mat4x2","mat4x2"],35690:[5126,16,"mat4x3","mat4x3"],35676:[5126,16,"mat4","mat4x4"]};function Sd(t){let e=Ny[t];if(!e)throw new Error("uniform");let[r,i,,s]=e;return{format:s,components:i,glType:r}}function Fy(t){let e=Ny[t];if(!e)throw new Error("attribute");let[,r,,i,s]=e;return{attributeType:i,vertexFormat:s,components:r}}function Dy(t,e){let r={attributes:[],bindings:[]};r.attributes=tC(t,e);let i=sC(t,e);for(let a of i){let c=a.uniforms.map(l=>({name:l.name,format:l.format,byteOffset:l.byteOffset,byteStride:l.byteStride,arrayLength:l.arrayLength}));r.bindings.push({type:"uniform",name:a.name,location:a.location,visibility:(a.vertex?1:0)&(a.fragment?2:0),minBindingSize:a.byteLength,uniforms:c})}let s=iC(t,e),n=0;for(let a of s)if(Oy(a.type)){let{viewDimension:c,sampleType:l}=oC(a.type);r.bindings.push({type:"texture",name:a.name,location:n,viewDimension:c,sampleType:l}),a.textureUnit=n,n+=1}s.length&&(r.uniforms=s);let o=rC(t,e);return o?.length&&(r.varyings=o),r}function tC(t,e){let r=[],i=t.getProgramParameter(e,35721);for(let s=0;s=0){let{attributeType:l}=Fy(a),u=/instance/i.test(o)?"instance":"vertex";r.push({name:o,location:c,stepMode:u,type:l})}}return r.sort((s,n)=>s.location-n.location),r}function rC(t,e){let r=[],i=t.getProgramParameter(e,35971);for(let s=0;ss.location-n.location),r}function iC(t,e){let r=[],i=t.getProgramParameter(e,35718);for(let s=0;s1)for(let d=0;dt.getActiveUniformBlockParameter(e,n,o),i=[],s=t.getProgramParameter(e,35382);for(let n=0;nn.location-o.location),i}var nC={35678:["2d","float"],35680:["cube","float"],35679:["3d","float"],35682:["3d","depth"],36289:["2d-array","float"],36292:["2d-array","depth"],36293:["cube","float"],36298:["2d","sint"],36299:["3d","sint"],36300:["cube","sint"],36303:["2d-array","uint"],36306:["2d","uint"],36307:["3d","uint"],36308:["cube","uint"],36311:["2d-array","uint"]};function oC(t){let e=nC[t];if(!e)throw new Error("sampler");let[r,i]=e;return{viewDimension:r,sampleType:i}}function aC(t){if(t[t.length-1]!=="]")return{name:t,length:1,isArray:!1};let r=/([^[]*)(\[[0-9]+\])?/.exec(t);if(!r||r.length<2)throw new Error(`Failed to parse GLSL uniform name ${t}`);return{name:r[1],length:r[2]?1:0,isArray:!!r[2]}}function Ly(t,e,r,i){let s=t,n=i;n===!0&&(n=1),n===!1&&(n=0);let o=typeof n=="number"?[n]:n;switch(r){case 35678:case 35680:case 35679:case 35682:case 36289:case 36292:case 36293:case 36298:case 36299:case 36300:case 36303:case 36306:case 36307:case 36308:case 36311:if(typeof i!="number")throw new Error("samplers must be set to integers");return t.uniform1i(e,i);case 5126:return t.uniform1fv(e,o);case 35664:return t.uniform2fv(e,o);case 35665:return t.uniform3fv(e,o);case 35666:return t.uniform4fv(e,o);case 5124:return t.uniform1iv(e,o);case 35667:return t.uniform2iv(e,o);case 35668:return t.uniform3iv(e,o);case 35669:return t.uniform4iv(e,o);case 35670:return t.uniform1iv(e,o);case 35671:return t.uniform2iv(e,o);case 35672:return t.uniform3iv(e,o);case 35673:return t.uniform4iv(e,o);case 5125:return s.uniform1uiv(e,o,1);case 36294:return s.uniform2uiv(e,o,2);case 36295:return s.uniform3uiv(e,o,3);case 36296:return s.uniform4uiv(e,o,4);case 35674:return t.uniformMatrix2fv(e,!1,o);case 35675:return t.uniformMatrix3fv(e,!1,o);case 35676:return t.uniformMatrix4fv(e,!1,o);case 35685:return s.uniformMatrix2x3fv(e,!1,o);case 35686:return s.uniformMatrix2x4fv(e,!1,o);case 35687:return s.uniformMatrix3x2fv(e,!1,o);case 35688:return s.uniformMatrix3x4fv(e,!1,o);case 35689:return s.uniformMatrix4x2fv(e,!1,o);case 35690:return s.uniformMatrix4x3fv(e,!1,o)}throw new Error("Illegal uniform")}function ky(t){switch(t){case"point-list":return 0;case"line-list":return 1;case"line-strip":return 3;case"line-loop-webgl":return 2;case"triangle-list":return 4;case"triangle-strip":return 5;case"triangle-fan-webgl":return 6;default:throw new Error(t)}}function By(t){switch(t){case"point-list":return 0;case"line-list":return 1;case"line-strip":return 1;case"line-loop-webgl":return 1;case"triangle-list":return 4;case"triangle-strip":return 4;case"triangle-fan-webgl":return 4;default:throw new Error(t)}}var Uy=4,yl=class extends qt{device;handle;vs;fs;introspectedLayout;uniforms={};bindings={};varyings=null;_uniformCount=0;_uniformSetters={};constructor(e,r){super(e,r),this.device=e,this.handle=this.props.handle||this.device.gl.createProgram(),this.device.setSpectorMetadata(this.handle,{id:this.props.id}),this.vs=r.vs,this.fs=r.fs;let{varyings:i,bufferMode:s=35981}=r;switch(i&&i.length>0&&(this.varyings=i,this.device.gl.transformFeedbackVaryings(this.handle,i,s)),this._linkShaders(),O.time(1,`RenderPipeline ${this.id} - shaderLayout introspection`)(),this.introspectedLayout=Dy(this.device.gl,this.handle),O.timeEnd(1,`RenderPipeline ${this.id} - shaderLayout introspection`)(),this.shaderLayout=Tf(this.introspectedLayout,r.shaderLayout),this.props.topology){case"triangle-fan-webgl":case"line-loop-webgl":O.warn(`Primitive topology ${this.props.topology} is deprecated and will be removed in v9.1`);break;default:}}destroy(){this.handle&&(this.device.gl.deleteProgram(this.handle),this.destroyed=!0)}setBindings(e,r){for(let[i,s]of Object.entries(e)){let n=this.shaderLayout.bindings.find(o=>o.name===i)||this.shaderLayout.bindings.find(o=>o.name===`${i}Uniforms`);if(!n){let o=this.shaderLayout.bindings.map(a=>`"${a.name}"`).join(", ");r?.disableWarnings||O.warn(`Unknown binding "${i}" in render pipeline "${this.id}", expected one of ${o}`)();continue}switch(s||O.warn(`Unsetting binding "${i}" in render pipeline "${this.id}"`)(),n.type){case"uniform":if(!(s instanceof Xe)&&!(s.buffer instanceof Xe))throw new Error("buffer value");break;case"texture":if(!(s instanceof kt||s instanceof Je||s instanceof sr))throw new Error("texture value");break;case"sampler":O.warn(`Ignoring sampler ${i}`)();break;default:throw new Error(n.type)}this.bindings[i]=s}}draw(e){let{renderPass:r,parameters:i=this.props.parameters,topology:s=this.props.topology,vertexArray:n,vertexCount:o,instanceCount:a,isInstanced:c=!1,firstVertex:l=0,transformFeedback:u}=e,f=ky(s),h=!!n.indexBuffer,d=n.indexBuffer?.glIndexType;if(this.linkStatus!=="success")return O.info(2,`RenderPipeline:${this.id}.draw() aborted - waiting for shader linking`)(),!1;if(!this._areTexturesRenderable()||o===0)return O.info(2,`RenderPipeline:${this.id}.draw() aborted - textures not yet loaded`)(),!1;if(o===0)return O.info(2,`RenderPipeline:${this.id}.draw() aborted - no vertices to draw`)(),!0;this.device.gl.useProgram(this.handle),n.bindBeforeRender(r),u&&u.begin(this.props.topology),this._applyBindings(),this._applyUniforms();let p=r;return vy(this.device,i,p.glParameters,()=>{h&&c?this.device.gl.drawElementsInstanced(f,o||0,d,l,a||0):h?this.device.gl.drawElements(f,o||0,d,l):c?this.device.gl.drawArraysInstanced(f,l,o||0,a||0):this.device.gl.drawArrays(f,l,o||0),u&&u.end()}),n.unbindAfterRender(r),!0}setUniformsWebGL(e){let{bindings:r}=jn(e);Object.keys(r).forEach(i=>{O.warn(`Unsupported value "${JSON.stringify(r[i])}" used in setUniforms() for key ${i}. Use setBindings() instead?`)()}),Object.assign(this.uniforms,e)}async _linkShaders(){let{gl:e}=this.device;if(e.attachShader(this.handle,this.vs.handle),e.attachShader(this.handle,this.fs.handle),O.time(Uy,`linkProgram for ${this.id}`)(),e.linkProgram(this.handle),O.timeEnd(Uy,`linkProgram for ${this.id}`)(),O.level,!this.device.features.has("compilation-status-async-webgl")){let i=this._getLinkStatus();this._reportLinkStatus(i);return}O.once(1,"RenderPipeline linking is asynchronous")(),await this._waitForLinkComplete(),O.info(2,`RenderPipeline ${this.id} - async linking complete: ${this.linkStatus}`)();let r=this._getLinkStatus();this._reportLinkStatus(r)}_reportLinkStatus(e){switch(e){case"success":return;default:throw this.vs.compilationStatus==="error"?(this.vs.debugShader(),new Error(`Error during compilation of shader ${this.vs.id}`)):this.fs?.compilationStatus==="error"?(this.fs.debugShader(),new Error(`Error during compilation of shader ${this.fs.id}`)):new Error(`Error during ${e}: ${this.device.gl.getProgramInfoLog(this.handle)}`)}}_getLinkStatus(){let{gl:e}=this.device;return e.getProgramParameter(this.handle,35714)?(e.validateProgram(this.handle),e.getProgramParameter(this.handle,35715)?(this.linkStatus="success","success"):(this.linkStatus="error","validation")):(this.linkStatus="error","linking")}async _waitForLinkComplete(){let e=async s=>await new Promise(n=>setTimeout(n,s));if(!this.device.features.has("compilation-status-async-webgl")){await e(10);return}let{gl:i}=this.device;for(;;){if(i.getProgramParameter(this.handle,37297))return;await e(10)}}_areTexturesRenderable(){let e=!0;for(let[,r]of Object.entries(this.bindings))r instanceof Je&&(r.update(),e=e&&r.loaded);return e}_applyBindings(){if(this.linkStatus!=="success")return;let{gl:e}=this.device;e.useProgram(this.handle);let r=0,i=0;for(let s of this.shaderLayout.bindings){let n=this.bindings[s.name]||this.bindings[s.name.replace(/Uniforms$/,"")];if(!n)throw new Error(`No value for binding ${s.name} in ${this.id}`);switch(s.type){case"uniform":let{name:o}=s,a=e.getUniformBlockIndex(this.handle,o);if(a===4294967295)throw new Error(`Invalid uniform block name ${o}`);e.uniformBlockBinding(this.handle,i,a),n instanceof Xe?e.bindBufferBase(35345,i,n.handle):e.bindBufferRange(35345,i,n.buffer.handle,n.offset||0,n.size||n.buffer.byteLength-n.offset),i+=1;break;case"texture":if(!(n instanceof kt||n instanceof Je||n instanceof sr))throw new Error("texture");let c;if(n instanceof kt)c=n.texture;else if(n instanceof Je)c=n;else if(n instanceof sr&&n.colorAttachments[0]instanceof kt)O.warn("Passing framebuffer in texture binding may be deprecated. Use fbo.colorAttachments[0] instead")(),c=n.colorAttachments[0].texture;else throw new Error("No texture");e.activeTexture(33984+r),e.bindTexture(c.target,c.handle),r+=1;break;case"sampler":break;case"storage":case"read-only-storage":throw new Error(`binding type '${s.type}' not supported in WebGL`)}}}_applyUniforms(){for(let e of this.shaderLayout.uniforms||[]){let{name:r,location:i,type:s,textureUnit:n}=e,o=this.uniforms[r]??n;o!==void 0&&Ly(this.device.gl,i,s,o)}}};var xl=class extends Bn{device;commands=[];constructor(e){super(e,{}),this.device=e}submitCommands(e=this.commands){for(let r of e)switch(r.name){case"copy-buffer-to-buffer":cC(this.device,r.options);break;case"copy-buffer-to-texture":lC(this.device,r.options);break;case"copy-texture-to-buffer":uC(this.device,r.options);break;case"copy-texture-to-texture":fC(this.device,r.options);break}}};function cC(t,e){let r=e.source,i=e.destination;t.gl.bindBuffer(36662,r.handle),t.gl.bindBuffer(36663,i.handle),t.gl.copyBufferSubData(36662,36663,e.sourceOffset??0,e.destinationOffset??0,e.size),t.gl.bindBuffer(36662,null),t.gl.bindBuffer(36663,null)}function lC(t,e){throw new Error("Not implemented")}function uC(t,e){let{source:r,mipLevel:i=0,aspect:s="all",width:n=e.source.width,height:o=e.source.height,depthOrArrayLayers:a=0,origin:c=[0,0],destination:l,byteOffset:u=0,bytesPerRow:f,rowsPerImage:h}=e;if(s!=="all")throw new Error("not supported");if(i!==0||a!==0||f||h)throw new Error("not implemented");let{framebuffer:d,destroyFramebuffer:p}=zy(r),g;try{let _=l,x=n||d.width,v=o||d.height,b=Ms(d.texture.props.format),A=b.dataFormat,C=b.type;t.gl.bindBuffer(35051,_.handle),g=t.gl.bindFramebuffer(36160,d.handle),t.gl.readPixels(c[0],c[1],x,v,A,C,u)}finally{t.gl.bindBuffer(35051,null),g!==void 0&&t.gl.bindFramebuffer(36160,g),p&&d.destroy()}}function fC(t,e){let{source:r,destinationMipLevel:i=0,origin:s=[0,0],destinationOrigin:n=[0,0],destination:o}=e,{width:a=e.destination.width,height:c=e.destination.height}=e,{framebuffer:l,destroyFramebuffer:u}=zy(r),[f,h]=s,[d,p,g]=n,_=t.gl.bindFramebuffer(36160,l.handle),x=null,v;if(o instanceof Je)x=o,a=Number.isFinite(a)?a:x.width,c=Number.isFinite(c)?c:x.height,x.bind(0),v=x.target;else throw new Error("invalid destination");switch(v){case 3553:case 34067:t.gl.copyTexSubImage2D(v,i,d,p,f,h,a,c);break;case 35866:case 32879:t.gl.copyTexSubImage3D(v,i,d,p,g,f,h,a,c);break;default:}x&&x.unbind(),t.gl.bindFramebuffer(36160,_),u&&l.destroy()}function zy(t){if(t instanceof Ae){let{width:e,height:r,id:i}=t;return{framebuffer:t.device.createFramebuffer({id:`framebuffer-for-${i}`,width:e,height:r,colorAttachments:[t]}),destroyFramebuffer:!0}}return{framebuffer:t,destroyFramebuffer:!1}}var Tl=class extends kn{device;commandBuffer;constructor(e,r){super(e,r),this.device=e,this.commandBuffer=new xl(e)}destroy(){}finish(){this.commandBuffer.submitCommands()}copyBufferToBuffer(e){this.commandBuffer.commands.push({name:"copy-buffer-to-buffer",options:e})}copyBufferToTexture(e){this.commandBuffer.commands.push({name:"copy-buffer-to-texture",options:e})}copyTextureToBuffer(e){this.commandBuffer.commands.push({name:"copy-texture-to-buffer",options:e})}copyTextureToTexture(e){this.commandBuffer.commands.push({name:"copy-texture-to-texture",options:e})}pushDebugGroup(e){}popDebugGroup(){}insertDebugMarker(e){}resolveQuerySet(e,r,i){}};var vl=class t extends Un{get[Symbol.toStringTag](){return"VertexArray"}device;handle;buffer=null;bufferValue=null;static isConstantAttributeZeroSupported(e){return Pu()==="Chrome"}constructor(e,r){super(e,r),this.device=e,this.handle=this.device.gl.createVertexArray()}destroy(){super.destroy(),this.buffer&&this.buffer?.destroy(),this.handle&&(this.device.gl.deleteVertexArray(this.handle),this.handle=void 0)}setIndexBuffer(e){let r=e;if(r&&r.glTarget!==34963)throw new Error("Use .setBuffer()");this.device.gl.bindVertexArray(this.handle),this.device.gl.bindBuffer(34963,r?r.handle:null),this.indexBuffer=r,this.device.gl.bindVertexArray(null)}setBuffer(e,r){let i=r;if(i.glTarget===34963)throw new Error("Use .setIndexBuffer()");let{size:s,type:n,stride:o,offset:a,normalized:c,integer:l,divisor:u}=this._getAccessor(e);this.device.gl.bindVertexArray(this.handle),this.device.gl.bindBuffer(34962,i.handle),l?this.device.gl.vertexAttribIPointer(e,s,n,o,a):this.device.gl.vertexAttribPointer(e,s,n,c,o,a),this.device.gl.bindBuffer(34962,null),this.device.gl.enableVertexAttribArray(e),this.device.gl.vertexAttribDivisor(e,u||0),this.attributes[e]=i,this.device.gl.bindVertexArray(null)}setConstantWebGL(e,r){this._enable(e,!1),this.attributes[e]=r}bindBeforeRender(){this.device.gl.bindVertexArray(this.handle),this._applyConstantAttributes()}unbindAfterRender(){this.device.gl.bindVertexArray(null)}_applyConstantAttributes(){for(let e=0;e{for(let r in e)this.setBuffer(r,e[r])})}setBuffer(e,r){let i=this._getVaryingIndex(e),{buffer:s,byteLength:n,byteOffset:o}=this._getBufferRange(r);if(i<0){this.unusedBuffers[e]=s,O.warn(`${this.id} unusedBuffers varying buffer ${e}`)();return}this.buffers[i]={buffer:s,byteLength:n,byteOffset:o},this.bindOnUse||this._bindBuffer(i,s,o,n)}getBuffer(e){if(Vy(e))return this.buffers[e]||null;let r=this._getVaryingIndex(e);return r>=0?this.buffers[r]:null}bind(e=this.handle){if(typeof e!="function")return this.gl.bindTransformFeedback(36386,e),this;let r;return this._bound?r=e():(this.gl.bindTransformFeedback(36386,this.handle),this._bound=!0,r=e(),this._bound=!1,this.gl.bindTransformFeedback(36386,null)),r}unbind(){this.bind(null)}_getBufferRange(e){if(e instanceof Xe)return{buffer:e,byteOffset:0,byteLength:e.byteLength};let{buffer:r,byteOffset:i=0,byteLength:s=e.buffer.byteLength}=e;return{buffer:r,byteOffset:i,byteLength:s}}_getVaryingIndex(e){if(Vy(e))return Number(e);for(let r of this.layout.varyings)if(e===r.name)return r.location;return-1}_bindBuffers(){for(let e in this.buffers){let{buffer:r,byteLength:i,byteOffset:s}=this._getBufferRange(this.buffers[e]);this._bindBuffer(Number(e),r,s,i)}}_unbindBuffers(){for(let e in this.buffers)this.gl.bindBufferBase(35982,Number(e),null)}_bindBuffer(e,r,i=0,s){let n=r&&r.handle;!n||s===void 0?this.gl.bindBufferBase(35982,e,n):this.gl.bindBufferRange(35982,e,n,i,s)}};function Vy(t){return typeof t=="number"?Number.isInteger(t):/^\d+$/.test(t)}var Sl=class extends Vn{device;handle;target=null;_queryPending=!1;_pollingPromise=null;get[Symbol.toStringTag](){return"Query"}constructor(e,r){if(super(e,r),this.device=e,r.count>1)throw new Error("WebGL QuerySet can only have one value");this.handle=this.device.gl.createQuery(),Object.seal(this)}destroy(){this.device.gl.deleteQuery(this.handle)}beginTimestampQuery(){return this._begin(35007)}endTimestampQuery(){this._end()}beginOcclusionQuery(e){return this._begin(e?.conservative?36202:35887)}endOcclusionQuery(){this._end()}beginTransformFeedbackQuery(){return this._begin(35976)}endTransformFeedbackQuery(){this._end()}async resolveQuery(){return[await this.pollQuery()]}_begin(e){this._queryPending||(this.target=e,this.device.gl.beginQuery(this.target,this.handle))}_end(){this._queryPending||this.target&&(this.device.gl.endQuery(this.target),this.target=null,this._queryPending=!0)}isResultAvailable(){if(!this._queryPending)return!1;let e=this.device.gl.getQueryParameter(this.handle,34919);return e&&(this._queryPending=!1),e}isTimerDisjoint(){return this.device.gl.getParameter(36795)}getResult(){return this.device.gl.getQueryParameter(this.handle,34918)}getTimerMilliseconds(){return this.getResult()/1e6}pollQuery(e=Number.POSITIVE_INFINITY){if(this._pollingPromise)return this._pollingPromise;let r=0;return this._pollingPromise=new Promise((i,s)=>{let n=()=>{this.isResultAvailable()?(i(this.getResult()),this._pollingPromise=null):r++>e?(s("Timed out"),this._pollingPromise=null):requestAnimationFrame(n)};requestAnimationFrame(n)}),this._pollingPromise}};function Ad(t){switch(t){case 6406:case 33326:case 6403:return 1;case 33328:case 33319:return 2;case 6407:case 34837:return 3;case 6408:case 34836:return 4;default:return ee(!1),0}}function Wy(t){switch(t){case 5121:return 1;case 33635:case 32819:case 32820:return 2;case 5126:return 4;default:return ee(!1),0}}function Hy(t,e){let{sourceX:r=0,sourceY:i=0,sourceFormat:s=6408,sourceAttachment:n=36064}=e||{},{target:o=null,sourceWidth:a,sourceHeight:c,sourceType:l}=e||{},{framebuffer:u,deleteFramebuffer:f}=Xy(t);ee(u);let{gl:h,handle:d}=u;a=a||u.width,c=c||u.height;let p=n-36064;l=l||u.colorAttachments[p]?.texture?.type||5121,o=gC(o,l,s,a,c),l=l||Iy(o);let g=h.bindFramebuffer(36160,d);return h.readPixels(r,i,a,c,s,l,o),h.bindFramebuffer(36160,g||null),f&&u.destroy(),o}function jy(t,e){let{target:r,sourceX:i=0,sourceY:s=0,sourceFormat:n=6408,targetByteOffset:o=0}=e||{},{sourceWidth:a,sourceHeight:c,sourceType:l}=e||{},{framebuffer:u,deleteFramebuffer:f}=Xy(t);ee(u),a=a||u.width,c=c||u.height;let h=u;l=l||5121;let d=r;if(!d){let g=Ad(n),_=Wy(l),x=o+a*c*g*_;d=h.device.createBuffer({byteLength:x})}let p=t.device.createCommandEncoder();return p.copyTextureToBuffer({source:t,width:a,height:c,origin:[i,s],destination:d,byteOffset:o}),p.destroy(),f&&u.destroy(),d}function Xy(t){return t instanceof Ai?{framebuffer:t,deleteFramebuffer:!1}:{framebuffer:pC(t),deleteFramebuffer:!0}}function pC(t,e){let{device:r,width:i,height:s,id:n}=t;return r.createFramebuffer({...e,id:`framebuffer-for-${n}`,width:i,height:s,colorAttachments:[t]})}function gC(t,e,r,i,s){if(t)return t;e=e||5121;let n=Mo(e,{clamped:!1}),o=Ad(r);return new n(i*s*o)}var mC=256,_C=1024,yC=16384;var xC="clear: bad arguments";function $y(t,e){let{framebuffer:r=null,color:i=null,depth:s=null,stencil:n=null}=e||{},o={};r&&(o.framebuffer=r);let a=0;i&&(a|=yC,i!==!0&&(o.clearColor=i)),s&&(a|=mC,s!==!0&&(o.clearDepth=s)),n&&(a|=_C,s!==!0&&(o.clearStencil=s)),ee(a!==0,xC);let c=t.gl;At(c,o,()=>{c.clear(a)})}var Io=1,Vi=class t extends hr{static type="webgl";type="webgl";handle;features;limits;info;canvasContext;lost;_resolveContextLost;static isSupported(){return typeof WebGL2RenderingContext<"u"}static attach(e){if(e instanceof t)return e;if(e?.device instanceof hr)return e.device;if(!TC(e))throw new Error("Invalid WebGL2RenderingContext");return new t({gl:e})}static async create(e={}){O.groupCollapsed(Io,"WebGLDevice created")();let r=[];e.debug&&r.push(Py()),e.spector&&r.push(Ay()),typeof e.canvas=="string"&&r.push(Ti.pageLoaded);let i=await Promise.allSettled(r);for(let o of i)o.status==="rejected"&&O.error(`Failed to initialize debug libraries ${o.reason}`)();if(O.probe(Io+1,"DOM is loaded")(),e.gl?.device)return O.warn("reattaching existing device")(),t.attach(e.gl);let s=new t(e),n=`Created ${s.type}${s.debug?" debug":""} context: ${s.info.vendor}, ${s.info.renderer} for canvas: ${s.canvasContext.id}`;return O.probe(Io,n)(),O.table(Io,s.info)(),O.groupEnd(Io)(),s}constructor(e){super({...e,id:e.id||Fe("webgl-device")});let r=e.gl?.device;if(r)throw new Error(`WebGL context already attached to device ${r.id}`);let i=e.gl?.canvas||e.canvas;this.canvasContext=new pl(this,{...e,canvas:i}),this.lost=new Promise(a=>{this._resolveContextLost=a});let s=e.gl||null;if(s||=cy(this.canvasContext.canvas,{...e,onContextLost:a=>this._resolveContextLost?.({reason:"destroyed",message:"Entered sleep mode, or too many apps or browser tabs are using the GPU."})}),!s)throw new Error("WebGL context creation failed");this.handle=s,this.gl=s,this.gl.device=this,this.gl._version=2,e.spector&&(this.spectorJS=Ey({...this.props,canvas:this.handle.canvas})),this.info=ly(this.gl,this._extensions),this.limits=new ul(this.gl),this.features=new ll(this.gl,this._extensions,this.props.disabledFeatures),this.props.initalizeFeatures&&this.features.initializeFeatures(),this.canvasContext.resize();let{enable:n=!0,copyState:o=!1}=e;hd(this.gl,{enable:n,copyState:o,log:(...a)=>O.log(1,...a)()}),e.debug&&(this.gl=Ry(this.gl,{...e,throwOnError:!0}),this.debug=!0,O.level=Math.max(O.level,1),O.warn("WebGL debug mode activated. Performance reduced.")())}destroy(){}get isLost(){return this.gl.isContextLost()}getSize(){return[this.gl.drawingBufferWidth,this.gl.drawingBufferHeight]}isTextureFormatSupported(e){return cl(this.gl,e,this._extensions)}isTextureFormatFilterable(e){return my(this.gl,e,this._extensions)}isTextureFormatRenderable(e){return _y(this.gl,e,this._extensions)}createCanvasContext(e){throw new Error("WebGL only supports a single canvas")}createBuffer(e){let r=this._getBufferProps(e);return new Xe(this,r)}_createTexture(e){return new Je(this,e)}createExternalTexture(e){throw new Error("createExternalTexture() not implemented")}createSampler(e){return new zi(this,e)}createShader(e){return new gl(this,e)}createFramebuffer(e){return new sr(this,e)}createVertexArray(e){return new vl(this,e)}createTransformFeedback(e){return new bl(this,e)}createQuerySet(e){return new Sl(this,e)}createRenderPipeline(e){return new yl(this,e)}beginRenderPass(e){return new ml(this,e)}createComputePipeline(e){throw new Error("ComputePipeline not supported in WebGL")}beginComputePass(e){throw new Error("ComputePass not supported in WebGL")}renderPass=null;createCommandEncoder(e){return new Tl(this,e)}submit(){this.renderPass?.end(),this.renderPass=null}readPixelsToArrayWebGL(e,r){return Hy(e,r)}readPixelsToBufferWebGL(e,r){return jy(e,r)}setParametersWebGL(e){Lt(this.gl,e)}getParametersWebGL(e){return rl(this.gl,e)}withParametersWebGL(e,r){return At(this.gl,e,r)}clearWebGL(e){$y(this,e)}resetWebGL(){O.warn("WebGLDevice.resetWebGL is deprecated, use only for debugging")(),ny(this.gl)}gl;debug=!1;_canvasSizeInfo={clientWidth:0,clientHeight:0,devicePixelRatio:1};_extensions={};_polyfilled=!1;spectorJS;loseDevice(){let e=!1,i=this.getExtension("WEBGL_lose_context").WEBGL_lose_context;return i&&(e=!0,i.loseContext()),this._resolveContextLost?.({reason:"destroyed",message:"Application triggered context loss"}),e}pushState(){Zr(this.gl)}popState(){Sr(this.gl)}setSpectorMetadata(e,r){e.__SPECTOR_Metadata=r}getGLKey(e,r){r=r||this.gl2||this.gl;let i=Number(e);for(let s in r)if(r[s]===i)return`GL.${s}`;return String(e)}_constants;setConstantAttributeWebGL(e,r){let i=this.limits.maxVertexAttributes;this._constants=this._constants||new Array(i).fill(null);let s=this._constants[e];switch(s&&AC(s,r)&&O.info(1,`setConstantAttributeWebGL(${e}) could have been skipped, value unchanged`)(),this._constants[e]=r,r.constructor){case Float32Array:vC(this,e,r);break;case Int32Array:bC(this,e,r);break;case Uint32Array:SC(this,e,r);break;default:ee(!1)}}getExtension(e){return St(this.gl,e,this._extensions),this._extensions}};function TC(t){return typeof WebGL2RenderingContext<"u"&&t instanceof WebGL2RenderingContext?!0:!!(t&&Number.isFinite(t._version))}function vC(t,e,r){switch(r.length){case 1:t.gl.vertexAttrib1fv(e,r);break;case 2:t.gl.vertexAttrib2fv(e,r);break;case 3:t.gl.vertexAttrib3fv(e,r);break;case 4:t.gl.vertexAttrib4fv(e,r);break;default:ee(!1)}}function bC(t,e,r){t.gl.vertexAttribI4iv(e,r)}function SC(t,e,r){t.gl.vertexAttribI4uiv(e,r)}function AC(t,e){if(!t||!e||t.length!==e.length||t.constructor!==e.constructor)return!1;for(let r=0;r0&&i.type==="pointerdown"&&(wC(s,n=>n.pointerId===i.pointerId)||s.push(i)),e.call(this,i)}}function qy(t){t.prototype.handler=function(r){let i=EC[r.type];i&1&&r.button>=0&&(this.pressed=!0),i&2&&r.buttons===0&&(i=4),this.pressed&&(i&4&&(this.pressed=!1),this.callback(this.manager,i,{pointers:[r],changedPointers:[r],pointerType:"mouse",srcEvent:r}))}}Ky(Wi.PointerEventInput);qy(Wi.MouseInput);var Gy=Wi.Manager,Bt=Wi;var Ut=class{constructor(e,r,i){this.element=e,this.callback=r,this.options={enable:!0,...i}}};var Zy=Bt?[[Bt.Pan,{event:"tripan",pointers:3,threshold:0,enable:!1}],[Bt.Rotate,{enable:!1}],[Bt.Pinch,{enable:!1}],[Bt.Swipe,{enable:!1}],[Bt.Pan,{threshold:0,enable:!1}],[Bt.Press,{enable:!1}],[Bt.Tap,{event:"doubletap",taps:2,enable:!1}],[Bt.Tap,{event:"anytap",enable:!1}],[Bt.Tap,{enable:!1}]]:null,Ed={tripan:["rotate","pinch","pan"],rotate:["pinch"],pinch:["pan"],pan:["press","doubletap","anytap","tap"],doubletap:["anytap"],anytap:["tap"]},Jy={doubletap:["tap"]},Qy={pointerdown:"pointerdown",pointermove:"pointermove",pointerup:"pointerup",touchstart:"pointerdown",touchmove:"pointermove",touchend:"pointerup",mousedown:"pointerdown",mousemove:"pointermove",mouseup:"pointerup"},Is={KEY_EVENTS:["keydown","keyup"],MOUSE_EVENTS:["mousedown","mousemove","mouseup","mouseover","mouseout","mouseleave"],WHEEL_EVENTS:["wheel","mousewheel"]},ex={tap:"tap",anytap:"anytap",doubletap:"doubletap",press:"press",pinch:"pinch",pinchin:"pinch",pinchout:"pinch",pinchstart:"pinch",pinchmove:"pinch",pinchend:"pinch",pinchcancel:"pinch",rotate:"rotate",rotatestart:"rotate",rotatemove:"rotate",rotateend:"rotate",rotatecancel:"rotate",tripan:"tripan",tripanstart:"tripan",tripanmove:"tripan",tripanup:"tripan",tripandown:"tripan",tripanleft:"tripan",tripanright:"tripan",tripanend:"tripan",tripancancel:"tripan",pan:"pan",panstart:"pan",panmove:"pan",panup:"pan",pandown:"pan",panleft:"pan",panright:"pan",panend:"pan",pancancel:"pan",swipe:"swipe",swipeleft:"swipe",swiperight:"swipe",swipeup:"swipe",swipedown:"swipe"},wd={click:"tap",anyclick:"anytap",dblclick:"doubletap",mousedown:"pointerdown",mousemove:"pointermove",mouseup:"pointerup",mouseover:"pointerover",mouseout:"pointerout",mouseleave:"pointerleave"};var tx=typeof navigator<"u"&&navigator.userAgent?navigator.userAgent.toLowerCase():"",Hi=typeof window<"u"?window:global;var El=!1;try{let t={get passive(){return El=!0,!0}};Hi.addEventListener("test",null,t),Hi.removeEventListener("test",null)}catch{El=!1}var PC=tx.indexOf("firefox")!==-1,{WHEEL_EVENTS:RC}=Is,rx="wheel",ix=4.000244140625,CC=40,MC=.25,Oo=class extends Ut{constructor(e,r,i){super(e,r,i),this.handleEvent=s=>{if(!this.options.enable)return;let n=s.deltaY;Hi.WheelEvent&&(PC&&s.deltaMode===Hi.WheelEvent.DOM_DELTA_PIXEL&&(n/=Hi.devicePixelRatio),s.deltaMode===Hi.WheelEvent.DOM_DELTA_LINE&&(n*=CC)),n!==0&&n%ix===0&&(n=Math.floor(n/ix)),s.shiftKey&&n&&(n=n*MC),this.callback({type:rx,center:{x:s.clientX,y:s.clientY},delta:-n,srcEvent:s,pointerType:"mouse",target:s.target})},this.events=(this.options.events||[]).concat(RC),this.events.forEach(s=>e.addEventListener(s,this.handleEvent,El?{passive:!1}:!1))}destroy(){this.events.forEach(e=>this.element.removeEventListener(e,this.handleEvent))}enableEventType(e,r){e===rx&&(this.options.enable=r)}};var{MOUSE_EVENTS:IC}=Is,sx="pointermove",nx="pointerover",ox="pointerout",ax="pointerenter",cx="pointerleave",No=class extends Ut{constructor(e,r,i){super(e,r,i),this.handleEvent=n=>{this.handleOverEvent(n),this.handleOutEvent(n),this.handleEnterEvent(n),this.handleLeaveEvent(n),this.handleMoveEvent(n)},this.pressed=!1;let{enable:s}=this.options;this.enableMoveEvent=s,this.enableLeaveEvent=s,this.enableEnterEvent=s,this.enableOutEvent=s,this.enableOverEvent=s,this.events=(this.options.events||[]).concat(IC),this.events.forEach(n=>e.addEventListener(n,this.handleEvent))}destroy(){this.events.forEach(e=>this.element.removeEventListener(e,this.handleEvent))}enableEventType(e,r){e===sx&&(this.enableMoveEvent=r),e===nx&&(this.enableOverEvent=r),e===ox&&(this.enableOutEvent=r),e===ax&&(this.enableEnterEvent=r),e===cx&&(this.enableLeaveEvent=r)}handleOverEvent(e){this.enableOverEvent&&e.type==="mouseover"&&this._emit(nx,e)}handleOutEvent(e){this.enableOutEvent&&e.type==="mouseout"&&this._emit(ox,e)}handleEnterEvent(e){this.enableEnterEvent&&e.type==="mouseenter"&&this._emit(ax,e)}handleLeaveEvent(e){this.enableLeaveEvent&&e.type==="mouseleave"&&this._emit(cx,e)}handleMoveEvent(e){if(this.enableMoveEvent)switch(e.type){case"mousedown":e.button>=0&&(this.pressed=!0);break;case"mousemove":e.buttons===0&&(this.pressed=!1),this.pressed||this._emit(sx,e);break;case"mouseup":this.pressed=!1;break;default:}}_emit(e,r){this.callback({type:e,center:{x:r.clientX,y:r.clientY},srcEvent:r,pointerType:"mouse",target:r.target})}};var{KEY_EVENTS:OC}=Is,lx="keydown",ux="keyup",Fo=class extends Ut{constructor(e,r,i){super(e,r,i),this.handleEvent=s=>{let n=s.target||s.srcElement;n.tagName==="INPUT"&&n.type==="text"||n.tagName==="TEXTAREA"||(this.enableDownEvent&&s.type==="keydown"&&this.callback({type:lx,srcEvent:s,key:s.key,target:s.target}),this.enableUpEvent&&s.type==="keyup"&&this.callback({type:ux,srcEvent:s,key:s.key,target:s.target}))},this.enableDownEvent=this.options.enable,this.enableUpEvent=this.options.enable,this.events=(this.options.events||[]).concat(OC),e.tabIndex=this.options.tabIndex||0,e.style.outline="none",this.events.forEach(s=>e.addEventListener(s,this.handleEvent))}destroy(){this.events.forEach(e=>this.element.removeEventListener(e,this.handleEvent))}enableEventType(e,r){e===lx&&(this.enableDownEvent=r),e===ux&&(this.enableUpEvent=r)}};var fx="contextmenu",Do=class extends Ut{constructor(e,r,i){super(e,r,i),this.handleEvent=s=>{this.options.enable&&this.callback({type:fx,center:{x:s.clientX,y:s.clientY},srcEvent:s,pointerType:"mouse",target:s.target})},e.addEventListener("contextmenu",this.handleEvent)}destroy(){this.element.removeEventListener("contextmenu",this.handleEvent)}enableEventType(e,r){e===fx&&(this.options.enable=r)}};var NC={pointerdown:1,pointermove:2,pointerup:4,mousedown:1,mousemove:2,mouseup:4},FC=0,DC=1,LC=2,kC=1,BC=2,UC=4;function hx(t){let e=NC[t.srcEvent.type];if(!e)return null;let{buttons:r,button:i}=t.srcEvent,s=!1,n=!1,o=!1;return e===2?(s=!!(r&kC),n=!!(r&UC),o=!!(r&BC)):(s=i===FC,n=i===DC,o=i===LC),{leftButton:s,middleButton:n,rightButton:o}}function dx(t,e){let r=t.center;if(!r)return null;let i=e.getBoundingClientRect(),s=i.width/e.offsetWidth||1,n=i.height/e.offsetHeight||1,o={x:(r.x-i.left-e.clientLeft)/s,y:(r.y-i.top-e.clientTop)/n};return{center:r,offsetCenter:o}}var Pd={srcElement:"root",priority:0},Lo=class{constructor(e){this.handleEvent=r=>{if(this.isEmpty())return;let i=this._normalizeEvent(r),s=r.srcEvent.target;for(;s&&s!==i.rootElement;){if(this._emit(i,s),i.handled)return;s=s.parentNode}this._emit(i,"root")},this.eventManager=e,this.handlers=[],this.handlersByElement=new Map,this._active=!1}isEmpty(){return!this._active}add(e,r,i,s=!1,n=!1){let{handlers:o,handlersByElement:a}=this,c=Pd;typeof i=="string"||i&&i.addEventListener?c={...Pd,srcElement:i}:i&&(c={...Pd,...i});let l=a.get(c.srcElement);l||(l=[],a.set(c.srcElement,l));let u={type:e,handler:r,srcElement:c.srcElement,priority:c.priority};s&&(u.once=!0),n&&(u.passive=!0),o.push(u),this._active=this._active||!u.passive;let f=l.length-1;for(;f>=0&&!(l[f].priority>=u.priority);)f--;l.splice(f+1,0,u)}remove(e,r){let{handlers:i,handlersByElement:s}=this;for(let n=i.length-1;n>=0;n--){let o=i[n];if(o.type===e&&o.handler===r){i.splice(n,1);let a=s.get(o.srcElement);a.splice(a.indexOf(o),1),a.length===0&&s.delete(o.srcElement)}}this._active=i.some(n=>!n.passive)}_emit(e,r){let i=this.handlersByElement.get(r);if(i){let s=!1,n=()=>{e.handled=!0},o=()=>{e.handled=!0,s=!0},a=[];for(let c=0;c{e.srcEvent.preventDefault()},stopImmediatePropagation:null,stopPropagation:null,handled:!1,rootElement:r}}};var zC={events:null,recognizers:null,recognizerOptions:{},Manager:Gy,touchAction:"none",tabIndex:0},Os=class{constructor(e=null,r){this._onBasicInput=s=>{let{srcEvent:n}=s,o=Qy[n.type];o&&this.manager.emit(o,s)},this._onOtherEvent=s=>{this.manager.emit(s.type,s)},this.options={...zC,...r},this.events=new Map,this.setElement(e);let{events:i}=this.options;i&&this.on(i)}getElement(){return this.element}setElement(e){if(this.element&&this.destroy(),this.element=e,!e)return;let{options:r}=this,i=r.Manager;this.manager=new i(e,{touchAction:r.touchAction,recognizers:r.recognizers||Zy}).on("hammer.input",this._onBasicInput),r.recognizers||Object.keys(Ed).forEach(s=>{let n=this.manager.get(s);n&&Ed[s].forEach(o=>{n.recognizeWith(o)})});for(let s in r.recognizerOptions){let n=this.manager.get(s);if(n){let o=r.recognizerOptions[s];delete o.enable,n.set(o)}}this.wheelInput=new Oo(e,this._onOtherEvent,{enable:!1}),this.moveInput=new No(e,this._onOtherEvent,{enable:!1}),this.keyInput=new Fo(e,this._onOtherEvent,{enable:!1,tabIndex:r.tabIndex}),this.contextmenuInput=new Do(e,this._onOtherEvent,{enable:!1});for(let[s,n]of this.events)n.isEmpty()||(this._toggleRecognizer(n.recognizerName,!0),this.manager.on(s,n.handleEvent))}destroy(){this.element&&(this.wheelInput.destroy(),this.moveInput.destroy(),this.keyInput.destroy(),this.contextmenuInput.destroy(),this.manager.destroy(),this.wheelInput=null,this.moveInput=null,this.keyInput=null,this.contextmenuInput=null,this.manager=null,this.element=null)}on(e,r,i){this._addEventHandler(e,r,i,!1)}once(e,r,i){this._addEventHandler(e,r,i,!0)}watch(e,r,i){this._addEventHandler(e,r,i,!1,!0)}off(e,r){this._removeEventHandler(e,r)}_toggleRecognizer(e,r){let{manager:i}=this;if(!i)return;let s=i.get(e);if(s&&s.options.enable!==r){s.set({enable:r});let n=Jy[e];n&&!this.options.recognizers&&n.forEach(o=>{let a=i.get(o);r?(a.requireFailure(e),s.dropRequireFailure(o)):a.dropRequireFailure(e)})}this.wheelInput.enableEventType(e,r),this.moveInput.enableEventType(e,r),this.keyInput.enableEventType(e,r),this.contextmenuInput.enableEventType(e,r)}_addEventHandler(e,r,i,s,n){if(typeof e!="string"){i=r;for(let u in e)this._addEventHandler(u,e[u],i,s,n);return}let{manager:o,events:a}=this,c=wd[e]||e,l=a.get(c);l||(l=new Lo(this),a.set(c,l),l.recognizerName=ex[c]||c,o&&o.on(c,l.handleEvent)),l.add(e,r,i,s,n),l.isEmpty()||this._toggleRecognizer(l.recognizerName,!0)}_removeEventHandler(e,r){if(typeof e!="string"){for(let o in e)this._removeEventHandler(o,e[o]);return}let{events:i}=this,s=wd[e]||e,n=i.get(s);if(n&&(n.remove(e,r),n.isEmpty())){let{recognizerName:o}=n,a=!1;for(let c of i.values())if(c.recognizerName===o&&!c.isEmpty()){a=!0;break}a||this._toggleRecognizer(o,!1)}}};function Jr(){}var VC=({isDragging:t})=>t?"grabbing":"grab",px={id:"",width:"100%",height:"100%",style:null,viewState:null,initialViewState:null,pickingRadius:0,layerFilter:null,parameters:{},parent:null,device:null,deviceProps:{type:"webgl"},gl:null,glOptions:{},canvas:null,layers:[],effects:[],views:null,controller:null,useDevicePixels:!0,touchAction:"none",eventRecognizerOptions:{},_framebuffer:null,_animate:!1,_pickable:!0,_typedArrayManagerProps:{},_customRender:null,widgets:[],onDeviceInitialized:Jr,onWebGLInitialized:Jr,onResize:Jr,onViewStateChange:Jr,onInteractionStateChange:Jr,onBeforeRender:Jr,onAfterRender:Jr,onLoad:Jr,onError:t=>U.error(t.message,t.cause)(),onHover:null,onClick:null,onDragStart:null,onDrag:null,onDragEnd:null,_onMetrics:null,getCursor:VC,getTooltip:null,debug:!1,drawPickingColors:!1},Ar=class{static{this.defaultProps=px}static{this.VERSION=Gg}constructor(e){this.width=0,this.height=0,this.userData={},this.device=null,this.canvas=null,this.viewManager=null,this.layerManager=null,this.effectManager=null,this.deckRenderer=null,this.deckPicker=null,this.eventManager=null,this.widgetManager=null,this.tooltip=null,this.animationLoop=null,this.cursorState={isHovering:!1,isDragging:!1},this.stats=new dt({id:"deck.gl"}),this.metrics={fps:0,setPropsTime:0,updateAttributesTime:0,framesRedrawn:0,pickTime:0,pickCount:0,gpuTime:0,gpuTimePerFrame:0,cpuTime:0,cpuTimePerFrame:0,bufferMemory:0,textureMemory:0,renderbufferMemory:0,gpuMemory:0},this._metricsCounter=0,this._needsRedraw="Initial render",this._pickRequest={mode:"hover",x:-1,y:-1,radius:0,event:null},this._lastPointerDownInfo=null,this._onPointerMove=i=>{let{_pickRequest:s}=this;if(i.type==="pointerleave")s.x=-1,s.y=-1,s.radius=0;else{if(i.leftButton||i.rightButton)return;{let n=i.offsetCenter;if(!n)return;s.x=n.x,s.y=n.y,s.radius=this.props.pickingRadius}}this.layerManager&&(this.layerManager.context.mousePosition={x:s.x,y:s.y}),s.event=i},this._onEvent=i=>{let s=Jn[i.type],n=i.offsetCenter;if(!s||!n||!this.layerManager)return;let o=this.layerManager.getLayers(),a=this.deckPicker.getLastPickedObject({x:n.x,y:n.y,layers:o,viewports:this.getViewports(n)},this._lastPointerDownInfo),{layer:c}=a,l=c&&(c[s.handler]||c.props[s.handler]),u=this.props[s.handler],f=!1;l&&(f=l.call(c,a,i)),f||(u?.(a,i),this.widgetManager.onEvent(a,i))},this._onPointerDown=i=>{let s=i.offsetCenter,n=this._pick("pickObject","pickObject Time",{x:s.x,y:s.y,radius:this.props.pickingRadius});this._lastPointerDownInfo=n.result[0]||n.emptyInfo},this.props={...px,...e},e=this.props,e.viewState&&e.initialViewState&&U.warn("View state tracking is disabled. Use either `initialViewState` for auto update or `viewState` for manual update.")(),this.viewState=this.props.initialViewState,e.device?this.device=e.device:e.gl&&(e.gl instanceof WebGLRenderingContext&&U.error("WebGL1 context not supported.")(),this.device=Vi.attach(e.gl));let r=this.device;r||(dr.registerDevices([Vi]),r=dr.createDevice({...e.deviceProps,canvas:this._createCanvas(e)})),this.animationLoop=this._createAnimationLoop(r,e),this.setProps(e),e._typedArrayManagerProps&&Nt.setOptions(e._typedArrayManagerProps),this.animationLoop.start()}finalize(){this.animationLoop?.stop(),this.animationLoop?.destroy(),this.animationLoop=null,this._lastPointerDownInfo=null,this.layerManager?.finalize(),this.layerManager=null,this.viewManager?.finalize(),this.viewManager=null,this.effectManager?.finalize(),this.effectManager=null,this.deckRenderer?.finalize(),this.deckRenderer=null,this.deckPicker?.finalize(),this.deckPicker=null,this.eventManager?.destroy(),this.eventManager=null,this.widgetManager?.finalize(),this.widgetManager=null,!this.props.canvas&&!this.props.device&&!this.props.gl&&this.canvas&&(this.canvas.parentElement?.removeChild(this.canvas),this.canvas=null)}setProps(e){this.stats.get("setProps Time").timeStart(),"onLayerHover"in e&&U.removed("onLayerHover","onHover")(),"onLayerClick"in e&&U.removed("onLayerClick","onClick")(),e.initialViewState&&!Le(this.props.initialViewState,e.initialViewState,3)&&(this.viewState=e.initialViewState),Object.assign(this.props,e),this._setCanvasSize(this.props);let r=Object.create(this.props);Object.assign(r,{views:this._getViews(),width:this.width,height:this.height,viewState:this._getViewState()}),this.animationLoop?.setProps(r),this.layerManager&&(this.viewManager.setProps(r),this.layerManager.activateViewport(this.getViewports()[0]),this.layerManager.setProps(r),this.effectManager.setProps(r),this.deckRenderer.setProps(r),this.deckPicker.setProps(r),this.widgetManager.setProps(r)),this.stats.get("setProps Time").timeEnd()}needsRedraw(e={clearRedrawFlags:!1}){if(!this.layerManager)return!1;if(this.props._animate)return"Deck._animate";let r=this._needsRedraw;e.clearRedrawFlags&&(this._needsRedraw=!1);let i=this.viewManager.needsRedraw(e),s=this.layerManager.needsRedraw(e),n=this.effectManager.needsRedraw(e),o=this.deckRenderer.needsRedraw(e);return r=r||i||s||n||o,r}redraw(e){if(!this.layerManager)return;let r=this.needsRedraw({clearRedrawFlags:!0});r=e||r,r&&(this.stats.get("Redraw Count").incrementCount(),this.props._customRender?this.props._customRender(r):this._drawLayers(r))}get isInitialized(){return this.viewManager!==null}getViews(){return oe(this.viewManager),this.viewManager.views}getViewports(e){return oe(this.viewManager),this.viewManager.getViewports(e)}getCanvas(){return this.canvas}pickObject(e){let r=this._pick("pickObject","pickObject Time",e).result;return r.length?r[0]:null}pickMultipleObjects(e){return e.depth=e.depth||10,this._pick("pickObject","pickMultipleObjects Time",e).result}pickObjects(e){return this._pick("pickObjects","pickObjects Time",e)}_addResources(e,r=!1){for(let i in e)this.layerManager.resourceManager.add({resourceId:i,data:e[i],forceUpdate:r})}_removeResources(e){for(let r of e)this.layerManager.resourceManager.remove(r)}_addDefaultEffect(e){this.effectManager.addDefaultEffect(e)}_addDefaultShaderModule(e){this.layerManager.addDefaultShaderModule(e)}_removeDefaultShaderModule(e){this.layerManager?.removeDefaultShaderModule(e)}_pick(e,r,i){oe(this.deckPicker);let{stats:s}=this;s.get("Pick Count").incrementCount(),s.get(r).timeStart();let n=this.deckPicker[e]({layers:this.layerManager.getLayers(i),views:this.viewManager.getViews(),viewports:this.getViewports(i),onViewportActive:this.layerManager.activateViewport,effects:this.effectManager.getEffects(),...i});return s.get(r).timeEnd(),n}_createCanvas(e){let r=e.canvas;return typeof r=="string"&&(r=document.getElementById(r),oe(r)),r||(r=document.createElement("canvas"),r.id=e.id||"deckgl-overlay",(e.parent||document.body).appendChild(r)),Object.assign(r.style,e.style),r}_setCanvasSize(e){if(!this.canvas)return;let{width:r,height:i}=e;if(r||r===0){let s=Number.isFinite(r)?`${r}px`:r;this.canvas.style.width=s}if(i||i===0){let s=Number.isFinite(i)?`${i}px`:i;this.canvas.style.position=e.style?.position||"absolute",this.canvas.style.height=s}}_updateCanvasSize(){let{canvas:e}=this;if(!e)return;let r=e.clientWidth??e.width,i=e.clientHeight??e.height;(r!==this.width||i!==this.height)&&(this.width=r,this.height=i,this.viewManager?.setProps({width:r,height:i}),this.layerManager?.activateViewport(this.getViewports()[0]),this.props.onResize({width:r,height:i}))}_createAnimationLoop(e,r){let{gl:i,onError:s,useDevicePixels:n}=r;return new ao({device:e,useDevicePixels:n,autoResizeDrawingBuffer:!i,autoResizeViewport:!1,onInitialize:o=>this._setDevice(o.device),onRender:this._onRenderFrame.bind(this),onError:s})}_getViewState(){return this.props.viewState||this.viewState}_getViews(){let{views:e}=this.props,r=Array.isArray(e)?e:e?[e]:[new qr({id:"default-view"})];return r.length&&this.props.controller&&(r[0].props.controller=this.props.controller),r}_onContextLost(){let{onError:e}=this.props;this.animationLoop&&e&&e(new Error("WebGL context is lost"))}_pickAndCallback(){let{_pickRequest:e}=this;if(e.event){let{result:r,emptyInfo:i}=this._pick("pickObject","pickObject Time",e);this.cursorState.isHovering=r.length>0;let s=i,n=!1;for(let o of r)s=o,n=o.layer?.onHover(o,e.event)||n;n||(this.props.onHover?.(s,e.event),this.widgetManager.onHover(s,e.event)),e.event=null}}_updateCursor(){let e=this.props.parent||this.canvas;e&&(e.style.cursor=this.props.getCursor(this.cursorState))}_setDevice(e){if(this.device=e,!this.animationLoop)return;this.canvas||(this.canvas=this.device.canvasContext?.canvas),this.device.setParametersWebGL({blend:!0,blendFunc:[770,771,1,771],polygonOffsetFill:!0,depthTest:!0,depthFunc:515}),this.props.onDeviceInitialized(this.device),this.device instanceof Vi&&this.props.onWebGLInitialized(this.device.gl);let r=new Ni;r.play(),this.animationLoop.attachTimeline(r),this.eventManager=new Os(this.props.parent||this.canvas,{touchAction:this.props.touchAction,recognizerOptions:this.props.eventRecognizerOptions,events:{pointerdown:this._onPointerDown,pointermove:this._onPointerMove,pointerleave:this._onPointerMove}});for(let s in Jn)this.eventManager.on(s,this._onEvent);this.viewManager=new fo({timeline:r,eventManager:this.eventManager,onViewStateChange:this._onViewStateChange.bind(this),onInteractionStateChange:this._onInteractionStateChange.bind(this),views:this._getViews(),viewState:this._getViewState(),width:this.width,height:this.height});let i=this.viewManager.getViewports()[0];this.layerManager=new uo(this.device,{deck:this,stats:this.stats,viewport:i,timeline:r}),this.effectManager=new xo({deck:this,device:this.device}),this.deckRenderer=new vo(this.device),this.deckPicker=new bo(this.device),this.widgetManager=new tl({deck:this,parentElement:this.canvas?.parentElement}),this.widgetManager.addDefault(new So),this.setProps(this.props),this._updateCanvasSize(),this.props.onLoad()}_drawLayers(e,r){let{device:i,gl:s}=this.layerManager.context;this.props.onBeforeRender({device:i,gl:s});let n={target:this.props._framebuffer,layers:this.layerManager.getLayers(),viewports:this.viewManager.getViewports(),onViewportActive:this.layerManager.activateViewport,views:this.viewManager.getViews(),pass:"screen",effects:this.effectManager.getEffects(),...r};this.deckRenderer?.renderLayers(n),n.pass==="screen"&&this.widgetManager.onRedraw({viewports:n.viewports,layers:n.layers}),this.props.onAfterRender({device:i,gl:s})}_onRenderFrame(){this._getFrameStats(),this._metricsCounter++%60===0&&(this._getMetrics(),this.stats.reset(),U.table(4,this.metrics)(),this.props._onMetrics&&this.props._onMetrics(this.metrics)),this._updateCanvasSize(),this._updateCursor(),this.layerManager.updateLayers(),this._pickAndCallback(),this.redraw(),this.viewManager&&this.viewManager.updateViewStates()}_onViewStateChange(e){let r=this.props.onViewStateChange(e)||e.viewState;this.viewState&&(this.viewState={...this.viewState,[e.viewId]:r},this.props.viewState||this.viewManager&&this.viewManager.setProps({viewState:this.viewState}))}_onInteractionStateChange(e){this.cursorState.isDragging=e.isDragging||!1,this.props.onInteractionStateChange(e)}_getFrameStats(){let{stats:e}=this;e.get("frameRate").timeEnd(),e.get("frameRate").timeStart();let r=this.animationLoop.stats;e.get("GPU Time").addTime(r.get("GPU Time").lastTiming),e.get("CPU Time").addTime(r.get("CPU Time").lastTiming)}_getMetrics(){let{metrics:e,stats:r}=this;e.fps=r.get("frameRate").getHz(),e.setPropsTime=r.get("setProps Time").time,e.updateAttributesTime=r.get("Update Attributes").time,e.framesRedrawn=r.get("Redraw Count").count,e.pickTime=r.get("pickObject Time").time+r.get("pickMultipleObjects Time").time+r.get("pickObjects Time").time,e.pickCount=r.get("Pick Count").count,e.gpuTime=r.get("GPU Time").time,e.cpuTime=r.get("CPU Time").time,e.gpuTimePerFrame=r.get("GPU Time").getAverageTime(),e.cpuTimePerFrame=r.get("CPU Time").getAverageTime();let i=dr.stats.get("Memory Usage");e.bufferMemory=i.get("Buffer Memory").count,e.textureMemory=i.get("Texture Memory").count,e.renderbufferMemory=i.get("Renderbuffer Memory").count,e.gpuMemory=i.get("GPU Memory").count}};function gx(t){switch(t){case"float64":return Float64Array;case"uint8":case"unorm8":return Uint8ClampedArray;default:return Hn(t)}}var mx=pc;function ko(t,e){return{attribute:t,format:e.size>1?`${e.type}x${e.size}`:e.type,byteOffset:e.offset||0}}function Qr(t){return t.stride||t.size*t.bytesPerElement}function _x(t,e){return t.type===e.type&&t.size===e.size&&Qr(t)===Qr(e)&&(t.offset||0)===(e.offset||0)}function Rd(t,e){e.offset&&U.removed("shaderAttribute.offset","vertexOffset, elementOffset")();let r=Qr(t),i=e.vertexOffset!==void 0?e.vertexOffset:t.vertexOffset||0,s=e.elementOffset||0,n=i*r+s*t.bytesPerElement+(t.offset||0);return{...e,offset:n,stride:r}}function WC(t,e){let r=Rd(t,e);return{high:r,low:{...r,offset:r.offset+t.size*4}}}var Bo=class{constructor(e,r,i){this._buffer=null,this.device=e,this.id=r.id||"",this.size=r.size||1;let s=r.logicalType||r.type,n=s==="float64",{defaultValue:o}=r;o=Number.isFinite(o)?[o]:o||new Array(this.size).fill(0);let a;n?a="float32":!s&&r.isIndexed?a="uint32":a=s||"float32";let c=gx(s||a);this.doublePrecision=n,n&&r.fp64===!1&&(c=Float32Array),this.value=null,this.settings={...r,defaultType:c,defaultValue:o,logicalType:s,type:a,normalized:a.includes("norm"),size:this.size,bytesPerElement:c.BYTES_PER_ELEMENT},this.state={...i,externalBuffer:null,bufferAccessor:this.settings,allocatedValue:null,numInstances:0,bounds:null,constant:!1}}get isConstant(){return this.state.constant}get buffer(){return this._buffer}get byteOffset(){let e=this.getAccessor();return e.vertexOffset?e.vertexOffset*Qr(e):0}get numInstances(){return this.state.numInstances}set numInstances(e){this.state.numInstances=e}delete(){this._buffer&&(this._buffer.delete(),this._buffer=null),Nt.release(this.state.allocatedValue)}getBuffer(){return this.state.constant?null:this.state.externalBuffer||this._buffer}getValue(e=this.id,r=null){let i={};if(this.state.constant){let s=this.value;if(r){let n=Rd(this.getAccessor(),r),o=n.offset/s.BYTES_PER_ELEMENT,a=n.size||this.size;i[e]=s.subarray(o,o+a)}else i[e]=s}else i[e]=this.getBuffer();return this.doublePrecision&&(this.value instanceof Float64Array?i[`${e}64Low`]=i[e]:i[`${e}64Low`]=new Float32Array(this.size)),i}_getBufferLayout(e=this.id,r=null){let i=this.getAccessor(),s=[],n={name:this.id,byteStride:Qr(i),attributes:s};if(this.doublePrecision){let o=WC(i,r||{});s.push(ko(e,{...i,...o.high}),ko(`${e}64Low`,{...i,...o.low}))}else if(r){let o=Rd(i,r);s.push(ko(e,{...i,...o}))}else s.push(ko(e,i));return n}setAccessor(e){this.state.bufferAccessor=e}getAccessor(){return this.state.bufferAccessor}getBounds(){if(this.state.bounds)return this.state.bounds;let e=null;if(this.state.constant&&this.value){let r=Array.from(this.value);e=[r,r]}else{let{value:r,numInstances:i,size:s}=this,n=i*s;if(r&&n&&r.length>=n){let o=new Array(s).fill(1/0),a=new Array(s).fill(-1/0);for(let c=0;ca[l]&&(a[l]=u)}e=[o,a]}}return this.state.bounds=e,e}setData(e){let{state:r}=this,i;ArrayBuffer.isView(e)?i={value:e}:e instanceof ie?i={buffer:e}:i=e;let s={...this.settings,...i};if(ArrayBuffer.isView(i.value)){if(!i.type)if(this.doublePrecision&&i.value instanceof Float64Array)s.type="float32";else{let o=mx(i.value);s.type=s.normalized?o.replace("int","norm"):o}s.bytesPerElement=i.value.BYTES_PER_ELEMENT,s.stride=Qr(s)}if(r.bounds=null,i.constant){let n=i.value;if(n=this._normalizeValue(n,[],0),this.settings.normalized&&(n=this.normalizeConstant(n)),!(!r.constant||!this._areValuesEqual(n,this.value)))return!1;r.externalBuffer=null,r.constant=!0,this.value=ArrayBuffer.isView(n)?n:new Float32Array(n)}else if(i.buffer){let n=i.buffer;r.externalBuffer=n,r.constant=!1,this.value=i.value||null}else if(i.value){this._checkExternalBuffer(i);let n=i.value;r.externalBuffer=null,r.constant=!1,this.value=n;let{buffer:o}=this,a=Qr(s),c=(s.vertexOffset||0)*a;if(this.doublePrecision&&n instanceof Float64Array&&(n=Kc(n,s)),this.settings.isIndexed){let u=this.settings.defaultType;n.constructor!==u&&(n=new u(n))}let l=n.byteLength+c+a*2;(!o||o.byteLength(r+128)/255*2-1);case"snorm16":return new Float32Array(e).map(r=>(r+32768)/65535*2-1);case"unorm8":return new Float32Array(e).map(r=>r/255);case"unorm16":return new Float32Array(e).map(r=>r/65535);default:return e}}_normalizeValue(e,r,i){let{defaultValue:s,size:n}=this.settings;if(Number.isFinite(e))return r[i]=e,r;if(!e){let o=n;for(;--o>=0;)r[i+o]=s[o];return r}switch(n){case 4:r[i+3]=Number.isFinite(e[3])?e[3]:s[3];case 3:r[i+2]=Number.isFinite(e[2])?e[2]:s[2];case 2:r[i+1]=Number.isFinite(e[1])?e[1]:s[1];case 1:r[i+0]=Number.isFinite(e[0])?e[0]:s[0];break;default:let o=n;for(;--o>=0;)r[i+o]=Number.isFinite(e[o])?e[o]:s[o]}return r}_areValuesEqual(e,r){if(!e||!r)return!1;let{size:i}=this;for(let s=0;s0&&(xx.length=t.length,i=xx):i=yx,(e>0||Number.isFinite(r))&&(i=(Array.isArray(i)?i:Array.from(i)).slice(e,r),s.index=e-1),{iterable:i,objectInfo:s}}function wl(t){return t&&t[Symbol.asyncIterator]}function Pl(t,e){let{size:r,stride:i,offset:s,startIndices:n,nested:o}=e,a=t.BYTES_PER_ELEMENT,c=i?i/a:r,l=s?s/a:0,u=Math.floor((t.length-l)/c);return(f,{index:h,target:d})=>{if(!n){let x=h*c+l;for(let v=0;v=e[1]))return t;let r=[],i=t.length,s=0;for(let n=0;ne[1]?r.push(o):e=[Math.min(o[0],e[0]),Math.max(o[1],e[1])]}return r.splice(s,0,e),r}var jC={interpolation:{duration:0,easing:t=>t},spring:{stiffness:.05,damping:.5}};function Rl(t,e){if(!t)return null;Number.isFinite(t)&&(t={type:"interpolation",duration:t});let r=t.type||"interpolation";return{...jC[r],...e,...t,type:r}}var ji=class extends Bo{constructor(e,r){super(e,r,{startIndices:null,lastExternalBuffer:null,binaryValue:null,binaryAccessor:null,needsUpdate:!0,needsRedraw:!1,layoutChanged:!1,updateRanges:Uo}),this.constant=!1,this.settings.update=r.update||(r.accessor?this._autoUpdater:void 0),Object.seal(this.settings),Object.seal(this.state),this._validateAttributeUpdaters()}get startIndices(){return this.state.startIndices}set startIndices(e){this.state.startIndices=e}needsUpdate(){return this.state.needsUpdate}needsRedraw({clearChangedFlags:e=!1}={}){let r=this.state.needsRedraw;return this.state.needsRedraw=r&&!e,r}layoutChanged(){return this.state.layoutChanged}setAccessor(e){this.state.layoutChanged||=!_x(e,this.getAccessor()),super.setAccessor(e)}getUpdateTriggers(){let{accessor:e}=this.settings;return[this.id].concat(typeof e!="function"&&e||[])}supportsTransition(){return!!this.settings.transition}getTransitionSetting(e){if(!e||!this.supportsTransition())return null;let{accessor:r}=this.settings,i=this.settings.transition,s=Array.isArray(r)?e[r.find(n=>e[n])]:e[r];return Rl(s,i)}setNeedsUpdate(e=this.id,r){if(this.state.needsUpdate=this.state.needsUpdate||e,this.setNeedsRedraw(e),r){let{startRow:i=0,endRow:s=1/0}=r;this.state.updateRanges=vx(this.state.updateRanges,[i,s])}else this.state.updateRanges=Uo}clearNeedsUpdate(){this.state.needsUpdate=!1,this.state.updateRanges=Tx}setNeedsRedraw(e=this.id){this.state.needsRedraw=this.state.needsRedraw||e}allocate(e){let{state:r,settings:i}=this;return i.noAlloc?!1:i.update?(super.allocate(e,r.updateRanges!==Uo),!0):!1}updateBuffer({numInstances:e,data:r,props:i,context:s}){if(!this.needsUpdate())return!1;let{state:{updateRanges:n},settings:{update:o,noAlloc:a}}=this,c=!0;if(o){for(let[l,u]of n)o.call(s,this,{data:r,startRow:l,endRow:u,props:i,numInstances:e});if(this.value)if(this.constant||!this.buffer||this.buffer.byteLengthu?l.set(b,g):(e._normalizeValue(b,x.target,0),id({target:l,source:x.target,start:g,count:A}));g+=A*u}else e._normalizeValue(b,l,g),g+=u}}_validateAttributeUpdaters(){let{settings:e}=this;if(!(e.noAlloc||typeof e.update=="function"))throw new Error(`Attribute ${this.id} missing update or accessor`)}_checkAttributeArray(){let{value:e}=this,r=Math.min(4,this.size);if(e&&e.length>=r){let i=!0;switch(r){case 4:i=i&&Number.isFinite(e[3]);case 3:i=i&&Number.isFinite(e[2]);case 2:i=i&&Number.isFinite(e[1]);case 1:i=i&&Number.isFinite(e[0]);break;default:i=!1}if(!i)throw new Error(`Illegal attribute generated for ${this.id}`)}}};function Cd(t){let{source:e,target:r,start:i=0,size:s,getData:n}=t,o=t.end||r.length,a=e.length,c=o-i;if(a>c){r.set(e.subarray(0,c),i);return}if(r.set(e,i),!n)return;let l=a;for(;li(u+a,f)),l=Math.min(s.length,n.length);for(let u=1;ua}){let a=r.doublePrecision&&r.value instanceof Float64Array?2:1,c=r.size*a,l=r.byteOffset,u=r.settings.bytesPerElement<4?l/r.settings.bytesPerElement*4:l,f=r.startIndices,h=n&&f,d=r.isConstant;if(!h&&e&&i>=s)return e;let p=r.value instanceof Float64Array?Float32Array:r.value.constructor,g=d?r.value:new p(r.getBuffer().readSyncWebGL(l,s*p.BYTES_PER_ELEMENT).buffer);if(r.settings.normalized&&!d){let b=o;o=(A,C)=>r.normalizeConstant(b(A,C))}let _=d?(b,A)=>o(g,A):(b,A)=>o(g.subarray(b+l,b+l+c),A),x=e?new Float32Array(e.readSyncWebGL(u,i*4).buffer):new Float32Array(0),v=new Float32Array(s);return bx({source:x,target:v,sourceStartIndices:n,targetStartIndices:f,size:c,getData:_}),(!e||e.byteLengththis.device.clearWebGL(f))}let u={totalCount:r.length,visibleCount:0,compositeCount:0,pickableCount:0};e.setParameters({viewport:l});for(let f=0;f{let o=s.props._offset,a=s.id,c=s.parent&&s.parent.id,l;if(c&&!(c in e)&&i(s.parent,!1),c in r){let u=r[c]=r[c]||N_(e[c],e);l=u(s,n),r[a]=u}else Number.isFinite(o)?(l=o+(e[c]||0),r[a]=null):l=t;return n&&l>=t&&(t=l+1),e[a]=l,l};return i}function yP(t,{moduleParameters:e,target:r,viewport:i}){let s=e&&e.devicePixelRatio||t.canvasContext.cssToDeviceRatio(),[,n]=t.canvasContext.getDrawingBufferSize(),o=r?r.height:n,a=i;return[a.x*s,o-(a.y+a.height)*s,a.width*s,a.height*s]}var no=class extends xr{constructor(e,r){super(e,r),this.shadowMap=e.createTexture({width:1,height:1,sampler:{minFilter:"linear",magFilter:"linear",addressModeU:"clamp-to-edge",addressModeV:"clamp-to-edge"}}),this.depthBuffer=e.createTexture({format:"depth16unorm",width:1,height:1,mipmaps:!1,dataFormat:6402,type:5125}),this.fbo=e.createFramebuffer({id:"shadowmap",width:1,height:1,colorAttachments:[this.shadowMap],depthStencilAttachment:this.depthBuffer})}render(e){let r=this.fbo,i=this.device.canvasContext.cssToDeviceRatio(),s=e.viewports[0],n=s.width*i,o=s.height*i,a=[1,1,1,1];(n!==r.width||o!==r.height)&&r.resize({width:n,height:o}),super.render({...e,clearColor:a,target:r,pass:"shadow"})}getLayerParameters(e,r,i){return{...e.props.parameters,blend:!1,depthRange:[0,1],depthTest:!0}}shouldDrawLayer(e){return e.props.shadowEnabled!==!1}getModuleParameters(){return{drawToShadowMap:!0}}delete(){this.fbo&&(this.fbo.destroy(),this.fbo=null),this.shadowMap&&(this.shadowMap.destroy(),this.shadowMap=null),this.depthBuffer&&(this.depthBuffer.destroy(),this.depthBuffer=null)}};var xP={color:[255,255,255],intensity:1},F_=[{color:[255,255,255],intensity:1,direction:[-1,3,-1]},{color:[255,255,255],intensity:.9,direction:[1,-8,-2.5]}],TP=[0,0,0,200/255],bs=class{constructor(e={}){this.id="lighting-effect",this.shadowColor=TP,this.shadow=!1,this.ambientLight=null,this.directionalLights=[],this.pointLights=[],this.shadowPasses=[],this.shadowMaps=[],this.dummyShadowMap=null,this.setProps(e)}setup(e){this.context=e;let{device:r,deck:i}=e;this.shadow&&!this.dummyShadowMap&&(this._createShadowPasses(r),i._addDefaultShaderModule($c),this.dummyShadowMap=r.createTexture({width:1,height:1}))}setProps(e){this.ambientLight=null,this.directionalLights=[],this.pointLights=[];for(let r in e){let i=e[r];switch(i.type){case"ambient":this.ambientLight=i;break;case"directional":this.directionalLights.push(i);break;case"point":this.pointLights.push(i);break;default:}}this._applyDefaultLights(),this.shadow=this.directionalLights.some(r=>r.shadow),this.context&&this.setup(this.context),this.props=e}preRender({layers:e,layerFilter:r,viewports:i,onViewportActive:s,views:n}){if(this.shadow){this.shadowMatrices=this._calculateMatrices();for(let o=0;oi.getProjectedLight({layer:e})),pointLights:this.pointLights.map(i=>i.getProjectedLight({layer:e}))},r}cleanup(e){for(let r of this.shadowPasses)r.delete();this.shadowPasses.length=0,this.shadowMaps.length=0,this.dummyShadowMap&&(this.dummyShadowMap.destroy(),this.dummyShadowMap=null,e.deck._removeDefaultShaderModule($c))}_calculateMatrices(){let e=[];for(let r of this.directionalLights){let i=new De().lookAt({eye:new Ue(r.direction).negate()});e.push(i)}return e}_createShadowPasses(e){for(let r=0;rs&&(n=s);let o=this._pool,a=e.BYTES_PER_ELEMENT*n,c=o.findIndex(l=>l.byteLength>=a);if(c>=0){let l=new e(o.splice(c,1)[0],0,n);return i&&l.fill(0),l}return new e(n)}_release(e){if(!ArrayBuffer.isView(e))return;let r=this._pool,{buffer:i}=e,{byteLength:s}=i,n=r.findIndex(o=>o.byteLength>=s);n<0?r.push(i):(n>0||r.lengththis.opts.poolSize&&r.shift()}},Nt=new Jh;function As(){return[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}function L_(t){return[t[12],t[13],t[14]]}function k_(t){return{left:Ss(t[3]+t[0],t[7]+t[4],t[11]+t[8],t[15]+t[12]),right:Ss(t[3]-t[0],t[7]-t[4],t[11]-t[8],t[15]-t[12]),bottom:Ss(t[3]+t[1],t[7]+t[5],t[11]+t[9],t[15]+t[13]),top:Ss(t[3]-t[1],t[7]-t[5],t[11]-t[9],t[15]-t[13]),near:Ss(t[3]+t[2],t[7]+t[6],t[11]+t[10],t[15]+t[14]),far:Ss(t[3]-t[2],t[7]-t[6],t[11]-t[10],t[15]-t[14])}}var D_=new Ue;function Ss(t,e,r,i){D_.set(t,e,r);let s=D_.len();return{distance:i/s,normal:new Ue(-t/s,-e/s,-r/s)}}function Ii(t){return t-Math.fround(t)}var oo;function Kc(t,e){let{size:r=1,startIndex:i=0}=e,s=e.endIndex!==void 0?e.endIndex:t.length,n=(s-i)/r;oo=Nt.allocate(oo,n,{type:Float32Array,size:r*2});let o=i,a=0;for(;o=r.delay+r.duration*r.repeat}getTime(e){if(e===void 0)return this.time;let r=this.channels.get(e);return r===void 0?-1:r.time}setTime(e){this.time=Math.max(0,e);let r=this.channels.values();for(let s of r)this._setChannelTime(s,this.time);let i=this.animations.values();for(let s of i){let{animation:n,channel:o}=s;n.setTime(this.getTime(o))}}play(){this.playing=!0}pause(){this.playing=!1,this.lastEngineTime=-1}reset(){this.setTime(0)}attachAnimation(e,r){let i=PP++;return this.animations.set(i,{animation:e,channel:r}),e.setTime(this.getTime(r)),i}detachAnimation(e){this.animations.delete(e)}update(e){this.playing&&(this.lastEngineTime===-1&&(this.lastEngineTime=e),this.setTime(this.time+(e-this.lastEngineTime)),this.lastEngineTime=e)}_setChannelTime(e,r){let i=r-e.delay,s=e.duration*e.repeat;i>=s?e.time=e.duration*e.rate:(e.time=Math.max(0,i)%e.duration,e.time*=e.rate)}};var RP=0,CP={device:null,onAddHTML:()=>"",onInitialize:async()=>null,onRender:()=>{},onFinalize:()=>{},onError:t=>console.error(t),stats:dr.stats.get(`animation-loop-${RP++}`),useDevicePixels:!0,autoResizeViewport:!1,autoResizeDrawingBuffer:!1},ao=class{device=null;canvas=null;props;animationProps=null;timeline=null;stats;cpuTime;gpuTime;frameRate;display;needsRedraw="initialized";_initialized=!1;_running=!1;_animationFrameId=null;_nextFramePromise=null;_resolveNextFrame=null;_cpuStartTime=0;constructor(e){if(this.props={...CP,...e},e=this.props,!e.device)throw new Error("No device provided");let{useDevicePixels:r=!0}=this.props;this.stats=e.stats||new dt({id:"animation-loop-stats"}),this.cpuTime=this.stats.get("CPU Time"),this.gpuTime=this.stats.get("GPU Time"),this.frameRate=this.stats.get("Frame Rate"),this.setProps({autoResizeViewport:e.autoResizeViewport,autoResizeDrawingBuffer:e.autoResizeDrawingBuffer,useDevicePixels:r}),this.start=this.start.bind(this),this.stop=this.stop.bind(this),this._onMousemove=this._onMousemove.bind(this),this._onMouseleave=this._onMouseleave.bind(this)}destroy(){this.stop(),this._setDisplay(null)}delete(){this.destroy()}setNeedsRedraw(e){return this.needsRedraw=this.needsRedraw||e,this}setProps(e){return"autoResizeViewport"in e&&(this.props.autoResizeViewport=e.autoResizeViewport||!1),"autoResizeDrawingBuffer"in e&&(this.props.autoResizeDrawingBuffer=e.autoResizeDrawingBuffer||!1),"useDevicePixels"in e&&(this.props.useDevicePixels=e.useDevicePixels||!1),this}async start(){if(this._running)return this;this._running=!0;try{let e;return this._initialized||(this._initialized=!0,await this._initDevice(),this._initialize(),await this.props.onInitialize(this._getAnimationProps())),this._running?(e!==!1&&(this._cancelAnimationFrame(),this._requestAnimationFrame()),this):null}catch(e){let r=e instanceof Error?e:new Error("Unknown error");throw this.props.onError(r),r}}stop(){return this._running&&(this.animationProps&&this.props.onFinalize(this.animationProps),this._cancelAnimationFrame(),this._nextFramePromise=null,this._resolveNextFrame=null,this._running=!1),this}redraw(){return this.device?.isLost?this:(this._beginFrameTimers(),this._setupFrame(),this._updateAnimationProps(),this._renderFrame(this._getAnimationProps()),this._clearNeedsRedraw(),this._resolveNextFrame&&(this._resolveNextFrame(this),this._nextFramePromise=null,this._resolveNextFrame=null),this._endFrameTimers(),this)}attachTimeline(e){return this.timeline=e,this.timeline}detachTimeline(){this.timeline=null}waitForRender(){return this.setNeedsRedraw("waitForRender"),this._nextFramePromise||(this._nextFramePromise=new Promise(e=>{this._resolveNextFrame=e})),this._nextFramePromise}async toDataURL(){if(this.setNeedsRedraw("toDataURL"),await this.waitForRender(),this.canvas instanceof HTMLCanvasElement)return this.canvas.toDataURL();throw new Error("OffscreenCanvas")}_initialize(){this._startEventHandling(),this._initializeAnimationProps(),this._updateAnimationProps(),this._resizeCanvasDrawingBuffer(),this._resizeViewport()}_setDisplay(e){this.display&&(this.display.destroy(),this.display.animationLoop=null),e&&(e.animationLoop=this),this.display=e}_requestAnimationFrame(){this._running&&(this._animationFrameId=Ef(this._animationFrame.bind(this)))}_cancelAnimationFrame(){this._animationFrameId!==null&&(wf(this._animationFrameId),this._animationFrameId=null)}_animationFrame(){this._running&&(this.redraw(),this._requestAnimationFrame())}_renderFrame(e){if(this.display){this.display._renderFrame(e);return}this.props.onRender(this._getAnimationProps()),this.device.submit()}_clearNeedsRedraw(){this.needsRedraw=!1}_setupFrame(){this._resizeCanvasDrawingBuffer(),this._resizeViewport()}_initializeAnimationProps(){if(!this.device)throw new Error("loop");this.animationProps={animationLoop:this,device:this.device,canvas:this.device?.canvasContext?.canvas,timeline:this.timeline,useDevicePixels:this.props.useDevicePixels,needsRedraw:!1,width:1,height:1,aspect:1,time:0,startTime:Date.now(),engineTime:0,tick:0,tock:0,_mousePosition:null}}_getAnimationProps(){if(!this.animationProps)throw new Error("animationProps");return this.animationProps}_updateAnimationProps(){if(!this.animationProps)return;let{width:e,height:r,aspect:i}=this._getSizeAndAspect();(e!==this.animationProps.width||r!==this.animationProps.height)&&this.setNeedsRedraw("drawing buffer resized"),i!==this.animationProps.aspect&&this.setNeedsRedraw("drawing buffer aspect changed"),this.animationProps.width=e,this.animationProps.height=r,this.animationProps.aspect=i,this.animationProps.needsRedraw=this.needsRedraw,this.animationProps.engineTime=Date.now()-this.animationProps.startTime,this.timeline&&this.timeline.update(this.animationProps.engineTime),this.animationProps.tick=Math.floor(this.animationProps.time/1e3*60),this.animationProps.tock++,this.animationProps.time=this.timeline?this.timeline.getTime():this.animationProps.engineTime}async _initDevice(){if(this.device=await this.props.device,!this.device)throw new Error("No device provided");this.canvas=this.device.canvasContext?.canvas||null}_createInfoDiv(){if(this.canvas&&this.props.onAddHTML){let e=document.createElement("div");document.body.appendChild(e),e.style.position="relative";let r=document.createElement("div");r.style.position="absolute",r.style.left="10px",r.style.bottom="10px",r.style.width="300px",r.style.background="white",this.canvas instanceof HTMLCanvasElement&&e.appendChild(this.canvas),e.appendChild(r);let i=this.props.onAddHTML(r);i&&(r.innerHTML=i)}}_getSizeAndAspect(){if(!this.device)return{width:1,height:1,aspect:1};let[e,r]=this.device?.canvasContext?.getPixelSize()||[1,1],i=1,s=this.device?.canvasContext?.canvas;return s&&s.clientHeight?i=s.clientWidth/s.clientHeight:e>0&&r>0&&(i=e/r),{width:e,height:r,aspect:i}}_resizeViewport(){this.props.autoResizeViewport&&this.device.gl&&this.device.gl.viewport(0,0,this.device.gl.drawingBufferWidth,this.device.gl.drawingBufferHeight)}_resizeCanvasDrawingBuffer(){this.props.autoResizeDrawingBuffer&&this.device?.canvasContext?.resize({useDevicePixels:this.props.useDevicePixels})}_beginFrameTimers(){this.frameRate.timeEnd(),this.frameRate.timeStart(),this.cpuTime.timeStart()}_endFrameTimers(){this.cpuTime.timeEnd()}_startEventHandling(){this.canvas&&(this.canvas.addEventListener("mousemove",this._onMousemove.bind(this)),this.canvas.addEventListener("mouseleave",this._onMouseleave.bind(this)))}_onMousemove(e){e instanceof MouseEvent&&(this._getAnimationProps()._mousePosition=[e.offsetX,e.offsetY])}_onMouseleave(e){this._getAnimationProps()._mousePosition=null}};var qc=class{id;userData={};topology;bufferLayout=[];vertexCount;indices;attributes;constructor(e){this.id=e.id||Fe("geometry"),this.topology=e.topology,this.indices=e.indices||null,this.attributes=e.attributes,this.vertexCount=e.vertexCount,this.bufferLayout=e.bufferLayout||[],this.indices&&ee(this.indices.usage===ie.INDEX)}destroy(){this.indices?.destroy();for(let e of Object.values(this.attributes))e.destroy()}getVertexCount(){return this.vertexCount}getAttributes(){return this.attributes}getIndexes(){return this.indices}_calculateVertexCount(e){return e.byteLength/12}};function W_(t,e){if(e instanceof qc)return e;let r=MP(t,e),{attributes:i,bufferLayout:s}=IP(t,e);return new qc({topology:e.topology||"triangle-list",bufferLayout:s,vertexCount:e.vertexCount,indices:r,attributes:i})}function MP(t,e){if(!e.indices)return;let r=e.indices.value;return t.createBuffer({usage:ie.INDEX,data:r})}function IP(t,e){let r=[],i={};for(let[n,o]of Object.entries(e.attributes)){let a=n;switch(n){case"POSITION":a="positions";break;case"NORMAL":a="normals";break;case"TEXCOORD_0":a="texCoords";break;case"COLOR_0":a="colors";break}i[a]=t.createBuffer({data:o.value,id:`${n}-buffer`});let{value:c,size:l,normalized:u}=o;r.push({name:a,format:bf(c,l,u)})}let s=e._calculateVertexCount(e.attributes,e.indices);return{attributes:i,bufferLayout:r,vertexCount:s}}var Gc=class{modules;moduleUniforms;moduleBindings;moduleUniformsChanged;constructor(e){let r=yi(Object.values(e).filter(i=>i.dependencies));for(let i of r)e[i.name]=i;O.log(1,"Creating ShaderInputs with modules",Object.keys(e))(),this.modules=e,this.moduleUniforms={},this.moduleBindings={};for(let[i,s]of Object.entries(e)){let n=i;this.moduleUniforms[n]=s.defaultUniforms||{},this.moduleBindings[n]={}}}destroy(){}setProps(e){for(let r of Object.keys(e)){let i=r,s=e[i],n=this.modules[i];if(!n){O.warn(`Module ${r} not found`)();continue}let o=this.moduleUniforms[i],a=n.getUniforms?.(s,this.moduleUniforms[i])||s;this.moduleUniforms[i]={...o,...a}}}getModules(){return Object.values(this.modules)}getUniformValues(){return this.moduleUniforms}getBindings(){let e={};for(let r of Object.values(this.moduleBindings))Object.assign(e,r);return e}getDebugTable(){let e={};for(let[r,i]of Object.entries(this.moduleUniforms))for(let[s,n]of Object.entries(i))e[`${r}.${s}`]={type:this.modules[r].uniformTypes?.[s],value:String(n)};return e}};var Zc=class t{static defaultProps={...qt.defaultProps};device;_hashCounter=0;_hashes={};_renderPipelineCache={};_computePipelineCache={};static getDefaultPipelineFactory(e){return e._lumaData.defaultPipelineFactory=e._lumaData.defaultPipelineFactory||new t(e),e._lumaData.defaultPipelineFactory}constructor(e){this.device=e}createRenderPipeline(e){let r={...qt.defaultProps,...e},i=this._hashRenderPipeline(r);if(!this._renderPipelineCache[i]){let s=this.device.createRenderPipeline({...r,id:r.id?`${r.id}-cached`:void 0});s.hash=i,this._renderPipelineCache[i]={pipeline:s,useCount:0}}return this._renderPipelineCache[i].useCount++,this._renderPipelineCache[i].pipeline}createComputePipeline(e){let r={...us.defaultProps,...e},i=this._hashComputePipeline(r);if(!this._computePipelineCache[i]){let s=this.device.createComputePipeline({...r,id:r.id?`${r.id}-cached`:void 0});s.hash=i,this._computePipelineCache[i]={pipeline:s,useCount:0}}return this._computePipelineCache[i].useCount++,this._computePipelineCache[i].pipeline}release(e){let r=e.hash,i=e instanceof us?this._computePipelineCache:this._renderPipelineCache;i[r].useCount--,i[r].useCount===0&&(i[r].pipeline.destroy(),delete i[r])}_hashComputePipeline(e){return`${this._getHash(e.shader.source)}`}_hashRenderPipeline(e){let r=this._getHash(e.vs.source),i=e.fs?this._getHash(e.fs.source):0,s="-",n=this._getHash(JSON.stringify(e.bufferLayout));switch(this.device.type){case"webgl":return`${r}/${i}V${s}BL${n}`;default:let o=this._getHash(JSON.stringify(e.parameters));return`${r}/${i}V${s}T${e.topology}P${o}BL${n}`}}_getHash(e){return this._hashes[e]===void 0&&(this._hashes[e]=this._hashCounter++),this._hashes[e]}};var Jc=class t{static defaultProps={...bi.defaultProps};device;_cache={};static getDefaultShaderFactory(e){return e._lumaData.defaultShaderFactory||=new t(e),e._lumaData.defaultShaderFactory}constructor(e){this.device=e}createShader(e){let r=this._hashShader(e),i=this._cache[r];if(!i){let s=this.device.createShader({...e,id:e.id?`${e.id}-cached`:void 0});this._cache[r]=i={shader:s,useCount:0}}return i.useCount++,i.shader}release(e){let r=this._hashShader(e),i=this._cache[r];i&&(i.useCount--,i.useCount===0&&(delete this._cache[r],i.shader.destroy()))}_hashShader(e){return`${e.stage}:${e.source}`}};function H_(t,e){let r={},i="Values";if(t.attributes.length===0&&!t.varyings?.length)return{"No attributes or varyings":{[i]:"N/A"}};for(let s of t.attributes)if(s){let n=`${s.location} ${s.name}: ${s.type}`;r[`in ${n}`]={[i]:s.stepMode||"vertex"}}for(let s of t.varyings||[]){let n=`${s.location} ${s.name}`;r[`out ${n}`]={[i]:JSON.stringify(s.accessor)}}return r}var Ie=null,td=null;function j_(t,{id:e,minimap:r,opaque:i,top:s="0",left:n="0",rgbaScale:o=1}){Ie||(Ie=document.createElement("canvas"),Ie.id=e,Ie.title=e,Ie.style.zIndex="100",Ie.style.position="absolute",Ie.style.top=s,Ie.style.left=n,Ie.style.border="blue 1px solid",Ie.style.transform="scaleY(-1)",document.body.appendChild(Ie),td=Ie.getContext("2d")),(Ie.width!==t.width||Ie.height!==t.height)&&(Ie.width=t.width/2,Ie.height=t.height/2,Ie.style.width="400px",Ie.style.height="400px");let a=t.device.readPixelsToArrayWebGL(t),c=td.createImageData(t.width,t.height),l=0;for(let u=0;u[a.name,a])||[]);this.setShaderInputs(r.shaderInputs||new Gc(i));let s=NP(e),n=(this.props.modules?.length>0?this.props.modules:this.shaderInputs?.getModules())||[];if(this.device.type==="webgpu"&&this.props.source){this.props.shaderLayout||=ah(this.props.source);let{source:a,getUniforms:c}=this.props.shaderAssembler.assembleShader({platformInfo:s,...this.props,modules:n});this.source=a,this._getModuleUniforms=c}else{let{vs:a,fs:c,getUniforms:l}=this.props.shaderAssembler.assembleShaderPair({platformInfo:s,...this.props,modules:n});this.vs=a,this.fs=c,this._getModuleUniforms=l}this.vertexCount=this.props.vertexCount,this.instanceCount=this.props.instanceCount,this.topology=this.props.topology,this.bufferLayout=this.props.bufferLayout,this.parameters=this.props.parameters,r.geometry&&this.setGeometry(r.geometry),this.pipelineFactory=r.pipelineFactory||Zc.getDefaultPipelineFactory(this.device),this.shaderFactory=r.shaderFactory||Jc.getDefaultShaderFactory(this.device),this.pipeline=this._updatePipeline(),this.vertexArray=e.createVertexArray({renderPipeline:this.pipeline}),this._gpuGeometry&&this._setGeometryAttributes(this._gpuGeometry),"isInstanced"in r&&(this.isInstanced=r.isInstanced),r.instanceCount&&this.setInstanceCount(r.instanceCount),r.vertexCount&&this.setVertexCount(r.vertexCount),r.indexBuffer&&this.setIndexBuffer(r.indexBuffer),r.attributes&&this.setAttributes(r.attributes),r.constantAttributes&&this.setConstantAttributes(r.constantAttributes),r.bindings&&this.setBindings(r.bindings),r.uniforms&&this.setUniforms(r.uniforms),r.moduleSettings&&this.updateModuleSettings(r.moduleSettings),r.transformFeedback&&(this.transformFeedback=r.transformFeedback),Object.seal(this)}destroy(){this._destroyed||(this.pipelineFactory.release(this.pipeline),this.shaderFactory.release(this.pipeline.vs),this.pipeline.fs&&this.shaderFactory.release(this.pipeline.fs),this._uniformStore.destroy(),this._gpuGeometry?.destroy(),this._destroyed=!0)}needsRedraw(){this._getBindingsUpdateTimestamp()>this._lastDrawTimestamp&&this.setNeedsRedraw("contents of bound textures or buffers updated");let e=this._needsRedraw;return this._needsRedraw=!1,e}setNeedsRedraw(e){this._needsRedraw||=e}predraw(){this.updateShaderInputs(),this.pipeline=this._updatePipeline()}draw(e){this.predraw();let r;try{this._logDrawCallStart(),this.pipeline=this._updatePipeline(),this.pipeline.setBindings(this.bindings,{disableWarnings:this.props.disableWarnings}),Br(this.uniforms)||this.pipeline.setUniformsWebGL(this.uniforms);let{indexBuffer:i}=this.vertexArray,s=i?i.byteLength/(i.indexType==="uint32"?4:2):void 0;r=this.pipeline.draw({renderPass:e,vertexArray:this.vertexArray,isInstanced:this.isInstanced,vertexCount:this.vertexCount,instanceCount:this.instanceCount,indexCount:s,transformFeedback:this.transformFeedback||void 0,parameters:this.parameters,topology:this.topology})}finally{this._logDrawCallEnd()}return this._logFramebuffer(e),r?(this._lastDrawTimestamp=this.device.timestamp,this._needsRedraw=!1):this._needsRedraw="waiting for resource initialization",r}setGeometry(e){this._gpuGeometry?.destroy();let r=e&&W_(this.device,e);r&&(this.setTopology(r.topology||"triangle-list"),this.bufferLayout=X_(r.bufferLayout,this.bufferLayout),this.vertexArray&&this._setGeometryAttributes(r)),this._gpuGeometry=r}setTopology(e){e!==this.topology&&(this.topology=e,this._setPipelineNeedsUpdate("topology"))}setBufferLayout(e){this.bufferLayout=this._gpuGeometry?X_(e,this._gpuGeometry.bufferLayout):e,this._setPipelineNeedsUpdate("bufferLayout"),this.pipeline=this._updatePipeline(),this.vertexArray=this.device.createVertexArray({renderPipeline:this.pipeline}),this._gpuGeometry&&this._setGeometryAttributes(this._gpuGeometry)}setParameters(e){$n(e,this.parameters,2)||(this.parameters=e,this._setPipelineNeedsUpdate("parameters"))}setInstanceCount(e){this.instanceCount=e,this.isInstanced===void 0&&e>0&&(this.isInstanced=!0),this.setNeedsRedraw("instanceCount")}setVertexCount(e){this.vertexCount=e,this.setNeedsRedraw("vertexCount")}setShaderInputs(e){this.shaderInputs=e,this._uniformStore=new Wn(this.shaderInputs.modules);for(let r of Object.keys(this.shaderInputs.modules)){let i=this._uniformStore.getManagedUniformBuffer(this.device,r);this.bindings[`${r}Uniforms`]=i}this.setNeedsRedraw("shaderInputs")}updateShaderInputs(){this._uniformStore.setUniforms(this.shaderInputs.getUniformValues()),this.setNeedsRedraw("shaderInputs")}setBindings(e){Object.assign(this.bindings,e),this.setNeedsRedraw("bindings")}setTransformFeedback(e){this.transformFeedback=e,this.setNeedsRedraw("transformFeedback")}setIndexBuffer(e){this.vertexArray.setIndexBuffer(e),this.setNeedsRedraw("indexBuffer")}setAttributes(e,r){e.indices&&O.warn(`Model:${this.id} setAttributes() - indexBuffer should be set using setIndexBuffer()`)();for(let[i,s]of Object.entries(e)){let n=this.bufferLayout.find(c=>$_(c).includes(i));if(!n){O.warn(`Model(${this.id}): Missing layout for buffer "${i}".`)();continue}let o=$_(n),a=!1;for(let c of o){let l=this._attributeInfos[c];l&&(this.vertexArray.setBuffer(l.location,s),a=!0)}!a&&!(r?.disableWarnings??this.props.disableWarnings)&&O.warn(`Model(${this.id}): Ignoring buffer "${s.id}" for unknown attribute "${i}"`)()}this.setNeedsRedraw("attributes")}setConstantAttributes(e,r){for(let[i,s]of Object.entries(e)){let n=this._attributeInfos[i];n?this.vertexArray.setConstantWebGL(n.location,s):(r?.disableWarnings??this.props.disableWarnings)||O.warn(`Model "${this.id}: Ignoring constant supplied for unknown attribute "${i}"`)()}this.setNeedsRedraw("constants")}setUniforms(e){Br(e)||(this.pipeline.setUniformsWebGL(e),Object.assign(this.uniforms,e)),this.setNeedsRedraw("uniforms")}updateModuleSettings(e){let{bindings:r,uniforms:i}=jn(this._getModuleUniforms(e));Object.assign(this.bindings,r),Object.assign(this.uniforms,i),this.setNeedsRedraw("moduleSettings")}_getBindingsUpdateTimestamp(){let e=0;for(let r of Object.values(this.bindings))r instanceof vi?e=Math.max(e,r.texture.updateTimestamp):r instanceof ie||r instanceof Ae?e=Math.max(e,r.updateTimestamp):r instanceof Si||(e=Math.max(e,r.buffer.updateTimestamp));return e}_setGeometryAttributes(e){let r={...e.attributes};for(let[i]of Object.entries(r))!this.pipeline.shaderLayout.attributes.find(s=>s.name===i)&&i!=="positions"&&delete r[i];this.vertexCount=e.vertexCount,this.setIndexBuffer(e.indices||null),this.setAttributes(e.attributes,{disableWarnings:!0}),this.setAttributes(r,{disableWarnings:this.props.disableWarnings}),this.setNeedsRedraw("geometry attributes")}_setPipelineNeedsUpdate(e){this._pipelineNeedsUpdate||=e,this.setNeedsRedraw(e)}_updatePipeline(){if(this._pipelineNeedsUpdate){let e=null,r=null;this.pipeline&&(O.log(1,`Model ${this.id}: Recreating pipeline because "${this._pipelineNeedsUpdate}".`)(),e=this.pipeline.vs,r=this.pipeline.fs),this._pipelineNeedsUpdate=!1;let i=this.shaderFactory.createShader({id:`${this.id}-vertex`,stage:"vertex",source:this.source||this.vs,debug:this.props.debugShaders}),s=null;this.source?s=i:this.fs&&(s=this.shaderFactory.createShader({id:`${this.id}-fragment`,stage:"fragment",source:this.source||this.fs,debug:this.props.debugShaders})),this.pipeline=this.pipelineFactory.createRenderPipeline({...this.props,bufferLayout:this.bufferLayout,topology:this.topology,parameters:this.parameters,vs:i,fs:s}),this._attributeInfos=lc(this.pipeline.shaderLayout,this.bufferLayout),e&&this.shaderFactory.release(e),r&&this.shaderFactory.release(r)}return this.pipeline}_lastLogTime=0;_logOpen=!1;_logDrawCallStart(){let e=O.level>3?0:OP;O.level<2||Date.now()-this._lastLogTime>> DRAWING MODEL ${this.id}`,{collapsed:O.level<=2})())}_logDrawCallEnd(){if(this._logOpen){let e=H_(this.pipeline.shaderLayout,this.id);O.table(Es,e)();let r=this.shaderInputs.getDebugTable();for(let[s,n]of Object.entries(this.uniforms))r[s]={value:n};O.table(Es,r)();let i=this._getAttributeDebugTable();O.table(Es,this._attributeInfos)(),O.table(Es,i)(),O.groupEnd(Es)(),this._logOpen=!1}}_drawCount=0;_logFramebuffer(e){let r=O.get("framebuffer");if(this._drawCount++,!r||this._drawCount++>3&&this._drawCount%60)return;let i=e.props.framebuffer;i&&j_(i,{id:i.id,minimap:!0})}_getAttributeDebugTable(){let e={};for(let[r,i]of Object.entries(this._attributeInfos))e[i.location]={name:r,type:i.shaderType,values:this._getBufferOrConstantValues(this.vertexArray.attributes[i.location],i.bufferDataType)};if(this.vertexArray.indexBuffer){let{indexBuffer:r}=this.vertexArray,i=r.indexType==="uint32"?new Uint32Array(r.debugData):new Uint16Array(r.debugData);e.indices={name:"indices",type:r.indexType,values:i.toString()}}return e}_getBufferOrConstantValues(e,r){let i=Hn(r);return(e instanceof ie?new i(e.debugData):e).toString()}};function X_(t,e){let r=[...t];for(let i of e){let s=r.findIndex(n=>n.name===i.name);s<0?r.push(i):r[s]=i}return r}function NP(t){return{type:t.type,shaderLanguage:t.info.shadingLanguage,shaderLanguageVersion:t.info.shadingLanguageVersion,gpu:t.info.gpu,features:t.features}}function $_(t){return t.attributes?t.attributes?.map(e=>e.attribute):[t.name]}var Xr=class t{device;model;transformFeedback;static isSupported(e){return e?.info?.type==="webgl"}constructor(e,r=te.defaultProps){ee(t.isSupported(e),"BufferTransform not yet implemented on WebGPU"),this.device=e,this.model=new te(this.device,{id:r.id||"buffer-transform-model",fs:r.fs||On(),topology:r.topology||"point-list",...r}),this.transformFeedback=this.device.createTransformFeedback({layout:this.model.pipeline.shaderLayout,buffers:r.feedbackBuffers}),this.model.setTransformFeedback(this.transformFeedback),Object.seal(this)}destroy(){this.model&&this.model.destroy()}delete(){this.destroy()}run(e){let r=this.device.beginRenderPass(e);this.model.draw(r),r.end()}update(...e){console.warn("TextureTransform#update() not implemented")}getBuffer(e){return this.transformFeedback.getBuffer(e)}readAsync(e){let r=this.getBuffer(e);if(r instanceof ie)return r.readAsync();let{buffer:i,byteOffset:s=0,byteLength:n=i.byteLength}=r;return i.readAsync(s,n)}};var FP="transform_output",$r=class{device;model;sampler;currentIndex=0;samplerTextureMap=null;bindings=[];resources={};constructor(e,r){this.device=e,this.sampler=e.createSampler({addressModeU:"clamp-to-edge",addressModeV:"clamp-to-edge",minFilter:"nearest",magFilter:"nearest",mipmapFilter:"nearest"}),this.model=new te(this.device,{id:r.id||"texture-transform-model",fs:r.fs||On({input:r.targetTextureVarying,inputChannels:r.targetTextureChannels,output:FP}),vertexCount:r.vertexCount,...r}),this._initialize(r),Object.seal(this)}destroy(){}delete(){this.destroy()}run(e){let{framebuffer:r}=this.bindings[this.currentIndex],i=this.device.beginRenderPass({framebuffer:r,...e});this.model.draw(i),i.end()}update(...e){console.warn("TextureTransform#update() not implemented")}getData({packed:e=!1}={}){throw new Error("getData() not implemented")}getTargetTexture(){let{targetTexture:e}=this.bindings[this.currentIndex];return e}getFramebuffer(){return this.bindings[this.currentIndex].framebuffer}_initialize(e){this._updateBindings(e)}_updateBindings(e){this.bindings[this.currentIndex]=this._updateBinding(this.bindings[this.currentIndex],e)}_updateBinding(e,{sourceBuffers:r,sourceTextures:i,targetTexture:s}){if(e||(e={sourceBuffers:{},sourceTextures:{},targetTexture:null}),Object.assign(e.sourceTextures,i),Object.assign(e.sourceBuffers,r),s){e.targetTexture=s;let{width:n,height:o}=s;e.framebuffer&&e.framebuffer.destroy(),e.framebuffer=this.device.createFramebuffer({id:"transform-framebuffer",width:n,height:o,colorAttachments:[s]}),e.framebuffer.resize({width:n,height:o})}return e}_setSourceTextureParameters(){let e=this.currentIndex,{sourceTextures:r}=this.bindings[e];for(let i in r)r[i].sampler=this.sampler}};var fe=class{id;topology;vertexCount;indices;attributes;userData={};constructor(e){let{attributes:r={},indices:i=null,vertexCount:s=null}=e;this.id=e.id||Fe("geometry"),this.topology=e.topology,i&&(this.indices=ArrayBuffer.isView(i)?{value:i,size:1}:i),this.attributes={};for(let[n,o]of Object.entries(r)){let a=ArrayBuffer.isView(o)?{value:o}:o;ee(ArrayBuffer.isView(a.value),`${this._print(n)}: must be typed array or object with value as typed array`),(n==="POSITION"||n==="positions")&&!a.size&&(a.size=3),n==="indices"?(ee(!this.indices),this.indices=a):this.attributes[n]=a}this.indices&&this.indices.isIndexed!==void 0&&(this.indices=Object.assign({},this.indices),delete this.indices.isIndexed),this.vertexCount=s||this._calculateVertexCount(this.attributes,this.indices)}getVertexCount(){return this.vertexCount}getAttributes(){return this.indices?{indices:this.indices,...this.attributes}:this.attributes}_print(e){return`Geometry ${this.id} attribute ${e}`}_setAttributes(e,r){return this}_calculateVertexCount(e,r){if(r)return r.value.length;let i=1/0;for(let s of Object.values(e)){let{value:n,size:o,constant:a}=s;!a&&n&&o>=1&&(i=Math.min(i,n.length/o))}return ee(Number.isFinite(i)),i}};var Fi=class extends fe{constructor(e={}){let{id:r=Fe("cube-geometry"),indices:i=!0}=e;super(i?{...e,id:r,topology:"triangle-list",indices:{size:1,value:DP},attributes:{...WP,...e.attributes}}:{...e,id:r,topology:"triangle-list",indices:void 0,attributes:{...HP,...e.attributes}})}},DP=new Uint16Array([0,1,2,0,2,3,4,5,6,4,6,7,8,9,10,8,10,11,12,13,14,12,14,15,16,17,18,16,18,19,20,21,22,20,22,23]),LP=new Float32Array([-1,-1,1,1,-1,1,1,1,1,-1,1,1,-1,-1,-1,-1,1,-1,1,1,-1,1,-1,-1,-1,1,-1,-1,1,1,1,1,1,1,1,-1,-1,-1,-1,1,-1,-1,1,-1,1,-1,-1,1,1,-1,-1,1,1,-1,1,1,1,1,-1,1,-1,-1,-1,-1,-1,1,-1,1,1,-1,1,-1]),kP=new Float32Array([0,0,1,0,0,1,0,0,1,0,0,1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,1,0,0,1,0,0,1,0,0,1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,1,0,0,1,0,0,1,0,0,1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0]),BP=new Float32Array([0,0,1,0,1,1,0,1,1,0,1,1,0,1,0,0,0,1,0,0,1,0,1,1,1,1,0,1,0,0,1,0,1,0,1,1,0,1,0,0,0,0,1,0,1,1,0,1]),UP=new Float32Array([1,-1,1,-1,-1,1,-1,-1,-1,1,-1,-1,1,-1,1,-1,-1,-1,1,1,1,1,-1,1,1,-1,-1,1,1,-1,1,1,1,1,-1,-1,-1,1,1,1,1,1,1,1,-1,-1,1,-1,-1,1,1,1,1,-1,-1,-1,1,-1,1,1,-1,1,-1,-1,-1,-1,-1,-1,1,-1,1,-1,1,1,1,-1,1,1,-1,-1,1,-1,-1,1,1,-1,1,1,1,1,1,-1,-1,-1,-1,-1,-1,1,-1,1,1,-1,1,-1,-1,-1,1,-1]),zP=new Float32Array([1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,0,0,1,0,1,1,1,1,0,1,0,0,1,0,1,1,0,0]),VP=new Float32Array([1,0,1,1,0,0,1,1,0,0,0,1,1,0,0,1,1,0,1,1,0,0,0,1,1,1,1,1,1,0,1,1,1,0,0,1,1,1,0,1,1,1,1,1,1,0,0,1,0,1,1,1,1,1,1,1,1,1,0,1,0,1,0,1,0,1,1,1,1,1,0,1,0,0,1,1,0,1,1,1,0,1,0,1,0,0,0,1,0,0,1,1,0,1,0,1,1,1,1,1,0,1,1,1,0,0,1,1,0,0,1,1,1,0,1,1,1,1,1,1,1,0,0,1,0,0,0,1,0,1,0,1,1,1,0,1,1,0,0,1,0,1,0,1]),WP={POSITION:{size:3,value:LP},NORMAL:{size:3,value:kP},TEXCOORD_0:{size:2,value:BP}},HP={POSITION:{size:3,value:UP},TEXCOORD_0:{size:2,value:zP},COLOR_0:{size:3,value:VP}};var jP={blendColorOperation:"add",blendColorSrcFactor:"one",blendColorDstFactor:"zero",blendAlphaOperation:"add",blendAlphaSrcFactor:"constant-alpha",blendAlphaDstFactor:"zero"},Di=class extends xr{constructor(){super(...arguments),this._colorEncoderState=null}render(e){return"pickingFBO"in e?this._drawPickingBuffer(e):super.render(e)}_drawPickingBuffer({layers:e,layerFilter:r,views:i,viewports:s,onViewportActive:n,pickingFBO:o,deviceRect:{x:a,y:c,width:l,height:u},cullRect:f,effects:h,pass:d="picking",pickZ:p,moduleParameters:g}){this.pickZ=p;let _=this._resetColorEncoder(p),x=[a,c,l,u],v=super.render({target:o,layers:e,layerFilter:r,views:i,viewports:s,onViewportActive:n,cullRect:f,effects:h?.filter(A=>A.useInPicking),pass:d,isPicking:!0,moduleParameters:g,clearColor:[0,0,0,0],colorMask:15,scissorRect:x});return this._colorEncoderState=null,{decodePickingColor:_&&$P.bind(null,_),stats:v}}shouldDrawLayer(e){let{pickable:r,operation:i}=e.props;return r&&i.includes("draw")||i.includes("terrain")||i.includes("mask")}getModuleParameters(){return{picking:{isActive:1,isAttribute:this.pickZ},lightSources:{}}}getLayerParameters(e,r,i){let s={depthMask:!0,depthTest:!0,depthRange:[0,1],...e.props.parameters},{pickable:n,operation:o}=e.props;return!this._colorEncoderState||o.includes("terrain")?s.blend=!1:n&&o.includes("draw")&&(Object.assign(s,jP),s.blend=!0,s.blendColor=XP(this._colorEncoderState,e,i)),s}_resetColorEncoder(e){return this._colorEncoderState=e?null:{byLayer:new Map,byAlpha:[]},this._colorEncoderState}};function XP(t,e,r){let{byLayer:i,byAlpha:s}=t,n,o=i.get(e);return o?(o.viewports.push(r),n=o.a):(n=i.size+1,n<=255?(o={a:n,layer:e,viewports:[r]},i.set(e,o),s[n]=o):(U.warn("Too many pickable layers, only picking the first 255")(),n=0)),[0,0,0,n/255]}function $P(t,e){let r=t.byAlpha[e[3]];return r&&{pickedLayer:r.layer,pickedViewports:r.viewports,pickedObjectIndex:r.layer.decodePickingColor(e)}}var Yr={NO_STATE:"Awaiting state",MATCHED:"Matched. State transferred from previous layer",INITIALIZED:"Initialized",AWAITING_GC:"Discarded. Awaiting garbage collection",AWAITING_FINALIZATION:"No longer matched. Awaiting garbage collection",FINALIZED:"Finalized! Awaiting garbage collection"},ws=Symbol.for("component"),vt=Symbol.for("propTypes"),Qc=Symbol.for("deprecatedProps"),Tr=Symbol.for("asyncPropDefaults"),tr=Symbol.for("asyncPropOriginal"),Ft=Symbol.for("asyncPropResolved");function bt(t,e=()=>!0){return Array.isArray(t)?Y_(t,e,[]):e(t)?[t]:[]}function Y_(t,e,r){let i=-1;for(;++i0}delete(){}getData(){return this.isLoaded?this._error?Promise.reject(this._error):this._content:this._loader.then(()=>this.getData())}setData(e,r){if(e===this._data&&!r)return;this._data=e;let i=++this._loadCount,s=e;typeof e=="string"&&(s=Lr(e)),s instanceof Promise?(this.isLoaded=!1,this._loader=s.then(n=>{this._loadCount===i&&(this.isLoaded=!0,this._error=void 0,this._content=n)}).catch(n=>{this._loadCount===i&&(this.isLoaded=!0,this._error=n||!0)})):(this.isLoaded=!0,this._error=void 0,this._content=e);for(let n of this._subscribers)n.onChange(this.getData())}};var lo=class{constructor(e){this.protocol=e.protocol||"resource://",this._context={device:e.device,gl:e.device?.gl,resourceManager:this},this._resources={},this._consumers={},this._pruneRequest=null}contains(e){return e.startsWith(this.protocol)?!0:e in this._resources}add({resourceId:e,data:r,forceUpdate:i=!1,persistent:s=!0}){let n=this._resources[e];n?n.setData(r,i):(n=new co(e,r,this._context),this._resources[e]=n),n.persistent=s}remove(e){let r=this._resources[e];r&&(r.delete(),delete this._resources[e])}unsubscribe({consumerId:e}){let r=this._consumers[e];if(r){for(let i in r){let s=r[i],n=this._resources[s.resourceId];n&&n.unsubscribe(s)}delete this._consumers[e],this.prune()}}subscribe({resourceId:e,onChange:r,consumerId:i,requestId:s="default"}){let{_resources:n,protocol:o}=this;e.startsWith(o)&&(e=e.replace(o,""),n[e]||this.add({resourceId:e,data:null,persistent:!1}));let a=n[e];if(this._track(i,s,a,r),a)return a.getData()}prune(){this._pruneRequest||(this._pruneRequest=setTimeout(()=>this._prune(),0))}finalize(){for(let e in this._resources)this._resources[e].delete()}_track(e,r,i,s){let n=this._consumers,o=n[e]=n[e]||{},a=o[r],c=a&&a.resourceId&&this._resources[a.resourceId];c&&(c.unsubscribe(a),this.prune()),i&&(a?(a.onChange=s,a.resourceId=i.id):a={onChange:s,resourceId:i.id},o[r]=a,i.subscribe(a))}_prune(){this._pruneRequest=null;for(let e of Object.keys(this._resources)){let r=this._resources[e];!r.persistent&&!r.inUse()&&(r.delete(),delete this._resources[e])}}};var YP="layerManager.setLayers",KP="layerManager.activateViewport",uo=class{constructor(e,r){this._lastRenderedLayers=[],this._needsRedraw=!1,this._needsUpdate=!1,this._nextLayers=null,this._debug=!1,this._defaultShaderModulesChanged=!1,this.activateViewport=a=>{xe(KP,this,a),a&&(this.context.viewport=a)};let{deck:i,stats:s,viewport:n,timeline:o}=r||{};this.layers=[],this.resourceManager=new lo({device:e,protocol:"deck://"}),this.context={mousePosition:null,userData:{},layerManager:this,device:e,gl:e?.gl,deck:i,shaderAssembler:ro(),defaultShaderModules:[],renderPass:void 0,stats:s||new dt({id:"deck.gl"}),viewport:n||new Oi({id:"DEFAULT-INITIAL-VIEWPORT"}),timeline:o||new Ni,resourceManager:this.resourceManager,onError:void 0},Object.seal(this)}finalize(){this.resourceManager.finalize();for(let e of this.layers)this._finalizeLayer(e)}needsRedraw(e={clearRedrawFlags:!1}){let r=this._needsRedraw;e.clearRedrawFlags&&(this._needsRedraw=!1);for(let i of this.layers){let s=i.getNeedsRedraw(e);r=r||s}return r}needsUpdate(){return this._nextLayers&&this._nextLayers!==this._lastRenderedLayers?"layers changed":this._defaultShaderModulesChanged?"shader modules changed":this._needsUpdate}setNeedsRedraw(e){this._needsRedraw=this._needsRedraw||e}setNeedsUpdate(e){this._needsUpdate=this._needsUpdate||e}getLayers({layerIds:e}={}){return e?this.layers.filter(r=>e.find(i=>r.id.indexOf(i)===0)):this.layers}setProps(e){"debug"in e&&(this._debug=e.debug),"userData"in e&&(this.context.userData=e.userData),"layers"in e&&(this._nextLayers=e.layers),"onError"in e&&(this.context.onError=e.onError)}setLayers(e,r){xe(YP,this,r,e),this._lastRenderedLayers=e;let i=bt(e,Boolean);for(let s of i)s.context=this.context;this._updateLayers(this.layers,i)}updateLayers(){let e=this.needsUpdate();e&&(this.setNeedsRedraw(`updating layers: ${e}`),this.setLayers(this._nextLayers||this._lastRenderedLayers,e)),this._nextLayers=null}addDefaultShaderModule(e){let{defaultShaderModules:r}=this.context;r.find(i=>i.name===e.name)||(r.push(e),this._defaultShaderModulesChanged=!0)}removeDefaultShaderModule(e){let{defaultShaderModules:r}=this.context,i=r.findIndex(s=>s.name===e.name);i>=0&&(r.splice(i,1),this._defaultShaderModulesChanged=!0)}_handleError(e,r,i){i.raiseError(r,`${e} of ${i}`)}_updateLayers(e,r){let i={};for(let o of e)i[o.id]?U.warn(`Multiple old layers with same id ${o.id}`)():i[o.id]=o;if(this._defaultShaderModulesChanged){for(let o of e)o.setNeedsUpdate(),o.setChangeFlags({extensionsChanged:!0});this._defaultShaderModulesChanged=!1}let s=[];this._updateSublayersRecursively(r,i,s),this._finalizeOldLayers(i);let n=!1;for(let o of s)if(o.hasUniformTransition()){n=`Uniform transition in ${o}`;break}this._needsUpdate=n,this.layers=s}_updateSublayersRecursively(e,r,i){for(let s of e){s.context=this.context;let n=r[s.id];n===null&&U.warn(`Multiple new layers with same id ${s.id}`)(),r[s.id]=null;let o=null;try{this._debug&&n!==s&&s.validateProps(),n?(this._transferLayerState(n,s),this._updateLayer(s)):this._initializeLayer(s),i.push(s),o=s.isComposite?s.getSubLayers():null}catch(a){this._handleError("matching",a,s)}o&&this._updateSublayersRecursively(o,r,i)}}_finalizeOldLayers(e){for(let r in e){let i=e[r];i&&this._finalizeLayer(i)}}_initializeLayer(e){try{e._initialize(),e.lifecycle=Yr.INITIALIZED}catch(r){this._handleError("initialization",r,e)}}_transferLayerState(e,r){r._transferState(e),r.lifecycle=Yr.MATCHED,r!==e&&(e.lifecycle=Yr.AWAITING_GC)}_updateLayer(e){try{e._update()}catch(r){this._handleError("update",r,e)}}_finalizeLayer(e){this._needsRedraw=this._needsRedraw||`finalized ${e}`,e.lifecycle=Yr.AWAITING_FINALIZATION;try{e._finalize(),e.lifecycle=Yr.FINALIZED}catch(r){this._handleError("finalization",r,e)}}};function Le(t,e,r){if(t===e)return!0;if(!r||!t||!e)return!1;if(Array.isArray(t)){if(!Array.isArray(e)||t.length!==e.length)return!1;for(let i=0;ir.containsPixel(e)):this._viewports}getViews(){let e={};return this.views.forEach(r=>{e[r.id]=r}),e}getView(e){return this.views.find(r=>r.id===e)}getViewState(e){let r=typeof e=="string"?this.getView(e):e,i=r&&this.viewState[r.getViewStateId()]||this.viewState;return r?r.filterViewState(i):i}getViewport(e){return this._viewportMap[e]}unproject(e,r){let i=this.getViewports(),s={x:e[0],y:e[1]};for(let n=i.length-1;n>=0;--n){let o=i[n];if(o.containsPixel(s)){let a=e.slice();return a[0]-=o.x,a[1]-=o.y,o.unproject(a,r)}}return null}setProps(e){e.views&&this._setViews(e.views),e.viewState&&this._setViewState(e.viewState),("width"in e||"height"in e)&&this._setSize(e.width,e.height),this._isUpdating||this._update()}_update(){this._isUpdating=!0,this._needsUpdate&&(this._needsUpdate=!1,this._rebuildViewports()),this._needsUpdate&&(this._needsUpdate=!1,this._rebuildViewports()),this._isUpdating=!1}_setSize(e,r){(e!==this.width||r!==this.height)&&(this.width=e,this.height=r,this.setNeedsUpdate("Size changed"))}_setViews(e){e=bt(e,Boolean),this._diffViews(e,this.views)&&this.setNeedsUpdate("views changed"),this.views=e}_setViewState(e){e?(!Le(e,this.viewState,3)&&this.setNeedsUpdate("viewState changed"),this.viewState=e):U.warn("missing `viewState` or `initialViewState`")()}_createController(e,r){let i=r.type;return new i({timeline:this.timeline,eventManager:this._eventManager,onViewStateChange:this._eventCallbacks.onViewStateChange,onStateChange:this._eventCallbacks.onInteractionStateChange,makeViewport:n=>this.getView(e.id)?.makeViewport({viewState:n,width:this.width,height:this.height})})}_updateController(e,r,i,s){let n=e.controller;if(n&&i){let o={...r,...n,id:e.id,x:i.x,y:i.y,width:i.width,height:i.height};return(!s||s.constructor!==n.type)&&(s=this._createController(e,o)),s&&s.setProps(o),s}return null}_rebuildViewports(){let{views:e}=this,r=this.controllers;this._viewports=[],this.controllers={};let i=!1;for(let s=e.length;s--;){let n=e[s],o=this.getViewState(n),a=n.makeViewport({viewState:o,width:this.width,height:this.height}),c=r[n.id],l=!!n.controller;l&&!c&&(i=!0),(i||!l)&&c&&(c.finalize(),c=null),this.controllers[n.id]=this._updateController(n,o,a,c),a&&this._viewports.unshift(a)}for(let s in r){let n=r[s];n&&!this.controllers[s]&&n.finalize()}this._buildViewportMap()}_buildViewportMap(){this._viewportMap={},this._viewports.forEach(e=>{e.id&&(this._viewportMap[e.id]=this._viewportMap[e.id]||e)})}_diffViews(e,r){return e.length!==r.length?!0:e.some((i,s)=>!e[s].equals(r[s]))}};var qP=/([0-9]+\.?[0-9]*)(%|px)/;function vr(t){switch(typeof t){case"number":return{position:t,relative:!1};case"string":let e=qP.exec(t);if(e&&e.length>=3){let r=e[2]==="%",i=parseFloat(e[1]);return{position:r?i/100:i,relative:r}}default:throw new Error(`Could not parse position string ${t}`)}}function br(t,e){return t.relative?Math.round(t.position*e):t.position}var ho=class{constructor(e){let{id:r,x:i=0,y:s=0,width:n="100%",height:o="100%",padding:a=null}=e;this.id=r||this.constructor.displayName||"view",this.props={...e,id:this.id},this._x=vr(i),this._y=vr(s),this._width=vr(n),this._height=vr(o),this._padding=a&&{left:vr(a.left||0),right:vr(a.right||0),top:vr(a.top||0),bottom:vr(a.bottom||0)},this.equals=this.equals.bind(this),Object.seal(this)}equals(e){return this===e?!0:this.ViewportType===e.ViewportType&&Le(this.props,e.props,2)}makeViewport({width:e,height:r,viewState:i}){i=this.filterViewState(i);let s=this.getDimensions({width:e,height:r});return!s.height||!s.width?null:new this.ViewportType({...i,...this.props,...s})}getViewStateId(){let{viewState:e}=this.props;return typeof e=="string"?e:e?.id||this.id}filterViewState(e){if(this.props.viewState&&typeof this.props.viewState=="object"){if(!this.props.viewState.id)return this.props.viewState;let r={...e};for(let i in this.props.viewState)i!=="id"&&(r[i]=this.props.viewState[i]);return r}return e}getDimensions({width:e,height:r}){let i={x:br(this._x,e),y:br(this._y,r),width:br(this._width,e),height:br(this._height,r)};return this._padding&&(i.padding={left:br(this._padding.left,e),top:br(this._padding.top,r),right:br(this._padding.right,e),bottom:br(this._padding.bottom,r)}),i}get controller(){let e=this.props.controller;return e?e===!0?{type:this.ControllerType}:typeof e=="function"?{type:e}:{type:this.ControllerType,...e}:null}};var Dt=class{constructor(e){this._inProgress=!1,this._handle=null,this.time=0,this.settings={duration:0},this._timeline=e}get inProgress(){return this._inProgress}start(e){this.cancel(),this.settings=e,this._inProgress=!0,this.settings.onStart?.(this)}end(){this._inProgress&&(this._timeline.removeChannel(this._handle),this._handle=null,this._inProgress=!1,this.settings.onEnd?.(this))}cancel(){this._inProgress&&(this.settings.onInterrupt?.(this),this._timeline.removeChannel(this._handle),this._handle=null,this._inProgress=!1)}update(){if(!this._inProgress)return!1;if(this._handle===null){let{_timeline:e,settings:r}=this;this._handle=e.addChannel({delay:e.getTime(),duration:r.duration})}return this.time=this._timeline.getTime(this._handle),this._onUpdate(),this.settings.onUpdate?.(this),this._timeline.isFinished(this._handle)&&this.end(),!0}_onUpdate(){}};var K_=()=>{},id={BREAK:1,SNAP_TO_END:2,IGNORE:3},GP=t=>t,ZP=id.BREAK,po=class{constructor(e){this._onTransitionUpdate=r=>{let{time:i,settings:{interpolator:s,startProps:n,endProps:o,duration:a,easing:c}}=r,l=c(i/a),u=s.interpolateProps(n,o,l);this.propsInTransition=this.getControllerState({...this.props,...u}).getViewportProps(),this.onViewStateChange({viewState:this.propsInTransition,oldViewState:this.props})},this.getControllerState=e.getControllerState,this.propsInTransition=null,this.transition=new Dt(e.timeline),this.onViewStateChange=e.onViewStateChange||K_,this.onStateChange=e.onStateChange||K_}finalize(){this.transition.cancel()}getViewportInTransition(){return this.propsInTransition}processViewStateChange(e){let r=!1,i=this.props;if(this.props=e,!i||this._shouldIgnoreViewportChange(i,e))return!1;if(this._isTransitionEnabled(e)){let s=i;if(this.transition.inProgress){let{interruption:n,endProps:o}=this.transition.settings;s={...i,...n===id.SNAP_TO_END?o:this.propsInTransition||i}}this._triggerTransition(s,e),r=!0}else this.transition.cancel();return r}updateTransition(){this.transition.update()}_isTransitionEnabled(e){let{transitionDuration:r,transitionInterpolator:i}=e;return(r>0||r==="auto")&&!!i}_isUpdateDueToCurrentTransition(e){return this.transition.inProgress&&this.propsInTransition?this.transition.settings.interpolator.arePropsEqual(e,this.propsInTransition):!1}_shouldIgnoreViewportChange(e,r){return this.transition.inProgress?this.transition.settings.interruption===id.IGNORE||this._isUpdateDueToCurrentTransition(r):this._isTransitionEnabled(r)?r.transitionInterpolator.arePropsEqual(e,r):!0}_triggerTransition(e,r){let i=this.getControllerState(e),s=this.getControllerState(r).shortestPathFrom(i),n=r.transitionInterpolator,o=n.getDuration?n.getDuration(e,r):r.transitionDuration;if(o===0)return;let a=n.initializeProps(e,s);this.propsInTransition={};let c={duration:o,easing:r.transitionEasing||GP,interpolator:n,interruption:r.transitionInterruption||ZP,startProps:a.start,endProps:a.end,onStart:r.onTransitionStart,onUpdate:this._onTransitionUpdate,onInterrupt:this._onTransitionEnd(r.onTransitionInterrupt),onEnd:this._onTransitionEnd(r.onTransitionEnd)};this.transition.start(c),this.onStateChange({inTransition:!0}),this.updateTransition()}_onTransitionEnd(e){return r=>{this.propsInTransition=null,this.onStateChange({inTransition:!1,isZooming:!1,isPanning:!1,isRotating:!1}),e?.(r)}}};function oe(t,e){if(!t)throw new Error(e||"deck.gl: assertion failed.")}var go=class{constructor(e){let{compare:r,extract:i,required:s}=e;this._propsToCompare=r,this._propsToExtract=i||r,this._requiredProps=s}arePropsEqual(e,r){for(let i of this._propsToCompare)if(!(i in e)||!(i in r)||!yr(e[i],r[i]))return!1;return!0}initializeProps(e,r){let i={},s={};for(let n of this._propsToExtract)(n in e||n in r)&&(i[n]=e[n],s[n]=r[n]);return this._checkRequiredProps(i),this._checkRequiredProps(s),{start:i,end:s}}getDuration(e,r){return r.transitionDuration}_checkRequiredProps(e){this._requiredProps&&this._requiredProps.forEach(r=>{let i=e[r];oe(Number.isFinite(i)||Array.isArray(i),`${r} is required for transition`)})}};var JP=["longitude","latitude","zoom","bearing","pitch"],QP=["longitude","latitude","zoom"],Li=class extends go{constructor(e={}){let r=Array.isArray(e)?e:e.transitionProps,i=Array.isArray(e)?{}:e;i.transitionProps=Array.isArray(r)?{compare:r,required:r}:r||{compare:JP,required:QP},super(i.transitionProps),this.opts=i}initializeProps(e,r){let i=super.initializeProps(e,r),{makeViewport:s,around:n}=this.opts;if(s&&n){let o=s(e),a=s(r),c=o.unproject(n);i.start.around=n,Object.assign(i.end,{around:a.project(c),aroundPosition:c,width:r.width,height:r.height})}return i}interpolateProps(e,r,i){let s={};for(let n of this._propsToExtract)s[n]=Ct(e[n]||0,r[n]||0,i);if(r.aroundPosition&&this.opts.makeViewport){let n=this.opts.makeViewport({...r,...s});Object.assign(s,n.panByPosition(r.aroundPosition,Ct(e.around,r.around,i)))}return s}};var Kr={transitionDuration:0},eR=300,el=t=>1-(1-t)*(1-t),Ps={WHEEL:["wheel"],PAN:["panstart","panmove","panend"],PINCH:["pinchstart","pinchmove","pinchend"],TRIPLE_PAN:["tripanstart","tripanmove","tripanend"],DOUBLE_TAP:["doubletap"],KEYBOARD:["keydown"]},ki={},mo=class{constructor(e){this.state={},this._events={},this._interactionState={isDragging:!1},this._customEvents=[],this._eventStartBlocked=null,this._panMove=!1,this.invertPan=!1,this.dragMode="rotate",this.inertia=0,this.scrollZoom=!0,this.dragPan=!0,this.dragRotate=!0,this.doubleClickZoom=!0,this.touchZoom=!0,this.touchRotate=!1,this.keyboard=!0,this.transitionManager=new po({...e,getControllerState:r=>new this.ControllerState(r),onViewStateChange:this._onTransition.bind(this),onStateChange:this._setInteractionState.bind(this)}),this.handleEvent=this.handleEvent.bind(this),this.eventManager=e.eventManager,this.onViewStateChange=e.onViewStateChange||(()=>{}),this.onStateChange=e.onStateChange||(()=>{}),this.makeViewport=e.makeViewport}set events(e){this.toggleEvents(this._customEvents,!1),this.toggleEvents(e,!0),this._customEvents=e,this.props&&this.setProps(this.props)}finalize(){for(let e in this._events)this._events[e]&&this.eventManager?.off(e,this.handleEvent);this.transitionManager.finalize()}handleEvent(e){this._controllerState=void 0;let r=this._eventStartBlocked;switch(e.type){case"panstart":return r?!1:this._onPanStart(e);case"panmove":return this._onPan(e);case"panend":return this._onPanEnd(e);case"pinchstart":return r?!1:this._onPinchStart(e);case"pinchmove":return this._onPinch(e);case"pinchend":return this._onPinchEnd(e);case"tripanstart":return r?!1:this._onTriplePanStart(e);case"tripanmove":return this._onTriplePan(e);case"tripanend":return this._onTriplePanEnd(e);case"doubletap":return this._onDoubleTap(e);case"wheel":return this._onWheel(e);case"keydown":return this._onKeyDown(e);default:return!1}}get controllerState(){return this._controllerState=this._controllerState||new this.ControllerState({makeViewport:this.makeViewport,...this.props,...this.state}),this._controllerState}getCenter(e){let{x:r,y:i}=this.props,{offsetCenter:s}=e;return[s.x-r,s.y-i]}isPointInBounds(e,r){let{width:i,height:s}=this.props;if(r&&r.handled)return!1;let n=e[0]>=0&&e[0]<=i&&e[1]>=0&&e[1]<=s;return n&&r&&r.stopPropagation(),n}isFunctionKeyPressed(e){let{srcEvent:r}=e;return!!(r.metaKey||r.altKey||r.ctrlKey||r.shiftKey)}isDragging(){return this._interactionState.isDragging||!1}blockEvents(e){let r=setTimeout(()=>{this._eventStartBlocked===r&&(this._eventStartBlocked=null)},e);this._eventStartBlocked=r}setProps(e){e.dragMode&&(this.dragMode=e.dragMode),this.props=e,"transitionInterpolator"in e||(e.transitionInterpolator=this._getTransitionProps().transitionInterpolator),this.transitionManager.processViewStateChange(e);let{inertia:r}=e;this.inertia=Number.isFinite(r)?r:r===!0?eR:0;let{scrollZoom:i=!0,dragPan:s=!0,dragRotate:n=!0,doubleClickZoom:o=!0,touchZoom:a=!0,touchRotate:c=!1,keyboard:l=!0}=e,u=!!this.onViewStateChange;this.toggleEvents(Ps.WHEEL,u&&i),this.toggleEvents(Ps.PAN,u),this.toggleEvents(Ps.PINCH,u&&(a||c)),this.toggleEvents(Ps.TRIPLE_PAN,u&&c),this.toggleEvents(Ps.DOUBLE_TAP,u&&o),this.toggleEvents(Ps.KEYBOARD,u&&l),this.scrollZoom=i,this.dragPan=s,this.dragRotate=n,this.doubleClickZoom=o,this.touchZoom=a,this.touchRotate=c,this.keyboard=l}updateTransition(){this.transitionManager.updateTransition()}toggleEvents(e,r){this.eventManager&&e.forEach(i=>{this._events[i]!==r&&(this._events[i]=r,r?this.eventManager.on(i,this.handleEvent):this.eventManager.off(i,this.handleEvent))})}updateViewport(e,r=null,i={}){let s={...e.getViewportProps(),...r},n=this.controllerState!==e;if(this.state=e.getState(),this._setInteractionState(i),n){let o=this.controllerState&&this.controllerState.getViewportProps();this.onViewStateChange&&this.onViewStateChange({viewState:s,interactionState:this._interactionState,oldViewState:o,viewId:this.props.id})}}_onTransition(e){this.onViewStateChange({...e,interactionState:this._interactionState,viewId:this.props.id})}_setInteractionState(e){Object.assign(this._interactionState,e),this.onStateChange(this._interactionState)}_onPanStart(e){let r=this.getCenter(e);if(!this.isPointInBounds(r,e))return!1;let i=this.isFunctionKeyPressed(e)||e.rightButton||!1;(this.invertPan||this.dragMode==="pan")&&(i=!i);let s=this.controllerState[i?"panStart":"rotateStart"]({pos:r});return this._panMove=i,this.updateViewport(s,Kr,{isDragging:!0}),!0}_onPan(e){return this.isDragging()?this._panMove?this._onPanMove(e):this._onPanRotate(e):!1}_onPanEnd(e){return this.isDragging()?this._panMove?this._onPanMoveEnd(e):this._onPanRotateEnd(e):!1}_onPanMove(e){if(!this.dragPan)return!1;let r=this.getCenter(e),i=this.controllerState.pan({pos:r});return this.updateViewport(i,Kr,{isDragging:!0,isPanning:!0}),!0}_onPanMoveEnd(e){let{inertia:r}=this;if(this.dragPan&&r&&e.velocity){let i=this.getCenter(e),s=[i[0]+e.velocityX*r/2,i[1]+e.velocityY*r/2],n=this.controllerState.pan({pos:s}).panEnd();this.updateViewport(n,{...this._getTransitionProps(),transitionDuration:r,transitionEasing:el},{isDragging:!1,isPanning:!0})}else{let i=this.controllerState.panEnd();this.updateViewport(i,null,{isDragging:!1,isPanning:!1})}return!0}_onPanRotate(e){if(!this.dragRotate)return!1;let r=this.getCenter(e),i=this.controllerState.rotate({pos:r});return this.updateViewport(i,Kr,{isDragging:!0,isRotating:!0}),!0}_onPanRotateEnd(e){let{inertia:r}=this;if(this.dragRotate&&r&&e.velocity){let i=this.getCenter(e),s=[i[0]+e.velocityX*r/2,i[1]+e.velocityY*r/2],n=this.controllerState.rotate({pos:s}).rotateEnd();this.updateViewport(n,{...this._getTransitionProps(),transitionDuration:r,transitionEasing:el},{isDragging:!1,isRotating:!0})}else{let i=this.controllerState.rotateEnd();this.updateViewport(i,null,{isDragging:!1,isRotating:!1})}return!0}_onWheel(e){if(!this.scrollZoom)return!1;let r=this.getCenter(e);if(!this.isPointInBounds(r,e))return!1;e.srcEvent.preventDefault();let{speed:i=.01,smooth:s=!1}=this.scrollZoom===!0?{}:this.scrollZoom,{delta:n}=e,o=2/(1+Math.exp(-Math.abs(n*i)));n<0&&o!==0&&(o=1/o);let a=this.controllerState.zoom({pos:r,scale:o});return this.updateViewport(a,{...this._getTransitionProps({around:r}),transitionDuration:s?250:1},{isZooming:!0,isPanning:!0}),!0}_onTriplePanStart(e){let r=this.getCenter(e);if(!this.isPointInBounds(r,e))return!1;let i=this.controllerState.rotateStart({pos:r});return this.updateViewport(i,Kr,{isDragging:!0}),!0}_onTriplePan(e){if(!this.touchRotate||!this.isDragging())return!1;let r=this.getCenter(e);r[0]-=e.deltaX;let i=this.controllerState.rotate({pos:r});return this.updateViewport(i,Kr,{isDragging:!0,isRotating:!0}),!0}_onTriplePanEnd(e){if(!this.isDragging())return!1;let{inertia:r}=this;if(this.touchRotate&&r&&e.velocityY){let i=this.getCenter(e),s=[i[0],i[1]+=e.velocityY*r/2],n=this.controllerState.rotate({pos:s});this.updateViewport(n,{...this._getTransitionProps(),transitionDuration:r,transitionEasing:el},{isDragging:!1,isRotating:!0}),this.blockEvents(r)}else{let i=this.controllerState.rotateEnd();this.updateViewport(i,null,{isDragging:!1,isRotating:!1})}return!0}_onPinchStart(e){let r=this.getCenter(e);if(!this.isPointInBounds(r,e))return!1;let i=this.controllerState.zoomStart({pos:r}).rotateStart({pos:r});return ki._startPinchRotation=e.rotation,ki._lastPinchEvent=e,this.updateViewport(i,Kr,{isDragging:!0}),!0}_onPinch(e){if(!this.touchZoom&&!this.touchRotate||!this.isDragging())return!1;let r=this.controllerState;if(this.touchZoom){let{scale:i}=e,s=this.getCenter(e);r=r.zoom({pos:s,scale:i})}if(this.touchRotate){let{rotation:i}=e;r=r.rotate({deltaAngleX:ki._startPinchRotation-i})}return this.updateViewport(r,Kr,{isDragging:!0,isPanning:this.touchZoom,isZooming:this.touchZoom,isRotating:this.touchRotate}),ki._lastPinchEvent=e,!0}_onPinchEnd(e){if(!this.isDragging())return!1;let{inertia:r}=this,{_lastPinchEvent:i}=ki;if(this.touchZoom&&r&&i&&e.scale!==i.scale){let s=this.getCenter(e),n=this.controllerState.rotateEnd(),o=Math.log2(e.scale),a=(o-Math.log2(i.scale))/(e.deltaTime-i.deltaTime),c=Math.pow(2,o+a*r/2);n=n.zoom({pos:s,scale:c}).zoomEnd(),this.updateViewport(n,{...this._getTransitionProps({around:s}),transitionDuration:r,transitionEasing:el},{isDragging:!1,isPanning:this.touchZoom,isZooming:this.touchZoom,isRotating:!1}),this.blockEvents(r)}else{let s=this.controllerState.zoomEnd().rotateEnd();this.updateViewport(s,null,{isDragging:!1,isPanning:!1,isZooming:!1,isRotating:!1})}return ki._startPinchRotation=null,ki._lastPinchEvent=null,!0}_onDoubleTap(e){if(!this.doubleClickZoom)return!1;let r=this.getCenter(e);if(!this.isPointInBounds(r,e))return!1;let i=this.isFunctionKeyPressed(e),s=this.controllerState.zoom({pos:r,scale:i?.5:2});return this.updateViewport(s,this._getTransitionProps({around:r}),{isZooming:!0,isPanning:!0}),this.blockEvents(100),!0}_onKeyDown(e){if(!this.keyboard)return!1;let r=this.isFunctionKeyPressed(e),{zoomSpeed:i,moveSpeed:s,rotateSpeedX:n,rotateSpeedY:o}=this.keyboard===!0?{}:this.keyboard,{controllerState:a}=this,c,l={};switch(e.srcEvent.code){case"Minus":c=r?a.zoomOut(i).zoomOut(i):a.zoomOut(i),l.isZooming=!0;break;case"Equal":c=r?a.zoomIn(i).zoomIn(i):a.zoomIn(i),l.isZooming=!0;break;case"ArrowLeft":r?(c=a.rotateLeft(n),l.isRotating=!0):(c=a.moveLeft(s),l.isPanning=!0);break;case"ArrowRight":r?(c=a.rotateRight(n),l.isRotating=!0):(c=a.moveRight(s),l.isPanning=!0);break;case"ArrowUp":r?(c=a.rotateUp(o),l.isRotating=!0):(c=a.moveUp(s),l.isPanning=!0);break;case"ArrowDown":r?(c=a.rotateDown(o),l.isRotating=!0):(c=a.moveDown(s),l.isPanning=!0);break;default:return!1}return this.updateViewport(c,this._getTransitionProps(),l),!0}_getTransitionProps(e){let{transition:r}=this;return!r||!r.transitionInterpolator?Kr:e?{...r,transitionInterpolator:new Li({...e,...r.transitionInterpolator.opts,makeViewport:this.controllerState.makeViewport})}:r}};var _o=class{constructor(e,r){this._viewportProps=this.applyConstraints(e),this._state=r}getViewportProps(){return this._viewportProps}getState(){return this._state}};var q_=5,tR=1.2,sd=class extends _o{constructor(e){let{width:r,height:i,latitude:s,longitude:n,zoom:o,bearing:a=0,pitch:c=0,altitude:l=1.5,position:u=[0,0,0],maxZoom:f=20,minZoom:h=0,maxPitch:d=60,minPitch:p=0,startPanLngLat:g,startZoomLngLat:_,startRotatePos:x,startBearing:v,startPitch:b,startZoom:A,normalize:C=!0}=e;oe(Number.isFinite(n)),oe(Number.isFinite(s)),oe(Number.isFinite(o)),super({width:r,height:i,latitude:s,longitude:n,zoom:o,bearing:a,pitch:c,altitude:l,maxZoom:f,minZoom:h,maxPitch:d,minPitch:p,normalize:C,position:u},{startPanLngLat:g,startZoomLngLat:_,startRotatePos:x,startBearing:v,startPitch:b,startZoom:A}),this.makeViewport=e.makeViewport}panStart({pos:e}){return this._getUpdatedState({startPanLngLat:this._unproject(e)})}pan({pos:e,startPos:r}){let i=this.getState().startPanLngLat||this._unproject(r);if(!i)return this;let n=this.makeViewport(this.getViewportProps()).panByPosition(i,e);return this._getUpdatedState(n)}panEnd(){return this._getUpdatedState({startPanLngLat:null})}rotateStart({pos:e}){return this._getUpdatedState({startRotatePos:e,startBearing:this.getViewportProps().bearing,startPitch:this.getViewportProps().pitch})}rotate({pos:e,deltaAngleX:r=0,deltaAngleY:i=0}){let{startRotatePos:s,startBearing:n,startPitch:o}=this.getState();if(!s||n===void 0||o===void 0)return this;let a;return e?a=this._getNewRotation(e,s,o,n):a={bearing:n+r,pitch:o+i},this._getUpdatedState(a)}rotateEnd(){return this._getUpdatedState({startBearing:null,startPitch:null})}zoomStart({pos:e}){return this._getUpdatedState({startZoomLngLat:this._unproject(e),startZoom:this.getViewportProps().zoom})}zoom({pos:e,startPos:r,scale:i}){let{startZoom:s,startZoomLngLat:n}=this.getState();if(n||(s=this.getViewportProps().zoom,n=this._unproject(r)||this._unproject(e)),!n)return this;let{maxZoom:o,minZoom:a}=this.getViewportProps(),c=s+Math.log2(i);c=yt(c,a,o);let l=this.makeViewport({...this.getViewportProps(),zoom:c});return this._getUpdatedState({zoom:c,...l.panByPosition(n,e)})}zoomEnd(){return this._getUpdatedState({startZoomLngLat:null,startZoom:null})}zoomIn(e=2){return this._zoomFromCenter(e)}zoomOut(e=2){return this._zoomFromCenter(1/e)}moveLeft(e=100){return this._panFromCenter([e,0])}moveRight(e=100){return this._panFromCenter([-e,0])}moveUp(e=100){return this._panFromCenter([0,e])}moveDown(e=100){return this._panFromCenter([0,-e])}rotateLeft(e=15){return this._getUpdatedState({bearing:this.getViewportProps().bearing-e})}rotateRight(e=15){return this._getUpdatedState({bearing:this.getViewportProps().bearing+e})}rotateUp(e=10){return this._getUpdatedState({pitch:this.getViewportProps().pitch+e})}rotateDown(e=10){return this._getUpdatedState({pitch:this.getViewportProps().pitch-e})}shortestPathFrom(e){let r=e.getViewportProps(),i={...this.getViewportProps()},{bearing:s,longitude:n}=i;return Math.abs(s-r.bearing)>180&&(i.bearing=s<0?s+360:s-360),Math.abs(n-r.longitude)>180&&(i.longitude=n<0?n+360:n-360),i}applyConstraints(e){let{maxZoom:r,minZoom:i,zoom:s}=e;e.zoom=yt(s,i,r);let{maxPitch:n,minPitch:o,pitch:a}=e;e.pitch=yt(a,o,n);let{normalize:c=!0}=e;return c&&Object.assign(e,Zh(e)),e}_zoomFromCenter(e){let{width:r,height:i}=this.getViewportProps();return this.zoom({pos:[r/2,i/2],scale:e})}_panFromCenter(e){let{width:r,height:i}=this.getViewportProps();return this.pan({startPos:[r/2,i/2],pos:[r/2+e[0],i/2+e[1]]})}_getUpdatedState(e){return new this.constructor({makeViewport:this.makeViewport,...this.getViewportProps(),...this.getState(),...e})}_unproject(e){let r=this.makeViewport(this.getViewportProps());return e&&r.unproject(e)}_getNewRotation(e,r,i,s){let n=e[0]-r[0],o=e[1]-r[1],a=e[1],c=r[1],{width:l,height:u}=this.getViewportProps(),f=n/l,h=0;o>0?Math.abs(u-c)>q_&&(h=o/(c-u)*tR):o<0&&c>q_&&(h=1-a/c),h=yt(h,-1,1);let{minPitch:d,maxPitch:p}=this.getViewportProps(),g=s+180*f,_=i;return h>0?_=i+h*(p-i):h<0&&(_=i-h*(d-i)),{pitch:_,bearing:g}}},yo=class extends mo{constructor(){super(...arguments),this.ControllerState=sd,this.transition={transitionDuration:300,transitionInterpolator:new Li({transitionProps:{compare:["longitude","latitude","zoom","bearing","pitch","position"],required:["longitude","latitude","zoom"]}})},this.dragMode="pan"}setProps(e){e.position=e.position||[0,0,0];let r=this.props;super.setProps(e),(!r||r.height!==e.height)&&this.updateViewport(new this.ControllerState({makeViewport:this.makeViewport,...e,...this.state}))}};var qr=class extends ho{static{this.displayName="MapView"}constructor(e={}){super(e)}get ViewportType(){return er}get ControllerType(){return yo}};var rR=new bs;function iR(t,e){let r=t.order??1/0,i=e.order??1/0;return r-i}var xo=class{constructor(e){this._resolvedEffects=[],this._defaultEffects=[],this.effects=[],this._context=e,this._needsRedraw="Initial render",this._setEffects([])}addDefaultEffect(e){let r=this._defaultEffects;if(!r.find(i=>i.id===e.id)){let i=r.findIndex(s=>iR(s,e)>0);i<0?r.push(e):r.splice(i,0,e),e.setup(this._context),this._setEffects(this.effects)}}setProps(e){"effects"in e&&(Le(e.effects,this.effects,1)||this._setEffects(e.effects))}needsRedraw(e={clearRedrawFlags:!1}){let r=this._needsRedraw;return e.clearRedrawFlags&&(this._needsRedraw=!1),r}getEffects(){return this._resolvedEffects}_setEffects(e){let r={};for(let s of this.effects)r[s.id]=s;let i=[];for(let s of e){let n=r[s.id],o=s;n&&n!==s?n.setProps?(n.setProps(s.props),o=n):n.cleanup(this._context):n||s.setup(this._context),i.push(o),delete r[s.id]}for(let s in r)r[s].cleanup(this._context);this.effects=i,this._resolvedEffects=i.concat(this._defaultEffects),e.some(s=>s instanceof bs)||this._resolvedEffects.push(rR),this._needsRedraw="effects changed"}finalize(){for(let e of this._resolvedEffects)e.cleanup(this._context);this.effects.length=0,this._resolvedEffects.length=0,this._defaultEffects.length=0}};var To=class extends xr{shouldDrawLayer(e){let{operation:r}=e.props;return r.includes("draw")||r.includes("terrain")}};var sR="deckRenderer.renderLayers",vo=class{constructor(e){this.device=e,this.gl=e.gl,this.layerFilter=null,this.drawPickingColors=!1,this.drawLayersPass=new To(e),this.pickLayersPass=new Di(e),this.renderCount=0,this._needsRedraw="Initial render",this.renderBuffers=[],this.lastPostProcessEffect=null}setProps(e){this.layerFilter!==e.layerFilter&&(this.layerFilter=e.layerFilter,this._needsRedraw="layerFilter changed"),this.drawPickingColors!==e.drawPickingColors&&(this.drawPickingColors=e.drawPickingColors,this._needsRedraw="drawPickingColors changed")}renderLayers(e){if(!e.viewports.length)return;let r=this.drawPickingColors?this.pickLayersPass:this.drawLayersPass,i={layerFilter:this.layerFilter,isPicking:this.drawPickingColors,...e};i.effects&&this._preRender(i.effects,i);let s=this.lastPostProcessEffect?this.renderBuffers[0]:i.target;this.lastPostProcessEffect&&(i.clearColor=[0,0,0,0],i.clearCanvas=!0);let n=r.render({...i,target:s});i.effects&&this._postRender(i.effects,i),this.renderCount++,xe(sR,this,n,e)}needsRedraw(e={clearRedrawFlags:!1}){let r=this._needsRedraw;return e.clearRedrawFlags&&(this._needsRedraw=!1),r}finalize(){let{renderBuffers:e}=this;for(let r of e)r.delete();e.length=0}_preRender(e,r){this.lastPostProcessEffect=null,r.preRenderStats=r.preRenderStats||{};for(let i of e)r.preRenderStats[i.id]=i.preRender(r),i.postRender&&(this.lastPostProcessEffect=i.id);this.lastPostProcessEffect&&this._resizeRenderBuffers()}_resizeRenderBuffers(){let{renderBuffers:e}=this,r=this.device.canvasContext.getDrawingBufferSize();e.length===0&&[0,1].map(i=>{let s=this.device.createTexture({sampler:{minFilter:"linear",magFilter:"linear"}});e.push(this.device.createFramebuffer({id:`deck-renderbuffer-${i}`,colorAttachments:[s]}))});for(let i of e)i.resize(r)}_postRender(e,r){let{renderBuffers:i}=this,s={...r,inputBuffer:i[0],swapBuffer:i[1]};for(let n of e)if(n.postRender){s.target=n.id===this.lastPostProcessEffect?r.target:void 0;let o=n.postRender(s);s.inputBuffer=o,s.swapBuffer=o===i[0]?i[1]:i[0]}}};var nR={pickedColor:null,pickedObjectIndex:-1};function G_({pickedColors:t,decodePickingColor:e,deviceX:r,deviceY:i,deviceRadius:s,deviceRect:n}){let{x:o,y:a,width:c,height:l}=n,u=s*s,f=-1,h=0;for(let d=0;du)h+=4*c;else for(let _=0;_=0){let v=_+o-r,b=v*v+g;b<=u&&(u=b,f=h)}h+=4}}if(f>=0){let d=t.slice(f,f+4),p=e(d);if(p){let g=Math.floor(f/4/c),_=f/4-g*c;return{...p,pickedColor:d,pickedX:o+_,pickedY:a+g}}U.error("Picked non-existent layer. Is picking buffer corrupt?")()}return nR}function Z_({pickedColors:t,decodePickingColor:e}){let r=new Map;if(t){for(let i=0;i=0){let n=t.slice(i,i+4),o=n.join(",");if(!r.has(o)){let a=e(n);a?r.set(o,{...a,color:n}):U.error("Picked non-existent layer. Is picking buffer corrupt?")()}}}return Array.from(r.values())}function nd({pickInfo:t,viewports:e,pixelRatio:r,x:i,y:s,z:n}){let o=e[0];e.length>1&&(o=oR(t?.pickedViewports||e,{x:i,y:s}));let a;if(o){let c=[i-o.x,s-o.y];n!==void 0&&(c[2]=n),a=o.unproject(c)}return{color:null,layer:null,viewport:o,index:-1,picked:!1,x:i,y:s,pixel:[i,s],coordinate:a,devicePixel:t&&"pickedX"in t?[t.pickedX,t.pickedY]:void 0,pixelRatio:r}}function J_(t){let{pickInfo:e,lastPickedInfo:r,mode:i,layers:s}=t,{pickedColor:n,pickedLayer:o,pickedObjectIndex:a}=e,c=o?[o]:[];if(i==="hover"){let f=r.index,h=r.layerId,d=o?o.props.id:null;if(d!==h||a!==f){if(d!==h){let p=s.find(g=>g.props.id===h);p&&c.unshift(p)}r.layerId=d,r.index=a,r.info=null}}let l=nd(t),u=new Map;return u.set(null,l),c.forEach(f=>{let h={...l};f===o&&(h.color=n,h.index=a,h.picked=!0),h=od({layer:f,info:h,mode:i});let d=h.layer;f===o&&i==="hover"&&(r.info=h),u.set(d.id,h),i==="hover"&&d.updateAutoHighlight(h)}),u}function od({layer:t,info:e,mode:r}){for(;t&&e;){let i=e.layer||null;e.sourceLayer=i,e.layer=t,e=t.getPickingInfo({info:e,mode:r,sourceLayer:i}),t=t.parent}return e}function oR(t,e){for(let r=t.length-1;r>=0;r--){let i=t[r];if(i.containsPixel(e))return i}return t[0]}var bo=class{constructor(e){this._pickable=!0,this.device=e,this.pickLayersPass=new Di(e),this.lastPickedInfo={index:-1,layerId:null,info:null}}setProps(e){"layerFilter"in e&&(this.layerFilter=e.layerFilter),"_pickable"in e&&(this._pickable=e._pickable)}finalize(){this.pickingFBO&&this.pickingFBO.destroy(),this.depthFBO&&this.depthFBO.destroy()}pickObject(e){return this._pickClosestObject(e)}pickObjects(e){return this._pickVisibleObjects(e)}getLastPickedObject({x:e,y:r,layers:i,viewports:s},n=this.lastPickedInfo.info){let o=n&&n.layer&&n.layer.id,a=n&&n.viewport&&n.viewport.id,c=o?i.find(h=>h.id===o):null,l=a&&s.find(h=>h.id===a)||s[0],u=l&&l.unproject([e-l.x,r-l.y]);return{...n,...{x:e,y:r,viewport:l,coordinate:u,layer:c}}}_resizeBuffer(){if(!this.pickingFBO&&(this.pickingFBO=this.device.createFramebuffer({colorAttachments:["rgba8unorm"],depthStencilAttachment:"depth16unorm"}),this.device.isTextureFormatRenderable("rgba32float"))){let r=this.device.createFramebuffer({colorAttachments:["rgba32float"],depthStencilAttachment:"depth16unorm"});this.depthFBO=r}let e=this.device.gl;this.pickingFBO?.resize({width:e.canvas.width,height:e.canvas.height}),this.depthFBO?.resize({width:e.canvas.width,height:e.canvas.height})}_getPickable(e){if(this._pickable===!1)return null;let r=e.filter(i=>this.pickLayersPass.shouldDrawLayer(i)&&!i.isComposite);return r.length?r:null}_pickClosestObject({layers:e,views:r,viewports:i,x:s,y:n,radius:o=0,depth:a=1,mode:c="query",unproject3D:l,onViewportActive:u,effects:f}){let h=this.device.canvasContext.cssToDeviceRatio(),d=this._getPickable(e);if(!d||i.length===0)return{result:[],emptyInfo:nd({viewports:i,x:s,y:n,pixelRatio:h})};this._resizeBuffer();let p=this.device.canvasContext.cssToDevicePixels([s,n],!0),g=[p.x+Math.floor(p.width/2),p.y+Math.floor(p.height/2)],_=Math.round(o*h),{width:x,height:v}=this.pickingFBO,b=this._getPickingRect({deviceX:g[0],deviceY:g[1],deviceRadius:_,deviceWidth:x,deviceHeight:v}),A={x:s-o,y:n-o,width:o*2+1,height:o*2+1},C,M=[],F=new Set;for(let N=0;N=l);L++){let Y=M[L],X={color:Y.pickedColor,layer:null,index:Y.pickedObjectIndex,picked:!0,x:s,y:n,pixelRatio:d};X=od({layer:Y.pickedLayer,info:X,mode:c});let $=X.layer.id;F.has($)||F.set($,new Set);let Z=F.get($),ge=X.object??X.index;Z.has(ge)||(Z.add(ge),N.push(X))}return N}_drawAndSample({layers:e,views:r,viewports:i,onViewportActive:s,deviceRect:n,cullRect:o,effects:a,pass:c},l=!1){let u=l?this.depthFBO:this.pickingFBO,f={layers:e,layerFilter:this.layerFilter,views:r,viewports:i,onViewportActive:s,pickingFBO:u,deviceRect:n,cullRect:o,effects:a,pass:c,pickZ:l,preRenderStats:{}};for(let v of a)v.useInPicking&&(f.preRenderStats[v.id]=v.preRender(f));let{decodePickingColor:h}=this.pickLayersPass.render(f),{x:d,y:p,width:g,height:_}=n,x=new(l?Float32Array:Uint8Array)(g*_*4);return this.device.readPixelsToArrayWebGL(u,{sourceX:d,sourceY:p,sourceWidth:g,sourceHeight:_,target:x}),{pickedColors:x,decodePickingColor:h}}_getPickingRect({deviceX:e,deviceY:r,deviceRadius:i,deviceWidth:s,deviceHeight:n}){let o=Math.max(0,e-i),a=Math.max(0,r-i),c=Math.min(s,e+i+1)-o,l=Math.min(n,r+i+1)-a;return c<=0||l<=0?null:{x:o,y:a,width:c,height:l}}};var aR={"top-left":{top:0,left:0},"top-right":{top:0,right:0},"bottom-left":{bottom:0,left:0},"bottom-right":{bottom:0,right:0},fill:{top:0,left:0,bottom:0,right:0}},cR="top-left",Q_="__root",tl=class{constructor({deck:e,parentElement:r}){this.defaultWidgets=[],this.widgets=[],this.resolvedWidgets=[],this.containers={},this.lastViewports={},this.deck=e,this.parentElement=r}getWidgets(){return this.resolvedWidgets}setProps(e){e.widgets&&!Le(e.widgets,this.widgets,1)&&this._setWidgets(e.widgets)}finalize(){for(let e of this.getWidgets())this._remove(e);this.defaultWidgets.length=0,this.resolvedWidgets.length=0;for(let e in this.containers)this.containers[e].remove()}addDefault(e){this.defaultWidgets.find(r=>r.id===e.id)||(this._add(e),this.defaultWidgets.push(e),this._setWidgets(this.widgets))}_setWidgets(e){let r={};for(let i of this.resolvedWidgets)r[i.id]=i;this.resolvedWidgets.length=0;for(let i of this.defaultWidgets)r[i.id]=null,this.resolvedWidgets.push(i);for(let i of e){let s=r[i.id];s?s.viewId!==i.viewId||s.placement!==i.placement?(this._remove(s),this._add(i)):i!==s&&(s.setProps(i.props),i=s):this._add(i),r[i.id]=null,this.resolvedWidgets.push(i)}for(let i in r){let s=r[i];s&&this._remove(s)}this.widgets=e}_add(e){let{viewId:r=null,placement:i=cR}=e,s=e.onAdd({deck:this.deck,viewId:r});s&&this._getContainer(r,i).append(s),e._element=s}_remove(e){e.onRemove(),e._element&&e._element.remove(),e._element=void 0}_getContainer(e,r){let i=e||Q_,s=this.containers[i];s||(s=document.createElement("div"),s.style.pointerEvents="none",s.style.position="absolute",s.style.overflow="hidden",this.parentElement?.append(s),this.containers[i]=s);let n=s.querySelector(`.${r}`);return n||(n=document.createElement("div"),n.className=r,n.style.position="absolute",n.style.zIndex="2",Object.assign(n.style,aR[r]),s.append(n)),n}_updateContainers(){let e=this.deck.width,r=this.deck.height;for(let i in this.containers){let s=this.lastViewports[i]||null,n=i===Q_||s,o=this.containers[i];n?(o.style.display="block",o.style.left=`${s?s.x:0}px`,o.style.top=`${s?s.y:0}px`,o.style.width=`${s?s.width:e}px`,o.style.height=`${s?s.height:r}px`):o.style.display="none"}}onRedraw({viewports:e,layers:r}){let i=e.reduce((n,o)=>(n[o.id]=o,n),{}),{lastViewports:s}=this;for(let n of this.getWidgets()){let{viewId:o}=n;if(o){let a=i[o];a&&(n.onViewportChange&&!a.equals(s[o])&&n.onViewportChange(a),n.onRedraw?.({viewports:[a],layers:r}))}else{if(n.onViewportChange)for(let a of e)a.equals(s[a.id])||n.onViewportChange(a);n.onRedraw?.({viewports:e,layers:r})}}this.lastViewports=i,this._updateContainers()}onHover(e,r){for(let i of this.getWidgets()){let{viewId:s}=i;(!s||s===e.viewport?.id)&&i.onHover?.(e,r)}}onEvent(e,r){let i=Jn[r.type];if(i)for(let s of this.getWidgets()){let{viewId:n}=s;(!n||n===e.viewport?.id)&&s[i.handler]?.(e,r)}}};var lR={zIndex:"1",position:"absolute",pointerEvents:"none",color:"#a0a7b4",backgroundColor:"#29323c",padding:"10px",top:"0",left:"0",display:"none"},So=class{constructor(){this.id="default-tooltip",this.placement="fill",this.props={},this.isVisible=!1}onAdd({deck:e}){let r=document.createElement("div");return r.className="deck-tooltip",Object.assign(r.style,lR),this.deck=e,this.element=r,r}onRemove(){this.deck=void 0,this.element=void 0}setProps(){}onViewportChange(e){this.isVisible&&e.id===this.lastViewport?.id&&e!==this.lastViewport&&this.setTooltip(null)}onHover(e){let{deck:r}=this,i=r&&r.props.getTooltip;if(!i)return;let s=i(e);this.lastViewport=e.viewport,this.setTooltip(s,e.x,e.y)}setTooltip(e,r,i){let s=this.element;if(s){if(typeof e=="string")s.innerText=e;else if(e)e.text&&(s.innerText=e.text),e.html&&(s.innerHTML=e.html),e.className&&(s.className=e.className);else{this.isVisible=!1,s.style.display="none";return}this.isVisible=!0,s.style.display="block",s.style.transform=`translate(${r}px, ${i}px)`,e&&typeof e=="object"&&"style"in e&&Object.assign(s.style,e.style)}}};var Gr;(function(t){t[t.DEPTH_BUFFER_BIT=256]="DEPTH_BUFFER_BIT",t[t.STENCIL_BUFFER_BIT=1024]="STENCIL_BUFFER_BIT",t[t.COLOR_BUFFER_BIT=16384]="COLOR_BUFFER_BIT",t[t.POINTS=0]="POINTS",t[t.LINES=1]="LINES",t[t.LINE_LOOP=2]="LINE_LOOP",t[t.LINE_STRIP=3]="LINE_STRIP",t[t.TRIANGLES=4]="TRIANGLES",t[t.TRIANGLE_STRIP=5]="TRIANGLE_STRIP",t[t.TRIANGLE_FAN=6]="TRIANGLE_FAN",t[t.ZERO=0]="ZERO",t[t.ONE=1]="ONE",t[t.SRC_COLOR=768]="SRC_COLOR",t[t.ONE_MINUS_SRC_COLOR=769]="ONE_MINUS_SRC_COLOR",t[t.SRC_ALPHA=770]="SRC_ALPHA",t[t.ONE_MINUS_SRC_ALPHA=771]="ONE_MINUS_SRC_ALPHA",t[t.DST_ALPHA=772]="DST_ALPHA",t[t.ONE_MINUS_DST_ALPHA=773]="ONE_MINUS_DST_ALPHA",t[t.DST_COLOR=774]="DST_COLOR",t[t.ONE_MINUS_DST_COLOR=775]="ONE_MINUS_DST_COLOR",t[t.SRC_ALPHA_SATURATE=776]="SRC_ALPHA_SATURATE",t[t.CONSTANT_COLOR=32769]="CONSTANT_COLOR",t[t.ONE_MINUS_CONSTANT_COLOR=32770]="ONE_MINUS_CONSTANT_COLOR",t[t.CONSTANT_ALPHA=32771]="CONSTANT_ALPHA",t[t.ONE_MINUS_CONSTANT_ALPHA=32772]="ONE_MINUS_CONSTANT_ALPHA",t[t.FUNC_ADD=32774]="FUNC_ADD",t[t.FUNC_SUBTRACT=32778]="FUNC_SUBTRACT",t[t.FUNC_REVERSE_SUBTRACT=32779]="FUNC_REVERSE_SUBTRACT",t[t.BLEND_EQUATION=32777]="BLEND_EQUATION",t[t.BLEND_EQUATION_RGB=32777]="BLEND_EQUATION_RGB",t[t.BLEND_EQUATION_ALPHA=34877]="BLEND_EQUATION_ALPHA",t[t.BLEND_DST_RGB=32968]="BLEND_DST_RGB",t[t.BLEND_SRC_RGB=32969]="BLEND_SRC_RGB",t[t.BLEND_DST_ALPHA=32970]="BLEND_DST_ALPHA",t[t.BLEND_SRC_ALPHA=32971]="BLEND_SRC_ALPHA",t[t.BLEND_COLOR=32773]="BLEND_COLOR",t[t.ARRAY_BUFFER_BINDING=34964]="ARRAY_BUFFER_BINDING",t[t.ELEMENT_ARRAY_BUFFER_BINDING=34965]="ELEMENT_ARRAY_BUFFER_BINDING",t[t.LINE_WIDTH=2849]="LINE_WIDTH",t[t.ALIASED_POINT_SIZE_RANGE=33901]="ALIASED_POINT_SIZE_RANGE",t[t.ALIASED_LINE_WIDTH_RANGE=33902]="ALIASED_LINE_WIDTH_RANGE",t[t.CULL_FACE_MODE=2885]="CULL_FACE_MODE",t[t.FRONT_FACE=2886]="FRONT_FACE",t[t.DEPTH_RANGE=2928]="DEPTH_RANGE",t[t.DEPTH_WRITEMASK=2930]="DEPTH_WRITEMASK",t[t.DEPTH_CLEAR_VALUE=2931]="DEPTH_CLEAR_VALUE",t[t.DEPTH_FUNC=2932]="DEPTH_FUNC",t[t.STENCIL_CLEAR_VALUE=2961]="STENCIL_CLEAR_VALUE",t[t.STENCIL_FUNC=2962]="STENCIL_FUNC",t[t.STENCIL_FAIL=2964]="STENCIL_FAIL",t[t.STENCIL_PASS_DEPTH_FAIL=2965]="STENCIL_PASS_DEPTH_FAIL",t[t.STENCIL_PASS_DEPTH_PASS=2966]="STENCIL_PASS_DEPTH_PASS",t[t.STENCIL_REF=2967]="STENCIL_REF",t[t.STENCIL_VALUE_MASK=2963]="STENCIL_VALUE_MASK",t[t.STENCIL_WRITEMASK=2968]="STENCIL_WRITEMASK",t[t.STENCIL_BACK_FUNC=34816]="STENCIL_BACK_FUNC",t[t.STENCIL_BACK_FAIL=34817]="STENCIL_BACK_FAIL",t[t.STENCIL_BACK_PASS_DEPTH_FAIL=34818]="STENCIL_BACK_PASS_DEPTH_FAIL",t[t.STENCIL_BACK_PASS_DEPTH_PASS=34819]="STENCIL_BACK_PASS_DEPTH_PASS",t[t.STENCIL_BACK_REF=36003]="STENCIL_BACK_REF",t[t.STENCIL_BACK_VALUE_MASK=36004]="STENCIL_BACK_VALUE_MASK",t[t.STENCIL_BACK_WRITEMASK=36005]="STENCIL_BACK_WRITEMASK",t[t.VIEWPORT=2978]="VIEWPORT",t[t.SCISSOR_BOX=3088]="SCISSOR_BOX",t[t.COLOR_CLEAR_VALUE=3106]="COLOR_CLEAR_VALUE",t[t.COLOR_WRITEMASK=3107]="COLOR_WRITEMASK",t[t.UNPACK_ALIGNMENT=3317]="UNPACK_ALIGNMENT",t[t.PACK_ALIGNMENT=3333]="PACK_ALIGNMENT",t[t.MAX_TEXTURE_SIZE=3379]="MAX_TEXTURE_SIZE",t[t.MAX_VIEWPORT_DIMS=3386]="MAX_VIEWPORT_DIMS",t[t.SUBPIXEL_BITS=3408]="SUBPIXEL_BITS",t[t.RED_BITS=3410]="RED_BITS",t[t.GREEN_BITS=3411]="GREEN_BITS",t[t.BLUE_BITS=3412]="BLUE_BITS",t[t.ALPHA_BITS=3413]="ALPHA_BITS",t[t.DEPTH_BITS=3414]="DEPTH_BITS",t[t.STENCIL_BITS=3415]="STENCIL_BITS",t[t.POLYGON_OFFSET_UNITS=10752]="POLYGON_OFFSET_UNITS",t[t.POLYGON_OFFSET_FACTOR=32824]="POLYGON_OFFSET_FACTOR",t[t.TEXTURE_BINDING_2D=32873]="TEXTURE_BINDING_2D",t[t.SAMPLE_BUFFERS=32936]="SAMPLE_BUFFERS",t[t.SAMPLES=32937]="SAMPLES",t[t.SAMPLE_COVERAGE_VALUE=32938]="SAMPLE_COVERAGE_VALUE",t[t.SAMPLE_COVERAGE_INVERT=32939]="SAMPLE_COVERAGE_INVERT",t[t.COMPRESSED_TEXTURE_FORMATS=34467]="COMPRESSED_TEXTURE_FORMATS",t[t.VENDOR=7936]="VENDOR",t[t.RENDERER=7937]="RENDERER",t[t.VERSION=7938]="VERSION",t[t.IMPLEMENTATION_COLOR_READ_TYPE=35738]="IMPLEMENTATION_COLOR_READ_TYPE",t[t.IMPLEMENTATION_COLOR_READ_FORMAT=35739]="IMPLEMENTATION_COLOR_READ_FORMAT",t[t.BROWSER_DEFAULT_WEBGL=37444]="BROWSER_DEFAULT_WEBGL",t[t.STATIC_DRAW=35044]="STATIC_DRAW",t[t.STREAM_DRAW=35040]="STREAM_DRAW",t[t.DYNAMIC_DRAW=35048]="DYNAMIC_DRAW",t[t.ARRAY_BUFFER=34962]="ARRAY_BUFFER",t[t.ELEMENT_ARRAY_BUFFER=34963]="ELEMENT_ARRAY_BUFFER",t[t.BUFFER_SIZE=34660]="BUFFER_SIZE",t[t.BUFFER_USAGE=34661]="BUFFER_USAGE",t[t.CURRENT_VERTEX_ATTRIB=34342]="CURRENT_VERTEX_ATTRIB",t[t.VERTEX_ATTRIB_ARRAY_ENABLED=34338]="VERTEX_ATTRIB_ARRAY_ENABLED",t[t.VERTEX_ATTRIB_ARRAY_SIZE=34339]="VERTEX_ATTRIB_ARRAY_SIZE",t[t.VERTEX_ATTRIB_ARRAY_STRIDE=34340]="VERTEX_ATTRIB_ARRAY_STRIDE",t[t.VERTEX_ATTRIB_ARRAY_TYPE=34341]="VERTEX_ATTRIB_ARRAY_TYPE",t[t.VERTEX_ATTRIB_ARRAY_NORMALIZED=34922]="VERTEX_ATTRIB_ARRAY_NORMALIZED",t[t.VERTEX_ATTRIB_ARRAY_POINTER=34373]="VERTEX_ATTRIB_ARRAY_POINTER",t[t.VERTEX_ATTRIB_ARRAY_BUFFER_BINDING=34975]="VERTEX_ATTRIB_ARRAY_BUFFER_BINDING",t[t.CULL_FACE=2884]="CULL_FACE",t[t.FRONT=1028]="FRONT",t[t.BACK=1029]="BACK",t[t.FRONT_AND_BACK=1032]="FRONT_AND_BACK",t[t.BLEND=3042]="BLEND",t[t.DEPTH_TEST=2929]="DEPTH_TEST",t[t.DITHER=3024]="DITHER",t[t.POLYGON_OFFSET_FILL=32823]="POLYGON_OFFSET_FILL",t[t.SAMPLE_ALPHA_TO_COVERAGE=32926]="SAMPLE_ALPHA_TO_COVERAGE",t[t.SAMPLE_COVERAGE=32928]="SAMPLE_COVERAGE",t[t.SCISSOR_TEST=3089]="SCISSOR_TEST",t[t.STENCIL_TEST=2960]="STENCIL_TEST",t[t.NO_ERROR=0]="NO_ERROR",t[t.INVALID_ENUM=1280]="INVALID_ENUM",t[t.INVALID_VALUE=1281]="INVALID_VALUE",t[t.INVALID_OPERATION=1282]="INVALID_OPERATION",t[t.OUT_OF_MEMORY=1285]="OUT_OF_MEMORY",t[t.CONTEXT_LOST_WEBGL=37442]="CONTEXT_LOST_WEBGL",t[t.CW=2304]="CW",t[t.CCW=2305]="CCW",t[t.DONT_CARE=4352]="DONT_CARE",t[t.FASTEST=4353]="FASTEST",t[t.NICEST=4354]="NICEST",t[t.GENERATE_MIPMAP_HINT=33170]="GENERATE_MIPMAP_HINT",t[t.BYTE=5120]="BYTE",t[t.UNSIGNED_BYTE=5121]="UNSIGNED_BYTE",t[t.SHORT=5122]="SHORT",t[t.UNSIGNED_SHORT=5123]="UNSIGNED_SHORT",t[t.INT=5124]="INT",t[t.UNSIGNED_INT=5125]="UNSIGNED_INT",t[t.FLOAT=5126]="FLOAT",t[t.DOUBLE=5130]="DOUBLE",t[t.DEPTH_COMPONENT=6402]="DEPTH_COMPONENT",t[t.ALPHA=6406]="ALPHA",t[t.RGB=6407]="RGB",t[t.RGBA=6408]="RGBA",t[t.LUMINANCE=6409]="LUMINANCE",t[t.LUMINANCE_ALPHA=6410]="LUMINANCE_ALPHA",t[t.UNSIGNED_SHORT_4_4_4_4=32819]="UNSIGNED_SHORT_4_4_4_4",t[t.UNSIGNED_SHORT_5_5_5_1=32820]="UNSIGNED_SHORT_5_5_5_1",t[t.UNSIGNED_SHORT_5_6_5=33635]="UNSIGNED_SHORT_5_6_5",t[t.FRAGMENT_SHADER=35632]="FRAGMENT_SHADER",t[t.VERTEX_SHADER=35633]="VERTEX_SHADER",t[t.COMPILE_STATUS=35713]="COMPILE_STATUS",t[t.DELETE_STATUS=35712]="DELETE_STATUS",t[t.LINK_STATUS=35714]="LINK_STATUS",t[t.VALIDATE_STATUS=35715]="VALIDATE_STATUS",t[t.ATTACHED_SHADERS=35717]="ATTACHED_SHADERS",t[t.ACTIVE_ATTRIBUTES=35721]="ACTIVE_ATTRIBUTES",t[t.ACTIVE_UNIFORMS=35718]="ACTIVE_UNIFORMS",t[t.MAX_VERTEX_ATTRIBS=34921]="MAX_VERTEX_ATTRIBS",t[t.MAX_VERTEX_UNIFORM_VECTORS=36347]="MAX_VERTEX_UNIFORM_VECTORS",t[t.MAX_VARYING_VECTORS=36348]="MAX_VARYING_VECTORS",t[t.MAX_COMBINED_TEXTURE_IMAGE_UNITS=35661]="MAX_COMBINED_TEXTURE_IMAGE_UNITS",t[t.MAX_VERTEX_TEXTURE_IMAGE_UNITS=35660]="MAX_VERTEX_TEXTURE_IMAGE_UNITS",t[t.MAX_TEXTURE_IMAGE_UNITS=34930]="MAX_TEXTURE_IMAGE_UNITS",t[t.MAX_FRAGMENT_UNIFORM_VECTORS=36349]="MAX_FRAGMENT_UNIFORM_VECTORS",t[t.SHADER_TYPE=35663]="SHADER_TYPE",t[t.SHADING_LANGUAGE_VERSION=35724]="SHADING_LANGUAGE_VERSION",t[t.CURRENT_PROGRAM=35725]="CURRENT_PROGRAM",t[t.NEVER=512]="NEVER",t[t.LESS=513]="LESS",t[t.EQUAL=514]="EQUAL",t[t.LEQUAL=515]="LEQUAL",t[t.GREATER=516]="GREATER",t[t.NOTEQUAL=517]="NOTEQUAL",t[t.GEQUAL=518]="GEQUAL",t[t.ALWAYS=519]="ALWAYS",t[t.KEEP=7680]="KEEP",t[t.REPLACE=7681]="REPLACE",t[t.INCR=7682]="INCR",t[t.DECR=7683]="DECR",t[t.INVERT=5386]="INVERT",t[t.INCR_WRAP=34055]="INCR_WRAP",t[t.DECR_WRAP=34056]="DECR_WRAP",t[t.NEAREST=9728]="NEAREST",t[t.LINEAR=9729]="LINEAR",t[t.NEAREST_MIPMAP_NEAREST=9984]="NEAREST_MIPMAP_NEAREST",t[t.LINEAR_MIPMAP_NEAREST=9985]="LINEAR_MIPMAP_NEAREST",t[t.NEAREST_MIPMAP_LINEAR=9986]="NEAREST_MIPMAP_LINEAR",t[t.LINEAR_MIPMAP_LINEAR=9987]="LINEAR_MIPMAP_LINEAR",t[t.TEXTURE_MAG_FILTER=10240]="TEXTURE_MAG_FILTER",t[t.TEXTURE_MIN_FILTER=10241]="TEXTURE_MIN_FILTER",t[t.TEXTURE_WRAP_S=10242]="TEXTURE_WRAP_S",t[t.TEXTURE_WRAP_T=10243]="TEXTURE_WRAP_T",t[t.TEXTURE_2D=3553]="TEXTURE_2D",t[t.TEXTURE=5890]="TEXTURE",t[t.TEXTURE_CUBE_MAP=34067]="TEXTURE_CUBE_MAP",t[t.TEXTURE_BINDING_CUBE_MAP=34068]="TEXTURE_BINDING_CUBE_MAP",t[t.TEXTURE_CUBE_MAP_POSITIVE_X=34069]="TEXTURE_CUBE_MAP_POSITIVE_X",t[t.TEXTURE_CUBE_MAP_NEGATIVE_X=34070]="TEXTURE_CUBE_MAP_NEGATIVE_X",t[t.TEXTURE_CUBE_MAP_POSITIVE_Y=34071]="TEXTURE_CUBE_MAP_POSITIVE_Y",t[t.TEXTURE_CUBE_MAP_NEGATIVE_Y=34072]="TEXTURE_CUBE_MAP_NEGATIVE_Y",t[t.TEXTURE_CUBE_MAP_POSITIVE_Z=34073]="TEXTURE_CUBE_MAP_POSITIVE_Z",t[t.TEXTURE_CUBE_MAP_NEGATIVE_Z=34074]="TEXTURE_CUBE_MAP_NEGATIVE_Z",t[t.MAX_CUBE_MAP_TEXTURE_SIZE=34076]="MAX_CUBE_MAP_TEXTURE_SIZE",t[t.TEXTURE0=33984]="TEXTURE0",t[t.ACTIVE_TEXTURE=34016]="ACTIVE_TEXTURE",t[t.REPEAT=10497]="REPEAT",t[t.CLAMP_TO_EDGE=33071]="CLAMP_TO_EDGE",t[t.MIRRORED_REPEAT=33648]="MIRRORED_REPEAT",t[t.TEXTURE_WIDTH=4096]="TEXTURE_WIDTH",t[t.TEXTURE_HEIGHT=4097]="TEXTURE_HEIGHT",t[t.FLOAT_VEC2=35664]="FLOAT_VEC2",t[t.FLOAT_VEC3=35665]="FLOAT_VEC3",t[t.FLOAT_VEC4=35666]="FLOAT_VEC4",t[t.INT_VEC2=35667]="INT_VEC2",t[t.INT_VEC3=35668]="INT_VEC3",t[t.INT_VEC4=35669]="INT_VEC4",t[t.BOOL=35670]="BOOL",t[t.BOOL_VEC2=35671]="BOOL_VEC2",t[t.BOOL_VEC3=35672]="BOOL_VEC3",t[t.BOOL_VEC4=35673]="BOOL_VEC4",t[t.FLOAT_MAT2=35674]="FLOAT_MAT2",t[t.FLOAT_MAT3=35675]="FLOAT_MAT3",t[t.FLOAT_MAT4=35676]="FLOAT_MAT4",t[t.SAMPLER_2D=35678]="SAMPLER_2D",t[t.SAMPLER_CUBE=35680]="SAMPLER_CUBE",t[t.LOW_FLOAT=36336]="LOW_FLOAT",t[t.MEDIUM_FLOAT=36337]="MEDIUM_FLOAT",t[t.HIGH_FLOAT=36338]="HIGH_FLOAT",t[t.LOW_INT=36339]="LOW_INT",t[t.MEDIUM_INT=36340]="MEDIUM_INT",t[t.HIGH_INT=36341]="HIGH_INT",t[t.FRAMEBUFFER=36160]="FRAMEBUFFER",t[t.RENDERBUFFER=36161]="RENDERBUFFER",t[t.RGBA4=32854]="RGBA4",t[t.RGB5_A1=32855]="RGB5_A1",t[t.RGB565=36194]="RGB565",t[t.DEPTH_COMPONENT16=33189]="DEPTH_COMPONENT16",t[t.STENCIL_INDEX=6401]="STENCIL_INDEX",t[t.STENCIL_INDEX8=36168]="STENCIL_INDEX8",t[t.DEPTH_STENCIL=34041]="DEPTH_STENCIL",t[t.RENDERBUFFER_WIDTH=36162]="RENDERBUFFER_WIDTH",t[t.RENDERBUFFER_HEIGHT=36163]="RENDERBUFFER_HEIGHT",t[t.RENDERBUFFER_INTERNAL_FORMAT=36164]="RENDERBUFFER_INTERNAL_FORMAT",t[t.RENDERBUFFER_RED_SIZE=36176]="RENDERBUFFER_RED_SIZE",t[t.RENDERBUFFER_GREEN_SIZE=36177]="RENDERBUFFER_GREEN_SIZE",t[t.RENDERBUFFER_BLUE_SIZE=36178]="RENDERBUFFER_BLUE_SIZE",t[t.RENDERBUFFER_ALPHA_SIZE=36179]="RENDERBUFFER_ALPHA_SIZE",t[t.RENDERBUFFER_DEPTH_SIZE=36180]="RENDERBUFFER_DEPTH_SIZE",t[t.RENDERBUFFER_STENCIL_SIZE=36181]="RENDERBUFFER_STENCIL_SIZE",t[t.FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE=36048]="FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE",t[t.FRAMEBUFFER_ATTACHMENT_OBJECT_NAME=36049]="FRAMEBUFFER_ATTACHMENT_OBJECT_NAME",t[t.FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL=36050]="FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL",t[t.FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE=36051]="FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE",t[t.COLOR_ATTACHMENT0=36064]="COLOR_ATTACHMENT0",t[t.DEPTH_ATTACHMENT=36096]="DEPTH_ATTACHMENT",t[t.STENCIL_ATTACHMENT=36128]="STENCIL_ATTACHMENT",t[t.DEPTH_STENCIL_ATTACHMENT=33306]="DEPTH_STENCIL_ATTACHMENT",t[t.NONE=0]="NONE",t[t.FRAMEBUFFER_COMPLETE=36053]="FRAMEBUFFER_COMPLETE",t[t.FRAMEBUFFER_INCOMPLETE_ATTACHMENT=36054]="FRAMEBUFFER_INCOMPLETE_ATTACHMENT",t[t.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT=36055]="FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT",t[t.FRAMEBUFFER_INCOMPLETE_DIMENSIONS=36057]="FRAMEBUFFER_INCOMPLETE_DIMENSIONS",t[t.FRAMEBUFFER_UNSUPPORTED=36061]="FRAMEBUFFER_UNSUPPORTED",t[t.FRAMEBUFFER_BINDING=36006]="FRAMEBUFFER_BINDING",t[t.RENDERBUFFER_BINDING=36007]="RENDERBUFFER_BINDING",t[t.READ_FRAMEBUFFER=36008]="READ_FRAMEBUFFER",t[t.DRAW_FRAMEBUFFER=36009]="DRAW_FRAMEBUFFER",t[t.MAX_RENDERBUFFER_SIZE=34024]="MAX_RENDERBUFFER_SIZE",t[t.INVALID_FRAMEBUFFER_OPERATION=1286]="INVALID_FRAMEBUFFER_OPERATION",t[t.UNPACK_FLIP_Y_WEBGL=37440]="UNPACK_FLIP_Y_WEBGL",t[t.UNPACK_PREMULTIPLY_ALPHA_WEBGL=37441]="UNPACK_PREMULTIPLY_ALPHA_WEBGL",t[t.UNPACK_COLORSPACE_CONVERSION_WEBGL=37443]="UNPACK_COLORSPACE_CONVERSION_WEBGL",t[t.READ_BUFFER=3074]="READ_BUFFER",t[t.UNPACK_ROW_LENGTH=3314]="UNPACK_ROW_LENGTH",t[t.UNPACK_SKIP_ROWS=3315]="UNPACK_SKIP_ROWS",t[t.UNPACK_SKIP_PIXELS=3316]="UNPACK_SKIP_PIXELS",t[t.PACK_ROW_LENGTH=3330]="PACK_ROW_LENGTH",t[t.PACK_SKIP_ROWS=3331]="PACK_SKIP_ROWS",t[t.PACK_SKIP_PIXELS=3332]="PACK_SKIP_PIXELS",t[t.TEXTURE_BINDING_3D=32874]="TEXTURE_BINDING_3D",t[t.UNPACK_SKIP_IMAGES=32877]="UNPACK_SKIP_IMAGES",t[t.UNPACK_IMAGE_HEIGHT=32878]="UNPACK_IMAGE_HEIGHT",t[t.MAX_3D_TEXTURE_SIZE=32883]="MAX_3D_TEXTURE_SIZE",t[t.MAX_ELEMENTS_VERTICES=33e3]="MAX_ELEMENTS_VERTICES",t[t.MAX_ELEMENTS_INDICES=33001]="MAX_ELEMENTS_INDICES",t[t.MAX_TEXTURE_LOD_BIAS=34045]="MAX_TEXTURE_LOD_BIAS",t[t.MAX_FRAGMENT_UNIFORM_COMPONENTS=35657]="MAX_FRAGMENT_UNIFORM_COMPONENTS",t[t.MAX_VERTEX_UNIFORM_COMPONENTS=35658]="MAX_VERTEX_UNIFORM_COMPONENTS",t[t.MAX_ARRAY_TEXTURE_LAYERS=35071]="MAX_ARRAY_TEXTURE_LAYERS",t[t.MIN_PROGRAM_TEXEL_OFFSET=35076]="MIN_PROGRAM_TEXEL_OFFSET",t[t.MAX_PROGRAM_TEXEL_OFFSET=35077]="MAX_PROGRAM_TEXEL_OFFSET",t[t.MAX_VARYING_COMPONENTS=35659]="MAX_VARYING_COMPONENTS",t[t.FRAGMENT_SHADER_DERIVATIVE_HINT=35723]="FRAGMENT_SHADER_DERIVATIVE_HINT",t[t.RASTERIZER_DISCARD=35977]="RASTERIZER_DISCARD",t[t.VERTEX_ARRAY_BINDING=34229]="VERTEX_ARRAY_BINDING",t[t.MAX_VERTEX_OUTPUT_COMPONENTS=37154]="MAX_VERTEX_OUTPUT_COMPONENTS",t[t.MAX_FRAGMENT_INPUT_COMPONENTS=37157]="MAX_FRAGMENT_INPUT_COMPONENTS",t[t.MAX_SERVER_WAIT_TIMEOUT=37137]="MAX_SERVER_WAIT_TIMEOUT",t[t.MAX_ELEMENT_INDEX=36203]="MAX_ELEMENT_INDEX",t[t.RED=6403]="RED",t[t.RGB8=32849]="RGB8",t[t.RGBA8=32856]="RGBA8",t[t.RGB10_A2=32857]="RGB10_A2",t[t.TEXTURE_3D=32879]="TEXTURE_3D",t[t.TEXTURE_WRAP_R=32882]="TEXTURE_WRAP_R",t[t.TEXTURE_MIN_LOD=33082]="TEXTURE_MIN_LOD",t[t.TEXTURE_MAX_LOD=33083]="TEXTURE_MAX_LOD",t[t.TEXTURE_BASE_LEVEL=33084]="TEXTURE_BASE_LEVEL",t[t.TEXTURE_MAX_LEVEL=33085]="TEXTURE_MAX_LEVEL",t[t.TEXTURE_COMPARE_MODE=34892]="TEXTURE_COMPARE_MODE",t[t.TEXTURE_COMPARE_FUNC=34893]="TEXTURE_COMPARE_FUNC",t[t.SRGB=35904]="SRGB",t[t.SRGB8=35905]="SRGB8",t[t.SRGB8_ALPHA8=35907]="SRGB8_ALPHA8",t[t.COMPARE_REF_TO_TEXTURE=34894]="COMPARE_REF_TO_TEXTURE",t[t.RGBA32F=34836]="RGBA32F",t[t.RGB32F=34837]="RGB32F",t[t.RGBA16F=34842]="RGBA16F",t[t.RGB16F=34843]="RGB16F",t[t.TEXTURE_2D_ARRAY=35866]="TEXTURE_2D_ARRAY",t[t.TEXTURE_BINDING_2D_ARRAY=35869]="TEXTURE_BINDING_2D_ARRAY",t[t.R11F_G11F_B10F=35898]="R11F_G11F_B10F",t[t.RGB9_E5=35901]="RGB9_E5",t[t.RGBA32UI=36208]="RGBA32UI",t[t.RGB32UI=36209]="RGB32UI",t[t.RGBA16UI=36214]="RGBA16UI",t[t.RGB16UI=36215]="RGB16UI",t[t.RGBA8UI=36220]="RGBA8UI",t[t.RGB8UI=36221]="RGB8UI",t[t.RGBA32I=36226]="RGBA32I",t[t.RGB32I=36227]="RGB32I",t[t.RGBA16I=36232]="RGBA16I",t[t.RGB16I=36233]="RGB16I",t[t.RGBA8I=36238]="RGBA8I",t[t.RGB8I=36239]="RGB8I",t[t.RED_INTEGER=36244]="RED_INTEGER",t[t.RGB_INTEGER=36248]="RGB_INTEGER",t[t.RGBA_INTEGER=36249]="RGBA_INTEGER",t[t.R8=33321]="R8",t[t.RG8=33323]="RG8",t[t.R16F=33325]="R16F",t[t.R32F=33326]="R32F",t[t.RG16F=33327]="RG16F",t[t.RG32F=33328]="RG32F",t[t.R8I=33329]="R8I",t[t.R8UI=33330]="R8UI",t[t.R16I=33331]="R16I",t[t.R16UI=33332]="R16UI",t[t.R32I=33333]="R32I",t[t.R32UI=33334]="R32UI",t[t.RG8I=33335]="RG8I",t[t.RG8UI=33336]="RG8UI",t[t.RG16I=33337]="RG16I",t[t.RG16UI=33338]="RG16UI",t[t.RG32I=33339]="RG32I",t[t.RG32UI=33340]="RG32UI",t[t.R8_SNORM=36756]="R8_SNORM",t[t.RG8_SNORM=36757]="RG8_SNORM",t[t.RGB8_SNORM=36758]="RGB8_SNORM",t[t.RGBA8_SNORM=36759]="RGBA8_SNORM",t[t.RGB10_A2UI=36975]="RGB10_A2UI",t[t.TEXTURE_IMMUTABLE_FORMAT=37167]="TEXTURE_IMMUTABLE_FORMAT",t[t.TEXTURE_IMMUTABLE_LEVELS=33503]="TEXTURE_IMMUTABLE_LEVELS",t[t.UNSIGNED_INT_2_10_10_10_REV=33640]="UNSIGNED_INT_2_10_10_10_REV",t[t.UNSIGNED_INT_10F_11F_11F_REV=35899]="UNSIGNED_INT_10F_11F_11F_REV",t[t.UNSIGNED_INT_5_9_9_9_REV=35902]="UNSIGNED_INT_5_9_9_9_REV",t[t.FLOAT_32_UNSIGNED_INT_24_8_REV=36269]="FLOAT_32_UNSIGNED_INT_24_8_REV",t[t.UNSIGNED_INT_24_8=34042]="UNSIGNED_INT_24_8",t[t.HALF_FLOAT=5131]="HALF_FLOAT",t[t.RG=33319]="RG",t[t.RG_INTEGER=33320]="RG_INTEGER",t[t.INT_2_10_10_10_REV=36255]="INT_2_10_10_10_REV",t[t.CURRENT_QUERY=34917]="CURRENT_QUERY",t[t.QUERY_RESULT=34918]="QUERY_RESULT",t[t.QUERY_RESULT_AVAILABLE=34919]="QUERY_RESULT_AVAILABLE",t[t.ANY_SAMPLES_PASSED=35887]="ANY_SAMPLES_PASSED",t[t.ANY_SAMPLES_PASSED_CONSERVATIVE=36202]="ANY_SAMPLES_PASSED_CONSERVATIVE",t[t.MAX_DRAW_BUFFERS=34852]="MAX_DRAW_BUFFERS",t[t.DRAW_BUFFER0=34853]="DRAW_BUFFER0",t[t.DRAW_BUFFER1=34854]="DRAW_BUFFER1",t[t.DRAW_BUFFER2=34855]="DRAW_BUFFER2",t[t.DRAW_BUFFER3=34856]="DRAW_BUFFER3",t[t.DRAW_BUFFER4=34857]="DRAW_BUFFER4",t[t.DRAW_BUFFER5=34858]="DRAW_BUFFER5",t[t.DRAW_BUFFER6=34859]="DRAW_BUFFER6",t[t.DRAW_BUFFER7=34860]="DRAW_BUFFER7",t[t.DRAW_BUFFER8=34861]="DRAW_BUFFER8",t[t.DRAW_BUFFER9=34862]="DRAW_BUFFER9",t[t.DRAW_BUFFER10=34863]="DRAW_BUFFER10",t[t.DRAW_BUFFER11=34864]="DRAW_BUFFER11",t[t.DRAW_BUFFER12=34865]="DRAW_BUFFER12",t[t.DRAW_BUFFER13=34866]="DRAW_BUFFER13",t[t.DRAW_BUFFER14=34867]="DRAW_BUFFER14",t[t.DRAW_BUFFER15=34868]="DRAW_BUFFER15",t[t.MAX_COLOR_ATTACHMENTS=36063]="MAX_COLOR_ATTACHMENTS",t[t.COLOR_ATTACHMENT1=36065]="COLOR_ATTACHMENT1",t[t.COLOR_ATTACHMENT2=36066]="COLOR_ATTACHMENT2",t[t.COLOR_ATTACHMENT3=36067]="COLOR_ATTACHMENT3",t[t.COLOR_ATTACHMENT4=36068]="COLOR_ATTACHMENT4",t[t.COLOR_ATTACHMENT5=36069]="COLOR_ATTACHMENT5",t[t.COLOR_ATTACHMENT6=36070]="COLOR_ATTACHMENT6",t[t.COLOR_ATTACHMENT7=36071]="COLOR_ATTACHMENT7",t[t.COLOR_ATTACHMENT8=36072]="COLOR_ATTACHMENT8",t[t.COLOR_ATTACHMENT9=36073]="COLOR_ATTACHMENT9",t[t.COLOR_ATTACHMENT10=36074]="COLOR_ATTACHMENT10",t[t.COLOR_ATTACHMENT11=36075]="COLOR_ATTACHMENT11",t[t.COLOR_ATTACHMENT12=36076]="COLOR_ATTACHMENT12",t[t.COLOR_ATTACHMENT13=36077]="COLOR_ATTACHMENT13",t[t.COLOR_ATTACHMENT14=36078]="COLOR_ATTACHMENT14",t[t.COLOR_ATTACHMENT15=36079]="COLOR_ATTACHMENT15",t[t.SAMPLER_3D=35679]="SAMPLER_3D",t[t.SAMPLER_2D_SHADOW=35682]="SAMPLER_2D_SHADOW",t[t.SAMPLER_2D_ARRAY=36289]="SAMPLER_2D_ARRAY",t[t.SAMPLER_2D_ARRAY_SHADOW=36292]="SAMPLER_2D_ARRAY_SHADOW",t[t.SAMPLER_CUBE_SHADOW=36293]="SAMPLER_CUBE_SHADOW",t[t.INT_SAMPLER_2D=36298]="INT_SAMPLER_2D",t[t.INT_SAMPLER_3D=36299]="INT_SAMPLER_3D",t[t.INT_SAMPLER_CUBE=36300]="INT_SAMPLER_CUBE",t[t.INT_SAMPLER_2D_ARRAY=36303]="INT_SAMPLER_2D_ARRAY",t[t.UNSIGNED_INT_SAMPLER_2D=36306]="UNSIGNED_INT_SAMPLER_2D",t[t.UNSIGNED_INT_SAMPLER_3D=36307]="UNSIGNED_INT_SAMPLER_3D",t[t.UNSIGNED_INT_SAMPLER_CUBE=36308]="UNSIGNED_INT_SAMPLER_CUBE",t[t.UNSIGNED_INT_SAMPLER_2D_ARRAY=36311]="UNSIGNED_INT_SAMPLER_2D_ARRAY",t[t.MAX_SAMPLES=36183]="MAX_SAMPLES",t[t.SAMPLER_BINDING=35097]="SAMPLER_BINDING",t[t.PIXEL_PACK_BUFFER=35051]="PIXEL_PACK_BUFFER",t[t.PIXEL_UNPACK_BUFFER=35052]="PIXEL_UNPACK_BUFFER",t[t.PIXEL_PACK_BUFFER_BINDING=35053]="PIXEL_PACK_BUFFER_BINDING",t[t.PIXEL_UNPACK_BUFFER_BINDING=35055]="PIXEL_UNPACK_BUFFER_BINDING",t[t.COPY_READ_BUFFER=36662]="COPY_READ_BUFFER",t[t.COPY_WRITE_BUFFER=36663]="COPY_WRITE_BUFFER",t[t.COPY_READ_BUFFER_BINDING=36662]="COPY_READ_BUFFER_BINDING",t[t.COPY_WRITE_BUFFER_BINDING=36663]="COPY_WRITE_BUFFER_BINDING",t[t.FLOAT_MAT2x3=35685]="FLOAT_MAT2x3",t[t.FLOAT_MAT2x4=35686]="FLOAT_MAT2x4",t[t.FLOAT_MAT3x2=35687]="FLOAT_MAT3x2",t[t.FLOAT_MAT3x4=35688]="FLOAT_MAT3x4",t[t.FLOAT_MAT4x2=35689]="FLOAT_MAT4x2",t[t.FLOAT_MAT4x3=35690]="FLOAT_MAT4x3",t[t.UNSIGNED_INT_VEC2=36294]="UNSIGNED_INT_VEC2",t[t.UNSIGNED_INT_VEC3=36295]="UNSIGNED_INT_VEC3",t[t.UNSIGNED_INT_VEC4=36296]="UNSIGNED_INT_VEC4",t[t.UNSIGNED_NORMALIZED=35863]="UNSIGNED_NORMALIZED",t[t.SIGNED_NORMALIZED=36764]="SIGNED_NORMALIZED",t[t.VERTEX_ATTRIB_ARRAY_INTEGER=35069]="VERTEX_ATTRIB_ARRAY_INTEGER",t[t.VERTEX_ATTRIB_ARRAY_DIVISOR=35070]="VERTEX_ATTRIB_ARRAY_DIVISOR",t[t.TRANSFORM_FEEDBACK_BUFFER_MODE=35967]="TRANSFORM_FEEDBACK_BUFFER_MODE",t[t.MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS=35968]="MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS",t[t.TRANSFORM_FEEDBACK_VARYINGS=35971]="TRANSFORM_FEEDBACK_VARYINGS",t[t.TRANSFORM_FEEDBACK_BUFFER_START=35972]="TRANSFORM_FEEDBACK_BUFFER_START",t[t.TRANSFORM_FEEDBACK_BUFFER_SIZE=35973]="TRANSFORM_FEEDBACK_BUFFER_SIZE",t[t.TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN=35976]="TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN",t[t.MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS=35978]="MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS",t[t.MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS=35979]="MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS",t[t.INTERLEAVED_ATTRIBS=35980]="INTERLEAVED_ATTRIBS",t[t.SEPARATE_ATTRIBS=35981]="SEPARATE_ATTRIBS",t[t.TRANSFORM_FEEDBACK_BUFFER=35982]="TRANSFORM_FEEDBACK_BUFFER",t[t.TRANSFORM_FEEDBACK_BUFFER_BINDING=35983]="TRANSFORM_FEEDBACK_BUFFER_BINDING",t[t.TRANSFORM_FEEDBACK=36386]="TRANSFORM_FEEDBACK",t[t.TRANSFORM_FEEDBACK_PAUSED=36387]="TRANSFORM_FEEDBACK_PAUSED",t[t.TRANSFORM_FEEDBACK_ACTIVE=36388]="TRANSFORM_FEEDBACK_ACTIVE",t[t.TRANSFORM_FEEDBACK_BINDING=36389]="TRANSFORM_FEEDBACK_BINDING",t[t.FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING=33296]="FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING",t[t.FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE=33297]="FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE",t[t.FRAMEBUFFER_ATTACHMENT_RED_SIZE=33298]="FRAMEBUFFER_ATTACHMENT_RED_SIZE",t[t.FRAMEBUFFER_ATTACHMENT_GREEN_SIZE=33299]="FRAMEBUFFER_ATTACHMENT_GREEN_SIZE",t[t.FRAMEBUFFER_ATTACHMENT_BLUE_SIZE=33300]="FRAMEBUFFER_ATTACHMENT_BLUE_SIZE",t[t.FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE=33301]="FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE",t[t.FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE=33302]="FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE",t[t.FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE=33303]="FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE",t[t.FRAMEBUFFER_DEFAULT=33304]="FRAMEBUFFER_DEFAULT",t[t.DEPTH24_STENCIL8=35056]="DEPTH24_STENCIL8",t[t.DRAW_FRAMEBUFFER_BINDING=36006]="DRAW_FRAMEBUFFER_BINDING",t[t.READ_FRAMEBUFFER_BINDING=36010]="READ_FRAMEBUFFER_BINDING",t[t.RENDERBUFFER_SAMPLES=36011]="RENDERBUFFER_SAMPLES",t[t.FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER=36052]="FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER",t[t.FRAMEBUFFER_INCOMPLETE_MULTISAMPLE=36182]="FRAMEBUFFER_INCOMPLETE_MULTISAMPLE",t[t.UNIFORM_BUFFER=35345]="UNIFORM_BUFFER",t[t.UNIFORM_BUFFER_BINDING=35368]="UNIFORM_BUFFER_BINDING",t[t.UNIFORM_BUFFER_START=35369]="UNIFORM_BUFFER_START",t[t.UNIFORM_BUFFER_SIZE=35370]="UNIFORM_BUFFER_SIZE",t[t.MAX_VERTEX_UNIFORM_BLOCKS=35371]="MAX_VERTEX_UNIFORM_BLOCKS",t[t.MAX_FRAGMENT_UNIFORM_BLOCKS=35373]="MAX_FRAGMENT_UNIFORM_BLOCKS",t[t.MAX_COMBINED_UNIFORM_BLOCKS=35374]="MAX_COMBINED_UNIFORM_BLOCKS",t[t.MAX_UNIFORM_BUFFER_BINDINGS=35375]="MAX_UNIFORM_BUFFER_BINDINGS",t[t.MAX_UNIFORM_BLOCK_SIZE=35376]="MAX_UNIFORM_BLOCK_SIZE",t[t.MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS=35377]="MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS",t[t.MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS=35379]="MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS",t[t.UNIFORM_BUFFER_OFFSET_ALIGNMENT=35380]="UNIFORM_BUFFER_OFFSET_ALIGNMENT",t[t.ACTIVE_UNIFORM_BLOCKS=35382]="ACTIVE_UNIFORM_BLOCKS",t[t.UNIFORM_TYPE=35383]="UNIFORM_TYPE",t[t.UNIFORM_SIZE=35384]="UNIFORM_SIZE",t[t.UNIFORM_BLOCK_INDEX=35386]="UNIFORM_BLOCK_INDEX",t[t.UNIFORM_OFFSET=35387]="UNIFORM_OFFSET",t[t.UNIFORM_ARRAY_STRIDE=35388]="UNIFORM_ARRAY_STRIDE",t[t.UNIFORM_MATRIX_STRIDE=35389]="UNIFORM_MATRIX_STRIDE",t[t.UNIFORM_IS_ROW_MAJOR=35390]="UNIFORM_IS_ROW_MAJOR",t[t.UNIFORM_BLOCK_BINDING=35391]="UNIFORM_BLOCK_BINDING",t[t.UNIFORM_BLOCK_DATA_SIZE=35392]="UNIFORM_BLOCK_DATA_SIZE",t[t.UNIFORM_BLOCK_ACTIVE_UNIFORMS=35394]="UNIFORM_BLOCK_ACTIVE_UNIFORMS",t[t.UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES=35395]="UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES",t[t.UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER=35396]="UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER",t[t.UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER=35398]="UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER",t[t.OBJECT_TYPE=37138]="OBJECT_TYPE",t[t.SYNC_CONDITION=37139]="SYNC_CONDITION",t[t.SYNC_STATUS=37140]="SYNC_STATUS",t[t.SYNC_FLAGS=37141]="SYNC_FLAGS",t[t.SYNC_FENCE=37142]="SYNC_FENCE",t[t.SYNC_GPU_COMMANDS_COMPLETE=37143]="SYNC_GPU_COMMANDS_COMPLETE",t[t.UNSIGNALED=37144]="UNSIGNALED",t[t.SIGNALED=37145]="SIGNALED",t[t.ALREADY_SIGNALED=37146]="ALREADY_SIGNALED",t[t.TIMEOUT_EXPIRED=37147]="TIMEOUT_EXPIRED",t[t.CONDITION_SATISFIED=37148]="CONDITION_SATISFIED",t[t.WAIT_FAILED=37149]="WAIT_FAILED",t[t.SYNC_FLUSH_COMMANDS_BIT=1]="SYNC_FLUSH_COMMANDS_BIT",t[t.COLOR=6144]="COLOR",t[t.DEPTH=6145]="DEPTH",t[t.STENCIL=6146]="STENCIL",t[t.MIN=32775]="MIN",t[t.MAX=32776]="MAX",t[t.DEPTH_COMPONENT24=33190]="DEPTH_COMPONENT24",t[t.STREAM_READ=35041]="STREAM_READ",t[t.STREAM_COPY=35042]="STREAM_COPY",t[t.STATIC_READ=35045]="STATIC_READ",t[t.STATIC_COPY=35046]="STATIC_COPY",t[t.DYNAMIC_READ=35049]="DYNAMIC_READ",t[t.DYNAMIC_COPY=35050]="DYNAMIC_COPY",t[t.DEPTH_COMPONENT32F=36012]="DEPTH_COMPONENT32F",t[t.DEPTH32F_STENCIL8=36013]="DEPTH32F_STENCIL8",t[t.INVALID_INDEX=4294967295]="INVALID_INDEX",t[t.TIMEOUT_IGNORED=-1]="TIMEOUT_IGNORED",t[t.MAX_CLIENT_WAIT_TIMEOUT_WEBGL=37447]="MAX_CLIENT_WAIT_TIMEOUT_WEBGL",t[t.UNMASKED_VENDOR_WEBGL=37445]="UNMASKED_VENDOR_WEBGL",t[t.UNMASKED_RENDERER_WEBGL=37446]="UNMASKED_RENDERER_WEBGL",t[t.MAX_TEXTURE_MAX_ANISOTROPY_EXT=34047]="MAX_TEXTURE_MAX_ANISOTROPY_EXT",t[t.TEXTURE_MAX_ANISOTROPY_EXT=34046]="TEXTURE_MAX_ANISOTROPY_EXT",t[t.R16_EXT=33322]="R16_EXT",t[t.RG16_EXT=33324]="RG16_EXT",t[t.RGB16_EXT=32852]="RGB16_EXT",t[t.RGBA16_EXT=32859]="RGBA16_EXT",t[t.R16_SNORM_EXT=36760]="R16_SNORM_EXT",t[t.RG16_SNORM_EXT=36761]="RG16_SNORM_EXT",t[t.RGB16_SNORM_EXT=36762]="RGB16_SNORM_EXT",t[t.RGBA16_SNORM_EXT=36763]="RGBA16_SNORM_EXT",t[t.COMPRESSED_RGB_S3TC_DXT1_EXT=33776]="COMPRESSED_RGB_S3TC_DXT1_EXT",t[t.COMPRESSED_RGBA_S3TC_DXT1_EXT=33777]="COMPRESSED_RGBA_S3TC_DXT1_EXT",t[t.COMPRESSED_RGBA_S3TC_DXT3_EXT=33778]="COMPRESSED_RGBA_S3TC_DXT3_EXT",t[t.COMPRESSED_RGBA_S3TC_DXT5_EXT=33779]="COMPRESSED_RGBA_S3TC_DXT5_EXT",t[t.COMPRESSED_SRGB_S3TC_DXT1_EXT=35916]="COMPRESSED_SRGB_S3TC_DXT1_EXT",t[t.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT=35917]="COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT",t[t.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT=35918]="COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT",t[t.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT=35919]="COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT",t[t.COMPRESSED_RED_RGTC1_EXT=36283]="COMPRESSED_RED_RGTC1_EXT",t[t.COMPRESSED_SIGNED_RED_RGTC1_EXT=36284]="COMPRESSED_SIGNED_RED_RGTC1_EXT",t[t.COMPRESSED_RED_GREEN_RGTC2_EXT=36285]="COMPRESSED_RED_GREEN_RGTC2_EXT",t[t.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT=36286]="COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT",t[t.COMPRESSED_RGBA_BPTC_UNORM_EXT=36492]="COMPRESSED_RGBA_BPTC_UNORM_EXT",t[t.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT=36493]="COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT",t[t.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT=36494]="COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT",t[t.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT=36495]="COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT",t[t.COMPRESSED_R11_EAC=37488]="COMPRESSED_R11_EAC",t[t.COMPRESSED_SIGNED_R11_EAC=37489]="COMPRESSED_SIGNED_R11_EAC",t[t.COMPRESSED_RG11_EAC=37490]="COMPRESSED_RG11_EAC",t[t.COMPRESSED_SIGNED_RG11_EAC=37491]="COMPRESSED_SIGNED_RG11_EAC",t[t.COMPRESSED_RGB8_ETC2=37492]="COMPRESSED_RGB8_ETC2",t[t.COMPRESSED_RGBA8_ETC2_EAC=37493]="COMPRESSED_RGBA8_ETC2_EAC",t[t.COMPRESSED_SRGB8_ETC2=37494]="COMPRESSED_SRGB8_ETC2",t[t.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC=37495]="COMPRESSED_SRGB8_ALPHA8_ETC2_EAC",t[t.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2=37496]="COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2",t[t.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2=37497]="COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2",t[t.COMPRESSED_RGB_PVRTC_4BPPV1_IMG=35840]="COMPRESSED_RGB_PVRTC_4BPPV1_IMG",t[t.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG=35842]="COMPRESSED_RGBA_PVRTC_4BPPV1_IMG",t[t.COMPRESSED_RGB_PVRTC_2BPPV1_IMG=35841]="COMPRESSED_RGB_PVRTC_2BPPV1_IMG",t[t.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG=35843]="COMPRESSED_RGBA_PVRTC_2BPPV1_IMG",t[t.COMPRESSED_RGB_ETC1_WEBGL=36196]="COMPRESSED_RGB_ETC1_WEBGL",t[t.COMPRESSED_RGB_ATC_WEBGL=35986]="COMPRESSED_RGB_ATC_WEBGL",t[t.COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL=35986]="COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL",t[t.COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL=34798]="COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL",t[t.COMPRESSED_RGBA_ASTC_4x4_KHR=37808]="COMPRESSED_RGBA_ASTC_4x4_KHR",t[t.COMPRESSED_RGBA_ASTC_5x4_KHR=37809]="COMPRESSED_RGBA_ASTC_5x4_KHR",t[t.COMPRESSED_RGBA_ASTC_5x5_KHR=37810]="COMPRESSED_RGBA_ASTC_5x5_KHR",t[t.COMPRESSED_RGBA_ASTC_6x5_KHR=37811]="COMPRESSED_RGBA_ASTC_6x5_KHR",t[t.COMPRESSED_RGBA_ASTC_6x6_KHR=37812]="COMPRESSED_RGBA_ASTC_6x6_KHR",t[t.COMPRESSED_RGBA_ASTC_8x5_KHR=37813]="COMPRESSED_RGBA_ASTC_8x5_KHR",t[t.COMPRESSED_RGBA_ASTC_8x6_KHR=37814]="COMPRESSED_RGBA_ASTC_8x6_KHR",t[t.COMPRESSED_RGBA_ASTC_8x8_KHR=37815]="COMPRESSED_RGBA_ASTC_8x8_KHR",t[t.COMPRESSED_RGBA_ASTC_10x5_KHR=37816]="COMPRESSED_RGBA_ASTC_10x5_KHR",t[t.COMPRESSED_RGBA_ASTC_10x6_KHR=37817]="COMPRESSED_RGBA_ASTC_10x6_KHR",t[t.COMPRESSED_RGBA_ASTC_10x8_KHR=37818]="COMPRESSED_RGBA_ASTC_10x8_KHR",t[t.COMPRESSED_RGBA_ASTC_10x10_KHR=37819]="COMPRESSED_RGBA_ASTC_10x10_KHR",t[t.COMPRESSED_RGBA_ASTC_12x10_KHR=37820]="COMPRESSED_RGBA_ASTC_12x10_KHR",t[t.COMPRESSED_RGBA_ASTC_12x12_KHR=37821]="COMPRESSED_RGBA_ASTC_12x12_KHR",t[t.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR=37840]="COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR",t[t.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR=37841]="COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR",t[t.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR=37842]="COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR",t[t.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR=37843]="COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR",t[t.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR=37844]="COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR",t[t.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR=37845]="COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR",t[t.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR=37846]="COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR",t[t.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR=37847]="COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR",t[t.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR=37848]="COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR",t[t.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR=37849]="COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR",t[t.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR=37850]="COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR",t[t.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR=37851]="COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR",t[t.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR=37852]="COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR",t[t.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR=37853]="COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR",t[t.QUERY_COUNTER_BITS_EXT=34916]="QUERY_COUNTER_BITS_EXT",t[t.CURRENT_QUERY_EXT=34917]="CURRENT_QUERY_EXT",t[t.QUERY_RESULT_EXT=34918]="QUERY_RESULT_EXT",t[t.QUERY_RESULT_AVAILABLE_EXT=34919]="QUERY_RESULT_AVAILABLE_EXT",t[t.TIME_ELAPSED_EXT=35007]="TIME_ELAPSED_EXT",t[t.TIMESTAMP_EXT=36392]="TIMESTAMP_EXT",t[t.GPU_DISJOINT_EXT=36795]="GPU_DISJOINT_EXT",t[t.COMPLETION_STATUS_KHR=37297]="COMPLETION_STATUS_KHR",t[t.DEPTH_CLAMP_EXT=34383]="DEPTH_CLAMP_EXT",t[t.FIRST_VERTEX_CONVENTION_WEBGL=36429]="FIRST_VERTEX_CONVENTION_WEBGL",t[t.LAST_VERTEX_CONVENTION_WEBGL=36430]="LAST_VERTEX_CONVENTION_WEBGL",t[t.PROVOKING_VERTEX_WEBL=36431]="PROVOKING_VERTEX_WEBL",t[t.POLYGON_MODE_WEBGL=2880]="POLYGON_MODE_WEBGL",t[t.POLYGON_OFFSET_LINE_WEBGL=10754]="POLYGON_OFFSET_LINE_WEBGL",t[t.LINE_WEBGL=6913]="LINE_WEBGL",t[t.FILL_WEBGL=6914]="FILL_WEBGL",t[t.MAX_CLIP_DISTANCES_WEBGL=3378]="MAX_CLIP_DISTANCES_WEBGL",t[t.MAX_CULL_DISTANCES_WEBGL=33529]="MAX_CULL_DISTANCES_WEBGL",t[t.MAX_COMBINED_CLIP_AND_CULL_DISTANCES_WEBGL=33530]="MAX_COMBINED_CLIP_AND_CULL_DISTANCES_WEBGL",t[t.CLIP_DISTANCE0_WEBGL=12288]="CLIP_DISTANCE0_WEBGL",t[t.CLIP_DISTANCE1_WEBGL=12289]="CLIP_DISTANCE1_WEBGL",t[t.CLIP_DISTANCE2_WEBGL=12290]="CLIP_DISTANCE2_WEBGL",t[t.CLIP_DISTANCE3_WEBGL=12291]="CLIP_DISTANCE3_WEBGL",t[t.CLIP_DISTANCE4_WEBGL=12292]="CLIP_DISTANCE4_WEBGL",t[t.CLIP_DISTANCE5_WEBGL=12293]="CLIP_DISTANCE5_WEBGL",t[t.CLIP_DISTANCE6_WEBGL=12294]="CLIP_DISTANCE6_WEBGL",t[t.CLIP_DISTANCE7_WEBGL=12295]="CLIP_DISTANCE7_WEBGL",t[t.POLYGON_OFFSET_CLAMP_EXT=36379]="POLYGON_OFFSET_CLAMP_EXT",t[t.LOWER_LEFT_EXT=36001]="LOWER_LEFT_EXT",t[t.UPPER_LEFT_EXT=36002]="UPPER_LEFT_EXT",t[t.NEGATIVE_ONE_TO_ONE_EXT=37726]="NEGATIVE_ONE_TO_ONE_EXT",t[t.ZERO_TO_ONE_EXT=37727]="ZERO_TO_ONE_EXT",t[t.CLIP_ORIGIN_EXT=37724]="CLIP_ORIGIN_EXT",t[t.CLIP_DEPTH_MODE_EXT=37725]="CLIP_DEPTH_MODE_EXT",t[t.SRC1_COLOR_WEBGL=35065]="SRC1_COLOR_WEBGL",t[t.SRC1_ALPHA_WEBGL=34185]="SRC1_ALPHA_WEBGL",t[t.ONE_MINUS_SRC1_COLOR_WEBGL=35066]="ONE_MINUS_SRC1_COLOR_WEBGL",t[t.ONE_MINUS_SRC1_ALPHA_WEBGL=35067]="ONE_MINUS_SRC1_ALPHA_WEBGL",t[t.MAX_DUAL_SOURCE_DRAW_BUFFERS_WEBGL=35068]="MAX_DUAL_SOURCE_DRAW_BUFFERS_WEBGL",t[t.MIRROR_CLAMP_TO_EDGE_EXT=34627]="MIRROR_CLAMP_TO_EDGE_EXT"})(Gr||(Gr={}));var Eo={3042:!1,32773:new Float32Array([0,0,0,0]),32777:32774,34877:32774,32969:1,32968:0,32971:1,32970:0,3106:new Float32Array([0,0,0,0]),3107:[!0,!0,!0,!0],2884:!1,2885:1029,2929:!1,2931:1,2932:513,2928:new Float32Array([0,1]),2930:!0,3024:!0,35725:null,36006:null,36007:null,34229:null,34964:null,2886:2305,33170:4352,2849:1,32823:!1,32824:0,10752:0,32926:!1,32928:!1,32938:1,32939:!1,3089:!1,3088:new Int32Array([0,0,1024,1024]),2960:!1,2961:0,2968:4294967295,36005:4294967295,2962:519,2967:0,2963:4294967295,34816:519,36003:0,36004:4294967295,2964:7680,2965:7680,2966:7680,34817:7680,34818:7680,34819:7680,2978:[0,0,1024,1024],36389:null,36662:null,36663:null,35053:null,35055:null,35723:4352,36010:null,35977:!1,3333:4,3317:4,37440:!1,37441:!1,37443:37444,3330:0,3332:0,3331:0,3314:0,32878:0,3316:0,3315:0,32877:0},Ee=(t,e,r)=>e?t.enable(r):t.disable(r),ey=(t,e,r)=>t.hint(r,e),st=(t,e,r)=>t.pixelStorei(r,e),ty=(t,e,r)=>{let i=r===36006?36009:36008;return t.bindFramebuffer(i,e)},Ao=(t,e,r)=>{let s={34964:34962,36662:36662,36663:36663,35053:35051,35055:35052}[r];t.bindBuffer(s,e)};function ad(t){return Array.isArray(t)||ArrayBuffer.isView(t)&&!(t instanceof DataView)}var ry={3042:Ee,32773:(t,e)=>t.blendColor(...e),32777:"blendEquation",34877:"blendEquation",32969:"blendFunc",32968:"blendFunc",32971:"blendFunc",32970:"blendFunc",3106:(t,e)=>t.clearColor(...e),3107:(t,e)=>t.colorMask(...e),2884:Ee,2885:(t,e)=>t.cullFace(e),2929:Ee,2931:(t,e)=>t.clearDepth(e),2932:(t,e)=>t.depthFunc(e),2928:(t,e)=>t.depthRange(...e),2930:(t,e)=>t.depthMask(e),3024:Ee,35723:ey,35725:(t,e)=>t.useProgram(e),36007:(t,e)=>t.bindRenderbuffer(36161,e),36389:(t,e)=>t.bindTransformFeedback?.(36386,e),34229:(t,e)=>t.bindVertexArray(e),36006:ty,36010:ty,34964:Ao,36662:Ao,36663:Ao,35053:Ao,35055:Ao,2886:(t,e)=>t.frontFace(e),33170:ey,2849:(t,e)=>t.lineWidth(e),32823:Ee,32824:"polygonOffset",10752:"polygonOffset",35977:Ee,32926:Ee,32928:Ee,32938:"sampleCoverage",32939:"sampleCoverage",3089:Ee,3088:(t,e)=>t.scissor(...e),2960:Ee,2961:(t,e)=>t.clearStencil(e),2968:(t,e)=>t.stencilMaskSeparate(1028,e),36005:(t,e)=>t.stencilMaskSeparate(1029,e),2962:"stencilFuncFront",2967:"stencilFuncFront",2963:"stencilFuncFront",34816:"stencilFuncBack",36003:"stencilFuncBack",36004:"stencilFuncBack",2964:"stencilOpFront",2965:"stencilOpFront",2966:"stencilOpFront",34817:"stencilOpBack",34818:"stencilOpBack",34819:"stencilOpBack",2978:(t,e)=>t.viewport(...e),34383:Ee,10754:Ee,12288:Ee,12289:Ee,12290:Ee,12291:Ee,12292:Ee,12293:Ee,12294:Ee,12295:Ee,3333:st,3317:st,37440:st,37441:st,37443:st,3330:st,3332:st,3331:st,3314:st,32878:st,3316:st,3315:st,32877:st,framebuffer:(t,e)=>{let r=e&&"handle"in e?e.handle:e;return t.bindFramebuffer(36160,r)},blend:(t,e)=>e?t.enable(3042):t.disable(3042),blendColor:(t,e)=>t.blendColor(...e),blendEquation:(t,e)=>{let r=typeof e=="number"?[e,e]:e;t.blendEquationSeparate(...r)},blendFunc:(t,e)=>{let r=e?.length===2?[...e,...e]:e;t.blendFuncSeparate(...r)},clearColor:(t,e)=>t.clearColor(...e),clearDepth:(t,e)=>t.clearDepth(e),clearStencil:(t,e)=>t.clearStencil(e),colorMask:(t,e)=>t.colorMask(...e),cull:(t,e)=>e?t.enable(2884):t.disable(2884),cullFace:(t,e)=>t.cullFace(e),depthTest:(t,e)=>e?t.enable(2929):t.disable(2929),depthFunc:(t,e)=>t.depthFunc(e),depthMask:(t,e)=>t.depthMask(e),depthRange:(t,e)=>t.depthRange(...e),dither:(t,e)=>e?t.enable(3024):t.disable(3024),derivativeHint:(t,e)=>{t.hint(35723,e)},frontFace:(t,e)=>t.frontFace(e),mipmapHint:(t,e)=>t.hint(33170,e),lineWidth:(t,e)=>t.lineWidth(e),polygonOffsetFill:(t,e)=>e?t.enable(32823):t.disable(32823),polygonOffset:(t,e)=>t.polygonOffset(...e),sampleCoverage:(t,e)=>t.sampleCoverage(...e),scissorTest:(t,e)=>e?t.enable(3089):t.disable(3089),scissor:(t,e)=>t.scissor(...e),stencilTest:(t,e)=>e?t.enable(2960):t.disable(2960),stencilMask:(t,e)=>{e=ad(e)?e:[e,e];let[r,i]=e;t.stencilMaskSeparate(1028,r),t.stencilMaskSeparate(1029,i)},stencilFunc:(t,e)=>{e=ad(e)&&e.length===3?[...e,...e]:e;let[r,i,s,n,o,a]=e;t.stencilFuncSeparate(1028,r,i,s),t.stencilFuncSeparate(1029,n,o,a)},stencilOp:(t,e)=>{e=ad(e)&&e.length===3?[...e,...e]:e;let[r,i,s,n,o,a]=e;t.stencilOpSeparate(1028,r,i,s),t.stencilOpSeparate(1029,n,o,a)},viewport:(t,e)=>t.viewport(...e)};function ve(t,e,r){return e[t]!==void 0?e[t]:r[t]}var iy={blendEquation:(t,e,r)=>t.blendEquationSeparate(ve(32777,e,r),ve(34877,e,r)),blendFunc:(t,e,r)=>t.blendFuncSeparate(ve(32969,e,r),ve(32968,e,r),ve(32971,e,r),ve(32970,e,r)),polygonOffset:(t,e,r)=>t.polygonOffset(ve(32824,e,r),ve(10752,e,r)),sampleCoverage:(t,e,r)=>t.sampleCoverage(ve(32938,e,r),ve(32939,e,r)),stencilFuncFront:(t,e,r)=>t.stencilFuncSeparate(1028,ve(2962,e,r),ve(2967,e,r),ve(2963,e,r)),stencilFuncBack:(t,e,r)=>t.stencilFuncSeparate(1029,ve(34816,e,r),ve(36003,e,r),ve(36004,e,r)),stencilOpFront:(t,e,r)=>t.stencilOpSeparate(1028,ve(2964,e,r),ve(2965,e,r),ve(2966,e,r)),stencilOpBack:(t,e,r)=>t.stencilOpSeparate(1029,ve(34817,e,r),ve(34818,e,r),ve(34819,e,r))},cd={enable:(t,e)=>t({[e]:!0}),disable:(t,e)=>t({[e]:!1}),pixelStorei:(t,e,r)=>t({[e]:r}),hint:(t,e,r)=>t({[e]:r}),useProgram:(t,e)=>t({35725:e}),bindRenderbuffer:(t,e,r)=>t({36007:r}),bindTransformFeedback:(t,e,r)=>t({36389:r}),bindVertexArray:(t,e)=>t({34229:e}),bindFramebuffer:(t,e,r)=>{switch(e){case 36160:return t({36006:r,36010:r});case 36009:return t({36006:r});case 36008:return t({36010:r});default:return null}},bindBuffer:(t,e,r)=>{let i={34962:[34964],36662:[36662],36663:[36663],35051:[35053],35052:[35055]}[e];return i?t({[i]:r}):{valueChanged:!0}},blendColor:(t,e,r,i,s)=>t({32773:new Float32Array([e,r,i,s])}),blendEquation:(t,e)=>t({32777:e,34877:e}),blendEquationSeparate:(t,e,r)=>t({32777:e,34877:r}),blendFunc:(t,e,r)=>t({32969:e,32968:r,32971:e,32970:r}),blendFuncSeparate:(t,e,r,i,s)=>t({32969:e,32968:r,32971:i,32970:s}),clearColor:(t,e,r,i,s)=>t({3106:new Float32Array([e,r,i,s])}),clearDepth:(t,e)=>t({2931:e}),clearStencil:(t,e)=>t({2961:e}),colorMask:(t,e,r,i,s)=>t({3107:[e,r,i,s]}),cullFace:(t,e)=>t({2885:e}),depthFunc:(t,e)=>t({2932:e}),depthRange:(t,e,r)=>t({2928:new Float32Array([e,r])}),depthMask:(t,e)=>t({2930:e}),frontFace:(t,e)=>t({2886:e}),lineWidth:(t,e)=>t({2849:e}),polygonOffset:(t,e,r)=>t({32824:e,10752:r}),sampleCoverage:(t,e,r)=>t({32938:e,32939:r}),scissor:(t,e,r,i,s)=>t({3088:new Int32Array([e,r,i,s])}),stencilMask:(t,e)=>t({2968:e,36005:e}),stencilMaskSeparate:(t,e,r)=>t({[e===1028?2968:36005]:r}),stencilFunc:(t,e,r,i)=>t({2962:e,2967:r,2963:i,34816:e,36003:r,36004:i}),stencilFuncSeparate:(t,e,r,i,s)=>t({[e===1028?2962:34816]:r,[e===1028?2967:36003]:i,[e===1028?2963:36004]:s}),stencilOp:(t,e,r,i)=>t({2964:e,2965:r,2966:i,34817:e,34818:r,34819:i}),stencilOpSeparate:(t,e,r,i,s)=>t({[e===1028?2964:34817]:r,[e===1028?2965:34818]:i,[e===1028?2966:34819]:s}),viewport:(t,e,r,i,s)=>t({2978:[e,r,i,s]})},rr=(t,e)=>t.isEnabled(e),ld={3042:rr,2884:rr,2929:rr,3024:rr,32823:rr,32926:rr,32928:rr,3089:rr,2960:rr,35977:rr},sy=new Set([34016,36388,36387,35983,35368,34965,35739,35738,3074,34853,34854,34855,34856,34857,34858,34859,34860,34861,34862,34863,34864,34865,34866,34867,34868,35097,32873,35869,32874,34068]);function Lt(t,e){if(uR(e))return;let r={};for(let s in e){let n=Number(s),o=ry[s];o&&(typeof o=="string"?r[o]=!0:o(t,e[s],n))}let i=t.state&&t.state.cache;if(i)for(let s in r){let n=iy[s];n(t,e,i)}}function rl(t,e=Eo){if(typeof e=="number"){let s=e,n=ld[s];return n?n(t,s):t.getParameter(s)}let r=Array.isArray(e)?e:Object.keys(e),i={};for(let s of r){let n=ld[s];i[s]=n?n(t,Number(s)):t.getParameter(Number(s))}return i}function ny(t){Lt(t,Eo)}function uR(t){for(let e in t)return!1;return!0}function oy(t,e){if(t===e)return!0;let r=Array.isArray(t)||ArrayBuffer.isView(t),i=Array.isArray(e)||ArrayBuffer.isView(e);if(r&&i&&t.length===e.length){for(let s=0;s{}}={}){this.gl=e,this.cache=r?rl(e):Object.assign({},Eo),this.log=i,this._updateCache=this._updateCache.bind(this),Object.seal(this)}push(e={}){this.stateStack.push({})}pop(){ee(this.stateStack.length>0);let e=this.stateStack[this.stateStack.length-1];Lt(this.gl,e),this.stateStack.pop()}_updateCache(e){let r=!1,i,s=this.stateStack.length>0?this.stateStack[this.stateStack.length-1]:null;for(let n in e){ee(n!==void 0);let o=e[n],a=this.cache[n];oy(o,a)||(r=!0,i=a,s&&!(n in s)&&(s[n]=a),this.cache[n]=o)}return{valueChanged:r,oldValue:i}}};function Bi(t){return t.state}function fd(t,e){let{enable:r=!0,copyState:i}=e;if(ee(i!==void 0),!t.state){t.state=new ud(t,{copyState:i}),hR(t);for(let n in cd){let o=cd[n];fR(t,n,o)}ay(t,"getParameter"),ay(t,"isEnabled")}let s=Bi(t);return s.enable=r,t}function Zr(t){let e=Bi(t);e||(fd(t,{copyState:!1}),e=Bi(t)),e.push()}function Sr(t){let e=Bi(t);ee(e),e.pop()}function ay(t,e){let r=t[e].bind(t);t[e]=function(s){if(s===void 0||sy.has(s))return r(s);let n=Bi(t);return s in n.cache||(n.cache[s]=r(s)),n.enable?n.cache[s]:r(s)},Object.defineProperty(t[e],"name",{value:`${e}-from-cache`,configurable:!1})}function fR(t,e,r){if(!t[e])return;let i=t[e].bind(t);t[e]=function(...n){let o=Bi(t),{valueChanged:a,oldValue:c}=r(o._updateCache,...n);return a&&i(...n),c},Object.defineProperty(t[e],"name",{value:`${e}-to-cache`,configurable:!1})}function hR(t){let e=t.useProgram.bind(t);t.useProgram=function(i){let s=Bi(t);s.program!==i&&(e(i),s.program=i)}}var dR={powerPreference:"high-performance",onContextLost:()=>console.error("WebGL context lost"),onContextRestored:()=>console.info("WebGL context restored")};function cy(t,e){e={...dR,...e};let r=null,i=n=>r=n.statusMessage||r;t.addEventListener("webglcontextcreationerror",i,!1);let s=null;if(s||=t.getContext("webgl2",e),t.removeEventListener("webglcontextcreationerror",i,!1),!s)throw new Error(`Failed to create WebGL context: ${r||"Unknown error"}`);if(e.onContextLost){let{onContextLost:n}=e;t.addEventListener("webglcontextlost",o=>n(o),!1)}if(e.onContextRestored){let{onContextRestored:n}=e;t.addEventListener("webglcontextrestored",o=>n(o),!1)}return s}function St(t,e,r){return r[e]===void 0&&(r[e]=t.getExtension(e)||null),r[e]}function ly(t,e){let r=t.getParameter(7936),i=t.getParameter(7937);St(t,"WEBGL_debug_renderer_info",e);let s=e.WEBGL_debug_renderer_info,n=t.getParameter(s?s.UNMASKED_VENDOR_WEBGL:7936),o=t.getParameter(s?s.UNMASKED_RENDERER_WEBGL:7937),a=n||r,c=o||i,l=t.getParameter(7938),u=uy(a,c),f=pR(a,c),h=gR(a,c);return{type:"webgl",gpu:u,gpuType:h,gpuBackend:f,vendor:a,renderer:c,version:l,shadingLanguage:"glsl",shadingLanguageVersion:300}}function uy(t,e){return/NVIDIA/i.exec(t)||/NVIDIA/i.exec(e)?"nvidia":/INTEL/i.exec(t)||/INTEL/i.exec(e)?"intel":/Apple/i.exec(t)||/Apple/i.exec(e)?"apple":/AMD/i.exec(t)||/AMD/i.exec(e)||/ATI/i.exec(t)||/ATI/i.exec(e)?"amd":/SwiftShader/i.exec(t)||/SwiftShader/i.exec(e)?"software":"unknown"}function pR(t,e){return/Metal/i.exec(t)||/Metal/i.exec(e)?"metal":/ANGLE/i.exec(t)||/ANGLE/i.exec(e)?"opengl":"unknown"}function gR(t,e){if(/SwiftShader/i.exec(t)||/SwiftShader/i.exec(e))return"cpu";switch(uy(t,e)){case"intel":return"integrated";case"software":return"cpu";case"unknown":return"unknown";default:return"discrete"}}function il(t){switch(t){case"uint8":return 5121;case"sint8":return 5120;case"unorm8":return 5121;case"snorm8":return 5120;case"uint16":return 5123;case"sint16":return 5122;case"unorm16":return 5123;case"snorm16":return 5122;case"uint32":return 5125;case"sint32":return 5124;case"float16":return 5131;case"float32":return 5126}throw new Error(String(t))}var ze="texture-compression-bc",ce="texture-compression-astc",ir="texture-compression-etc2",mR="texture-compression-etc1-webgl",sl="texture-compression-pvrtc-webgl",hd="texture-compression-atc-webgl",wo="float32-renderable-webgl",dd="float16-renderable-webgl",_R="rgb9e5ufloat_renderable-webgl",pd="snorm8-renderable-webgl",Po="norm16-renderable-webgl",gd="snorm16-renderable-webgl",nl="float32-filterable",fy="float16-filterable-webgl",Ro="WEBGL_compressed_texture_s3tc",Co="WEBGL_compressed_texture_s3tc_srgb",Rs="EXT_texture_compression_rgtc",Cs="EXT_texture_compression_bptc",yR="WEBGL_compressed_texture_etc",xR="WEBGL_compressed_texture_astc",TR="WEBGL_compressed_texture_etc1",vR="WEBGL_compressed_texture_pvrtc",bR="WEBGL_compressed_texture_atc",hy="EXT_texture_norm16",dy="EXT_render_snorm",SR="EXT_color_buffer_float",ol={"float32-renderable-webgl":["EXT_color_buffer_float"],"float16-renderable-webgl":["EXT_color_buffer_half_float"],"rgb9e5ufloat_renderable-webgl":["WEBGL_render_shared_exponent"],"snorm8-renderable-webgl":[dy],"norm16-renderable-webgl":[hy],"snorm16-renderable-webgl":[hy,dy],"float32-filterable":["OES_texture_float_linear"],"float16-filterable-webgl":["OES_texture_half_float_linear"],"texture-filterable-anisotropic-webgl":["EXT_texture_filter_anisotropic"],"texture-blend-float-webgl":["EXT_float_blend"],"texture-compression-bc":[Ro,Co,Rs,Cs],"texture-compression-bc5-webgl":[Rs],"texture-compression-bc7-webgl":[Cs],"texture-compression-etc2":[yR],"texture-compression-astc":[xR],"texture-compression-etc1-webgl":[TR],"texture-compression-pvrtc-webgl":[vR],"texture-compression-atc-webgl":[bR]};function py(t){return t in ol}function gy(t,e,r){return(ol[e]||[]).every(s=>St(t,s,r))}var al={"rgb8unorm-unsized":{gl:6407,b:4,c:2,bpp:4,dataFormat:6407,types:[5121,33635]},"rgba8unorm-unsized":{gl:6408,b:4,c:2,bpp:4,dataFormat:6408,types:[5121,32819,32820]},r8unorm:{gl:33321,b:1,c:1,rb:!0},r8snorm:{gl:36756,b:1,c:1,render:pd},r8uint:{gl:33330,b:1,c:1,rb:!0},r8sint:{gl:33329,b:1,c:1,rb:!0},rg8unorm:{gl:33323,b:2,c:2,rb:!0},rg8snorm:{gl:36757,b:2,c:2,render:pd},rg8uint:{gl:33336,b:2,c:2,rb:!0},rg8sint:{gl:33335,b:2,c:2,rb:!0},r16uint:{gl:33332,b:2,c:1,rb:!0},r16sint:{gl:33331,b:2,c:1,rb:!0},r16float:{gl:33325,b:2,c:1,render:dd,filter:"float16-filterable-webgl",rb:!0},"r16unorm-webgl":{gl:33322,b:2,c:1,f:Po,rb:!0},"r16snorm-webgl":{gl:36760,b:2,c:1,f:gd},"rgba4unorm-webgl":{gl:32854,b:2,c:4,wgpu:!1,rb:!0},"rgb565unorm-webgl":{gl:36194,b:2,c:4,wgpu:!1,rb:!0},"rgb5a1unorm-webgl":{gl:32855,b:2,c:4,wgpu:!1,rb:!0},"rgb8unorm-webgl":{gl:32849,b:3,c:3,wgpu:!1},"rgb8snorm-webgl":{gl:36758,b:3,c:3,wgpu:!1},rgba8unorm:{gl:32856,b:4,c:2,bpp:4},"rgba8unorm-srgb":{gl:35907,b:4,c:4,bpp:4},rgba8snorm:{gl:36759,b:4,c:4,render:pd},rgba8uint:{gl:36220,b:4,c:4,bpp:4},rgba8sint:{gl:36238,b:4,c:4,bpp:4},bgra8unorm:{b:4,c:4},"bgra8unorm-srgb":{b:4,c:4},rg16uint:{gl:33338,b:4,c:1,bpp:4},rg16sint:{gl:33337,b:4,c:2,bpp:4},rg16float:{gl:33327,bpp:4,b:4,c:2,render:dd,filter:fy,rb:!0},"rg16unorm-webgl":{gl:33324,b:2,c:2,render:Po},"rg16snorm-webgl":{gl:36761,b:2,c:2,render:gd},r32uint:{gl:33334,b:4,c:1,bpp:4,rb:!0},r32sint:{gl:33333,b:4,c:1,bpp:4,rb:!0},r32float:{gl:33326,bpp:4,b:4,c:1,render:wo,filter:nl},rgb9e5ufloat:{gl:35901,b:4,c:3,p:1,render:_R},rg11b10ufloat:{gl:35898,b:4,c:3,p:1,render:wo,rb:!0},rgb10a2unorm:{gl:32857,b:4,c:4,p:1,rb:!0},"rgb10a2uint-webgl":{b:4,c:4,gl:36975,p:1,wgpu:!1,bpp:4,rb:!0},"rgb16unorm-webgl":{gl:32852,b:2,c:3,f:Po},"rgb16snorm-webgl":{gl:36762,b:2,c:3,f:Po},rg32uint:{gl:33340,b:8,c:2,rb:!0},rg32sint:{gl:33339,b:8,c:2,rb:!0},rg32float:{gl:33328,b:8,c:2,render:wo,filter:nl,rb:!0},rgba16uint:{gl:36214,b:8,c:4,rb:!0},rgba16sint:{gl:36232,b:8,c:4,rb:!0},rgba16float:{gl:34842,b:8,c:4,render:dd,filter:fy},"rgba16unorm-webgl":{gl:32859,b:2,c:4,render:Po,rb:!0},"rgba16snorm-webgl":{gl:36763,b:2,c:4,render:gd},"rgb32float-webgl":{gl:34837,render:wo,filter:nl,gl2ext:SR,dataFormat:6407,types:[5126]},rgba32uint:{gl:36208,b:16,c:4,rb:!0},rgba32sint:{gl:36226,b:16,c:4,rb:!0},rgba32float:{gl:34836,b:16,c:4,render:wo,filter:nl,rb:!0},stencil8:{gl:36168,b:1,c:1,attachment:36128,rb:!0},depth16unorm:{gl:33189,b:2,c:1,attachment:36096,dataFormat:6402,types:[5123],rb:!0},depth24plus:{gl:33190,b:3,c:1,attachment:36096,dataFormat:6402,types:[5125]},depth32float:{gl:36012,b:4,c:1,attachment:36096,dataFormat:6402,types:[5126],rb:!0},"depth24plus-stencil8":{gl:35056,b:4,c:2,p:1,attachment:33306,rb:!0,depthTexture:!0,dataFormat:34041,types:[34042]},"depth24unorm-stencil8":{gl:35056,b:4,c:2,p:1,attachment:33306,dataFormat:34041,types:[34042],rb:!0},"depth32float-stencil8":{gl:36013,b:5,c:2,p:1,attachment:33306,dataFormat:34041,types:[36269],rb:!0},"bc1-rgb-unorm-webgl":{gl:33776,x:Ro,f:ze},"bc1-rgb-unorm-srgb-webgl":{gl:35916,x:Co,f:ze},"bc1-rgba-unorm":{gl:33777,x:Ro,f:ze},"bc1-rgba-unorm-srgb":{gl:35916,x:Co,f:ze},"bc2-rgba-unorm":{gl:33778,x:Ro,f:ze},"bc2-rgba-unorm-srgb":{gl:35918,x:Co,f:ze},"bc3-rgba-unorm":{gl:33779,x:Ro,f:ze},"bc3-rgba-unorm-srgb":{gl:35919,x:Co,f:ze},"bc4-r-unorm":{gl:36283,x:Rs,f:ze},"bc4-r-snorm":{gl:36284,x:Rs,f:ze},"bc5-rg-unorm":{gl:36285,x:Rs,f:ze},"bc5-rg-snorm":{gl:36286,x:Rs,f:ze},"bc6h-rgb-ufloat":{gl:36495,x:Cs,f:ze},"bc6h-rgb-float":{gl:36494,x:Cs,f:ze},"bc7-rgba-unorm":{gl:36492,x:Cs,f:ze},"bc7-rgba-unorm-srgb":{gl:36493,x:Cs,f:ze},"etc2-rgb8unorm":{gl:37492,f:ir},"etc2-rgb8unorm-srgb":{gl:37494,f:ir},"etc2-rgb8a1unorm":{gl:37496,f:ir},"etc2-rgb8a1unorm-srgb":{gl:37497,f:ir},"etc2-rgba8unorm":{gl:37493,f:ir},"etc2-rgba8unorm-srgb":{gl:37495,f:ir},"eac-r11unorm":{gl:37488,f:ir},"eac-r11snorm":{gl:37489,f:ir},"eac-rg11unorm":{gl:37490,f:ir},"eac-rg11snorm":{gl:37491,f:ir},"astc-4x4-unorm":{gl:37808,f:ce},"astc-4x4-unorm-srgb":{gl:37840,f:ce},"astc-5x4-unorm":{gl:37809,f:ce},"astc-5x4-unorm-srgb":{gl:37841,f:ce},"astc-5x5-unorm":{gl:37810,f:ce},"astc-5x5-unorm-srgb":{gl:37842,f:ce},"astc-6x5-unorm":{gl:37811,f:ce},"astc-6x5-unorm-srgb":{gl:37843,f:ce},"astc-6x6-unorm":{gl:37812,f:ce},"astc-6x6-unorm-srgb":{gl:37844,f:ce},"astc-8x5-unorm":{gl:37813,f:ce},"astc-8x5-unorm-srgb":{gl:37845,f:ce},"astc-8x6-unorm":{gl:37814,f:ce},"astc-8x6-unorm-srgb":{gl:37846,f:ce},"astc-8x8-unorm":{gl:37815,f:ce},"astc-8x8-unorm-srgb":{gl:37847,f:ce},"astc-10x5-unorm":{gl:37819,f:ce},"astc-10x5-unorm-srgb":{gl:37851,f:ce},"astc-10x6-unorm":{gl:37817,f:ce},"astc-10x6-unorm-srgb":{gl:37849,f:ce},"astc-10x8-unorm":{gl:37818,f:ce},"astc-10x8-unorm-srgb":{gl:37850,f:ce},"astc-10x10-unorm":{gl:37819,f:ce},"astc-10x10-unorm-srgb":{gl:37851,f:ce},"astc-12x10-unorm":{gl:37820,f:ce},"astc-12x10-unorm-srgb":{gl:37852,f:ce},"astc-12x12-unorm":{gl:37821,f:ce},"astc-12x12-unorm-srgb":{gl:37853,f:ce},"pvrtc-rgb4unorm-webgl":{gl:35840,f:sl},"pvrtc-rgba4unorm-webgl":{gl:35842,f:sl},"pvrtc-rbg2unorm-webgl":{gl:35841,f:sl},"pvrtc-rgba2unorm-webgl":{gl:35843,f:sl},"etc1-rbg-unorm-webgl":{gl:36196,f:mR},"atc-rgb-unorm-webgl":{gl:35986,f:hd},"atc-rgba-unorm-webgl":{gl:35986,f:hd},"atc-rgbai-unorm-webgl":{gl:34798,f:hd}},AR={6403:1,36244:1,33319:2,33320:2,6407:3,36248:3,6408:4,36249:4,6402:1,34041:1,6406:1,6409:1,6410:2},ER={5126:4,5125:4,5124:4,5123:2,5122:2,5131:2,5120:1,5121:1};function cl(t,e,r){let i=al[e];if(!i||i.gl===void 0)return!1;let s=i.x||i.gl2ext;return s?!!St(t,s,r):!0}function md(t){let r=al[t]?.gl;if(r===void 0)throw new Error(`Unsupported texture format ${t}`);return r}function my(t,e,r){if(!cl(t,e,r)||e.startsWith("depth")||e.startsWith("stencil"))return!1;try{if(ac(e).signed)return!1}catch{return!1}return e.endsWith("32float")?!!St(t,"OES_texture_float_linear, extensions",r):e.endsWith("16float")?!!St(t,"OES_texture_half_float_linear, extensions",r):!0}function _y(t,e,r){return!(!cl(t,e,r)||typeof e=="number")}function Ms(t){let e=al[t],r=md(t),i=ac(t);return{format:r,dataFormat:e?.dataFormat||wR(i.format,i.integer,i.normalized,r),type:i.dataType?il(i.dataType):e?.types?.[0]||5121,compressed:i.compressed}}function yy(t){let e=al[t];if(!e?.attachment)throw new Error(`${t} is not a depth stencil format`);return e.attachment}function _d(t){let e=Ms(t),r=AR[e.dataFormat]||4,i=ER[e.type]||1;return r*i}function wR(t,e,r,i){if(i===6408||i===6407)return i;switch(t){case"r":return e&&!r?36244:6403;case"rg":return e&&!r?33320:33319;case"rgb":return e&&!r?36248:6407;case"rgba":return e&&!r?36249:6408;default:return 6408}}var xy={"depth-clip-control":"EXT_depth_clamp","timer-query-webgl":"EXT_disjoint_timer_query_webgl2","compilation-status-async-webgl":"KHR_parallel_shader_compile","polygon-mode-webgl":"WEBGL_polygon_mode","provoking-vertex-webgl":"WEBGL_provoking_vertex","shader-clip-cull-distance-webgl":"WEBGL_clip_cull_distance","shader-noperspective-interpolation-webgl":"NV_shader_noperspective_interpolation","shader-conservative-depth-webgl":"EXT_conservative_depth"},ll=class extends Fn{gl;extensions;testedFeatures=new Set;constructor(e,r,i){super([],i),this.gl=e,this.extensions=r,St(e,"EXT_color_buffer_float",r)}*[Symbol.iterator](){let e=this.getFeatures();for(let r of e)this.has(r)&&(yield r);return[]}has(e){return this.disabledFeatures[e]?!1:(this.testedFeatures.has(e)||(this.testedFeatures.add(e),py(e)&&gy(this.gl,e,this.extensions)&&this.features.add(e),this.getWebGLFeature(e)&&this.features.add(e)),this.features.has(e))}initializeFeatures(){let e=this.getFeatures().filter(r=>r!=="polygon-mode-webgl");for(let r of e)this.has(r)}getFeatures(){return[...Object.keys(xy),...Object.keys(ol)]}getWebGLFeature(e){let r=xy[e];return typeof r=="string"?!!St(this.gl,r,this.extensions):!!r}};var ul=class extends Nn{get maxTextureDimension1D(){return 0}get maxTextureDimension2D(){return this.getParameter(3379)}get maxTextureDimension3D(){return this.getParameter(32883)}get maxTextureArrayLayers(){return this.getParameter(35071)}get maxBindGroups(){return 0}get maxDynamicUniformBuffersPerPipelineLayout(){return 0}get maxDynamicStorageBuffersPerPipelineLayout(){return 0}get maxSampledTexturesPerShaderStage(){return this.getParameter(35660)}get maxSamplersPerShaderStage(){return this.getParameter(35661)}get maxStorageBuffersPerShaderStage(){return 0}get maxStorageTexturesPerShaderStage(){return 0}get maxUniformBuffersPerShaderStage(){return this.getParameter(35375)}get maxUniformBufferBindingSize(){return this.getParameter(35376)}get maxStorageBufferBindingSize(){return 0}get minUniformBufferOffsetAlignment(){return this.getParameter(35380)}get minStorageBufferOffsetAlignment(){return 0}get maxVertexBuffers(){return 16}get maxVertexAttributes(){return this.getParameter(34921)}get maxVertexBufferArrayStride(){return 2048}get maxInterStageShaderComponents(){return this.getParameter(35659)}get maxComputeWorkgroupStorageSize(){return 0}get maxComputeInvocationsPerWorkgroup(){return 0}get maxComputeWorkgroupSizeX(){return 0}get maxComputeWorkgroupSizeY(){return 0}get maxComputeWorkgroupSizeZ(){return 0}get maxComputeWorkgroupsPerDimension(){return 0}gl;limits={};constructor(e){super(),this.gl=e}getParameter(e){return this.limits[e]===void 0&&(this.limits[e]=this.gl.getParameter(e)),this.limits[e]}};function At(t,e,r){if(PR(e))return r(t);let{nocatch:i=!0}=e;Zr(t),Lt(t,e);let s;if(i)s=r(t),Sr(t);else try{s=r(t)}finally{Sr(t)}return s}function PR(t){for(let e in t)return!1;return!0}function vy(t,e,r,i){if(Br(e))return i(t);let s=t;Zr(s.gl);try{return RR(t,e),Lt(s.gl,r),i(t)}finally{Sr(s.gl)}}function RR(t,e){let r=t,{gl:i}=r;if(e.cullMode)switch(e.cullMode){case"none":i.disable(2884);break;case"front":i.enable(2884),i.cullFace(1028);break;case"back":i.enable(2884),i.cullFace(1029);break}if(e.frontFace&&i.frontFace(Ui("frontFace",e.frontFace,{ccw:2305,cw:2304})),e.unclippedDepth&&t.features.has("depth-clip-control")&&i.enable(34383),e.depthBias!==void 0&&(i.enable(32823),i.polygonOffset(e.depthBias,e.depthBiasSlopeScale||0)),e.provokingVertex&&t.features.has("provoking-vertex-webgl")){let n=r.getExtension("WEBGL_provoking_vertex").WEBGL_provoking_vertex,o=Ui("provokingVertex",e.provokingVertex,{first:36429,last:36430});n?.provokingVertexWEBGL(o)}if((e.polygonMode||e.polygonOffsetLine)&&t.features.has("polygon-mode-webgl")){if(e.polygonMode){let n=r.getExtension("WEBGL_polygon_mode").WEBGL_polygon_mode,o=Ui("polygonMode",e.polygonMode,{fill:6914,line:6913});n?.polygonModeWEBGL(1028,o),n?.polygonModeWEBGL(1029,o)}e.polygonOffsetLine&&i.enable(10754)}if(t.features.has("shader-clip-cull-distance-webgl")&&(e.clipDistance0&&i.enable(12288),e.clipDistance1&&i.enable(12289),e.clipDistance2&&i.enable(12290),e.clipDistance3&&i.enable(12291),e.clipDistance4&&i.enable(12292),e.clipDistance5&&i.enable(12293),e.clipDistance6&&i.enable(12294),e.clipDistance7&&i.enable(12295)),e.depthWriteEnabled!==void 0&&i.depthMask(MR("depthWriteEnabled",e.depthWriteEnabled)),e.depthCompare&&(e.depthCompare!=="always"?i.enable(2929):i.disable(2929),i.depthFunc(hl("depthCompare",e.depthCompare))),e.stencilWriteMask){let s=e.stencilWriteMask;i.stencilMaskSeparate(1028,s),i.stencilMaskSeparate(1029,s)}if(e.stencilReadMask&&O.warn("stencilReadMask not supported under WebGL"),e.stencilCompare){let s=e.stencilReadMask||4294967295,n=hl("depthCompare",e.stencilCompare);e.stencilCompare!=="always"?i.enable(2960):i.disable(2960),i.stencilFuncSeparate(1028,n,0,s),i.stencilFuncSeparate(1029,n,0,s)}if(e.stencilPassOperation&&e.stencilFailOperation&&e.stencilDepthFailOperation){let s=yd("stencilPassOperation",e.stencilPassOperation),n=yd("stencilFailOperation",e.stencilFailOperation),o=yd("stencilDepthFailOperation",e.stencilDepthFailOperation);i.stencilOpSeparate(1028,n,o,s),i.stencilOpSeparate(1029,n,o,s)}if(e.blendColorOperation||e.blendAlphaOperation){i.enable(3042);let s=Ty("blendColorOperation",e.blendColorOperation||"add"),n=Ty("blendAlphaOperation",e.blendAlphaOperation||"add");i.blendEquationSeparate(s,n);let o=fl("blendColorSrcFactor",e.blendColorSrcFactor||"one"),a=fl("blendColorDstFactor",e.blendColorDstFactor||"zero"),c=fl("blendAlphaSrcFactor",e.blendAlphaSrcFactor||"one"),l=fl("blendAlphaDstFactor",e.blendAlphaDstFactor||"zero");i.blendFuncSeparate(o,a,c,l)}}function hl(t,e){return Ui(t,e,{never:512,less:513,equal:514,"less-equal":515,greater:516,"not-equal":517,"greater-equal":518,always:519})}function yd(t,e){return Ui(t,e,{keep:7680,zero:0,replace:7681,invert:5386,"increment-clamp":7682,"decrement-clamp":7683,"increment-wrap":34055,"decrement-wrap":34056})}function Ty(t,e){return Ui(t,e,{add:32774,subtract:32778,"reverse-subtract":32779,min:32775,max:32776})}function fl(t,e){return Ui(t,e,{one:1,zero:0,"src-color":768,"one-minus-src-color":769,"dst-color":774,"one-minus-dst-color":775,"src-alpha":770,"one-minus-src-alpha":771,"dst-alpha":772,"one-minus-dst-alpha":773,"src-alpha-saturated":776,"constant-color":32769,"one-minus-constant-color":32770,"constant-alpha":32771,"one-minus-constant-alpha":32772})}function CR(t,e){return`Illegal parameter ${e} for ${t}`}function Ui(t,e,r){if(!(e in r))throw new Error(CR(t,e));return r[e]}function MR(t,e){return e}function dl(t){let e={};return t.addressModeU&&(e[10242]=xd(t.addressModeU)),t.addressModeV&&(e[10243]=xd(t.addressModeV)),t.addressModeW&&(e[32882]=xd(t.addressModeW)),t.magFilter&&(e[10240]=by(t.magFilter)),(t.minFilter||t.mipmapFilter)&&(e[10241]=IR(t.minFilter||"linear",t.mipmapFilter)),t.lodMinClamp!==void 0&&(e[33082]=t.lodMinClamp),t.lodMaxClamp!==void 0&&(e[33083]=t.lodMaxClamp),t.type==="comparison-sampler"&&(e[34892]=34894),t.compare&&(e[34893]=hl("compare",t.compare)),t.maxAnisotropy&&(e[34046]=t.maxAnisotropy),e}function xd(t){switch(t){case"clamp-to-edge":return 33071;case"repeat":return 10497;case"mirror-repeat":return 33648}}function by(t){switch(t){case"nearest":return 9728;case"linear":return 9729}}function IR(t,e){if(!e)return by(t);switch(t){case"nearest":return e==="nearest"?9984:9986;case"linear":return e==="nearest"?9985:9987}}var Xe=class extends ie{device;gl;handle;glTarget;glUsage;glIndexType=5123;byteLength;bytesUsed;constructor(e,r={}){super(e,r),this.device=e,this.gl=this.device.gl;let i=typeof r=="object"?r.handle:void 0;this.handle=i||this.gl.createBuffer(),e.setSpectorMetadata(this.handle,{...this.props,data:typeof this.props.data}),this.glTarget=OR(this.props.usage),this.glUsage=NR(this.props.usage),this.glIndexType=this.props.indexType==="uint32"?5125:5123,r.data?this._initWithData(r.data,r.byteOffset,r.byteLength):this._initWithByteLength(r.byteLength||0)}_initWithData(e,r=0,i=e.byteLength+r){let s=this.glTarget;this.gl.bindBuffer(s,this.handle),this.gl.bufferData(s,i,this.glUsage),this.gl.bufferSubData(s,r,e),this.gl.bindBuffer(s,null),this.bytesUsed=i,this.byteLength=i,this._setDebugData(e,r,i),this.trackAllocatedMemory(i)}_initWithByteLength(e){ee(e>=0);let r=e;e===0&&(r=new Float32Array(0));let i=this.glTarget;return this.gl.bindBuffer(i,this.handle),this.gl.bufferData(i,r,this.glUsage),this.gl.bindBuffer(i,null),this.bytesUsed=e,this.byteLength=e,this._setDebugData(null,0,e),this.trackAllocatedMemory(e),this}destroy(){!this.destroyed&&this.handle&&(this.removeStats(),this.trackDeallocatedMemory(),this.gl.deleteBuffer(this.handle),this.destroyed=!0,this.handle=null)}write(e,r=0){this.gl.bindBuffer(36663,this.handle),this.gl.bufferSubData(36663,r,e),this.gl.bindBuffer(36663,null),this._setDebugData(e,r,e.byteLength)}async readAsync(e=0,r){return this.readSyncWebGL(e,r)}readSyncWebGL(e=0,r){r=r??this.byteLength-e;let i=new Uint8Array(r),s=0;return this.gl.bindBuffer(36662,this.handle),this.gl.getBufferSubData(36662,e,i,s,r),this.gl.bindBuffer(36662,null),this._setDebugData(i,e,r),i}};function OR(t){return t&ie.INDEX?34963:t&ie.VERTEX?34962:t&ie.UNIFORM?35345:34962}function NR(t){return t&ie.INDEX||t&ie.VERTEX?35044:t&ie.UNIFORM?35048:35044}var zi=class extends Si{device;handle;parameters;constructor(e,r){super(e,r),this.device=e,this.parameters=dl(r),this.handle=this.handle||this.device.gl.createSampler(),this._setSamplerParameters(this.parameters)}destroy(){this.handle&&(this.device.gl.deleteSampler(this.handle),this.handle=void 0)}toString(){return`Sampler(${this.id},${JSON.stringify(this.props)})`}_setSamplerParameters(e){for(let[r,i]of Object.entries(e)){let s=Number(r);switch(s){case 33082:case 33083:this.device.gl.samplerParameterf(this.handle,s,i);break;default:this.device.gl.samplerParameteri(this.handle,s,i);break}}}};var kt=class extends vi{device;gl;handle;texture;constructor(e,r){super(e,{...Ae.defaultProps,...r}),this.device=e,this.gl=this.device.gl,this.handle=null,this.texture=r.texture}};var FR={parameters:{},pixelStore:{},pixels:null,border:0,dataFormat:void 0,textureUnit:void 0,target:void 0},Je=class t extends Ae{static FACES=[34069,34070,34071,34072,34073,34074];MAX_ATTRIBUTES;device;gl;handle;sampler=void 0;view=void 0;glFormat=void 0;type=void 0;dataFormat=void 0;mipmaps=void 0;target;textureUnit=void 0;loaded=!1;_video;constructor(e,r){super(e,{...FR,format:"rgba8unorm",...r}),this.device=e,this.gl=this.device.gl,this.handle=this.props.handle||this.gl.createTexture(),this.device.setSpectorMetadata(this.handle,{...this.props,data:typeof this.props.data}),this.glFormat=6408,this.target=DR(this.props),this.loaded=!1,typeof this.props?.data=="string"&&Object.assign(this.props,{data:Af(this.props.data)}),this.initialize(this.props),Object.seal(this)}destroy(){this.handle&&(this.gl.deleteTexture(this.handle),this.removeStats(),this.trackDeallocatedMemory("Texture"),this.destroyed=!0)}toString(){return`Texture(${this.id},${this.width}x${this.height})`}createView(e){return new kt(this.device,{...e,texture:this})}initialize(e={}){if(this.props.dimension==="cube")return this.initializeCube(e);let r=e.data;if(r instanceof Promise)return r.then(_=>this.initialize(Object.assign({},e,{pixels:_,data:_}))),this;let i=typeof HTMLVideoElement<"u"&&r instanceof HTMLVideoElement;if(i&&r.readyStatethis.initialize(e)),this;let{parameters:s={}}=e,{pixels:n=null,pixelStore:o={},textureUnit:a=void 0,mipmaps:c=!0}=e;r||(r=n);let{width:l,height:u,dataFormat:f,type:h,compressed:d=!1}=e,{depth:p=0}=e,g=md(e.format);return{width:l,height:u,compressed:d,dataFormat:f,type:h}=this._deduceParameters({format:e.format,type:h,dataFormat:f,compressed:d,data:r,width:l,height:u}),this.width=l,this.height=u,this.glFormat=g,this.type=h,this.dataFormat=f,this.textureUnit=a,Number.isFinite(this.textureUnit)&&(this.gl.activeTexture(33984+this.textureUnit),this.gl.bindTexture(this.target,this.handle)),this.mipmaps=c,this.setImageData({data:r,width:l,height:u,depth:p,format:g,type:h,dataFormat:f,parameters:o,compressed:d}),this.setSampler(e.sampler),this._setSamplerParameters(s),this.view=this.createView({...this.props,mipLevelCount:1,arrayLayerCount:1}),c&&this.device.isTextureFormatFilterable(e.format)&&this.generateMipmap(),i&&(this._video={video:r,parameters:s,lastTime:r.readyState>=HTMLVideoElement.HAVE_CURRENT_DATA?r.currentTime:-1}),this}initializeCube(e){let{mipmaps:r=!0,parameters:i={}}=e;return this.setCubeMapImageData(e).then(()=>{this.loaded=!0,r&&this.generateMipmap(e),this.setSampler(e.sampler),this._setSamplerParameters(i)}),this}setSampler(e={}){let r;e instanceof zi?(this.sampler=e,r=e.props):(this.sampler=new zi(this.device,e),r=e);let i=dl(r);return this._setSamplerParameters(i),this}resize(e){let{height:r,width:i,mipmaps:s=!1}=e;return i!==this.width||r!==this.height?this.initialize({width:i,height:r,format:this.format,type:this.type,dataFormat:this.dataFormat,mipmaps:s}):this}update(){if(this._video){let{video:e,parameters:r,lastTime:i}=this._video;if(i===e.currentTime||e.readyState{this.gl.generateMipmap(this.target)}),this.gl.bindTexture(this.target,null),this}setImageData(e){if(this.props.dimension==="3d"||this.props.dimension==="2d-array")return this.setImageData3D(e);this.trackDeallocatedMemory("Texture");let{target:r=this.target,pixels:i=null,level:s=0,glFormat:n=this.glFormat,offset:o=0,parameters:a={}}=e,{data:c=null,type:l=this.type,width:u=this.width,height:f=this.height,dataFormat:h=this.dataFormat,compressed:d=!1}=e;c||(c=i),{type:l,dataFormat:h,compressed:d,width:u,height:f}=this._deduceParameters({format:this.props.format,type:l,dataFormat:h,compressed:d,data:c,width:u,height:f});let{gl:p}=this;p.bindTexture(this.target,this.handle);let g=null;if({data:c,dataType:g}=this._getDataType({data:c,compressed:d}),At(this.gl,a,()=>{switch(g){case"null":p.texImage2D(r,s,n,u,f,0,h,l,c);break;case"typed-array":p.texImage2D(r,s,n,u,f,0,h,l,c,o);break;case"buffer":this.device.gl.bindBuffer(35052,c.handle||c),this.device.gl.texImage2D(r,s,n,u,f,0,h,l,o),this.device.gl.bindBuffer(35052,null);break;case"browser-object":p.texImage2D(r,s,n,u,f,0,h,l,c);break;case"compressed":for(let[_,x]of c.entries())p.compressedTexImage2D(r,_,x.format,x.width,x.height,0,x.data);break;default:ee(!1,"Unknown image data type")}}),c&&c.byteLength)this.trackAllocatedMemory(c.byteLength,"Texture");else{let _=_d(this.props.format);this.trackAllocatedMemory(this.width*this.height*_,"Texture")}return this.loaded=!0,this}setSubImageData({target:e=this.target,pixels:r=null,data:i=null,x:s=0,y:n=0,width:o=this.width,height:a=this.height,level:c=0,glFormat:l=this.glFormat,type:u=this.type,dataFormat:f=this.dataFormat,compressed:h=!1,offset:d=0,parameters:p={}}){if({type:u,dataFormat:f,compressed:h,width:o,height:a}=this._deduceParameters({format:this.props.format,type:u,dataFormat:f,compressed:h,data:i,width:o,height:a}),ee(this.depth===1,"texSubImage not supported for 3D textures"),i||(i=r),i&&i.data){let g=i;i=g.data,o=g.shape[0],a=g.shape[1]}i instanceof Xe&&(i=i.handle),this.gl.bindTexture(this.target,this.handle),At(this.gl,p,()=>{h?this.gl.compressedTexSubImage2D(e,c,s,n,o,a,l,i):i===null?this.gl.texSubImage2D(e,c,s,n,o,a,f,u,null):ArrayBuffer.isView(i)?this.gl.texSubImage2D(e,c,s,n,o,a,f,u,i,d):typeof WebGLBuffer<"u"&&i instanceof WebGLBuffer?(this.device.gl.bindBuffer(35052,i),this.device.gl.texSubImage2D(e,c,s,n,o,a,f,u,d),this.device.gl.bindBuffer(35052,null)):this.device.gl.texSubImage2D(e,c,s,n,o,a,f,u,i)}),this.gl.bindTexture(this.target,null)}copyFramebuffer(e={}){return O.error("Texture.copyFramebuffer({...}) is no logner supported, use copyToTexture(source, target, opts})")(),null}getActiveUnit(){return this.gl.getParameter(34016)-33984}bind(e=this.textureUnit){let{gl:r}=this;return e!==void 0&&(this.textureUnit=e,r.activeTexture(33984+e)),r.bindTexture(this.target,this.handle),e}unbind(e=this.textureUnit){let{gl:r}=this;return e!==void 0&&(this.textureUnit=e,r.activeTexture(33984+e)),r.bindTexture(this.target,null),e}_getDataType({data:e,compressed:r=!1}){return r?{data:e,dataType:"compressed"}:e===null?{data:e,dataType:"null"}:ArrayBuffer.isView(e)?{data:e,dataType:"typed-array"}:e instanceof Xe?{data:e.handle,dataType:"buffer"}:typeof WebGLBuffer<"u"&&e instanceof WebGLBuffer?{data:e,dataType:"buffer"}:{data:e,dataType:"browser-object"}}_deduceParameters(e){let{format:r,data:i}=e,{width:s,height:n,dataFormat:o,type:a,compressed:c}=e,l=Ms(r);return o=o||l.dataFormat,a=a||l.type,c=c||l.compressed,{width:s,height:n}=this._deduceImageSize(i,s,n),{dataFormat:o,type:a,compressed:c,width:s,height:n,format:r,data:i}}_deduceImageSize(e,r,i){let s;return typeof ImageData<"u"&&e instanceof ImageData?s={width:e.width,height:e.height}:typeof HTMLImageElement<"u"&&e instanceof HTMLImageElement?s={width:e.naturalWidth,height:e.naturalHeight}:typeof HTMLCanvasElement<"u"&&e instanceof HTMLCanvasElement?s={width:e.width,height:e.height}:typeof ImageBitmap<"u"&&e instanceof ImageBitmap?s={width:e.width,height:e.height}:typeof HTMLVideoElement<"u"&&e instanceof HTMLVideoElement?s={width:e.videoWidth,height:e.videoHeight}:e?s={width:r,height:i}:s={width:r>=0?r:1,height:i>=0?i:1},ee(s,"Could not deduced texture size"),ee(r===void 0||s.width===r,"Deduced texture width does not match supplied width"),ee(i===void 0||s.height===i,"Deduced texture height does not match supplied height"),s}async setCubeMapImageData(e){let{gl:r}=this,{width:i,height:s,pixels:n,data:o,format:a=6408,type:c=5121}=e,l=n||o,u=await Promise.all(t.FACES.map(f=>{let h=l[f];return Promise.all(Array.isArray(h)?h:[h])}));this.bind(),t.FACES.forEach((f,h)=>{u[h].length>1&&this.props.mipmaps!==!1&&O.warn(`${this.id} has mipmap and multiple LODs.`)(),u[h].forEach((d,p)=>{i&&s?r.texImage2D(f,p,a,i,s,0,a,c,d):r.texImage2D(f,p,a,a,c,d)})}),this.unbind()}setImageDataForFace(e){let{face:r,width:i,height:s,pixels:n,data:o,format:a=6408,type:c=5121}=e,{gl:l}=this,u=n||o;return this.bind(),u instanceof Promise?u.then(f=>this.setImageDataForFace(Object.assign({},e,{face:r,data:f,pixels:f}))):this.width||this.height?l.texImage2D(r,0,a,i,s,0,a,c,u):l.texImage2D(r,0,a,a,c,u),this}setImageData3D(e){let{level:r=0,dataFormat:i,format:s,type:n,width:o,height:a,depth:c=1,offset:l=0,data:u,parameters:f={}}=e;this.trackDeallocatedMemory("Texture"),this.gl.bindTexture(this.target,this.handle);let h=Ms(s);if(At(this.gl,f,()=>{ArrayBuffer.isView(u)&&this.gl.texImage3D(this.target,r,h.format,o,a,c,0,h.dataFormat,h.type,u),u instanceof Xe&&(this.gl.bindBuffer(35052,u.handle),this.gl.texImage3D(this.target,r,i,o,a,c,0,s,n,l))}),u&&u.byteLength)this.trackAllocatedMemory(u.byteLength,"Texture");else{let d=_d(this.props.format);this.trackAllocatedMemory(this.width*this.height*this.depth*d,"Texture")}return this.loaded=!0,this}_setSamplerParameters(e){if(!Br(e)){LR(e),this.gl.bindTexture(this.target,this.handle);for(let[r,i]of Object.entries(e)){let s=Number(r),n=i;switch(s){case 33082:case 33083:this.gl.texParameterf(this.target,s,n);break;default:this.gl.texParameteri(this.target,s,n);break}}this.gl.bindTexture(this.target,null)}}};function DR(t){switch(t.dimension){case"2d":return 3553;case"cube":return 34067;case"2d-array":return 35866;case"3d":return 32879;case"1d":case"cube-array":default:throw new Error(t.dimension)}}function LR(t){O.log(1,"texture sampler parameters",t)()}var sr=class extends Ai{device;gl;handle;get texture(){return this.colorAttachments[0]}constructor(e,r){super(e,r);let i=r.handle===null;if(this.device=e,this.gl=e.gl,this.handle=this.props.handle||i?this.props.handle:this.gl.createFramebuffer(),!i){e.setSpectorMetadata(this.handle,{id:this.props.id,props:this.props}),this.autoCreateAttachmentTextures();let s=this.gl.bindFramebuffer(36160,this.handle);for(let n=0;nO.info("Spector capture started:",e)()),Qe?.onCapture.add(e=>{O.info("Spector capture complete:",e)(),Qe?.getResultUI(),Qe?.resultView.display(),Qe?.resultView.addCapture(e)})),t?.canvas){if(typeof t.spector=="string"&&t.spector!==t.canvas.id)return Qe;Qe?.startCapture(t?.canvas,500),new Promise(e=>setTimeout(e,2e3)).then(e=>{O.info("Spector capture stopped after 2 seconds")(),Qe?.stopCapture()})}return Qe}var WR="https://unpkg.com/webgl-debug@2.0.1/index.js";function wy(t){return t.luma=t.luma||{},t.luma}async function Py(){ke()&&!globalThis.WebGLDebugUtils&&(globalThis.global=globalThis.global||globalThis,globalThis.global.module={},await Xn(WR))}function Ry(t,e={}){return t?e.debug?jR(t,e):HR(t):null}function HR(t){let e=wy(t);return e.realContext?e.realContext:t}function jR(t,e){if(!globalThis.WebGLDebugUtils)return O.warn("webgl-debug not loaded")(),t;let r=wy(t);if(r.debugContext)return r.debugContext;globalThis.WebGLDebugUtils.init({...Gr,...t});let i=globalThis.WebGLDebugUtils.makeDebugContext(t,XR.bind(null,e),$R.bind(null,e));for(let o in Gr)!(o in i)&&typeof Gr[o]=="number"&&(i[o]=Gr[o]);class s{}Object.setPrototypeOf(i,Object.getPrototypeOf(t)),Object.setPrototypeOf(s,i);let n=Object.create(s);return r.realContext=t,r.debugContext=n,n.debug=!0,n}function Td(t,e){e=Array.from(e).map(i=>i===void 0?"undefined":i);let r=globalThis.WebGLDebugUtils.glFunctionArgsToString(t,e);return r=`${r.slice(0,100)}${r.length>100?"...":""}`,`gl.${t}(${r})`}function XR(t,e,r,i){i=Array.from(i).map(a=>a===void 0?"undefined":a);let s=globalThis.WebGLDebugUtils.glEnumToString(e),n=globalThis.WebGLDebugUtils.glFunctionArgsToString(r,i),o=`${s} in gl.${r}(${n})`;O.error(o)();debugger;if(t.throwOnError)throw new Error(o)}function $R(t,e,r){let i="";if(O.level>=1&&(i=Td(e,r),O.log(1,i)()),t.break&&t.break.length>0&&(i=i||Td(e,r),t.break.every(n=>i.indexOf(n)!==-1)))debugger;for(let s of r)if(s===void 0){if(i=i||Td(e,r),t.throwOnError)throw new Error(`Undefined argument: ${i}`);O.error(`Undefined argument: ${i}`)();debugger}}function My(t){let e=t.split(/\r?\n/),r=[];for(let i of e){if(i.length<=1)continue;let s=i.split(":");if(s.length===2){let[f,h]=s;r.push({message:h.trim(),type:Cy(f),lineNum:0,linePos:0});continue}let[n,o,a,...c]=s,l=parseInt(a,10);isNaN(l)&&(l=0);let u=parseInt(o,10);isNaN(u)&&(u=0),r.push({message:c.join(":").trim(),type:Cy(n),lineNum:l,linePos:u})}return r}function Cy(t){let e=["warning","error","info"],r=t.toLowerCase();return e.includes(r)?r:"info"}var gl=class extends bi{device;handle;constructor(e,r){switch(super(e,r),this.device=e,this.props.stage){case"vertex":this.handle=this.props.handle||this.device.gl.createShader(35633);break;case"fragment":this.handle=this.props.handle||this.device.gl.createShader(35632);break;default:throw new Error(this.props.stage)}this._compile(this.source)}destroy(){this.handle&&(this.removeStats(),this.device.gl.deleteShader(this.handle),this.destroyed=!0)}async getCompilationInfo(){return await this._waitForCompilationComplete(),this.getCompilationInfoSync()}getCompilationInfoSync(){let e=this.device.gl.getShaderInfoLog(this.handle);return My(e)}getTranslatedSource(){return this.device.getExtension("WEBGL_debug_shaders").WEBGL_debug_shaders?.getTranslatedShaderSource(this.handle)}async _compile(e){e=(s=>s.startsWith("#version ")?s:`#version 100
+${s}`)(e);let{gl:i}=this.device;if(i.shaderSource(this.handle,e),i.compileShader(this.handle),O.level===0){this.compilationStatus="pending";return}if(!this.device.features.has("compilation-status-async-webgl")){if(this._getCompilationStatus(),this.debugShader(),this.compilationStatus==="error")throw new Error(`GLSL compilation errors in ${this.props.stage} shader ${this.props.id}`);return}O.once(1,"Shader compilation is asynchronous")(),await this._waitForCompilationComplete(),O.info(2,`Shader ${this.id} - async compilation complete: ${this.compilationStatus}`)(),this._getCompilationStatus(),this.debugShader()}async _waitForCompilationComplete(){let e=async s=>await new Promise(n=>setTimeout(n,s));if(!this.device.features.has("compilation-status-async-webgl")){await e(10);return}let{gl:i}=this.device;for(;;){if(i.getShaderParameter(this.handle,37297))return;await e(10)}}_getCompilationStatus(){this.compilationStatus=this.device.gl.getShaderParameter(this.handle,35713)?"success":"error"}};var YR=256,KR=1024,qR=16384,vd=6144,GR=[1,2,4,8],ml=class extends Ln{device;glParameters;constructor(e,r){super(e,r),this.device=e,Zr(this.device.gl),this.setParameters(this.props.parameters),this.clear()}end(){Sr(this.device.gl)}pushDebugGroup(e){}popDebugGroup(){}insertDebugMarker(e){}setParameters(e={}){let r={...this.glParameters};this.props.framebuffer&&(r.framebuffer=this.props.framebuffer),this.props.depthReadOnly&&(r.depthMask=!this.props.depthReadOnly),r.stencilMask=this.props.stencilReadOnly?0:1,r[35977]=this.props.discard,e.viewport&&(e.viewport.length>=6?(r.viewport=e.viewport.slice(0,4),r.depthRange=[e.viewport[4],e.viewport[5]]):r.viewport=e.viewport),e.scissorRect&&(r.scissorTest=!0,r.scissor=e.scissorRect),e.blendConstant&&(r.blendColor=e.blendConstant),e.stencilReference&&(console.warn("RenderPassParameters.stencilReference not yet implemented in WebGL"),e[2967]=e.stencilReference),e.colorMask&&(r.colorMask=GR.map(i=>!!(i&e.colorMask))),this.glParameters=r,Lt(this.device.gl,r)}beginOcclusionQuery(e){this.props.occlusionQuerySet?.beginOcclusionQuery()}endOcclusionQuery(){this.props.occlusionQuerySet?.endOcclusionQuery()}clear(){let e={...this.glParameters},r=0;this.props.clearColor!==!1&&(r|=qR,e.clearColor=this.props.clearColor),this.props.clearDepth!==!1&&(r|=YR,e.clearDepth=this.props.clearDepth),this.props.clearStencil!==!1&&(r|=KR,e.clearStencil=this.props.clearStencil),r!==0&&At(this.device.gl,e,()=>{this.device.gl.clear(r)})}clearColorBuffer(e=0,r=[0,0,0,0]){At(this.device.gl,{framebuffer:this.props.framebuffer},()=>{switch(r.constructor){case Int32Array:this.device.gl.clearBufferiv(vd,e,r);break;case Uint32Array:this.device.gl.clearBufferuiv(vd,e,r);break;case Float32Array:default:this.device.gl.clearBufferfv(vd,e,r);break}})}};var ZR="Failed to deduce GL constant from typed array";function Iy(t){switch(ArrayBuffer.isView(t)?t.constructor:t){case Float32Array:return 5126;case Uint16Array:return 5123;case Uint32Array:return 5125;case Uint8Array:return 5121;case Uint8ClampedArray:return 5121;case Int8Array:return 5120;case Int16Array:return 5122;case Int32Array:return 5124;default:throw new Error(ZR)}}function Mo(t,e){let{clamped:r=!0}=e||{};switch(t){case 5126:return Float32Array;case 5123:case 33635:case 32819:case 32820:return Uint16Array;case 5125:return Uint32Array;case 5121:return r?Uint8ClampedArray:Uint8Array;case 5120:return Int8Array;case 5122:return Int16Array;case 5124:return Int32Array;default:throw new Error("Failed to deduce typed array type from GL constant")}}var JR={offset:0,stride:0,type:5126,size:1,divisor:0,normalized:!1,integer:!1},QR={deprecatedProps:{instanced:"divisor",isInstanced:"divisor"}},_l=class t{offset;stride;type;size;divisor;normalized;integer;buffer;index;static getBytesPerElement(e){return Mo(e.type||5126).BYTES_PER_ELEMENT}static getBytesPerVertex(e){return ee(e.size),Mo(e.type||5126).BYTES_PER_ELEMENT*e.size}static resolve(...e){return new t(JR,...e)}constructor(...e){e.forEach(r=>this._assign(r)),Object.freeze(this)}toString(){return JSON.stringify(this)}get BYTES_PER_ELEMENT(){return t.getBytesPerElement(this)}get BYTES_PER_VERTEX(){return t.getBytesPerVertex(this)}_assign(e={}){return e=Sf("Accessor",e,QR),e.type!==void 0&&(this.type=e.type,(e.type===5124||e.type===5125)&&(this.integer=!0)),e.size!==void 0&&(this.size=e.size),e.offset!==void 0&&(this.offset=e.offset),e.stride!==void 0&&(this.stride=e.stride),e.normalize!==void 0&&(this.normalized=e.normalize),e.normalized!==void 0&&(this.normalized=e.normalized),e.integer!==void 0&&(this.integer=e.integer),e.divisor!==void 0&&(this.divisor=e.divisor),e.buffer!==void 0&&(this.buffer=e.buffer),e.index!==void 0&&(typeof e.index=="boolean"?this.index=e.index?1:0:this.index=e.index),e.instanced!==void 0&&(this.divisor=e.instanced?1:0),e.isInstanced!==void 0&&(this.divisor=e.isInstanced?1:0),this.offset===void 0&&delete this.offset,this.stride===void 0&&delete this.stride,this.type===void 0&&delete this.type,this.size===void 0&&delete this.size,this.divisor===void 0&&delete this.divisor,this.normalized===void 0&&delete this.normalized,this.integer===void 0&&delete this.integer,this.buffer===void 0&&delete this.buffer,this.index===void 0&&delete this.index,this}};function Oy(t){return eC.includes(t)}var eC=[35678,35680,35679,35682,36289,36292,36293,36298,36299,36300,36303,36306,36307,36308,36311],Ny={5126:[5126,1,"float","f32","float32"],35664:[5126,2,"vec2","vec2","float32x2"],35665:[5126,3,"vec3","vec3","float32x3"],35666:[5126,4,"vec4","vec4","float32x4"],5124:[5124,1,"int","i32","sint32"],35667:[5124,2,"ivec2","vec2