PageSourceSearch

https://www.0biglife.com/_next/static/chunks/6455.908bb99ca26b9f6c.js

js 0biglife.com collected 2026-10-06 00:15:55 UTC 161,075 bytes, 241 lines download raw bytes

1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6455],{125:(e,t,r)=>{var n=r(2115),i="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},a=n.useState,o=n.useEffect,s=n.useLayoutEffect,l=n.useDebugValue;function u(e){var t=e.getSnapshot;e=e.value;try{var r=t();return!i(e,r)}catch(e){return!0}}var c="undefined"==typeof window||void 0===window.document||void 0===window.document.createElement?function(e,t){return t()}:function(e,t){var r=t(),n=a({inst:{value:r,getSnapshot:t}}),i=n[0].inst,c=n[1];return s(function(){i.value=r,i.getSnapshot=t,u(i)&&c({inst:i})},[e,r,t]),o(function(){return u(i)&&c({inst:i}),e(function(){u(i)&&c({inst:i})})},[e]),l(r),r};t.useSyncExternalStore=void 0!==n.useSyncExternalStore?n.useSyncExternalStore:c},258:(e,t,r)=>{r.d(t,{Hl:()=>A});var n=r(3388),i=r(2115),a=r(7548);function o(e,t){let r;return(...n)=>{window.clearTimeout(r),r=window.setTimeout(()=>e(...n),t)}}let s=["x","y","top","bottom","left","right","width","height"];var l=r(4735),u=r(5155);function c({ref:e,children:t,fallback:r,resize:l,style:c,gl:A,events:d=n.f,eventSource:h,eventPrefix:f,shadows:B,linear:m,flat:p,legacy:C,orthographic:g,frameloop:v,dpr:E,performance:M,raycaster:b,camera:y,scene:F,onPointerMissed:I,onCreated:R,...w}){i.useMemo(()=>(0,n.e)(a),[]);let G=(0,n.u)(),[D,T]=function({debounce:e,scroll:t,polyfill:r,offsetSize:n}={debounce:0,scroll:!1,offsetSize:!1}){var a,l,u;let c=r||("undefined"==typeof window?class{}:window.ResizeObserver);if(!c)throw Error("This browser does not support ResizeObserver out of the box. See: https://github.com/react-spring/react-use-measure/#resize-observer-polyfills");let[A,d]=(0,i.useState)({left:0,top:0,width:0,height:0,bottom:0,right:0,x:0,y:0}),h=(0,i.useRef)({element:null,scrollContainers:null,resizeObserver:null,lastBounds:A,orientationHandler:null}),f=e?"number"==typeof e?e:e.scroll:null,B=e?"number"==typeof e?e:e.resize:null,m=(0,i.useRef)(!1);(0,i.useEffect)(()=>(m.current=!0,()=>void(m.current=!1)));let[p,C,g]=(0,i.useMemo)(()=>{let e=()=>{let e,t;if(!h.current.element)return;let{left:r,top:i,width:a,height:o,bottom:l,right:u,x:c,y:A}=h.current.element.getBoundingClientRect(),f={left:r,top:i,width:a,height:o,bottom:l,right:u,x:c,y:A};h.current.element instanceof HTMLElement&&n&&(f.height=h.current.element.offsetHeight,f.width=h.current.element.offsetWidth),Object.freeze(f),m.current&&(e=h.current.lastBounds,t=f,!s.every(r=>e[r]===t[r]))&&d(h.current.lastBounds=f)};return[e,B?o(e,B):e,f?o(e,f):e]},[d,n,f,B]);function v(){h.current.scrollContainers&&(h.current.scrollContainers.forEach(e=>e.removeEventListener("scroll",g,!0)),h.current.scrollContainers=null),h.current.resizeObserver&&(h.current.resizeObserver.disconnect(),h.current.resizeObserver=null),h.current.orientationHandler&&("orientation"in screen&&"removeEventListener"in screen.orientation?screen.orientation.removeEventListener("change",h.current.orientationHandler):"onorientationchange"in window&&window.removeEventListener("orientationchange",h.current.orientationHandler))}function E(){h.current.element&&(h.current.resizeObserver=new c(g),h.current.resizeObserver.observe(h.current.element),t&&h.current.scrollContainers&&h.current.scrollContainers.forEach(e=>e.addEventListener("scroll",g,{capture:!0,passive:!0})),h.current.orientationHandler=()=>{g()},"orientation"in screen&&"addEventListener"in screen.orientation?screen.orientation.addEventListener("change",h.current.orientationHandler):"onorientationchange"in window&&window.addEventListener("orientationchange",h.current.orientationHandler))}return a=g,l=!!t,(0,i.useEffect)(()=>{if(l)return window.addEventListener("scroll",a,{capture:!0,passive:!0}),()=>void window.removeEventListener("scroll",a,!0)},[a,l]),u=C,(0,i.useEffect)(()=>(window.addEventListener("resize",u),()=>void window.removeEventListener("resize",u)),[u]),(0,i.useEffect)(()=>{v(),E()},[t,g,C]),(0,i.useEffect)(()=>v,[]),[e=>{e&&e!==h.current.element&&(v(),h.current.element=e,h.current.scrollContainers=function e(t){let r=[];if(!t||t===document.body)return r;let{overflow:n,overflowX:i,overflowY:a}=window.getComputedStyle(t);return[n,i,a].some(e=>"auto"===e||"scroll"===e)&&r.push(t),[...r,...e(t.parentElement)]}(e),E())},A,p]}({scroll:!0,debounce:{scroll:50,resize:0},...l}),x=i.useRef(null),H=i.useRef(null);i.useImperativeHandle(e,()=>x.current);let P=(0,n.a)(I),[S,O]=i.useState(!1),[U,J]=i.useState(!1);if(S)throw S;if(U)throw U;let L=i.useRef(null);(0,n.b)(()=>{let e=x.current;T.width>0&&T.height>0&&e&&(L.current||(L.current=(0,n.c)(e)),async function(){await L.current.configure({gl:A,scene:F,events:d,shadows:B,linear:m,flat:p,legacy:C,orthographic:g,frameloop:v,dpr:E,performance:M,raycaster:b,camera:y,size:T,onPointerMissed:(...e)=>null==P.current?void 0:P.current(...e),onCreated:e=>{null==e.events.connect||e.events.connect(h?(0,n.i)(h)?h.current:h:H.current),f&&e.setEvents({compute:(e,t)=>
1{let r=e[f+"X"],n=e[f+"Y"];t.pointer.set(r/t.size.width*2-1,-(2*(n/t.size.height))+1),t.raycaster.setFromCamera(t.pointer,t.camera)}}),null==R||R(e)}}),L.current.render((0,u.jsx)(G,{children:(0,u.jsx)(n.E,{set:J,children:(0,u.jsx)(i.Suspense,{fallback:(0,u.jsx)(n.B,{set:O}),children:null!=t?t:null})})}))}())}),i.useEffect(()=>{let e=x.current;if(e)return()=>(0,n.d)(e)},[]);let _=h?"none":"auto";return(0,u.jsx)("div",{ref:H,style:{position:"relative",width:"100%",height:"100%",overflow:"hidden",pointerEvents:_,...c},...w,children:(0,u.jsx)("div",{ref:D,style:{width:"100%",height:"100%"},children:(0,u.jsx)("canvas",{ref:x,style:{display:"block"},children:r})})})}function A(e){return(0,u.jsx)(l.Af,{children:(0,u.jsx)(c,{...e})})}r(9914)},1046:(e,t,r)=>{r.d(t,{n:()=>o});var n=r(2115),i=r(3388),a=r(5339);let o=n.forwardRef(({children:e,enabled:t=!0,speed:r=1,rotationIntensity:o=1,floatIntensity:s=1,floatingRange:l=[-.1,.1],autoInvalidate:u=!1,...c},A)=>{let d=n.useRef(null);n.useImperativeHandle(A,()=>d.current,[]);let h=n.useRef(1e4*Math.random());return(0,i.D)(e=>{var n,i;if(!t||0===r)return;u&&e.invalidate();let c=h.current+e.clock.elapsedTime;d.current.rotation.x=Math.cos(c/4*r)/8*o,d.current.rotation.y=Math.sin(c/4*r)/8*o,d.current.rotation.z=Math.sin(c/4*r)/20*o;let A=Math.sin(c/4*r)/10;A=a.cj9.mapLinear(A,-.1,.1,null!=(n=null==l?void 0:l[0])?n:-.1,null!=(i=null==l?void 0:l[1])?i:.1),d.current.position.y=A*s,d.current.updateMatrix()}),n.createElement("group",c,n.createElement("group",{ref:d,matrixAutoUpdate:!1},e))})},2034:(e,t,r)=>{r.d(t,{_:()=>u});var n=r(6014),i=r(2115),a=r(5339),o=r(3388);let s={uniforms:{tDiffuse:{value:null},h:{value:1/512}},vertexShader:`
2      varying vec2 vUv;
3
4      void main() {
5
6        vUv = uv;
7        gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
8
9      }
10  `,fragmentShader:`
11    uniform sampler2D tDiffuse;
12    uniform float h;
13
14    varying vec2 vUv;
15
16    void main() {
17
18    	vec4 sum = vec4( 0.0 );
19
20    	sum += texture2D( tDiffuse, vec2( vUv.x - 4.0 * h, vUv.y ) ) * 0.051;
21    	sum += texture2D( tDiffuse, vec2( vUv.x - 3.0 * h, vUv.y ) ) * 0.0918;
22    	sum += texture2D( tDiffuse, vec2( vUv.x - 2.0 * h, vUv.y ) ) * 0.12245;
23    	sum += texture2D( tDiffuse, vec2( vUv.x - 1.0 * h, vUv.y ) ) * 0.1531;
24    	sum += texture2D( tDiffuse, vec2( vUv.x, vUv.y ) ) * 0.1633;
25    	sum += texture2D( tDiffuse, vec2( vUv.x + 1.0 * h, vUv.y ) ) * 0.1531;
26    	sum += texture2D( tDiffuse, vec2( vUv.x + 2.0 * h, vUv.y ) ) * 0.12245;
27    	sum += texture2D( tDiffuse, vec2( vUv.x + 3.0 * h, vUv.y ) ) * 0.0918;
28    	sum += texture2D( tDiffuse, vec2( vUv.x + 4.0 * h, vUv.y ) ) * 0.051;
29
30    	gl_FragColor = sum;
31
32    }
33  `},l={uniforms:{tDiffuse:{value:null},v:{value:1/512}},vertexShader:`
34    varying vec2 vUv;
35
36    void main() {
37
38      vUv = uv;
39      gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
40
41    }
42  `,fragmentShader:`
43
44  uniform sampler2D tDiffuse;
45  uniform float v;
46
47  varying vec2 vUv;
48
49  void main() {
50
51    vec4 sum = vec4( 0.0 );
52
53    sum += texture2D( tDiffuse, vec2( vUv.x, vUv.y - 4.0 * v ) ) * 0.051;
54    sum += texture2D( tDiffuse, vec2( vUv.x, vUv.y - 3.0 * v ) ) * 0.0918;
55    sum += texture2D( tDiffuse, vec2( vUv.x, vUv.y - 2.0 * v ) ) * 0.12245;
56    sum += texture2D( tDiffuse, vec2( vUv.x, vUv.y - 1.0 * v ) ) * 0.1531;
57    sum += texture2D( tDiffuse, vec2( vUv.x, vUv.y ) ) * 0.1633;
58    sum += texture2D( tDiffuse, vec2( vUv.x, vUv.y + 1.0 * v ) ) * 0.1531;
59    sum += texture2D( tDiffuse, vec2( vUv.x, vUv.y + 2.0 * v ) ) * 0.12245;
60    sum += texture2D( tDiffuse, vec2( vUv.x, vUv.y + 3.0 * v ) ) * 0.0918;
61    sum += texture2D( tDiffuse, vec2( vUv.x, vUv.y + 4.0 * v ) ) * 0.051;
62
63    gl_FragColor = sum;
64
65  }
66  `},u=i.forwardRef(({scale:e=10,frames:t=1/0,opacity:r=1,width:u=1,height:c=1,blur:A=1,near:d=0,far:h=10,resolution:f=512,smooth:B=!0,color:m="#000000",depthWrite:p=!1,renderOrder:C,...g},v)=>{let E,M,b=i.useRef(null),y=(0,o.C)(e=>e.scene),F=(0,o.C)(e=>e.gl),I=i.useRef(null);u*=Array.isArray(e)?e[0]:e||1,c*=Array.isArray(e)?e[1]:e||1;let[R,w,G,D,T,x,H]=i.useMemo(()=>{let e=new a.nWS(f,f),t=new a.nWS(f,f);t.texture.generateMipmaps=e.texture.generateMipmaps=!1;let r=new a.bdM(u,c).rotateX(Math.PI/2),n=new a.eaF(r),i=new a.CSG;i.depthTest=i.depthWrite=!1,i.onBeforeCompile=e=>{e.uniforms={...e.uniforms,ucolor:{value:new a.Q1f(m)}},e.fragmentShader=e.fragmentShader.replace("void main() {",`uniform vec3 ucolor;
67           void main() {
68          `),e.fragmentShader=e.fragmentShader.replace("vec4( vec3( 1.0 - fragCoordZ ), opacity );","vec4( ucolor * fragCoordZ * 2.0, ( 1.0 - fragCoordZ ) * 1.0 );")};let o=new a.BKk(s),A=new a.BKk(l);return A.depthTest=o.depthTest=!1,[e,r,i,n,o,A,t]},[f,u,c,e,m]),P=e=>{D.visible=!0,D.material=T,T.uniforms.tDiffuse.value=R.texture,T.uniforms.h.value=e/256,F.setRenderTarget(H),F.render(D,I.current),D.material=x,x.uniforms.tDiffuse.value=H.texture,x.uniforms.v.value=e/256,F.setRenderTarget(R),F.render(D,I.current),D.visible=!1},S=0;return(0,o.D)(()=>{I.current&&(t===1/0||S<t)&&(S++,E=y.background,M=y.overrideMaterial,b.current.visible=!1,y.background=null,y.overrideMaterial=G,F.setRenderTarget(R),F.render(y,I.current),P(A),B&&P(.4*A),F.setRenderTarget(null),b.current.visible=!0,y.overrideMaterial=M,y.background=E)}),i.useImperativeHandle(v,()=>b.current,[]),i.createElement("group",(0,n.A)({"rotation-x":Math.PI/2},g,{ref:b}),i.createElement("mesh",{renderOrder:C,geometry:w,scale:[1,-1,1],rotation:[-Math.PI/2,0,0]},i.createElement("meshBasicMaterial",{transparent:!0,map:R.texture,opacity:r,depthWrite:p})),i.createElement("orthographicCamera",{ref:I,args:[-u/2,u/2,c/2,-c/2,d,h]}))})},3279:(e,t,r)=>{r.d(t,{x:()=>u});var n=r(6014),i=r(2115),a=r(5339),o=r(3388);let s=parseInt(a.sPf.replace(/\D+/g,"")),l=function(e,t,r,n){var i;return(i=class extends a.BKk{constructor(n){for(let i in super({vertexShader:t,fragmentShader:r,...n}),e)this.uniforms[i]=new a.nc$(e[i]),Object.defineProperty(this,i,{get(){return this.uniforms[i].value},set(e){this.uniforms[i].value=e}});this.uniforms=a.LlO.clone(this.uniforms)}}).key=a.cj9.generateUUID(),i}({cellSize:.5,sectionSize:1,fadeDistance:100,fadeStrength:1,fadeFrom:1,cellThickness:.5,sectionThickness:1,cellColor:new a.Q1f,sectionColor:new a.Q1f,infiniteGrid:!1,followCamera:!1,worldCamProjPosition:new a.Pq0,worldPlanePosition:new a.Pq0},`
69    varying vec3 localPosition;
70    varying vec4 worldPosition;
71
72    uniform vec3 worldCamProjPosition;
73    uniform vec3 worldPlanePosition;
74    uniform float fadeDistance;
75    uniform bool infiniteGrid;
76    uniform bool followCamera;
77
78    void main() {
79      localPosition = position.xzy;
80      if (infiniteGrid) localPosition *= 1.0 + fadeDistance;
81      
82      worldPosition = modelMatrix * vec4(localPosition, 1.0);
83      if (followCamera) {
84        worldPosition.xyz += (worldCamProjPosition - worldPlanePosition);
85        localPosition = (inverse(modelMatrix) * worldPosition).xyz;
86      }
87
88      gl_Position = projectionMatrix * viewMatrix * worldPosition;
89    }
90  `,`
91    varying vec3 localPosition;
92    varying vec4 worldPosition;
93
94    uniform vec3 worldCamProjPosition;
95    uniform float cellSize;
96    uniform float sectionSize;
97    uniform vec3 cellColor;
98    uniform vec3 sectionColor;
99    uniform float fadeDistance;
100    uniform float fadeStrength;
101    uniform float fadeFrom;
102    uniform float cellThickness;
103    uniform float sectionThickness;
104
105    float getGrid(float size, float thickness) {
106      vec2 r = localPosition.xz / size;
107      vec2 grid = abs(fract(r - 0.5) - 0.5) / fwidth(r);
108      float line = min(grid.x, grid.y) + 1.0 - thickness;
109      return 1.0 - min(line, 1.0);
110    }
111
112    void main() {
113      float g1 = getGrid(cellSize, cellThickness);
114      float g2 = getGrid(sectionSize, sectionThickness);
115
116      vec3 from = worldCamProjPosition*vec3(fadeFrom);
117      float dist = distance(from, worldPosition.xyz);
118      float d = 1.0 - min(dist / fadeDistance, 1.0);
119      vec3 color = mix(cellColor, sectionColor, min(1.0, sectionThickness * g2));
120
121      gl_FragColor = vec4(color, (g1 + g2) * pow(d, fadeStrength));
122      gl_FragColor.a = mix(0.75 * gl_FragColor.a, gl_FragColor.a, g2);
123      if (gl_FragColor.a <= 0.0) discard;
124
125      #include <tonemapping_fragment>
126      #include <${s>=154?"colorspace_fragment":"encodings_fragment"}>
127    }
128  `),u=i.forwardRef(({args:e,cellColor:t="#000000",sectionColor:r="#2080ff",cellSize:s=.5,sectionSize:u=1,followCamera:c=!1,infiniteGrid:A=!1,fadeDistance:d=100,fadeStrength:h=1,fadeFrom:f=1,cellThickness:B=.5,sectionThickness:m=1,side:p=a.hsX,...C},g)=>{(0,o.e)({GridMaterial:l});let v=i.useRef(null);i.useImperativeHandle(g,()=>v.current,[]);let E=new a.Zcv,M=new a.Pq0(0,1,0),b=new a.Pq0(0,0,0);return(0,o.D)(e=>{E.setFromNormalAndCoplanarPoint(M,b).applyMatrix4(v.current.matrixWorld);let t=v.current.material,r=t.uniforms.worldCamProjPosition,n=t.uniforms.worldPlanePosition;E.projectPoint(e.camera.position,r.value),n.value.set(0,0,0).applyMatrix4(v.current.matrixWorld)}),i.createElement("mesh",(0,n.A)({ref:v,frustumCulled:!1},C),i.createElement("gridMaterial",(0,n.A)({transparent:!0,"extensions-derivatives":!0,side:p},{cellSize:s,sectionSize:u,cellColor:t,sectionColor:r,cellThickness:B,sectionThickness:m},{fadeDistance:d,fadeStrength:h,fadeFrom:f,infiniteGrid:A,followCamera:c})),i.createElement("planeGeometry",{args:e}))})},3531:(e,t,r)=>{let n;r.d(t,{p:()=>eu}),r(2115);var i=r(5339);let a=new WeakMap;class o extends i.aHM{constructor(e){super(e),this.decoderPath="",this.decoderConfig={},this.decoderBinary=null,this.decoderPending=null,this.workerLimit=4,this.workerPool=[],this.workerNextTaskID=1,this.workerSourceURL="",this.defaultAttributeIDs={position:"POSITION",normal:"NORMAL",color:"COLOR",uv:"TEX_COORD"},this.defaultAttributeTypes={position:"Float32Array",normal:"Float32Array",color:"Float32Array",uv:"Float32Array"}}setDecoderPath(e){return this.decoderPath=e,this}setDecoderConfig(e){return this.decoderConfig=e,this}setWorkerLimit(e){return this.workerLimit=e,this}load(e,t,r,n){let a=new i.Y9S(this.manager);a.setPath(this.path),a.setResponseType("arraybuffer"),a.setRequestHeader(this.requestHeader),a.setWithCredentials(this.withCredentials),a.load(e,e=>{let r={attributeIDs:this.defaultAttributeIDs,attributeTypes:this.defaultAttributeTypes,useUniqueIDs:!1};this.decodeGeometry(e,r).then(t).catch(n)},r,n)}decodeDracoFile(e,t,r,n){let i={attributeIDs:r||this.defaultAttributeIDs,attributeTypes:n||this.defaultAttributeTypes,useUniqueIDs:!!r};this.decodeGeometry(e,i).then(t)}decodeGeometry(e,t){let r;for(let e in t.attributeTypes){let r=t.attributeTypes[e];void 0!==r.BYTES_PER_ELEMENT&&(t.attributeTypes[e]=r.name)}let n=JSON.stringify(t);if(a.has(e)){let t=a.get(e);if(t.key===n)return t.promise;if(0===e.byteLength)throw Error("THREE.DRACOLoader: Unable to re-decode a buffer with different settings. Buffer has already been transferred.")}let i=this.workerNextTaskID++,o=e.byteLength,s=this._getWorker(i,o).then(n=>(r=n,new Promise((n,a)=>{r._callbacks[i]={resolve:n,reject:a},r.postMessage({type:"decode",id:i,taskConfig:t,buffer:e},[e])}))).then(e=>this._createGeometry(e.geometry));return s.catch(()=>!0).then(()=>{r&&i&&this._releaseTask(r,i)}),a.set(e,{key:n,promise:s}),s}_createGeometry(e){let t=new i.LoY;e.index&&t.setIndex(new i.THS(e.index.array,1));for(let r=0;r<e.attributes.length;r++){let n=e.attributes[r],a=n.name,o=n.array,s=n.itemSize;t.setAttribute(a,new i.THS(o,s))}return t}_loadLibrary(e,t){let r=new i.Y9S(this.manager);return r.setPath(this.decoderPath),r.setResponseType(t),r.setWithCredentials(this.withCredentials),new Promise((t,n)=>{r.load(e,t,void 0,n)})}preload(){return this._initDecoder(),this}
128_initDecoder(){if(this.decoderPending)return this.decoderPending;let e="object"!=typeof WebAssembly||"js"===this.decoderConfig.type,t=[];return e?t.push(this._loadLibrary("draco_decoder.js","text")):(t.push(this._loadLibrary("draco_wasm_wrapper.js","text")),t.push(this._loadLibrary("draco_decoder.wasm","arraybuffer"))),this.decoderPending=Promise.all(t).then(t=>{let r=t[0];e||(this.decoderConfig.wasmBinary=t[1]);let n=s.toString(),i=["/* draco decoder */",r,"\n/* worker */",n.substring(n.indexOf("{")+1,n.lastIndexOf("}"))].join("\n");this.workerSourceURL=URL.createObjectURL(new Blob([i]))}),this.decoderPending}_getWorker(e,t){return this._initDecoder().then(()=>{if(this.workerPool.length<this.workerLimit){let e=new Worker(this.workerSourceURL);e._callbacks={},e._taskCosts={},e._taskLoad=0,e.postMessage({type:"init",decoderConfig:this.decoderConfig}),e.onmessage=function(t){let r=t.data;switch(r.type){case"decode":e._callbacks[r.id].resolve(r);break;case"error":e._callbacks[r.id].reject(r);break;default:console.error('THREE.DRACOLoader: Unexpected message, "'+r.type+'"')}},this.workerPool.push(e)}else this.workerPool.sort(function(e,t){return e._taskLoad>t._taskLoad?-1:1});let r=this.workerPool[this.workerPool.length-1];return r._taskCosts[e]=t,r._taskLoad+=t,r})}_releaseTask(e,t){e._taskLoad-=e._taskCosts[t],delete e._callbacks[t],delete e._taskCosts[t]}debug(){console.log("Task load: ",this.workerPool.map(e=>e._taskLoad))}dispose(){for(let e=0;e<this.workerPool.length;++e)this.workerPool[e].terminate();return this.workerPool.length=0,this}}function s(){let e,t;onmessage=function(r){let n=r.data;switch(n.type){case"init":e=n.decoderConfig,t=new Promise(function(t){e.onModuleLoaded=function(e){t({draco:e})},DracoDecoderModule(e)});break;case"decode":let i=n.buffer,a=n.taskConfig;t.then(e=>{let t=e.draco,r=new t.Decoder,o=new t.DecoderBuffer;o.Init(new Int8Array(i),i.byteLength);try{let e=function(e,t,r,n){let i,a,o=n.attributeIDs,s=n.attributeTypes,l=t.GetEncodedGeometryType(r);if(l===e.TRIANGULAR_MESH)i=new e.Mesh,a=t.DecodeBufferToMesh(r,i);else if(l===e.POINT_CLOUD)i=new e.PointCloud,a=t.DecodeBufferToPointCloud(r,i);else throw Error("THREE.DRACOLoader: Unexpected geometry type.");if(!a.ok()||0===i.ptr)throw Error("THREE.DRACOLoader: Decoding failed: "+a.error_msg());let u={index:null,attributes:[]};for(let r in o){let a,l,c=self[s[r]];if(n.useUniqueIDs)l=o[r],a=t.GetAttributeByUniqueId(i,l);else{if(-1===(l=t.GetAttributeId(i,e[o[r]])))continue;a=t.GetAttribute(i,l)}u.attributes.push(function(e,t,r,n,i,a){let o=a.num_components(),s=r.num_points()*o,l=s*i.BYTES_PER_ELEMENT,u=function(e,t){switch(t){case Float32Array:return e.DT_FLOAT32;case Int8Array:return e.DT_INT8;case Int16Array:return e.DT_INT16;case Int32Array:return e.DT_INT32;case Uint8Array:return e.DT_UINT8;case Uint16Array:return e.DT_UINT16;case Uint32Array:return e.DT_UINT32}}(e,i),c=e._malloc(l);t.GetAttributeDataArrayForAllPoints(r,a,u,l,c);let A=new i(e.HEAPF32.buffer,c,s).slice();return e._free(c),{name:n,array:A,itemSize:o}}(e,t,i,r,c,a))}return l===e.TRIANGULAR_MESH&&(u.index=function(e,t,r){let n=3*r.num_faces(),i=4*n,a=e._malloc(i);t.GetTrianglesUInt32Array(r,i,a);let o=new Uint32Array(e.HEAPF32.buffer,a,n).slice();return e._free(a),{array:o,itemSize:1}}(e,t,i)),e.destroy(i),u}(t,r,o,a),i=e.attributes.map(e=>e.array.buffer);e.index&&i.push(e.index.array.buffer),self.postMessage({type:"decode",id:n.id,geometry:e},i)}catch(e){console.error(e),self.postMessage({type:"error",id:n.id,error:e.message})}finally{t.destroy(o),t.destroy(r)}})}}}function l(e,t){if(t===i.RJ4)return console.warn("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles."),e;if(t!==i.rYR&&t!==i.O49)return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unknown draw mode:",t),e;{let r=e.getIndex();if(null===r){let t=[],n=e.getAttribute("position");if(void 0===n)return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Undefined position attribute. Processing not possible."),e;for(let e=0;e<n.count;e++)t.push(e);e.setIndex(t),r=e.getIndex()}let n=r.count-2,a=[];if(r)if(t===i.rYR)for(let e=1;e<=n;e++)a.push(r.getX(0)),a.push(r.getX(e)),a.push(r.getX(e+1));else for(let e=0;e<n;e++)e%2==0?(a.push(r.getX(e)),a.push(r.getX(e+1)),a.push(r.getX(e+2))):(a.push(r.getX(e+2)),a.push(r.getX(e+1)),a.push(r.getX(e)));a.length/3!==n&&console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unable to generate correct amount of triangles.");let o=e.clone();return o.setIndex(a),o.clearGroups(),o}}var u=r(4814);function c(e){if("undefined"!=typeof TextDecoder)return new TextDecoder().decode(e);let t="";for(let r=0,n=e.length;r<n;r++)t+=String.fromCharCode(e[r]);try{return decodeURIComponent(escape(t))}catch(e){return t}}let A="srgb",d="srgb-linear";class h extends i.aHM{constructor(e){super(e),this.dracoLoader=null,this.ktx2Loader=null,this.meshoptDecoder=null,this.pluginCallbacks=[],this.register(function(e){return new g(e)}),this.register(function(e){return new v(e)}),this.register(function(e){return new G(e)}),this.register(function(e){return new D(e)}),this.register(function(e){return new T(e)}),this.register(function(e){return new M(e)}),this.register(function(e){return new b(e)}),this.register(function(e){return new y(e)}),this.register(function(e){return new F(e)}),this.register(function(e){return new C(e)}),this.register(function(e){return new I(e)}),this.register(function(e){return new E(e)}),this.register(function(e){return new w(e)}),this.register(function(e){return new R(e)}),this.register(function(e){return new m(e)}),this.register(function(e){return new x(e)}),this.register(function(e){return new H(e)})}load(e,t,r,n){let a,o=this;if(""!==this.resourcePath)a=this.resourcePath;else if(""!==this.path){let t=i.r6x.extractUrlBase(e);a=i.r6x.resolveURL(t,this.path)}else a=i.r6x.extractUrlBase(e);this.manager.itemStart(e);let s=function(t){n?n(t):console.error(t),o.manager.itemError(e),o.manager.itemEnd(e)},l=new i.Y9S(this.manager);l.setPath(this.path),l.setResponseType("arraybuffer"),l.setRequestHeader(this.requestHeader),l.setWithCredentials(this.withCredentials),l.load(e,function(r){try{o.parse(r,a,function(r){t(r),o.manager.itemEnd(e)},s)}catch(e){s(e)}},r,s)}setDRACOLoader(e){return this.dracoLoader=e,this}setDDSLoader(){throw Error('THREE.GLTFLoader: "MSFT_texture_dds" no longer supported. Please update to "KHR_texture_basisu".')}setKTX2Loader(e){return this.ktx2Loader=e,this}setMeshoptDecoder(e){return this.meshoptDecoder=e,this}register(e){return -1===this.pluginCallbacks.indexOf(e)&&this.pluginCallbacks.push(e),this}unregister(e){return -1!==this.pluginCallbacks.indexOf(e)&&this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(e),1),this}parse(e,t,r,n){let i,a={},o={};if("string"==typeof e)i=JSON.parse(e);else if(e instanceof ArrayBuffer)if(c(new Uint8Array(e.slice(0,4)))===P){try{a[B.KHR_BINARY_GLTF]=new O(e)}catch(e){n&&n(e);return}i=JSON.parse(a[B.KHR_BINARY_GLTF].content)}else i=JSON.parse(c(new Uint8Array(e)));else i=e;if(void 0===i.asset||i.asset.version[0]<2){n&&n(Error("THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported."));return}let s=new en(i,{path:t||this.resourcePath||"",crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,meshoptDecoder:this.meshoptDecoder});s.fileLoader.setRequestHeader(this.requestHeader);for(let e=0;e<this.pluginCallbacks.length;e++){let t=this.pluginCallbacks[e](s);t.name||console.error("THREE.GLTFLoader: Invalid plugin found: missing name"),o[t.name]=t,a[t.name]=!0}if(i.extensionsUsed)for(let e=0;e<i.extensionsUsed.length;++e){let t=i.extensionsUsed[e],r=i.extensionsRequired||[];
128switch(t){case B.KHR_MATERIALS_UNLIT:a[t]=new p;break;case B.KHR_DRACO_MESH_COMPRESSION:a[t]=new U(i,this.dracoLoader);break;case B.KHR_TEXTURE_TRANSFORM:a[t]=new J;break;case B.KHR_MESH_QUANTIZATION:a[t]=new L;break;default:r.indexOf(t)>=0&&void 0===o[t]&&console.warn('THREE.GLTFLoader: Unknown extension "'+t+'".')}}s.setExtensions(a),s.setPlugins(o),s.parse(r,n)}parseAsync(e,t){let r=this;return new Promise(function(n,i){r.parse(e,t,n,i)})}}function f(){let e={};return{get:function(t){return e[t]},add:function(t,r){e[t]=r},remove:function(t){delete e[t]},removeAll:function(){e={}}}}let B={KHR_BINARY_GLTF:"KHR_binary_glTF",KHR_DRACO_MESH_COMPRESSION:"KHR_draco_mesh_compression",KHR_LIGHTS_PUNCTUAL:"KHR_lights_punctual",KHR_MATERIALS_CLEARCOAT:"KHR_materials_clearcoat",KHR_MATERIALS_DISPERSION:"KHR_materials_dispersion",KHR_MATERIALS_IOR:"KHR_materials_ior",KHR_MATERIALS_SHEEN:"KHR_materials_sheen",KHR_MATERIALS_SPECULAR:"KHR_materials_specular",KHR_MATERIALS_TRANSMISSION:"KHR_materials_transmission",KHR_MATERIALS_IRIDESCENCE:"KHR_materials_iridescence",KHR_MATERIALS_ANISOTROPY:"KHR_materials_anisotropy",KHR_MATERIALS_UNLIT:"KHR_materials_unlit",KHR_MATERIALS_VOLUME:"KHR_materials_volume",KHR_TEXTURE_BASISU:"KHR_texture_basisu",KHR_TEXTURE_TRANSFORM:"KHR_texture_transform",KHR_MESH_QUANTIZATION:"KHR_mesh_quantization",KHR_MATERIALS_EMISSIVE_STRENGTH:"KHR_materials_emissive_strength",EXT_MATERIALS_BUMP:"EXT_materials_bump",EXT_TEXTURE_WEBP:"EXT_texture_webp",EXT_TEXTURE_AVIF:"EXT_texture_avif",EXT_MESHOPT_COMPRESSION:"EXT_meshopt_compression",EXT_MESH_GPU_INSTANCING:"EXT_mesh_gpu_instancing"};class m{constructor(e){this.parser=e,this.name=B.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}_markDefs(){let e=this.parser,t=this.parser.json.nodes||[];for(let r=0,n=t.length;r<n;r++){let n=t[r];n.extensions&&n.extensions[this.name]&&void 0!==n.extensions[this.name].light&&e._addNodeRef(this.cache,n.extensions[this.name].light)}}_loadLight(e){let t,r=this.parser,n="light:"+e,a=r.cache.get(n);if(a)return a;let o=r.json,s=((o.extensions&&o.extensions[this.name]||{}).lights||[])[e],l=new i.Q1f(0xffffff);void 0!==s.color&&l.setRGB(s.color[0],s.color[1],s.color[2],d);let u=void 0!==s.range?s.range:0;switch(s.type){case"directional":(t=new i.ZyN(l)).target.position.set(0,0,-1),t.add(t.target);break;case"point":(t=new i.HiM(l)).distance=u;break;case"spot":(t=new i.nCl(l)).distance=u,s.spot=s.spot||{},s.spot.innerConeAngle=void 0!==s.spot.innerConeAngle?s.spot.innerConeAngle:0,s.spot.outerConeAngle=void 0!==s.spot.outerConeAngle?s.spot.outerConeAngle:Math.PI/4,t.angle=s.spot.outerConeAngle,t.penumbra=1-s.spot.innerConeAngle/s.spot.outerConeAngle,t.target.position.set(0,0,-1),t.add(t.target);break;default:throw Error("THREE.GLTFLoader: Unexpected light type: "+s.type)}return t.position.set(0,0,0),t.decay=2,$(t,s),void 0!==s.intensity&&(t.intensity=s.intensity),t.name=r.createUniqueName(s.name||"light_"+e),a=Promise.resolve(t),r.cache.add(n,a),a}getDependency(e,t){if("light"===e)return this._loadLight(t)}createNodeAttachment(e){let t=this,r=this.parser,n=r.json.nodes[e],i=(n.extensions&&n.extensions[this.name]||{}).light;return void 0===i?null:this._loadLight(i).then(function(e){return r._getNodeRef(t.cache,i,e)})}}class p{constructor(){this.name=B.KHR_MATERIALS_UNLIT}getMaterialType(){return i.V9B}extendParams(e,t,r){let n=[];e.color=new i.Q1f(1,1,1),e.opacity=1;let a=t.pbrMetallicRoughness;if(a){if(Array.isArray(a.baseColorFactor)){let t=a.baseColorFactor;e.color.setRGB(t[0],t[1],t[2],d),e.opacity=t[3]}void 0!==a.baseColorTexture&&n.push(r.assignTexture(e,"map",a.baseColorTexture,A))}return Promise.all(n)}}class C{constructor(e){this.parser=e,this.name=B.KHR_MATERIALS_EMISSIVE_STRENGTH}extendMaterialParams(e,t){let r=this.parser.json.materials[e];if(!r.extensions||!r.extensions[this.name])return Promise.resolve();let n=r.extensions[this.name].emissiveStrength;return void 0!==n&&(t.emissiveIntensity=n),Promise.resolve()}}class g{constructor(e){this.parser=e,this.name=B.KHR_MATERIALS_CLEARCOAT}getMaterialType(e){let t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?i.uSd:null}extendMaterialParams(e,t){let r=this.parser,n=r.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();let a=[],o=n.extensions[this.name];if(void 0!==o.clearcoatFactor&&(t.clearcoat=o.clearcoatFactor),void 0!==o.clearcoatTexture&&a.push(r.assignTexture(t,"clearcoatMap",o.clearcoatTexture)),void 0!==o.clearcoatRoughnessFactor&&(t.clearcoatRoughness=o.clearcoatRoughnessFactor),void 0!==o.clearcoatRoughnessTexture&&a.push(r.assignTexture(t,"clearcoatRoughnessMap",o.clearcoatRoughnessTexture)),void 0!==o.clearcoatNormalTexture&&(a.push(r.assignTexture(t,"clearcoatNormalMap",o.clearcoatNormalTexture)),void 0!==o.clearcoatNormalTexture.scale)){let e=o.clearcoatNormalTexture.scale;t.clearcoatNormalScale=new i.I9Y(e,e)}return Promise.all(a)}}class v{constructor(e){this.parser=e,this.name=B.KHR_MATERIALS_DISPERSION}getMaterialType(e){let t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?i.uSd:null}extendMaterialParams(e,t){let r=this.parser.json.materials[e];if(!r.extensions||!r.extensions[this.name])return Promise.resolve();let n=r.extensions[this.name];return t.dispersion=void 0!==n.dispersion?n.dispersion:0,Promise.resolve()}}class E{constructor(e){this.parser=e,this.name=B.KHR_MATERIALS_IRIDESCENCE}getMaterialType(e){let t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?i.uSd:null}extendMaterialParams(e,t){let r=this.parser,n=r.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();let i=[],a=n.extensions[this.name];return void 0!==a.iridescenceFactor&&(t.iridescence=a.iridescenceFactor),void 0!==a.iridescenceTexture&&i.push(r.assignTexture(t,"iridescenceMap",a.iridescenceTexture)),void 0!==a.iridescenceIor&&(t.iridescenceIOR=a.iridescenceIor),void 0===t.iridescenceThicknessRange&&(t.iridescenceThicknessRange=[100,400]),void 0!==a.iridescenceThicknessMinimum&&(t.iridescenceThicknessRange[0]=a.iridescenceThicknessMinimum),void 0!==a.iridescenceThicknessMaximum&&(t.iridescenceThicknessRange[1]=a.iridescenceThicknessMaximum),void 0!==a.iridescenceThicknessTexture&&i.push(r.assignTexture(t,"iridescenceThicknessMap",a.iridescenceThicknessTexture)),Promise.all(i)}}class M{constructor(e){this.parser=e,this.name=B.KHR_MATERIALS_SHEEN}getMaterialType(e){let t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?i.uSd:null}extendMaterialParams(e,t){let r=this.parser,n=r.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();let a=[];t.sheenColor=new i.Q1f(0,0,0),t.sheenRoughness=0,t.sheen=1;let o=n.extensions[this.name];if(void 0!==o.sheenColorFactor){let e=o.sheenColorFactor;t.sheenColor.setRGB(e[0],e[1],e[2],d)}return void 0!==o.sheenRoughnessFactor&&(t.sheenRoughness=o.sheenRoughnessFactor),void 0!==o.sheenColorTexture&&a.push(r.assignTexture(t,"sheenColorMap",o.sheenColorTexture,A)),void 0!==o.sheenRoughnessTexture&&a.push(r.assignTexture(t,"sheenRoughnessMap",o.sheenRoughnessTexture)),Promise.all(a)}}class b{constructor(e){this.parser=e,this.name=B.KHR_MATERIALS_TRANSMISSION}getMaterialType(e){let t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?i.uSd:null}extendMaterialParams(e,t){let r=this.parser,n=r.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();let i=[],a=n.extensions[this.name];return void 0!==a.transmissionFactor&&(t.transmission=a.transmissionFactor),void 0!==a.transmissionTexture&&i.push(r.assignTexture(t,"transmissionMap",a.transmissionTexture)),Promise.all(i)}}class y{constructor(e){this.parser=e,this.name=B.KHR_MATERIALS_VOLUME}getMaterialType(e){let t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?i.uSd:null}extendMaterialParams(e,t){let r=this.parser,n=r.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();let a=[],o=n.extensions[this.name];t.thickness=void 0!==o.thicknessFactor?o.thicknessFactor:0,void 0!==o.thicknessTexture&&a.push(r.assignTexture(t,"thicknessMap",o.thicknessTexture)),t.attenuationDistance=o.attenuationDistance||1/0;let s=o.attenuationColor||[1,1,1];return t.attenuationColor=new i.Q1f().setRGB(s[0],s[1],s[2],d),Promise.all(a)}}class F{constructor(e){this.parser=e,this.name=B.KHR_MATERIALS_IOR}getMaterialType(e){let t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?i.uSd:null}extendMaterialParams(e,t){let r=this.parser.json.materials[e];if(!r.extensions||!r.extensions[this.name])return Promise.resolve();let n=r.extensions[this.name];return t.ior=void 0!==n.ior?n.ior:1.5,Promise.resolve()}}class I{constructor(e){this.parser=e,this.name=B.KHR_MATERIALS_SPECULAR}getMaterialType(e){let t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?i.uSd:null}extendMaterialParams(e,t){let r=this.parser,n=r.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();let a=[],o=n.extensions[this.name];t.specularIntensity=void 0!==o.specularFactor?o.specularFactor:1,void 0!==o.specularTexture&&a.push(r.assignTexture(t,"specularIntensityMap",o.specularTexture));let s=o.specularColorFactor||[1,1,1];return t.specularColor=new i.Q1f().setRGB(s[0],s[1],s[2],d),void 0!==o.specularColorTexture&&a.push(r.assignTexture(t,"specularColorMap",o.specularColorTexture,A)),Promise.all(a)}}class R{constructor(e){this.parser=e,this.name=B.EXT_MATERIALS_BUMP}getMaterialType(e){let t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?i.uSd:null}extendMaterialParams(e,t){let r=this.parser,n=r.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();let i=[],a=n.extensions[this.name];return t.bumpScale=void 0!==a.bumpFactor?a.bumpFactor:1,void 0!==a.bumpTexture&&i.push(r.assignTexture(t,"bumpMap",a.bumpTexture)),Promise.all(i)}}class w{constructor(e){this.parser=e,this.name=B.KHR_MATERIALS_ANISOTROPY}getMaterialType(e){let t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?i.uSd:null}extendMaterialParams(e,t){let r=this.parser,n=r.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();let i=[],a=n.extensions[this.name];return void 0!==a.anisotropyStrength&&(t.anisotropy=a.anisotropyStrength),void 0!==a.anisotropyRotation&&(t.anisotropyRotation=a.anisotropyRotation),void 0!==a.anisotropyTexture&&i.push(r.assignTexture(t,"anisotropyMap",a.anisotropyTexture)),Promise.all(i)}}class G{constructor(e){this.parser=e,this.name=B.KHR_TEXTURE_BASISU}loadTexture(e){let t=this.parser,r=t.json,n=r.textures[e];if(!n.extensions||!n.extensions[this.name])return null;let i=n.extensions[this.name],a=t.options.ktx2Loader;if(!a)if(!(r.extensionsRequired&&r.extensionsRequired.indexOf(this.name)>=0))return null;else throw Error("THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures");return t.loadTextureImage(e,i.source,a)}}class D{constructor(e){this.parser=e,this.name=B.EXT_TEXTURE_WEBP,this.isSupported=null}loadTexture(e){let t=this.name,r=this.parser,n=r.json,i=n.textures[e];if(!i.extensions||!i.extensions[t])return null;let a=i.extensions[t],o=n.images[a.source],s=r.textureLoader;if(o.uri){let e=r.options.manager.getHandler(o.uri);null!==e&&(s=e)}return this.detectSupport().then(function(i){if(i)return r.loadTextureImage(e,a.source,s);if(n.extensionsRequired&&n.extensionsRequired.indexOf(t)>=0)throw Error("THREE.GLTFLoader: WebP required by asset but unsupported.");return r.loadTexture(e)})}detectSupport(){return this.isSupported||(this.isSupported=new Promise(function(e){let t=new Image;t.src="data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA",t.onload=t.onerror=function(){e(1===t.height)}})),this.isSupported}}class T{constructor(e){this.parser=e,this.name=B.EXT_TEXTURE_AVIF,this.isSupported=null}loadTexture(e){let t=this.name,r=this.parser,n=r.json,i=n.textures[e];if(!i.extensions||!i.extensions[t])return null;let a=i.extensions[t],o=n.images[a.source],s=r.textureLoader;if(o.uri){let e=r.options.manager.getHandler(o.uri);null!==e&&(s=e)}return this.detectSupport().then(function(i){if(i)return r.loadTextureImage(e,a.source,s);if(n.extensionsRequired&&n.extensionsRequired.indexOf(t)>=0)throw Error("THREE.GLTFLoader: AVIF required by asset but unsupported.");return r.loadTexture(e)})}detectSupport(){return this.isSupported||(this.isSupported=new Promise(function(e){let t=new Image;t.src="data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAABcAAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAEAAAABAAAAEHBpeGkAAAAAAwgICAAAAAxhdj
128FDgQAMAAAAABNjb2xybmNseAACAAIABoAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAAB9tZGF0EgAKCBgABogQEDQgMgkQAAAAB8dSLfI=",t.onload=t.onerror=function(){e(1===t.height)}})),this.isSupported}}class x{constructor(e){this.name=B.EXT_MESHOPT_COMPRESSION,this.parser=e}loadBufferView(e){let t=this.parser.json,r=t.bufferViews[e];if(!r.extensions||!r.extensions[this.name])return null;{let e=r.extensions[this.name],n=this.parser.getDependency("buffer",e.buffer),i=this.parser.options.meshoptDecoder;if(!i||!i.supported)if(!(t.extensionsRequired&&t.extensionsRequired.indexOf(this.name)>=0))return null;else throw Error("THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files");return n.then(function(t){let r=e.byteOffset||0,n=e.byteLength||0,a=e.count,o=e.byteStride,s=new Uint8Array(t,r,n);return i.decodeGltfBufferAsync?i.decodeGltfBufferAsync(a,o,s,e.mode,e.filter).then(function(e){return e.buffer}):i.ready.then(function(){let t=new ArrayBuffer(a*o);return i.decodeGltfBuffer(new Uint8Array(t),a,o,s,e.mode,e.filter),t})})}}}class H{constructor(e){this.name=B.EXT_MESH_GPU_INSTANCING,this.parser=e}createNodeMesh(e){let t=this.parser.json,r=t.nodes[e];if(!r.extensions||!r.extensions[this.name]||void 0===r.mesh)return null;for(let e of t.meshes[r.mesh].primitives)if(e.mode!==N.TRIANGLES&&e.mode!==N.TRIANGLE_STRIP&&e.mode!==N.TRIANGLE_FAN&&void 0!==e.mode)return null;let n=r.extensions[this.name].attributes,a=[],o={};for(let e in n)a.push(this.parser.getDependency("accessor",n[e]).then(t=>(o[e]=t,o[e])));return a.length<1?null:(a.push(this.parser.createNodeMesh(e)),Promise.all(a).then(e=>{let t=e.pop(),r=t.isGroup?t.children:[t],n=e[0].count,a=[];for(let e of r){let t=new i.kn4,r=new i.Pq0,s=new i.PTz,l=new i.Pq0(1,1,1),u=new i.ZLX(e.geometry,e.material,n);for(let e=0;e<n;e++)o.TRANSLATION&&r.fromBufferAttribute(o.TRANSLATION,e),o.ROTATION&&s.fromBufferAttribute(o.ROTATION,e),o.SCALE&&l.fromBufferAttribute(o.SCALE,e),u.setMatrixAt(e,t.compose(r,s,l));for(let t in o)if("_COLOR_0"===t){let e=o[t];u.instanceColor=new i.uWO(e.array,e.itemSize,e.normalized)}else"TRANSLATION"!==t&&"ROTATION"!==t&&"SCALE"!==t&&e.geometry.setAttribute(t,o[t]);i.B69.prototype.copy.call(u,e),this.parser.assignFinalMaterial(u),a.push(u)}return t.isGroup?(t.clear(),t.add(...a),t):a[0]}))}}let P="glTF",S={JSON:0x4e4f534a,BIN:5130562};class O{constructor(e){this.name=B.KHR_BINARY_GLTF,this.content=null,this.body=null;let t=new DataView(e,0,12);if(this.header={magic:c(new Uint8Array(e.slice(0,4))),version:t.getUint32(4,!0),length:t.getUint32(8,!0)},this.header.magic!==P)throw Error("THREE.GLTFLoader: Unsupported glTF-Binary header.");if(this.header.version<2)throw Error("THREE.GLTFLoader: Legacy binary file detected.");let r=this.header.length-12,n=new DataView(e,12),i=0;for(;i<r;){let t=n.getUint32(i,!0);i+=4;let r=n.getUint32(i,!0);if(i+=4,r===S.JSON){let r=new Uint8Array(e,12+i,t);this.content=c(r)}else if(r===S.BIN){let r=12+i;this.body=e.slice(r,r+t)}i+=t}if(null===this.content)throw Error("THREE.GLTFLoader: JSON content not found.")}}class U{constructor(e,t){if(!t)throw Error("THREE.GLTFLoader: No DRACOLoader instance provided.");this.name=B.KHR_DRACO_MESH_COMPRESSION,this.json=e,this.dracoLoader=t,this.dracoLoader.preload()}decodePrimitive(e,t){let r=this.json,n=this.dracoLoader,i=e.extensions[this.name].bufferView,a=e.extensions[this.name].attributes,o={},s={},l={};for(let e in a)o[Z[e]||e.toLowerCase()]=a[e];for(let t in e.attributes){let n=Z[t]||t.toLowerCase();if(void 0!==a[t]){let i=r.accessors[e.attributes[t]],a=j[i.componentType];l[n]=a.name,s[n]=!0===i.normalized}}return t.getDependency("bufferView",i).then(function(e){return new Promise(function(t,r){n.decodeDracoFile(e,function(e){for(let t in e.attributes){let r=e.attributes[t],n=s[t];void 0!==n&&(r.normalized=n)}t(e)},o,l,d,r)})})}}class J{constructor(){this.name=B.KHR_TEXTURE_TRANSFORM}extendTexture(e,t){return(void 0===t.texCoord||t.texCoord===e.channel)&&void 0===t.offset&&void 0===t.rotation&&void 0===t.scale||(e=e.clone(),void 0!==t.texCoord&&(e.channel=t.texCoord),void 0!==t.offset&&e.offset.fromArray(t.offset),void 0!==t.rotation&&(e.rotation=t.rotation),void 0!==t.scale&&e.repeat.fromArray(t.scale),e.needsUpdate=!0),e}}
128class L{constructor(){this.name=B.KHR_MESH_QUANTIZATION}}class _ extends i.lGw{constructor(e,t,r,n){super(e,t,r,n)}copySampleValue_(e){let t=this.resultBuffer,r=this.sampleValues,n=this.valueSize,i=e*n*3+n;for(let e=0;e!==n;e++)t[e]=r[i+e];return t}interpolate_(e,t,r,n){let i=this.resultBuffer,a=this.sampleValues,o=this.valueSize,s=2*o,l=3*o,u=n-t,c=(r-t)/u,A=c*c,d=A*c,h=e*l,f=h-l,B=-2*d+3*A,m=d-A,p=1-B,C=m-A+c;for(let e=0;e!==o;e++){let t=a[f+e+o],r=a[f+e+s]*u,n=a[h+e+o],l=a[h+e]*u;i[e]=p*t+C*r+B*n+m*l}return i}}let k=new i.PTz;class K extends _{interpolate_(e,t,r,n){let i=super.interpolate_(e,t,r,n);return k.fromArray(i).normalize().toArray(i),i}}let N={POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6},j={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array},Q={9728:i.hxR,9729:i.k6q,9984:i.pHI,9985:i.kRr,9986:i.Cfg,9987:i.$_I},X={33071:i.ghU,33648:i.kTW,10497:i.GJx},Y={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},Z={POSITION:"position",NORMAL:"normal",TANGENT:"tangent",...u.r>=152?{TEXCOORD_0:"uv",TEXCOORD_1:"uv1",TEXCOORD_2:"uv2",TEXCOORD_3:"uv3"}:{TEXCOORD_0:"uv",TEXCOORD_1:"uv2"},COLOR_0:"color",WEIGHTS_0:"skinWeight",JOINTS_0:"skinIndex"},W={scale:"scale",translation:"position",rotation:"quaternion",weights:"morphTargetInfluences"},z={CUBICSPLINE:void 0,LINEAR:i.PJ3,STEP:i.ljd},V={OPAQUE:"OPAQUE",MASK:"MASK",BLEND:"BLEND"};function q(e,t,r){for(let n in r.extensions)void 0===e[n]&&(t.userData.gltfExtensions=t.userData.gltfExtensions||{},t.userData.gltfExtensions[n]=r.extensions[n])}function $(e,t){void 0!==t.extras&&("object"==typeof t.extras?Object.assign(e.userData,t.extras):console.warn("THREE.GLTFLoader: Ignoring primitive type .extras, "+t.extras))}function ee(e){let t="",r=Object.keys(e).sort();for(let n=0,i=r.length;n<i;n++)t+=r[n]+":"+e[r[n]]+";";return t}function et(e){switch(e){case Int8Array:return 1/127;case Uint8Array:return 1/255;case Int16Array:return 1/32767;case Uint16Array:return 1/65535;default:throw Error("THREE.GLTFLoader: Unsupported normalized accessor component type.")}}let er=new i.kn4;class en{constructor(e={},t={}){this.json=e,this.extensions={},this.plugins={},this.options=t,this.cache=new f,this.associations=new Map,this.primitiveCache={},this.nodeCache={},this.meshCache={refs:{},uses:{}},this.cameraCache={refs:{},uses:{}},this.lightCache={refs:{},uses:{}},this.sourceCache={},this.textureCache={},this.nodeNamesUsed={};let r=!1,n=!1,a=-1;"undefined"!=typeof navigator&&void 0!==navigator.userAgent&&(r=!0===/^((?!chrome|android).)*safari/i.test(navigator.userAgent),a=(n=navigator.userAgent.indexOf("Firefox")>-1)?navigator.userAgent.match(/Firefox\/([0-9]+)\./)[1]:-1),"undefined"==typeof createImageBitmap||r||n&&a<98?this.textureLoader=new i.Tap(this.options.manager):this.textureLoader=new i.Kzg(this.options.manager),this.textureLoader.setCrossOrigin(this.options.crossOrigin),this.textureLoader.setRequestHeader(this.options.requestHeader),this.fileLoader=new i.Y9S(this.options.manager),this.fileLoader.setResponseType("arraybuffer"),"use-credentials"===this.options.crossOrigin&&this.fileLoader.setWithCredentials(!0)}setExtensions(e){this.extensions=e}setPlugins(e){this.plugins=e}parse(e,t){let r=this,n=this.json,i=this.extensions;this.cache.removeAll(),this.nodeCache={},this._invokeAll(function(e){return e._markDefs&&e._markDefs()}),Promise.all(this._invokeAll(function(e){return e.beforeRoot&&e.beforeRoot()})).then(function(){return Promise.all([r.getDependencies("scene"),r.getDependencies("animation"),r.getDependencies("camera")])}).then(function(t){let a={scene:t[0][n.scene||0],scenes:t[0],animations:t[1],cameras:t[2],asset:n.asset,parser:r,userData:{}};return q(i,a,n),$(a,n),Promise.all(r._invokeAll(function(e){return e.afterRoot&&e.afterRoot(a)})).then(function(){for(let e of a.scenes)e.updateMatrixWorld();e(a)})}).catch(t)}_markDefs(){let e=this.json.nodes||[],t=this.json.skins||[],r=this.json.meshes||[];for(let r=0,n=t.length;r<n;r++){let n=t[r].joints;for(let t=0,r=n.length;t<r;t++)e[n[t]].isBone=!0}for(let t=0,n=e.length;t<n;t++){let n=e[t];void 0!==n.mesh&&(this._addNodeRef(this.meshCache,n.mesh),void 0!==n.skin&&(r[n.mesh].isSkinnedMesh=!0)),void 0!==n.camera&&this._addNodeRef(this.cameraCache,n.camera)}}_addNodeRef(e,t){void 0!==t&&(void 0===e.refs[t]&&(e.refs[t]=e.uses[t]=0),e.refs[t]++)}_getNodeRef(e,t,r){if(e.refs[t]<=1)return r;let n=r.clone(),i=(e,t)=>{let r=this.associations.get(e);for(let[n,a]of(null!=r&&this.associations.set(t,r),e.children.entries()))i(a,t.children[n])};return i(r,n),n.name+="_instance_"+e.uses[t]++,n}_invokeOne(e){let t=Object.values(this.plugins);t.push(this);for(let r=0;r<t.length;r++){let n=e(t[r]);if(n)return n}return null}_invokeAll(e){let t=Object.values(this.plugins);t.unshift(this);let r=[];for(let n=0;n<t.length;n++){let i=e(t[n]);i&&r.push(i)}return r}getDependency(e,t){let r=e+":"+t,n=this.cache.get(r);if(!n){switch(e){case"scene":n=this.loadScene(t);break;case"node":n=this._invokeOne(function(e){return e.loadNode&&e.loadNode(t)});break;case"mesh":n=this._invokeOne(function(e){return e.loadMesh&&e.loadMesh(t)});break;case"accessor":n=this.loadAccessor(t);break;case"bufferView":n=this._invokeOne(function(e){return e.loadBufferView&&e.loadBufferView(t)});break;case"buffer":n=this.loadBuffer(t);break;case"material":n=this._invokeOne(function(e){return e.loadMaterial&&e.loadMaterial(t)});break;case"texture":n=this._invokeOne(function(e){return e.loadTexture&&e.loadTexture(t)});break;case"skin":n=this.loadSkin(t);break;case"animation":n=this._invokeOne(function(e){return e.loadAnimation&&e.loadAnimation(t)});break;case"camera":n=this.loadCamera(t);break;default:if(!(n=this._invokeOne(function(r){return r!=this&&r.getDependency&&r.getDependency(e,t)})))throw Error("Unknown type: "+e)}this.cache.add(r,n)}return n}getDependencies(e){let t=this.cache.get(e);if(!t){let r=this;t=Promise.all((this.json[e+("mesh"===e?"es":"s")]||[]).map(function(t,n){return r.getDependency(e,n)})),this.cache.add(e,t)}return t}loadBuffer(e){let t=this.json.buffers[e],r=this.fileLoader;if(t.type&&"arraybuffer"!==t.type)throw Error("THREE.GLTFLoader: "+t.type+" buffer type is not supported.");
128if(void 0===t.uri&&0===e)return Promise.resolve(this.extensions[B.KHR_BINARY_GLTF].body);let n=this.options;return new Promise(function(e,a){r.load(i.r6x.resolveURL(t.uri,n.path),e,void 0,function(){a(Error('THREE.GLTFLoader: Failed to load buffer "'+t.uri+'".'))})})}loadBufferView(e){let t=this.json.bufferViews[e];return this.getDependency("buffer",t.buffer).then(function(e){let r=t.byteLength||0,n=t.byteOffset||0;return e.slice(n,n+r)})}loadAccessor(e){let t=this,r=this.json,n=this.json.accessors[e];if(void 0===n.bufferView&&void 0===n.sparse){let e=Y[n.type],t=j[n.componentType],r=!0===n.normalized,a=new t(n.count*e);return Promise.resolve(new i.THS(a,e,r))}let a=[];return void 0!==n.bufferView?a.push(this.getDependency("bufferView",n.bufferView)):a.push(null),void 0!==n.sparse&&(a.push(this.getDependency("bufferView",n.sparse.indices.bufferView)),a.push(this.getDependency("bufferView",n.sparse.values.bufferView))),Promise.all(a).then(function(e){let a,o,s=e[0],l=Y[n.type],u=j[n.componentType],c=u.BYTES_PER_ELEMENT,A=c*l,d=n.byteOffset||0,h=void 0!==n.bufferView?r.bufferViews[n.bufferView].byteStride:void 0,f=!0===n.normalized;if(h&&h!==A){let e=Math.floor(d/h),r="InterleavedBuffer:"+n.bufferView+":"+n.componentType+":"+e+":"+n.count,A=t.cache.get(r);A||(a=new u(s,e*h,n.count*h/c),A=new i.eB$(a,h/c),t.cache.add(r,A)),o=new i.eHs(A,l,d%h/c,f)}else a=null===s?new u(n.count*l):new u(s,d,n.count*l),o=new i.THS(a,l,f);if(void 0!==n.sparse){let t=Y.SCALAR,r=j[n.sparse.indices.componentType],a=n.sparse.indices.byteOffset||0,c=n.sparse.values.byteOffset||0,A=new r(e[1],a,n.sparse.count*t),d=new u(e[2],c,n.sparse.count*l);null!==s&&(o=new i.THS(o.array.slice(),o.itemSize,o.normalized));for(let e=0,t=A.length;e<t;e++){let t=A[e];if(o.setX(t,d[e*l]),l>=2&&o.setY(t,d[e*l+1]),l>=3&&o.setZ(t,d[e*l+2]),l>=4&&o.setW(t,d[e*l+3]),l>=5)throw Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.")}}return o})}loadTexture(e){let t=this.json,r=this.options,n=t.textures[e].source,i=t.images[n],a=this.textureLoader;if(i.uri){let e=r.manager.getHandler(i.uri);null!==e&&(a=e)}return this.loadTextureImage(e,n,a)}loadTextureImage(e,t,r){let n=this,a=this.json,o=a.textures[e],s=a.images[t],l=(s.uri||s.bufferView)+":"+o.sampler;if(this.textureCache[l])return this.textureCache[l];let u=this.loadImageSource(t,r).then(function(t){t.flipY=!1,t.name=o.name||s.name||"",""===t.name&&"string"==typeof s.uri&&!1===s.uri.startsWith("data:image/")&&(t.name=s.uri);let r=(a.samplers||{})[o.sampler]||{};return t.magFilter=Q[r.magFilter]||i.k6q,t.minFilter=Q[r.minFilter]||i.$_I,t.wrapS=X[r.wrapS]||i.GJx,t.wrapT=X[r.wrapT]||i.GJx,n.associations.set(t,{textures:e}),t}).catch(function(){return null});return this.textureCache[l]=u,u}loadImageSource(e,t){let r=this.json,n=this.options;if(void 0!==this.sourceCache[e])return this.sourceCache[e].then(e=>e.clone());let a=r.images[e],o=self.URL||self.webkitURL,s=a.uri||"",l=!1;if(void 0!==a.bufferView)s=this.getDependency("bufferView",a.bufferView).then(function(e){l=!0;let t=new Blob([e],{type:a.mimeType});return s=o.createObjectURL(t)});else if(void 0===a.uri)throw Error("THREE.GLTFLoader: Image "+e+" is missing URI and bufferView");let u=Promise.resolve(s).then(function(e){return new Promise(function(r,a){let o=r;!0===t.isImageBitmapLoader&&(o=function(e){let t=new i.gPd(e);t.needsUpdate=!0,r(t)}),t.load(i.r6x.resolveURL(e,n.path),o,void 0,a)})}).then(function(e){var t;return!0===l&&o.revokeObjectURL(s),$(e,a),e.userData.mimeType=a.mimeType||((t=a.uri).search(/\.jpe?g($|\?)/i)>0||0===t.search(/^data\:image\/jpeg/)?"image/jpeg":t.search(/\.webp($|\?)/i)>0||0===t.search(/^data\:image\/webp/)?"image/webp":"image/png"),e}).catch(function(e){throw console.error("THREE.GLTFLoader: Couldn't load texture",s),e});return this.sourceCache[e]=u,u}assignTexture(e,t,r,n){let i=this;return this.getDependency("texture",r.index).then(function(a){if(!a)return null;if(void 0!==r.texCoord&&r.texCoord>0&&((a=a.clone()).channel=r.texCoord),i.extensions[B.KHR_TEXTURE_TRANSFORM]){let e=void 0!==r.extensions?r.extensions[B.KHR_TEXTURE_TRANSFORM]:void 0;if(e){let t=i.associations.get(a);a=i.extensions[B.KHR_TEXTURE_TRANSFORM].extendTexture(a,e),i.associations.set(a,t)}}return void 0!==n&&("number"==typeof n&&(n=3001===n?A:d),"colorSpace"in a?a.colorSpace
128=n:a.encoding=n===A?3001:3e3),e[t]=a,a})}assignFinalMaterial(e){let t=e.geometry,r=e.material,n=void 0===t.attributes.tangent,a=void 0!==t.attributes.color,o=void 0===t.attributes.normal;if(e.isPoints){let e="PointsMaterial:"+r.uuid,t=this.cache.get(e);t||(t=new i.BH$,i.imn.prototype.copy.call(t,r),t.color.copy(r.color),t.map=r.map,t.sizeAttenuation=!1,this.cache.add(e,t)),r=t}else if(e.isLine){let e="LineBasicMaterial:"+r.uuid,t=this.cache.get(e);t||(t=new i.mrM,i.imn.prototype.copy.call(t,r),t.color.copy(r.color),t.map=r.map,this.cache.add(e,t)),r=t}if(n||a||o){let e="ClonedMaterial:"+r.uuid+":";n&&(e+="derivative-tangents:"),a&&(e+="vertex-colors:"),o&&(e+="flat-shading:");let t=this.cache.get(e);t||(t=r.clone(),a&&(t.vertexColors=!0),o&&(t.flatShading=!0),n&&(t.normalScale&&(t.normalScale.y*=-1),t.clearcoatNormalScale&&(t.clearcoatNormalScale.y*=-1)),this.cache.add(e,t),this.associations.set(t,this.associations.get(r))),r=t}e.material=r}getMaterialType(){return i._4j}loadMaterial(e){let t,r=this,n=this.json,a=this.extensions,o=n.materials[e],s={},l=o.extensions||{},u=[];if(l[B.KHR_MATERIALS_UNLIT]){let e=a[B.KHR_MATERIALS_UNLIT];t=e.getMaterialType(),u.push(e.extendParams(s,o,r))}else{let n=o.pbrMetallicRoughness||{};if(s.color=new i.Q1f(1,1,1),s.opacity=1,Array.isArray(n.baseColorFactor)){let e=n.baseColorFactor;s.color.setRGB(e[0],e[1],e[2],d),s.opacity=e[3]}void 0!==n.baseColorTexture&&u.push(r.assignTexture(s,"map",n.baseColorTexture,A)),s.metalness=void 0!==n.metallicFactor?n.metallicFactor:1,s.roughness=void 0!==n.roughnessFactor?n.roughnessFactor:1,void 0!==n.metallicRoughnessTexture&&(u.push(r.assignTexture(s,"metalnessMap",n.metallicRoughnessTexture)),u.push(r.assignTexture(s,"roughnessMap",n.metallicRoughnessTexture))),t=this._invokeOne(function(t){return t.getMaterialType&&t.getMaterialType(e)}),u.push(Promise.all(this._invokeAll(function(t){return t.extendMaterialParams&&t.extendMaterialParams(e,s)})))}!0===o.doubleSided&&(s.side=i.$EB);let c=o.alphaMode||V.OPAQUE;if(c===V.BLEND?(s.transparent=!0,s.depthWrite=!1):(s.transparent=!1,c===V.MASK&&(s.alphaTest=void 0!==o.alphaCutoff?o.alphaCutoff:.5)),void 0!==o.normalTexture&&t!==i.V9B&&(u.pu
128sh(r.assignTexture(s,"normalMap",o.normalTexture)),s.normalScale=new i.I9Y(1,1),void 0!==o.normalTexture.scale)){let e=o.normalTexture.scale;s.normalScale.set(e,e)}if(void 0!==o.occlusionTexture&&t!==i.V9B&&(u.push(r.assignTexture(s,"aoMap",o.occlusionTexture)),void 0!==o.occlusionTexture.strength&&(s.aoMapIntensity=o.occlusionTexture.strength)),void 0!==o.emissiveFactor&&t!==i.V9B){let e=o.emissiveFactor;s.emissive=new i.Q1f().setRGB(e[0],e[1],e[2],d)}return void 0!==o.emissiveTexture&&t!==i.V9B&&u.push(r.assignTexture(s,"emissiveMap",o.emissiveTexture,A)),Promise.all(u).then(function(){let n=new t(s);return o.name&&(n.name=o.name),$(n,o),r.associations.set(n,{materials:e}),o.extensions&&q(a,n,o),n})}createUniqueName(e){let t=i.Nwf.sanitizeNodeName(e||"");return t in this.nodeNamesUsed?t+"_"+ ++this.nodeNamesUsed[t]:(this.nodeNamesUsed[t]=0,t)}loadGeometries(e){let t=this,r=this.extensions,n=this.primitiveCache,a=[];for(let o=0,s=e.length;o<s;o++){let s=e[o],l=function(e){let t,r=e.extensions&&e.extensions[B.KHR_DRACO_MESH_COMPRESSION];if(t=r?"draco:"+r.bufferView+":"+r.indices+":"+ee(r.attributes):e.indices+":"+ee(e.attributes)+":"+e.mode,void 0!==e.targets)for(let r=0,n=e.targets.length;r<n;r++)t+=":"+ee(e.targets[r]);return t}(s),u=n[l];if(u)a.push(u.promise);else{let e;e=s.extensions&&s.extensions[B.KHR_DRACO_MESH_COMPRESSION]?function(e){return r[B.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(e,t).then(function(r){return ei(r,e,t)})}(s):ei(new i.LoY,s,t),n[l]={primitive:s,promise:e},a.push(e)}}return Promise.all(a)}loadMesh(e){let t=this,r=this.json,n=this.extensions,a=r.meshes[e],o=a.primitives,s=[];for(let e=0,t=o.length;e<t;e++){var u;let t=void 0===o[e].material?(void 0===(u=this.cache).DefaultMaterial&&(u.DefaultMaterial=new i._4j({color:0xffffff,emissive:0,metalness:1,roughness:1,transparent:!1,depthTest:!0,side:i.hB5})),u.DefaultMaterial):this.getDependency("material",o[e].material);s.push(t)}return s.push(t.loadGeometries(o)),Promise.all(s).then(function(r){let s=r.slice(0,r.length-1),u=r[r.length-1],c=[];for(let r=0,A=u.length;r<A;r++){let A,d=u[r],h=o[r],f=s[r];if(h.mode===N.TRIANGLES||h.mode===N.TRIANGLE_STRIP||h.mode===N.TRIANGLE_FAN||void 0===h.mode)!0===(A=!0===a.isSkinnedMesh?new i.I46(d,f):new i.eaF(d,f)).isSkinnedMesh&&A.normalizeSkinWeights(),h.mode===N.TRIANGLE_STRIP?A.geometry=l(A.geometry,i.O49):h.mode===N.TRIANGLE_FAN&&(A.geometry=l(A.geometry,i.rYR));else if(h.mode===N.LINES)A=new i.DXC(d,f);else if(h.mode===N.LINE_STRIP)A=new i.N1A(d,f);else if(h.mode===N.LINE_LOOP)A=new i.FCc(d,f);else if(h.mode===N.POINTS)A=new i.ONl(d,f);else throw Error("THREE.GLTFLoader: Primitive mode unsupported: "+h.mode);Object.keys(A.geometry.morphAttributes).length>0&&function(e,t){if(e.updateMorphTargets(),void 0!==t.weights)for(let r=0,n=t.weights.length;r<n;r++)e.morphTargetInfluences[r]=t.weights[r];if(t.extras&&Array.isArray(t.extras.targetNames)){let r=t.extras.targetNames;if(e.morphTargetInfluences.length===r.length){e.morphTargetDictionary={};for(let t=0,n=r.length;t<n;t++)e.morphTargetDictionary[r[t]]=t}else console.warn("THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.")}}(A,a),A.name=t.createUniqueName(a.name||"mesh_"+e),$(A,a),h.extensions&&q(n,A,h),t.assignFinalMaterial(A),c.push(A)}for(let r=0,n=c.length;r<n;r++)t.associations.set(c[r],{meshes:e,primitives:r});if(1===c.length)return a.extensions&&q(n,c[0],a),c[0];let A=new i.YJl;a.extensions&&q(n,A,a),t.associations.set(A,{meshes:e});for(let e=0,t=c.length;e<t;e++)A.add(c[e]);return A})}loadCamera(e){let t,r=this.json.cameras[e],n=r[r.type];return n?("perspective"===r.type?t=new i.ubm(i.cj9.radToDeg(n.yfov),n.aspectRatio||1,n.znear||1,n.zfar||2e6):"orthographic"===r.type&&(t=new i.qUd(-n.xmag,n.xmag,n.ymag,-n.ymag,n.znear,n.zfar)),r.name&&(t.name=this.createUniqueName(r.name)),$(t,r),Promise.resolve(t)):void console.warn("THREE.GLTFLoader: Missing camera parameters.")}loadSkin(e){let t=this.json.skins[e],r=[];for(let e=0,n=t.joints.length;e<n;e++)r.push(this._loadNodeShallow(t.joints[e]));return void 0!==t.inverseBindMatrices?r.push(this.getDependency("accessor",t.inverseBindMatrices)):r.push(null),Promise.all(r).then(function(e){let r=e.pop(),n=[],a=[];for(let o=0,s=e.length;o<s;o++){let s=e[o];if(s){n.push(s);let e=new i.kn4;null!==r&&e.fromArray(r.array,16*o),a.push(e)}else console.warn('THREE.GLTFLoader: Joint "%s" could not be found.',t.joints[o])}return new i.EAD(n,a)})}loadAnimation(e){let t=this.json,r=this,n=t.animations[e],a=n.name?n.name:"animation_"+e,o=[],s=[],l=[],u=[],c=[];for(let e=0,t=n.channels.length;e<t;
128e++){let t=n.channels[e],r=n.samplers[t.sampler],i=t.target,a=i.node,A=void 0!==n.parameters?n.parameters[r.input]:r.input,d=void 0!==n.parameters?n.parameters[r.output]:r.output;void 0!==i.node&&(o.push(this.getDependency("node",a)),s.push(this.getDependency("accessor",A)),l.push(this.getDependency("accessor",d)),u.push(r),c.push(i))}return Promise.all([Promise.all(o),Promise.all(s),Promise.all(l),Promise.all(u),Promise.all(c)]).then(function(e){let t=e[0],n=e[1],o=e[2],s=e[3],l=e[4],u=[];for(let e=0,i=t.length;e<i;e++){let i=t[e],a=n[e],c=o[e],A=s[e],d=l[e];if(void 0===i)continue;i.updateMatrix&&i.updateMatrix();let h=r._createAnimationTracks(i,a,c,A,d);if(h)for(let e=0;e<h.length;e++)u.push(h[e])}return new i.tz3(a,void 0,u)})}createNodeMesh(e){let t=this.json,r=this,n=t.nodes[e];return void 0===n.mesh?null:r.getDependency("mesh",n.mesh).then(function(e){let t=r._getNodeRef(r.meshCache,n.mesh,e);return void 0!==n.weights&&t.traverse(function(e){if(e.isMesh)for(let t=0,r=n.weights.length;t<r;t++)e.morphTargetInfluences[t]=n.weights[t]}),t})}loadNode(e){let t=this.json.nodes[e],r=this._loadNodeShallow(e),n=[],i=t.children||[];for(let e=0,t=i.length;e<t;e++)n.push(this.getDependency("node",i[e]));let a=void 0===t.skin?Promise.resolve(null):this.getDependency("skin",t.skin);return Promise.all([r,Promise.all(n),a]).then(function(e){let t=e[0],r=e[1],n=e[2];null!==n&&t.traverse(function(e){e.isSkinnedMesh&&e.bind(n,er)});for(let e=0,n=r.length;e<n;e++)t.add(r[e]);return t})}_loadNodeShallow(e){let t=this.json,r=this.extensions,n=this;if(void 0!==this.nodeCache[e])return this.nodeCache[e];let a=t.nodes[e],o=a.name?n.createUniqueName(a.name):"",s=[],l=n._invokeOne(function(t){return t.createNodeMesh&&t.createNodeMesh(e)});return l&&s.push(l),void 0!==a.camera&&s.push(n.getDependency("camera",a.camera).then(function(e){return n._getNodeRef(n.cameraCache,a.camera,e)})),n._invokeAll(function(t){return t.createNodeAttachment&&t.createNodeAttachment(e)}).forEach(function(e){s.push(e)}),this.nodeCache[e]=Promise.all(s).then(function(t){let s;if((s=!0===a.isBone?new i.$Kf:t.length>1?new i.YJl:1===t.length?t[0]:new i.B69)!==t[0])for(let e=0,r=t.length;e<r;e++)s.add(t[e]);if(a.name&&(s.userData.name=a.name,s.name=o),$(s,a),a.extensions&&q(r,s,a),void 0!==a.matrix){let e=new i.kn4;e.fromArray(a.matrix),s.applyMatrix4(e)}else void 0!==a.translation&&s.position.fromArray(a.translation),void 0!==a.rotation&&s.quaternion.fromArray(a.rotation),void 0!==a.scale&&s.scale.fromArray(a.scale);return n.associations.has(s)||n.associations.set(s,{}),n.associations.get(s).nodes=e,s}),this.nodeCache[e]}loadScene(e){let t=this.extensions,r=this.json.scenes[e],n=this,a=new i.YJl;r.name&&(a.name=n.createUniqueName(r.name)),$(a,r),r.extensions&&q(t,a,r);let o=r.nodes||[],s=[];for(let e=0,t=o.length;e<t;e++)s.push(n.getDependency("node",o[e]));return Promise.all(s).then(function(e){for(let t=0,r=e.length;t<r;t++)a.add(e[t]);return n.associations=(e=>{let t=new Map;for(let[e,r]of n.associations)(e instanceof i.imn||e instanceof i.gPd)&&t.set(e,r);return e.traverse(e=>{let r=n.associations.get(e);null!=r&&t.set(e,r)}),t})(a),a})}_createAnimationTracks(e,t,r,n,a){let o,s=[],l=e.name?e.name:e.uuid,u=[];switch(W[a.path]===W.weights?e.traverse(function(e){e.morphTargetInfluences&&u.push(e.name?e.name:e.uuid)}):u.push(l),W[a.path]){case W.weights:o=i.Hit;break;case W.rotation:o=i.MBL;break;case W.position:case W.scale:o=i.RiT;break;default:o=1===r.itemSize?i.Hit:i.RiT}let c=void 0!==n.interpolation?z[n.interpolation]:i.PJ3,A=this._getArrayFromAccessor(r);for(let e=0,r=u.length;e<r;e++){let r=new o(u[e]+"."+W[a.path],t.array,A,c);"CUBICSPLINE"===n.interpolation&&this._createCubicSplineTrackInterpolant(r),s.push(r)}return s}_getArrayFromAccessor(e){let t=e.array;if(e.normalized){let e=et(t.constructor),r=new Float32Array(t.length);for(let n=0,i=t.length;n<i;n++)r[n]=t[n]*e;t=r}return t}_createCubicSplineTrackInterpolant(e){e.createInterpolant=function(e){return new(this instanceof i.MBL?K:_)(this.times,this.values,this.getValueSize()/3,e)},e.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline=!0}}function ei(e,t,r){let n=t.attributes,a=[];for(let t in n){let i=Z[t]||t.toLowerCase();i in e.attributes||a.push(function(t,n){return r.getDependency("accessor",t).then(function(t){e.setAttribute(n,t)})}(n[t],i))}if(void 0!==t.indices&&!e.index){let n=r.getDependency("accessor",t.indices).then(function(t){e.setIndex(t)});a.push(n)}return $(e,t),!function(e,t,r){let n=t.attributes,a=new i.NRn;if(void 0===n.POSITION)return;{let e=r.json.accessors[n.POSITION],t=e.min,o=e.max;if(void 0===t||void 0===o)return console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.");if(a.set(new i.Pq0(t[0],t[1],t[2]),new i.Pq0(o[0],o[1],o[2])),e.normalized){let t=et(j[e.componentType]);a.min.multiplyScalar(t),a.max.multiplyScalar(t)}}let o=t.targets;if(void 0!==o){let e=new i.Pq0,t=new i.Pq0;for(let n=0,i=o.length;n<i;n++){let i=o[n];
128if(void 0!==i.POSITION){let n=r.json.accessors[i.POSITION],a=n.min,o=n.max;if(void 0!==a&&void 0!==o){if(t.setX(Math.max(Math.abs(a[0]),Math.abs(o[0]))),t.setY(Math.max(Math.abs(a[1]),Math.abs(o[1]))),t.setZ(Math.max(Math.abs(a[2]),Math.abs(o[2]))),n.normalized){let e=et(j[n.componentType]);t.multiplyScalar(e)}e.max(t)}else console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.")}}a.expandByVector(e)}e.boundingBox=a;let s=new i.iyt;a.getCenter(s.center),s.radius=a.min.distanceTo(a.max)/2,e.boundingSphere=s}(e,t,r),Promise.all(a).then(function(){return void 0!==t.targets?function(e,t,r){let n=!1,i=!1,a=!1;for(let e=0,r=t.length;e<r;e++){let r=t[e];if(void 0!==r.POSITION&&(n=!0),void 0!==r.NORMAL&&(i=!0),void 0!==r.COLOR_0&&(a=!0),n&&i&&a)break}if(!n&&!i&&!a)return Promise.resolve(e);let o=[],s=[],l=[];for(let u=0,c=t.length;u<c;u++){let c=t[u];if(n){let t=void 0!==c.POSITION?r.getDependency("accessor",c.POSITION):e.attributes.position;o.push(t)}if(i){let t=void 0!==c.NORMAL?r.getDependency("accessor",c.NORMAL):e.attributes.normal;s.push(t)}if(a){let t=void 0!==c.COLOR_0?r.getDependency("accessor",c.COLOR_0):e.attributes.color;l.push(t)}}return Promise.all([Promise.all(o),Promise.all(s),Promise.all(l)]).then(function(t){let r=t[0],o=t[1],s=t[2];return n&&(e.morphAttributes.position=r),i&&(e.morphAttributes.normal=o),a&&(e.morphAttributes.color=s),e.morphTargetsRelative=!0,e})}(e,t.targets,r):e})}var ea=r(3388);let eo=null,es="https://www.gstatic.com/draco/versioned/decoders/1.5.5/";function el(e=!0,t=!0,r){return i=>{r&&r(i),e&&(eo||(eo=new o),eo.setDecoderPath("string"==typeof e?e:es),i.setDRACOLoader(eo)),t&&i.setMeshoptDecoder((()=>{let e;if(n)return n;let t=new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,3,2,0,0,5,3,1,0,1,12,1,0,10,22,2,12,0,65,0,65,0,65,0,252,10,0,0,11,7,0,65,0,253,15,26,11]),r=new Uint8Array([32,0,65,253,3,1,2,34,4,106,6,5,11,8,7,20,13,33,12,16,128,9,116,64,19,113,127,15,10,21,22,14,255,66,24,54,136,107,18,23,192,26,114,118,132,17,77,101,130,144,27,87,131,44,45,74,156,154,70,167]);if("object"!=typeof WebAssembly)return{supported:!1};let i="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";
128WebAssembly.validate(t)&&(i="B9h9z9tFBBBFiI9gBB9gLaaaaaFa9gEaaaB9gFaFaEMcBBFBFFGGGEILF9wFFFLEFBFKNFaFCx/aFMO/LFVK9tv9t9vq95GBt9f9f939h9z9t9f9j9h9s9s9f9jW9vq9zBBp9tv9z9o9v9wW9f9kv9j9v9kv9WvqWv94h919m9mvqBG8Z9tv9z9o9v9wW9f9kv9j9v9kv9J9u9kv94h919m9mvqBIy9tv9z9o9v9wW9f9kv9j9v9kv9J9u9kv949TvZ91v9u9jvBLn9tv9z9o9v9wW9f9kv9j9v9kv69p9sWvq9P9jWBKi9tv9z9o9v9wW9f9kv9j9v9kv69p9sWvq9R919hWBOn9tv9z9o9v9wW9f9kv9j9v9kv69p9sWvq9F949wBNI9z9iqlBVc+N9IcIBTEM9+FLa8jUUUUBCTlRBCBRFEXCBRGCBREEXABCNJAGJAECUaAFAGrCFZHIy86BBAEAIJREAGCFJHGCN9HQBMAFCx+YUUBJAE86BBAFCEWCxkUUBJAB8pEN83EBAFCFJHFCUG9HQBMMk8lLbaE97F9+FaL978jUUUUBCU/KBlHL8kUUUUBC9+RKGXAGCFJAI9LQBCaRKAE2BBC+gF9HQBALAEAIJHOAGlAG/8cBBCUoBAG9uC/wgBZHKCUGAKCUG9JyRNAECFJRKCBRVGXEXAVAF9PQFANAFAVlAVANJAF9JyRcGXGXAG9FQBAcCbJHIC9wZHMCE9sRSAMCFWRQAICIrCEJCGrRfCBRbEXAKRTCBRtGXEXGXAOATlAf9PQBCBRKSLMALCU/CBJAtAM9sJRmATAfJRKCBREGXAMCoB9JQBAOAKlC/gB9JQBCBRIEXAmAIJREGXGXGXGXGXATAICKrJ2BBHYCEZfIBFGEBMAECBDtDMIBSEMAEAKDBBIAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnHPCGD+MFAPDQBTFtGmEYIPLdKeOnC0+G+MiDtD9OHdCEDbD8jHPAPDQBFGENVcMILKOSQfbHeD8dBh+BsxoxoUwN0AeD8dFhxoUwkwk+gUa0sHnhTkAnsHnhNkAnsHn7CgFZHiCEWCxkUUBJDBEBAiCx+YUUBJDBBBHeAeDQBBBBBBBBBBBBBBBBAnhAk7CgFZHiCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMIBAKCIJAeDeBJAiCx+YUUBJ2BBJRKSGMAEAKDBBNAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnC+P+e+8/4BDtD9OHdCbDbD8jHPAPDQBFGENVcMILKOSQfbHeD8dBh+BsxoxoUwN0AeD8dFhxoUwkwk+gUa0sHnhTkAnsHnhNkAnsHn7CgFZHiCEWCxkUUBJDBEBAiCx+YUUBJDBBBHeAeDQBBBBBBBBBBBBBBBBAnhAk7CgFZHiCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMIBAKCNJAeDeBJAiCx+YUUBJ2BBJRKSFMAEAKDBBBDMIBAKCTJRKMGXGXGXGXGXAYCGrCEZfIBFGEBMAECBDtDMITSEMAEAKDBBIAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnHPCGD+MFAPDQBTFtGmEYIPLdKeOnC0+G+MiDtD9OHdCEDbD8jHPAPDQBFGENVcMILKOSQfbHeD8dBh+BsxoxoUwN0AeD8dFhxoUwkwk+gUa0sHnhTkAnsHnhNkAnsHn7CgFZHiCEWCxkUUBJDBEBAiCx+YUUBJDBBBHeAeDQBBBBBBBBBBBBBBBBAnhAk7CgFZHiCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMITAKCIJAeDeBJAiCx+YUUBJ2BBJRKSGMAEAKDBBNAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnC+P+e+8/4BDtD9OHdCbDbD8jHPAPDQBFGENVcMILKOSQfbHeD8dBh+BsxoxoUwN0AeD8dFhxoUwkwk+gUa0sHnhTkAnsHnhNkAnsHn7CgFZHiCEWCxkUUBJDBEBAiCx+YUUBJDBBBHeAeDQBBBBBBBBBBBBBBBBAnhAk7CgFZHiCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMITAKCNJAeDeBJAiCx+YUUBJ2BBJRKSFMAEAKDBBBDMITAKCTJRKMGXGXGXGXGXAYCIrCEZfIBFGEBMAECBDtDMIASEMAEAKDBBIAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnHPCGD+MFAPDQBTFtGmEYIPLdKeOnC0+G+MiDtD9OHdCEDbD8jHPAPDQBFGENVcMILKOSQfbHeD8dBh+BsxoxoUwN0AeD8dFhxoUwkwk+gUa0sHnhTkAnsHnhNkAnsHn7CgFZHiCEWCxkUUBJDBEBAiCx+YUUBJDBBBHeAeDQBBBBBBBBBBBBBBBBAnhAk7CgFZHiCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMIAAKCIJAeDeBJAiCx+YUUBJ2BBJRKSGMAEAKDBBNAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnC+P+e+8/4BDtD9OHdCbDbD8jHPAPDQBFGENVcMILKOSQfbHeD8dBh+BsxoxoUwN0AeD8dFhxoUwkwk+gUa0sHnhTkAnsHnhNkAnsHn7CgFZHiCEWCxkUUBJDBEBAiCx+YUUBJDBBBHeAeDQBBBBBBBBBBBBBBBBAnhAk7CgFZHiCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMIAAKCNJAeDeBJAiCx+YUUBJ2BBJRKSFMAEAKDBBBDMIAAKCTJRKMGXGXGXGXGXAYCKrfIBFGEBMAECBDtDMI8wSEMAEAKDBBIAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnHPCGD+MFAPDQBTFtGmEYIPLdKeOnC0+G+MiDtD9OHdCEDbD8jHPAPDQBFGENVcMILKOSQfbHeD8dBh+BsxoxoUwN0AeD8dFhxoUwkwk+gUa0sHnhTkAnsHnhNkAnsHn7CgFZHYCEWCxkUUBJDBEBAYCx+YUUBJDBBBHeAeDQBBBBBBBBBBBBBBBBAnhAk7CgFZHYCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMI8wAKCIJAeDeBJAYCx+YUUBJ2BBJRKSGMAEAKDBBNAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnC+P+e+8/4BDtD9OHdCbDbD8jHPAPDQBFGENVcMILKOSQfbHeD8dBh+BsxoxoUwN0AeD8dFhxoUwkwk+gUa0sHnhTkAnsHnhNkAnsHn7CgFZHYCEWCxkUUBJDBEBAYCx+YUUBJDBBBHeAeDQBBBBBBBBBBBBBBBBAnhAk7CgFZHYCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMI8wAKCNJAeDeBJAYCx+YUUBJ2BBJRKSFMAEAKDBBBDMI8wAKCTJRKMAICoBJREAICUFJAM9LQFAERIAOAKlC/fB9LQBMMGXAEAM9PQBAECErRIEXGXAOAKlCi9PQBCBRKSOMAmAEJRYGXGXGXGXGXATAECKrJ2BBAICKZrCEZfIBFGEBMAYCBDtDMIBSEMAYAKDBBIAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnHPCGD+MFAPDQBTFtGmEYIPLdKeOnC0+G+MiDtD9OHdCEDbD8jHPAPDQBFGENVcMILKOSQfbHeD8dBh+BsxoxoUwN0AeD8dFhxoUwkwk+gUa0sHnhTkAnsHnhNkAnsHn7CgFZHiCEWCxkUUBJDBEBAiCx+YUUBJDBBBHeAeDQBBBBBBBBBBBBBBBBAnhAk7CgFZHiCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMIBAKCIJAeDeBJAiCx+YUUBJ2BBJRKSGMAYAKDBBNAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnC+P+e+8/4BDtD9OHdCbDbD8jHPAPDQBFGENVcMILKOSQfbHeD8dBh+BsxoxoUwN0AeD8dFhxoUwkwk+gUa0sHnhTkAnsHnhNkAnsHn7CgFZHiCEWCxkUUBJDBEBAiCx+YUUBJDBBBHeAeDQBBBBBBBBBBBBBBBBAnhAk7CgFZHiCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMIBAKCNJAeDeBJAiCx+YUUBJ2BBJRKSFMAYAKDBBBDMIBAKCTJRKMAICGJRIAECTJHEAM9JQBMMG
128XAK9FQBAKRTAtCFJHtCI6QGSFMMCBRKSEMGXAM9FQBALCUGJAbJREALAbJDBGBReCBRYEXAEALCU/CBJAYJHIDBIBHdCFD9tAdCFDbHPD9OD9hD9RHdAIAMJDBIBH8ZCFD9tA8ZAPD9OD9hD9RH8ZDQBTFtGmEYIPLdKeOnHpAIAQJDBIBHyCFD9tAyAPD9OD9hD9RHyAIASJDBIBH8cCFD9tA8cAPD9OD9hD9RH8cDQBTFtGmEYIPLdKeOnH8dDQBFTtGEmYILPdKOenHPAPDQBFGEBFGEBFGEBFGEAeD9uHeDyBjGBAEAGJHIAeAPAPDQILKOILKOILKOILKOD9uHeDyBjGBAIAGJHIAeAPAPDQNVcMNVcMNVcMNVcMD9uHeDyBjGBAIAGJHIAeAPAPDQSQfbSQfbSQfbSQfbD9uHeDyBjGBAIAGJHIAeApA8dDQNVi8ZcMpySQ8c8dfb8e8fHPAPDQBFGEBFGEBFGEBFGED9uHeDyBjGBAIAGJHIAeAPAPDQILKOILKOILKOILKOD9uHeDyBjGBAIAGJHIAeAPAPDQNVcMNVcMNVcMNVcMD9uHeDyBjGBAIAGJHIAeAPAPDQSQfbSQfbSQfbSQfbD9uHeDyBjGBAIAGJHIAeAdA8ZDQNiV8ZcpMyS8cQ8df8eb8fHdAyA8cDQNiV8ZcpMyS8cQ8df8eb8fH8ZDQBFTtGEmYILPdKOenHPAPDQBFGEBFGEBFGEBFGED9uHeDyBjGBAIAGJHIAeAPAPDQILKOILKOILKOILKOD9uHeDyBjGBAIAGJHIAeAPAPDQNVcMNVcMNVcMNVcMD9uHeDyBjGBAIAGJHIAeAPAPDQSQfbSQfbSQfbSQfbD9uHeDyBjGBAIAGJHIAeAdA8ZDQNVi8ZcMpySQ8c8dfb8e8fHPAPDQBFGEBFGEBFGEBFGED9uHeDyBjGBAIAGJHIAeAPAPDQILKOILKOILKOILKOD9uHeDyBjGBAIAGJHIAeAPAPDQNVcMNVcMNVcMNVcMD9uHeDyBjGBAIAGJHIAeAPAPDQSQfbSQfbSQfbSQfbD9uHeDyBjGBAIAGJREAYCTJHYAM9JQBMMAbCIJHbAG9JQBMMABAVAG9sJALCUGJAcAG9s/8cBBALALCUGJAcCaJAG9sJAG/8cBBMAcCBAKyAVJRVAKQBMC9+RKSFMCBC99AOAKlAGCAAGCA9Ly6yRKMALCU/KBJ8kUUUUBAKMNBT+BUUUBM+KmFTa8jUUUUBCoFlHL8kUUUUBC9+RKGXAFCE9uHOCtJAI9LQBCaRKAE2BBHNC/wFZC/gF9HQBANCbZHVCF9LQBALCoBJCgFCUF/8MBALC84Jha83EBALC8wJha83EBALC8oJha83EBALCAJha83EBALCiJha83EBALCTJha83EBALha83ENALha83EBAEAIJC9wJRcAECFJHNAOJRMGXAF9FQBCQCbAVCF6yRSABRECBRVCBRQCBRfCBRICBRKEXGXAMAcuQBC9+RKSEMGXGXAN2BBHOC/vF9LQBALCoBJAOCIrCa9zAKJCbZCEWJHb8oGIRTAb8oGBRtGXAOCbZHbAS9PQBALAOCa9zAIJCbZCGWJ8oGBAVAbyROAb9FRbGXGXAGCG9HQBABAt87FBABCIJAO87FBABCGJAT87FBSFMAEAtjGBAECNJAOjGBAECIJATjGBMAVAbJRVALCoBJAKCEWJHmAOjGBAmATjGIALAICGWJAOjGBALCoBJAKCFJCbZHKCEWJHTAtjGBATAOjGIAIAbJRIAKCFJRKSGMGXGXAbCb6QBAQAbJAbC989zJCFJRQSFMAM1BBHbCgFZROGXGXAbCa9MQBAMCFJRMSFMAM1BFHbCgBZCOWAOCgBZqROGXAbCa9MQBAMCGJRMSFMAM1BGHbCgBZCfWAOqROGXAbCa9MQBAMCEJRMSFMAM1BEHbCgBZCdWAOqROGXAbCa9MQBAMCIJRMSFMAM2BIC8cWAOqROAMCLJRMMAOCFrCBAOCFZl9zAQJRQMGXGXAGCG9HQBABAt87FBABCIJAQ87FBABCGJAT87FBSFMAEAtjGBAECNJAQjGBAECIJATjGBMALCoBJAKCEWJHOAQjGBAOATjGIALAICGWJAQjGBALCoBJAKCFJCbZHKCEWJHOAtjGBAOAQjGIAICFJRIAKCFJRKSFMGXAOCDF9LQBALAIAcAOCbZJ2BBHbCIrHTlCbZCGWJ8oGBAVCFJHtATyROALAIAblCbZCGWJ8oGBAtAT9FHmJHtAbCbZHTyRbAT9FRTGXGXAGCG9HQBABAV87FBABCIJAb87FBABCGJAO87FBSFMAEAVjGBAECNJAbjGBAECIJAOjGBMALAICGWJAVjGBALCoBJAKCEWJHYAOjGBAYAVjGIALAICFJHICbZCGWJAOjGBALCoBJAKCFJCbZCEWJHYAbjGBAYAOjGIALAIAmJCbZHICGWJAbjGBALCoBJAKCGJCbZHKCEWJHOAVjGBAOAbjGIAKCFJRKAIATJRIAtATJRVSFMAVCBAM2BBHYyHTAOC/+F6HPJROAYCbZRtGXGXAYCIrHmQBAOCFJRbSFMAORbALAIAmlCbZCGWJ8oGBROMGXGXAtQBAbCFJRVSFMAbRVALAIAYlCbZCGWJ8oGBRbMGXGXAP9FQBAMCFJRYSFMAM1BFHYCgFZRTGXGXAYCa9MQBAMCGJRYSFMAM1BGHYCgBZCOWATCgBZqRTGXAYCa9MQBAMCEJRYSFMAM1BEHYCgBZCfWATqRTGXAYCa9MQBAMCIJRYSFMAM1BIHYCgBZCdWATqRTGXAYCa9MQBAMCLJRYSFMAMCKJRYAM2BLC8cWATqRTMATCFrCBATCFZl9zAQJHQRTMGXGXAmCb6QBAYRPSFMAY1BBHMCgFZROGXGXAMCa9MQBAYCFJRPSFMAY1BFHMCgBZCOWAOCgBZqROGXAMCa9MQBAYCGJRPSFMAY1BGHMCgBZCfWAOqROGXAMCa9MQBAYCEJRPSFMAY1BEHMCgBZCdWAOqROGXAMCa9MQBAYCIJRPSFMAYCLJRPAY2BIC8cWAOqROMAOCFrCBAOCFZl9zAQJHQROMGXGXAtCb6QBAPRMSFMAP1BBHMCgFZRbGXGXAMCa9MQBAPCFJRMSFMAP1BFHMCgBZCOWAbCgBZqRbGXAMCa9MQBAPCGJRMSFMAP1BGHMCgBZCfWAbqRbGXAMCa9MQBAPCEJRMSFMAP1BEHMCgBZCdWAbqRbGXAMCa9MQBAPCIJRMSFMAPCLJRMAP2BIC8cWAbqRbMAbCFrCBAbCFZl9zAQJHQRbMGXGXAGCG9HQBABAT87FBABCIJAb87FBABCGJAO87FBSFMAEATjGBAECNJAbjGBAECIJAOjGBMALCoBJAKCEWJHYAOjGBAYATjGIALAICGWJATjGBALCoBJAKCFJCbZCEWJHYAbjGBAYAOjGIALAICFJHICbZCGWJAOjGBALCoBJAKCGJCbZCEWJHOATjGBAOAbjGIALAIAm9FAmCb6qJHICbZCGWJAbjGBAIAt9FAtCb6qJRIAKCEJRKMANCFJRNABCKJRBAECSJREAKCbZRKAICbZRIAfCEJHfAF9JQBMMCBC99AMAc6yRKMALCoFJ8kUUUUBAKM/tIFGa8jUUUUBCTlRLC9+RKGXAFCLJAI9LQBCaRKAE2BBC/+FZC/QF9HQBALhB83ENAECFJRKAEAIJC98JREGXAF9FQBGXAGCG6QBEXGXAKAE9JQBC9+bMAK1BBHGCgFZRIGXGXAGCa9MQBAKCFJRKSFMAK1BFHGCgBZCOWAICgBZqRIGXAGCa9MQBAKCGJRKSFMAK1BGHGCgBZCfWAIqRIGXAGCa9MQBAKCEJRKSFMAK1BEHGCgBZCdWAIqRIGXAGCa9MQBAKCIJRKSFMAK2BIC8cWAIqRIAKCLJRKMALCNJAICFZCGWqHGAICGrCBAICFrCFZl9zAG8oGBJHIjGBABAIjGBABCIJRBAFCaJHFQBSGMMEXGXAKAE9JQBC9+bMAK1BBHGCgFZRIGXGXAGCa9MQBAKCFJRKSFMAK1BFHGCgBZCOWAICgBZqRIGXAGCa9MQBAKCGJRKSFMAK1BGHGCgBZCfWAIqRIGXAGCa9MQBAKCEJRKSFMAK1BEHGCgBZCdWAIqRIGXAGCa9MQBAKCIJRKSFMAK2BIC8cWAIqRIAKCLJRKMABAICGrCBAICFrCFZl9zALCNJAICFZCGWqHI8oGBJHG87FBAIAGjGBABCGJRBAFCaJHFQBMMCBC99AKAE6yRKMAKM/dLEK97FaF97GXGXAGCI9HQBAF9FQFCBRGEXABABDBBBHECiD+rFCiD+sFD/6FHIAECND+rFCiD+sFD/6FAID/gFAECTD+rFCiD+sFD/6FHLD/gFD/kFD/lFHKCBDtD+2FHOAICUUUU94DtHND9OD9RD/kFHI9DBB/+hDYAIAID/mFAKAKD/mFALAOALAND9OD9RD/kFHIAID/mFD/kFD/kFD/jFD/nFHLD/mF9DBBX9LDYHOD/kFCgFDtD9OAECUUU94DtD9OD9QAIALD/mFAOD/kFCND+rFCU/+EDtD9OD9QAKALD/mFAOD/kFCTD+rFCUU/8ODtD9OD9QDMBBABCTJRBAGCIJHGAF9JQBSGMMAF9FQBCBRGEXABCTJHVAVDBBBHECBDtHOCUU98D8cFCUU98D8cEHND9OABDBBBHKAEDQILKOSQfbPden8c8d8e8fCggFDtD9OD/6FAKAEDQBFGENVcMTtmYi8ZpyHECTD+sFD/6FHID/gFAECTD+rFCTD+sFD/6FHLD/gFD/kFD/lFHE9DB/+g6DYALAEAOD+2FHOALCUUUU94DtHcD9OD9RD/kFHLALD/mFAEAED/mFAIAOAIAcD9OD9RD/kFHEAED/mFD/kFD/kFD/jFD/nFHID/mF9DBBX9LDYHOD/kFCTD+rFALAID/mFAOD/kFCggEDtD9OD9QHLAEAID/mFAOD/kFCaDbCBDnGCBDnECBDnKCBDnOCBDncCBDnMCBDnfCBDnbD9OHEDQNVi8ZcMpySQ8c8dfb8e8fD9QDMBBABAKAND9OALAEDQBFTtGEmYILPdKOenD9QDMBBABCAJRBAGCIJHGAF9JQBMMM/hEIGaF97FaL978jUUUUBCTlREGXAF9FQBCBRIEXAEABDBBBHLABCTJHKDBBBHODQILKOSQfbPden8c8d8e8fHNCTD+sFHVCID+rFDMIBAB9DBBU8/DY9D/zI818/DYAVCEDtD9QD/6FD/nFHVALAODQBFGENVcMTtmYi8ZpyHLCTD+rFCTD+sFD/6FD/mFHOAOD/mFAVALCTD+sFD/6FD/mFHcAcD/mFAVANCTD+rFCTD+sFD/6FD/mFHNAND/mFD/kFD/kFD/lFCBDtD+4FD/jF9DB/+g6DYHVD/mF9DBBX9LDYHLD/kFCggEDtHMD9OAcAVD/mFALD/kFCTD+rFD9QHcANAVD/mFALD/kFCTD+rFAOAVD/mFALD/kFAMD9OD9QHVDQBFTtGEmYILPdKOenHLD8dBAEDBIBDyB+t+J83EBABCNJALD8dFAEDBIBDyF+t+J83EBAKAcAVDQNVi8ZcMpySQ8c8dfb8e8fHVD8dBAEDBIBDyG+t+J83EBABCiJAVD8dFAEDBIBDyE+t+J83EBABCAJRBAICIJHIAF9JQBMMM9jFF97GXAGCGrAF9sHG9FQBCBRFEXABABDBBBHECND+rFCND+sFD/6FAECiD+sFCnD+rFCUUU/8EDtD+uFD/mFDMBBABCTJRBAFCIJHFAG9JQBMMM9TFEaCBCB8oGUkUUBHFABCEJC98ZJHBjGUkUUBGXGXAB8/BCTWHGuQBCaREABAGlCggEJCTrXBCa6QFMAFREMAEMMMFBCUNMIT9tBB");let a=WebAssembly.instantiate(function(e){let t=new Uint8Array(e.length);for(let r=0;r<e.length;++r){let n=e.charCodeAt(r);t[r]=n>96?n-71:n>64?n-65:n>47?n+4:n>46?63:62}let n=0;for(let i=0;i<e.length;++i)t[n++]=t[i]<60?r[t[i]]:(t[i]-60)*64+t[++i];return t.buffer.slice(0,n)}(i),{}).then(t=>{(e=t.instance).exports.__wasm_call_ctors()});function o(t,r,n,i,a,o){let s=e.exports.sbrk,l=n+3&-4,u=s(l*i),c=s(a.length),A=new Uint8Array(e.exports.memory.buffer);A.set(a,c);let d=t(u,n,i,c,a.length);if(0===d&&o&&o(u,l,i),r.set(A.subarray(u,u+n*i)),s(u-s(0)),0!==d)throw Error(`Malformed buffer data: ${d}`)}let s={0:"",1:"meshopt_decodeFilterOct",2:"meshopt_decodeFilterQuat",3:"meshopt_decodeFilterExp",NONE:"",OCTAHEDRAL:"meshopt_decodeFilterOct",QUATERNION:"meshopt_decodeFilterQuat",EXPONENTIAL:"meshopt_decodeFilterExp"},l={0:"meshopt_decodeVertexBuffer",1:"meshopt_decodeIndexBuffer",2:"meshopt_decodeIndexSequence",ATTRIBUTES:"meshopt_decodeVertexBuffer",TRIANGLES:"meshopt_decodeIndexBuffer",INDICES:"meshopt_decodeIndexSequence"};return n={ready:a,supported:!0,decodeVertexBuffer(t,r,n,i,a){o(e.exports.meshopt_decodeVertexBuffer,t,r,n,i,e.exports[s[a]])},decodeIndexBuffer(t,r,n,i){o(e.exports.meshopt_decodeIndexBuffer,t,r,n,i)},decodeIndexSequence(t,r,n,i){o(e.exports.meshopt_decodeIndexSequence,t,r,n,i)},decodeGltfBuffer(t,r,n,i,a,u){o(e.exports[l[a]],t,r,n,i,e.exports[s[u]])}}})())}}let eu=(e,t,r,n)=>(0,ea.G)(h,e,el(t,r,n));eu.preload=(e,t,r,n)=>ea.G.preload(h,e,el(t,r,n)),eu.clear=e=>ea.G.clear(h,e),eu.setDecoderPath=e=>{es=e}},3646:(e,t,r)=>{let n;r.d(t,{OH:()=>eg});var i=r(6014),a=r(2115),o=r(3388),s=r(5339),l=r(7548),u=r(4814);class c extends s.eaF{constructor(e,t){var r,n;let i=(e=>e&&e.isCubeTexture)(e),a=Math.floor(Math.log2((null!=(n=i?null==(r=e.image[0])?void 0:r.width:e.image.width)?n:1024)/4)),o=Math.pow(2,a),l=3*Math.max(o,112),c=`
129        varying vec3 vWorldPosition;
130        void main() 
131        {
132            vec4 worldPosition = ( modelMatrix * vec4( position, 1.0 ) );
133            vWorldPosition = worldPosition.xyz;
134            
135            gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
136        }
137        `,A=[i?"#define ENVMAP_TYPE_CUBE":"",`#define CUBEUV_TEXEL_WIDTH ${1/l}`,`#define CUBEUV_TEXEL_HEIGHT ${1/(4*o)}`,`#define CUBEUV_MAX_MIP ${a}.0`].join("\n")+`
138        #define ENVMAP_TYPE_CUBE_UV
139        varying vec3 vWorldPosition;
140        uniform float radius;
141        uniform float height;
142        uniform float angle;
143        #ifdef ENVMAP_TYPE_CUBE
144            uniform samplerCube map;
145        #else
146            uniform sampler2D map;
147        #endif
148        // From: https://www.shadertoy.com/view/4tsBD7
149        float diskIntersectWithBackFaceCulling( vec3 ro, vec3 rd, vec3 c, vec3 n, float r ) 
150        {
151            float d = dot ( rd, n );
152            
153            if( d > 0.0 ) { return 1e6; }
154            
155            vec3  o = ro - c;
156            float t = - dot( n, o ) / d;
157            vec3  q = o + rd * t;
158            
159            return ( dot( q, q ) < r * r ) ? t : 1e6;
160        }
161        // From: https://www.iquilezles.org/www/articles/intersectors/intersectors.htm
162        float sphereIntersect( vec3 ro, vec3 rd, vec3 ce, float ra ) 
163        {
164            vec3 oc = ro - ce;
165            float b = dot( oc, rd );
166            float c = dot( oc, oc ) - ra * ra;
167            float h = b * b - c;
168            
169            if( h < 0.0 ) { return -1.0; }
170            
171            h = sqrt( h );
172            
173            return - b + h;
174        }
175        vec3 project() 
176        {
177            vec3 p = normalize( vWorldPosition );
178            vec3 camPos = cameraPosition;
179            camPos.y -= height;
180            float intersection = sphereIntersect( camPos, p, vec3( 0.0 ), radius );
181            if( intersection > 0.0 ) {
182                
183                vec3 h = vec3( 0.0, - height, 0.0 );
184                float intersection2 = diskIntersectWithBackFaceCulling( camPos, p, h, vec3( 0.0, 1.0, 0.0 ), radius );
185                p = ( camPos + min( intersection, intersection2 ) * p ) / radius;
186            } else {
187                p = vec3( 0.0, 1.0, 0.0 );
188            }
189            return p;
190        }
191        #include <common>
192        #include <cube_uv_reflection_fragment>
193        void main() 
194        {
195            vec3 projectedWorldPosition = project();
196            
197            #ifdef ENVMAP_TYPE_CUBE
198                vec3 outcolor = textureCube( map, projectedWorldPosition ).rgb;
199            #else
200                vec3 direction = normalize( projectedWorldPosition );
201                vec2 uv = equirectUv( direction );
202                vec3 outcolor = texture2D( map, uv ).rgb;
203            #endif
204            gl_FragColor = vec4( outcolor, 1.0 );
205            #include <tonemapping_fragment>
206            #include <${u.r>=154?"colorspace_fragment":"encodings_fragment"}>
207        }
208        `,d={map:{value:e},height:{value:(null==t?void 0:t.height)||15},radius:{value:(null==t?void 0:t.radius)||100}};super(new s.WBB(1,16),new s.BKk({uniforms:d,fragmentShader:A,vertexShader:c,side:s.$EB}))}set radius(e){this.material.uniforms.radius.value=e}get radius(){return this.material.uniforms.radius.value}set height(e){this.material.uniforms.height.value=e}get height(){return this.material.uniforms.height.value}}class A extends s.BRH{constructor(e){super(e),this.type=s.ix0}parse(e){let t,r,n,i=function(e,t){switch(e){case 1:throw Error("THREE.RGBELoader: Read Error: "+(t||""));case 2:throw Error("THREE.RGBELoader: Write Error: "+(t||""));case 3:throw Error("THREE.RGBELoader: Bad File Format: "+(t||""));default:throw Error("THREE.RGBELoader: Memory Error: "+(t||""))}},a=function(e,t,r){t=t||1024;let n=e.pos,i=-1,a=0,o="",s=String.fromCharCode.apply(null,new Uint16Array(e.subarray(n,n+128)));for(;0>(i=s.indexOf("\n"))&&a<t&&n<e.byteLength;)o+=s,a+=s.length,n+=128,s+=String.fromCharCode.apply(null,new Uint16Array(e.subarray(n,n+128)));return -1<i&&(!1!==r&&(e.pos+=a+i+1),o+s.slice(0,i))},o=new Uint8Array(e);o.pos=0;let l=function(e){let t,r,n=/^\s*GAMMA\s*=\s*(\d+(\.\d+)?)\s*$/,o=/^\s*EXPOSURE\s*=\s
208*(\d+(\.\d+)?)\s*$/,s=/^\s*FORMAT=(\S+)\s*$/,l=/^\s*\-Y\s+(\d+)\s+\+X\s+(\d+)\s*$/,u={valid:0,string:"",comments:"",programtype:"RGBE",format:"",gamma:1,exposure:1,width:0,height:0};for(!(e.pos>=e.byteLength)&&(t=a(e))||i(1,"no header found"),(r=t.match(/^#\?(\S+)/))||i(3,"bad initial token"),u.valid|=1,u.programtype=r[1],u.string+=t+"\n";!1!==(t=a(e));){if(u.string+=t+"\n","#"===t.charAt(0)){u.comments+=t+"\n";continue}if((r=t.match(n))&&(u.gamma=parseFloat(r[1])),(r=t.match(o))&&(u.exposure=parseFloat(r[1])),(r=t.match(s))&&(u.valid|=2,u.format=r[1]),(r=t.match(l))&&(u.valid|=4,u.height=parseInt(r[1],10),u.width=parseInt(r[2],10)),2&u.valid&&4&u.valid)break}return 2&u.valid||i(3,"missing format specifier"),4&u.valid||i(3,"missing image size specifier"),u}(o),u=l.width,c=l.height,A=function(e,t,r){if(t<8||t>32767||2!==e[0]||2!==e[1]||128&e[2])return new Uint8Array(e);t!==(e[2]<<8|e[3])&&i(3,"wrong scanline width");let n=new Uint8Array(4*t*r);n.length||i(4,"unable to allocate buffer space");let a=0,o=0,s=4*t,l=new Uint8Array(4),u=new Uint8Array(s),c=r;for(;c>0&&o<e.byteLength;){o+4>e.byteLength&&i(1),l[0]=e[o++],l[1]=e[o++],l[2]=e[o++],l[3]=e[o++],(2!=l[0]||2!=l[1]||(l[2]<<8|l[3])!=t)&&i(3,"bad rgbe scanline format");let r=0,A;for(;r<s&&o<e.byteLength;){let t=(A=e[o++])>128;if(t&&(A-=128),(0===A||r+A>s)&&i(3,"bad scanline data"),t){let t=e[o++];for(let e=0;e<A;e++)u[r++]=t}else u.set(e.subarray(o,o+A),r),r+=A,o+=A}for(let e=0;e<t;e++){let r=0;n[a]=u[e+r],r+=t,n[a+1]=u[e+r],r+=t,n[a+2]=u[e+r],r+=t,n[a+3]=u[e+r],a+=4}c--}return n}(o.subarray(o.pos),u,c);switch(this.type){case s.RQf:let d=new Float32Array(4*(n=A.length/4));for(let e=0;e<n;e++)!function(e,t,r,n){let i=Math.pow(2,e[t+3]-128)/255;r[n+0]=e[t+0]*i,r[n+1]=e[t+1]*i,r[n+2]=e[t+2]*i,r[n+3]=1}(A,4*e,d,4*e);t=d,r=s.RQf;break;case s.ix0:let h=new Uint16Array(4*(n=A.length/4));for(let e=0;e<n;e++)!function(e,t,r,n){let i=Math.pow(2,e[t+3]-128)/255;r[n+0]=s.GxU.toHalfFloat(Math.min(e[t+0]*i,65504)),r[n+1]=s.GxU.toHalfFloat(Math.min(e[t+1]*i,65504)),r[n+2]=s.GxU.toHalfFloat(Math.min(e[t+2]*i,65504)),r[n+3]=s.GxU.toHalfFloat(1)}(A,4*e,h,4*e);t=h,r=s.ix0;break;default:throw Error("THREE.RGBELoader: Unsupported type: "+this.type)}return{width:u,height:c,data:t,header:l.string,gamma:l.gamma,exposure:l.exposure,type:r}}setDataType(e){return this.type=e,this}load(e,t,r,n){return super.load(e,function(e,r){switch(e.type){case s.RQf:case s.ix0:"colorSpace"in e?e.colorSpace="srgb-linear":e.encoding=3e3,e.minFilter=s.k6q,e.magFilter=s.k6q,e.generateMipmaps=!1,e.flipY=!0}t&&t(e,r)},r,n)}}var d=Uint8Array,h=Uint16Array,f=Uint32Array,B=new d([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),m=new d([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),p=new d([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),C=function(e,t){for(var r=new h(31),n=0;n<31;++n)r[n]=t+=1<<e[n-1];for(var i=new f(r[30]),n=1;n<30;++n)for(var a=r[n];a<r[n+1];++a)i[a]=a-r[n]<<5|n;return[r,i]},g=C(B,2),v=g[0],E=g[1];v[28]=258,E[258]=28;var M=C(m,0),b=M[0];M[1];for(var y=new h(32768),F=0;F<32768;++F){var I=(43690&F)>>>1|(21845&F)<<1;I=(61680&(I=(52428&I)>>>2|(13107&I)<<2))>>>4|(3855&I)<<4,y[F]=((65280&I)>>>8|(255&I)<<8)>>>1}for(var R=function(e,t,r){for(var n,i=e.length,a=0,o=new h(t);a<i;++a)++o[e[a]-1];var s=new h(t);for(a=0;a<t;++a)s[a]=s[a-1]+o[a-1]<<1;if(r){n=new h(1<<t);var l=15-t;for(a=0;a<i;++a)if(e[a])for(var u=a<<4|e[a],c=t-e[a],A=s[e[a]-1]++<<c,d=A|(1<<c)-1;A<=d;++A)n[y[A]>>>l]=u}else for(a=0,n=new h(i);a<i;++a)e[a]&&(n[a]=y[s[e[a]-1]++]>>>15-e[a]);return n},w=new d(288),F=0;F<144;++F)w[F]=8;for(var F=144;F<256;++F)w[F]=9;for(var F=256;F<280;++F)w[F]=7;for(var F=280;F<288;++F)w[F]=8;for(var G=new d(32),F=0;F<32;++F)G[F]=5;var D=R(w,9,1),T=R(G,5,1),x=function(e){for(var t=e[0],r=1;r<e.length;++r)e[r]>t&&(t=e[r]);return t},H=function(e,t,r){var n=t/8|0;return(e[n]|e[n+1]<<8)>>(7&t)&r},P=function(e,t){var r=t/8|0;return(e[r]|e[r+1]<<8|e[r+2]<<16)>>(7&t)},S=function(e,t,r){(null==t||t<0)&&(t=0),(null==r||r>e.length)&&(r=e.length);var n=new(e instanceof h?h:e instanceof f?f:d)(r-t);return n.set(e.subarray(t,r)),n},O=function(e,t,r){var n=e.length;if(!n||r&&!r.l&&n<5)return t||new d(0);var i=!t||r,a=!r||r.i;r||(r={}),t||(t=new d(3*n));var o=function(e){var r=t.length;if(e>r){var n=new d(Math.max(2*r,e));n.set(t),t=n}},s=r.f||0,l=r.p||0,u=r.b||0,c=r.l,A=r.d,h=r.m,f=r.n,C=8*n;do{if(!c){r.f=s=H(e,l,1);var g=H(e,l+1,3);if(l+=3,g)if(1==g)c=D,A=T,h=9,f=5;else if(2==g){var E=H(e,l,31)+257,M=H(e,l+10,15)+4,y=E+H(e,l+5,31)+1;l+=14;for(var F=new d(y),I=new d(19),w=0;w<M;++w)I[p[w]]=H(e,l+3*w,7);l+=3*M;for(var G=x(I),O=(1<<G)-1,U=R(I,G,1),w=0;w<y;){var J=U[H(e,l,O)];l+=15&J;var L=J>>>4;if(L<16)F[w++]=L;else{var _=0,k=0;for(16==L?(k=3+H(e,l,3),l+=2,_=F[w-1]):17==L?(k=3+H(e,l,7),l+=3):18==L&&(k=11+H(e,l,127),l+=7);k--;)F[w++]=_}}var K=F.subarray(0,E),N=F.subarray(E);h=x(K),f=x(N),c=R(K,h,1),A=R(N,f,1)}else throw"invalid block type";else{var j,L=((j=l)/8|0)+(7&j&&1)+4,Q=e[L-4]|e[L-3]<<8,X=L+Q;if(X>n){if(a)throw"unexpected EOF";break}i&&o(u+Q),t.set(e.subarray(L,X),u),r.b=u+=Q,r.p=l=8*X;continue}if(l>C){if(a)throw"unexpected EOF";break}}i&&o(u+131072);for(var Y=(1<<h)-1,Z=(1<<f)-1,W=l;;W=l){var _=c[P(e,l)&Y],z=_>>>4;if((l+=15&_)>C){if(a)throw"unexpected EOF";break}if(!_)throw"invalid length/literal";if(z<256)t[u++]=z;else if(256==z){W=l,c=null;break}else{var V=z-254;if(z>264){var w=z-257,q=B[w];V=H(e,l,(1<<q)-1)+v[w],l+=q}var $=A[P(e,l)&Z],ee=$>>>4;if(!$)throw"invalid distance";l+=15&$;var N=b[ee];if(ee>3){var q=m[ee];N+=P(e,l)&(1<<q)-1,l+=q}if(l>C){if(a)throw"unexpected EOF";break}i&&o(u+131072);for(var et=u+V;u<et;u+=4)t[u]=t[u-N],t[u+1]=t[u+1-N],t[u+2]=t[u+2-N],t[u+3]=t[u+3-N];u=et}}r.l=c,r.p=W,r.b=u,c&&(s=1,r.m=h,r.d=A,r.n=f)}while(!s);return u==t.length?t:S(t,0,u)},U=new d(0),J=function(e){if((15&e[0])!=8||e[0]>>>4>7||(e[0]<<8|e[1])%31)throw"invalid zlib data";if(32&e[1])throw"invalid zlib data: preset dictionaries not supported"};function L(e,t){return O((J(e),e.subarray(2,-4)),t)}var _="undefined"!=typeof TextDecoder&&new TextDecoder;try{_.decode(U,{stream:!0})}catch(e){}let k=u.r>=152;class K extends s.BRH{constructor(e){super(e),this.type=s.ix0}parse(e){let t={l:0,c:0,lc:0};function r(e,r,n,i,a){for(;n<e;)r=r<<8|I(i,a),n+=8;t.l=r>>(n-=e)&(1<<e)-1,t.c=r,t.lc=n}let n=Array(59),i={c:0,lc:0};function a(e,t,r,n){e=e<<8|I(r,n),t+=8,i.c=e,i.lc=t}let o={c:0,lc:0};function l(e,t,r,n,s,l,u,c,A,d){if(e==t){n<8&&(a(r,n,s,u),r=i.c,n=i.lc);var h=r>>(n-=8),h=new Uint8Array([h])[0];if(A.value+h>d)return!1;for(var f=c[A.value-1];h-- >0;)c[A.value++]=f}else{if(!(A.value<d))return!1;c[A.value++]=e}o.c=r,o.lc=n}function u(e){var t=65535&e;return t>32767?t-65536:t}let c={a:0,b:0};function A(e,t){var r=u(e),n=u(t),i=r+(1&n)+(n>>1),a=i-n;c.a=i,c.b=a}function d(e,t){var r=65535&t,n=(65535&e)-(r>>1)&65535;c.a=r+n-32768&65535,c.b=n}function h(e,s,u,c,A,d){var h=u.value,f=F(s,u),B=F(s,u);u.value+=4;var m=F(s,u);
208if(u.value+=4,f<0||f>=65537||B<0||B>=65537)throw"Something wrong with HUF_ENCSIZE";for(var p=Array(65537),C=Array(16384),g=0;g<16384;g++)C[g]={},C[g].len=0,C[g].lit=0,C[g].p=null;var v=c-(u.value-h);if(!function(e,i,a,o,s,l,u){for(var c=0,A=0;s<=l;s++){if(a.value-a.value>o)return!1;r(6,c,A,e,a);var d=t.l;if(c=t.c,A=t.lc,u[s]=d,63==d){if(a.value-a.value>o)throw"Something wrong with hufUnpackEncTable";r(8,c,A,e,a);var h=t.l+6;if(c=t.c,A=t.lc,s+h>l+1)throw"Something wrong with hufUnpackEncTable";for(;h--;)u[s++]=0;s--}else if(d>=59){var h=d-59+2;if(s+h>l+1)throw"Something wrong with hufUnpackEncTable";for(;h--;)u[s++]=0;s--}}!function(e){for(var t=0;t<=58;++t)n[t]=0;for(var t=0;t<65537;++t)n[e[t]]+=1;for(var r=0,t=58;t>0;--t){var i=r+n[t]>>1;n[t]=r,r=i}for(var t=0;t<65537;++t){var a=e[t];a>0&&(e[t]=a|n[a]++<<6)}}(u)}(e,0,u,v,f,B,p),m>8*(c-(u.value-h)))throw"Something wrong with hufUncompress";!function(e,t,r,n){for(;t<=r;t++){var i=e[t]>>6,a=63&e[t];if(i>>a)throw"Invalid table entry";if(a>14){var o=n[i>>a-14];if(o.len)throw"Invalid table entry";if(o.lit++,o.p){var s=o.p;o.p=Array(o.lit);for(var l=0;l<o.lit-1;++l)o.p[l]=s[l]}else o.p=[,];o.p[o.lit-1]=t}else if(a)for(var u=0,l=1<<14-a;l>0;l--){var o=n[(i<<14-a)+u];if(o.len||o.p)throw"Invalid table entry";o.len=a,o.lit=t,u++}}}(p,f,B,C),function(e,t,r,n,s,u,c,A,d,h){for(var f=0,B=0,m=Math.trunc(s.value+(u+7)/8);s.value<m;)for(a(f,B,r,s),f=i.c,B=i.lc;B>=14;){var p=t[f>>B-14&16383];if(p.len)B-=p.len,l(p.lit,c,f,B,r,n,s,d,h,A),f=o.c,B=o.lc;else{if(!p.p)throw"hufDecode issues";for(C=0;C<p.lit;C++){for(var C,g=63&e[p.p[C]];B<g&&s.value<m;)a(f,B,r,s),f=i.c,B=i.lc;if(B>=g&&e[p.p[C]]>>6==(f>>B-g&(1<<g)-1)){B-=g,l(p.p[C],c,f,B,r,n,s,d,h,A),f=o.c,B=o.lc;break}}if(C==p.lit)throw"hufDecode issues"}}var v=8-u&7;for(f>>=v,B-=v;B>0;){var p=t[f<<14-B&16383];if(p.len)B-=p.len,l(p.lit,c,f,B,r,n,s,d,h,A),f=o.c,B=o.lc;else throw"hufDecode issues"}}(p,C,e,s,u,m,B,d,A,{value:0})}function f(e){for(var t=1;t<e.length;t++){var r=e[t-1]+e[t]-128;e[t]=r}}function B(e,t){for(var r=0,n=Math.floor((e.length+1)/2),i=0,a=e.length-1;!(i>a)&&(t[i++]=e[r++],!(i>a));){;t[i++]=e[n++]}}function m(e){for(var t=e.byteLength,r=[],n=0,i=new DataView(e);t>0;){var a=i.getInt8(n++);if(a<0){var o=-a;t-=o+1;for(var s=0;s<o;s++)r.push(i.getUint8(n++))}else{var o=a;t-=2;for(var l=i.getUint8(n++),s=0;s<o+1;s++)r.push(l)}}return r}function p(e){return new DataView(e.array.buffer,e.offset.value,e.size)}function C(e){var t=new Uint8Array(m(e.viewer.buffer.slice(e.offset.value,e.offset.value+e.size))),r=new Uint8Array(t.length);return f(t),B(t,r),new DataView(r.buffer)}function g(e){var t=L(e.array.slice(e.offset.value,e.offset.value+e.size)),r=new Uint8Array(t.length);return f(t),B(t,r),new DataView(r.buffer)}function v(e){for(var t=e.viewer,r={value:e.offset.value},n=new Uint16Array(e.width*e.scanlineBlockSize*(e.channels*e.type)),i=new Uint8Array(8192),a=0,o=Array(e.channels),s=0;s<e.channels;s++)o[s]={},o[s].start=a,o[s].end=o[s].start,o[s].nx=e.width,o[s].ny=e.lines,o[s].size=e.type,a+=o[s].nx*o[s].ny*o[s].size;var l=x(t,r),u=x(t,r);if(u>=8192)throw"Something is wrong with PIZ_COMPRESSION BITMAP_SIZE";if(l<=u)for(var s=0;s<u-l+1;s++)i[s+l]=R(t,r);var f=new Uint16Array(65536),B=function(e,t){for(var r=0,n=0;n<65536;++n)(0==n||e[n>>3]&1<<(7&n))&&(t[r++]=n);for(var i=r-1;r<65536;)t[r++]=0;return i}(i,f),m=F(t,r);h(e.array,t,r,m,n,a);for(var s=0;s<e.channels;++s)for(var p=o[s],C=0;C<o[s].size;++C)!function(e,t,r,n,i,a,o){for(var s=o<16384,l=r>i?i:r,u=1;u<=l;)u<<=1;for(u>>=1,h=u,u>>=1;u>=1;){for(var h,f,B,m,p,C=0,g=0+a*(i-h),v=a*u,E=a*h,M=n*u,b=n*h;C<=g;C+=E){for(var y=C,F=C+n*(r-h);y<=F;y+=b){var I=y+M,R=y+v,w=R+M;s?(A(e[y+t],e[R+t]),f=c.a,m=c.b,A(e[I+t],e[w+t]),B=c.a,p=c.b,A(f,B),e[y+t]=c.a,e[I+t]=c.b,A(m,p)):(d(e[y+t],e[R+t]),f=c.a,m=c.b,d(e[I+t],e[w+t]),B=c.a,p=c.b,d(f,B),e[y+t]=c.a,e[I+t]=c.b,d(m,p)),e[R+t]=c.a,e[w+t]=c.b}if(r&u){var R=y+v;s?A(e[y+t],e[R+t]):d(e[y+t],e[R+t]),f=c.a,e[R+t]=c.b,e[y+t]=f}}if(i&u)for(var y=C,F=C+n*(r-h);y<=F;y+=b){var I=y+M;s?A(e[y+t],e[I+t]):d(e[y+t],e[I+t]),f=c.a,e[I+t]=c.b,e[y+t]=f}h=u,u>>=1}}(n,p.start+C,p.nx,p.size,p.ny,p.nx*p.size,B);for(var g=a,v=0;v<g;++v)n[v]=f[n[v]];for(var E=0,M=new Uint8Array(n.buffer.byteLength),b=0;b<e.lines;b++)for(var y=0;y<e.channels;y++){var p=o[y],I=p.nx*p.size,w=new Uint8Array(n.buffer,2*p.end,2*I);M.set(w,E),E+=2*I,p.end+=I}return new DataView(M.buffer)}function E(e){var t=L(e.array.slice(e.offset.value,e.offset.value+e.size));let r=e.lines*e.channels*e.width,n=1==e.type?new Uint16Array(r):new Uint32Array(r),i=0,a=0,o=[,,,,];for(let r=0;r<e.lines;r++)for(let r=0;r<e.channels;r++){let r=0;switch(e.type){case 1:o[0]=i,o[1]=o[0]+e.width,i=o[1]+e.width;for(let i=0;i<e.width;++i)r+=t[o[0]++]<<8|t[o[1]++],n[a]=r,a++;break;case 2:o[0]=i,o[1]=o[0]+e.width,o[2]=o[1]+e.width,i=o[2]+e.width;for(let i=0;i<e.width;++i)r+=t[o[0]++]<<24|t[o[1]++]<<16|t[o[2]++]<<8,n[a]=r,a++}}return new DataView(n.buffer)}function M(e){var t=e.viewer,r={value:e.offset.value},n=new Uint8Array(e.width*e.lines*(e.channels*e.type*2)),i={version:w(t,r),unknownUncompressedSize:w(t,r),unknownCompressedSize:w(t,r),acCompressedSize:w(t,r),dcCompressedSize:w(t,r),rleCompressedSize:w(t,r),rleUncompressedSize:w(t,r),rleRawSize:w(t,r),totalAcUncompressedCount:w(t,r),totalDcUncompressedCount:w(t,r),acCompression:w(t,r)};if(i.version<2)throw"EXRLoader.parse: "+U.compression+" version "+i.version+" is unsupported";for(var a=[],o=x(t,r)-2;o>0;){var l=b(t.buffer,r),u=R(t,r),c=u>>2&3,A=new Int8Array([(u>>4)-1])[0],d=R(t,r);a.push({name:l,index:A,type:d,compression:c}),o-=l.length+3}for(var f=U.channels,B=Array(e.channels),p=0;p<e.channels;++p){var C=B[p]={},v=f[p];C.name=v.name,C.compression=0,C.decoded=!1,C.type=v.pixelType,C.pLinear=v.pLinear,C.width=e.width,C.height=e.lines}for(var E={idx:[,,,]},M=0;M<e.channels;++M)for(var C=B[M],p=0;p<a.length;++p){var y=a[p];C.name==y.name&&(C.compression=y.compression,y.index>=0&&(E.idx[y.index]=M),C.offset=M)}if(i.acCompressedSize>0)switch(i.acCompression){case 0:var F=new Uint16Array(i.totalAcUncompressedCount);h(e.array,t,r,i.acCompressedSize,F,i.totalAcUncompressedCount);break;case 1:var I=e.array.slice(r.value,r.value+i.totalAcUncompressedCount),G=L(I),F=new Uint16Array(G.buffer);r.value+=i.totalAcUncompressedCount}if(i.dcCompressedSize>0){var D=new Uint16Array(g({array:e.array,offset:r,size:i.dcCompressedSize}).buffer);r.value+=i.dcCompressedSize}if(i.rleRawSize>0){var I=e.array.slice(r.value,r.value+i.rleCompressedSize),G=L(I),H=m(G.buffer);r.value+=i.rleCompressedSize}for(var P=0,S=Array(B.length),p=0;p<S.length;++p)S[p]=[];for(var O=0;O<e.lines;++O)for(var J=0;J<B.length;++J)S[J].push(P),P+=B[J].width*e.type*2;!function(e,t,r,n,i,a){var o=new DataView(a.buffer),l=r[e.idx[0]].width,u=r[e.idx[0]].height,c=Math.floor(l/8),A=Math.ceil(l/8),d=Math.ceil(u/8),h=l-(A-1)*8,f=u-(d-1)*8,B={value:0},m=[,,,],p=[,,,],C=[,,,],g=[,,,],v=[,,,];for(let r=0;r<3;++r)v[r]=t[e.idx[r]],m[r]=r<1?0:m[r-1]+A*d,p[r]=new Float32Array(64),C[r]=new Uint16Array(64),g[r]=new Uint16Array(64*A);for(let t=0;t<d;++t){var E,M,b=8;t==d-1&&(b=f);var y=8;for(let e=0;e<A;++e){e==A-1&&(y=h);for(let e=0;e<3;++e){C[e].fill(0),C[e][0]=i[m[e]++],function(e,t,r){for(var n,i=1;i<64;)65280==(n=t[e.value])?i=64:n>>8==255?i+=255&n:(r[i]=n,i++),e.value++}(B,n,C[e]),E=C[e],(M=p[e])[0]=T(E[0]),M[1]=T(E[1]),M[2]=T(E[5]),M[3]=T(E[6]),M[4]=T(E[14]),M[5]=T(E[15]),M[6]=T(E[27]),M[7]=T(E[28]),M[8]=T(E[2]),M[9]=T(E[4]),M[10]=T(E[7]),M[11]=T(E[13]),M[12]=T(E[16]),M[13]=T(E[26]),M[14]=T(E[29]),M[15]=T(E[42]),M[16]=T(E[3]),M[17]=T(E[8]),M[18]=T(E[12]),M[19]=T(E[17]),M[20]=T(E[25]),M[21]=T(E[30]),M[22]=T(E[41]),M[23]=T(E[43]),M[24]=T(E[9]),M[25]=T(E[11]),M[26]=T(E[18]),M[27]=T(E[24]),M[28]=T(E[31]),M[29]=T(E[40]),M[30]=T(E[44]),M[31]=T(E[53]),M[32]=T(E[10]),M[33]=T(E[19]),M[34]=T(E[23]),M[35]=T(E[32]),M[36]=T(E[39]),M[37]=T(E[45]),M[38]=T(E[52]),M[39]=T(E[54]),M[40]=T(E[20]),M[41]=T(E[22]),M[42]=T(E[33]),M[43]=T(E[38]),M[44]=T(E[46]),M[45]=T(E[51]),M[46]=T(E[55]),M[47]=T(E[60]),M[48]=T(E[21]),M[49]=T(E[34]),M[50]=T(E[37]),M[51]=T(E[47]),M[52]=T(E[50]),M[53]=T(E[56]
208),M[54]=T(E[59]),M[55]=T(E[61]),M[56]=T(E[35]),M[57]=T(E[36]),M[58]=T(E[48]),M[59]=T(E[49]),M[60]=T(E[57]),M[61]=T(E[58]),M[62]=T(E[62]),M[63]=T(E[63]),function(e){let t=.5*Math.cos(3.14159/16),r=.5*Math.cos(3.14159/8),n=.5*Math.cos(3*3.14159/16),i=.5*Math.cos(3*3.14159/8);for(var a=[,,,,],o=[,,,,],s=[,,,,],l=[,,,,],u=0;u<8;++u){var c=8*u;a[0]=r*e[c+2],a[1]=i*e[c+2],a[2]=r*e[c+6],a[3]=i*e[c+6],o[0]=t*e[c+1]+n*e[c+3]+.2777854612564676*e[c+5]+.09754573032714427*e[c+7],o[1]=n*e[c+1]-.09754573032714427*e[c+3]-t*e[c+5]-.2777854612564676*e[c+7],o[2]=.2777854612564676*e[c+1]-t*e[c+3]+.09754573032714427*e[c+5]+n*e[c+7],o[3]=.09754573032714427*e[c+1]-.2777854612564676*e[c+3]+n*e[c+5]-t*e[c+7],s[0]=.35355362513961314*(e[c+0]+e[c+4]),s[3]=.35355362513961314*(e[c+0]-e[c+4]),s[1]=a[0]+a[3],s[2]=a[1]-a[2],l[0]=s[0]+s[1],l[1]=s[3]+s[2],l[2]=s[3]-s[2],l[3]=s[0]-s[1],e[c+0]=l[0]+o[0],e[c+1]=l[1]+o[1],e[c+2]=l[2]+o[2],e[c+3]=l[3]+o[3],e[c+4]=l[3]-o[3],e[c+5]=l[2]-o[2],e[c+6]=l[1]-o[1],e[c+7]=l[0]-o[0]}for(var A=0;A<8;++A)a[0]=r*e[16+A],a[1]=i*e[16+A],a[2]=r*e[48+A],a[3]=i*e[48+A],o[0]=t*e[8+A]+n*e[24+A]+.2777854612564676*e[40+A]+.09754573032714427*e[56+A],o[1]=n*e[8+A]-.09754573032714427*e[24+A]-t*e[40+A]-.2777854612564676*e[56+A],o[2]=.2777854612564676*e[8+A]-t*e[24+A]+.09754573032714427*e[40+A]+n*e[56+A],o[3]=.09754573032714427*e[8+A]-.2777854612564676*e[24+A]+n*e[40+A]-t*e[56+A],s[0]=.35355362513961314*(e[A]+e[32+A]),s[3]=.35355362513961314*(e[A]-e[32+A]),s[1]=a[0]+a[3],s[2]=a[1]-a[2],l[0]=s[0]+s[1],l[1]=s[3]+s[2],l[2]=s[3]-s[2],l[3]=s[0]-s[1],e[0+A]=l[0]+o[0],e[8+A]=l[1]+o[1],e[16+A]=l[2]+o[2],e[24+A]=l[3]+o[3],e[32+A]=l[3]-o[3],e[40+A]=l[2]-o[2],e[48+A]=l[1]-o[1],e[56+A]=l[0]-o[0]}(p[e])}for(var F=p,I=0;I<64;++I){var R=F[0][I],w=F[1][I],G=F[2][I];F[0][I]=R+1.5747*G,F[1][I]=R-.1873*w-.4682*G,F[2][I]=R+1.8556*w}for(let t=0;t<3;++t)!function(e,t,r){for(var n,i=0;i<64;++i){t[r+i]=s.GxU.toHalfFloat((n=e[i])<=1?Math.sign(n)*Math.pow(Math.abs(n),2.2):Math.sign(n)*Math.pow(9.025013291561939,Math.abs(n)-1))}}(p[t],g[t],64*e)}let a=0;for(let n=0;n<3;++n){let i=r[e.idx[n]].type;for(let e=8*t;e<8*t+b;++e){a=v[n][e];for(let t=0;t<c;++t){let r=64*t+(7&e)*8;o.setUint16(a+0*i,g[n][r+0],!0),o.setUint16(a+2*i,g[n][r+1],!0),o.setUint16(a+4*i,g[n][r+2],!0),o.setUint16(a+6*i,g[n][r+3],!0),o.setUint16(a+8*i,g[n][r+4],!0),o.setUint16(a+10*i,g[n][r+5],!0),o.setUint16(a+12*i,g[n][r+6],!0),o.setUint16(a+14*i,g[n][r+7],!0),a+=16*i}}if(c!=A)for(let e=8*t;e<8*t+b;++e){let t=v[n][e]+8*c*2*i,r=64*c+(7&e)*8;for(let e=0;e<y;++e)o.setUint16(t+2*e*i,g[n][r+e],!0)}}}for(var D=new Uint16Array(l),o=new DataView(a.buffer),x=0;x<3;++x){r[e.idx[x]].decoded=!0;var H=r[e.idx[x]].type;if(2==r[x].type)for(var P=0;P<u;++P){let e=v[x][P];for(var S=0;S<l;++S)D[S]=o.getUint16(e+2*S*H,!0);for(var S=0;S<l;++S)o.setFloat32(e+2*S*H,T(D[S]),!0)}}}(E,S,B,F,D,n);for(var p=0;p<B.length;++p){var C=B[p];if(!C.decoded)if(2===C.compression)for(var _=0,k=0,O=0;O<e.lines;++O){for(var K=S[p][_],N=0;N<C.width;++N){for(var j=0;j<2*C.type;++j)n[K++]=H[k+j*C.width*C.height];k++}_++}else throw"EXRLoader.parse: unsupported channel compression"}return new DataView(n.buffer)}function b(e,t){for(var r=new Uint8Array(e),n=0;0!=r[t.value+n];)n+=1;var i=new TextDecoder().decode(r.slice(t.value,t.value+n));return t.value=t.value+n+1,i}function y(e,t){var r=e.getInt32(t.value,!0);return t.value=t.value+4,r}function F(e,t){var r=e.getUint32(t.value,!0);return t.value=t.value+4,r}function I(e,t){var r=e[t.value];return t.value=t.value+1,r}function R(e,t){var r=e.getUint8(t.value);return t.value=t.value+1,r}let w=function(e,t){let r;return r="getBigInt64"in DataView.prototype?Number(e.getBigInt64(t.value,!0)):e.getUint32(t.value+4,!0)+Number(e.getUint32(t.value,!0)<<32),t.value+=8,r};function G(e,t){var r=e.getFloat32(t.value,!0);return t.value+=4,r}function D(e,t){return s.GxU.toHalfFloat(G(e,t))}function T(e){var t=(31744&e)>>10,r=1023&e;return(e>>15?-1:1)*(t?31===t?r?NaN:1/0:Math.pow(2,t-15)*(1+r/1024):r/1024*6103515625e-14)}function x(e,t){var r=e.getUint16(t.value,!0);return t.value+=2,r}function H(e,t){return T(x(e,t))}let P=new DataView(e),S=new Uint8Array(e),O={value:0},U=function(e,t,r){let n={};if(0x1312f76!=e.getUint32(0,!0))throw"THREE.EXRLoader: provided file doesn't appear to be in OpenEXR format.";n.version=e.getUint8(4);let i=e.getUint8(5);n.spec={singleTile:!!(2&i),longName:!!(4&i),deepFormat:!!(8&i),multiPart:!!(16&i)},r.value=8;for(var a=!0;a;){var o=b(t,r);
208if(0==o)a=!1;else{var s=b(t,r),l=F(e,r),u=function(e,t,r,n,i){var a,o,s,l,u,c,A;if("string"===n||"stringvector"===n||"iccProfile"===n)return a=new TextDecoder().decode(new Uint8Array(t).slice(r.value,r.value+i)),r.value=r.value+i,a;if("chlist"===n)return function(e,t,r,n){for(var i=r.value,a=[];r.value<i+n-1;){var o=b(t,r),s=y(e,r),l=R(e,r);r.value+=3;var u=y(e,r),c=y(e,r);a.push({name:o,pixelType:s,pLinear:l,xSampling:u,ySampling:c})}return r.value+=1,a}(e,t,r,i);if("chromaticities"===n)return o=G(e,r),s=G(e,r),l=G(e,r),u=G(e,r),c=G(e,r),{redX:o,redY:s,greenX:l,greenY:u,blueX:c,blueY:G(e,r),whiteX:G(e,r),whiteY:G(e,r)};if("compression"===n)return["NO_COMPRESSION","RLE_COMPRESSION","ZIPS_COMPRESSION","ZIP_COMPRESSION","PIZ_COMPRESSION","PXR24_COMPRESSION","B44_COMPRESSION","B44A_COMPRESSION","DWAA_COMPRESSION","DWAB_COMPRESSION"][R(e,r)];if("box2i"===n)return A=F(e,r),{xMin:A,yMin:F(e,r),xMax:F(e,r),yMax:F(e,r)};else if("lineOrder"===n)return["INCREASING_Y"][R(e,r)];else if("float"===n)return G(e,r);else if("v2f"===n)return[G(e,r),G(e,r)];else if("v3f"===n)return[G(e,r),G(e,r),G(e,r)];else if("int"===n)return y(e,r);else if("rational"===n)return[y(e,r),F(e,r)];else if("timecode"===n)return[F(e,r),F(e,r)];else return"preview"===n?(r.value+=i,"skipped"):(r.value+=i,void 0)}(e,t,r,s,l);void 0===u?console.warn(`EXRLoader.parse: skipped unknown header attribute type '${s}'.`):n[o]=u}}if((-5&i)!=0)throw console.error("EXRHeader:",n),"THREE.EXRLoader: provided file is currently unsupported.";return n}(P,e,O),J=function(e,t,r,n,i){let a={size:0,viewer:t,array:r,offset:n,width:e.dataWindow.xMax-e.dataWindow.xMin+1,height:e.dataWindow.yMax-e.dataWindow.yMin+1,channels:e.channels.length,bytesPerLine:null,lines:null,inputSize:null,type:e.channels[0].pixelType,uncompress:null,getter:null,format:null,[k?"colorSpace":"encoding"]:null};switch(e.compression){case"NO_COMPRESSION":a.lines=1,a.uncompress=p;break;case"RLE_COMPRESSION":a.lines=1,a.uncompress=C;break;case"ZIPS_COMPRESSION":a.lines=1,a.uncompress=g;break;case"ZIP_COMPRESSION":a.lines=16,a.uncompress=g;break;case"PIZ_COMPRESSION":a.lines=32,a.uncompress=v;break;case"PXR24_COMPRESSION":a.lines=16,a.uncompress=E;break;case"DWAA_COMPRESSION":a.lines=32,a.uncompress=M;break;case"DWAB_COMPRESSION":a.lines=256,a.uncompress=M;break;default:throw"EXRLoader.parse: "+e.compression+" is unsupported"}if(a.scanlineBlockSize=a.lines,1==a.type)switch(i){case s.RQf:a.getter=H,a.inputSize=2;break;case s.ix0:a.getter=x,a.inputSize=2}else if(2==a.type)switch(i){case s.RQf:a.getter=G,a.inputSize=4;break;case s.ix0:a.getter=D,a.inputSize=4}else throw"EXRLoader.parse: unsupported pixelType "+a.type+" for "+e.compression+".";a.blockCount=(e.dataWindow.yMax+1)/a.scanlineBlockSize;for(var o=0;o<a.blockCount;o++)w(t,n);a.outputChannels=3==a.channels?4:a.channels;let l=a.width*a.height*a.outputChannels;switch(i){case s.RQf:a.byteArray=new Float32Array(l),a.channels<a.outputChannels&&a.byteArray.fill(1,0,l);break;case s.ix0:a.byteArray=new Uint16Array(l),a.channels<a.outputChannels&&a.byteArray.fill(15360,0,l);break;default:console.error("THREE.EXRLoader: unsupported type: ",i)}return a.bytesPerLine=a.width*a.inputSize*a.channels,4==a.outputChannels?a.format=s.GWd:a.format=s.VT0,k?a.colorSpace="srgb-linear":a.encoding=3e3,a}(U,P,S,O,this.type),_={value:0},K={R:0,G:1,B:2,A:3,Y:0};for(let e=0;e<J.height/J.scanlineBlockSize;e++){let t=F(P,O);J.size=F(P,O),J.lines=t+J.scanlineBlockSize>J.height?J.height-t:J.scanlineBlockSize;let r=J.size<J.lines*J.bytesPerLine?J.uncompress(J):p(J);O.value+=J.size;for(let t=0;t<J.scanlineBlockSize;t++){let n=t+e*J.scanlineBlockSize;if(n>=J.height)break;for(let e=0;e<J.channels;e++){let i=K[U.channels[e].name];for(let a=0;a<J.width;a++){_.value=(t*(J.channels*J.width)+e*J.width+a)*J.inputSize;let o=(J.height-1-n)*(J.width*J.outputChannels)+a*J.outputChannels+i;J.byteArray[o]=J.getter(r,_)}}}}return{header:U,width:J.width,height:J.height,data:J.byteArray,format:J.format,[k?"colorSpace":"encoding"]:J[k?"colorSpace":"encoding"],type:this.t
208ype}}setDataType(e){return this.type=e,this}load(e,t,r,n){return super.load(e,function(e,r){k?e.colorSpace=r.colorSpace:e.encoding=r.encoding,e.minFilter=s.k6q,e.magFilter=s.k6q,e.generateMipmaps=!1,e.flipY=!1,t&&t(e,r)},r,n)}}let N=(e,t,r)=>{let n;switch(e){case s.OUM:n=new Uint8ClampedArray(t*r*4);break;case s.ix0:n=new Uint16Array(t*r*4);break;case s.bkx:n=new Uint32Array(t*r*4);break;case s.tJf:n=new Int8Array(t*r*4);break;case s.fBL:n=new Int16Array(t*r*4);break;case s.Yuy:n=new Int32Array(t*r*4);break;case s.RQf:n=new Float32Array(t*r*4);break;default:throw Error("Unsupported data type")}return n};class j{_renderer;_rendererIsDisposable=!1;_material;_scene;_camera;_quad;_renderTarget;_width;_height;_type;_colorSpace;_supportsReadPixels=!0;constructor(e){this._width=e.width,this._height=e.height,this._type=e.type,this._colorSpace=e.colorSpace;let t={format:s.GWd,depthBuffer:!1,stencilBuffer:!1,type:this._type,colorSpace:this._colorSpace,anisotropy:e.renderTargetOptions?.anisotropy!==void 0?e.renderTargetOptions?.anisotropy:1,generateMipmaps:e.renderTargetOptions?.generateMipmaps!==void 0&&e.renderTargetOptions?.generateMipmaps,magFilter:e.renderTargetOptions?.magFilter!==void 0?e.renderTargetOptions?.magFilter:s.k6q,minFilter:e.renderTargetOptions?.minFilter!==void 0?e.renderTargetOptions?.minFilter:s.k6q,samples:e.renderTargetOptions?.samples!==void 0?e.renderTargetOptions?.samples:void 0,wrapS:e.renderTargetOptions?.wrapS!==void 0?e.renderTargetOptions?.wrapS:s.ghU,wrapT:e.renderTargetOptions?.wrapT!==void 0?e.renderTargetOptions?.wrapT:s.ghU};if(this._material=e.material,e.renderer?this._renderer=e.renderer:(this._renderer=j.instantiateRenderer(),this._rendererIsDisposable=!0),this._scene=new s.Z58,this._camera=new s.qUd,this._camera.position.set(0,0,10),this._camera.left=-.5,this._camera.right=.5,this._camera.top=.5,this._camera.bottom=-.5,this._camera.updateProjectionMatrix(),!((e,t,r,i)=>{if(void 0!==n)return n;let a=new s.nWS(1,1,i);t.setRenderTarget(a);let o=new s.eaF(new s.bdM,new s.V9B({color:0xffffff}));t.render(o,r),t.setRenderTarget(null);let l=N(e,a.width,a.height);return t.readRenderTargetPixels(a,0,0,a.width,a.height,l),a.dispose(),o.geometry.dispose(),o.material.dispose(),n=0!==l[0]})(this._type,this._renderer,this._camera,t)){let e;this._type===s.ix0&&(e=this._renderer.extensions.has("EXT_color_buffer_float")?s.RQf:void 0),void 0!==e?(console.warn(`This browser does not support reading pixels from ${this._type} RenderTargets, switching to ${s.RQf}`),this._type=e):(this._supportsReadPixels=!1,console.warn("This browser dos not support toArray or toDataTexture, calls to those methods will result in an error thrown"))}this._quad=new s.eaF(new s.bdM,this._material),this._quad.geometry.computeBoundingBox(),this._scene.add(this._quad),this._renderTarget=new s.nWS(this.width,this.height,t),this._renderTarget.texture.mapping=e.renderTargetOptions?.mapping!==void 0?e.renderTargetOptions?.mapping:s.UTZ}static instantiateRenderer(){let e=new l.WebGLRenderer;return e.setSize(128,128),e}render=()=>{this._renderer.setRenderTarget(this._renderTarget);try{this._renderer.render(this._scene,this._camera)}catch(e){throw this._renderer.setRenderTarget(null),e}this._renderer.setRenderTarget(null)};toArray(){if(!this._supportsReadPixels)throw Error("Can't read pixels in this browser");let e=N(this._type,this._width,this._height);return this._renderer.readRenderTargetPixels(this._renderTarget,0,0,this._width,this._height,e),e}toDataTexture(e){let t=new s.GYF(this.toArray(),this.width,this.height,s.GWd,this._type,e?.mapping||s.UTZ,e?.wrapS||s.ghU,e?.wrapT||s.ghU,e?.magFilter||s.k6q,e?.minFilter||s.k6q,e?.anisotropy||1,s.Zr2);return t.generateMipmaps=e?.generateMipmaps!==void 0&&e?.generateMipmaps,t}disposeOnDemandRenderer(){this._renderer.setRenderTarget(null),this._rendererIsDisposable&&(this._renderer.dispose(),this._renderer.forceContextLoss())}dispose(e){this.disposeOnDemandRenderer(),e&&this.renderTarget.dispose(),this.material instanceof s.BKk&&Object.values(this.material.uniforms).forEach(e=>{e.value instanceof s.gPd&&e.value.dispose()}
208),Object.values(this.material).forEach(e=>{e instanceof s.gPd&&e.dispose()}),this.material.dispose(),this._quad.geometry.dispose()}get width(){return this._width}set width(e){this._width=e,this._renderTarget.setSize(this._width,this._height)}get height(){return this._height}set height(e){this._height=e,this._renderTarget.setSize(this._width,this._height)}get renderer(){return this._renderer}get renderTarget(){return this._renderTarget}set renderTarget(e){this._renderTarget=e,this._width=e.width,this._height=e.height}get material(){return this._material}get type(){return this._type}get colorSpace(){return this._colorSpace}}class Q extends Error{}class X extends Error{}let Y=(e,t,r)=>{let n=RegExp(`${t}="([^"]*)"`,"i").exec(e);if(n)return n[1];let i=RegExp(`<${t}[^>]*>([\\s\\S]*?)</${t}>`,"i").exec(e);if(i){let e=i[1].match(/<rdf:li>([^<]*)<\/rdf:li>/g);return e&&3===e.length?e.map(e=>e.replace(/<\/?rdf:li>/g,"")):i[1].trim()}if(void 0!==r)return r;throw Error(`Can't find ${t} in gainmap metadata`)};class Z{options;constructor(e){this.options={debug:!!e&&void 0!==e.debug&&e.debug,extractFII:!e||void 0===e.extractFII||e.extractFII,extractNonFII:!e||void 0===e.extractNonFII||e.extractNonFII}}extract(e){return new Promise((t,r)=>{let n,i=this.options.debug,a=new DataView(e.buffer);if(65496!==a.getUint16(0))return void r(Error("Not a valid jpeg"));let o=a.byteLength,s=2,l=0;for(;s<o;){if(++l>250)return void r(Error(`Found no marker after ${l} loops 😵`));if(255!==a.getUint8(s))return void r(Error(`Not a valid marker at offset 0x${s.toString(16)}, found: 0x${a.getUint8(s).toString(16)}`));if(n=a.getUint8(s+1),i&&console.log(`Marker: ${n.toString(16)}`),226===n){i&&console.log("Found APP2 marker (0xffe2)");let e=s+4;if(0x4d504600===a.getUint32(e)){let n,i=e+4;if(18761===a.getUint16(i))n=!1;else{if(19789!==a.getUint16(i))return void r(Error("No valid endianness marker found in TIFF header"));n=!0}if(42!==a.getUint16(i+2,!n))return void r(Error("Not valid TIFF data! (no 0x002A marker)"));let o=a.getUint32(i+4,!n);if(o<8)return void r(Error("Not valid TIFF data! (First offset less than 8)"));let s=i+o,l=a.getUint16(s,!n),u=s+2,c=0;for(let e=u;e<u+12*l;e+=12)45057===a.getUint16(e,!n)&&(c=a.getUint32(e+8,!n));let A=s+2+12*l+4,d=[];for(let e=A;e<A+16*c;e+=16){let t={MPType:a.getUint32(e,!n),size:a.getUint32(e+4,!n),dataOffset:a.getUint32(e+8,!n),dependantImages:a.getUint32(e+12,!n),start:-1,end:-1,isFII:!1};t.dataOffset?(t.start=i+t.dataOffset,t.isFII=!1):(t.start=0,t.isFII=!0),t.end=t.start+t.size,d.push(t)}if(this.options.extractNonFII&&d.length){let e=new Blob([a]),r=[];for(let t of d){if(t.isFII&&!this.options.extractFII)continue;let n=e.slice(t.start,t.end+1,"image/jpeg");r.push(n)}t(r)}}}s+=2+a.getUint16(s+2)}})}}let W=async e=>{let t=(e=>{let t,r=(t="undefined"!=typeof TextDecoder?new TextDecoder().decode(e):e.toString()).indexOf("<x:xmpmeta");for(;-1!==r;){let e=t.indexOf("x:xmpmeta>",r),n=t.slice(r,e+10);try{let e=Y(n,"hdrgm:GainMapMin","0"),t=Y(n,"hdrgm:GainMapMax"),r=Y(n,"hdrgm:Gamma","1"),i=Y(n,"hdrgm:OffsetSDR","0.015625"),a=Y(n,"hdrgm:OffsetHDR","0.015625"),o=/hdrgm:HDRCapacityMin="([^"]*)"/.exec(n),s=o?o[1]:"0",l=/hdrgm:HDRCapacityMax="([^"]*)"/.exec(n);if(!l)throw Error("Incomplete gainmap metadata");let u=l[1];return{gainMapMin:Array.isArray(e)?e.map(e=>parseFloat(e)):[parseFloat(e),parseFloat(e),parseFloat(e)],gainMapMax:Array.isArray(t)?t.map(e=>parseFloat(e)):[parseFloat(t),parseFloat(t),parseFloat(t)],gamma:Array.isArray(r)?r.map(e=>parseFloat(e)):[parseFloat(r),parseFloat(r),parseFloat(r)],offsetSdr:Array.isArray(i)?i.map(e=>parseFloat(e)):[parseFloat(i),parseFloat(i),parseFloat(i)],offsetHdr:Array.isArray(a)?a.map(e=>parseFloat(e)):[parseFloat(a),parseFloat(a),parseFloat(a)],hdrCapacityMin:parseFloat(s),hdrCapacityMax:parseFloat(u)}}catch(e){}r=t.indexOf("<x:xmpmeta",e)}})(e);if(!t)throw new X("Gain map XMP metadata not found");let r=new Z({extractFII:!0,extractNonFII:!0}),n=await r.extract(e);if(2!==n.length)throw new Q("Gain map recovery image not found");return{sdr:new Uint8Array(await n[0].arrayBuffer()),gainMap:new Uint8Array(await n[1].arrayBuffer()),metadata:t}},z=e=>new Promise((t,r)=>{let n=document.createElement("img");n.onload=()=>{t(n)},n.onerror=e=>{r(e)},n.src=URL.createObjectURL(e)});class V extends s.aHM{_renderer;_renderTargetOptions;_internalLoadingManager;_config;constructor(e,t){super(t),this._config=e,e.renderer&&(this._renderer=e.renderer),this._internalLoadingManager=new s.KPJ}
208setRenderer(e){return this._renderer=e,this}setRenderTargetOptions(e){return this._renderTargetOptions=e,this}prepareQuadRenderer(){this._renderer||console.warn("WARNING: A Renderer was not passed to this Loader constructor or in setRenderer, the result of this Loader will need to be converted to a Data Texture with toDataTexture() before you can use it in your renderer.");let e=this._config.createMaterial({gainMapMax:[1,1,1],gainMapMin:[0,0,0],gamma:[1,1,1],offsetHdr:[1,1,1],offsetSdr:[1,1,1],hdrCapacityMax:1,hdrCapacityMin:0,maxDisplayBoost:1,gainMap:new s.gPd,sdr:new s.gPd});return this._config.createQuadRenderer({width:16,height:16,type:s.ix0,colorSpace:s.Zr2,material:e,renderer:this._renderer,renderTargetOptions:this._renderTargetOptions})}async processImages(e,t,r){let n,i,a=t?new Blob([t],{type:"image/jpeg"}):void 0,o=new Blob([e],{type:"image/jpeg"}),s=!1;if("undefined"==typeof createImageBitmap){let e=await Promise.all([a?z(a):Promise.resolve(void 0),z(o)]);i=e[0],n=e[1],s="flipY"===r}else{let e=await Promise.all([a?createImageBitmap(a,{imageOrientation:r||"flipY"}):Promise.resolve(void 0),createImageBitmap(o,{imageOrientation:r||"flipY"})]);i=e[0],n=e[1]}return{sdrImage:n,gainMapImage:i,needsFlip:s}}createTextures(e,t,r){let n=new s.gPd(t||new ImageData(2,2),s.UTZ,s.ghU,s.ghU,s.k6q,s.NZq,s.GWd,s.OUM,1,s.Zr2);n.flipY=r,n.needsUpdate=!0;let i=new s.gPd(e,s.UTZ,s.ghU,s.ghU,s.k6q,s.NZq,s.GWd,s.OUM,1,s.er$);return i.flipY=r,i.needsUpdate=!0,{gainMap:n,sdr:i}}updateQuadRenderer(e,t,r,n,i){e.width=t.width,e.height=t.height,e.material.gainMap=r,e.material.sdr=n,e.material.gainMapMin=i.gainMapMin,e.material.gainMapMax=i.gainMapMax,e.material.offsetHdr=i.offsetHdr,e.material.offsetSdr=i.offsetSdr,e.material.gamma=i.gamma,e.material.hdrCapacityMin=i.hdrCapacityMin,e.material.hdrCapacityMax=i.hdrCapacityMax,e.material.maxDisplayBoost=Math.pow(2,i.hdrCapacityMax),e.material.needsUpdate=!0}}let q=`
209varying vec2 vUv;
210
211void main() {
212  vUv = uv;
213  gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
214}
215`,$=`
216// min half float value
217#define HALF_FLOAT_MIN vec3( -65504, -65504, -65504 )
218// max half float value
219#define HALF_FLOAT_MAX vec3( 65504, 65504, 65504 )
220
221uniform sampler2D sdr;
222uniform sampler2D gainMap;
223uniform vec3 gamma;
224uniform vec3 offsetHdr;
225uniform vec3 offsetSdr;
226uniform vec3 gainMapMin;
227uniform vec3 gainMapMax;
228uniform float weightFactor;
229
230varying vec2 vUv;
231
232void main() {
233  vec3 rgb = texture2D( sdr, vUv ).rgb;
234  vec3 recovery = texture2D( gainMap, vUv ).rgb;
235  vec3 logRecovery = pow( recovery, gamma );
236  vec3 logBoost = gainMapMin * ( 1.0 - logRecovery ) + gainMapMax * logRecovery;
237  vec3 hdrColor = (rgb + offsetSdr) * exp2( logBoost * weightFactor ) - offsetHdr;
238  vec3 clampedHdrColor = max( HALF_FLOAT_MIN, min( HALF_FLOAT_MAX, hdrColor ));
239  gl_FragColor = vec4( clampedHdrColor , 1.0 );
240}
241`;class ee extends s.BKk{_maxDisplayBoost;_hdrCapacityMin;_hdrCapacityMax;constructor({gamma:e,offsetHdr:t,offsetSdr:r,gainMapMin:n,gainMapMax:i,maxDisplayBoost:a,hdrCapacityMin:o,hdrCapacityMax:l,sdr:u,gainMap:c}){super({name:"GainMapDecoderMaterial",vertexShader:q,fragmentShader:$,uniforms:{sdr:{value:u},gainMap:{value:c},gamma:{value:new s.Pq0(1/e[0],1/e[1],1/e[2])},offsetHdr:{value:new s.Pq0().fromArray(t)},offsetSdr:{value:new s.Pq0().fromArray(r)},gainMapMin:{value:new s.Pq0().fromArray(n)},gainMapMax:{value:new s.Pq0().fromArray(i)},weightFactor:{value:(Math.log2(a)-o)/(l-o)}},blending:s.XIg,depthTest:!1,depthWrite:!1}),this._maxDisplayBoost=a,this._hdrCapacityMin=o,this._hdrCapacityMax=l,this.needsUpdate=!0,this.uniformsNeedUpdate=!0}get sdr(){return this.uniforms.sdr.value}set sdr(e){this.uniforms.sdr.value=e}get gainMap(){return this.uniforms.gainMap.value}set gainMap(e){this.uniforms.gainMap.value=e}get offsetHdr(){return this.uniforms.offsetHdr.value.toArray()}set offsetHdr(e){this.uniforms.offsetHdr.value.fromArray(e)}get offsetSdr(){return this.uniforms.offsetSdr.value.toArray()}set offsetSdr(e){this.uniforms.offsetSdr.value.fromArray(e)}get gainMapMin(){return this.uniforms.gainMapMin.value.toArray()}set gainMapMin(e){this.uniforms.gainMapMin.value.fromArray(e)}get gainMapMax(){return this.uniforms.gainMapMax.value.toArray()}set gainMapMax(e){this.uniforms.gainMapMax.value.fromArray(e)}get gamma(){let e=this.uniforms.gamma.value;return[1/e.x,1/e.y,1/e.z]}set gamma(e){let t=this.uniforms.gamma.value;t.x=1/e[0],t.y=1/e[1],t.z=1/e[2]}get hdrCapacityMin(){return this._hdrCapacityMin}set hdrCapacityMin(e){this._hdrCapacityMin=e,this.calculateWeight()}get hdrCapacityMax(){return this._hdrCapacityMax}set hdrCapacityMax(e){this._hdrCapacityMax=e,this.calculateWeight()}get maxDisplayBoost(){return this._maxDisplayBoost}set maxDisplayBoost(e){this._maxDisplayBoost=Math.max(1,Math.min(65504,e)),this.calculateWeight()}calculateWeight(){let e=(Math.log2(this._maxDisplayBoost)-this._hdrCapacityMin)/(this._hdrCapacityMax-this._hdrCapacityMin);this.uniforms.weightFactor.value=Math.max(0,Math.min(1,e))}}!l.WebGLRenderer;class et extends V{constructor(e,t){super({renderer:e,createMaterial:e=>new ee(e),createQuadRenderer:e=>new j(e)},t)}async render(e,t,r,n){let{sdrImage:i,gainMapImage:a,needsFlip:o}=await this.processImages(r,n,"flipY"),{gainMap:s,sdr:l}=this.createTextures(i,a,o);this.updateQuadRenderer(e,i,s,l,t),e.render()}}class er extends et{load([e,t,r],n,i,a){let o,l,u,c=this.prepareQuadRenderer(),A=async()=>
241{if(o&&l&&u){try{await this.render(c,u,o,l)}catch(n){this.manager.itemError(e),this.manager.itemError(t),this.manager.itemError(r),"function"==typeof a&&a(n),c.disposeOnDemandRenderer();return}"function"==typeof n&&n(c),this.manager.itemEnd(e),this.manager.itemEnd(t),this.manager.itemEnd(r),c.disposeOnDemandRenderer()}},d=!0,h=0,f=0,B=!0,m=0,p=0,C=!0,g=0,v=0,E=()=>{"function"==typeof i&&i(new ProgressEvent("progress",{lengthComputable:d&&B&&C,loaded:f+p+v,total:h+m+g}))};this.manager.itemStart(e),this.manager.itemStart(t),this.manager.itemStart(r);let M=new s.Y9S(this._internalLoadingManager);M.setResponseType("arraybuffer"),M.setRequestHeader(this.requestHeader),M.setPath(this.path),M.setWithCredentials(this.withCredentials),M.load(e,async e=>{if("string"==typeof e)throw Error("Invalid sdr buffer");o=e,await A()},e=>{d=e.lengthComputable,f=e.loaded,h=e.total,E()},t=>{this.manager.itemError(e),"function"==typeof a&&a(t)});let b=new s.Y9S(this._internalLoadingManager);b.setResponseType("arraybuffer"),b.setRequestHeader(this.requestHeader),b.setPath(this.path),b.setWithCredentials(this.withCredentials),b.load(t,async e=>{if("string"==typeof e)throw Error("Invalid gainmap buffer");l=e,await A()},e=>{B=e.lengthComputable,p=e.loaded,m=e.total,E()},e=>{this.manager.itemError(t),"function"==typeof a&&a(e)});let y=new s.Y9S(this._internalLoadingManager);return y.setRequestHeader(this.requestHeader),y.setPath(this.path),y.setWithCredentials(this.withCredentials),y.load(r,async e=>{if("string"!=typeof e)throw Error("Invalid metadata string");u=JSON.parse(e),await A()},e=>{C=e.lengthComputable,v=e.loaded,g=e.total,E()},e=>{this.manager.itemError(r),"function"==typeof a&&a(e)}),c}}class en extends et{load(e,t,r,n){let i=this.prepareQuadRenderer(),a=new s.Y9S(this._internalLoadingManager);return a.setResponseType("arraybuffer"),a.setRequestHeader(this.requestHeader),a.setPath(this.path),a.setWithCredentials(this.withCredentials),this.manager.itemStart(e),a.load(e,async r=>{let a,o,s;if("string"==typeof r)throw Error("Invalid buffer, received [string], was expecting [ArrayBuffer]");let l=new Uint8Array(r);try{let e=await W(l);a=e.sdr,o=e.gainMap,s=e.metadata}catch(t){if(t instanceof X||t instanceof Q)console.warn(`Failure to reconstruct an HDR image from ${e}: Gain map metadata not found in the file, HDRJPGLoader will render the SDR jpeg`),s={gainMapMin:[0,0,0],gainMapMax:[1,1,1],gamma:[1,1,1],hdrCapacityMin:0,hdrCapacityMax:1,offsetHdr:[0,0,0],offsetSdr:[0,0,0]},a=l;else throw t}try{await this.render(i,s,a.buffer,o?.buffer)}catch(t){this.manager.itemError(e),"function"==typeof n&&n(t),i.disposeOnDemandRenderer();return}"function"==typeof t&&t(i),this.manager.itemEnd(e),i.disposeOnDemandRenderer()},r,t=>{this.manager.itemError(e),"function"==typeof n&&n(t)}),i}}let ei={apartment:"lebombo_1k.hdr",city:"potsdamer_platz_1k.hdr",dawn:"kiara_1_dawn_1k.hdr",forest:"forest_slope_1k.hdr",lobby:"st_fagans_interior_1k.hdr",night:"dikhololo_night_1k.hdr",park:"rooitou_park_1k.hdr",studio:"studio_small_03_1k.hdr",sunset:"venice_sunset_1k.hdr",warehouse:"empty_warehouse_01_1k.hdr"},ea="https://raw.githack.com/pmndrs/drei-assets/456060a26bbeb8fdf79326f224b6d99b8bcce736/hdri/",eo=e=>Array.isArray(e),es=["/px.png","/nx.png","/py.png","/ny.png","/pz.png","/nz.png"];function el({files:e=es,path:t="",preset:r,colorSpace:n,extensions:i}={}){r&&(eA(r),e=ei[r],t=ea);let l=eo(e),{extension:u,isCubemap:c}=ed(e),A=eh(u);if(!A)throw Error("useEnvironment: Unrecognized file extension: "+e);let d=(0,o.C)(e=>e.gl);(0,a.useLayoutEffect)(()=>{("webp"===u||"jpg"===u||"jpeg"===u)&&d.domElement.addEventListener("webglcontextlost",function(){o.G.clear(A,l?[e]:e)},{once:!0})},[e,d.domElement]);let h=(0,o.G)(A,l?[e]:e,e=>{("webp"===u||"jpg"===u||"jpeg"===u)&&e.setRenderer(d),null==e.setPath||e.setPath(t),i&&i(e)}),f=l?h[0]:h;if("jpg"===u||"jpeg"===u||"webp"===u){var B;f=null==(B=f.renderTarget)?void 0:B.texture}return f.mapping=c?s.hy7:s.wfO,f.colorSpace=null!=n?n:c?"srgb":"srgb-linear",f}let eu={files:es,path:"",preset:void 0,extensions:void 0};el.preload=e=>{let t={...eu,...e},{files:r,path:n=""}=t,{preset:i,extensions:a}=t;i&&(eA(i),r=ei[i],n=ea);let{extension:s}=ed(r);if("webp"===s||"jpg"===s||"jpeg"===s)throw Error("useEnvironment: Preloading gainmaps is not supported");let l=eh(s);if(!l)throw Error("useEnvironment: Unrecognized file extension: "+r);o.G.preload(l,eo(r)?[r]:r,e=>{null==e.setPath||e.setPath(n),a&&a(e)})};let ec={files:es,preset:void 0};function eA(e){if(!(e in ei))throw Error("Preset must be one of: "+Object.keys(ei).join(", "))}function ed(e){var t;let r=eo(e)&&6===e.length,n=eo(e)&&3===e.length&&e.some(e=>e.endsWith("json")),i=eo(e)?e[0]:e;return{extension:r?"cube":n?"webp":i.startsWith("data:application/exr")?"exr":i.startsWith("data:application/hdr")?"hdr":i.startsWith("data:image/jpeg")?"jpg":null==(t=i.split(".").pop())||null==(t=t.split("?"))||null==(t=t.shift())?void 0:t.toLowerCase(),isCubemap:r,isGainmap:n}}function eh(e){return"cube"===e?s.ScU:"hdr"===e?A:"exr"===e?K:"jpg"===e||"jpeg"===e?en:"webp"===e?er:null}function ef(e,t,r,n,i={}){var a,s,l,u;let c,A;i={backgroundBlurriness:0,backgroundIntensity:1,backgroundRotation:[0,0,0],environmentIntensity:1,environmentRotation:[0,0,0],...i};let d=(A=c=t||r).current&&A.current.isScene?c.current:c,h=d.background,f=d.environment,B={backgroundBlurriness:d.backgroundBlurriness,backgroundIntensity:d.backgroundIntensity,backgroundRotation:null!=(a=null==(s=d.backgroundRotation)||null==s.clone?void 0:s.clone())?a:[0,0,0],environmentIntensity:d.environmentIntensity,environmentRotation:null!=(l=null==(u=d.environmentRotation)||null==u.clone?void 0:u.clone())?l:[0,0,0]};return"only"!==e&&(d.environment=n),e&&(d.background=n),(0,o.s)(d,i),()=>{"only"!==e&&(d.environment=f),e&&(d.background=h),(0,o.s)(d,B)}}function eB({scene:e,background:t=!1,map:r,...n}){let i=(0,o.C)(e=>e.scene);return a.useLayoutEffect(()=>{if(r)return ef(t,e,i,r,n)}),null}function em({background:e=!1,scene:t,blur:r,backgroundBlurriness:n,backgroundIntensity:i,backgroundRotation:s,environmentIntensity:l,environmentRotation:u,...c}){let A=el(c),d=(0,o.C)(e=>e.scene);return a.useLayoutEffect(()=>ef(e,t,d,A,{backgroundBlurriness:null!=r?r:n,backgroundIntensity:i,backgroundRotation:s,environmentIntensity:l,environmentRotation:u})),a.useEffect(()=>()=>{A.dispose()},[A]),null}function ep({children:e,near:t=.1,far:r=1e3,resolution:n=256,frames:i=1,map:u,background:c=!1,blur:A,backgroundBlurriness:d,backgroundIntensity:h,backgroundRotation:f,environmentIntensity:B,environmentRotation:m,scene:p,files:C,path:g,preset:v,extensions:E}){let M=(0,o.C)(e=>e.gl),b=(0,o.C)(e=>
241e.scene),y=a.useRef(null),[F]=a.useState(()=>new s.Z58),I=a.useMemo(()=>{let e=new l.WebGLCubeRenderTarget(n);return e.texture.type=s.ix0,e},[n]);a.useEffect(()=>()=>{I.dispose()},[I]),a.useLayoutEffect(()=>{if(1===i){let e=M.autoClear;M.autoClear=!0,y.current.update(M,F),M.autoClear=e}return ef(c,p,b,I.texture,{backgroundBlurriness:null!=A?A:d,backgroundIntensity:h,backgroundRotation:f,environmentIntensity:B,environmentRotation:m})},[e,F,I.texture,p,b,c,i,M]);let R=1;return(0,o.D)(()=>{if(i===1/0||R<i){let e=M.autoClear;M.autoClear=!0,y.current.update(M,F),M.autoClear=e,R++}}),a.createElement(a.Fragment,null,(0,o.o)(a.createElement(a.Fragment,null,e,a.createElement("cubeCamera",{ref:y,args:[t,r,I]}),C||v?a.createElement(em,{background:!0,files:C,preset:v,path:g,extensions:E}):u?a.createElement(eB,{background:!0,map:u,extensions:E}):null),F))}function eC(e){var t,r,n,s;let l=el(e),u=e.map||l;a.useMemo(()=>(0,o.e)({GroundProjectedEnvImpl:c}),[]),a.useEffect(()=>()=>{l.dispose()},[l]);let A=a.useMemo(()=>[u],[u]),d=null==(t=e.ground)?void 0:t.height,h=null==(r=e.ground)?void 0:r.radius,f=null!=(n=null==(s=e.ground)?void 0:s.scale)?n:1e3;return a.createElement(a.Fragment,null,a.createElement(eB,(0,i.A)({},e,{map:u})),a.createElement("groundProjectedEnvImpl",{args:A,scale:f,height:d,radius:h}))}function eg(e){return e.ground?a.createElement(eC,e):e.map?a.createElement(eB,e):e.children?a.createElement(ep,e):a.createElement(em,e)}el.clear=e=>{let t={...ec,...e},{files:r}=t,{preset:n}=t;n&&(eA(n),r=ei[n]);let{extension:i}=ed(r),a=eh(i);if(!a)throw Error("useEnvironment: Unrecognized file extension: "+r);o.G.clear(a,eo(r)?[r]:r)}},3654:(e,t,r)=>{var n=r(2115),i=r(4806),a="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},o=i.useSyncExternalStore,s=n.useRef,l=n.useEffect,u=n.useMemo,c=n.useDebugValue;t.useSyncExternalStoreWithSelector=function(e,t,r,n,i){var A=s(null);if(null===A.current){var d={hasValue:!1,value:null};A.current=d}else d=A.current;var h=o(e,(A=u(function(){function e(e){if(!l){if(l=!0,o=e,e=n(e),void 0!==i&&d.hasValue){var t=d.value;if(i(t,e))return s=t}return s=e}if(t=s,a(o,e))return t;var r=n(e);return void 0!==i&&i(t,r)?(o=e,t):(o=e,s=r)}var o,s,l=!1,u=void 0===r?null:r;return[function(){return e(t())},null===u?void 0:function(){return e(u())}]},[t,r,n,i]))[0],A[1]);return l(function(){d.hasValue=!0,d.value=h},[h]),c(h),h}},3689:(e,t,r)=>{r.d(t,{DY:()=>o,IU:()=>l,uv:()=>s});let n=[];function i(e,t,r=(e,t)=>e===t){if(e===t)return!0;if(!e||!t)return!1;let n=e.length;if(t.length!==n)return!1;for(let i=0;i<n;i++)if(!r(e[i],t[i]))return!1;return!0}function a(e,t=null,r=!1,o={}){for(let a of(null===t&&(t=[e]),n))if(i(t,a.keys,a.equal)){if(r)return;if(Object.prototype.hasOwnProperty.call(a,"error"))throw a.error;if(Object.prototype.hasOwnProperty.call(a,"response"))return o.lifespan&&o.lifespan>0&&(a.timeout&&clearTimeout(a.timeout),a.timeout=setTimeout(a.remove,o.lifespan)),a.response;if(!r)throw a.promise}let s={keys:t,equal:o.equal,remove:()=>{let e=n.indexOf(s);-1!==e&&n.splice(e,1)},promise:("object"==typeof e&&"function"==typeof e.then?e:e(...t)).then(e=>{s.response=e,o.lifespan&&o.lifespan>0&&(s.timeout=setTimeout(s.remove,o.lifespan))}).catch(e=>s.error=e)};if(n.push(s),!r)throw s.promise}let o=(e,t,r)=>a(e,t,!1,r),s=(e,t,r)=>void a(e,t,!0,r),l=e=>{if(void 0===e||0===e.length)n.splice(0,n.length);else{let t=n.find(t=>i(e,t.keys,t.equal));t&&t.remove()}}},3709:(e,t,r)=>{r.d(t,{o:()=>o});var n=r(6014),i=r(5339),a=r(2115);let o=a.forwardRef(function({children:e,object:t,disable:r,disableX:o,disableY:s,disableZ:l,left:u,right:c,top:A,bottom:d,front:h,back:f,onCentered:B,precise:m=!0,cacheKey:p=0,...C},g){let v=a.useRef(null),E=a.useRef(null),M=a.useRef(null),[b]=a.useState(()=>new i.NRn),[y]=a.useState(()=>new i.Pq0),[F]=a.useState(()=>new i.iyt);return a.useLayoutEffect(()=>{E.current.matrixWorld.identity(),b.setFromObject(null!=t?t:M.current,m);let e=b.max.x-b.min.x,n=b.max.y-b.min.y,i=b.max.z-b.min.z;b.getCenter(y),b.getBoundingSphere(F);let a=A?n/2:d?-n/2:0,p=u?-e/2:c?e/2:0,C=h?i/2:f?-i/2:0;E.current.position.set(r||o?0:-y.x+p,r||s?0:-y.y+a,r||l?0:-y.z+C),null==B||B({parent:v.current.parent,container:v.current,width:e,height:n,depth:i,boundingBox:b,boundingSphere:F,center:y,verticalAlignment:a,horizontalAlignment:p,depthAlignment:C})},[p,B,A,u,h,r,o,s,l,t,m,c,d,f,b,y,F]),a.useImperativeHandle(g,()=>v.current,[]),a.createElement("group",(0,n.A)({ref:v},C),a.createElement("group",{ref:E},a.createElement("group",{ref:M},e)))})},3718:(e,t,r)=>{r.d(t,{h:()=>l});var n=r(2115),i=r(8828);let a=e=>{let t,r=new Set,n=(e,n)=>{let i="function"==typeof e?e(t):e;if(!Object.is(i,t)){let e=t;t=(null!=n?n:"object"!=typeof i||null===i)?i:Object.assign({},t,i),r.forEach(r=>r(t,e))}},i=()=>t,a={setState:n,getState:i,getInitialState:()=>o,subscribe:e=>(r.add(e),()=>r.delete(e))},o=t=e(n,i,a);return a},{useSyncExternalStoreWithSelector:o}=i,s=(e,t)=>{let r=(e=>e?a(e):a)(e),i=(e,i=t)=>(function(e,t=e=>e,r){let i=o(e.subscribe,e.getState,e.getInitialState,t,r);return n.useDebugValue(i),i})(r,e,i);return Object.assign(i,r),i},l=(e,t)=>
241e?s(e,t):s},4735:(e,t,r)=>{r.d(t,{Af:()=>s,Nz:()=>i,u5:()=>l,y3:()=>A});var n=r(2115);function i(e,t,r){if(!e)return;if(!0===r(e))return e;let n=t?e.return:e.child;for(;n;){let e=i(n,t,r);if(e)return e;n=t?null:n.sibling}}function a(e){try{return Object.defineProperties(e,{_currentRenderer:{get:()=>null,set(){}},_currentRenderer2:{get:()=>null,set(){}}})}catch(t){return e}}(()=>{var e,t;return"undefined"!=typeof window&&((null==(e=window.document)?void 0:e.createElement)||(null==(t=window.navigator)?void 0:t.product)==="ReactNative")})()?n.useLayoutEffect:n.useEffect;let o=a(n.createContext(null));class s extends n.Component{render(){return n.createElement(o.Provider,{value:this._reactInternals},this.props.children)}}function l(){let e=n.useContext(o);if(null===e)throw Error("its-fine: useFiber must be called within a <FiberProvider />!");let t=n.useId();return n.useMemo(()=>{for(let r of[e,null==e?void 0:e.alternate]){if(!r)continue;let e=i(r,!1,e=>{let r=e.memoizedState;for(;r;){if(r.memoizedState===t)return!0;r=r.next}});if(e)return e}},[e,t])}let u=Symbol.for("react.context"),c=e=>null!==e&&"object"==typeof e&&"$$typeof"in e&&e.$$typeof===u;function A(){let e=function(){let e=l(),[t]=n.useState(()=>new Map);t.clear();let r=e;for(;r;){let e=r.type;c(e)&&e!==o&&!t.has(e)&&t.set(e,n.use(a(e))),r=r.return}return t}();return n.useMemo(()=>Array.from(e.keys()).reduce((t,r)=>i=>n.createElement(t,null,n.createElement(r.Provider,{...i,value:e.get(r)})),e=>n.createElement(s,{...e})),[e])}},4806:(e,t,r)=>{e.exports=r(125)},4814:(e,t,r)=>{r.d(t,{r:()=>n});let n=parseInt(r(5339).sPf.replace(/\D+/g,""))},5661:(e,t,r)=>{r.d(t,{O:()=>s});var n=r(6014),i=r(3388),a=r(2115),o=r(5339);let s=a.forwardRef(({light:e,args:t,map:r,toneMapped:s=!1,color:l="white",form:u="rect",intensity:c=1,scale:A=1,target:d=[0,0,0],children:h,...f},B)=>{let m=a.useRef(null);return a.useImperativeHandle(B,()=>m.current,[]),a.useLayoutEffect(()=>{h||f.material||((0,i.s)(m.current.material,{color:l}),m.current.material.color.multiplyScalar(c))},[l,c,h,f.material]),a.useLayoutEffect(()=>{f.rotation||m.current.quaternion.identity(),d&&!f.rotation&&("boolean"==typeof d?m.current.lookAt(0,0,0):m.current.lookAt(Array.isArray(d)?new o.Pq0(...d):d))},[d,f.rotation]),A=Array.isArray(A)&&2===A.length?[A[0],A[1],1]:A,a.createElement("mesh",(0,n.A)({ref:m,scale:A},f),"circle"===u?a.createElement("ringGeometry",{args:t||[0,.5,64]}):"ring"===u?a.createElement("ringGeometry",{args:t||[.25,.5,64]}):"rect"===u||"plane"===u?a.createElement("planeGeometry",{args:t||[1,1]}):"box"===u?a.createElement("boxGeometry",{args:t||[1,1,1]}):a.createElement(u,{args:t}),h||a.createElement("meshBasicMaterial",{toneMapped:s,map:r,side:o.$EB}),e&&a.createElement("pointLight",(0,n.A)({castShadow:!0},e)))})},6014:(e,t,r)=>{r.d(t,{A:()=>n});function n(){return(n=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)({}).hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(null,arguments)}},6451:(e,t)=>{function r(e,t){var r=e.length;for(e.push(t);0<r;){var n=r-1>>>1,i=e[n];if(0<a(i,t))e[n]=t,e[r]=i,r=n;else break}}function n(e){return 0===e.length?null:e[0]}function i(e){if(0===e.length)return null;var t=e[0],r=e.pop();if(r!==t){e[0]=r;for(var n=0,i=e.length,o=i>>>1;n<o;){var s=2*(n+1)-1,l=e[s],u=s+1,c=e[u];if(0>a(l,r))u<i&&0>a(c,l)?(e[n]=c,e[u]=r,n=u):(e[n]=l,e[s]=r,n=s);else if(u<i&&0>a(c,r))e[n]=c,e[u]=r,n=u;else break}}return t}function a(e,t){var r=e.sortIndex-t.sortIndex;return 0!==r?r:e.id-t.id}if(t.unstable_now=void 0,"object"==typeof performance&&"function"==typeof performance.now){var o,s=performance;t.unstable_now=function(){return s.now()}}else{var l=Date,u=l.now();t.unstable_now=function(){return l.now()-u}}var c=[],A=[],d=1,h=null,f=3,B=!1,m=!1,p=!1,C=!1,g="function"==typeof setTimeout?setTimeout:null,v="function"==typeof clearTimeout?clearTimeout:null,E="undefined"!=typeof setImmediate?setImmediate:null;function M(e){for(var t=n(A);null!==t;){if(null===t.callback)i(A);else if(t.startTime<=e)i(A),t.sortIndex=t.expirationTime,r(c,t);else break;t=n(A)}}function b(e){if(p=!1,M(e),!m)if(null!==n(c))m=!0,y||(y=!0,o());else{var t=n(A);null!==t&&x(b,t.startTime-e)}}var y=!1,F=-1,I=5,R=-1;function w(){return!!C||!(t.unstable_now()-R<I)}function G(){if(C=!1,y){var e=t.unstable_now();R=e;var r=!0;try{e:{m=!1,p&&(p=!1,v(F),F=-1),B=!0;var a=f;try{t:{for(M(e),h=n(c);null!==h&&!(h.expirationTime>e&&w());){var s=h.callback;if("function"==typeof s){h.callback=null,f=h.priorityLevel;var l=s(h.expirationTime<=e);if(e=t.unstable_now(),"function"==typeof l){h.callback=l,M(e),r=!0;break t}h===n(c)&&i(c),M(e)}else i(c);h=n(c)}if(null!==h)r=!0;else{var u=n(A);null!==u&&x(b,u.startTime-e),r=!1}}break e}finally{h=null,f=a,B=!1}}}finally{r?o():y=!1}
241}}if("function"==typeof E)o=function(){E(G)};else if("undefined"!=typeof MessageChannel){var D=new MessageChannel,T=D.port2;D.port1.onmessage=G,o=function(){T.postMessage(null)}}else o=function(){g(G,0)};function x(e,r){F=g(function(){e(t.unstable_now())},r)}t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(e){e.callback=null},t.unstable_forceFrameRate=function(e){0>e||125<e?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):I=0<e?Math.floor(1e3/e):5},t.unstable_getCurrentPriorityLevel=function(){return f},t.unstable_next=function(e){switch(f){case 1:case 2:case 3:var t=3;break;default:t=f}var r=f;f=t;try{return e()}finally{f=r}},t.unstable_requestPaint=function(){C=!0},t.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var r=f;f=e;try{return t()}finally{f=r}},t.unstable_scheduleCallback=function(e,i,a){var s=t.unstable_now();switch(a="object"==typeof a&&null!==a&&"number"==typeof(a=a.delay)&&0<a?s+a:s,e){case 1:var l=-1;break;case 2:l=250;break;case 5:l=0x3fffffff;break;case 4:l=1e4;break;default:l=5e3}return l=a+l,e={id:d++,callback:i,priorityLevel:e,startTime:a,expirationTime:l,sortIndex:-1},a>s?(e.sortIndex=a,r(A,e),null===n(c)&&e===n(A)&&(p?(v(F),F=-1):p=!0,x(b,a-s))):(e.sortIndex=l,r(c,e),m||B||(m=!0,y||(y=!0,o()))),e},t.unstable_shouldYield=w,t.unstable_wrapCallback=function(e){var t=f;return function(){var r=f;f=t;try{return e.apply(this,arguments)}finally{f=r}}}},6750:(e,t,r)=>{r.d(t,{N:()=>m});var n=r(6014),i=r(3388),a=r(2115),o=r(5339),s=Object.defineProperty;class l{constructor(){((e,t,r)=>((e,t,r)=>t in e?s(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r)(e,"symbol"!=typeof t?t+"":t,r))(this,"_listeners")}addEventListener(e,t){void 0===this._listeners&&(this._listeners={});let r=this._listeners;void 0===r[e]&&(r[e]=[]),-1===r[e].indexOf(t)&&r[e].push(t)}hasEventListener(e,t){if(void 0===this._listeners)return!1;let r=this._listeners;return void 0!==r[e]&&-1!==r[e].indexOf(t)}removeEventListener(e,t){if(void 0===this._listeners)return;let r=this._listeners[e];if(void 0!==r){let e=r.indexOf(t);-1!==e&&r.splice(e,1)}}dispatchEvent(e){if(void 0===this._listeners)return;let t=this._listeners[e.type];if(void 0!==t){e.target=this;let r=t.slice(0);for(let t=0,n=r.length;t<n;t++)r[t].call(this,e);e.target=null}}}var u=Object.defineProperty,c=(e,t,r)=>(((e,t,r)=>t in e?u(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r)(e,"symbol"!=typeof t?t+"":t,r),r);let A=new o.RlV,d=new o.Zcv,h=Math.cos(Math.PI/180*70),f=(e,t)=>(e%t+t)%t;class B extends l{constructor(e,t){super(),c(this,"object"),c(this,"domElement"),c(this,"enabled",!0),c(this,"target",new o.Pq0),c(this,"minDistance",0),c(this,"maxDistance",1/0),c(this,"minZoom",0),c(this,"maxZoom",1/0),c(this,"minPolarAngle",0),c(this,"maxPolarAngle",Math.PI),c(this,"minAzimuthAngle",-1/0),c(this,"maxAzimuthAngle",1/0),c(this,"enableDamping",!1),c(this,"dampingFactor",.05),c(this,"enableZoom",!0),c(this,"zoomSpeed",1),c(this,"enableRotate",!0),c(this,"rotateSpeed",1),c(this,"enablePan",!0),c(this,"panSpeed",1),c(this,"screenSpacePanning",!0),c(this,"keyPanSpeed",7),c(this,"zoomToCursor",!1),c(this,"autoRotate",!1),c(this,"autoRotateSpeed",2),c(this,"reverseOrbit",!1),c(this,"reverseHorizontalOrbit",!1),c(this,"reverseVerticalOrbit",!1),c(this,"keys",{LEFT:"ArrowLeft",UP:"ArrowUp",RIGHT:"ArrowRight",BOTTOM:"ArrowDown"}),c(this,"mouseButtons",{LEFT:o.kBv.ROTATE,MIDDLE:o.kBv.DOLLY,RIGHT:o.kBv.PAN}),c(this,"touches",{ONE:o.wtR.ROTATE,TWO:o.wtR.DOLLY_PAN}),c(this,"target0"),c(this,"position0"),c(this,"zoom0"),c(this,"_domElementKeyEvents",null),c(this,"getPolarAngle"),c(this,"getAzimuthalAngle"),c(this,"setPolarAngle"),c(this,"setAzimuthalAngle"),c(this,"getDistance"),c(this,"getZoomScale"),c(this,"listenToKeyEvents"),c(this,"stopListenToKeyEvents"),c(this,"saveState"),c(this,"reset"),c(this,"update"),c(this,"connect"),c(this,"dispose"),c(this,"dollyIn"),c(this,"dollyOut"),c(this,"getScale"),c(this,"setScale"),this.object=e,this.domElement=t,this.target0=this.target.clone(),this.position0=this.object.position.clone(),this.zoom0=this.object.zoom,this.getPolarAngle=()=>B.phi,this.getAzimuthalAngle=()=>B.theta,this.setPolarAngle=e=>{let t=f(e,2*Math.PI),n=B.phi;n<0&&(n+=2*Math.PI),t<0&&(t+=2*Math.PI);let i=Math.abs(t-n);2*Math.PI-i<i&&(t<n?t+=2*Math.PI:n+=2*Math.PI),m.phi=t-n,r.update(
241)},this.setAzimuthalAngle=e=>{let t=f(e,2*Math.PI),n=B.theta;n<0&&(n+=2*Math.PI),t<0&&(t+=2*Math.PI);let i=Math.abs(t-n);2*Math.PI-i<i&&(t<n?t+=2*Math.PI:n+=2*Math.PI),m.theta=t-n,r.update()},this.getDistance=()=>r.object.position.distanceTo(r.target),this.listenToKeyEvents=e=>{e.addEventListener("keydown",ee),this._domElementKeyEvents=e},this.stopListenToKeyEvents=()=>{this._domElementKeyEvents.removeEventListener("keydown",ee),this._domElementKeyEvents=null},this.saveState=()=>{r.target0.copy(r.target),r.position0.copy(r.object.position),r.zoom0=r.object.zoom},this.reset=()=>{r.target.copy(r.target0),r.object.position.copy(r.position0),r.object.zoom=r.zoom0,r.object.updateProjectionMatrix(),r.dispatchEvent(n),r.update(),l=s.NONE},this.update=(()=>{let t=new o.Pq0,i=new o.Pq0(0,1,0),a=new o.PTz().setFromUnitVectors(e.up,i),c=a.clone().invert(),f=new o.Pq0,g=new o.PTz,v=2*Math.PI;return function(){let E=r.object.position;a.setFromUnitVectors(e.up,i),c.copy(a).invert(),t.copy(E).sub(r.target),t.applyQuaternion(a),B.setFromVector3(t),r.autoRotate&&l===s.NONE&&P(2*Math.PI/60/60*r.autoRotateSpeed),r.enableDamping?(B.theta+=m.theta*r.dampingFactor,B.phi+=m.phi*r.dampingFactor):(B.theta+=m.theta,B.phi+=m.phi);let M=r.minAzimuthAngle,b=r.maxAzimuthAngle;isFinite(M)&&isFinite(b)&&(M<-Math.PI?M+=v:M>Math.PI&&(M-=v),b<-Math.PI?b+=v:b>Math.PI&&(b-=v),M<=b?B.theta=Math.max(M,Math.min(b,B.theta)):B.theta=B.theta>(M+b)/2?Math.max(M,B.theta):Math.min(b,B.theta)),B.phi=Math.max(r.minPolarAngle,Math.min(r.maxPolarAngle,B.phi)),B.makeSafe(),!0===r.enableDamping?r.target.addScaledVector(C,r.dampingFactor):r.target.add(C),r.zoomToCursor&&D||r.object.isOrthographicCamera?B.radius=k(B.radius):B.radius=k(B.radius*p),t.setFromSpherical(B),t.applyQuaternion(c),E.copy(r.target).add(t),r.object.matrixAutoUpdate||r.object.updateMatrix(),r.object.lookAt(r.target),!0===r.enableDamping?(m.theta*=1-r.dampingFactor,m.phi*=1-r.dampingFactor,C.multiplyScalar(1-r.dampingFactor)):(m.set(0,0,0),C.set(0,0,0));let y=!1;if(r.zoomToCursor&&D){let n=null;if(r.object instanceof o.ubm&&r.object.isPerspectiveCamera){let e=t.length();n=k(e*p);let i=e-n;r.object.position.addScaledVector(w,i),r.object.updateMatrixWorld()}else if(r.object.isOrthographicCamera){let e=new o.Pq0(G.x,G.y,0);e.unproject(r.object),r.object.zoom=Math.max(r.minZoom,Math.min(r.maxZoom,r.object.zoom/p)),r.object.updateProjectionMatrix(),y=!0;let i=new o.Pq0(G.x,G.y,0);i.unproject(r.object),r.object.position.sub(i).add(e),r.object.updateMatrixWorld(),n=t.length()}else console.warn("WARNING: OrbitControls.js encountered an unknown camera type - zoom to cursor disabled."),r.zoomToCursor=!1;null!==n&&(r.screenSpacePanning?r.target.set(0,0,-1).transformDirection(r.object.matrix).multiplyScalar(n).add(r.object.position):(A.origin.copy(r.object.position),A.direction.set(0,0,-1).transformDirection(r.object.matrix),Math.abs(r.object.up.dot(A.direction))<h?e.lookAt(r.target):(d.setFromNormalAndCoplanarPoint(r.object.up,r.target),A.intersectPlane(d,r.target))))}else r.object instanceof o.qUd&&r.object.isOrthographicCamera&&(y=1!==p)&&(r.object.zoom=Math.max(r.minZoom,Math.min(r.maxZoom,r.object.zoom/p)),r.object.updateProjectionMatrix());return p=1,D=!1,!!(y||f.distanceToSquared(r.object.position)>u||8*(1-g.dot(r.object.quaternion))>u)&&(r.dispatchEvent(n),f.copy(r.object.position),g.copy(r.object.quaternion),y=!1,!0)}})(),this.connect=e=>{r.domElement=e,r.domElement.style.touchAction="none",r.domElement.addEventListener("contextmenu",et),r.domElement.addEventListener("pointerdown",z),r.domElement.addEventListener("pointercancel",q),r.domElement.addEventListener("wheel",$)},this.dispose=()=>{var e,t,n,i,a,o;r.domElement&&(r.domElement.style.touchAction="auto"),null==(e=r.domElement)||e.removeEventListener("contextmenu",et),null==(t=r.domElement)||t.removeEventListener("pointerdown",z),null==(n=r.domElement)||n.removeEventListener("pointercancel",q),null==(i=r.domElement)||i.removeEventListener("wheel",$),null==(a=r.domElement)||a.ownerDocument.removeEventListener("pointermove",V),null==(o=r.domElement)||o.ownerDocument.removeEventListener("pointerup",q),null!==r._domElementKeyEvents&&r._domElementKeyEvents.removeEventListener("keydown",ee)};let r=this,n={type:"change"},i={type:"start"},a={type:"end"},s={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_PAN:4,TOUCH_DOLLY_PAN:5,TOUCH_DOLLY_ROTATE:6},l=s.NONE,u=1e-6,B=new o.YHV,m=new o.YHV,p=1,C=new o.Pq0,g=new o.I9Y,v=new o.I9Y,E=new o.I9Y,M=new o.I9Y,b=new o.I9Y,y=new o.I9Y,F=new o.I9Y,I=new o.I9Y,R=new o.I9Y,w=new o.Pq0,G=new o.I9Y,D=!1,T=[],x={};function H(){return Math.pow(.95,r.zoomSpeed)}function P(e){r.reverseOrbit||r.reverseHorizontalOrbit?m.theta+=e:m.theta-=e}function S(e){r.reverseOrbit||r.reverseVerticalOrbit?m.phi+=e:m.phi-=e}let O=(()=>{let e=new o.Pq0;return function(t,r){e.setFromMatrixColumn(r,0),e.multiplyScalar(-t),C.add(e)}})(),U=(()=>{let e=new o.Pq0;return function(t,n){!0===r.screenSpacePanning?e.setFromMatrixColumn(n,1):(e.setFromMatrixColumn(n,0),e.crossVectors(r.object.up,e)),e.multiplyScalar(t),C.add(e)}})(),J=(()=>{let e=new o.Pq0;return function(t,n){let i=r.domElement;if(i&&r.object instanceof o.ubm&&r.object.isPerspectiveCamera){let a=r.object.position;e.copy(a).sub(r.target);let o=e.length();
241O(2*t*(o*=Math.tan(r.object.fov/2*Math.PI/180))/i.clientHeight,r.object.matrix),U(2*n*o/i.clientHeight,r.object.matrix)}else i&&r.object instanceof o.qUd&&r.object.isOrthographicCamera?(O(t*(r.object.right-r.object.left)/r.object.zoom/i.clientWidth,r.object.matrix),U(n*(r.object.top-r.object.bottom)/r.object.zoom/i.clientHeight,r.object.matrix)):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled."),r.enablePan=!1)}})();function L(e){r.object instanceof o.ubm&&r.object.isPerspectiveCamera||r.object instanceof o.qUd&&r.object.isOrthographicCamera?p=e:(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),r.enableZoom=!1)}function _(e){if(!r.zoomToCursor||!r.domElement)return;D=!0;let t=r.domElement.getBoundingClientRect(),n=e.clientX-t.left,i=e.clientY-t.top,a=t.width,o=t.height;G.x=n/a*2-1,G.y=-(i/o*2)+1,w.set(G.x,G.y,1).unproject(r.object).sub(r.object.position).normalize()}function k(e){return Math.max(r.minDistance,Math.min(r.maxDistance,e))}function K(e){g.set(e.clientX,e.clientY)}function N(e){M.set(e.clientX,e.clientY)}function j(){if(1==T.length)g.set(T[0].pageX,T[0].pageY);else{let e=.5*(T[0].pageX+T[1].pageX),t=.5*(T[0].pageY+T[1].pageY);g.set(e,t)}}function Q(){if(1==T.length)M.set(T[0].pageX,T[0].pageY);else{let e=.5*(T[0].pageX+T[1].pageX),t=.5*(T[0].pageY+T[1].pageY);M.set(e,t)}}function X(){let e=T[0].pageX-T[1].pageX,t=T[0].pageY-T[1].pageY,r=Math.sqrt(e*e+t*t);F.set(0,r)}function Y(e){if(1==T.length)v.set(e.pageX,e.pageY);else{let t=en(e),r=.5*(e.pageX+t.x),n=.5*(e.pageY+t.y);v.set(r,n)}E.subVectors(v,g).multiplyScalar(r.rotateSpeed);let t=r.domElement;t&&(P(2*Math.PI*E.x/t.clientHeight),S(2*Math.PI*E.y/t.clientHeight)),g.copy(v)}function Z(e){if(1==T.length)b.set(e.pageX,e.pageY);else{let t=en(e),r=.5*(e.pageX+t.x),n=.5*(e.pageY+t.y);b.set(r,n)}y.subVectors(b,M).multiplyScalar(r.panSpeed),J(y.x,y.y),M.copy(b)}function W(e){var t;let n=en(e),i=e.pageX-n.x,a=e.pageY-n.y,o=Math.sqrt(i*i+a*a);I.set(0,o),R.set(0,Math.pow(I.y/F.y,r.zoomSpeed)),t=R.y,L(p/t),F.copy(I)}function z(e){var t,n,a;!1!==r.enabled&&(0===T.length&&(null==(t=r.domElement)||t.ownerDocument.addEventListener("pointermove",V),null==(n=r.domElement)||n.ownerDocument.addEventListener("pointerup",q)),a=e,T.push(a),"touch"===e.pointerType?function(e){switch(er(e),T.length){case 1:switch(r.touches.ONE){case o.wtR.ROTATE:if(!1===r.enableRotate)return;j(),l=s.TOUCH_ROTATE;break;case o.wtR.PAN:if(!1===r.enablePan)return;Q(),l=s.TOUCH_PAN;break;default:l=s.NONE}break;case 2:switch(r.touches.TWO){case o.wtR.DOLLY_PAN:if(!1===r.enableZoom&&!1===r.enablePan)return;r.enableZoom&&X(),r.enablePan&&Q(),l=s.TOUCH_DOLLY_PAN;break;case o.wtR.DOLLY_ROTATE:if(!1===r.enableZoom&&!1===r.enableRotate)return;r.enableZoom&&X(),r.enableRotate&&j(),l=s.TOUCH_DOLLY_ROTATE;break;default:l=s.NONE}break;default:l=s.NONE}l!==s.NONE&&r.dispatchEvent(i)}(e):function(e){let t;switch(e.button){case 0:t=r.mouseButtons.LEFT;break;case 1:t=r.mouseButtons.MIDDLE;break;case 2:t=r.mouseButtons.RIGHT;break;default:t=-1}switch(t){case o.kBv.DOLLY:if(!1===r.enableZoom)return;_(e),F.set(e.clientX,e.clientY),l=s.DOLLY;break;case o.kBv.ROTATE:if(e.ctrlKey||e.metaKey||e.shiftKey){if(!1===r.enablePan)return;N(e),l=s.PAN}else{if(!1===r.enableRotate)return;K(e),l=s.ROTATE}break;case o.kBv.PAN:if(e.ctrlKey||e.metaKey||e.shiftKey){if(!1===r.enableRotate)return;K(e),l=s.ROTATE}else{if(!1===r.enablePan)return;N(e),l=s.PAN}break;default:l=s.NONE}l!==s.NONE&&r.dispatchEvent(i)}(e))}function V(e){!1!==r.enabled&&("touch"===e.pointerType?function(e){switch(er(e),l){case s.TOUCH_ROTATE:if(!1===r.enableRotate)return;Y(e),r.update();break;case s.TOUCH_PAN:if(!1===r.enablePan)return;Z(e),r.update();break;case s.TOUCH_DOLLY_PAN:if(!1===r.enableZoom&&!1===r.enablePan)return;r.enableZoom&&W(e),r.enablePan&&Z(e),r.update();break;case s.TOUCH_DOLLY_ROTATE:if(!1===r.enableZoom&&!1===r.enableRotate)return;r.enableZoom&&W(e),r.enableRotate&&Y(e),r.update();break;default:l=s.NONE}}(e):function(e){if(!1!==r.enabled)switch(l){case s.ROTATE:if(!1===r.enableRotate)return;v.set(e.clientX,e.clientY),E.subVectors(v,g).multiplyScalar(r.rotateSpeed);let t=r.domElement;t&&(P(2*Math.PI*E.x/t.clientHeight),S(2*Math.PI*E.y/t.clientHeight)),g.copy(v),r.update(
241);break;case s.DOLLY:var n,i;if(!1===r.enableZoom)return;(I.set(e.clientX,e.clientY),R.subVectors(I,F),R.y>0)?(n=H(),L(p/n)):R.y<0&&(i=H(),L(p*i)),F.copy(I),r.update();break;case s.PAN:if(!1===r.enablePan)return;b.set(e.clientX,e.clientY),y.subVectors(b,M).multiplyScalar(r.panSpeed),J(y.x,y.y),M.copy(b),r.update()}}(e))}function q(e){var t,n,i;(function(e){delete x[e.pointerId];for(let t=0;t<T.length;t++)if(T[t].pointerId==e.pointerId)return void T.splice(t,1)})(e),0===T.length&&(null==(t=r.domElement)||t.releasePointerCapture(e.pointerId),null==(n=r.domElement)||n.ownerDocument.removeEventListener("pointermove",V),null==(i=r.domElement)||i.ownerDocument.removeEventListener("pointerup",q)),r.dispatchEvent(a),l=s.NONE}function $(e){if(!1!==r.enabled&&!1!==r.enableZoom&&(l===s.NONE||l===s.ROTATE)){var t,n;e.preventDefault(),r.dispatchEvent(i),(_(e),e.deltaY<0)?(t=H(),L(p*t)):e.deltaY>0&&(n=H(),L(p/n)),r.update(),r.dispatchEvent(a)}}function ee(e){if(!1!==r.enabled&&!1!==r.enablePan){let t=!1;switch(e.code){case r.keys.UP:J(0,r.keyPanSpeed),t=!0;break;case r.keys.BOTTOM:J(0,-r.keyPanSpeed),t=!0;break;case r.keys.LEFT:J(r.keyPanSpeed,0),t=!0;break;case r.keys.RIGHT:J(-r.keyPanSpeed,0),t=!0}t&&(e.preventDefault(),r.update())}}function et(e){!1!==r.enabled&&e.preventDefault()}function er(e){let t=x[e.pointerId];void 0===t&&(t=new o.I9Y,x[e.pointerId]=t),t.set(e.pageX,e.pageY)}function en(e){return x[(e.pointerId===T[0].pointerId?T[1]:T[0]).pointerId]}this.dollyIn=(e=H())=>{L(p*e),r.update()},this.dollyOut=(e=H())=>{L(p/e),r.update()},this.getScale=()=>p,this.setScale=e=>{L(e),r.update()},this.getZoomScale=()=>H(),void 0!==t&&this.connect(t),this.update()}}let m=a.forwardRef(({makeDefault:e,camera:t,regress:r,domElement:o,enableDamping:s=!0,keyEvents:l=!1,onChange:u,onStart:c,onEnd:A,...d},h)=>{let f=(0,i.C)(e=>e.invalidate),m=(0,i.C)(e=>e.camera),p=(0,i.C)(e=>e.gl),C=(0,i.C)(e=>e.events),g=(0,i.C)(e=>e.setEvents),v=(0,i.C)(e=>e.set),E=(0,i.C)(e=>e.get),M=(0,i.C)(e=>e.performance),b=t||m,y=o||C.connected||p.domElement,F=a.useMemo(()=>new B(b),[b]);return(0,i.D)(()=>{F.enabled&&F.update()},-1),a.useEffect(()=>(l&&F.connect(!0===l?y:l),F.connect(y),()=>void F.dispose()),[l,y,r,F,f]),a.useEffect(()=>{let e=e=>{f(),r&&M.regress(),u&&u(e)},t=e=>{c&&c(e)},n=e=>{A&&A(e)};return F.addEventListener("change",e),F.addEventListener("start",t),F.addEventListener("end",n),()=>{F.removeEventListener("start",t),F.removeEventListener("end",n),F.removeEventListener("change",e)}},[u,c,A,F,f,g]),a.useEffect(()=>{if(e){let e=E().controls;return v({controls:F}),()=>v({controls:e})}},[e,F]),a.createElement("primitive",(0,n.A)({ref:h,object:F,enableDamping:s},d))})},8828:(e,t,r)=>{e.exports=r(3654)},9914:(e,t,r)=>{e.exports=r(6451)}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.