@loaders.gl/tiles 5.0.0-alpha.4 → 5.0.0-alpha.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/dist/dist.dev.js +476 -1643
  2. package/dist/dist.min.js +2 -2
  3. package/dist/index.cjs +223 -11
  4. package/dist/index.cjs.map +1 -1
  5. package/dist/tileset-2d/adapter.d.ts +2 -3
  6. package/dist/tileset-2d/adapter.d.ts.map +1 -1
  7. package/dist/tileset-2d/tileset-2d.d.ts +2 -3
  8. package/dist/tileset-2d/tileset-2d.d.ts.map +1 -1
  9. package/dist/tileset-2d/tileset-2d.js.map +1 -1
  10. package/dist/tileset-3d/common/indexed-archive-tileset-source.d.ts +3 -3
  11. package/dist/tileset-3d/common/indexed-archive-tileset-source.d.ts.map +1 -1
  12. package/dist/tileset-3d/common/indexed-archive-tileset-source.js.map +1 -1
  13. package/dist/tileset-3d/common/tile-3d.d.ts.map +1 -1
  14. package/dist/tileset-3d/common/tile-3d.js +4 -2
  15. package/dist/tileset-3d/common/tile-3d.js.map +1 -1
  16. package/dist/tileset-3d/common/tileset-3d.d.ts +30 -2
  17. package/dist/tileset-3d/common/tileset-3d.d.ts.map +1 -1
  18. package/dist/tileset-3d/common/tileset-3d.js +4 -0
  19. package/dist/tileset-3d/common/tileset-3d.js.map +1 -1
  20. package/dist/tileset-3d/common/tileset-source.d.ts +8 -8
  21. package/dist/tileset-3d/common/tileset-source.d.ts.map +1 -1
  22. package/dist/tileset-3d/common/tileset-source.js.map +1 -1
  23. package/dist/tileset-3d/common/tileset-traverser.d.ts +14 -0
  24. package/dist/tileset-3d/common/tileset-traverser.d.ts.map +1 -1
  25. package/dist/tileset-3d/common/tileset-traverser.js +17 -2
  26. package/dist/tileset-3d/common/tileset-traverser.js.map +1 -1
  27. package/dist/tileset-3d/format-3d-tiles/tiles-3d-source.d.ts +2 -2
  28. package/dist/tileset-3d/format-3d-tiles/tiles-3d-source.d.ts.map +1 -1
  29. package/dist/tileset-3d/format-3d-tiles/tiles-3d-source.js.map +1 -1
  30. package/dist/tileset-3d/format-3d-tiles/tileset-3d-traverser.d.ts +65 -0
  31. package/dist/tileset-3d/format-3d-tiles/tileset-3d-traverser.d.ts.map +1 -1
  32. package/dist/tileset-3d/format-3d-tiles/tileset-3d-traverser.js +209 -0
  33. package/dist/tileset-3d/format-3d-tiles/tileset-3d-traverser.js.map +1 -1
  34. package/dist/tileset-3d/format-i3s/i3s-source.d.ts +5 -3
  35. package/dist/tileset-3d/format-i3s/i3s-source.d.ts.map +1 -1
  36. package/dist/tileset-3d/format-i3s/i3s-source.js +14 -7
  37. package/dist/tileset-3d/format-i3s/i3s-source.js.map +1 -1
  38. package/package.json +13 -13
  39. package/src/tileset-2d/adapter.ts +2 -3
  40. package/src/tileset-2d/tileset-2d.ts +2 -3
  41. package/src/tileset-3d/common/indexed-archive-tileset-source.ts +4 -9
  42. package/src/tileset-3d/common/tile-3d.ts +6 -2
  43. package/src/tileset-3d/common/tileset-3d.ts +34 -2
  44. package/src/tileset-3d/common/tileset-source.ts +8 -12
  45. package/src/tileset-3d/common/tileset-traverser.ts +28 -2
  46. package/src/tileset-3d/format-3d-tiles/tiles-3d-source.ts +4 -4
  47. package/src/tileset-3d/format-3d-tiles/tileset-3d-traverser.ts +236 -0
  48. package/src/tileset-3d/format-i3s/i3s-source.ts +25 -9
package/dist/dist.min.js CHANGED
@@ -4,9 +4,9 @@
4
4
  else if (typeof define === 'function' && define.amd) define([], factory);
5
5
  else if (typeof exports === 'object') exports['loaders'] = factory();
6
6
  else root['loaders'] = factory();})(globalThis, function () {
7
- "use strict";var __exports__=(()=>{var A0=Object.create;var Wr=Object.defineProperty;var I0=Object.getOwnPropertyDescriptor;var O0=Object.getOwnPropertyNames;var N0=Object.getPrototypeOf,L0=Object.prototype.hasOwnProperty;var G0=(e,t)=>()=>{try{return t||e((t={exports:{}}).exports,t),t.exports}catch(r){throw t=0,r}},$e=(e,t)=>{for(var r in t)Wr(e,r,{get:t[r],enumerable:!0})},jr=(e,t,r,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of O0(t))!L0.call(e,i)&&i!==r&&Wr(e,i,{get:()=>t[i],enumerable:!(s=I0(t,i))||s.enumerable});return e},Hr=(e,t,r)=>(jr(e,t,"default"),r&&jr(r,t,"default")),z0=(e,t,r)=>(r=e!=null?A0(N0(e)):{},jr(t||!e||!e.__esModule?Wr(r,"default",{value:e,enumerable:!0}):r,e)),q0=e=>jr(Wr({},"__esModule",{value:!0}),e);var Ro=G0((D_,bo)=>{bo.exports=globalThis.loaders});var Vr={};$e(Vr,{I3SSource:()=>mi,I3SSpatialTransformer:()=>Ye,ImageSet:()=>pi,IndexedArchiveTilesetSource:()=>Ls,LOD_METRIC_TYPE:()=>Ce,PointCloudTile:()=>Ze,PointCloudTileset:()=>Mi,RasterSet:()=>gi,STRATEGY_DEFAULT:()=>Fr,STRATEGY_NEVER:()=>Eo,STRATEGY_REPLACE:()=>wo,SharedTile2DHeader:()=>Me,SpatialCoordinateTransformer:()=>te,TILESET_TYPE:()=>lt,TILE_CONTENT_STATE:()=>it,TILE_REFINEMENT:()=>st,TILE_TYPE:()=>qt,Tile3D:()=>bt,Tiles3DSource:()=>Vs,Tileset2D:()=>Dr,Tileset3D:()=>Ns,TilesetCache:()=>Re,TilesetTraverser:()=>Bt,applyTilesetSpatialOptions:()=>pr,calculateTransformProps:()=>bs,createBoundingVolume:()=>Ae,createImplicitSubtreeReference:()=>qn,createTilesetSpatialReference:()=>Pt,get3DTilesSpatialReference:()=>Ds,getFrameState:()=>Rs,getGeoidModel:()=>ui,getI3SSpatialReference:()=>Bs,getLodStatus:()=>zs,getSpatialCoordinateFrame:()=>Ht,isTileset3DSource:()=>Os,markTilesetSpatialReferenceTransformed:()=>Is,materializeImplicitSubtree:()=>Fs,registerGeoidModel:()=>_o,registerGeoidModelFromPgm:()=>n0,registerSpatialCrs:()=>s0,registerSpatialDatumGrid:()=>i0,replaceImplicitUrlTemplate:()=>Us});Hr(Vr,z0(Ro(),1));var U={};$e(U,{EPSILON1:()=>B0,EPSILON10:()=>Y0,EPSILON11:()=>Z0,EPSILON12:()=>$0,EPSILON13:()=>Q0,EPSILON14:()=>Yr,EPSILON15:()=>X0,EPSILON16:()=>K0,EPSILON17:()=>J0,EPSILON18:()=>tu,EPSILON19:()=>eu,EPSILON2:()=>D0,EPSILON20:()=>ru,EPSILON3:()=>F0,EPSILON4:()=>U0,EPSILON5:()=>V0,EPSILON6:()=>k0,EPSILON7:()=>j0,EPSILON8:()=>W0,EPSILON9:()=>H0,PI:()=>ye,PI_OVER_FOUR:()=>iu,PI_OVER_SIX:()=>nu,PI_OVER_TWO:()=>su,TWO_PI:()=>Qe});var B0=.1,D0=.01,F0=.001,U0=1e-4,V0=1e-5,k0=1e-6,j0=1e-7,W0=1e-8,H0=1e-9,Y0=1e-10,Z0=1e-11,$0=1e-12,Q0=1e-13,Yr=1e-14,X0=1e-15,K0=1e-16,J0=1e-17,tu=1e-18,eu=1e-19,ru=1e-20,su=Math.PI/2,iu=Math.PI/4,nu=Math.PI/6,ye=Math.PI,Qe=Math.PI*2;var ou=1/Math.PI*180,au=1/180*Math.PI,hu={EPSILON:1e-12,debug:!1,precision:4,printTypes:!1,printDegrees:!1,printRowMajor:!0,_cartographicRadians:!1};globalThis.mathgl=globalThis.mathgl||{config:{...hu}};var k=globalThis.mathgl.config;function wi(e,{precision:t=k.precision}={}){return e=lu(e),`${parseFloat(e.toPrecision(t))}`}function vt(e){return Array.isArray(e)||ArrayBuffer.isView(e)&&!(e instanceof DataView)}function Ti(e){return Zr(e)}function Pi(e){return ct(e)}function Zr(e,t){return Ri(e,r=>r*au,t)}function ct(e,t){return Ri(e,r=>r*ou,t)}function Co(e,t){return Math.sign(e)===Math.sign(t)&&Math.abs(e)<Math.abs(t)?e:(e%t+t)%t}function bi(e,t){switch(t){case"negative-pi-to-pi":return cu(e);case"zero-to-two-pi":return Ao(e);default:return e}}function Ao(e){if(e>=0&&e<=Qe)return e;let t=Co(e,Qe);return Math.abs(t)<1e-14&&Math.abs(e)>1e-14?Qe:t}function cu(e){return e>=-ye&&e<=ye?e:Ao(e+ye)-ye}function Xe(e,t,r){return Ri(e,s=>Math.max(t,Math.min(r,s)))}function Mt(e,t,r){let s=k.EPSILON;r&&(k.EPSILON=r);try{if(e===t)return!0;if(vt(e)&&vt(t)){if(e.length!==t.length)return!1;for(let i=0;i<e.length;++i)if(!Mt(e[i],t[i]))return!1;return!0}return e&&e.equals?e.equals(t):t&&t.equals?t.equals(e):typeof e=="number"&&typeof t=="number"?Math.abs(e-t)<=k.EPSILON*Math.max(1,Math.abs(e),Math.abs(t)):!1}finally{k.EPSILON=s}}function lu(e){return Math.round(e/k.EPSILON)*k.EPSILON}function uu(e){return e.clone?e.clone():new Array(e.length)}function Ri(e,t,r){if(vt(e)){let s=e;r=r||uu(s);for(let i=0;i<r.length&&i<s.length;++i){let n=typeof e=="number"?e:e[i];r[i]=t(n,i,r)}return r}return t(e)}var ee=class extends Array{clone(){return new this.constructor().copy(this)}fromArray(t,r=0){for(let s=0;s<this.ELEMENTS;++s)this[s]=t[s+r];return this.check()}toArray(t=[],r=0){for(let s=0;s<this.ELEMENTS;++s)t[r+s]=this[s];return t}toObject(t){return t}from(t){return Array.isArray(t)?this.copy(t):this.fromObject(t)}to(t){return t===this?this:vt(t)?this.toArray(t):this.toObject(t)}toTarget(t){return t?this.to(t):this}toFloat32Array(){return new Float32Array(this)}toString(){return this.formatString(k)}formatString(t){let r="";for(let s=0;s<this.ELEMENTS;++s)r+=(s>0?", ":"")+wi(this[s],t);return`${t.printTypes?this.constructor.name:""}[${r}]`}equals(t){if(!t||this.length!==t.length)return!1;for(let r=0;r<this.ELEMENTS;++r)if(!Mt(this[r],t[r]))return!1;return!0}exactEquals(t){if(!t||this.length!==t.length)return!1;for(let r=0;r<this.ELEMENTS;++r)if(this[r]!==t[r])return!1;return!0}negate(){for(let t=0;t<this.ELEMENTS;++t)this[t]=-this[t];return this.check()}lerp(t,r,s){if(s===void 0)return this.lerp(this,t,r);for(let i=0;i<this.ELEMENTS;++i){let n=t[i],o=typeof r=="number"?r:r[i];this[i]=n+s*(o-n)}return this.check()}min(t){for(let r=0;r<this.ELEMENTS;++r)this[r]=Math.min(t[r],this[r]);return this.check()}max(t){for(let r=0;r<this.ELEMENTS;++r)this[r]=Math.max(t[r],this[r]);return this.check()}clamp(t,r){for(let s=0;s<this.ELEMENTS;++s)this[s]=Math.min(Math.max(this[s],t[s]),r[s]);return this.check()}add(...t){for(let r of t)for(let s=0;s<this.ELEMENTS;++s)this[s]+=r[s];return this.check()}subtract(...t){for(let r of t)for(let s=0;s<this.ELEMENTS;++s)this[s]-=r[s];return this.check()}scale(t){if(typeof t=="number")for(let r=0;r<this.ELEMENTS;++r)this[r]*=t;else for(let r=0;r<this.ELEMENTS&&r<t.length;++r)this[r]*=t[r];return this.check()}multiplyByScalar(t){for(let r=0;r<this.ELEMENTS;++r)this[r]*=t;return this.check()}check(){if(k.debug&&!this.validate())throw new Error(`math.gl: ${this.constructor.name} some fields set to invalid numbers'`);return this}validate(){let t=this.length===this.ELEMENTS;for(let r=0;r<this.ELEMENTS;++r)t=t&&Number.isFinite(this[r]);return t}sub(t){return this.subtract(t)}setScalar(t){for(let r=0;r<this.ELEMENTS;++r)this[r]=t;return this.check()}addScalar(t){for(let r=0;r<this.ELEMENTS;++r)this[r]+=t;return this.check()}subScalar(t){return this.addScalar(-t)}multiplyScalar(t){for(let r=0;r<this.ELEMENTS;++r)this[r]*=t;return this.check()}divideScalar(t){return this.multiplyByScalar(1/t)}clampScalar(t,r){for(let s=0;s<this.ELEMENTS;++s)this[s]=Math.min(Math.max(this[s],t),r);return this.check()}get elements(){return this}};function fu(e,t){if(e.length!==t)return!1;for(let r=0;r<e.length;++r)if(!Number.isFinite(e[r]))return!1;return!0}function G(e){if(!Number.isFinite(e))throw new Error(`Invalid number ${JSON.stringify(e)}`);return e}function re(e,t,r=""){if(k.debug&&!fu(e,t))throw new Error(`math.gl: ${r} some fields set to invalid numbers'`);return e}var Se=class extends ee{toString(){let t="[";if(k.printRowMajor){t+="row-major:";for(let r=0;r<this.RANK;++r)for(let s=0;s<this.RANK;++s)t+=` ${this[s*this.RANK+r]}`}else{t+="column-major:";for(let r=0;r<this.ELEMENTS;++r)t+=` ${this[r]}`}return t+="]",t}getElementIndex(t,r){return r*this.RANK+t}getElement(t,r){return this[r*this.RANK+t]}setElement(t,r,s){return this[r*this.RANK+t]=G(s),this}getColumn(t,r=new Array(this.RANK).fill(-0)){let s=t*this.RANK;for(let i=0;i<this.RANK;++i)r[i]=this[s+i];return r}setColumn(t,r){let s=t*this.RANK;for(let i=0;i<this.RANK;++i)this[s+i]=r[i];return this}};function J(e,t){if(!e)throw new Error(`math.gl assertion ${t}`)}var se=class extends ee{get x(){return this[0]}set x(t){this[0]=G(t)}get y(){return this[1]}set y(t){this[1]=G(t)}len(){return Math.sqrt(this.lengthSquared())}magnitude(){return this.len()}lengthSquared(){let t=0;for(let r=0;r<this.ELEMENTS;++r)t+=this[r]*this[r];return t}magnitudeSquared(){return this.lengthSquared()}distance(t){return Math.sqrt(this.distanceSquared(t))}distanceSquared(t){let r=0;for(let s=0;s<this.ELEMENTS;++s){let i=this[s]-t[s];r+=i*i}return G(r)}dot(t){let r=0;for(let s=0;s<this.ELEMENTS;++s)r+=this[s]*t[s];return G(r)}normalize(){let t=this.magnitude();if(t!==0)for(let r=0;r<this.ELEMENTS;++r)this[r]/=t;return this.check()}multiply(...t){for(let r of t)for(let s=0;s<this.ELEMENTS;++s)this[s]*=r[s];return this.check()}divide(...t){for(let r of t)for(let s=0;s<this.ELEMENTS;++s)this[s]/=r[s];return this.check()}lengthSq(){return this.lengthSquared()}distanceTo(t){return this.distance(t)}distanceToSquared(t){return this.distanceSquared(t)}getComponent(t){return J(t>=0&&t<this.ELEMENTS,"index is out of range"),G(this[t])}setComponent(t,r){return J(t>=0&&t<this.ELEMENTS,"index is out of range"),this[t]=r,this.check()}addVectors(t,r){return this.copy(t).add(r)}subVectors(t,r){return this.copy(t).subtract(r)}multiplyVectors(t,r){return this.copy(t).multiply(r)}addScaledVector(t,r){return this.add(new this.constructor(t).multiplyScalar(r))}};var H=typeof Float32Array<"u"?Float32Array:Array,Ke=Math.random;function ve(e){return e>=0?Math.round(e):e%.5===0?Math.floor(e):Math.round(e)}var eM=Math.PI/180;function mu(){let e=new H(2);return H!==Float32Array&&(e[0]=0,e[1]=0),e}function Io(e,t,r){let s=t[0],i=t[1];return e[0]=r[0]*s+r[2]*i,e[1]=r[1]*s+r[3]*i,e}function Oo(e,t,r){let s=t[0],i=t[1];return e[0]=r[0]*s+r[2]*i+r[4],e[1]=r[1]*s+r[3]*i+r[5],e}function $r(e,t,r){let s=t[0],i=t[1];return e[0]=r[0]*s+r[3]*i+r[6],e[1]=r[1]*s+r[4]*i+r[7],e}function Qr(e,t,r){let s=t[0],i=t[1];return e[0]=r[0]*s+r[4]*i+r[12],e[1]=r[1]*s+r[5]*i+r[13],e}var rM=(function(){let e=mu();return function(t,r,s,i,n,o){let a,h;for(r||(r=2),s||(s=0),i?h=Math.min(i*r+s,t.length):h=t.length,a=s;a<h;a+=r)e[0]=t[a],e[1]=t[a+1],n(e,e,o),t[a]=e[0],t[a+1]=e[1];return t}})();function Xr(e,t,r){let s=t[0],i=t[1],n=r[3]*s+r[7]*i||1;return e[0]=(r[0]*s+r[4]*i)/n,e[1]=(r[1]*s+r[5]*i)/n,e}function Kr(e,t,r){let s=t[0],i=t[1],n=t[2],o=r[3]*s+r[7]*i+r[11]*n||1;return e[0]=(r[0]*s+r[4]*i+r[8]*n)/o,e[1]=(r[1]*s+r[5]*i+r[9]*n)/o,e[2]=(r[2]*s+r[6]*i+r[10]*n)/o,e}function No(e,t,r){let s=t[0],i=t[1];return e[0]=r[0]*s+r[2]*i,e[1]=r[1]*s+r[3]*i,e[2]=t[2],e}function Lo(e,t,r){let s=t[0],i=t[1];return e[0]=r[0]*s+r[2]*i,e[1]=r[1]*s+r[3]*i,e[2]=t[2],e[3]=t[3],e}function Jr(e,t,r){let s=t[0],i=t[1],n=t[2];return e[0]=r[0]*s+r[3]*i+r[6]*n,e[1]=r[1]*s+r[4]*i+r[7]*n,e[2]=r[2]*s+r[5]*i+r[8]*n,e[3]=t[3],e}var Et=class extends se{constructor(t=0,r=0){super(2),vt(t)&&arguments.length===1?this.copy(t):(k.debug&&(G(t),G(r)),this[0]=t,this[1]=r)}set(t,r){return this[0]=t,this[1]=r,this.check()}copy(t){return this[0]=t[0],this[1]=t[1],this.check()}fromObject(t){return k.debug&&(G(t.x),G(t.y)),this[0]=t.x,this[1]=t.y,this.check()}toObject(t){return t.x=this[0],t.y=this[1],t}get ELEMENTS(){return 2}horizontalAngle(){return Math.atan2(this.y,this.x)}verticalAngle(){return Math.atan2(this.x,this.y)}transform(t){return this.transformAsPoint(t)}transformAsPoint(t){return Qr(this,this,t),this.check()}transformAsVector(t){return Xr(this,this,t),this.check()}transformByMatrix3(t){return $r(this,this,t),this.check()}transformByMatrix2x3(t){return Oo(this,this,t),this.check()}transformByMatrix2(t){return Io(this,this,t),this.check()}};var we={};$e(we,{add:()=>Mu,angle:()=>Ni,bezier:()=>Iu,ceil:()=>xu,clone:()=>pu,copy:()=>gu,create:()=>ts,cross:()=>he,dist:()=>Fu,distance:()=>Do,div:()=>Du,divide:()=>Bo,dot:()=>Je,equals:()=>zu,exactEquals:()=>Gu,floor:()=>yu,forEach:()=>ku,fromValues:()=>es,hermite:()=>Au,inverse:()=>bu,len:()=>Li,length:()=>Go,lerp:()=>Ru,max:()=>vu,min:()=>Su,mul:()=>Bu,multiply:()=>qo,negate:()=>Pu,normalize:()=>Ci,random:()=>Ou,rotateX:()=>Ai,rotateY:()=>Ii,rotateZ:()=>Oi,round:()=>Eu,scale:()=>wu,scaleAndAdd:()=>Tu,set:()=>_u,slerp:()=>Cu,sqrDist:()=>Uu,sqrLen:()=>Vu,squaredDistance:()=>Fo,squaredLength:()=>Uo,str:()=>Lu,sub:()=>qu,subtract:()=>zo,transformMat3:()=>tr,transformMat4:()=>ce,transformQuat:()=>er,zero:()=>Nu});function ts(){let e=new H(3);return H!==Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function pu(e){let t=new H(3);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}function Go(e){let t=e[0],r=e[1],s=e[2];return Math.sqrt(t*t+r*r+s*s)}function es(e,t,r){let s=new H(3);return s[0]=e,s[1]=t,s[2]=r,s}function gu(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e}function _u(e,t,r,s){return e[0]=t,e[1]=r,e[2]=s,e}function Mu(e,t,r){return e[0]=t[0]+r[0],e[1]=t[1]+r[1],e[2]=t[2]+r[2],e}function zo(e,t,r){return e[0]=t[0]-r[0],e[1]=t[1]-r[1],e[2]=t[2]-r[2],e}function qo(e,t,r){return e[0]=t[0]*r[0],e[1]=t[1]*r[1],e[2]=t[2]*r[2],e}function Bo(e,t,r){return e[0]=t[0]/r[0],e[1]=t[1]/r[1],e[2]=t[2]/r[2],e}function xu(e,t){return e[0]=Math.ceil(t[0]),e[1]=Math.ceil(t[1]),e[2]=Math.ceil(t[2]),e}function yu(e,t){return e[0]=Math.floor(t[0]),e[1]=Math.floor(t[1]),e[2]=Math.floor(t[2]),e}function Su(e,t,r){return e[0]=Math.min(t[0],r[0]),e[1]=Math.min(t[1],r[1]),e[2]=Math.min(t[2],r[2]),e}function vu(e,t,r){return e[0]=Math.max(t[0],r[0]),e[1]=Math.max(t[1],r[1]),e[2]=Math.max(t[2],r[2]),e}function Eu(e,t){return e[0]=ve(t[0]),e[1]=ve(t[1]),e[2]=ve(t[2]),e}function wu(e,t,r){return e[0]=t[0]*r,e[1]=t[1]*r,e[2]=t[2]*r,e}function Tu(e,t,r,s){return e[0]=t[0]+r[0]*s,e[1]=t[1]+r[1]*s,e[2]=t[2]+r[2]*s,e}function Do(e,t){let r=t[0]-e[0],s=t[1]-e[1],i=t[2]-e[2];return Math.sqrt(r*r+s*s+i*i)}function Fo(e,t){let r=t[0]-e[0],s=t[1]-e[1],i=t[2]-e[2];return r*r+s*s+i*i}function Uo(e){let t=e[0],r=e[1],s=e[2];return t*t+r*r+s*s}function Pu(e,t){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e}function bu(e,t){return e[0]=1/t[0],e[1]=1/t[1],e[2]=1/t[2],e}function Ci(e,t){let r=t[0],s=t[1],i=t[2],n=r*r+s*s+i*i;return n>0&&(n=1/Math.sqrt(n)),e[0]=t[0]*n,e[1]=t[1]*n,e[2]=t[2]*n,e}function Je(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function he(e,t,r){let s=t[0],i=t[1],n=t[2],o=r[0],a=r[1],h=r[2];return e[0]=i*h-n*a,e[1]=n*o-s*h,e[2]=s*a-i*o,e}function Ru(e,t,r,s){let i=t[0],n=t[1],o=t[2];return e[0]=i+s*(r[0]-i),e[1]=n+s*(r[1]-n),e[2]=o+s*(r[2]-o),e}function Cu(e,t,r,s){let i=Math.acos(Math.min(Math.max(Je(t,r),-1),1)),n=Math.sin(i),o=Math.sin((1-s)*i)/n,a=Math.sin(s*i)/n;return e[0]=o*t[0]+a*r[0],e[1]=o*t[1]+a*r[1],e[2]=o*t[2]+a*r[2],e}function Au(e,t,r,s,i,n){let o=n*n,a=o*(2*n-3)+1,h=o*(n-2)+n,c=o*(n-1),l=o*(3-2*n);return e[0]=t[0]*a+r[0]*h+s[0]*c+i[0]*l,e[1]=t[1]*a+r[1]*h+s[1]*c+i[1]*l,e[2]=t[2]*a+r[2]*h+s[2]*c+i[2]*l,e}function Iu(e,t,r,s,i,n){let o=1-n,a=o*o,h=n*n,c=a*o,l=3*n*a,u=3*h*o,f=h*n;return e[0]=t[0]*c+r[0]*l+s[0]*u+i[0]*f,e[1]=t[1]*c+r[1]*l+s[1]*u+i[1]*f,e[2]=t[2]*c+r[2]*l+s[2]*u+i[2]*f,e}function Ou(e,t){t=t===void 0?1:t;let r=Ke()*2*Math.PI,s=Ke()*2-1,i=Math.sqrt(1-s*s)*t;return e[0]=Math.cos(r)*i,e[1]=Math.sin(r)*i,e[2]=s*t,e}function ce(e,t,r){let s=t[0],i=t[1],n=t[2],o=r[3]*s+r[7]*i+r[11]*n+r[15];return o=o||1,e[0]=(r[0]*s+r[4]*i+r[8]*n+r[12])/o,e[1]=(r[1]*s+r[5]*i+r[9]*n+r[13])/o,e[2]=(r[2]*s+r[6]*i+r[10]*n+r[14])/o,e}function tr(e,t,r){let s=t[0],i=t[1],n=t[2];return e[0]=s*r[0]+i*r[3]+n*r[6],e[1]=s*r[1]+i*r[4]+n*r[7],e[2]=s*r[2]+i*r[5]+n*r[8],e}function er(e,t,r){let s=r[0],i=r[1],n=r[2],o=r[3],a=t[0],h=t[1],c=t[2],l=i*c-n*h,u=n*a-s*c,f=s*h-i*a,d=i*f-n*u,m=n*l-s*f,g=s*u-i*l,p=o*2;return l*=p,u*=p,f*=p,d*=2,m*=2,g*=2,e[0]=a+l+d,e[1]=h+u+m,e[2]=c+f+g,e}function Ai(e,t,r,s){let i=[],n=[];return i[0]=t[0]-r[0],i[1]=t[1]-r[1],i[2]=t[2]-r[2],n[0]=i[0],n[1]=i[1]*Math.cos(s)-i[2]*Math.sin(s),n[2]=i[1]*Math.sin(s)+i[2]*Math.cos(s),e[0]=n[0]+r[0],e[1]=n[1]+r[1],e[2]=n[2]+r[2],e}function Ii(e,t,r,s){let i=[],n=[];return i[0]=t[0]-r[0],i[1]=t[1]-r[1],i[2]=t[2]-r[2],n[0]=i[2]*Math.sin(s)+i[0]*Math.cos(s),n[1]=i[1],n[2]=i[2]*Math.cos(s)-i[0]*Math.sin(s),e[0]=n[0]+r[0],e[1]=n[1]+r[1],e[2]=n[2]+r[2],e}function Oi(e,t,r,s){let i=[],n=[];return i[0]=t[0]-r[0],i[1]=t[1]-r[1],i[2]=t[2]-r[2],n[0]=i[0]*Math.cos(s)-i[1]*Math.sin(s),n[1]=i[0]*Math.sin(s)+i[1]*Math.cos(s),n[2]=i[2],e[0]=n[0]+r[0],e[1]=n[1]+r[1],e[2]=n[2]+r[2],e}function Ni(e,t){let r=e[0],s=e[1],i=e[2],n=t[0],o=t[1],a=t[2],h=Math.sqrt((r*r+s*s+i*i)*(n*n+o*o+a*a)),c=h&&Je(e,t)/h;return Math.acos(Math.min(Math.max(c,-1),1))}function Nu(e){return e[0]=0,e[1]=0,e[2]=0,e}function Lu(e){return`vec3(${e[0]}, ${e[1]}, ${e[2]})`}function Gu(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]}function zu(e,t){let r=e[0],s=e[1],i=e[2],n=t[0],o=t[1],a=t[2];return Math.abs(r-n)<=1e-6*Math.max(1,Math.abs(r),Math.abs(n))&&Math.abs(s-o)<=1e-6*Math.max(1,Math.abs(s),Math.abs(o))&&Math.abs(i-a)<=1e-6*Math.max(1,Math.abs(i),Math.abs(a))}var qu=zo,Bu=qo,Du=Bo,Fu=Do,Uu=Fo,Li=Go,Vu=Uo,ku=(function(){let e=ts();return function(t,r,s,i,n,o){let a,h;for(r||(r=3),s||(s=0),i?h=Math.min(i*r+s,t.length):h=t.length,a=s;a<h;a+=r)e[0]=t[a],e[1]=t[a+1],e[2]=t[a+2],n(e,e,o),t[a]=e[0],t[a+1]=e[1],t[a+2]=e[2];return t}})();var Gi=[0,0,0],rs,_=class e extends se{static get ZERO(){return rs||(rs=new e(0,0,0),Object.freeze(rs)),rs}constructor(t=0,r=0,s=0){super(-0,-0,-0),arguments.length===1&&vt(t)?this.copy(t):(k.debug&&(G(t),G(r),G(s)),this[0]=t,this[1]=r,this[2]=s)}set(t,r,s){return this[0]=t,this[1]=r,this[2]=s,this.check()}copy(t){return this[0]=t[0],this[1]=t[1],this[2]=t[2],this.check()}fromObject(t){return k.debug&&(G(t.x),G(t.y),G(t.z)),this[0]=t.x,this[1]=t.y,this[2]=t.z,this.check()}toObject(t){return t.x=this[0],t.y=this[1],t.z=this[2],t}get ELEMENTS(){return 3}get z(){return this[2]}set z(t){this[2]=G(t)}angle(t){return Ni(this,t)}cross(t){return he(this,this,t),this.check()}rotateX({radians:t,origin:r=Gi}){return Ai(this,this,r,t),this.check()}rotateY({radians:t,origin:r=Gi}){return Ii(this,this,r,t),this.check()}rotateZ({radians:t,origin:r=Gi}){return Oi(this,this,r,t),this.check()}transform(t){return this.transformAsPoint(t)}transformAsPoint(t){return ce(this,this,t),this.check()}transformAsVector(t){return Kr(this,this,t),this.check()}transformByMatrix3(t){return tr(this,this,t),this.check()}transformByMatrix2(t){return No(this,this,t),this.check()}transformByQuaternion(t){return er(this,this,t),this.check()}};var ss,is=class e extends se{static get ZERO(){return ss||(ss=new e(0,0,0,0),Object.freeze(ss)),ss}constructor(t=0,r=0,s=0,i=0){super(-0,-0,-0,-0),vt(t)&&arguments.length===1?this.copy(t):(k.debug&&(G(t),G(r),G(s),G(i)),this[0]=t,this[1]=r,this[2]=s,this[3]=i)}set(t,r,s,i){return this[0]=t,this[1]=r,this[2]=s,this[3]=i,this.check()}copy(t){return this[0]=t[0],this[1]=t[1],this[2]=t[2],this[3]=t[3],this.check()}fromObject(t){return k.debug&&(G(t.x),G(t.y),G(t.z),G(t.w)),this[0]=t.x,this[1]=t.y,this[2]=t.z,this[3]=t.w,this}toObject(t){return t.x=this[0],t.y=this[1],t.z=this[2],t.w=this[3],t}get ELEMENTS(){return 4}get z(){return this[2]}set z(t){this[2]=G(t)}get w(){return this[3]}set w(t){this[3]=G(t)}transform(t){return ce(this,this,t),this.check()}transformByMatrix3(t){return Jr(this,this,t),this.check()}transformByMatrix2(t){return Lo(this,this,t),this.check()}transformByQuaternion(t){return er(this,this,t),this.check()}applyMatrix4(t){return t.transform(this,this),this}};function Vo(){let e=new H(9);return H!==Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[5]=0,e[6]=0,e[7]=0),e[0]=1,e[4]=1,e[8]=1,e}function ko(e,t){if(e===t){let r=t[1],s=t[2],i=t[5];e[1]=t[3],e[2]=t[6],e[3]=r,e[5]=t[7],e[6]=s,e[7]=i}else e[0]=t[0],e[1]=t[3],e[2]=t[6],e[3]=t[1],e[4]=t[4],e[5]=t[7],e[6]=t[2],e[7]=t[5],e[8]=t[8];return e}function jo(e,t){let r=t[0],s=t[1],i=t[2],n=t[3],o=t[4],a=t[5],h=t[6],c=t[7],l=t[8],u=l*o-a*c,f=-l*n+a*h,d=c*n-o*h,m=r*u+s*f+i*d;return m?(m=1/m,e[0]=u*m,e[1]=(-l*s+i*c)*m,e[2]=(a*s-i*o)*m,e[3]=f*m,e[4]=(l*r-i*h)*m,e[5]=(-a*r+i*n)*m,e[6]=d*m,e[7]=(-c*r+s*h)*m,e[8]=(o*r-s*n)*m,e):null}function Wo(e){let t=e[0],r=e[1],s=e[2],i=e[3],n=e[4],o=e[5],a=e[6],h=e[7],c=e[8];return t*(c*n-o*h)+r*(-c*i+o*a)+s*(h*i-n*a)}function zi(e,t,r){let s=t[0],i=t[1],n=t[2],o=t[3],a=t[4],h=t[5],c=t[6],l=t[7],u=t[8],f=r[0],d=r[1],m=r[2],g=r[3],p=r[4],M=r[5],x=r[6],S=r[7],v=r[8];return e[0]=f*s+d*o+m*c,e[1]=f*i+d*a+m*l,e[2]=f*n+d*h+m*u,e[3]=g*s+p*o+M*c,e[4]=g*i+p*a+M*l,e[5]=g*n+p*h+M*u,e[6]=x*s+S*o+v*c,e[7]=x*i+S*a+v*l,e[8]=x*n+S*h+v*u,e}function Ho(e,t,r){let s=t[0],i=t[1],n=t[2],o=t[3],a=t[4],h=t[5],c=t[6],l=t[7],u=t[8],f=r[0],d=r[1];return e[0]=s,e[1]=i,e[2]=n,e[3]=o,e[4]=a,e[5]=h,e[6]=f*s+d*o+c,e[7]=f*i+d*a+l,e[8]=f*n+d*h+u,e}function Yo(e,t,r){let s=t[0],i=t[1],n=t[2],o=t[3],a=t[4],h=t[5],c=t[6],l=t[7],u=t[8],f=Math.sin(r),d=Math.cos(r);return e[0]=d*s+f*o,e[1]=d*i+f*a,e[2]=d*n+f*h,e[3]=d*o-f*s,e[4]=d*a-f*i,e[5]=d*h-f*n,e[6]=c,e[7]=l,e[8]=u,e}function qi(e,t,r){let s=r[0],i=r[1];return e[0]=s*t[0],e[1]=s*t[1],e[2]=s*t[2],e[3]=i*t[3],e[4]=i*t[4],e[5]=i*t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e}function Zo(e,t){let r=t[0],s=t[1],i=t[2],n=t[3],o=r+r,a=s+s,h=i+i,c=r*o,l=s*o,u=s*a,f=i*o,d=i*a,m=i*h,g=n*o,p=n*a,M=n*h;return e[0]=1-u-m,e[3]=l-M,e[6]=f+p,e[1]=l+M,e[4]=1-c-m,e[7]=d-g,e[2]=f-p,e[5]=d+g,e[8]=1-c-u,e}var Bi;(function(e){e[e.COL0ROW0=0]="COL0ROW0",e[e.COL0ROW1=1]="COL0ROW1",e[e.COL0ROW2=2]="COL0ROW2",e[e.COL1ROW0=3]="COL1ROW0",e[e.COL1ROW1=4]="COL1ROW1",e[e.COL1ROW2=5]="COL1ROW2",e[e.COL2ROW0=6]="COL2ROW0",e[e.COL2ROW1=7]="COL2ROW1",e[e.COL2ROW2=8]="COL2ROW2"})(Bi||(Bi={}));var ju=Object.freeze([1,0,0,0,1,0,0,0,1]),j=class extends Se{static get IDENTITY(){return Hu()}static get ZERO(){return Wu()}get ELEMENTS(){return 9}get RANK(){return 3}get INDICES(){return Bi}constructor(t,...r){super(-0,-0,-0,-0,-0,-0,-0,-0,-0),arguments.length===1&&Array.isArray(t)?this.copy(t):r.length>0?this.copy([t,...r]):this.identity()}copy(t){return this[0]=t[0],this[1]=t[1],this[2]=t[2],this[3]=t[3],this[4]=t[4],this[5]=t[5],this[6]=t[6],this[7]=t[7],this[8]=t[8],this.check()}identity(){return this.copy(ju)}fromObject(t){return this.check()}fromQuaternion(t){return Zo(this,t),this.check()}set(t,r,s,i,n,o,a,h,c){return this[0]=t,this[1]=r,this[2]=s,this[3]=i,this[4]=n,this[5]=o,this[6]=a,this[7]=h,this[8]=c,this.check()}setRowMajor(t,r,s,i,n,o,a,h,c){return this[0]=t,this[1]=i,this[2]=a,this[3]=r,this[4]=n,this[5]=h,this[6]=s,this[7]=o,this[8]=c,this.check()}determinant(){return Wo(this)}transpose(){return ko(this,this),this.check()}invert(){return jo(this,this),this.check()}multiplyLeft(t){return zi(this,t,this),this.check()}multiplyRight(t){return zi(this,this,t),this.check()}rotate(t){return Yo(this,this,t),this.check()}scale(t){return Array.isArray(t)?qi(this,this,t):qi(this,this,[t,t]),this.check()}translate(t){return Ho(this,this,t),this.check()}transform(t,r){let s;switch(t.length){case 2:s=$r(r||[-0,-0],t,this);break;case 3:s=tr(r||[-0,-0,-0],t,this);break;case 4:s=Jr(r||[-0,-0,-0,-0],t,this);break;default:throw new Error("Illegal vector")}return re(s,t.length),s}transformVector(t,r){return this.transform(t,r)}transformVector2(t,r){return this.transform(t,r)}transformVector3(t,r){return this.transform(t,r)}},ns,os=null;function Wu(){return ns||(ns=new j([0,0,0,0,0,0,0,0,0]),Object.freeze(ns)),ns}function Hu(){return os||(os=new j,Object.freeze(os)),os}var as={};$e(as,{add:()=>Mf,adjoint:()=>Ku,clone:()=>Zu,copy:()=>$u,create:()=>Yu,decompose:()=>cf,determinant:()=>Ui,equals:()=>vf,exactEquals:()=>Sf,frob:()=>_f,fromQuat:()=>Zi,fromQuat2:()=>of,fromRotation:()=>ef,fromRotationTranslation:()=>Xo,fromRotationTranslationScale:()=>lf,fromRotationTranslationScaleOrigin:()=>uf,fromScaling:()=>tf,fromTranslation:()=>Ju,fromValues:()=>Qu,fromXRotation:()=>rf,fromYRotation:()=>sf,fromZRotation:()=>nf,frustum:()=>$i,getRotation:()=>hf,getScaling:()=>Ko,getTranslation:()=>af,identity:()=>Qo,invert:()=>Fi,lookAt:()=>Ki,mul:()=>Ef,multiply:()=>rr,multiplyScalar:()=>xf,multiplyScalarAndAdd:()=>yf,ortho:()=>Xi,orthoNO:()=>ta,orthoZO:()=>df,perspective:()=>Qi,perspectiveFromFieldOfView:()=>mf,perspectiveNO:()=>Jo,perspectiveZO:()=>ff,rotate:()=>ji,rotateX:()=>Wi,rotateY:()=>Hi,rotateZ:()=>Yi,scale:()=>ki,set:()=>Xu,str:()=>gf,sub:()=>wf,subtract:()=>ea,targetTo:()=>pf,translate:()=>Vi,transpose:()=>Di});function Yu(){let e=new H(16);return H!==Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0),e[0]=1,e[5]=1,e[10]=1,e[15]=1,e}function Zu(e){let t=new H(16);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t}function $u(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e}function Qu(e,t,r,s,i,n,o,a,h,c,l,u,f,d,m,g){let p=new H(16);return p[0]=e,p[1]=t,p[2]=r,p[3]=s,p[4]=i,p[5]=n,p[6]=o,p[7]=a,p[8]=h,p[9]=c,p[10]=l,p[11]=u,p[12]=f,p[13]=d,p[14]=m,p[15]=g,p}function Xu(e,t,r,s,i,n,o,a,h,c,l,u,f,d,m,g,p){return e[0]=t,e[1]=r,e[2]=s,e[3]=i,e[4]=n,e[5]=o,e[6]=a,e[7]=h,e[8]=c,e[9]=l,e[10]=u,e[11]=f,e[12]=d,e[13]=m,e[14]=g,e[15]=p,e}function Qo(e){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function Di(e,t){if(e===t){let r=t[1],s=t[2],i=t[3],n=t[6],o=t[7],a=t[11];e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=r,e[6]=t[9],e[7]=t[13],e[8]=s,e[9]=n,e[11]=t[14],e[12]=i,e[13]=o,e[14]=a}else e[0]=t[0],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=t[1],e[5]=t[5],e[6]=t[9],e[7]=t[13],e[8]=t[2],e[9]=t[6],e[10]=t[10],e[11]=t[14],e[12]=t[3],e[13]=t[7],e[14]=t[11],e[15]=t[15];return e}function Fi(e,t){let r=t[0],s=t[1],i=t[2],n=t[3],o=t[4],a=t[5],h=t[6],c=t[7],l=t[8],u=t[9],f=t[10],d=t[11],m=t[12],g=t[13],p=t[14],M=t[15],x=r*a-s*o,S=r*h-i*o,v=r*c-n*o,w=s*h-i*a,P=s*c-n*a,R=i*c-n*h,C=l*g-u*m,A=l*p-f*m,b=l*M-d*m,O=u*p-f*g,N=u*M-d*g,B=f*M-d*p,L=x*B-S*N+v*O+w*b-P*A+R*C;return L?(L=1/L,e[0]=(a*B-h*N+c*O)*L,e[1]=(i*N-s*B-n*O)*L,e[2]=(g*R-p*P+M*w)*L,e[3]=(f*P-u*R-d*w)*L,e[4]=(h*b-o*B-c*A)*L,e[5]=(r*B-i*b+n*A)*L,e[6]=(p*v-m*R-M*S)*L,e[7]=(l*R-f*v+d*S)*L,e[8]=(o*N-a*b+c*C)*L,e[9]=(s*b-r*N-n*C)*L,e[10]=(m*P-g*v+M*x)*L,e[11]=(u*v-l*P-d*x)*L,e[12]=(a*A-o*O-h*C)*L,e[13]=(r*O-s*A+i*C)*L,e[14]=(g*S-m*w-p*x)*L,e[15]=(l*w-u*S+f*x)*L,e):null}function Ku(e,t){let r=t[0],s=t[1],i=t[2],n=t[3],o=t[4],a=t[5],h=t[6],c=t[7],l=t[8],u=t[9],f=t[10],d=t[11],m=t[12],g=t[13],p=t[14],M=t[15],x=r*a-s*o,S=r*h-i*o,v=r*c-n*o,w=s*h-i*a,P=s*c-n*a,R=i*c-n*h,C=l*g-u*m,A=l*p-f*m,b=l*M-d*m,O=u*p-f*g,N=u*M-d*g,B=f*M-d*p;return e[0]=a*B-h*N+c*O,e[1]=i*N-s*B-n*O,e[2]=g*R-p*P+M*w,e[3]=f*P-u*R-d*w,e[4]=h*b-o*B-c*A,e[5]=r*B-i*b+n*A,e[6]=p*v-m*R-M*S,e[7]=l*R-f*v+d*S,e[8]=o*N-a*b+c*C,e[9]=s*b-r*N-n*C,e[10]=m*P-g*v+M*x,e[11]=u*v-l*P-d*x,e[12]=a*A-o*O-h*C,e[13]=r*O-s*A+i*C,e[14]=g*S-m*w-p*x,e[15]=l*w-u*S+f*x,e}function Ui(e){let t=e[0],r=e[1],s=e[2],i=e[3],n=e[4],o=e[5],a=e[6],h=e[7],c=e[8],l=e[9],u=e[10],f=e[11],d=e[12],m=e[13],g=e[14],p=e[15],M=t*o-r*n,x=t*a-s*n,S=r*a-s*o,v=c*m-l*d,w=c*g-u*d,P=l*g-u*m,R=t*P-r*w+s*v,C=n*P-o*w+a*v,A=c*S-l*x+u*M,b=d*S-m*x+g*M;return h*R-i*C+p*A-f*b}function rr(e,t,r){let s=t[0],i=t[1],n=t[2],o=t[3],a=t[4],h=t[5],c=t[6],l=t[7],u=t[8],f=t[9],d=t[10],m=t[11],g=t[12],p=t[13],M=t[14],x=t[15],S=r[0],v=r[1],w=r[2],P=r[3];return e[0]=S*s+v*a+w*u+P*g,e[1]=S*i+v*h+w*f+P*p,e[2]=S*n+v*c+w*d+P*M,e[3]=S*o+v*l+w*m+P*x,S=r[4],v=r[5],w=r[6],P=r[7],e[4]=S*s+v*a+w*u+P*g,e[5]=S*i+v*h+w*f+P*p,e[6]=S*n+v*c+w*d+P*M,e[7]=S*o+v*l+w*m+P*x,S=r[8],v=r[9],w=r[10],P=r[11],e[8]=S*s+v*a+w*u+P*g,e[9]=S*i+v*h+w*f+P*p,e[10]=S*n+v*c+w*d+P*M,e[11]=S*o+v*l+w*m+P*x,S=r[12],v=r[13],w=r[14],P=r[15],e[12]=S*s+v*a+w*u+P*g,e[13]=S*i+v*h+w*f+P*p,e[14]=S*n+v*c+w*d+P*M,e[15]=S*o+v*l+w*m+P*x,e}function Vi(e,t,r){let s=r[0],i=r[1],n=r[2],o,a,h,c,l,u,f,d,m,g,p,M;return t===e?(e[12]=t[0]*s+t[4]*i+t[8]*n+t[12],e[13]=t[1]*s+t[5]*i+t[9]*n+t[13],e[14]=t[2]*s+t[6]*i+t[10]*n+t[14],e[15]=t[3]*s+t[7]*i+t[11]*n+t[15]):(o=t[0],a=t[1],h=t[2],c=t[3],l=t[4],u=t[5],f=t[6],d=t[7],m=t[8],g=t[9],p=t[10],M=t[11],e[0]=o,e[1]=a,e[2]=h,e[3]=c,e[4]=l,e[5]=u,e[6]=f,e[7]=d,e[8]=m,e[9]=g,e[10]=p,e[11]=M,e[12]=o*s+l*i+m*n+t[12],e[13]=a*s+u*i+g*n+t[13],e[14]=h*s+f*i+p*n+t[14],e[15]=c*s+d*i+M*n+t[15]),e}function ki(e,t,r){let s=r[0],i=r[1],n=r[2];return e[0]=t[0]*s,e[1]=t[1]*s,e[2]=t[2]*s,e[3]=t[3]*s,e[4]=t[4]*i,e[5]=t[5]*i,e[6]=t[6]*i,e[7]=t[7]*i,e[8]=t[8]*n,e[9]=t[9]*n,e[10]=t[10]*n,e[11]=t[11]*n,e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e}function ji(e,t,r,s){let i=s[0],n=s[1],o=s[2],a=Math.sqrt(i*i+n*n+o*o),h,c,l,u,f,d,m,g,p,M,x,S,v,w,P,R,C,A,b,O,N,B,L,et;return a<1e-6?null:(a=1/a,i*=a,n*=a,o*=a,c=Math.sin(r),h=Math.cos(r),l=1-h,u=t[0],f=t[1],d=t[2],m=t[3],g=t[4],p=t[5],M=t[6],x=t[7],S=t[8],v=t[9],w=t[10],P=t[11],R=i*i*l+h,C=n*i*l+o*c,A=o*i*l-n*c,b=i*n*l-o*c,O=n*n*l+h,N=o*n*l+i*c,B=i*o*l+n*c,L=n*o*l-i*c,et=o*o*l+h,e[0]=u*R+g*C+S*A,e[1]=f*R+p*C+v*A,e[2]=d*R+M*C+w*A,e[3]=m*R+x*C+P*A,e[4]=u*b+g*O+S*N,e[5]=f*b+p*O+v*N,e[6]=d*b+M*O+w*N,e[7]=m*b+x*O+P*N,e[8]=u*B+g*L+S*et,e[9]=f*B+p*L+v*et,e[10]=d*B+M*L+w*et,e[11]=m*B+x*L+P*et,t!==e&&(e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e)}function Wi(e,t,r){let s=Math.sin(r),i=Math.cos(r),n=t[4],o=t[5],a=t[6],h=t[7],c=t[8],l=t[9],u=t[10],f=t[11];return t!==e&&(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[4]=n*i+c*s,e[5]=o*i+l*s,e[6]=a*i+u*s,e[7]=h*i+f*s,e[8]=c*i-n*s,e[9]=l*i-o*s,e[10]=u*i-a*s,e[11]=f*i-h*s,e}function Hi(e,t,r){let s=Math.sin(r),i=Math.cos(r),n=t[0],o=t[1],a=t[2],h=t[3],c=t[8],l=t[9],u=t[10],f=t[11];return t!==e&&(e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[0]=n*i-c*s,e[1]=o*i-l*s,e[2]=a*i-u*s,e[3]=h*i-f*s,e[8]=n*s+c*i,e[9]=o*s+l*i,e[10]=a*s+u*i,e[11]=h*s+f*i,e}function Yi(e,t,r){let s=Math.sin(r),i=Math.cos(r),n=t[0],o=t[1],a=t[2],h=t[3],c=t[4],l=t[5],u=t[6],f=t[7];return t!==e&&(e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[0]=n*i+c*s,e[1]=o*i+l*s,e[2]=a*i+u*s,e[3]=h*i+f*s,e[4]=c*i-n*s,e[5]=l*i-o*s,e[6]=u*i-a*s,e[7]=f*i-h*s,e}function Ju(e,t){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=t[0],e[13]=t[1],e[14]=t[2],e[15]=1,e}function tf(e,t){return e[0]=t[0],e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=t[1],e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=t[2],e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function ef(e,t,r){let s=r[0],i=r[1],n=r[2],o=Math.sqrt(s*s+i*i+n*n),a,h,c;return o<1e-6?null:(o=1/o,s*=o,i*=o,n*=o,h=Math.sin(t),a=Math.cos(t),c=1-a,e[0]=s*s*c+a,e[1]=i*s*c+n*h,e[2]=n*s*c-i*h,e[3]=0,e[4]=s*i*c-n*h,e[5]=i*i*c+a,e[6]=n*i*c+s*h,e[7]=0,e[8]=s*n*c+i*h,e[9]=i*n*c-s*h,e[10]=n*n*c+a,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e)}function rf(e,t){let r=Math.sin(t),s=Math.cos(t);return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=s,e[6]=r,e[7]=0,e[8]=0,e[9]=-r,e[10]=s,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function sf(e,t){let r=Math.sin(t),s=Math.cos(t);return e[0]=s,e[1]=0,e[2]=-r,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=r,e[9]=0,e[10]=s,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function nf(e,t){let r=Math.sin(t),s=Math.cos(t);return e[0]=s,e[1]=r,e[2]=0,e[3]=0,e[4]=-r,e[5]=s,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function Xo(e,t,r){let s=t[0],i=t[1],n=t[2],o=t[3],a=s+s,h=i+i,c=n+n,l=s*a,u=s*h,f=s*c,d=i*h,m=i*c,g=n*c,p=o*a,M=o*h,x=o*c;return e[0]=1-(d+g),e[1]=u+x,e[2]=f-M,e[3]=0,e[4]=u-x,e[5]=1-(l+g),e[6]=m+p,e[7]=0,e[8]=f+M,e[9]=m-p,e[10]=1-(l+d),e[11]=0,e[12]=r[0],e[13]=r[1],e[14]=r[2],e[15]=1,e}function of(e,t){let r=new H(3),s=-t[0],i=-t[1],n=-t[2],o=t[3],a=t[4],h=t[5],c=t[6],l=t[7],u=s*s+i*i+n*n+o*o;return u>0?(r[0]=(a*o+l*s+h*n-c*i)*2/u,r[1]=(h*o+l*i+c*s-a*n)*2/u,r[2]=(c*o+l*n+a*i-h*s)*2/u):(r[0]=(a*o+l*s+h*n-c*i)*2,r[1]=(h*o+l*i+c*s-a*n)*2,r[2]=(c*o+l*n+a*i-h*s)*2),Xo(e,t,r),e}function af(e,t){return e[0]=t[12],e[1]=t[13],e[2]=t[14],e}function Ko(e,t){let r=t[0],s=t[1],i=t[2],n=t[4],o=t[5],a=t[6],h=t[8],c=t[9],l=t[10];return e[0]=Math.sqrt(r*r+s*s+i*i),e[1]=Math.sqrt(n*n+o*o+a*a),e[2]=Math.sqrt(h*h+c*c+l*l),e}function hf(e,t){let r=new H(3);Ko(r,t);let s=1/r[0],i=1/r[1],n=1/r[2],o=t[0]*s,a=t[1]*i,h=t[2]*n,c=t[4]*s,l=t[5]*i,u=t[6]*n,f=t[8]*s,d=t[9]*i,m=t[10]*n,g=o+l+m,p=0;return g>0?(p=Math.sqrt(g+1)*2,e[3]=.25*p,e[0]=(u-d)/p,e[1]=(f-h)/p,e[2]=(a-c)/p):o>l&&o>m?(p=Math.sqrt(1+o-l-m)*2,e[3]=(u-d)/p,e[0]=.25*p,e[1]=(a+c)/p,e[2]=(f+h)/p):l>m?(p=Math.sqrt(1+l-o-m)*2,e[3]=(f-h)/p,e[0]=(a+c)/p,e[1]=.25*p,e[2]=(u+d)/p):(p=Math.sqrt(1+m-o-l)*2,e[3]=(a-c)/p,e[0]=(f+h)/p,e[1]=(u+d)/p,e[2]=.25*p),e}function cf(e,t,r,s){t[0]=s[12],t[1]=s[13],t[2]=s[14];let i=s[0],n=s[1],o=s[2],a=s[4],h=s[5],c=s[6],l=s[8],u=s[9],f=s[10];r[0]=Math.sqrt(i*i+n*n+o*o),r[1]=Math.sqrt(a*a+h*h+c*c),r[2]=Math.sqrt(l*l+u*u+f*f);let d=1/r[0],m=1/r[1],g=1/r[2],p=i*d,M=n*m,x=o*g,S=a*d,v=h*m,w=c*g,P=l*d,R=u*m,C=f*g,A=p+v+C,b=0;return A>0?(b=Math.sqrt(A+1)*2,e[3]=.25*b,e[0]=(w-R)/b,e[1]=(P-x)/b,e[2]=(M-S)/b):p>v&&p>C?(b=Math.sqrt(1+p-v-C)*2,e[3]=(w-R)/b,e[0]=.25*b,e[1]=(M+S)/b,e[2]=(P+x)/b):v>C?(b=Math.sqrt(1+v-p-C)*2,e[3]=(P-x)/b,e[0]=(M+S)/b,e[1]=.25*b,e[2]=(w+R)/b):(b=Math.sqrt(1+C-p-v)*2,e[3]=(M-S)/b,e[0]=(P+x)/b,e[1]=(w+R)/b,e[2]=.25*b),e}function lf(e,t,r,s){let i=t[0],n=t[1],o=t[2],a=t[3],h=i+i,c=n+n,l=o+o,u=i*h,f=i*c,d=i*l,m=n*c,g=n*l,p=o*l,M=a*h,x=a*c,S=a*l,v=s[0],w=s[1],P=s[2];return e[0]=(1-(m+p))*v,e[1]=(f+S)*v,e[2]=(d-x)*v,e[3]=0,e[4]=(f-S)*w,e[5]=(1-(u+p))*w,e[6]=(g+M)*w,e[7]=0,e[8]=(d+x)*P,e[9]=(g-M)*P,e[10]=(1-(u+m))*P,e[11]=0,e[12]=r[0],e[13]=r[1],e[14]=r[2],e[15]=1,e}function uf(e,t,r,s,i){let n=t[0],o=t[1],a=t[2],h=t[3],c=n+n,l=o+o,u=a+a,f=n*c,d=n*l,m=n*u,g=o*l,p=o*u,M=a*u,x=h*c,S=h*l,v=h*u,w=s[0],P=s[1],R=s[2],C=i[0],A=i[1],b=i[2],O=(1-(g+M))*w,N=(d+v)*w,B=(m-S)*w,L=(d-v)*P,et=(1-(f+M))*P,Lt=(p+x)*P,Vt=(m+S)*R,kr=(p-x)*R,xe=(1-(f+g))*R;return e[0]=O,e[1]=N,e[2]=B,e[3]=0,e[4]=L,e[5]=et,e[6]=Lt,e[7]=0,e[8]=Vt,e[9]=kr,e[10]=xe,e[11]=0,e[12]=r[0]+C-(O*C+L*A+Vt*b),e[13]=r[1]+A-(N*C+et*A+kr*b),e[14]=r[2]+b-(B*C+Lt*A+xe*b),e[15]=1,e}function Zi(e,t){let r=t[0],s=t[1],i=t[2],n=t[3],o=r+r,a=s+s,h=i+i,c=r*o,l=s*o,u=s*a,f=i*o,d=i*a,m=i*h,g=n*o,p=n*a,M=n*h;return e[0]=1-u-m,e[1]=l+M,e[2]=f-p,e[3]=0,e[4]=l-M,e[5]=1-c-m,e[6]=d+g,e[7]=0,e[8]=f+p,e[9]=d-g,e[10]=1-c-u,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function $i(e,t,r,s,i,n,o){let a=1/(r-t),h=1/(i-s),c=1/(n-o);return e[0]=n*2*a,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=n*2*h,e[6]=0,e[7]=0,e[8]=(r+t)*a,e[9]=(i+s)*h,e[10]=(o+n)*c,e[11]=-1,e[12]=0,e[13]=0,e[14]=o*n*2*c,e[15]=0,e}function Jo(e,t,r,s,i){let n=1/Math.tan(t/2);if(e[0]=n/r,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=n,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=-1,e[12]=0,e[13]=0,e[15]=0,i!=null&&i!==1/0){let o=1/(s-i);e[10]=(i+s)*o,e[14]=2*i*s*o}else e[10]=-1,e[14]=-2*s;return e}var Qi=Jo;function ff(e,t,r,s,i){let n=1/Math.tan(t/2);if(e[0]=n/r,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=n,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=-1,e[12]=0,e[13]=0,e[15]=0,i!=null&&i!==1/0){let o=1/(s-i);e[10]=i*o,e[14]=i*s*o}else e[10]=-1,e[14]=-s;return e}function mf(e,t,r,s){let i=Math.tan(t.upDegrees*Math.PI/180),n=Math.tan(t.downDegrees*Math.PI/180),o=Math.tan(t.leftDegrees*Math.PI/180),a=Math.tan(t.rightDegrees*Math.PI/180),h=2/(o+a),c=2/(i+n);return e[0]=h,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=c,e[6]=0,e[7]=0,e[8]=-((o-a)*h*.5),e[9]=(i-n)*c*.5,e[10]=s/(r-s),e[11]=-1,e[12]=0,e[13]=0,e[14]=s*r/(r-s),e[15]=0,e}function ta(e,t,r,s,i,n,o){let a=1/(t-r),h=1/(s-i),c=1/(n-o);return e[0]=-2*a,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=-2*h,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=2*c,e[11]=0,e[12]=(t+r)*a,e[13]=(i+s)*h,e[14]=(o+n)*c,e[15]=1,e}var Xi=ta;function df(e,t,r,s,i,n,o){let a=1/(t-r),h=1/(s-i),c=1/(n-o);return e[0]=-2*a,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=-2*h,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=c,e[11]=0,e[12]=(t+r)*a,e[13]=(i+s)*h,e[14]=n*c,e[15]=1,e}function Ki(e,t,r,s){let i,n,o,a,h,c,l,u,f,d,m=t[0],g=t[1],p=t[2],M=s[0],x=s[1],S=s[2],v=r[0],w=r[1],P=r[2];return Math.abs(m-v)<1e-6&&Math.abs(g-w)<1e-6&&Math.abs(p-P)<1e-6?Qo(e):(u=m-v,f=g-w,d=p-P,i=1/Math.sqrt(u*u+f*f+d*d),u*=i,f*=i,d*=i,n=x*d-S*f,o=S*u-M*d,a=M*f-x*u,i=Math.sqrt(n*n+o*o+a*a),i?(i=1/i,n*=i,o*=i,a*=i):(n=0,o=0,a=0),h=f*a-d*o,c=d*n-u*a,l=u*o-f*n,i=Math.sqrt(h*h+c*c+l*l),i?(i=1/i,h*=i,c*=i,l*=i):(h=0,c=0,l=0),e[0]=n,e[1]=h,e[2]=u,e[3]=0,e[4]=o,e[5]=c,e[6]=f,e[7]=0,e[8]=a,e[9]=l,e[10]=d,e[11]=0,e[12]=-(n*m+o*g+a*p),e[13]=-(h*m+c*g+l*p),e[14]=-(u*m+f*g+d*p),e[15]=1,e)}function pf(e,t,r,s){let i=t[0],n=t[1],o=t[2],a=s[0],h=s[1],c=s[2],l=i-r[0],u=n-r[1],f=o-r[2],d=l*l+u*u+f*f;d>0&&(d=1/Math.sqrt(d),l*=d,u*=d,f*=d);let m=h*f-c*u,g=c*l-a*f,p=a*u-h*l;return d=m*m+g*g+p*p,d>0&&(d=1/Math.sqrt(d),m*=d,g*=d,p*=d),e[0]=m,e[1]=g,e[2]=p,e[3]=0,e[4]=u*p-f*g,e[5]=f*m-l*p,e[6]=l*g-u*m,e[7]=0,e[8]=l,e[9]=u,e[10]=f,e[11]=0,e[12]=i,e[13]=n,e[14]=o,e[15]=1,e}function gf(e){return`mat4(${e[0]}, ${e[1]}, ${e[2]}, ${e[3]}, ${e[4]}, ${e[5]}, ${e[6]}, ${e[7]}, ${e[8]}, ${e[9]}, ${e[10]}, ${e[11]}, ${e[12]}, ${e[13]}, ${e[14]}, ${e[15]})`}function _f(e){return Math.sqrt(e[0]*e[0]+e[1]*e[1]+e[2]*e[2]+e[3]*e[3]+e[4]*e[4]+e[5]*e[5]+e[6]*e[6]+e[7]*e[7]+e[8]*e[8]+e[9]*e[9]+e[10]*e[10]+e[11]*e[11]+e[12]*e[12]+e[13]*e[13]+e[14]*e[14]+e[15]*e[15])}function Mf(e,t,r){return e[0]=t[0]+r[0],e[1]=t[1]+r[1],e[2]=t[2]+r[2],e[3]=t[3]+r[3],e[4]=t[4]+r[4],e[5]=t[5]+r[5],e[6]=t[6]+r[6],e[7]=t[7]+r[7],e[8]=t[8]+r[8],e[9]=t[9]+r[9],e[10]=t[10]+r[10],e[11]=t[11]+r[11],e[12]=t[12]+r[12],e[13]=t[13]+r[13],e[14]=t[14]+r[14],e[15]=t[15]+r[15],e}function ea(e,t,r){return e[0]=t[0]-r[0],e[1]=t[1]-r[1],e[2]=t[2]-r[2],e[3]=t[3]-r[3],e[4]=t[4]-r[4],e[5]=t[5]-r[5],e[6]=t[6]-r[6],e[7]=t[7]-r[7],e[8]=t[8]-r[8],e[9]=t[9]-r[9],e[10]=t[10]-r[10],e[11]=t[11]-r[11],e[12]=t[12]-r[12],e[13]=t[13]-r[13],e[14]=t[14]-r[14],e[15]=t[15]-r[15],e}function xf(e,t,r){return e[0]=t[0]*r,e[1]=t[1]*r,e[2]=t[2]*r,e[3]=t[3]*r,e[4]=t[4]*r,e[5]=t[5]*r,e[6]=t[6]*r,e[7]=t[7]*r,e[8]=t[8]*r,e[9]=t[9]*r,e[10]=t[10]*r,e[11]=t[11]*r,e[12]=t[12]*r,e[13]=t[13]*r,e[14]=t[14]*r,e[15]=t[15]*r,e}function yf(e,t,r,s){return e[0]=t[0]+r[0]*s,e[1]=t[1]+r[1]*s,e[2]=t[2]+r[2]*s,e[3]=t[3]+r[3]*s,e[4]=t[4]+r[4]*s,e[5]=t[5]+r[5]*s,e[6]=t[6]+r[6]*s,e[7]=t[7]+r[7]*s,e[8]=t[8]+r[8]*s,e[9]=t[9]+r[9]*s,e[10]=t[10]+r[10]*s,e[11]=t[11]+r[11]*s,e[12]=t[12]+r[12]*s,e[13]=t[13]+r[13]*s,e[14]=t[14]+r[14]*s,e[15]=t[15]+r[15]*s,e}function Sf(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[3]===t[3]&&e[4]===t[4]&&e[5]===t[5]&&e[6]===t[6]&&e[7]===t[7]&&e[8]===t[8]&&e[9]===t[9]&&e[10]===t[10]&&e[11]===t[11]&&e[12]===t[12]&&e[13]===t[13]&&e[14]===t[14]&&e[15]===t[15]}function vf(e,t){let r=e[0],s=e[1],i=e[2],n=e[3],o=e[4],a=e[5],h=e[6],c=e[7],l=e[8],u=e[9],f=e[10],d=e[11],m=e[12],g=e[13],p=e[14],M=e[15],x=t[0],S=t[1],v=t[2],w=t[3],P=t[4],R=t[5],C=t[6],A=t[7],b=t[8],O=t[9],N=t[10],B=t[11],L=t[12],et=t[13],Lt=t[14],Vt=t[15];return Math.abs(r-x)<=1e-6*Math.max(1,Math.abs(r),Math.abs(x))&&Math.abs(s-S)<=1e-6*Math.max(1,Math.abs(s),Math.abs(S))&&Math.abs(i-v)<=1e-6*Math.max(1,Math.abs(i),Math.abs(v))&&Math.abs(n-w)<=1e-6*Math.max(1,Math.abs(n),Math.abs(w))&&Math.abs(o-P)<=1e-6*Math.max(1,Math.abs(o),Math.abs(P))&&Math.abs(a-R)<=1e-6*Math.max(1,Math.abs(a),Math.abs(R))&&Math.abs(h-C)<=1e-6*Math.max(1,Math.abs(h),Math.abs(C))&&Math.abs(c-A)<=1e-6*Math.max(1,Math.abs(c),Math.abs(A))&&Math.abs(l-b)<=1e-6*Math.max(1,Math.abs(l),Math.abs(b))&&Math.abs(u-O)<=1e-6*Math.max(1,Math.abs(u),Math.abs(O))&&Math.abs(f-N)<=1e-6*Math.max(1,Math.abs(f),Math.abs(N))&&Math.abs(d-B)<=1e-6*Math.max(1,Math.abs(d),Math.abs(B))&&Math.abs(m-L)<=1e-6*Math.max(1,Math.abs(m),Math.abs(L))&&Math.abs(g-et)<=1e-6*Math.max(1,Math.abs(g),Math.abs(et))&&Math.abs(p-Lt)<=1e-6*Math.max(1,Math.abs(p),Math.abs(Lt))&&Math.abs(M-Vt)<=1e-6*Math.max(1,Math.abs(M),Math.abs(Vt))}var Ef=rr,wf=ea;function Tf(){let e=new H(4);return H!==Float32Array&&(e[0]=0,e[1]=0,e[2]=0,e[3]=0),e}function ra(e,t,r){return e[0]=t[0]+r[0],e[1]=t[1]+r[1],e[2]=t[2]+r[2],e[3]=t[3]+r[3],e}function sa(e,t,r){return e[0]=t[0]*r,e[1]=t[1]*r,e[2]=t[2]*r,e[3]=t[3]*r,e}function ia(e){let t=e[0],r=e[1],s=e[2],i=e[3];return Math.sqrt(t*t+r*r+s*s+i*i)}function na(e){let t=e[0],r=e[1],s=e[2],i=e[3];return t*t+r*r+s*s+i*i}function oa(e,t){let r=t[0],s=t[1],i=t[2],n=t[3],o=r*r+s*s+i*i+n*n;return o>0&&(o=1/Math.sqrt(o)),e[0]=r*o,e[1]=s*o,e[2]=i*o,e[3]=n*o,e}function aa(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3]*t[3]}function ha(e,t,r,s){let i=t[0],n=t[1],o=t[2],a=t[3];return e[0]=i+s*(r[0]-i),e[1]=n+s*(r[1]-n),e[2]=o+s*(r[2]-o),e[3]=a+s*(r[3]-a),e}function ca(e,t,r){let s=t[0],i=t[1],n=t[2],o=t[3];return e[0]=r[0]*s+r[4]*i+r[8]*n+r[12]*o,e[1]=r[1]*s+r[5]*i+r[9]*n+r[13]*o,e[2]=r[2]*s+r[6]*i+r[10]*n+r[14]*o,e[3]=r[3]*s+r[7]*i+r[11]*n+r[15]*o,e}function la(e,t,r){let s=t[0],i=t[1],n=t[2],o=r[0],a=r[1],h=r[2],c=r[3],l=c*s+a*n-h*i,u=c*i+h*s-o*n,f=c*n+o*i-a*s,d=-o*s-a*i-h*n;return e[0]=l*c+d*-o+u*-h-f*-a,e[1]=u*c+d*-a+f*-o-l*-h,e[2]=f*c+d*-h+l*-a-u*-o,e[3]=t[3],e}var CM=(function(){let e=Tf();return function(t,r,s,i,n,o){let a,h;for(r||(r=4),s||(s=0),i?h=Math.min(i*r+s,t.length):h=t.length,a=s;a<h;a+=r)e[0]=t[a],e[1]=t[a+1],e[2]=t[a+2],e[3]=t[a+3],n(e,e,o),t[a]=e[0],t[a+1]=e[1],t[a+2]=e[2],t[a+3]=e[3];return t}})();var en;(function(e){e[e.COL0ROW0=0]="COL0ROW0",e[e.COL0ROW1=1]="COL0ROW1",e[e.COL0ROW2=2]="COL0ROW2",e[e.COL0ROW3=3]="COL0ROW3",e[e.COL1ROW0=4]="COL1ROW0",e[e.COL1ROW1=5]="COL1ROW1",e[e.COL1ROW2=6]="COL1ROW2",e[e.COL1ROW3=7]="COL1ROW3",e[e.COL2ROW0=8]="COL2ROW0",e[e.COL2ROW1=9]="COL2ROW1",e[e.COL2ROW2=10]="COL2ROW2",e[e.COL2ROW3=11]="COL2ROW3",e[e.COL3ROW0=12]="COL3ROW0",e[e.COL3ROW1=13]="COL3ROW1",e[e.COL3ROW2=14]="COL3ROW2",e[e.COL3ROW3=15]="COL3ROW3"})(en||(en={}));var Pf=45*Math.PI/180,bf=1,Ji=.1,tn=500,Rf=Object.freeze([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]),z=class extends Se{static get IDENTITY(){return Af()}static get ZERO(){return Cf()}get ELEMENTS(){return 16}get RANK(){return 4}get INDICES(){return en}constructor(t){super(-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0),arguments.length===1&&Array.isArray(t)?this.copy(t):this.identity()}copy(t){return this[0]=t[0],this[1]=t[1],this[2]=t[2],this[3]=t[3],this[4]=t[4],this[5]=t[5],this[6]=t[6],this[7]=t[7],this[8]=t[8],this[9]=t[9],this[10]=t[10],this[11]=t[11],this[12]=t[12],this[13]=t[13],this[14]=t[14],this[15]=t[15],this.check()}set(t,r,s,i,n,o,a,h,c,l,u,f,d,m,g,p){return this[0]=t,this[1]=r,this[2]=s,this[3]=i,this[4]=n,this[5]=o,this[6]=a,this[7]=h,this[8]=c,this[9]=l,this[10]=u,this[11]=f,this[12]=d,this[13]=m,this[14]=g,this[15]=p,this.check()}setRowMajor(t,r,s,i,n,o,a,h,c,l,u,f,d,m,g,p){return this[0]=t,this[1]=n,this[2]=c,this[3]=d,this[4]=r,this[5]=o,this[6]=l,this[7]=m,this[8]=s,this[9]=a,this[10]=u,this[11]=g,this[12]=i,this[13]=h,this[14]=f,this[15]=p,this.check()}toRowMajor(t){return t[0]=this[0],t[1]=this[4],t[2]=this[8],t[3]=this[12],t[4]=this[1],t[5]=this[5],t[6]=this[9],t[7]=this[13],t[8]=this[2],t[9]=this[6],t[10]=this[10],t[11]=this[14],t[12]=this[3],t[13]=this[7],t[14]=this[11],t[15]=this[15],t}identity(){return this.copy(Rf)}fromObject(t){return this.check()}fromQuaternion(t){return Zi(this,t),this.check()}frustum(t){let{left:r,right:s,bottom:i,top:n,near:o=Ji,far:a=tn}=t;return a===1/0?If(this,r,s,i,n,o):$i(this,r,s,i,n,o,a),this.check()}lookAt(t){let{eye:r,center:s=[0,0,0],up:i=[0,1,0]}=t;return Ki(this,r,s,i),this.check()}ortho(t){let{left:r,right:s,bottom:i,top:n,near:o=Ji,far:a=tn}=t;return Xi(this,r,s,i,n,o,a),this.check()}orthographic(t){let{fovy:r=Pf,aspect:s=bf,focalDistance:i=1,near:n=Ji,far:o=tn}=t;fa(r);let a=r/2,h=i*Math.tan(a),c=h*s;return this.ortho({left:-c,right:c,bottom:-h,top:h,near:n,far:o})}perspective(t){let{fovy:r=45*Math.PI/180,aspect:s=1,near:i=.1,far:n=500}=t;return fa(r),Qi(this,r,s,i,n),this.check()}determinant(){return Ui(this)}getScale(t=[-0,-0,-0]){return t[0]=Math.sqrt(this[0]*this[0]+this[1]*this[1]+this[2]*this[2]),t[1]=Math.sqrt(this[4]*this[4]+this[5]*this[5]+this[6]*this[6]),t[2]=Math.sqrt(this[8]*this[8]+this[9]*this[9]+this[10]*this[10]),t}getTranslation(t=[-0,-0,-0]){return t[0]=this[12],t[1]=this[13],t[2]=this[14],t}getRotation(t,r){t=t||[-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0],r=r||[-0,-0,-0];let s=this.getScale(r),i=1/s[0],n=1/s[1],o=1/s[2];return t[0]=this[0]*i,t[1]=this[1]*n,t[2]=this[2]*o,t[3]=0,t[4]=this[4]*i,t[5]=this[5]*n,t[6]=this[6]*o,t[7]=0,t[8]=this[8]*i,t[9]=this[9]*n,t[10]=this[10]*o,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}getRotationMatrix3(t,r){t=t||[-0,-0,-0,-0,-0,-0,-0,-0,-0],r=r||[-0,-0,-0];let s=this.getScale(r),i=1/s[0],n=1/s[1],o=1/s[2];return t[0]=this[0]*i,t[1]=this[1]*n,t[2]=this[2]*o,t[3]=this[4]*i,t[4]=this[5]*n,t[5]=this[6]*o,t[6]=this[8]*i,t[7]=this[9]*n,t[8]=this[10]*o,t}transpose(){return Di(this,this),this.check()}invert(){return Fi(this,this),this.check()}multiplyLeft(t){return rr(this,t,this),this.check()}multiplyRight(t){return rr(this,this,t),this.check()}rotateX(t){return Wi(this,this,t),this.check()}rotateY(t){return Hi(this,this,t),this.check()}rotateZ(t){return Yi(this,this,t),this.check()}rotateXYZ(t){return this.rotateX(t[0]).rotateY(t[1]).rotateZ(t[2])}rotateAxis(t,r){return ji(this,this,t,r),this.check()}scale(t){return ki(this,this,Array.isArray(t)?t:[t,t,t]),this.check()}translate(t){return Vi(this,this,t),this.check()}transform(t,r){return t.length===4?(r=ca(r||[-0,-0,-0,-0],t,this),re(r,4),r):this.transformAsPoint(t,r)}transformAsPoint(t,r){let{length:s}=t,i;switch(s){case 2:i=Qr(r||[-0,-0],t,this);break;case 3:i=ce(r||[-0,-0,-0],t,this);break;default:throw new Error("Illegal vector")}return re(i,t.length),i}transformAsVector(t,r){let s;switch(t.length){case 2:s=Xr(r||[-0,-0],t,this);break;case 3:s=Kr(r||[-0,-0,-0],t,this);break;default:throw new Error("Illegal vector")}return re(s,t.length),s}transformPoint(t,r){return this.transformAsPoint(t,r)}transformVector(t,r){return this.transformAsPoint(t,r)}transformDirection(t,r){return this.transformAsVector(t,r)}makeRotationX(t){return this.identity().rotateX(t)}makeTranslation(t,r,s){return this.identity().translate([t,r,s])}},hs,cs;function Cf(){return hs||(hs=new z([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]),Object.freeze(hs)),hs}function Af(){return cs||(cs=new z,Object.freeze(cs)),cs}function fa(e){if(e>Math.PI*2)throw Error("expected radians")}function If(e,t,r,s,i,n){let o=2*n/(r-t),a=2*n/(i-s),h=(r+t)/(r-t),c=(i+s)/(i-s),l=-1,u=-1,f=-2*n;return e[0]=o,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=a,e[6]=0,e[7]=0,e[8]=h,e[9]=c,e[10]=l,e[11]=u,e[12]=0,e[13]=0,e[14]=f,e[15]=0,e}function ma(){let e=new H(4);return H!==Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e[3]=1,e}function da(e){return e[0]=0,e[1]=0,e[2]=0,e[3]=1,e}function rn(e,t,r){r=r*.5;let s=Math.sin(r);return e[0]=s*t[0],e[1]=s*t[1],e[2]=s*t[2],e[3]=Math.cos(r),e}function sn(e,t,r){let s=t[0],i=t[1],n=t[2],o=t[3],a=r[0],h=r[1],c=r[2],l=r[3];return e[0]=s*l+o*a+i*c-n*h,e[1]=i*l+o*h+n*a-s*c,e[2]=n*l+o*c+s*h-i*a,e[3]=o*l-s*a-i*h-n*c,e}function pa(e,t,r){r*=.5;let s=t[0],i=t[1],n=t[2],o=t[3],a=Math.sin(r),h=Math.cos(r);return e[0]=s*h+o*a,e[1]=i*h+n*a,e[2]=n*h-i*a,e[3]=o*h-s*a,e}function ga(e,t,r){r*=.5;let s=t[0],i=t[1],n=t[2],o=t[3],a=Math.sin(r),h=Math.cos(r);return e[0]=s*h-n*a,e[1]=i*h+o*a,e[2]=n*h+s*a,e[3]=o*h-i*a,e}function _a(e,t,r){r*=.5;let s=t[0],i=t[1],n=t[2],o=t[3],a=Math.sin(r),h=Math.cos(r);return e[0]=s*h+i*a,e[1]=i*h-s*a,e[2]=n*h+o*a,e[3]=o*h-n*a,e}function Ma(e,t){let r=t[0],s=t[1],i=t[2];return e[0]=r,e[1]=s,e[2]=i,e[3]=Math.sqrt(Math.abs(1-r*r-s*s-i*i)),e}function sr(e,t,r,s){let i=t[0],n=t[1],o=t[2],a=t[3],h=r[0],c=r[1],l=r[2],u=r[3],f,d,m,g,p;return f=i*h+n*c+o*l+a*u,f<0&&(f=-f,h=-h,c=-c,l=-l,u=-u),1-f>1e-6?(d=Math.acos(f),p=Math.sin(d),m=Math.sin((1-s)*d)/p,g=Math.sin(s*d)/p):(m=1-s,g=s),e[0]=m*i+g*h,e[1]=m*n+g*c,e[2]=m*o+g*l,e[3]=m*a+g*u,e}function xa(e,t){let r=t[0],s=t[1],i=t[2],n=t[3],o=r*r+s*s+i*i+n*n,a=o?1/o:0;return e[0]=-r*a,e[1]=-s*a,e[2]=-i*a,e[3]=n*a,e}function ya(e,t){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e[3]=t[3],e}function nn(e,t){let r=t[0]+t[4]+t[8],s;if(r>0)s=Math.sqrt(r+1),e[3]=.5*s,s=.5/s,e[0]=(t[5]-t[7])*s,e[1]=(t[6]-t[2])*s,e[2]=(t[1]-t[3])*s;else{let i=0;t[4]>t[0]&&(i=1),t[8]>t[i*3+i]&&(i=2);let n=(i+1)%3,o=(i+2)%3;s=Math.sqrt(t[i*3+i]-t[n*3+n]-t[o*3+o]+1),e[i]=.5*s,s=.5/s,e[3]=(t[n*3+o]-t[o*3+n])*s,e[n]=(t[n*3+i]+t[i*3+n])*s,e[o]=(t[o*3+i]+t[i*3+o])*s}return e}var Sa=ra;var va=sa,Ea=aa,wa=ha,Ta=ia;var Pa=na;var ba=oa;var Ra=(function(){let e=ts(),t=es(1,0,0),r=es(0,1,0);return function(s,i,n){let o=Je(i,n);return o<-.999999?(he(e,t,i),Li(e)<1e-6&&he(e,r,i),Ci(e,e),rn(s,e,Math.PI),s):o>.999999?(s[0]=0,s[1]=0,s[2]=0,s[3]=1,s):(he(e,i,n),s[0]=e[0],s[1]=e[1],s[2]=e[2],s[3]=1+o,ba(s,s))}})(),kM=(function(){let e=ma(),t=ma();return function(r,s,i,n,o,a){return sr(e,s,o,a),sr(t,i,n,a),sr(r,e,t,2*a*(1-a)),r}})(),jM=(function(){let e=Vo();return function(t,r,s,i){return e[0]=s[0],e[3]=s[1],e[6]=s[2],e[1]=i[0],e[4]=i[1],e[7]=i[2],e[2]=-r[0],e[5]=-r[1],e[8]=-r[2],ba(t,nn(t,e))}})();var Nf=[0,0,0,1],wt=class extends ee{constructor(t=0,r=0,s=0,i=1){super(-0,-0,-0,-0),Array.isArray(t)&&arguments.length===1?this.copy(t):this.set(t,r,s,i)}copy(t){return this[0]=t[0],this[1]=t[1],this[2]=t[2],this[3]=t[3],this.check()}set(t,r,s,i){return this[0]=t,this[1]=r,this[2]=s,this[3]=i,this.check()}fromObject(t){return this[0]=t.x,this[1]=t.y,this[2]=t.z,this[3]=t.w,this.check()}fromMatrix3(t){return nn(this,t),this.check()}fromAxisRotation(t,r){return rn(this,t,r),this.check()}identity(){return da(this),this.check()}setAxisAngle(t,r){return this.fromAxisRotation(t,r)}get ELEMENTS(){return 4}get x(){return this[0]}set x(t){this[0]=G(t)}get y(){return this[1]}set y(t){this[1]=G(t)}get z(){return this[2]}set z(t){this[2]=G(t)}get w(){return this[3]}set w(t){this[3]=G(t)}len(){return Ta(this)}lengthSquared(){return Pa(this)}dot(t){return Ea(this,t)}rotationTo(t,r){return Ra(this,t,r),this.check()}add(t){return Sa(this,this,t),this.check()}calculateW(){return Ma(this,this),this.check()}conjugate(){return ya(this,this),this.check()}invert(){return xa(this,this),this.check()}lerp(t,r,s){return s===void 0?this.lerp(this,t,r):(wa(this,t,r,s),this.check())}multiplyRight(t){return sn(this,this,t),this.check()}multiplyLeft(t){return sn(this,t,this),this.check()}normalize(){let t=this.len(),r=t>0?1/t:0;return this[0]=this[0]*r,this[1]=this[1]*r,this[2]=this[2]*r,this[3]=this[3]*r,t===0&&(this[3]=1),this.check()}rotateX(t){return pa(this,this,t),this.check()}rotateY(t){return ga(this,this,t),this.check()}rotateZ(t){return _a(this,this,t),this.check()}scale(t){return va(this,this,t),this.check()}slerp(t,r,s){let i,n,o;switch(arguments.length){case 1:({start:i=Nf,target:n,ratio:o}=t);break;case 2:i=this,n=t,o=r;break;default:i=t,n=r,o=s}return sr(this,i,n,o),this.check()}transformVector4(t,r=new is){return la(r,t,this),re(r,4)}lengthSq(){return this.lengthSquared()}setFromAxisAngle(t,r){return this.setAxisAngle(t,r)}premultiply(t){return this.multiplyLeft(t)}multiply(t){return this.multiplyRight(t)}};var kt=6356752314245179e-9,Lf={radii:[6378137,6378137,kt],radiiSquared:[6378137*6378137,6378137*6378137,kt*kt],oneOverRadii:[1/6378137,1/6378137,1/kt],oneOverRadiiSquared:[1/(6378137*6378137),1/(6378137*6378137),1/(kt*kt)],maximumRadius:Math.max(6378137,6378137,kt),centerToleranceSquared:.1};function ls(e){return e}var xx=new _;function Gf(e,t=[],r=ls){return"longitude"in e?(t[0]=r(e.longitude),t[1]=r(e.latitude),t[2]=e.height):"x"in e?(t[0]=r(e.x),t[1]=r(e.y),t[2]=e.z):(t[0]=r(e[0]),t[1]=r(e[1]),t[2]=e[2]),t}function Ca(e,t=[]){return Gf(e,t,k._cartographicRadians?ls:Ti)}function zf(e,t,r=ls){return"longitude"in t?(t.longitude=r(e[0]),t.latitude=r(e[1]),t.height=e[2]):"x"in t?(t.x=r(e[0]),t.y=r(e[1]),t.z=e[2]):(t[0]=r(e[0]),t[1]=r(e[1]),t[2]=e[2]),t}function Aa(e,t){return zf(e,t,k._cartographicRadians?ls:Pi)}var Ia=1e-14,qf=new _,Oa={up:{south:"east",north:"west",west:"south",east:"north"},down:{south:"west",north:"east",west:"north",east:"south"},south:{up:"west",down:"east",west:"down",east:"up"},north:{up:"east",down:"west",west:"up",east:"down"},west:{up:"north",down:"south",north:"down",south:"up"},east:{up:"south",down:"north",north:"up",south:"down"}},on={north:[-1,0,0],east:[0,1,0],up:[0,0,1],south:[1,0,0],west:[0,-1,0],down:[0,0,-1]},ir={east:new _,north:new _,up:new _,west:new _,south:new _,down:new _},Bf=new _,Df=new _,Ff=new _;function an(e,t,r,s,i,n){let o=Oa[t]&&Oa[t][r];J(o&&(!s||s===o));let a,h,c,l=qf.copy(i);if(Mt(l.x,0,Ia)&&Mt(l.y,0,Ia)){let f=Math.sign(l.z);a=Bf.fromArray(on[t]),t!=="east"&&t!=="west"&&a.scale(f),h=Df.fromArray(on[r]),r!=="east"&&r!=="west"&&h.scale(f),c=Ff.fromArray(on[s]),s!=="east"&&s!=="west"&&c.scale(f)}else{let{up:f,east:d,north:m}=ir;d.set(-l.y,l.x,0).normalize(),e.geodeticSurfaceNormal(l,f),m.copy(f).cross(d);let{down:g,west:p,south:M}=ir;g.copy(f).scale(-1),p.copy(d).scale(-1),M.copy(m).scale(-1),a=ir[t],h=ir[r],c=ir[s]}return n[0]=a.x,n[1]=a.y,n[2]=a.z,n[3]=0,n[4]=h.x,n[5]=h.y,n[6]=h.z,n[7]=0,n[8]=c.x,n[9]=c.y,n[10]=c.z,n[11]=0,n[12]=l.x,n[13]=l.y,n[14]=l.z,n[15]=1,n}var Te=new _,Uf=new _,Vf=new _;function Na(e,t,r=[]){let{oneOverRadii:s,oneOverRadiiSquared:i,centerToleranceSquared:n}=t;Te.from(e);let o=Te.x,a=Te.y,h=Te.z,c=s.x,l=s.y,u=s.z,f=o*o*c*c,d=a*a*l*l,m=h*h*u*u,g=f+d+m,p=Math.sqrt(1/g);if(!Number.isFinite(p))return;let M=Uf;if(M.copy(e).scale(p),g<n)return M.to(r);let x=i.x,S=i.y,v=i.z,w=Vf;w.set(M.x*x*2,M.y*S*2,M.z*v*2);let P=(1-p)*Te.len()/(.5*w.len()),R=0,C,A,b,O;do{P-=R,C=1/(1+P*x),A=1/(1+P*S),b=1/(1+P*v);let N=C*C,B=A*A,L=b*b,et=N*C,Lt=B*A,Vt=L*b;O=f*N+d*B+m*L-1;let xe=-2*(f*et*x+d*Lt*S+m*Vt*v);R=O/xe}while(Math.abs(O)>U.EPSILON12);return Te.scale([C,A,b]).to(r)}var us=new _,La=new _,Wf=new _,Ct=new _,Hf=new _,fs=new _,I=class{constructor(t=0,r=0,s=0){this.centerToleranceSquared=U.EPSILON1,J(t>=0),J(r>=0),J(s>=0),this.radii=new _(t,r,s),this.radiiSquared=new _(t*t,r*r,s*s),this.radiiToTheFourth=new _(t*t*t*t,r*r*r*r,s*s*s*s),this.oneOverRadii=new _(t===0?0:1/t,r===0?0:1/r,s===0?0:1/s),this.oneOverRadiiSquared=new _(t===0?0:1/(t*t),r===0?0:1/(r*r),s===0?0:1/(s*s)),this.minimumRadius=Math.min(t,r,s),this.maximumRadius=Math.max(t,r,s),this.radiiSquared.z!==0&&(this.squaredXOverSquaredZ=this.radiiSquared.x/this.radiiSquared.z),Object.freeze(this)}equals(t){return this===t||!!(t&&this.radii.equals(t.radii))}toString(){return this.radii.toString()}cartographicToCartesian(t,r=[0,0,0]){let s=La,i=Wf,[,,n]=t;this.geodeticSurfaceNormalCartographic(t,s),i.copy(this.radiiSquared).scale(s);let o=Math.sqrt(s.dot(i));return i.scale(1/o),s.scale(n),i.add(s),i.to(r)}cartesianToCartographic(t,r=[0,0,0]){fs.from(t);let s=this.scaleToGeodeticSurface(fs,Ct);if(!s)return;let i=this.geodeticSurfaceNormal(s,La),n=Hf;n.copy(fs).subtract(s);let o=Math.atan2(i.y,i.x),a=Math.asin(i.z),h=Math.sign(we.dot(n,fs))*we.length(n);return Aa([o,a,h],r)}eastNorthUpToFixedFrame(t,r=new z){return an(this,"east","north","up",t,r)}localFrameToFixedFrame(t,r,s,i,n=new z){return an(this,t,r,s,i,n)}geocentricSurfaceNormal(t,r=[0,0,0]){return us.from(t).normalize().to(r)}geodeticSurfaceNormalCartographic(t,r=[0,0,0]){let s=Ca(t),i=s[0],n=s[1],o=Math.cos(n);return us.set(o*Math.cos(i),o*Math.sin(i),Math.sin(n)).normalize(),us.to(r)}geodeticSurfaceNormal(t,r=[0,0,0]){return us.from(t).scale(this.oneOverRadiiSquared).normalize().to(r)}scaleToGeodeticSurface(t,r){return Na(t,this,r)}scaleToGeocentricSurface(t,r=[0,0,0]){Ct.from(t);let s=Ct.x,i=Ct.y,n=Ct.z,o=this.oneOverRadiiSquared,a=1/Math.sqrt(s*s*o.x+i*i*o.y+n*n*o.z);return Ct.multiplyScalar(a).to(r)}transformPositionToScaledSpace(t,r=[0,0,0]){return Ct.from(t).scale(this.oneOverRadii).to(r)}transformPositionFromScaledSpace(t,r=[0,0,0]){return Ct.from(t).scale(this.radii).to(r)}getSurfaceNormalIntersectionWithZAxis(t,r=0,s=[0,0,0]){J(Mt(this.radii.x,this.radii.y,U.EPSILON15)),J(this.radii.z>0),Ct.from(t);let i=Ct.z*(1-this.squaredXOverSquaredZ);if(!(Math.abs(i)>=this.radii.z-r))return Ct.set(0,0,i).to(s)}};I.WGS84=new I(6378137,6378137,kt);var hn;(function(e){e.OUTSIDE="outside",e.INTERSECTING="intersecting",e.INSIDE="inside"})(hn||(hn={}));var Nx=new _,Lx=new _;var nr=new _,Ga=new _,rt=class e{constructor(t=[0,0,0],r=0){this.radius=-0,this.center=new _,this.fromCenterRadius(t,r)}fromCenterRadius(t,r){return this.center.from(t),this.radius=r,this}fromCornerPoints(t,r){return r=nr.from(r),this.center=new _().from(t).add(r).scale(.5),this.radius=this.center.distance(r),this}equals(t){return this===t||!!t&&this.center.equals(t.center)&&this.radius===t.radius}clone(){return new e(this.center,this.radius)}union(t){let r=this.center,s=this.radius,i=t.center,n=t.radius,o=nr.copy(i).subtract(r),a=o.magnitude();if(s>=a+n)return this.clone();if(n>=a+s)return t.clone();let h=(s+a+n)*.5;return Ga.copy(o).scale((-s+h)/a).add(r),this.center.copy(Ga),this.radius=h,this}expand(t){let s=nr.from(t).subtract(this.center).magnitude();return s>this.radius&&(this.radius=s),this}transform(t){this.center.transform(t);let r=as.getScaling(nr,t);return this.radius=Math.max(r[0],Math.max(r[1],r[2]))*this.radius,this}distanceSquaredTo(t){let r=this.distanceTo(t);return r*r}distanceTo(t){let s=nr.from(t).subtract(this.center);return Math.max(0,s.len()-this.radius)}intersectPlane(t){let r=this.center,s=this.radius,n=t.normal.dot(r)+t.distance;return n<-s?"outside":n<s?"intersecting":"inside"}};var Yf=new _,Zf=new _,ms=new _,ds=new _,ps=new _,$f=new _,Qf=new _,jt={COLUMN0ROW0:0,COLUMN0ROW1:1,COLUMN0ROW2:2,COLUMN1ROW0:3,COLUMN1ROW1:4,COLUMN1ROW2:5,COLUMN2ROW0:6,COLUMN2ROW1:7,COLUMN2ROW2:8},zt=class e{constructor(t=[0,0,0],r=[0,0,0,0,0,0,0,0,0]){this.center=new _().from(t),this.halfAxes=new j(r)}get halfSize(){let t=this.halfAxes.getColumn(0),r=this.halfAxes.getColumn(1),s=this.halfAxes.getColumn(2);return[new _(t).len(),new _(r).len(),new _(s).len()]}get quaternion(){let t=this.halfAxes.getColumn(0),r=this.halfAxes.getColumn(1),s=this.halfAxes.getColumn(2),i=new _(t).normalize(),n=new _(r).normalize(),o=new _(s).normalize();return new wt().fromMatrix3(new j([...i,...n,...o]))}fromCenterHalfSizeQuaternion(t,r,s){let i=new wt(s),n=new j().fromQuaternion(i);return n[0]=n[0]*r[0],n[1]=n[1]*r[0],n[2]=n[2]*r[0],n[3]=n[3]*r[1],n[4]=n[4]*r[1],n[5]=n[5]*r[1],n[6]=n[6]*r[2],n[7]=n[7]*r[2],n[8]=n[8]*r[2],this.center=new _().from(t),this.halfAxes=n,this}clone(){return new e(this.center,this.halfAxes)}equals(t){return this===t||!!t&&this.center.equals(t.center)&&this.halfAxes.equals(t.halfAxes)}getBoundingSphere(t=new rt){let r=this.halfAxes,s=r.getColumn(0,ms),i=r.getColumn(1,ds),n=r.getColumn(2,ps),o=Yf.copy(s).add(i).add(n);return t.center.copy(this.center),t.radius=o.magnitude(),t}intersectPlane(t){let r=this.center,s=t.normal,i=this.halfAxes,n=s.x,o=s.y,a=s.z,h=Math.abs(n*i[jt.COLUMN0ROW0]+o*i[jt.COLUMN0ROW1]+a*i[jt.COLUMN0ROW2])+Math.abs(n*i[jt.COLUMN1ROW0]+o*i[jt.COLUMN1ROW1]+a*i[jt.COLUMN1ROW2])+Math.abs(n*i[jt.COLUMN2ROW0]+o*i[jt.COLUMN2ROW1]+a*i[jt.COLUMN2ROW2]),c=s.dot(r)+t.distance;return c<=-h?"outside":c>=h?"inside":"intersecting"}distanceTo(t){return Math.sqrt(this.distanceSquaredTo(t))}distanceSquaredTo(t){let r=Zf.from(t).subtract(this.center),s=this.halfAxes,i=s.getColumn(0,ms),n=s.getColumn(1,ds),o=s.getColumn(2,ps),a=i.magnitude(),h=n.magnitude(),c=o.magnitude();i.normalize(),n.normalize(),o.normalize();let l=0,u;return u=Math.abs(r.dot(i))-a,u>0&&(l+=u*u),u=Math.abs(r.dot(n))-h,u>0&&(l+=u*u),u=Math.abs(r.dot(o))-c,u>0&&(l+=u*u),l}computePlaneDistances(t,r,s=[-0,-0]){let i=Number.POSITIVE_INFINITY,n=Number.NEGATIVE_INFINITY,o=this.center,a=this.halfAxes,h=a.getColumn(0,ms),c=a.getColumn(1,ds),l=a.getColumn(2,ps),u=$f.copy(h).add(c).add(l).add(o),f=Qf.copy(u).subtract(t),d=r.dot(f);return i=Math.min(d,i),n=Math.max(d,n),u.copy(o).add(h).add(c).subtract(l),f.copy(u).subtract(t),d=r.dot(f),i=Math.min(d,i),n=Math.max(d,n),u.copy(o).add(h).subtract(c).add(l),f.copy(u).subtract(t),d=r.dot(f),i=Math.min(d,i),n=Math.max(d,n),u.copy(o).add(h).subtract(c).subtract(l),f.copy(u).subtract(t),d=r.dot(f),i=Math.min(d,i),n=Math.max(d,n),o.copy(u).subtract(h).add(c).add(l),f.copy(u).subtract(t),d=r.dot(f),i=Math.min(d,i),n=Math.max(d,n),o.copy(u).subtract(h).add(c).subtract(l),f.copy(u).subtract(t),d=r.dot(f),i=Math.min(d,i),n=Math.max(d,n),o.copy(u).subtract(h).subtract(c).add(l),f.copy(u).subtract(t),d=r.dot(f),i=Math.min(d,i),n=Math.max(d,n),o.copy(u).subtract(h).subtract(c).subtract(l),f.copy(u).subtract(t),d=r.dot(f),i=Math.min(d,i),n=Math.max(d,n),s[0]=i,s[1]=n,s}transform(t){this.center.transformAsPoint(t);let r=this.halfAxes.getColumn(0,ms);r.transformAsPoint(t);let s=this.halfAxes.getColumn(1,ds);s.transformAsPoint(t);let i=this.halfAxes.getColumn(2,ps);return i.transformAsPoint(t),this.halfAxes=new j([...r,...s,...i]),this}getTransform(){throw new Error("not implemented")}};var za=new _,qa=new _,$=class e{constructor(t=[0,0,1],r=0){this.normal=new _,this.distance=-0,this.fromNormalDistance(t,r)}fromNormalDistance(t,r){return J(Number.isFinite(r)),this.normal.from(t).normalize(),this.distance=r,this}fromPointNormal(t,r){t=za.from(t),this.normal.from(r).normalize();let s=-this.normal.dot(t);return this.distance=s,this}fromCoefficients(t,r,s,i){return this.normal.set(t,r,s),J(Mt(this.normal.len(),1)),this.distance=i,this}clone(){return new e(this.normal,this.distance)}equals(t){return Mt(this.distance,t.distance)&&Mt(this.normal,t.normal)}getPointDistance(t){return this.normal.dot(t)+this.distance}transform(t){let r=qa.copy(this.normal).transformAsVector(t).normalize(),s=this.normal.scale(-this.distance).transform(t);return this.fromPointNormal(s,r)}projectPointOntoPlane(t,r=[0,0,0]){let s=za.from(t),i=this.getPointDistance(s),n=qa.copy(this.normal).scale(i);return s.subtract(n).to(r)}intersectWithRay(t,r=new _){let s=t.origin,i=t.direction,n=this.normal,o=n.dot(i);if(Math.abs(o)<U.EPSILON15)return;let a=(-this.distance-n.dot(s))/o;if(!(a<0))return r.copy(i).multiplyByScalar(a).add(s)}};var Ba=[new _([1,0,0]),new _([0,1,0]),new _([0,0,1])],Da=new _,Xf=new _,tt=class e{constructor(t=[]){this.planes=t}fromBoundingSphere(t){this.planes.length=2*Ba.length;let r=t.center,s=t.radius,i=0;for(let n of Ba){let o=this.planes[i],a=this.planes[i+1];o||(o=this.planes[i]=new $),a||(a=this.planes[i+1]=new $);let h=Da.copy(n).scale(-s).add(r);o.fromPointNormal(h,n);let c=Da.copy(n).scale(s).add(r),l=Xf.copy(n).negate();a.fromPointNormal(c,l),i+=2}return this}computeVisibility(t){let r="inside";for(let s of this.planes)switch(t.intersectPlane(s)){case"outside":return"outside";case"intersecting":r="intersecting";break;default:}return r}computeVisibilityWithPlaneMask(t,r){if(J(Number.isFinite(r),"parentPlaneMask is required."),r===e.MASK_OUTSIDE||r===e.MASK_INSIDE)return r;let s=e.MASK_INSIDE,i=this.planes;for(let n=0;n<this.planes.length;++n){let o=n<31?1<<n:0;if(n<31&&(r&o)===0)continue;let a=i[n],h=t.intersectPlane(a);if(h==="outside")return e.MASK_OUTSIDE;h==="intersecting"&&(s|=o)}return s}};tt.MASK_OUTSIDE=4294967295;tt.MASK_INSIDE=0;tt.MASK_INDETERMINATE=2147483647;var ly=new _,uy=new _,fy=new _,my=new _,dy=new _;var yy=new _,Sy=new _,vy=new _,Ey=new _,wy=new _,Ty=new _,Py=new _,by=new _,Ry=new _,Cy=new _,Ay=new _,Iy=new _;var Ly=new j,Gy=new j,zy=new j,qy=new j,By=new j;var jy=new _,Wy=new _,Hy=new _,Yy=new _,Zy=new _,$y=new j,Qy={diagonal:new j,unitary:new j};var em=new _,cn=new _,rm=new z,sm=new _,or=class{constructor(t,r=I.WGS84){let s=r.scaleToGeodeticSurface(t,em),i=r.eastNorthUpToFixedFrame(s,rm);this._origin=new _(s),this._xAxis=new _(cn.from(i.getColumn(0))),this._yAxis=new _(cn.from(i.getColumn(1)));let n=new _(cn.from(i.getColumn(2)));this._plane=new $().fromPointNormal(this._origin,n)}projectPointToNearestOnPlane(t,r){r||(r=new Et);let i=this._plane.projectPointOntoPlane(t,sm).subtract(this._origin),n=this._xAxis.dot(i),o=this._yAxis.dot(i);return r.x=n,r.y=o,r}get plane(){return this._plane}get origin(){return this._origin}get xAxis(){return this._xAxis}get yAxis(){return this._yAxis}get zAxis(){return this._plane.normal}};var Pe=class{constructor(t,r,s,i){this.west=t,this.south=r,this.east=s,this.north=i}static center(t,r){r||(r=new _);let s=t.east,i=t.west;s<i&&(s+=U.TWO_PI);let n=bi((i+s)*.5,"negative-pi-to-pi"),o=(t.south+t.north)*.5;return r.x=n,r.y=o,r.z=0,r}get width(){let t=this.east,r=this.west;return t<r&&(t+=U.TWO_PI),t-r}};var im=new _,nm=new _,om=new _,am=new _,hm=new _,cm=new _,lm=new _,um=new _,Va=new _,fm=new _,ka=new _,mm=new _,dm=new Et,pm=new Et,gm=new Et,_m=new Et,Mm=new Et,xm=new $,ym=new _,Sm=new _,vm=new _,Em=new _,wm=new Et,Tm=new _,Pm=new _,bm=new _(1,0,0),Rm=new _(0,0,1);function ln(e,t=I.WGS84,r={}){if(!e||e.length!==6||e.some(x=>!Number.isFinite(x)))throw new Error("makeOBBFromRegion: region must contain exactly six finite numbers");let s=r.units==="degrees"?Zr(1):1,[i,n,o,a,h,c]=e;if(h>c)throw new Error("makeOBBFromRegion: minimumHeight must not exceed maximumHeight");let l=n*s,u=a*s,f=ja(i*s),d=ja(o*s);o*s-i*s>=U.TWO_PI-1e-12&&(d=f+U.TWO_PI);let g=1e-12;if(l>u||l<-U.PI_OVER_TWO-g||u>U.PI_OVER_TWO+g)throw new Error("makeOBBFromRegion: latitude must be within [-\u03C0/2, \u03C0/2] and south \u2264 north");let p=Math.max(-U.PI_OVER_TWO,Math.min(U.PI_OVER_TWO,l)),M=Math.max(-U.PI_OVER_TWO,Math.min(U.PI_OVER_TWO,u));return Cm([f,p,d,M,h,c],t,r.transform)}function ja(e){let t=((e+Math.PI)%U.TWO_PI+U.TWO_PI)%U.TWO_PI-Math.PI;return t===-Math.PI&&e>0?Math.PI:t}function Cm(e,t,r){let s=new zt,[i,n,o,a,h,c]=e,l=ct(a),u=ct(n),f,d,m,g,p,M,x,S=new Pe(i,n,o,a),v=Pe.center(S,nm),w=new _([ct(v.x),ct(v.y),0]),P=v.x,R=w.x;if(S.width<=U.PI){let xi=ct(i),x0=t.cartographicToCartesian(w),Gt=new or(x0,t),y0=u<0&&l>0?0:w.y,S0=om.copy([R,l,c]),yi=am.copy([xi,l,c]),v0=hm.copy([xi,y0,c]),Si=cm.copy([xi,u,c]),E0=lm.copy([R,u,c]),w0=t.cartographicToCartesian(S0,um),vi=t.cartographicToCartesian(yi,Va),T0=t.cartographicToCartesian(v0,fm),Ei=t.cartographicToCartesian(Si,ka),P0=t.cartographicToCartesian(E0,mm),b0=Gt.projectPointToNearestOnPlane(w0,dm),To=Gt.projectPointToNearestOnPlane(vi,pm),R0=Gt.projectPointToNearestOnPlane(T0,gm),Po=Gt.projectPointToNearestOnPlane(Ei,_m),C0=Gt.projectPointToNearestOnPlane(P0,Mm);return g=Math.min(To.x,R0.x,Po.x),f=-g,d=Math.max(To.y,b0.y),p=Math.min(Po.y,C0.y),yi.z=Si.z=h,vi=t.cartographicToCartesian(yi,Va),Ei=t.cartographicToCartesian(Si,ka),x=Gt.plane,M=Math.min(x.getPointDistance(vi),x.getPointDistance(Ei)),m=c,Wa(Ya(Gt.origin,Gt.xAxis,Gt.yAxis,Gt.zAxis,g,f,p,d,M,m,s),r)}let C=ct(o),A=n>0,b=a<0,O=A?u:b?l:0,N=t.cartographicToCartesian([R,O,c],ym);N.z=0;let L=Math.abs(N.x)<U.EPSILON10&&Math.abs(N.y)<U.EPSILON10?bm:Sm.copy(N).normalize(),et=Rm,Lt=vm.copy(L).cross(et);x=xm.fromPointNormal(N,L);let Vt=t.cartographicToCartesian([ct(P+U.PI_OVER_TWO),O,c],Em);f=x.projectPointOntoPlane(Vt,wm).dot(Lt),g=-f;let xe=b?h:c,_0=A?h:c;d=Ha(t,l,xe,!0),p=Ha(t,u,_0,!1);let M0=t.cartographicToCartesian([C,O,c],Pm);return M=x.getPointDistance(M0),m=0,Wa(Ya(N,Lt,et,L,g,f,p,d,M,m,s),r)}function Wa(e,t){if(!t)return e;let r=[0,1,2].map(a=>e.halfAxes.getColumn(a,new _)),s=t.transformAsPoint(e.center),i=[1/0,1/0,1/0],n=[-1/0,-1/0,-1/0];for(let a=0;a<8;a++){let h=new _(s);for(let c=0;c<3;c++){let l=t.transformAsVector(r[c]);h.add(new _(l).scale((a&1<<c)===0?-1:1))}for(let c=0;c<3;c++)i[c]=Math.min(i[c],h[c]),n[c]=Math.max(n[c],h[c])}e.center.copy(i).add(n).scale(.5);let o=new _(n).subtract(i).scale(.5);return e.halfAxes=new j().set(o.x,0,0,0,o.y,0,0,0,o.z),e}function Ha(e,t,r,s){let i=s?-1/0:1/0;for(let n of[0,90,180,270]){let o=e.cartographicToCartesian([n,t,r],Tm).z;i=s?Math.max(i,o):Math.min(i,o)}return i}function Ya(e,t,r,s,i,n,o,a,h,c,l){let u=l.center,f=l.halfAxes;f.setColumn(0,t),f.setColumn(1,r),f.setColumn(2,s);let d=im.set((i+n)/2,(o+a)/2,(h+c)/2).transformByMatrix3(f),m=(n-i)/2,g=(a-o)/2,p=(c-h)/2;return f[0]*=m,f[1]*=m,f[2]*=m,f[3]*=g,f[4]*=g,f[5]*=g,f[6]*=p,f[7]*=p,f[8]*=p,u.copy(e).add(d),l}function ar(){let e;if(typeof window<"u"&&window.performance)e=window.performance.now();else if(typeof process<"u"&&process.hrtime){let t=process.hrtime();e=t[0]*1e3+t[1]/1e6}else e=Date.now();return e}var le=class{constructor(t,r){this.sampleSize=1,this.time=0,this.count=0,this.samples=0,this.lastTiming=0,this.lastSampleTime=0,this.lastSampleCount=0,this._count=0,this._time=0,this._samples=0,this._startTime=0,this._timerPending=!1,this.name=t,this.type=r,this.reset()}reset(){return this.time=0,this.count=0,this.samples=0,this.lastTiming=0,this.lastSampleTime=0,this.lastSampleCount=0,this._count=0,this._time=0,this._samples=0,this._startTime=0,this._timerPending=!1,this}setSampleSize(t){return this.sampleSize=t,this}incrementCount(){return this.addCount(1),this}decrementCount(){return this.subtractCount(1),this}addCount(t){return this._count+=t,this._samples++,this._checkSampling(),this}subtractCount(t){return this._count-=t,this._samples++,this._checkSampling(),this}addTime(t){return this._time+=t,this.lastTiming=t,this._samples++,this._checkSampling(),this}timeStart(){return this._startTime=ar(),this._timerPending=!0,this}timeEnd(){return this._timerPending?(this.addTime(ar()-this._startTime),this._timerPending=!1,this._checkSampling(),this):this}getSampleAverageCount(){return this.sampleSize>0?this.lastSampleCount/this.sampleSize:0}getSampleAverageTime(){return this.sampleSize>0?this.lastSampleTime/this.sampleSize:0}getSampleHz(){return this.lastSampleTime>0?this.sampleSize/(this.lastSampleTime/1e3):0}getAverageCount(){return this.samples>0?this.count/this.samples:0}getAverageTime(){return this.samples>0?this.time/this.samples:0}getHz(){return this.time>0?this.samples/(this.time/1e3):0}_checkSampling(){this._samples===this.sampleSize&&(this.lastSampleTime=this._time,this.lastSampleCount=this._count,this.count+=this._count,this.time+=this._time,this.samples+=this._samples,this._time=0,this._count=0,this._samples=0)}};var Tt=class{constructor(t){this.stats={},this.id=t.id,this.stats={},this._initializeStats(t.stats),Object.seal(this)}get(t,r="count"){return this._getOrCreate({name:t,type:r})}get size(){return Object.keys(this.stats).length}reset(){for(let t of Object.values(this.stats))t.reset();return this}forEach(t){for(let r of Object.values(this.stats))t(r)}getTable(){let t={};return this.forEach(r=>{t[r.name]={time:r.time||0,count:r.count||0,average:r.getAverageTime()||0,hz:r.getHz()||0}}),t}_initializeStats(t=[]){t.forEach(r=>this._getOrCreate(r))}_getOrCreate(t){let{name:r,type:s}=t,i=this.stats[r];return i||(t instanceof le?i=t:i=new le(r,s),this.stats[r]=i),i}};function At(e,t){if(!e)throw new Error(t||"loader assertion failed.")}var Am="Queued Requests",Im="Active Requests",Om="Cancelled Requests",Nm="Queued Requests Ever",Lm="Active Requests Ever",Gm={id:"request-scheduler",throttleRequests:!0,maxRequests:6,debounceTime:0},Wt=class{props;stats;activeRequestCount=0;requestQueue=[];requestMap=new Map;updateTimer=null;constructor(t={}){this.props={...Gm,...t},this.stats=new Tt({id:this.props.id}),this.stats.get(Am),this.stats.get(Im),this.stats.get(Om),this.stats.get(Nm),this.stats.get(Lm)}setProps(t){t.throttleRequests!==void 0&&(this.props.throttleRequests=t.throttleRequests),t.maxRequests!==void 0&&(this.props.maxRequests=t.maxRequests),t.debounceTime!==void 0&&(this.props.debounceTime=t.debounceTime)}scheduleRequest(t,r=()=>0){if(!this.props.throttleRequests)return Promise.resolve({done:()=>{}});if(this.requestMap.has(t))return this.requestMap.get(t);let s={handle:t,priority:0,getPriority:r},i=new Promise(n=>(s.resolve=n,s));return this.requestQueue.push(s),this.requestMap.set(t,i),this._issueNewRequests(),i}_issueRequest(t){let{handle:r,resolve:s}=t,i=!1,n=()=>{i||(i=!0,this.requestMap.delete(r),this.activeRequestCount--,this._issueNewRequests())};return this.activeRequestCount++,s?s({done:n}):Promise.resolve({done:n})}_issueNewRequests(){this.updateTimer!==null&&clearTimeout(this.updateTimer),this.updateTimer=setTimeout(()=>this._issueNewRequestsAsync(),this.props.debounceTime)}_issueNewRequestsAsync(){this.updateTimer!==null&&clearTimeout(this.updateTimer),this.updateTimer=null;let t=Math.max(this.props.maxRequests-this.activeRequestCount,0);if(t!==0){this._updateAllRequests();for(let r=0;r<t;++r){let s=this.requestQueue.shift();s&&this._issueRequest(s)}}}_updateAllRequests(){let t=this.requestQueue;for(let r=0;r<t.length;++r){let s=t[r];this._updateRequest(s)||(t.splice(r,1),this.requestMap.delete(s.handle),r--)}t.sort((r,s)=>r.priority-s.priority)}_updateRequest(t){return t.priority=t.getPriority(t.handle),t.priority<0?(t.resolve(null),!1):!0}};var zm=Number.POSITIVE_INFINITY,qm=Number.POSITIVE_INFINITY,hr=class{maxEntries;maxBytes;getByteLength;onRemove;entries=new Map;retainedByteLength=0;constructor(t={}){this.maxEntries=Za(t.maxEntries,zm,"maxEntries"),this.maxBytes=Za(t.maxBytes,qm,"maxBytes"),this.getByteLength=t.getByteLength||(()=>0),this.onRemove=t.onRemove}get size(){return this.entries.size}get pendingSize(){let t=0;for(let r of this.entries.values())t+=r.pending?1:0;return t}get byteLength(){return this.retainedByteLength}get(t,r){let s=this.entries.get(t);if(s)return this.touch(t,s),this.waitForEntry(t,s,r)}has(t){return this.entries.has(t)}set(t,r){this.removeEntry(t,"replace");let s=$a(this.getByteLength(r)),i={promise:Promise.resolve(r),pending:!1,waiterCount:0,byteLength:s};return this.entries.set(t,i),this.retainedByteLength+=s,this.trim(),r}getOrLoad(t,r,s){let i=this.get(t,s);if(i)return i;if(s?.aborted)return Promise.reject(un());let n=new AbortController,o,a,c={promise:new Promise((l,u)=>{o=l,a=u}),controller:n,pending:!0,waiterCount:0,byteLength:0};this.entries.set(t,c),c.promise.then(l=>this.handleLoadedValue(t,c,l),()=>this.handleLoadError(t,c));try{Promise.resolve(r(n.signal)).then(o,a)}catch(l){a(l)}return this.waitForEntry(t,c,s)}delete(t){return this.removeEntry(t,"delete")}clear(){for(let t of Array.from(this.entries.keys()))this.removeEntry(t,"clear")}handleLoadedValue(t,r,s){if(this.entries.get(t)===r){r.pending=!1,r.controller=void 0;try{r.byteLength=$a(this.getByteLength(s))}catch{this.removeEntry(t,"error");return}this.retainedByteLength+=r.byteLength,this.trim()}}handleLoadError(t,r){this.entries.get(t)===r&&this.removeEntry(t,r.controller?.signal.aborted?"abort":"error")}waitForEntry(t,r,s){return s?.aborted?Promise.reject(un()):r.pending?(r.waiterCount++,new Promise((i,n)=>{let o=!0,a=()=>{o&&(o=!1,s?.removeEventListener("abort",h),r.waiterCount--)},h=()=>{o&&(a(),n(un()),r.pending&&r.waiterCount===0&&this.entries.get(t)===r&&this.removeEntry(t,"abort"))};s?.addEventListener("abort",h,{once:!0}),r.promise.then(c=>{o&&(a(),i(c))},c=>{o&&(a(),n(c))})})):r.promise}touch(t,r){this.entries.delete(t),this.entries.set(t,r)}trim(){let t=this.entries.size-this.pendingSize;if(!(t<=this.maxEntries&&this.retainedByteLength<=this.maxBytes)){for(let[r,s]of this.entries)if(s.pending||(this.removeEntry(r,"evict"),t--),t<=this.maxEntries&&this.retainedByteLength<=this.maxBytes)break}}removeEntry(t,r){let s=this.entries.get(t);return s?(this.entries.delete(t),this.retainedByteLength-=s.byteLength,s.pending&&s.controller?.abort(),this.onRemove?.(t,r),!0):!1}};function un(){let e=new Error("Request aborted");return e.name="AbortError",e}function Za(e,t,r){let s=e??t;if(s<0||Number.isNaN(s))throw new Error(`${r} must be a non-negative number`);return s}function $a(e){if(!Number.isFinite(e)||e<0)throw new Error("Request cache entry byte length must be a non-negative finite number");return e}var W={logicalRanges:"Logical Range Requests",rangeBatches:"Range Request Batches",transportRanges:"Transport Ranges Created",completedTransportRanges:"Range Transport Requests Completed",coalescedRanges:"Coalesced Logical Ranges",requestedBytes:"Logical Range Request Bytes",transportBytes:"Range Transport Bytes Requested",responseBytes:"Range Response Bytes",networkTimeMs:"Range Network Time",overfetchBytes:"Range Overfetch Bytes",failedTransportRanges:"Range Transport Requests Failed",abortedLogicalRanges:"Aborted Logical Range Requests",fullResponseFallbacks:"Full Response Fallbacks"},fn={batchDelayMs:50,maxGapBytes:65536,rangeExpansionBytes:65536,maxMergedBytes:8388608,stats:Ka("range-request-scheduler-default"),onEvent:()=>{}},_s=class{props;stats;onEvent;pendingRequests=[];flushTimer=null;constructor(t={}){let r=t.rangeExpansionBytes??t.maxGapBytes??fn.rangeExpansionBytes;this.props={batchDelayMs:t.batchDelayMs??fn.batchDelayMs,maxGapBytes:t.maxGapBytes??r,rangeExpansionBytes:r,maxMergedBytes:t.maxMergedBytes??fn.maxMergedBytes},this.stats=t.stats||Ka("range-request-scheduler"),this.onEvent=t.onEvent,Ja(this.stats)}scheduleRequest(t){if(t.length<0)return Promise.reject(new Error("Byte range length cannot be negative"));if(t.signal?.aborted)return Promise.reject(Xa());if(t.length===0)return Promise.resolve(new ArrayBuffer(0));let r=new Promise((s,i)=>{let n={...t,resolve:s,reject:i,settled:!1};t.signal&&(n.abortListener=()=>{this.abortRequest(n),n.onAbort?.()},t.signal.addEventListener("abort",n.abortListener,{once:!0})),this.pendingRequests.push(n)});return this.trackEvent({type:"queued",sourceId:t.sourceId,offset:t.offset,length:t.length,logicalRequestCount:1,logicalBytes:t.length}),this.scheduleFlush(),r}fetch(t){let r=t.fetch||globalThis.fetch;return this.scheduleRequest({sourceId:t.sourceId||t.url,offset:t.offset,length:t.length,signal:t.signal,isolationKey:t.isolationKey??{},fetchRange:(s,i,n)=>Dm({url:t.url,offset:s,length:i,signal:n,fetch:r,fetchOptions:t.fetchOptions})})}flush(){this.flushTimer&&(clearTimeout(this.flushTimer),this.flushTimer=null);let t=this.pendingRequests;this.pendingRequests=[];let r=t.filter(i=>i.settled||i.signal?.aborted?(this.abortRequest(i),!1):!0),s=this.mergeRequests(r);r.length>0&&this.trackBatch(r,s);for(let i of s)this.fetchMergedRequest(i)}scheduleFlush(){this.flushTimer||(this.flushTimer=setTimeout(()=>this.flush(),this.props.batchDelayMs))}mergeRequests(t){t.sort((s,i)=>s.sourceId!==i.sourceId?s.sourceId<i.sourceId?-1:1:s.offset-i.offset);let r=[];for(let s of t){let i=s.offset+s.length,n=r[r.length-1];n&&Fm(n,s,this.props)?(n.endOffset=Math.max(n.endOffset,i),n.requests.push(s)):r.push({sourceId:s.sourceId,isolationKey:s.isolationKey??s.sourceId,offset:s.offset,endOffset:i,fetchRange:s.fetchRange,requests:[s]})}return r}async fetchMergedRequest(t){let{offset:r,endOffset:s,fetchRange:i,requests:n}=t,o=new AbortController,a=cr(),h=()=>{n.every(c=>c.signal?.aborted)&&o.abort()};try{for(let p of n)p.onAbort=h;if(h(),n.every(p=>p.settled))return;let c=mn(n),l=s-r;this.trackEvent({type:"request",sourceId:t.sourceId,offset:r,length:l,logicalRequestCount:n.length,logicalBytes:c,transportBytes:l,overfetchBytes:Math.max(l-c,0)});let u=Um(await i(r,l,o.signal)),{arrayBuffer:f}=u,d=u.fullResponse&&r===0&&f.byteLength<l,m=f.byteLength<l&&Number.isSafeInteger(u.sourceByteLength)&&r+f.byteLength===u.sourceByteLength;if(f.byteLength!==l&&!d&&!m)throw new Error(`Byte-range transport returned ${f.byteLength} bytes; expected ${l}`);let g=u.networkTimeMs??cr()-a;this.trackEvent({type:"response",sourceId:t.sourceId,offset:r,length:l,logicalRequestCount:n.length,logicalBytes:c,transportBytes:l,responseBytes:u.transportBytes??f.byteLength,networkTimeMs:g,overfetchBytes:Math.max(l-c,0),status:u.status,fullResponse:u.fullResponse});for(let p of n){if(p.settled)continue;let M=p.offset-r;p.settled=!0,p.resolve(f.slice(M,M+p.length))}}catch(c){this.trackEvent({type:"error",sourceId:t.sourceId,offset:r,length:s-r,logicalRequestCount:n.length,logicalBytes:mn(n),networkTimeMs:cr()-a,error:c});for(let l of n)l.settled||(l.signal?.aborted?this.abortRequest(l):(l.settled=!0,l.reject(c)))}finally{for(let c of n)c.abortListener&&c.signal?.removeEventListener("abort",c.abortListener),c.onAbort=void 0}}abortRequest(t){t.settled||(t.settled=!0,t.reject(Xa()),this.trackEvent({type:"abort",sourceId:t.sourceId,offset:t.offset,length:t.length,logicalRequestCount:1,logicalBytes:t.length}))}trackEvent(t){Bm(this.stats,t);try{this.onEvent?.(t)}catch{}}trackBatch(t,r){let s=mn(t),i=r.reduce((n,o)=>n+o.endOffset-o.offset,0);this.trackEvent({type:"batch",logicalRequestCount:t.length,transportRequestCount:r.length,logicalBytes:s,transportBytes:i,overfetchBytes:Math.max(i-s,0)})}};function Bm(e,t){switch((t.type==="response"||t.type==="error")&&t.networkTimeMs!==void 0&&e.get(W.networkTimeMs,"time").addTime(t.networkTimeMs),t.type){case"queued":e.get(W.logicalRanges,"count").incrementCount(),e.get(W.requestedBytes,"count").addCount(t.logicalBytes||0);break;case"batch":e.get(W.rangeBatches,"count").incrementCount(),e.get("Logical Ranges Batched","count").addCount(t.logicalRequestCount||0),e.get(W.transportRanges,"count").addCount(t.transportRequestCount||0),e.get(W.coalescedRanges,"count").addCount(Math.max((t.logicalRequestCount||0)-(t.transportRequestCount||0),0)),e.get(W.transportBytes,"count").addCount(t.transportBytes||0),e.get(W.overfetchBytes,"count").addCount(t.overfetchBytes||0);break;case"response":e.get(W.completedTransportRanges,"count").incrementCount(),e.get(W.responseBytes,"count").addCount(t.responseBytes||0),t.fullResponse&&e.get(W.fullResponseFallbacks,"count").incrementCount();break;case"error":e.get(W.failedTransportRanges,"count").incrementCount();break;case"abort":e.get(W.abortedLogicalRanges,"count").incrementCount();break;default:}}function Ka(e="range-request-scheduler"){let t=new Tt({id:e});return Ja(t),t}async function Dm(e){let t=Wm(e.signal),r=cr();try{let s=!1,i=await e.fetch(e.url,Qa(e.fetchOptions,e.offset,e.length,t.signal));if(i.status===416&&e.offset===0){let h=km(i.headers.get("Content-Range"));if(!h)throw new Error("Missing content-length on 416 response");i=await e.fetch(e.url,Qa(e.fetchOptions,0,h,t.signal)),s=!0}if(i.status===200)throw t.abort(),await Hm(i),new Error("Byte-range request failed: server returned 200 instead of 206");if(i.status!==206&&!i.ok)throw new Error(`Bad response code: ${i.status}`);let n=await i.arrayBuffer(),o=i.headers.get("Content-Range"),a=jm(o);if(o&&!a)throw new Error(`Invalid Content-Range header: ${o}`);if(a){let h=a.endOffset-a.offset+1,c=e.offset+e.length-1;if(a.offset!==e.offset||a.endOffset>c||h!==n.byteLength||a.sourceByteLength!==void 0&&a.endOffset>=a.sourceByteLength)throw new Error(`Content-Range does not match requested range: ${o}`)}return{arrayBuffer:n,status:i.status,sourceByteLength:a?.sourceByteLength,transportBytes:n.byteLength,networkTimeMs:cr()-r,fullResponse:s}}finally{t.removeAbortListener()}}function Fm(e,t,r){if(e.sourceId!==t.sourceId||e.isolationKey!==(t.isolationKey??t.sourceId))return!1;let s=t.offset+t.length,i=t.offset-e.endOffset,n=Math.max(e.endOffset,s)-e.offset;return i<=r.rangeExpansionBytes&&n<=r.maxMergedBytes}function Ja(e){e.get(W.logicalRanges,"count"),e.get(W.requestedBytes,"count"),e.get(W.rangeBatches,"count"),e.get("Logical Ranges Batched","count"),e.get(W.transportRanges,"count"),e.get(W.coalescedRanges,"count"),e.get(W.transportBytes,"count"),e.get(W.completedTransportRanges,"count"),e.get(W.responseBytes,"count"),e.get(W.networkTimeMs,"time"),e.get(W.overfetchBytes,"count"),e.get(W.fullResponseFallbacks,"count"),e.get(W.failedTransportRanges,"count"),e.get(W.abortedLogicalRanges,"count")}function mn(e){return e.reduce((t,r)=>t+r.length,0)}function Um(e){return e instanceof ArrayBuffer?{arrayBuffer:e}:e}function Qa(e,t,r,s){return{...e,signal:s,headers:{...Vm(e?.headers),Range:`bytes=${t}-${t+r-1}`}}}function Vm(e){return e?e instanceof Headers?Object.fromEntries(e.entries()):Array.isArray(e)?Object.fromEntries(e):e:{}}function km(e){let t=e?.match(/^bytes \*\/(\d+)$/);return t?Number(t[1]):null}function jm(e){let t=e?.match(/^bytes (\d+)-(\d+)\/(\d+|\*)$/);if(!t)return null;let r=Number(t[1]),s=Number(t[2]),i=t[3]==="*"?void 0:Number(t[3]);return!Number.isSafeInteger(r)||!Number.isSafeInteger(s)||r>s||i!==void 0&&!Number.isSafeInteger(i)?null:{offset:r,endOffset:s,sourceByteLength:i}}function Wm(e){let t=new AbortController,r=()=>t.abort();return e?.aborted?t.abort():e?.addEventListener("abort",r,{once:!0}),{signal:t.signal,abort:()=>t.abort(),removeAbortListener:()=>e?.removeEventListener("abort",r)}}async function Hm(e){await e.body?.cancel().catch(()=>{})}function cr(){return globalThis.performance?.now()??Date.now()}function Xa(){if(typeof DOMException<"u")return new DOMException("Request aborted","AbortError");let e=new Error("Request aborted");return e.name="AbortError",e}var xt={};$e(xt,{dirname:()=>Zm,filename:()=>Ym,join:()=>$m,resolve:()=>Qm});function th(){if(typeof process<"u"&&typeof process.cwd<"u")return process.cwd();let e=window.location?.pathname;return e?.slice(0,e.lastIndexOf("/")+1)||""}function Ym(e){let t=e?e.lastIndexOf("/"):-1;return t>=0?e.substr(t+1):e}function Zm(e){let t=e?e.lastIndexOf("/"):-1;return t>=0?e.substr(0,t):""}function $m(...e){return e=e.map((r,s)=>(s&&(r=r.replace(new RegExp("^/"),"")),s!==e.length-1&&(r=r.replace(new RegExp("/$"),"")),r)),e.join("/")}function Qm(...e){let t=[];for(let n=0;n<e.length;n++)t[n]=e[n];let r="",s=!1,i;for(let n=t.length-1;n>=-1&&!s;n--){let o;n>=0?o=t[n]:(i===void 0&&(i=th()),o=i),o.length!==0&&(r=`${o}/${r}`,s=o.charCodeAt(0)===lr)}return r=Xm(r,!s),s?`/${r}`:r.length>0?r:"."}var lr=47,dn=46;function Xm(e,t){let r="",s=-1,i=0,n,o=!1;for(let a=0;a<=e.length;++a){if(a<e.length)n=e.charCodeAt(a);else{if(n===lr)break;n=lr}if(n===lr){if(!(s===a-1||i===1))if(s!==a-1&&i===2){if(r.length<2||!o||r.charCodeAt(r.length-1)!==dn||r.charCodeAt(r.length-2)!==dn){if(r.length>2){let h=r.length-1,c=h;for(;c>=0&&r.charCodeAt(c)!==lr;--c);if(c!==h){r=c===-1?"":r.slice(0,c),s=a,i=0,o=!1;continue}}else if(r.length===2||r.length===1){r="",s=a,i=0,o=!1;continue}}t&&(r.length>0?r+="/..":r="..",o=!0)}else{let h=e.slice(s+1,a);r.length>0?r+=`/${h}`:r=h,o=!1}s=a,i=0}else n===dn&&i!==-1?++i:i=-1}return r}var be=class{handle;size;bigsize;url;constructor(t){this.handle=t instanceof ArrayBuffer?new Blob([t]):t,this.size=t instanceof ArrayBuffer?t.byteLength:t.size,this.bigsize=BigInt(this.size),this.url=t instanceof File?t.name:""}async close(){}async stat(){return{size:this.handle.size,bigsize:BigInt(this.handle.size),isDirectory:!1}}async read(t,r,s){if(s?.aborted)throw new Error("Request aborted");let i=await this.handle.slice(Number(t),Number(t)+Number(r)).arrayBuffer();if(s?.aborted)throw new Error("Request aborted");return i}};var ys=class{url;fetchFunction;fetchOptions;consistency;identityHints;countedFailures=new WeakSet;telemetry={requestedBytes:0,downloadedBytes:0,requestCount:0,networkTimeMs:0,abortCount:0,errorCount:0};constructor(t,r){sd(r.byteLength),this.url=t,this.fetchFunction=r.fetch||((s,i)=>globalThis.fetch(s,i)),this.fetchOptions=r.fetchOptions?{...r.fetchOptions,headers:new Headers(r.fetchOptions.headers)}:void 0,this.consistency=r.consistency||"best-effort",this.identityHints={byteLength:r.byteLength,etag:vs(r.etag),lastModified:vs(r.lastModified)}}getInitialIdentity(){let{byteLength:t,etag:r,lastModified:s}=this.identityHints;return t!==void 0&&(r!==void 0||s!==void 0)?Ss(t,r,s):t===0&&this.consistency==="best-effort"?Ss(0):null}getTelemetry(){return Object.freeze({...this.telemetry})}trackFailure(t){if(typeof t=="object"&&t!==null){if(this.countedFailures.has(t))return;this.countedFailures.add(t)}ih(t)?this.telemetry.abortCount++:this.telemetry.errorCount++}async requestRange(t,r,s,i){let n=Ms(),o=id(s,this.fetchOptions?.signal);this.telemetry.requestCount++,this.telemetry.requestedBytes+=r;try{let a=await this.fetchFunction(this.url,Km(this.fetchOptions,t,r,o.signal));if(Jm(a,t,r,i))return await this.readEmptyIdentityProbe(a,n);if(a.status!==206)throw await xs(a),new Error(`HTTP byte-range request expected 206, received ${a.status}`);let h=await td(a),c=eh(a,h.byteLength),l=sh(i,c,this.identityHints,this.consistency)||rd(h,t,r);if(l)throw await xs(a),new Error(l);let u=await a.arrayBuffer();if(this.telemetry.downloadedBytes+=u.byteLength,u.byteLength!==r)throw new Error(`HTTP byte-range response contained ${u.byteLength} bytes; expected ${r}`);return{arrayBuffer:u,identity:rh(i,c,this.identityHints),status:a.status,transportBytes:u.byteLength,networkTimeMs:Ms()-n}}catch(a){throw(i===null||!ih(a))&&this.trackFailure(a),a}finally{o.removeAbortListeners(),this.telemetry.networkTimeMs+=Ms()-n}}async readEmptyIdentityProbe(t,r){let s=eh(t,0),i=sh(null,s,this.identityHints,this.consistency);if(await xs(t),i)throw new Error(i);return{arrayBuffer:new ArrayBuffer(0),identity:rh(null,s,this.identityHints),status:t.status,transportBytes:0,networkTimeMs:Ms()-r}}};function Km(e,t,r,s){let i=new Headers(e?.headers);return i.set("Range",`bytes=${t}-${t+r-1}`),{...e,method:"GET",body:void 0,headers:i,signal:s}}function Jm(e,t,r,s){return e.status===416&&s===null&&t===0&&r===1&&/^bytes \*\/0$/i.test(e.headers.get("Content-Range")||"")}async function td(e){try{return ed(e.headers.get("Content-Range"))}catch(t){throw await xs(e),t}}function ed(e){let t=e?.match(/^bytes (\d+)-(\d+)\/(\d+)$/);if(!t)throw new Error("HTTP byte-range response has an invalid Content-Range header");return{offset:Number(t[1]),endOffset:Number(t[2]),byteLength:Number(t[3])}}function eh(e,t){return Ss(t,vs(e.headers.get("ETag")),vs(e.headers.get("Last-Modified")))}function rh(e,t,r){return e||Ss(t.byteLength,t.etag??r.etag,t.lastModified??r.lastModified)}function rd(e,t,r){return!Number.isSafeInteger(e.offset)||!Number.isSafeInteger(e.endOffset)||!Number.isSafeInteger(e.byteLength)||e.offset<0||e.endOffset<e.offset||e.endOffset>=e.byteLength?"HTTP byte-range response has invalid range bounds":e.offset!==t||e.endOffset!==t+r-1?"HTTP byte-range response does not match the requested range":null}function sh(e,t,r,s){let i=e?.byteLength??r.byteLength;if(i!==void 0&&t.byteLength!==i)return"HTTP file length changed while the file was open";let n=e?.etag??r.etag,o=e?.lastModified??r.lastModified;return n?t.etag?n===t.etag?null:"HTTP file ETag changed while the file was open":s==="strict"?"HTTP byte-range response is missing the pinned ETag":o&&t.lastModified&&o!==t.lastModified?"HTTP file Last-Modified value changed while the file was open":null:o?t.lastModified&&o!==t.lastModified?"HTTP file Last-Modified value changed while the file was open":s==="strict"&&!t.lastModified?"HTTP byte-range response is missing the pinned Last-Modified value":null:s==="strict"&&!t.etag&&!t.lastModified?"HTTP byte-range response does not provide an ETag or Last-Modified validator":null}function Ss(e,t,r){return Object.freeze({byteLength:e,etag:t,lastModified:r})}function sd(e){if(e!==void 0&&(!Number.isSafeInteger(e)||e<0))throw new Error("HttpFile byteLength must be a non-negative safe integer")}async function xs(e){await e.body?.cancel().catch(()=>{})}function vs(e){return e||void 0}function Ms(){return globalThis.performance?.now()??Date.now()}function ih(e){return e instanceof Error&&e.name==="AbortError"||e instanceof Error&&/aborted/i.test(e.message)}function id(...e){let t=new AbortController,r=[...new Set(e.filter(i=>!!i))],s=()=>t.abort();for(let i of r)i.aborted?t.abort():i.addEventListener("abort",s,{once:!0});return{signal:t.signal,removeAbortListeners:()=>{for(let i of r)i.removeEventListener("abort",s)}}}var ur=class e{handle;url;transport;rangeScheduler;schedulerIsolationKey={};suppliedByteLength;identity;openPromise=null;closed=!1;constructor(t,r={}){this.handle=t,this.url=t,this.transport=new ys(t,r),this.rangeScheduler=r.rangeScheduler||new _s({batchDelayMs:0,...r.rangeSchedulerProps}),this.suppliedByteLength=r.byteLength,this.identity=this.transport.getInitialIdentity()}static async open(t,r={},s){let i=new e(t,r);return await i.open(s),i}async open(t){if(this.assertOpen(),t?.aborted){let r=Es();throw this.transport.trackFailure(r),r}return await this.getIdentity(t),this}get size(){return this.identity?.byteLength??this.suppliedByteLength??0}get bigsize(){return BigInt(this.size)}getIdentitySnapshot(){return this.identity}getTelemetry(){return this.transport.getTelemetry()}async close(){this.closed=!0}async stat(){this.assertOpen();let t=await this.getIdentity();return{size:t.byteLength,bigsize:BigInt(t.byteLength),isDirectory:!1}}async read(t=0,r=0,s){if(this.assertOpen(),s?.aborted){let o=Es();throw this.transport.trackFailure(o),o}let i=await this.getIdentity(s),n=nh(t);if(od(n,r,i.byteLength),r===0)return new ArrayBuffer(0);try{return await this.rangeScheduler.scheduleRequest({sourceId:this.url,isolationKey:this.schedulerIsolationKey,offset:n,length:r,signal:s,fetchRange:this.fetchScheduledRange})}catch(o){throw this.transport.trackFailure(o),o}}async fetchRange(t,r,s){let i=nh(t),n=await this.read(i,r,s),o=nd(this.identity,i,r);return new Response(n,{status:206,headers:o})}fetchScheduledRange=async(t,r,s)=>{let i=await this.getIdentity(s),n=await this.transport.requestRange(t,r,s,i);return{arrayBuffer:n.arrayBuffer,status:n.status,transportBytes:n.transportBytes,networkTimeMs:n.networkTimeMs}};getIdentity(t){if(this.identity)return Promise.resolve(this.identity);if(!this.openPromise){let s=this.probeIdentity().catch(i=>{throw this.openPromise===s&&(this.openPromise=null),i});this.openPromise=s}return ad(this.openPromise,t).catch(r=>{throw this.transport.trackFailure(r),r})}async probeIdentity(){try{let t=await this.transport.requestRange(0,1,void 0,null);return this.identity=t.identity,t.identity}catch(t){throw this.transport.trackFailure(t),t}}assertOpen(){if(this.closed)throw new Error("HttpFile is closed")}};function nd(e,t,r){let s=new Headers;return r>0&&e&&s.set("Content-Range",`bytes ${t}-${t+r-1}/${e.byteLength}`),e?.etag&&s.set("ETag",e.etag),e?.lastModified&&s.set("Last-Modified",e.lastModified),s}function nh(e){let t=Number(e);if(!Number.isSafeInteger(t)||t<0)throw new Error("HTTP byte-range offset must be a non-negative safe integer");return t}function od(e,t,r){if(!Number.isSafeInteger(t)||t<0)throw new Error("HTTP byte-range length must be a non-negative safe integer");if(e+t>r)throw new Error("HTTP byte range extends beyond the end of the file")}function Es(){if(typeof DOMException<"u")return new DOMException("Request aborted","AbortError");let e=new Error("Request aborted");return e.name="AbortError",e}function ad(e,t){return t?t.aborted?Promise.reject(Es()):new Promise((r,s)=>{let i=()=>{t.removeEventListener("abort",i),s(Es())};t.addEventListener("abort",i,{once:!0}),e.then(n=>{t.removeEventListener("abort",i),r(n)},n=>{t.removeEventListener("abort",i),s(n)})}):e}function ws(e={}){if(e.coordinateEpoch!==void 0&&!Number.isFinite(e.coordinateEpoch))throw new Error("Spatial reference coordinate epoch must be a finite decimal year");return Object.freeze({crs:oh(e.crs||{state:"absent",provenance:"unknown"}),vertical:e.vertical?oh(e.vertical):void 0,coordinateEpoch:e.coordinateEpoch,coordinateFrame:e.coordinateFrame||"unknown",coordinateOrder:Object.freeze([...e.coordinateOrder||[]]),units:e.units?Object.freeze([...e.units]):void 0})}function fr(e){if(typeof e=="object")return"projjson";let t=e.trim();return/^[A-Z][A-Z0-9_]*\s*[\[(]/i.test(t)?"wkt":/(?:^|\s)\+?proj=/i.test(t)?"proj-string":/^[A-Z][A-Z0-9._-]*(?::[A-Z0-9._-]+)+$/i.test(t)||/^urn:ogc:def:crs:/i.test(t)||/^https?:\/\//i.test(t)||/^[A-Z][A-Z0-9._-]*$/i.test(t)?"identifier":"opaque"}function oh(e){return e.state==="explicit"||e.state==="default"?Object.freeze({...e,definition:ah(e.definition),alternatives:e.alternatives?Object.freeze(e.alternatives.map(t=>Object.freeze({...t,definition:ah(t.definition)}))):void 0}):Object.freeze({...e})}function ah(e){return typeof e=="string"?e:pn(e)}function pn(e){return Array.isArray(e)?Object.freeze(e.map(t=>pn(t))):e&&typeof e=="object"?Object.freeze(Object.fromEntries(Object.entries(e).map(([t,r])=>[t,pn(r)]))):e}var Ts=class{item;previous;next;constructor(t,r,s){this.item=t,this.previous=r,this.next=s}};var Ps=class{head=null;tail=null;_length=0;get length(){return this._length}add(t){let r=new Ts(t,this.tail,null);return this.tail?(this.tail.next=r,this.tail=r):(this.head=r,this.tail=r),++this._length,r}remove(t){t&&(t.previous&&t.next?(t.previous.next=t.next,t.next.previous=t.previous):t.previous?(t.previous.next=null,this.tail=t.previous):t.next?(t.next.previous=null,this.head=t.next):(this.head=null,this.tail=null),t.next=null,t.previous=null,--this._length)}splice(t,r){t!==r&&(this.remove(r),this._insert(t,r))}_insert(t,r){let s=t.next;t.next=r,this.tail===t?this.tail=r:s.previous=r,r.next=s,r.previous=t,++this._length}};var Re=class{_list;_sentinel;_trimTiles;constructor(){this._list=new Ps,this._sentinel=this._list.add("sentinel"),this._trimTiles=!1}reset(){this._list.splice(this._list.tail,this._sentinel)}touch(t){let r=t._cacheNode;r&&this._list.splice(this._sentinel,r)}add(t,r,s){r._cacheNode||(r._cacheNode=this._list.add(r),s&&s(t,r))}unloadTile(t,r,s){let i=r._cacheNode;i&&(this._list.remove(i),r._cacheNode=null,s&&s(t,r))}unloadTiles(t,r){let s=this._trimTiles;this._trimTiles=!1;let i=this._list,n=this._sentinel,o=i.head;for(;o!==n&&(t.gpuMemoryUsageInBytes>t.cacheBytes||s);){let a=o.item;o=o.next,this.unloadTile(t,a,r)}}trim(){this._trimTiles=!0}};function bs(e,t){At(e),At(t);let{rtcCenter:r,gltfUpAxis:s}=t,{computedTransform:i,boundingVolume:{center:n}}=e,o=new z(i);switch(r&&o.translate(r),s){case"Z":break;case"Y":let f=new z().rotateX(Math.PI/2);o=o.multiplyRight(f);break;case"X":let d=new z().rotateY(-Math.PI/2);o=o.multiplyRight(d);break;default:break}t.isQuantized&&o.translate(t.quantizedVolumeOffset).scale(t.quantizedVolumeScale);let a=new _(n);t.cartesianModelMatrix=o,t.cartesianOrigin=a;let h=I.WGS84.cartesianToCartographic(a,new _),l=I.WGS84.eastNorthUpToFixedFrame(a).invert();t.cartographicModelMatrix=l.multiplyRight(o),t.cartographicOrigin=h;let u=cd(t);u&&(t.cartesianModelMatrix=new z(o).multiplyRight(u.matrix),t.cartographicModelMatrix.multiplyRight(u.matrix),u.matrix=z.IDENTITY),t.coordinateSystem||(t.modelMatrix=t.cartographicModelMatrix)}var hd=1e6**2;function cd(e){let t=e.gltf;if(!t)return null;let r=typeof t.scene=="number"?t.scene:0,i=t.scenes?.[r]?.nodes?.[0];if(!i?.matrix)return null;let n=i.matrix;return n[12]*n[12]+n[13]*n[13]+n[14]*n[14]<=hd?null:i}var hh=new _,gn=new _,ld=1e-5,ud=1e-7,_n=new tt([new $,new $,new $,new $,new $,new $]);function Rs(e,t,r={}){let{cameraUp:s,height:i}=e,n=e.cameraDirection,{metersPerUnit:o}=e.distanceScales,a=mr(e,e.center),h=I.WGS84.eastNorthUpToFixedFrame(a),c=e.unprojectPosition(e.cameraPosition),l=I.WGS84.cartographicToCartesian(c,new _),u;if(n)u=new _(h.transformAsVector(new _(n).scale(o))).normalize();else{let v=e.getFrustumPlanes().near,w=Mn(v,e.cameraPosition),P=mr(e,w);u=new _(P).subtract(l).normalize()}let f=new _(h.transformAsVector(new _(s).scale(o))).normalize();fd(e);let d=e.constructor,{longitude:m,latitude:g,width:p,bearing:M,zoom:x}=e,S=new d({longitude:m,latitude:g,height:i,width:p,bearing:M,zoom:x,pitch:0});return{camera:{position:l,direction:u,up:f,cartographicPosition:c,verticalFieldOfView:Number.isFinite(e.fovy)&&Number(e.fovy)>0?Number(e.fovy)*Math.PI/180:Math.PI/3,timeSinceMovement:r.timeSinceCameraMovement??Number.POSITIVE_INFINITY},viewport:e,topDownViewport:S,height:i,cullingVolume:_n,clippingPlanes:e.clippingPlanes,frameNumber:t,sseDenominator:1.15,dynamicScreenSpaceErrorDensity:0}}function ch(e,t,r,s){let i=Array.from(t),n=Array.from(r),o=e?i.length!==e.position.length||i.some((c,l)=>Math.abs(c-e.position[l])>ld):!1,a=e?n.length!==e.direction.length||n.some((c,l)=>Math.abs(c-e.direction[l])>ud):!1,h=o||a?s:e?.lastMovementTime??Number.NEGATIVE_INFINITY;return{state:{position:i,direction:n,lastMovementTime:h},timeSinceMovement:Math.max((s-h)/1e3,0)}}function lh(e,t,r){if(r===0||e.length<=r)return[e,[]];let s=[],{longitude:i,latitude:n}=t.viewport;for(let[c,l]of e.entries()){let[u,f]=l.header.mbs,d=Math.abs(i-u),m=Math.abs(n-f),g=Math.sqrt(m*m+d*d);s.push([c,g])}let o=s.sort((c,l)=>c[1]-l[1]),a=[];for(let c=0;c<r;c++)a.push(e[o[c][0]]);let h=[];for(let c=r;c<o.length;c++)h.push(e[o[c][0]]);return[a,h]}function fd(e){let t=e.getFrustumPlanes(),r=Mn(t.near,e.cameraPosition),s=mr(e,r),i=mr(e,e.cameraPosition,gn),n=0;_n.planes[n++].fromPointNormal(s,hh.copy(s).subtract(i));for(let o in t){if(o==="near")continue;let a=t[o],h=Mn(a,r,gn),c=mr(e,h,gn);_n.planes[n++].fromPointNormal(c,hh.copy(s).subtract(c))}}function Mn(e,t,r=new _){let s=e.normal.dot(t);return r.copy(e.normal).scale(e.distance-s).add(t),r}function mr(e,t,r=new _){let s=e.unprojectPosition(t);return I.WGS84.cartographicToCartesian(s,r)}var ph=new _,md=new _,ue=new _,uh=new _,dr=new _,fh=new _,mh=new _,dh=new _,Cs=new wt,dd=new _(0,0,1);function gh(e,t){e._updateTransform(t)}function _h(e,t,r){if(!Number.isFinite(r.dynamicScreenSpaceErrorDensity)||r.dynamicScreenSpaceErrorDensity<=0)return 0;let s=Md(e),i=s.region?xd(s.region,t):yd(e,s,t);if(!i)return 0;let n=Xe(r.dynamicScreenSpaceErrorHeightFalloff,0,1),o=i.minimumHeight+(i.maximumHeight-i.minimumHeight)*n,a=i.maximumHeight-o,h=a>0?Xe((i.cameraHeight-o)/a,0,1):i.cameraHeight>=i.maximumHeight?1:0,l=(1-Xe(Math.abs(i.cameraDirection.dot(i.upDirection)),0,1))*(1-h);return r.dynamicScreenSpaceErrorDensity*l}function pd(e,t){let r=e*t;return 1-Math.exp(-(r*r))}function gd(e,t,r){return t<=0||r<=0||!Number.isFinite(t)||!Number.isFinite(r)?0:pd(e,t)*r}function Mh(e,t,r,s=1){let i=e.tileset,n=e.parent&&e.parent.lodMetricValue||e.lodMetricValue,o=r?n:e.lodMetricValue;if(o===0)return 0;let{viewDistanceScale:a}=i.options,h=a||1,c=Number.isFinite(s)?Math.max(s,0):1,l=_d(o,t,h,c);if(l!==null)return l;let u=Math.max(e._distanceToCamera,1e-7),{height:f,sseDenominator:d}=t,m=o*f*c*h/(u*d);return i.options.dynamicScreenSpaceError&&!t.viewport.orthographic&&(m-=gd(u,t.dynamicScreenSpaceErrorDensity,i.options.dynamicScreenSpaceErrorFactor)),m}function _d(e,t,r,s){let i=t.viewport;if(!i?.orthographic)return null;let n=i.metersPerPixel;return!Number.isFinite(n)||!n||n<=0?null:e*r*s/n}function Md(e){return e.header.content?.boundingVolume||e.header.boundingVolume}function xd(e,t){let r=ph.copy(t.camera.position).normalize(),s=dr.copy(t.camera.direction).normalize();return{cameraHeight:t.camera.cartographicPosition[2],minimumHeight:e[4],maximumHeight:e[5],cameraDirection:s,upDirection:r}}function yd(e,t,r){let s=Sd(t,ue);if(s===null)return null;let i=new z(e.computedTransform).invert(),n=e.tileset.ellipsoid;if(Math.hypot(ue[0],ue[1],ue[2])>n.minimumRadius){let a=n.cartesianToCartographic(ue,md),h=ph.copy(r.camera.position).normalize(),c=dr.copy(r.camera.direction).normalize();return{cameraHeight:r.camera.cartographicPosition[2],minimumHeight:0,maximumHeight:a[2]*2,cameraDirection:c,upDirection:h}}return i.transformAsPoint(r.camera.position,uh),i.transformAsVector(r.camera.direction,dr),dr.normalize(),{cameraHeight:uh[2],minimumHeight:ue[2]-s,maximumHeight:ue[2]+s,cameraDirection:dr,upDirection:dd}}function Sd(e,t){if(e.box){let r=e.box;return t.set(r[0],r[1],r[2]),vd(r)}if(e.sphere){let r=e.sphere;return t.set(r[0],r[1],r[2]),r[3]}return null}function vd(e){return e.length===10?(Cs.fromArray(e,6),fh.set(e[3],0,0).transformByQuaternion(Cs),mh.set(0,e[4],0).transformByQuaternion(Cs),dh.set(0,0,e[5]).transformByQuaternion(Cs),Math.abs(fh[2])+Math.abs(mh[2])+Math.abs(dh[2])):Math.abs(e[5])+Math.abs(e[8])+Math.abs(e[11])}var it={UNLOADED:0,LOADING:1,PROCESSING:2,READY:3,EXPIRED:4,FAILED:5},st;(function(e){e[e.ADD=1]="ADD",e[e.REPLACE=2]="REPLACE"})(st||(st={}));var qt;(function(e){e.EMPTY="empty",e.SCENEGRAPH="scenegraph",e.POINTCLOUD="pointcloud",e.MESH="mesh"})(qt||(qt={}));var lt;(function(e){e.I3S="I3S",e.TILES3D="TILES3D"})(lt||(lt={}));var Ce;(function(e){e.GEOMETRIC_ERROR="geometricError",e.MAX_SCREEN_THRESHOLD="maxScreenThreshold"})(Ce||(Ce={}));var xh={NOT_COMPUTED:-1,USE_OPTIMIZATION:1,SKIP_OPTIMIZATION:0};var yh=1e4,Ed=1e4,wd=1e8,Td=new rt,Sh=new _,vh=new _,xn=new _,As=new _;function yn(e,t,r){return e+(t-e)*r}function Eh(e,t){let r=e instanceof rt?e:e.getBoundingSphere(Td),{center:s,radius:i}=r;Sh.copy(s).subtract(t.position);let n=Math.max(Sh.dot(t.direction),0);return vh.copy(t.direction).scale(n).add(t.position),xn.copy(vh).subtract(s),xn.magnitude()<=i||(As.copy(xn).normalize().scale(i).add(s).subtract(t.position),As.magnitude()===0)?0:(As.normalize(),Math.min(Math.max(1-As.dot(t.direction),0),1))}function wh(e,t,r,s){return!Number.isFinite(s)||s<=0||s>.5?!1:e>r?!0:t!==void 0&&t>r}function Th(e){let t=Number.isFinite(e.foveatedConeSize)?Math.min(Math.max(e.foveatedConeSize,0),1):1,r=e.refinement===st.REPLACE;if(r&&!e.skipLevelOfDetail||!e.foveatedScreenSpaceError||t>=1||r&&e.skipLevelOfDetail&&e.priorityProgressiveResolution)return!1;let s=Number.isFinite(e.verticalFieldOfView)&&e.verticalFieldOfView>0?e.verticalFieldOfView:Math.PI/3,i=1-Math.cos(s*.5),n=t*i;if(e.foveatedFactor<=n||i<=n)return!1;let o=Math.min(Math.max((e.foveatedFactor-n)/(i-n),0),1),h=(typeof e.interpolationCallback=="function"?e.interpolationCallback:yn)(e.minimumScreenSpaceErrorRelaxation,e.maximumScreenSpaceError,o),c=Number.isFinite(h)?Math.min(Math.max(h,0),e.maximumScreenSpaceError):0,l=e.screenSpaceError===0&&e.parentScreenSpaceError!==void 0?e.parentScreenSpaceError*.5:e.screenSpaceError;return e.maximumScreenSpaceError-c<=l}function Ph(e,t,r){return e&&Number.isFinite(t)&&Number.isFinite(r)&&r>0&&t<r}function bh(e){let t=e.rootScreenSpaceError>0?Math.min(Math.max(e.reverseScreenSpaceError/e.rootScreenSpaceError,0),1):0,r=Math.floor(t*(yh-1)),s=Number.isFinite(e.foveatedFactor)?Math.min(Math.max(e.foveatedFactor,0),1):0,i=Math.floor(s*(yh-1))*Ed;return(e.priorityProgressiveResolution?0:wd)+i+r}var Pd="EPSG:4326",bd="EPSG:4978";function Rd(e){let t=e.trim().toUpperCase(),r=t.match(/(?:\/DEF\/CRS\/|URN:OGC:DEF:CRS:)([A-Z0-9_-]+)(?:\/|::)(?:[^/:]*[/:])?([A-Z0-9_.-]+)$/);return r?`${r[1]}:${r[2]}`:t}function Ht(e){if(typeof e=="string"){let r=Rd(e);return r===bd||/^GEOCCS\s*[\[(]/.test(r)?"geocentric":r===Pd||r==="EPSG:4490"||r==="EPSG:4979"||r==="OGC:CRS84"||r.includes("+PROJ=LONGLAT")||r.includes("+PROJ=LATLONG")||/^(?:GEOGCS|GEOGCRS|GEOGRAPHICCRS|GEOGRAPHIC2DCRS|GEOGRAPHIC3DCRS)\s*[\[(]/.test(r)?"geographic":/^(?:GEODCRS|GEODETICCRS)\s*[\[(]/.test(r)?/CS\s*[\[(]\s*CARTESIAN/.test(r)?"geocentric":"geographic":"projected"}let t=e;return t.type==="BoundCRS"&&t.source_crs?Ht(t.source_crs):t.type==="CompoundCRS"&&t.components?.[0]?Ht(t.components[0]):String(t.type).includes("Projected")?"projected":String(t.type).includes("Geographic")?"geographic":String(t.type).includes("Geodetic")?t.coordinate_system?.subtype==="Cartesian"?"geocentric":"geographic":"projected"}function Pt(e,t={}){let r=t.sourceCrs!==void 0,s=t.sourceCrs||e.sourceCrs,i=t.outputCoordinates||"auto",n=t.targetCrs||(i==="ecef"?"EPSG:4978":void 0),o=t.targetHeightReference||"native",a=e.verticalUnitScale??1,h=e.elevationUnitScale??1,c=e.elevationOffset||0,l=e.elevationMode==="onTheGround"||e.elevationMode==="relativeToGround"||e.elevationMode==="relativeToScene",u=e.elevationMode==="relativeToScene"?!!t.sceneElevationProvider:!l||!!t.terrainElevationProvider,f=a!==1||h!==1||e.elevationMode!==void 0&&(l||e.elevationMode==="absoluteHeight"&&c!==0),d=o!=="native"&&o!==e.heightReference,m=!!n||o!=="native"||i!=="auto"||f,g=i!=="target-crs"||!!n,p=!d||(e.heightReference||"unknown")!=="unknown",M=Number.isFinite(a)&&a>0&&Number.isFinite(h)&&h>0,x=!!s&&m&&g&&p&&M&&u&&i!=="local-enu",S=r?"caller-override":e.provenance||"unknown",v=r&&s?Ht(s):e.coordinateFrame,w=r?"explicit":e.sourceCrsState||(s?S==="format-default"?"default":"explicit":"absent"),P=ws({crs:s?{state:w==="default"?"default":"explicit",definition:s,representation:!r&&e.sourceCrsRepresentation||fr(s),provenance:S,alternatives:r?void 0:e.sourceCrsAlternatives}:{state:w==="unknown"?"unknown":"absent",provenance:S},vertical:e.verticalCrs?{state:"explicit",definition:e.verticalCrs,representation:fr(e.verticalCrs),provenance:e.provenance||"metadata"}:void 0,coordinateEpoch:t.coordinateEpoch??e.coordinateEpoch,coordinateFrame:v,coordinateOrder:Ad(e.axisOrder),units:r?void 0:e.units}),R=Sn(P.crs),C=P.vertical?Sn(P.vertical):void 0,A=n?Cd(n):void 0;return Object.freeze({...P,sourceCrs:R,verticalCrs:C,verticalUnitScale:a,coordinateEpoch:t.coordinateEpoch??e.coordinateEpoch,heightReference:e.heightReference||"unknown",elevationMode:e.elevationMode,elevationOffset:e.elevationOffset,elevationUnit:e.elevationUnit,elevationUnitScale:h,coordinateFrame:v||"unknown",axisOrder:e.axisOrder||"unknown",provenance:S,targetCrs:A,targetHeightReference:o,outputCoordinates:i,status:m?x?"transformable":"unresolved":"native",warnings:Object.freeze([...e.warnings||[]])})}function pr(e,t={}){return Pt({sourceCrs:e?.sourceCrs,sourceCrsState:e?.crs.state,sourceCrsRepresentation:e?.crs.state==="explicit"||e?.crs.state==="default"?e.crs.representation:void 0,sourceCrsAlternatives:e?.crs.state==="explicit"||e?.crs.state==="default"?e.crs.alternatives:void 0,verticalCrs:e?.verticalCrs,units:e?.units,verticalUnitScale:e?.verticalUnitScale,coordinateEpoch:e?.coordinateEpoch,heightReference:e?.heightReference,elevationMode:e?.elevationMode,elevationOffset:e?.elevationOffset,elevationUnit:e?.elevationUnit,elevationUnitScale:e?.elevationUnitScale,coordinateFrame:e?.coordinateFrame,axisOrder:e?.axisOrder,provenance:e?.provenance,warnings:e?.warnings},t)}function Sn(e){return e.state==="explicit"||e.state==="default"?e.definition:void 0}function Cd(e){let t=ws({crs:{state:"explicit",definition:e,representation:fr(e),provenance:"caller-override"}}),r=Sn(t.crs);if(!r)throw new Error("Failed to normalize a known target CRS definition");return r}function Ad(e){switch(e){case"xy":return["x","y"];case"yx":return["y","x"];case"xyz":return["x","y","z"];default:return[]}}function Is(e){if(e.status!=="transformable"&&e.status!=="transformed")throw new Error("Only a transformable spatial reference can be marked as transformed");return Object.freeze({...e,status:"transformed"})}function Os(e){return!!(e&&typeof e=="object"&&"initialize"in e&&"getRootTileset"in e&&"initializeTileHeaders"in e&&"loadTileContent"in e)}var nt=1024*1024,bn=512*nt,Rn=512*nt,Id=32*nt,Od=nt;function gr(e,t){if(!Number.isFinite(e)||e<0)throw new Error(`${t} must be a finite number greater than or equal to 0`);return e}function Rh(e,t){let r=e.cacheBytes??(e.maximumMemoryUsage!==void 0?e.maximumMemoryUsage*nt:t);return gr(r,"cacheBytes")}function Ch(e,t){let r=e.maximumCacheOverflowBytes??(e.memoryCacheOverflow!==void 0?e.memoryCacheOverflow*nt:t);return gr(r,"maximumCacheOverflowBytes")}var vn={description:"",ellipsoid:I.WGS84,modelMatrix:new z,throttleRequests:!0,maxRequests:64,cacheBytes:bn,maximumCacheOverflowBytes:Rn,maximumMemoryUsage:bn/nt,memoryCacheOverflow:Rn/nt,maximumTilesSelected:0,debounceTime:0,onTileLoad:()=>{},onTileUnload:()=>{},onTileError:()=>{},onSourceError:()=>{},onTilesetError:()=>{},onTraversalComplete:e=>e,onUpdate:()=>{},contentLoader:void 0,viewDistanceScale:1,progressiveResolutionHeightFraction:.3,foveatedScreenSpaceError:!0,foveatedConeSize:.1,foveatedMinimumScreenSpaceErrorRelaxation:0,foveatedInterpolationCallback:yn,foveatedTimeDelay:.2,maximumScreenSpaceError:8,skipLevelOfDetail:!1,dynamicScreenSpaceError:!0,dynamicScreenSpaceErrorDensity:2e-4,dynamicScreenSpaceErrorFactor:24,dynamicScreenSpaceErrorHeightFalloff:.25,memoryAdjustedScreenSpaceError:!0,loadTiles:!0,updateTransforms:!0,viewportTraversersMap:null,loadOptions:{fetch:{}},attributions:[],basePath:"",i3s:{},spatial:{}},En="Tiles In Tileset(s)",wn="Tiles In Memory",Ah="Tiles In View",Ih="Tiles To Render",Oh="Tiles Loaded",Tn="Tiles Loading",Nh="Tiles Unloaded",Lh="Failed Tile Loads",Gh="Points/Vertices",Pn="Tile Memory Use",zh="Maximum Screen Space Error",Ns=class{options;loadOptions;source;type;tileset;loader;url;basePath;modelMatrix;ellipsoid;lodMetricType;lodMetricValue;refine;root=null;roots={};asset={};schema=null;schemaUri=null;groups=[];metadata=null;statistics=null;spatialReference=Pt({});description="";properties;extras=null;attributions={};credits={};stats;contentFormats;cartographicCenter=null;cartesianCenter=null;zoom=1;boundingVolume=null;dynamicScreenSpaceErrorComputedDensity=0;gpuMemoryUsageInBytes=0;memoryAdjustedScreenSpaceError=0;_cacheBytes=bn;_maximumCacheOverflowBytes=Rn;_frameNumber=0;_tiles={};_pendingCount=0;selectedTiles=[];traverseCounter=0;geometricError=0;lastUpdatedVieports=null;_requestedTiles=[];_emptyTiles=[];frameStateData={};_cameraMotionStates={};_deferredTraversalTimeout=null;_traverser;_cache=new Re;_requestScheduler;_heldTiles=new Set;updatePromise=null;tilesetInitializationPromise;constructor(t,r){if(!Os(t))throw new Error("Tileset3D requires a Tileset3DSource instance");let s=r||{},i=t.type===lt.TILES3D,n=i?vn.cacheBytes:Id,o=i?vn.maximumCacheOverflowBytes:Od,a=Rh(s,n),h=Ch(s,o);this.options={...vn,...s,cacheBytes:a,maximumCacheOverflowBytes:h,maximumMemoryUsage:a/nt,memoryCacheOverflow:h/nt,memoryAdjustedScreenSpaceError:s.memoryAdjustedScreenSpaceError??i},this.loadOptions=this.options.loadOptions||{},this.source=t,this.tileset=null,this.loader=this.source.loader,this.type=this.source.type,this.url=this.source.url,this.basePath=this.source.basePath,this.modelMatrix=this.options.modelMatrix,this.ellipsoid=this.options.ellipsoid,this.lodMetricType="",this.lodMetricValue=0,this.refine="",this.contentFormats=this.source.contentFormats,this._traverser=this._initializeTraverser(),this._requestScheduler=new Wt({throttleRequests:this.options.throttleRequests,maxRequests:this.options.maxRequests}),this.memoryAdjustedScreenSpaceError=this.options.maximumScreenSpaceError,this._cacheBytes=a,this._maximumCacheOverflowBytes=h;let c=this._getSourceMetadata();c&&(this.spatialReference=pr(c.spatialReference,this.options.spatial)),this.stats=new Tt({id:this.url}),this._initializeStats(),this.tilesetInitializationPromise=this._initializeTileSet()}destroy(){this._clearDeferredTraversal(),this.source.destroy?.(),this._destroy()}isLoaded(){return this._pendingCount===0&&this._frameNumber!==0&&this._requestedTiles.length===0}get tiles(){return Object.values(this._tiles)}get frameNumber(){return this._frameNumber}get cacheBytes(){return this._cacheBytes}set cacheBytes(t){this._cacheBytes=gr(t,"cacheBytes"),this.options.cacheBytes=this._cacheBytes,this.options.maximumMemoryUsage=this._cacheBytes/nt}get maximumCacheOverflowBytes(){return this._maximumCacheOverflowBytes}set maximumCacheOverflowBytes(t){this._maximumCacheOverflowBytes=gr(t,"maximumCacheOverflowBytes"),this.options.maximumCacheOverflowBytes=this._maximumCacheOverflowBytes,this.options.memoryCacheOverflow=this._maximumCacheOverflowBytes/nt}get maximumMemoryUsage(){return this.cacheBytes/nt}set maximumMemoryUsage(t){this.cacheBytes=gr(t*nt,"maximumMemoryUsage")}get queryParams(){let t=this.source.getTileUrl(this.url),r=t.indexOf("?");return r>=0?t.slice(r+1):""}setProps(t){let r=Rh(t,this.cacheBytes),s=Ch(t,this.maximumCacheOverflowBytes);this.options={...this.options,...t,cacheBytes:r,maximumCacheOverflowBytes:s,maximumMemoryUsage:r/nt,memoryCacheOverflow:s/nt},this._cacheBytes=r,this._maximumCacheOverflowBytes=s}getTileUrl(t){return this.source.getTileUrl(t)}hasExtension(t){return!!this.source.hasExtension?.(t)}update(t=null){this.tilesetInitializationPromise.then(()=>{!t&&this.lastUpdatedVieports?t=this.lastUpdatedVieports:this.lastUpdatedVieports=t,t&&this.doUpdate(t)})}async selectTiles(t=null){return await this.tilesetInitializationPromise,t&&(this.lastUpdatedVieports=t),this.updatePromise||(this.updatePromise=new Promise(r=>{setTimeout(()=>{this.lastUpdatedVieports&&this.doUpdate(this.lastUpdatedVieports),r(this._frameNumber),this.updatePromise=null},this.options.debounceTime)})),this.updatePromise}adjustScreenSpaceError(){this.gpuMemoryUsageInBytes<this.cacheBytes?this.memoryAdjustedScreenSpaceError=Math.max(this.memoryAdjustedScreenSpaceError/1.02,this.options.maximumScreenSpaceError):this.gpuMemoryUsageInBytes>this.cacheBytes+this.maximumCacheOverflowBytes&&(this.memoryAdjustedScreenSpaceError*=1.02)}doUpdate(t){if("loadTiles"in this.options&&!this.options.loadTiles||this.traverseCounter>0)return;let r=t instanceof Array?t:[t];this._cache.reset(),this._frameNumber++,this.traverseCounter=r.length;let s=Date.now(),i=Number.POSITIVE_INFINITY,n=[];for(let o of r){let a=o.id;this._needTraverse(a)?n.push(a):this.traverseCounter--}for(let o of r){let a=o.id;if(this.roots[a]||(this.roots[a]=this._initializeTileHeaders(this.tileset,null)),!n.includes(a))continue;let h=Rs(o,this._frameNumber),c=this.roots[a],l=ch(this._cameraMotionStates[a],h.camera.position,h.camera.direction,s);this._cameraMotionStates[a]=l.state,h.camera.timeSinceMovement=l.timeSinceMovement,gh(c,this.modelMatrix),h.dynamicScreenSpaceErrorDensity=this.type===lt.TILES3D&&this.options.dynamicScreenSpaceError&&!h.viewport.orthographic?_h(c,h,this.options):0,this.dynamicScreenSpaceErrorComputedDensity=h.dynamicScreenSpaceErrorDensity,this._traverser.traverse(c,h,this.options),Object.keys(this._traverser.deferredTiles).length>0&&(i=Math.min(i,Math.max(this.options.foveatedTimeDelay-l.timeSinceMovement,0)))}Number.isFinite(i)?this._scheduleDeferredTraversal(i):this._clearDeferredTraversal()}_scheduleDeferredTraversal(t){this._clearDeferredTraversal(),this._deferredTraversalTimeout=setTimeout(()=>{this._deferredTraversalTimeout=null,this.selectTiles().catch(r=>{let s=r instanceof Error?r:new Error(String(r));this._onTilesetError(s)})},Math.max(t*1e3,0))}_clearDeferredTraversal(){this._deferredTraversalTimeout!==null&&(clearTimeout(this._deferredTraversalTimeout),this._deferredTraversalTimeout=null)}_needTraverse(t){let r=t;return this.options.viewportTraversersMap&&(r=this.options.viewportTraversersMap[t]),r===t}_onTraversalEnd(t){let r=t.viewport.id;this.frameStateData[r]||(this.frameStateData[r]={selectedTiles:[],_requestedTiles:[],_emptyTiles:[]});let s=this.frameStateData[r],i=Object.values(this._traverser.selectedTiles),[n,o]=lh(i,t,this.options.maximumTilesSelected);s.selectedTiles=n;for(let a of o)a.unselect();s._requestedTiles=Object.values(this._traverser.requestedTiles),s._emptyTiles=Object.values(this._traverser.emptyTiles),this.traverseCounter--,!(this.traverseCounter>0)&&this._updateTiles()}_updateTiles(){let t=this.selectedTiles;this.selectedTiles=[],this._requestedTiles=[],this._emptyTiles=[];for(let n in this.frameStateData){let o=this.frameStateData[n];this.selectedTiles=this.selectedTiles.concat(o.selectedTiles),this._requestedTiles=this._requestedTiles.concat(o._requestedTiles),this._emptyTiles=this._emptyTiles.concat(o._emptyTiles)}this.selectedTiles=this.options.onTraversalComplete(this.selectedTiles);let r=new Set(this.selectedTiles.map(n=>n.id)),s=this.selectedTiles.some(n=>!n.tileDrawn),i=0;if(s){for(let n of r)this._heldTiles.add(n);for(let n of this._heldTiles){if(r.has(n))continue;let o=this._tiles[n];o&&o.contentAvailable?(o._selectedFrame=this._frameNumber,this.selectedTiles.push(o),i++):this._heldTiles.delete(n)}}else this._heldTiles=r;i>0&&setTimeout(()=>{this.selectTiles()},0);for(let n of this.selectedTiles)this._tiles[n.id]=n;this._loadTiles(),this._unloadTiles(),this._updateStats(),this._tilesChanged(t,this.selectedTiles)&&this.options.onUpdate()}_tilesChanged(t,r){if(t.length!==r.length)return!0;let s=new Set(t.map(o=>o.id)),i=new Set(r.map(o=>o.id)),n=t.some(o=>!i.has(o.id));return n=n||r.some(o=>!s.has(o.id)),n}_loadTiles(){this._requestedTiles.sort((t,r)=>t._priority-r._priority);for(let t of this._requestedTiles)t.contentUnloaded&&this._loadTile(t)}_unloadTiles(){this._cache.unloadTiles(this,(t,r)=>t._unloadTile(r)),this.options.memoryAdjustedScreenSpaceError&&this.adjustScreenSpaceError()}_updateStats(){let t=0,r=0;for(let s of this.selectedTiles)if(s.contentAvailable&&s.content){t++;let i=s.contents.length?s.contents:[s.content];for(let n of i)n.pointCount?r+=n.pointCount:r+=n.vertexCount||0}this.stats.get(Ah).count=this.selectedTiles.length,this.stats.get(Ih).count=t,this.stats.get(Gh).count=r,this.stats.get(zh).count=this.memoryAdjustedScreenSpaceError}async _initializeTileSet(){try{let t=this.source.initialize(),r=this._getSourceMetadata();r&&this._syncSourceState(r),r?.tileset?.root&&typeof r.tileset.root.then!="function"&&!this.source.prepareTileset&&(this.root=this._initializeTileHeaders(r.tileset,null),this._applyViewState()),await t;let s=this.source.getMetadata();this._syncSourceState(s),await this.source.prepareTileset?.(this),this.root||(this.root=this._initializeTileHeaders(s.tileset,null)),this._applyViewState()}catch(t){let r=t instanceof Error?t:new Error(String(t));throw this._onSourceError(r,this.root),this._onTilesetError(r),r}}_initializeStats(){this.stats.get(En),this.stats.get(Tn),this.stats.get(wn),this.stats.get(Ah),this.stats.get(Ih),this.stats.get(Oh),this.stats.get(Nh),this.stats.get(Lh),this.stats.get(Gh),this.stats.get(Pn,"memory"),this.stats.get(zh)}_initializeTileHeaders(t,r){return this.source.initializeTileHeaders(this,t,r)}_initializeTraverser(){return this.source.createTraverser({basePath:this.basePath,onTraversalEnd:this._onTraversalEnd.bind(this)})}_destroyTileHeaders(t){this._destroySubtree(t)}async _loadTile(t){let r=null;try{this._onStartTileLoading(),r=await t.loadContent()}catch(s){let i=s instanceof Error?s:new Error("load failed");this._onSourceError(i,t),this._onTileLoadError(t,i)}finally{this._onEndTileLoading(),this._onTileLoad(t,r)}}async _loadTileChildren(t,r){try{this._onStartTileLoading(),await t.loadChildren(r)}catch(s){let i=s instanceof Error?s:new Error("subtree load failed");this._onSourceError(i,t),this._onTileLoadError(t,i)}finally{this._onEndTileLoading()}}_onTileLoadError(t,r){this.stats.get(Lh).incrementCount();let s=r.message||r.toString(),i=t.url;console.error(`A 3D tile failed to load: ${t.url} ${s}`),this.options.onTileError(t,s,i)}_onSourceError(t,r=null){this.options.onSourceError(t,this.source,r)}_onTilesetError(t){this.options.onTilesetError(t,this)}_onTileLoad(t,r){if(!r?.loaded)return;t.content&&bs(t,t.content),this.source.onTileLoaded?.(this,t,r),this._syncSourceState(this.source.getMetadata());let s=this.source.getTilesTotalCount?.();s&&(this.stats.get(En).reset(),this.stats.get(En).addCount(s)),this._addTileToCache(t),this.options.onTileLoad(t)}_onStartTileLoading(){this._pendingCount++,this.stats.get(Tn).incrementCount()}_onEndTileLoading(){this._pendingCount--,this.stats.get(Tn).decrementCount()}_addTileToCache(t){this._cache.add(this,t,r=>r._updateCacheStats(t))}_updateCacheStats(t){this.stats.get(Oh).incrementCount(),this.stats.get(wn).incrementCount(),this.gpuMemoryUsageInBytes+=t.gpuMemoryUsageInBytes||0,this.stats.get(Pn).count=this.gpuMemoryUsageInBytes,this.options.memoryAdjustedScreenSpaceError&&this.adjustScreenSpaceError()}_unloadTile(t){this.gpuMemoryUsageInBytes-=t.gpuMemoryUsageInBytes||0,this.stats.get(wn).decrementCount(),this.stats.get(Nh).incrementCount(),this.stats.get(Pn).count=this.gpuMemoryUsageInBytes,this.options.onTileUnload(t),t.unloadContent()}_destroy(){let t=[];for(this.root&&t.push(this.root);t.length>0;){let r=t.pop();for(let s of r.children)t.push(s);this._destroyTile(r)}this.root=null}_destroySubtree(t){let r=t,s=[r];for(;s.length>0;){t=s.pop();for(let i of t.children)s.push(i);t!==r&&this._destroyTile(t)}r.children=[]}_destroyTile(t){this._cache.unloadTile(this,t),this._unloadTile(t),t.destroy()}_syncSourceState(t){this.tileset=t.tileset,this.loader=t.loader,this.type=t.type,this.url=t.url,this.basePath=t.basePath,this.lodMetricType=t.lodMetricType,this.lodMetricValue=t.lodMetricValue,this.refine=t.refine,this.contentFormats=this.source.contentFormats,this.asset=this.source.asset||this.asset;let r=t.tileset;this.schema=r.schema||null,this.schemaUri=r.schemaUri||null,this.groups=r.groups||[],this.metadata=r.metadata||null,this.statistics=r.statistics??null;let s=pr(t.spatialReference,this.options.spatial);this.spatialReference=Nd(this.spatialReference,s),this.properties=this.source.properties??this.properties,this.extras=this.source.extras??this.extras,this.options.attributions?.length?this.credits={attributions:this.options.attributions}:this.credits=this.source.credits||this.credits}_applyViewState(){let t=this.source.getViewState(this.root);this.asset=t.asset||this.source.asset||{},this.properties=t.properties??this.source.properties,this.extras=t.extras??this.source.extras??null,this.credits=t.credits||this.source.credits||this.credits||{attributions:this.options.attributions||[]},this.description=t.description||this.options.description||"",this.boundingVolume=t.boundingVolume||this.root?.boundingVolume||null,this.cartographicCenter=t.cartographicCenter||new _,this.cartesianCenter=t.cartesianCenter||null,this.zoom=t.zoom||1,this.geometricError=this.tileset?.geometricError||0}_getSourceMetadata(){try{return this.source.getMetadata()}catch{return null}}};function Nd(e,t){return e?.status==="transformed"&&e.sourceCrs===t.sourceCrs&&e.targetCrs===t.targetCrs&&e.targetHeightReference===t.targetHeightReference&&e.outputCoordinates===t.outputCoordinates?e:t}var Ls=class{sourceUrl;options;archivePromise;constructor(t){this.options=t,this.sourceUrl=Ld(t.data,t.fallbackFilename)}async loadRoot(t,r,s){return await this.parseArchiveResource(t,this.options.rootPath,r,s,this.options.rootMode)}async loadResource(t,r,s){let i=this.resolveArchivePath(t,t);return await this.parseArchiveResource(t,i,r,s)}async parseArchiveResource(t,r,s,i,n){let o=this.options.getCoreApi();if(!o)throw new Error(this.options.missingCoreApiMessage);let a=await this.loadFile(r,n),h=this.createArchiveFetch(t);return await o.parse(a,s,{...i,fetch:h},{url:t,fetch:h,_parse:o.parse,loaders:[s],coreApi:o})}createArchiveFetch(t){return async r=>{let s=typeof r=="string"?r:r instanceof URL?r.toString():r.url,i=this.resolveArchivePath(s,t),n=await this.loadFile(i);return new Response(n,{status:200})}}async loadFile(t,r){this.archivePromise||=this.openArchiveReadableFile().then(i=>this.options.parseArchive(i));let s=await this.archivePromise;return await this.options.getFile(s,t,r)}async openArchiveReadableFile(){let{data:t}=this.options;if(typeof t!="string")return new be(t);if(/^https?:\/\//i.test(t))return new ur(t);let r=this.options.getCoreApi();if(!r)throw new Error(this.options.missingCoreApiMessage);let s=await r.fetchFile(t);return new be(await s.arrayBuffer())}resolveArchivePath(t,r){let s=Cn(t),i=Cn(this.sourceUrl),n=Cn(r),o=n===i?i:xt.dirname(n),a=new RegExp(`\\.${this.options.archiveExtension}/(.*)$`,"i"),h=s.match(a);if(h?.[1])return h[1];let c=/^[a-z][a-z0-9+.-]*:/i.test(s)||s.startsWith("/"),l=s.startsWith(i)?s:n===i&&!c?`${i}/${s}`:xt.resolve(o,s);return l===i?"":l.startsWith(`${i}/`)?l.slice(i.length+1):l.replace(/^\/+/,"")}};function Ld(e,t){return typeof e=="string"?e:`memory://${"name"in e&&typeof e.name=="string"&&e.name?e.name:t}`}function Cn(e){let t=e.indexOf("?");return t>=0?e.slice(0,t):e}function qh(e){return e!=null}var ot=new _,Gs=new _;function Ae(e,t,r){if(At(e,"3D Tile: boundingVolume must be defined"),e.box)return Gd(e.box,t,r);if(e.region)return ln(e.region);if(e.sphere)return zd(e.sphere,t,r);throw new Error("3D Tile: boundingVolume must contain a sphere, region, or box")}function Bh(e,t){if(e.box)return qd(t);if(e.region){let[r,s,i,n,o,a]=e.region;return[[ct(r),ct(s),o],[ct(i),ct(n),a]]}if(e.sphere)return Bd(t);throw new Error("Unkown boundingVolume type")}function Gd(e,t,r){let s=new _(e[0],e[1],e[2]);t.transform(s,s);let i=[];if(e.length===10){let c=e.slice(3,6),l=new wt;l.fromArray(e,6);let u=new _([1,0,0]),f=new _([0,1,0]),d=new _([0,0,1]);u.transformByQuaternion(l),u.scale(c[0]),f.transformByQuaternion(l),f.scale(c[1]),d.transformByQuaternion(l),d.scale(c[2]),i=[...u.toArray(),...f.toArray(),...d.toArray()]}else i=[...e.slice(3,6),...e.slice(6,9),...e.slice(9,12)];let n=t.transformAsVector(i.slice(0,3)),o=t.transformAsVector(i.slice(3,6)),a=t.transformAsVector(i.slice(6,9)),h=new j([n[0],n[1],n[2],o[0],o[1],o[2],a[0],a[1],a[2]]);return qh(r)?(r.center=s,r.halfAxes=h,r):new zt(s,h)}function zd(e,t,r){let s=new _(e[0],e[1],e[2]);t.transform(s,s);let i=t.getScale(Gs),n=Math.max(Math.max(i[0],i[1]),i[2]),o=e[3]*n;return qh(r)?(r.center=s,r.radius=o,r):new rt(s,o)}function qd(e){let t=Dh(),{halfAxes:r}=e,s=new _(r.getColumn(0)),i=new _(r.getColumn(1)),n=new _(r.getColumn(2));for(let o=0;o<2;o++){for(let a=0;a<2;a++){for(let h=0;h<2;h++)ot.copy(e.center),ot.add(s),ot.add(i),ot.add(n),Fh(t,ot),n.negate();i.negate()}s.negate()}return t}function Bd(e){let t=Dh(),{center:r,radius:s}=e,i=I.WGS84.scaleToGeodeticSurface(r,ot),n;i?n=I.WGS84.geodeticSurfaceNormal(i):n=new _(0,0,1);let o=new _(n[2],-n[1],0);o.len()>0?o.normalize():o=new _(0,1,0);let a=o.clone().cross(n);for(let h of[o,a,n]){Gs.copy(h).scale(s);for(let c=0;c<2;c++)ot.copy(r),ot.add(Gs),Fh(t,ot),Gs.negate()}return t}function Dh(){return[[1/0,1/0,1/0],[-1/0,-1/0,-1/0]]}function Fh(e,t){I.WGS84.cartesianToCartographic(t,ot),e[0][0]=Math.min(e[0][0],ot[0]),e[0][1]=Math.min(e[0][1],ot[1]),e[0][2]=Math.min(e[0][2],ot[2]),e[1][0]=Math.max(e[1][0],ot[0]),e[1][1]=Math.max(e[1][1],ot[1]),e[1][2]=Math.max(e[1][2],ot[2])}var An=new _,Uh=new _,ie=new _,Vh=new _,Dd=new _,In=new z,kh=new z;function zs(e,t){if(e.lodMetricValue===0||Number.isNaN(e.lodMetricValue))return"DIG";let r=2*On(e,t);if(r<2)return"OUT";if(!e.header.children)return"DRAW";switch(e.lodMetricType){case"screenSpaceRelative":{let s=t.topDownViewport.height||1;return r/s<=e.lodMetricValue?"DRAW":"DIG"}case"distanceRangeFromDefaultCamera":return e.distanceToTile(t)>=e.lodMetricValue?"DRAW":"DIG";case"maxScreenThresholdSQ":{let s=Math.sqrt(e.lodMetricValue/(Math.PI*.25));return r<=s?"DRAW":"DIG"}default:return r<=e.lodMetricValue?"DRAW":"DIG"}}function On(e,t){let{topDownViewport:r}=t,s=e.header.i3sLodMbs||e.header.mbs,i=s[1],n=s[0],o=s[2],a=s[3],h=[...e.boundingVolume.center],c=r.unprojectPosition(r.cameraPosition);I.WGS84.cartographicToCartesian(c,An),Uh.copy(An).subtract(h).normalize(),I.WGS84.eastNorthUpToFixedFrame(h,In),kh.copy(In).invert(),ie.copy(An).transform(kh);let l=Math.sqrt(ie[0]*ie[0]+ie[1]*ie[1]),u=l*l/ie[2];Vh.copy([ie[0],ie[1],u]);let d=Vh.transform(In).subtract(h).normalize(),g=Uh.cross(d).normalize().scale(a).add(h),p=I.WGS84.cartesianToCartographic(g),M=r.project([n,i,o]),x=r.project(p);return Dd.copy(M).subtract(x).magnitude()}var _r=class{_map=new Map;_array;_length;constructor(t=0){this._array=new Array(t),this._length=t}get length(){return this._length}set length(t){this._length=t,t>this._array.length&&(this._array.length=t)}get values(){return this._array}get(t){return At(t<this._array.length),this._array[t]}set(t,r){At(t>=0),t>=this.length&&(this.length=t+1),this._map.has(this._array[t])&&this._map.delete(this._array[t]),this._array[t]=r,this._map.set(r,t)}delete(t){let r=this._map.get(t);r>=0&&(this._array.splice(r,1),this._map.delete(t),this.length--)}peek(){return this._array[this._length-1]}push(t){if(!this._map.has(t)){let r=this.length++;this._array[r]=t,this._map.set(t,r)}}pop(){let t=this._array[--this.length];return this._map.delete(t),t}reserve(t){At(t>=0),t>this._array.length&&(this._array.length=t)}resize(t){At(t>=0),this.length=t}trim(t){t==null&&(t=this.length),this._array.length=t}reset(){this._array=[],this._map=new Map,this._length=0}find(t){return this._map.has(t)}};var Fd={loadSiblings:!1,skipLevelOfDetail:!1,updateTransforms:!0,onTraversalEnd:()=>{},viewportTraversersMap:{},basePath:""},Bt=class{options;root=null;selectedTiles={};requestedTiles={};deferredTiles={};emptyTiles={};lastUpdate=new Date().getTime();updateDebounceTime=1e3;_traversalStack=new _r;_emptyTraversalStack=new _r;_frameNumber=null;traversalFinished(t){return!0}constructor(t){this.options={...Fd,...t}}traverse(t,r,s){this.root=t,this.options={...this.options,...s},this.reset(),this.updateTile(t,r),this._frameNumber=r.frameNumber,this.executeTraversal(t,r)}reset(){this.requestedTiles={},this.deferredTiles={},this.selectedTiles={},this.emptyTiles={},this._traversalStack.reset(),this._emptyTraversalStack.reset()}executeTraversal(t,r){let s=this._traversalStack;for(t._selectionDepth=1,s.push(t);s.length>0;){let n=s.pop(),o=!1;this.canTraverse(n,r)&&(this.updateChildTiles(n,r),o=this.updateAndPushChildren(n,r,s,n.hasRenderContent?n._selectionDepth+1:n._selectionDepth));let a=n.parent,h=!!(!a||a._shouldRefine),c=!o;n.hasRenderContent?n.refine===st.ADD?(this.loadTile(n,r),this.selectTile(n,r)):n.refine===st.REPLACE&&(this.loadTile(n,r),(c||this.options.skipLevelOfDetail)&&this.selectTile(n,r)):(this.emptyTiles[n.id]=n,this.loadTile(n,r),c&&this.selectTile(n,r)),this.touchTile(n,r),n._shouldRefine=o&&h}let i=new Date().getTime();(this.traversalFinished(r)||i-this.lastUpdate>this.updateDebounceTime)&&(this.lastUpdate=i,this.options.onTraversalEnd(r))}updateChildTiles(t,r){let s=t.children;for(let i of s)this.updateTile(i,r)}updateAndPushChildren(t,r,s,i){let{loadSiblings:n,skipLevelOfDetail:o}=this.options,a=t.children;a.sort(this.compareDistanceToCamera.bind(this));let h=t.refine===st.REPLACE&&t.hasRenderContent&&!o,c=!1,l=!0;for(let u of a)if(u._selectionDepth=i,u.isVisibleAndInRequestVolume?(s.find(u)&&s.delete(u),s.push(u),c=!0):(h||n)&&(this.loadTile(u,r),this.touchTile(u,r)),h){let f;if(u._inRequestVolume?u.hasRenderContent?f=u.contentAvailable:f=this.executeEmptyTraversal(u,r):f=!1,l=l&&f,!l)return!1}return c||(l=!1),l}updateTile(t,r){this.updateTileVisibility(t,r)}selectTile(t,r){this.shouldSelectTile(t,r)&&(t._selectedFrame=r.frameNumber,this.selectedTiles[t.id]=t)}loadTile(t,r){if(this.shouldLoadTile(t)){if(this.shouldDeferTileRequest(t)){this.deferredTiles[t.id]=t;return}t._requestedFrame=r.frameNumber,t._priority=t._getPriority(),this.requestedTiles[t.id]=t}}shouldDeferTileRequest(t){return t.priorityDeferred}touchTile(t,r){t.tileset._cache.touch(t),t._touchedFrame=r.frameNumber}canTraverse(t,r){return t.hasChildren?t.hasTilesetContent?!t.contentExpired:this.shouldRefine(t,r):!1}shouldLoadTile(t){return t.hasUnloadedContent||t.contentExpired}shouldSelectTile(t,r){return t.contentAvailable&&t.contentVisibility(r)!=="outside"}shouldRefine(t,r,s=!1){let i=t._screenSpaceError;return s&&(i=t.getScreenSpaceError(r,!0)),i>t.tileset.memoryAdjustedScreenSpaceError}updateTileVisibility(t,r){let s=[];if(this.options.viewportTraversersMap)for(let i in this.options.viewportTraversersMap)this.options.viewportTraversersMap[i]===r.viewport.id&&s.push(i);else s.push(r.viewport.id);t.updateVisibility(r,s)}compareDistanceToCamera(t,r){return t._distanceToCamera-r._distanceToCamera}anyChildrenVisible(t,r){let s=!1;for(let i of t.children)i.updateVisibility(r),s=s||i.isVisibleAndInRequestVolume;return s}executeEmptyTraversal(t,r){let s=!0,i=!1,n=this._emptyTraversalStack;for(n.push(t);n.length>0;){let o=n.pop(),a=!o.hasRenderContent&&this.canTraverse(o,r),h=!o.hasRenderContent&&o.children.length===0;if(o.header.implicitSubtree&&(i=!0,s=!1),!a&&!o.contentAvailable&&!h&&(s=!1),this.updateTile(o,r),o.isVisibleAndInRequestVolume||(this.loadTile(o,r),this.touchTile(o,r)),a){let c=o.children;for(let l of c)n.push(l)}}return t.hasEmptyContent&&!i||s}};var Nn=new _;function Ud(e,t,r,s,i=[]){let n=e.length?e:[t],o=!1,a=!1;for(let h of n){let c="inside";if(s!==tt.MASK_INSIDE&&(c=r.computeVisibility(h),c==="outside"))continue;let l=!1;for(let u of i)if(h.intersectPlane(u)==="outside"){l=!0;break}l||(o=!0,a=a||c==="intersecting")}return o?a?"intersecting":"inside":"outside"}function Vd(e){return e!=null}var bt=class{tileset;header;id;url;parent;refine;type;contentUrl;contentUrls=[];lodMetricType="geometricError";lodMetricValue=0;_unscaledLodMetricValue=0;boundingVolume=null;content=null;contents=[];metadata=null;contentMetadata=[];contentState=it.UNLOADED;gpuMemoryUsageInBytes=0;children=[];childrenState="ready";depth=0;viewportIds=[];transform=new z;extensions=null;implicitTiling=null;userData={};computedTransform;hasEmptyContent=!1;hasTilesetContent=!1;traverser=new Bt({});_cacheNode=null;_frameNumber=null;_expireDate=null;_expiredContent=null;_childrenPromise=null;_boundingBox=void 0;_distanceToCamera=0;_screenSpaceError=0;_screenSpaceErrorProgressiveResolution=0;_priorityProgressiveResolution=!1;_foveatedFactor=0;priorityDeferred=!1;_visibilityPlaneMask;_visible=void 0;_contentBoundingVolume;_contentBoundingVolumes=[];_contentBoundingVolumeHeaders=[];_viewerRequestVolume;get contentBoundingVolume(){return this._contentBoundingVolume}get contentBoundingVolumes(){return this._contentBoundingVolumes}get viewerRequestVolume(){return this._viewerRequestVolume}_initialTransform=new z;_priority=0;_selectedFrame=0;_requestedFrame=0;_selectionDepth=0;_touchedFrame=0;_centerZDepth=0;_shouldRefine=!1;_stackLength=0;_visitedFrame=0;_inRequestVolume=!1;_lodJudge=null;tileDrawn=!0;constructor(t,r,s,i=""){this.header=r,this.tileset=t,this.id=i||r.id,this.url=r.url,this.parent=s,this.refine=this._getRefine(r.refine),this.type=r.type,this.contentUrl=r.contentUrl,this.contentUrls=r.contentUrls||(r.contentUrl?[r.contentUrl]:[]),this.metadata=r.metadata||null;let n=Array.isArray(r.content)?r.content:[r.content];this.contentMetadata=n.filter(Boolean).map(o=>o.metadata||null),this.childrenState=r.implicitSubtree?"unloaded":"ready",this._initializeLodMetric(r),this._initializeTransforms(r),this._updateLodMetricScale(),this._initializeBoundingVolumes(r),this._initializeContent(r),this._initializeRenderingState(r),Object.seal(this)}destroy(){this.header=null}isDestroyed(){return this.header===null}get selected(){return this._selectedFrame===this.tileset._frameNumber}get isVisible(){return this._visible}get isVisibleAndInRequestVolume(){return this._visible&&this._inRequestVolume}get hasRenderContent(){return!this.hasEmptyContent&&!this.hasTilesetContent}get hasChildren(){return this.children.length>0||this.header.children&&this.header.children.length>0||!!(this.header.implicitSubtree&&this.childrenState!=="ready")}get hasUnloadedChildren(){return!!(this.header.implicitSubtree&&(this.childrenState==="unloaded"||this.childrenState==="failed"))}get childrenLoading(){return this.childrenState==="loading"}get contentReady(){return this.contentState===it.READY||this.hasEmptyContent}get contentAvailable(){return!!(this.contentReady&&this.hasRenderContent||this._expiredContent&&!this.contentFailed)}get hasUnloadedContent(){return this.hasRenderContent&&this.contentUnloaded}get contentUnloaded(){return this.contentState===it.UNLOADED}get contentExpired(){return this.contentState===it.EXPIRED}get contentFailed(){return this.contentState===it.FAILED}get distanceToCamera(){return this._distanceToCamera}get screenSpaceError(){return this._screenSpaceError}get boundingBox(){return this._boundingBox||(this._boundingBox=Bh(this.header.boundingVolume,this.boundingVolume)),this._boundingBox}getScreenSpaceError(t,r,s=1){switch(this.tileset.type){case lt.I3S:return On(this,t);case lt.TILES3D:return Mh(this,t,r,s);default:throw new Error("Unsupported tileset type")}}unselect(){this._selectedFrame=0}_getGpuMemoryUsageInBytes(){return(this.contents.length?this.contents:[this.content]).reduce((r,s)=>r+(s?.gpuMemoryUsageInBytes||s?.byteLength||0),0)}_getPriority(){return this._calculateRequestPriority(!1)}_getChildrenPriority(){return this._calculateRequestPriority(!0)}_calculateRequestPriority(t){let r=this.tileset._traverser,{skipLevelOfDetail:s}=r.options,i=this.refine===st.ADD||s;if(i&&!this.isVisible&&this._visible!==void 0||this.tileset._frameNumber-this._touchedFrame>=1||this.priorityDeferred||!t&&this.contentState===it.UNLOADED)return-1;let n=this.parent,a=n&&(!i||this._screenSpaceError===0||n.hasTilesetContent)?n._screenSpaceError:this._screenSpaceError,h=r.root?r.root._screenSpaceError:0,c=Math.max(h-a,0);return bh({priorityProgressiveResolution:this._priorityProgressiveResolution,foveatedFactor:this._foveatedFactor,reverseScreenSpaceError:c,rootScreenSpaceError:h})}async loadContent(){if(this.hasEmptyContent)return{loaded:!1};if(this.content)return{loaded:!0};this.contentExpired&&(this._expireDate=null),this.contentState=it.LOADING;let r=await this.tileset._requestScheduler.scheduleRequest(this.id,this._getPriority.bind(this));if(!r)return this.contentState=it.UNLOADED,{loaded:!1};try{let s=await this.tileset.source.loadTileContent(this);return s.contents&&(this.contents=s.contents,this.content=this.contents[0]||null),this.tileset.options.contentLoader&&await this.tileset.options.contentLoader(this),this.contentState=it.READY,this._onContentLoaded(),s}catch(s){throw this.contentState=it.FAILED,s}finally{r.done()}}async loadChildren(t){if(!this.header.implicitSubtree||this.childrenState==="ready")return{loaded:!1,tileCount:0,childSubtreeCount:0};if(this._childrenPromise)return await this._childrenPromise;if(!this.tileset.source.loadTileChildren)throw new Error("Tileset source does not support lazy tile children");this.childrenState="loading",this._childrenPromise=this._loadChildrenWithScheduler(t);try{return await this._childrenPromise}finally{this._childrenPromise=null}}async _loadChildrenWithScheduler(t){let r=await this.tileset._requestScheduler.scheduleRequest(`${this.id}:implicit-subtree`,this._getChildrenPriority.bind(this));if(!r)return this.childrenState="unloaded",{loaded:!1,tileCount:0,childSubtreeCount:0};try{let s=await this.tileset.source.loadTileChildren(this,t);return this.childrenState=s.loaded?"ready":"unloaded",s}catch(s){throw this.childrenState="failed",s}finally{r.done()}}applyImplicitSubtreeHeader(t){let r=this.header.transform,s=this.header.transformMatrix;this.header={...this.header,...t,transform:r,transformMatrix:s,implicitSubtree:void 0},this.refine=this._getRefine(t.refine),this.type=t.type,this.contentUrl=t.contentUrl,this.contentUrls=t.contentUrls||(t.contentUrl?[t.contentUrl]:[]),this._initializeLodMetric(t),this._updateLodMetricScale(),this._initializeBoundingVolumes(this.header),this._initializeContent(this.header)}unloadContent(){for(let t of this.contents.length?this.contents:[this.content])t&&t.destroy&&t.destroy();return this.contents=[],this.content=null,this.header.content&&this.header.content.destroy&&this.header.content.destroy(),this.header.content=null,this.contentState=it.UNLOADED,this.tileDrawn=!0,!0}updateVisibility(t,r){if(this._frameNumber===t.frameNumber)return;let s=this.parent,i=s?s._visibilityPlaneMask:tt.MASK_INDETERMINATE;if(this.tileset._traverser.options.updateTransforms){let n=s?s.computedTransform:this.tileset.modelMatrix;this._updateTransform(n)}this._distanceToCamera=this.distanceToTile(t),this._screenSpaceError=this.getScreenSpaceError(t,!1),this._updateRequestPriorityMetrics(t),this._visibilityPlaneMask=this.visibility(t,i),this._visible=this._visibilityPlaneMask!==tt.MASK_OUTSIDE,this._inRequestVolume=this.insideViewerRequestVolume(t),this._frameNumber=t.frameNumber,this.viewportIds=r}_updateRequestPriorityMetrics(t){if(this.tileset.type!==lt.TILES3D){this._screenSpaceErrorProgressiveResolution=this._screenSpaceError,this._priorityProgressiveResolution=!1,this._foveatedFactor=0,this.priorityDeferred=!1;return}let r=this.tileset.options,s=r.progressiveResolutionHeightFraction;if(this._screenSpaceErrorProgressiveResolution=this.getScreenSpaceError(t,!1,s),this._priorityProgressiveResolution=wh(this._screenSpaceErrorProgressiveResolution,this.parent?._screenSpaceErrorProgressiveResolution,this.tileset.memoryAdjustedScreenSpaceError,s),!r.foveatedScreenSpaceError||t.viewport?.orthographic||!t.camera?.position||!t.camera?.direction){this._foveatedFactor=0,this.priorityDeferred=!1;return}this._foveatedFactor=Eh(this.boundingVolume,t.camera);let i=Th({refinement:this.refine,skipLevelOfDetail:this.tileset._traverser.options.skipLevelOfDetail,foveatedScreenSpaceError:r.foveatedScreenSpaceError,foveatedConeSize:r.foveatedConeSize,minimumScreenSpaceErrorRelaxation:r.foveatedMinimumScreenSpaceErrorRelaxation,interpolationCallback:r.foveatedInterpolationCallback,foveatedFactor:this._foveatedFactor,verticalFieldOfView:t.camera.verticalFieldOfView,screenSpaceError:this._screenSpaceError,parentScreenSpaceError:this.parent?._screenSpaceError,maximumScreenSpaceError:this.tileset.memoryAdjustedScreenSpaceError,priorityProgressiveResolution:this._priorityProgressiveResolution});this.priorityDeferred=Ph(i,t.camera.timeSinceMovement,r.foveatedTimeDelay)}visibility(t,r){let{cullingVolume:s}=t,{boundingVolume:i}=this;return s.computeVisibilityWithPlaneMask(i,r)}contentVisibility(t){return Ud(this._contentBoundingVolumes,this.boundingVolume,t.cullingVolume,this._visibilityPlaneMask,t.clippingPlanes)}distanceToTile(t){let r=this.boundingVolume;return Math.sqrt(Math.max(r.distanceSquaredTo(t.camera.position),0))}cameraSpaceZDepth({camera:t}){let r=this.boundingVolume;return Nn.subVectors(r.center,t.position),t.direction.dot(Nn)}insideViewerRequestVolume(t){let r=this._viewerRequestVolume;return!r||r.distanceSquaredTo(t.camera.position)<=0}updateExpiration(){if(Vd(this._expireDate)&&this.contentReady&&!this.hasEmptyContent){let t=Date.now();Date.lessThan(this._expireDate,t)&&(this.contentState=it.EXPIRED,this._expiredContent=this.content)}}get extras(){return this.header.extras}_initializeLodMetric(t){"lodMetricType"in t?this.lodMetricType=t.lodMetricType:(this.lodMetricType=this.parent&&this.parent.lodMetricType||this.tileset.lodMetricType,console.warn("3D Tile: Required prop lodMetricType is undefined. Using parent lodMetricType")),"lodMetricValue"in t?this._unscaledLodMetricValue=t.lodMetricValue:(this._unscaledLodMetricValue=this.parent?this.parent._unscaledLodMetricValue:this.tileset.lodMetricValue,console.warn("3D Tile: Required prop lodMetricValue is undefined. Using parent lodMetricValue")),this.lodMetricValue=this._unscaledLodMetricValue}_initializeTransforms(t){this.transform=t.transform?new z(t.transform):new z;let r=this.parent,s=this.tileset,i=r&&r.computedTransform?r.computedTransform.clone():s.modelMatrix.clone();this.computedTransform=new z(i).multiplyRight(this.transform);let n=r&&r._initialTransform?r._initialTransform.clone():new z;this._initialTransform=new z(n).multiplyRight(this.transform)}_updateLodMetricScale(){if(this.lodMetricType!==Ce.GEOMETRIC_ERROR){this.lodMetricValue=this._unscaledLodMetricValue;return}let t=this.computedTransform.getScale(Nn),r=Math.max(t[0],t[1],t[2]);this.lodMetricValue=this._unscaledLodMetricValue*r}_initializeBoundingVolumes(t){this._contentBoundingVolume=null,this._contentBoundingVolumeHeaders=[],this._viewerRequestVolume=null,this._updateBoundingVolume(t)}_initializeContent(t){this.content={_tileset:this.tileset,_tile:this},this.contents=[],this.hasEmptyContent=!0,this.contentState=it.UNLOADED,this.hasTilesetContent=!1,(t.contentUrl||t.contentUrls?.length)&&(this.content=null,this.hasEmptyContent=!1)}_initializeRenderingState(t){this.depth=t.level||(this.parent?this.parent.depth+1:0),this._shouldRefine=!1,this._distanceToCamera=0,this._centerZDepth=0,this._screenSpaceError=0,this._screenSpaceErrorProgressiveResolution=0,this._priorityProgressiveResolution=!1,this._foveatedFactor=0,this.priorityDeferred=!1,this._visibilityPlaneMask=tt.MASK_INDETERMINATE,this._visible=void 0,this._inRequestVolume=!1,this._stackLength=0,this._selectionDepth=0,this._frameNumber=0,this._touchedFrame=0,this._visitedFrame=0,this._selectedFrame=0,this._requestedFrame=0,this._priority=0}_getRefine(t){return t||this.parent&&this.parent.refine||st.REPLACE}_isTileset(){return(this.contents.length?this.contents:[this.content]).some(t=>t?.shape==="tileset3d")}_onContentLoaded(){let t=this.contents.length?this.contents:[this.content];for(let r of t)switch(r&&r.type){case"vctr":case"geom":this.tileset._traverser.disableSkipLevelOfDetail=!0;break;default:}this._isTileset()?this.hasTilesetContent=!0:this.gpuMemoryUsageInBytes=this._getGpuMemoryUsageInBytes()}_updateBoundingVolume(t){this.boundingVolume=Ae(t.boundingVolume,this.computedTransform,this.boundingVolume),t.viewerRequestVolume&&(this._viewerRequestVolume=Ae(t.viewerRequestVolume,this.computedTransform,this._viewerRequestVolume));let r=t.content;r&&(this._contentBoundingVolumeHeaders=Array.isArray(r)?r:[r]);let s=r?Array.isArray(r)?r:[r]:this._contentBoundingVolumeHeaders;this._contentBoundingVolumes=s.length?s.map(i=>i?.boundingVolume?Ae(i.boundingVolume,this.computedTransform):this.boundingVolume):[this.boundingVolume],this._contentBoundingVolume=this._contentBoundingVolumes[0]||null}_updateTransform(t=new z){let r=t.clone().multiplyRight(this.transform);r.equals(this.computedTransform)||(this.computedTransform=r,this._updateLodMetricScale(),this._updateBoundingVolume(this.header))}};var qs=class extends Bt{pendingImplicitSubtrees=new Map;traversalFinished(t){let r=`${t.viewport.id}:`;for(let[s,i]of this.pendingImplicitSubtrees)if(s.startsWith(r)&&i===t.frameNumber)return!1;return!0}compareDistanceToCamera(t,r){return r._distanceToCamera===0&&t._distanceToCamera===0?r._centerZDepth-t._centerZDepth:r._distanceToCamera-t._distanceToCamera}updateChildTiles(t,r){if(t.hasUnloadedChildren&&t.isVisibleAndInRequestVolume&&this.shouldRefine(t,r)){let s=`${r.viewport.id}:${t.id}`;this.pendingImplicitSubtrees.has(s)||(this.pendingImplicitSubtrees.set(s,r.frameNumber),t.tileset._loadTileChildren(t,r).finally(()=>{this.handleImplicitSubtreeLoad(t,r,s)}))}super.updateChildTiles(t,r)}handleImplicitSubtreeLoad(t,r,s){this.pendingImplicitSubtrees.delete(s),this._frameNumber===r.frameNumber&&(t.childrenState==="ready"?this.executeTraversal(t,r):this.traversalFinished(r)&&this.options.onTraversalEnd(r))}updateTileVisibility(t,r){if(super.updateTileVisibility(t,r),!t.isVisibleAndInRequestVolume)return;let s=t.children.length>0;if(t.hasTilesetContent&&s){let o=t.children[0];this.updateTileVisibility(o,r),t._visible=o._visible;return}if(this.meetsScreenSpaceErrorEarly(t,r)){t._visible=!1;return}let i=t.refine===st.REPLACE,n=t._optimChildrenWithinParent===xh.USE_OPTIMIZATION;if(i&&n&&s&&!this.anyChildrenVisible(t,r)){t._visible=!1;return}}meetsScreenSpaceErrorEarly(t,r){let{parent:s}=t;return!s||s.hasTilesetContent||s.refine!==st.ADD?!1:!this.shouldRefine(t,r,!0)}};var kd=6378137,jd=6378137,Ln=6356752314245179e-9,Ie=new _;function jh(e,t){if(e instanceof zt){let{halfAxes:r}=e,s=Wd(r);return Math.log2(Ln/(s+t[2]))}else if(e instanceof rt){let{radius:r}=e;return Math.log2(Ln/(r+t[2]))}else if(e.width&&e.height){let{width:r,height:s}=e,i=Math.log2(kd/r),n=Math.log2(jd/s);return(i+n)/2}return 1}function Gn(e,t,r){I.WGS84.cartographicToCartesian([e.xmax,e.ymax,e.zmax],Ie);let s=Math.sqrt(Math.pow(Ie[0]-r[0],2)+Math.pow(Ie[1]-r[1],2)+Math.pow(Ie[2]-r[2],2));return Math.log2(Ln/(s+t[2]))}function Wh(e,t,r){let[s,i,n,o]=e;return Gn({xmin:s,xmax:n,ymin:i,ymax:o,zmin:0,zmax:0},t,r)}function Wd(e){e.getColumn(0,Ie);let t=e.getColumn(1),r=e.getColumn(2);return Ie.add(t).add(r).len()}var Hd=Object.freeze({meter:1,millimeter:.001,centimeter:.01,decimeter:.1,kilometer:1e3,foot:.3048,yard:.9144,mile:1609.344,"us-foot":.3048006096012192,"us-inch":.0254000508001016,"us-yard":.9144018288036576,"us-mile":1609.3472186944373,"clarke-foot":.3047972654,"clarke-yard":.9143917962,"clarke-link":.201166195164,"sears-yard":.914398414616,"sears-foot":.304799471539,"sears-chain":20.1167651216,"sears-1922-truncated-chain":20.116756,"benoit-1895-b-chain":20.1167824944,"indian-yard":.914398530744,"indian-1937-yard":.91439523,"gold-coast-foot":.304799710181}),Yd=Object.freeze({m:"meter",metre:"meter",meters:"meter",metres:"meter",mm:"millimeter",millimetre:"millimeter",millimeters:"millimeter",millimetres:"millimeter",cm:"centimeter",centimetre:"centimeter",centimeters:"centimeter",centimetres:"centimeter",dm:"decimeter",decimetre:"decimeter",decimeters:"decimeter",decimetres:"decimeter",km:"kilometer",kilometre:"kilometer",kilometers:"kilometer",kilometres:"kilometer",ft:"foot",feet:"foot","us-survey-foot":"us-foot","us-survey-feet":"us-foot",yd:"yard",yards:"yard",mi:"mile",miles:"mile"});function Mr(e){if(!e)return;let t=e.trim().toLowerCase().replaceAll("_","-"),r=Yd[t]||t;return Hd[r]}function Hh(e,t){return t!==void 0?Number.isFinite(t)&&t>0?t:void 0:e?Mr(e):1}function Bs(e){let t=e.spatialReference||e.fullExtent?.spatialReference,r=Xd(t),s=e.heightModelInfo?.vertCRS||Kd(t),i=e.heightModelInfo?.heightModel,n=e.heightModelInfo?.heightUnit,o=Hh(n,e.ZFactor),a=i==="ellipsoidal"?"ellipsoidal":i==="gravity_related_height"?"orthometric":"unknown",h=Zh(t),c=h===void 0?t1(t?.wkt):Jd(h),l=Zd(c,n,e.ZFactor),u=[],f=$d(e.elevationInfo?.mode),d=e.elevationInfo?e.elevationInfo.unit||"meter":void 0,m=Mr(d);return o===void 0&&u.push(e.ZFactor!==void 0?`I3S ZFactor ${e.ZFactor} is not a positive finite conversion factor`:`Unsupported I3S vertical unit ${n}`),e.elevationInfo&&m===void 0&&u.push(`Unsupported I3S elevation unit ${d}`),e.elevationInfo?.mode&&!f&&u.push(`Unsupported I3S elevation mode ${e.elevationInfo.mode}`),f&&f!=="absoluteHeight"&&u.push(`I3S elevation mode ${f} requires a terrain or scene elevation provider`),Pt({sourceCrs:r,sourceCrsRepresentation:h!==void 0?"identifier":r?"wkt":void 0,sourceCrsAlternatives:h!==void 0&&t?.wkt?[{definition:t.wkt,representation:"wkt"}]:void 0,verticalCrs:s,units:l,verticalUnitScale:o??Number.NaN,heightReference:a,elevationMode:f,elevationOffset:e.elevationInfo?.offset,elevationUnit:d,elevationUnitScale:e.elevationInfo?.mode&&!f?Number.NaN:m??(e.elevationInfo?Number.NaN:1),coordinateFrame:c,axisOrder:r?"xyz":"unknown",provenance:r?"metadata":"unknown",warnings:u})}function Zd(e,t,r){if(e==="geocentric")return["meter","meter","meter"];if(e==="geographic"&&(t||r===void 0))return["degree","degree",t||"meter"]}function $d(e){switch(e){case"absoluteHeight":case"onTheGround":case"relativeToGround":case"relativeToScene":return e;default:return}}function Ds(e){let t=Yh(e,"TILESET_CRS_GEOCENTRIC"),r=Yh(e,"TILESET_CRS_COORDINATE_EPOCH"),s=[],i,n="unknown",o;typeof t=="string"&&t.toUpperCase()!=="UNKNOWN"?(i=t,n="metadata",o="explicit"):t!==void 0?(s.push("3D Tiles geocentric CRS is explicitly unknown"),n="metadata",o="unknown"):e.root?.boundingVolume?.region?(i="EPSG:4978",n="format-default",o="default"):e.schemaUri&&!e.schema&&s.push("External 3D Tiles metadata schema must be loaded before CRS semantics can resolve");let a=Qd(r);return r!==void 0&&a===void 0&&s.push("3D Tiles coordinate epoch is not a finite decimal year"),Pt({sourceCrs:i,sourceCrsState:o,sourceCrsRepresentation:i?"identifier":void 0,coordinateEpoch:a,heightReference:i?"ellipsoidal":"unknown",coordinateFrame:i?"geocentric":"unknown",axisOrder:i?"xyz":"unknown",provenance:n,warnings:s})}function Qd(e){if(typeof e!="string"&&typeof e!="number"||typeof e=="string"&&!e.trim())return;let t=Number(e);return Number.isFinite(t)?t:void 0}function Xd(e){let t=Zh(e);return t!==void 0?`EPSG:${t}`:e?.wkt}function Kd(e){let t=e?.latestVcsWkid??e?.vcsWkid;return t===void 0?void 0:`EPSG:${t}`}function Zh(e){return e?.latestWkid??e?.wkid}function Jd(e){return e===4978?"geocentric":e===4326||e===4490||e===4979?"geographic":"projected"}function t1(e){if(!e)return"unknown";let t=e.trim().toUpperCase(),r=t.match(/^([A-Z][A-Z0-9_]*)\s*[\[(]/)?.[1];if(r==="GEOCCS")return"geocentric";if(r==="GEOGCS"||r==="GEOGRAPHICCRS"||r==="GEOGRAPHIC2DCRS"||r==="GEOGRAPHIC3DCRS")return"geographic";if(r==="PROJCS"||r==="PROJCRS"||r==="PROJECTEDCRS")return"projected";if(r==="GEODCRS"||r==="GEODETICCRS"){if(/\bCS\s*[\[(]\s*CARTESIAN\s*,\s*3\b/.test(t))return"geocentric";if(/\bCS\s*[\[(]\s*ELLIPSOIDAL\s*,\s*[23]\b/.test(t))return"geographic"}return"unknown"}function Yh(e,t){let r=e.metadata?.class;if(!r)return;let i=e.schema?.classes?.[r]?.properties,n=e.metadata?.properties;for(let[o,a]of Object.entries(i||{}))if(a.semantic===t)return n?.[o]}var e1=4,r1=8;function qn(e,t){return{coordinates:t,subtreeUrl:Us(e.subtreesUrlTemplate,t),descriptor:e}}function Fs(e,t){let{descriptor:r}=t;c1(r);let s={tileCount:0,childSubtreeCount:0},i=Qh(e,t,{localLevel:0,mortonIndex:0},t.coordinates,s);if(!i)throw new Error(`Invalid 3D Tiles subtree: root tile is unavailable at ${t.subtreeUrl}`);return{root:i,...s}}function Us(e,t){let r={level:t.level,x:t.x,y:t.y,z:t.z};return e.replace(/{(level|x|y|z)}/gi,(s,i)=>String(r[i.toLowerCase()]))}function Qh(e,t,r,s,i){let{descriptor:n}=t,o=a1(n.subdivisionScheme),a=o1(o,r.localLevel)+r.mortonIndex;if(!zn(e.tileAvailability,a))return null;i.tileCount++;let h=n1(e.contentAvailability,a),c=[];if(s.level<n.maximumLevel)if(r.localLevel+1<n.subtreeLevels)for(let l=0;l<o;l++){let u=$h(s,l,n.subdivisionScheme),f=Qh(e,t,{localLevel:r.localLevel+1,mortonIndex:r.mortonIndex*o+l},u,i);f&&c.push(f)}else for(let l=0;l<o;l++){let u=r.mortonIndex*o+l;if(zn(e.childSubtreeAvailability,u)){let f=$h(s,l,n.subdivisionScheme);c.push(s1(e,n,f)),i.childSubtreeCount++}}return i1(e,n,t,s,h,c)}function s1(e,t,r){let s=qn(t,r);return{id:Kh(s,r),children:[],implicitSubtree:s,boundingVolume:Jh(t.rootBoundingVolume,r,t.subdivisionScheme),geometricError:t.rootLodMetricValue/2**r.level,lodMetricType:t.lodMetricType,lodMetricValue:t.rootLodMetricValue/2**r.level,refine:t.refine,type:qt.EMPTY,implicitMetadata:Xh(e)}}function i1(e,t,r,s,i,n){let a=(t.contentUrlTemplates?.length?t.contentUrlTemplates:[t.contentUrlTemplate]).map((f,d)=>!i[d]||!f?null:{contentIndex:d,contentUrl:Us(f,s)}).filter(f=>!!f),h=a.map(f=>f.contentUrl),c=a.map(({contentIndex:f,contentUrl:d})=>({...t.contentHeaders?.[f]||(f===0?t.contentHeader:{})||{},uri:d})),l=h[0],u=t.rootLodMetricValue/2**s.level;return{id:Kh(r,s),children:n,contentUrl:l,content:c.length>1?c:c[0],contentUrls:h,refine:t.refine,type:h1(l),lodMetricType:t.lodMetricType,lodMetricValue:u,geometricError:u,boundingVolume:Jh(t.rootBoundingVolume,s,t.subdivisionScheme),implicitMetadata:Xh(e)}}function Xh(e){if(!(!e.propertyTables&&e.tileMetadata===void 0&&!e.contentMetadata&&e.subtreeMetadata===void 0))return{propertyTables:e.propertyTables,tileMetadata:e.tileMetadata,contentMetadata:e.contentMetadata,subtreeMetadata:e.subtreeMetadata}}function Kh(e,t){return`${e.subtreeUrl}#implicit=${t.level}/${t.x}/${t.y}/${t.z}`}function zn(e,t){if(typeof e?.constant=="number")return!!e.constant;let r=e?.explicitBitstream;if(!r)return!1;let s=Math.floor(t/8),i=t%8;return!!(r[s]>>i&1)}function n1(e,t){return(Array.isArray(e)?e:[e]).map(s=>zn(s||{constant:0},t))}function o1(e,t){return(e**t-1)/(e-1)}function $h(e,t,r){return{level:e.level+1,x:e.x*2+(t&1),y:e.y*2+(t>>1&1),z:r==="OCTREE"?e.z*2+(t>>2&1):0}}function a1(e){return e==="OCTREE"?r1:e1}function Jh(e,t,r){if(e.region){let[s,i,n,o,a,h]=e.region,c=2**t.level,l=(n-s)/c,u=(o-i)/c,f=s+l*t.x,d=i+u*t.y,m=a,g=h;if(r==="OCTREE"){let p=(h-a)/c;m=a+p*t.z,g=m+p}return{region:[f,d,f+l,d+u,m,g]}}if(e.box){if(e.s2VolumeInfo)return{box:[...e.box],s2VolumeInfo:e.s2VolumeInfo};let s=e.box,i=2**t.level,n=-1+(2*t.x+1)/i,o=-1+(2*t.y+1)/i,a=-1+(2*t.z+1)/i,h=r==="OCTREE";return{box:[...[s[0]+s[3]*n+s[6]*o+(h?s[9]*a:0),s[1]+s[4]*n+s[7]*o+(h?s[10]*a:0),s[2]+s[5]*n+s[8]*o+(h?s[11]*a:0)],s[3]/i,s[4]/i,s[5]/i,s[6]/i,s[7]/i,s[8]/i,h?s[9]/i:s[9],h?s[10]/i:s[10],h?s[11]/i:s[11]]}}throw new Error(`Unsupported implicit 3D Tiles bounding volume: ${JSON.stringify(e)}`)}function h1(e){if(!e)return qt.EMPTY;let t=e.split("?")[0].split(".").pop()?.toLowerCase();switch(t){case"pnts":return qt.POINTCLOUD;case"i3dm":case"b3dm":case"glb":case"gltf":return qt.SCENEGRAPH;default:return t||qt.EMPTY}}function c1(e){if(e.subdivisionScheme!=="QUADTREE"&&e.subdivisionScheme!=="OCTREE")throw new Error(`Unsupported implicit subdivision scheme: ${e.subdivisionScheme}`);if(!Number.isInteger(e.subtreeLevels)||e.subtreeLevels<1)throw new Error("Implicit subtreeLevels must be a positive integer");if(!Number.isInteger(e.maximumLevel)||e.maximumLevel<0)throw new Error("Implicit availableLevels must describe at least the root level")}var l1={draco:!1,meshopt:!1,dds:!1,ktx2:!1},u1=32,Vs=class{type=lt.TILES3D;loader;url;basePath;tileset=null;loadOptions;coreApi;contentFormats={...l1};asset;properties;extras;credits;metadata;queryParams={};tileUrlCache=new Map;implicitSubtreeCache;implicitTilingStats={requestedSubtrees:0,loadedSubtrees:0,cacheHits:0,materializedTiles:0};destroyed=!1;extensionsUsed=[];resolver;rootTileset;constructor(t,r={}){let s=f1(t);this.rootTileset=tc(t)?null:t,this.tileset=this.rootTileset,this.loader=s.loader,this.url=s.url,this.basePath=s.basePath||xt.dirname(s.url),this.resolver=s.resolver,this.coreApi=s.coreApi,this.loadOptions=r;let i=Number(r["3d-tiles"]?.maximumCachedSubtrees),n=Number.isFinite(i)?Math.max(0,Math.floor(i)):u1;this.implicitSubtreeCache=new hr({maxEntries:n})}destroy(){this.destroyed=!0,this.tileUrlCache.clear(),this.implicitSubtreeCache.clear()}async initialize(){if(!this.rootTileset){let t=this.loadOptions[this.loader.id]||{};this.rootTileset=await this.loadRootData(this.url,{...this.loadOptions,[this.loader.id]:{...t,isTileset:!0}})}if(this.tileset=this.rootTileset,this.rootTileset.queryString){let t=new URLSearchParams(this.rootTileset.queryString);for(let[r,s]of t.entries())this.setQueryParameter(r,s)}if(this.asset=this.rootTileset.asset,!this.asset)throw new Error("Tileset must have an asset property.");if(this.asset.version!=="0.0"&&this.asset.version!=="1.0"&&this.asset.version!=="1.1")throw new Error("The tileset must be 3D Tiles version either 0.0 or 1.0 or 1.1.");"tilesetVersion"in this.asset&&this.setQueryParameter("v",this.asset.tilesetVersion),this.properties=this.rootTileset.properties,this.extras=this.rootTileset.extras,this.credits={attributions:[]},this.extensionsUsed.splice(0,this.extensionsUsed.length,...this.rootTileset.extensionsUsed||[]),this.metadata={type:this.type,loader:this.loader,url:this.url,basePath:this.basePath,tileset:this.rootTileset,lodMetricType:this.rootTileset.lodMetricType,lodMetricValue:this.rootTileset.lodMetricValue,refine:this.rootTileset.root?.refine,spatialReference:Ds(this.rootTileset)}}getMetadata(){if(!this.metadata)throw new Error("Tiles3DSource has not been initialized");return this.metadata}async getRootTileset(){return this.getMetadata().tileset}initializeTileHeaders(t,r,s){let i=new bt(t,r.root,s||void 0);s&&(s.children.push(i),i.depth=s.depth+1);let n=[i];for(;n.length>0;){let o=n.pop();t.stats.get("Tiles In Tileset(s)").incrementCount();let a=o.header.children||[];for(let h of a){let c=new bt(t,h,o);if(c.contentUrl?.includes("?session=")){let u=new URL(c.contentUrl).searchParams.get("session");u&&this.setQueryParameter("session",u)}o.children.push(c),c.depth=o.depth+1,n.push(c)}}return i}createTraverser(t){return new qs(t)}async loadTileContent(t){let r=(t.contentUrls||[t.contentUrl]).filter(Boolean),s=this.loadOptions[this.loader.id]||{},i={...this.loadOptions,[this.loader.id]:{...s,isTileset:"auto",assetGltfUpAxis:this.asset&&this.asset.gltfUpAxis||"Y"}},n=await Promise.all(r.map(a=>this.loadResourceData(this.getTileUrl(a),i)));t.contents=n,t.content=n[0]||null;let o=n.filter(a=>a?.shape==="tileset3d");return{loaded:!0,contents:n,nestedTileset:o[0],nestedTilesets:o}}async loadTileChildren(t,r){let s=t.header.implicitSubtree;if(!s)return{loaded:!1,tileCount:0,childSubtreeCount:0};let i=this.getTileUrl(s.subtreeUrl),n=await this.loadImplicitSubtreeResource(i);if(this.destroyed||t.isDestroyed())return{loaded:!1,tileCount:0,childSubtreeCount:0};let o=Fs(n,{...s,subtreeUrl:i});t.applyImplicitSubtreeHeader(o.root);let a=this.initializeMaterializedChildren(t.tileset,t,o.root.children);return this.implicitTilingStats.loadedSubtrees++,this.implicitTilingStats.materializedTiles+=a,{loaded:!0,tileCount:o.tileCount,childSubtreeCount:o.childSubtreeCount}}getImplicitTilingStats(){return{...this.implicitTilingStats,cachedSubtrees:this.implicitSubtreeCache.size-this.implicitSubtreeCache.pendingSize,pendingSubtrees:this.implicitSubtreeCache.pendingSize}}getTileUrl(t){if(t.startsWith("data:"))return t;let r=this.tileUrlCache.get(t);if(r)return r;if(!Object.keys(this.queryParams).length)return this.tileUrlCache.set(t,t),t;let[s,i=""]=t.split("?"),n=new URLSearchParams(i);for(let[h,c]of Object.entries(this.queryParams))n.has(h)||n.set(h,c);let o=n.toString(),a=o?`${s}?${o}`:s;return this.tileUrlCache.set(t,a),a}setQueryParameter(t,r){this.queryParams[t]!==r&&(this.queryParams[t]=r,this.tileUrlCache.clear())}getViewState(t){if(!t)return{asset:this.asset,properties:this.properties,extras:this.extras,credits:this.credits};let{center:r}=t.boundingVolume,s;return r&&(r[0]!==0||r[1]!==0||r[2]!==0)?(s=new _,I.WGS84.cartesianToCartographic(r,s)):s=new _(0,0,-I.WGS84.radii[0]),{asset:this.asset,properties:this.properties,extras:this.extras,credits:this.credits,boundingVolume:t.boundingVolume,cartographicCenter:s,cartesianCenter:r,zoom:jh(t.boundingVolume,s)}}hasExtension(t){return this.extensionsUsed.includes(t)}onTileLoaded(t,r,s){let n=(r.contents.length?r.contents:[r.content]).flatMap(a=>a?.gltf?.extensionsRemoved||[]);n.includes("KHR_draco_mesh_compression")&&(this.contentFormats.draco=!0),n.includes("EXT_meshopt_compression")&&(this.contentFormats.meshopt=!0),n.includes("KHR_texture_basisu")&&(this.contentFormats.ktx2=!0);let o=s.nestedTilesets||(s.nestedTileset?[s.nestedTileset]:[]);for(let a of o)t._initializeTileHeaders(a,r)}async loadWithCoreApi(t,r,s=this.loader){if(!this.coreApi)throw new Error("Tiles3DSource requires an injected coreApi to load tileset data");return await this.coreApi.load(t,s,r)}async loadRootData(t,r){return this.resolver?await this.resolver.loadRoot(t,this.loader,r):await this.loadWithCoreApi(t,r)}async loadResourceData(t,r,s=this.loader){return this.resolver?await this.resolver.loadResource(t,s,r):await this.loadWithCoreApi(t,r,s)}async loadImplicitSubtreeResource(t){let r=this.implicitSubtreeCache.get(t);if(r)return this.implicitTilingStats.cacheHits++,await r;this.implicitTilingStats.requestedSubtrees++;let s=this.loadOptions[this.loader.id]||{};return await this.implicitSubtreeCache.getOrLoad(t,async()=>await this.loadResourceData(t,{...this.loadOptions,[this.loader.id]:{...s,isTileset:!1,isSubtree:!0}}))}initializeMaterializedChildren(t,r,s){let i=0,n=[{parentTile:r,childHeaders:s}];for(;n.length>0;){let o=n.pop();for(let a of o.childHeaders){let h=new bt(t,a,o.parentTile);o.parentTile.children.push(h),h.depth=o.parentTile.depth+1,t.stats.get("Tiles In Tileset(s)").incrementCount(),i++,a.children?.length&&n.push({parentTile:h,childHeaders:a.children})}}return i}};function tc(e){return!!(e&&typeof e=="object"&&"url"in e&&"loader"in e&&!("type"in e))}function f1(e){return tc(e)?{...e,basePath:e.basePath||xt.dirname(e.url)}:{url:e.url,loader:e.loader,basePath:e.basePath||xt.dirname(e.url),resolver:e.resolver,coreApi:e.coreApi}}var ks=class{frameNumberMap=new Map;register(t,r){let s=this.frameNumberMap.get(t)||new Map,i=s.get(r)||0;s.set(r,i+1),this.frameNumberMap.set(t,s)}deregister(t,r){let s=this.frameNumberMap.get(t);if(!s)return;let i=s.get(r)||1;s.set(r,i-1)}isZero(t,r){return(this.frameNumberMap.get(t)?.get(r)||0)===0}};var Bn={REQUESTED:"REQUESTED",COMPLETED:"COMPLETED",ERROR:"ERROR"},js=class{_statusMap;pendingTilesRegister=new ks;constructor(){this._statusMap={}}add(t,r,s,i){if(!this._statusMap[r]){let{frameNumber:n,viewport:{id:o}}=i;this._statusMap[r]={request:t,callback:s,key:r,frameState:i,status:Bn.REQUESTED},this.pendingTilesRegister.register(o,n),t().then(a=>{this._statusMap[r].status=Bn.COMPLETED;let{frameNumber:h,viewport:{id:c}}=this._statusMap[r].frameState;this.pendingTilesRegister.deregister(c,h),this._statusMap[r].callback(a,i)}).catch(a=>{this._statusMap[r].status=Bn.ERROR;let{frameNumber:h,viewport:{id:c}}=this._statusMap[r].frameState;this.pendingTilesRegister.deregister(c,h),s(a)})}}update(t,r){if(this._statusMap[t]){let{frameNumber:s,viewport:{id:i}}=this._statusMap[t].frameState;this.pendingTilesRegister.deregister(i,s);let{frameNumber:n,viewport:{id:o}}=r;this.pendingTilesRegister.register(o,n),this._statusMap[t].frameState=r}}find(t){return this._statusMap[t]}hasPendingTiles(t,r){return!this.pendingTilesRegister.isZero(t,r)}};var Ws=class extends Bt{_tileManager;constructor(t){super(t),this._tileManager=new js}traversalFinished(t){return!this._tileManager.hasPendingTiles(t.viewport.id,this._frameNumber||0)}shouldRefine(t,r){return t._lodJudge=zs(t,r),t._lodJudge==="DIG"}updateChildTiles(t,r){let s=t.header.children||[],i=t.children;for(let n of s){let o=`${n.id}-${r.viewport.id}`,a=i&&i.find(h=>h.id===o);if(a)a&&this.updateTile(a,r);else{let h=()=>this._loadTile(t,n.id,r);this._tileManager.find(o)?this._tileManager.update(o,r):this._tileManager.add(h,o,l=>this._onTileLoad(l,t,o),r)}}return!1}async _loadTile(t,r,s){if(!t.tileset.source.loadChildTileHeader)throw new Error("I3S source does not support child tile header loading");return await t.tileset.source.loadChildTileHeader(t,r,s)}_onTileLoad(t,r,s){if(t instanceof Error){r.tileset._onSourceError(t,r);return}let i=new bt(r.tileset,t,r,s);r.children.push(i);let n=this._tileManager.find(i.id).frameState;this.updateTile(i,n),this._frameNumber===n.frameNumber&&(this.traversalFinished(n)||new Date().getTime()-this.lastUpdate>this.updateDebounceTime)&&this.executeTraversal(i,n)}};function ec(e){e("EPSG:4326","+title=WGS 84 (long/lat) +proj=longlat +ellps=WGS84 +datum=WGS84 +units=degrees"),e("EPSG:4269","+title=NAD83 (long/lat) +proj=longlat +a=6378137.0 +b=6356752.31414036 +ellps=GRS80 +datum=NAD83 +units=degrees"),e("EPSG:3857","+title=WGS 84 / Pseudo-Mercator +proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs");for(var t=1;t<=60;++t)e("EPSG:"+(32600+t),"+proj=utm +zone="+t+" +datum=WGS84 +units=m"),e("EPSG:"+(32700+t),"+proj=utm +zone="+t+" +south +datum=WGS84 +units=m");e("EPSG:5041","+title=WGS 84 / UPS North (E,N) +proj=stere +lat_0=90 +lon_0=0 +k=0.994 +x_0=2000000 +y_0=2000000 +datum=WGS84 +units=m"),e("EPSG:5042","+title=WGS 84 / UPS South (E,N) +proj=stere +lat_0=-90 +lon_0=0 +k=0.994 +x_0=2000000 +y_0=2000000 +datum=WGS84 +units=m"),e.WGS84=e["EPSG:4326"],e["EPSG:3785"]=e["EPSG:3857"],e.GOOGLE=e["EPSG:3857"],e["EPSG:900913"]=e["EPSG:3857"],e["EPSG:102113"]=e["EPSG:3857"]}var It=1,Ot=2,Yt=3,rc=4,xr=5,Dn=6378137,sc=6356752314e-3,Fn=.0066943799901413165,fe=484813681109536e-20,y=Math.PI/2,ic=.16666666666666666,nc=.04722222222222222,oc=.022156084656084655,T=1e-10,V=.017453292519943295,X=57.29577951308232,q=Math.PI/4,ne=Math.PI*2,Y=3.14159265359;var ft={};ft.greenwich=0;ft.lisbon=-9.131906111111;ft.paris=2.337229166667;ft.bogota=-74.080916666667;ft.madrid=-3.687938888889;ft.rome=12.452333333333;ft.bern=7.439583333333;ft.jakarta=106.807719444444;ft.ferro=-17.666666666667;ft.brussels=4.367975;ft.stockholm=18.058277777778;ft.athens=23.7163375;ft.oslo=10.722916666667;var ac=ft;var hc={mm:{to_meter:.001},cm:{to_meter:.01},ft:{to_meter:.3048},"us-ft":{to_meter:1200/3937},fath:{to_meter:1.8288},kmi:{to_meter:1852},"us-ch":{to_meter:20.1168402336805},"us-mi":{to_meter:1609.34721869444},km:{to_meter:1e3},"ind-ft":{to_meter:.30479841},"ind-yd":{to_meter:.91439523},mi:{to_meter:1609.344},yd:{to_meter:.9144},ch:{to_meter:20.1168},link:{to_meter:.201168},dm:{to_meter:.1},in:{to_meter:.0254},"ind-ch":{to_meter:20.11669506},"us-in":{to_meter:.025400050800101},"us-yd":{to_meter:.914401828803658}};var cc=/[\s_\-\/\(\)]/g;function yt(e,t){if(e[t])return e[t];for(var r=Object.keys(e),s=t.toLowerCase().replace(cc,""),i=-1,n,o;++i<r.length;)if(n=r[i],o=n.toLowerCase().replace(cc,""),o===s)return e[n]}function yr(e){var t={},r=e.split("+").map(function(a){return a.trim()}).filter(function(a){return a}).reduce(function(a,h){var c=h.split("=");return c.push(!0),a[c[0].toLowerCase()]=c[1],a},{}),s,i,n,o={proj:"projName",datum:"datumCode",rf:function(a){t.rf=parseFloat(a)},lat_0:function(a){t.lat0=a*V},lat_1:function(a){t.lat1=a*V},lat_2:function(a){t.lat2=a*V},lat_ts:function(a){t.lat_ts=a*V},lon_0:function(a){t.long0=a*V},lon_1:function(a){t.long1=a*V},lon_2:function(a){t.long2=a*V},alpha:function(a){t.alpha=parseFloat(a)*V},gamma:function(a){t.rectified_grid_angle=parseFloat(a)*V},lonc:function(a){t.longc=a*V},x_0:function(a){t.x0=parseFloat(a)},y_0:function(a){t.y0=parseFloat(a)},k_0:function(a){t.k0=parseFloat(a)},k:function(a){t.k0=parseFloat(a)},a:function(a){t.a=parseFloat(a)},b:function(a){t.b=parseFloat(a)},r:function(a){t.a=t.b=parseFloat(a)},r_a:function(){t.R_A=!0},zone:function(a){t.zone=parseInt(a,10)},south:function(){t.utmSouth=!0},towgs84:function(a){t.datum_params=a.split(",").map(function(h){return parseFloat(h)})},to_meter:function(a){t.to_meter=parseFloat(a)},units:function(a){t.units=a;var h=yt(hc,a);h&&(t.to_meter=h.to_meter)},from_greenwich:function(a){t.from_greenwich=a*V},pm:function(a){var h=yt(ac,a);t.from_greenwich=(h||parseFloat(a))*V},nadgrids:function(a){a==="@null"?t.datumCode="none":t.nadgrids=a},axis:function(a){var h="ewnsud";a.length===3&&h.indexOf(a.substr(0,1))!==-1&&h.indexOf(a.substr(1,1))!==-1&&h.indexOf(a.substr(2,1))!==-1&&(t.axis=a)},approx:function(){t.approx=!0},over:function(){t.over=!0}};for(s in r)i=r[s],s in o?(n=o[s],typeof n=="function"?n(i):t[n]=i):t[s]=i;return typeof t.datumCode=="string"&&t.datumCode!=="WGS84"&&(t.datumCode=t.datumCode.toLowerCase()),t.projStr=e,t}var Un=class{static getId(t){let r=t.find(s=>Array.isArray(s)&&s[0]==="ID");return r&&r.length>=3?{authority:r[1],code:parseInt(r[2],10)}:null}static convertUnit(t,r="unit"){if(!t||t.length<3)return{type:r,name:"unknown",conversion_factor:null};let s=t[1],i=parseFloat(t[2])||null,n=t.find(a=>Array.isArray(a)&&a[0]==="ID"),o=n?{authority:n[1],code:parseInt(n[2],10)}:null;return{type:r,name:s,conversion_factor:i,id:o}}static convertAxis(t){let r=t[1]||"Unknown",s,i=r.match(/^\((.)\)$/);if(i){let c=i[1].toUpperCase();if(c==="E")s="east";else if(c==="N")s="north";else if(c==="U")s="up";else if(t[2])s=t[2];else throw new Error(`Unknown axis abbreviation: ${c}`)}else s=t[2]||"unknown";let n=t.find(c=>Array.isArray(c)&&c[0]==="ORDER"),o=n?parseInt(n[1],10):null,a=t.find(c=>Array.isArray(c)&&(c[0]==="LENGTHUNIT"||c[0]==="ANGLEUNIT"||c[0]==="SCALEUNIT")),h=this.convertUnit(a);return{name:r,direction:s,unit:h,order:o}}static extractAxes(t){return t.filter(r=>Array.isArray(r)&&r[0]==="AXIS").map(r=>this.convertAxis(r)).sort((r,s)=>(r.order||0)-(s.order||0))}static convert(t,r={}){switch(t[0]){case"PROJCRS":r.type="ProjectedCRS",r.name=t[1],r.base_crs=t.find(m=>Array.isArray(m)&&m[0]==="BASEGEOGCRS")?this.convert(t.find(m=>Array.isArray(m)&&m[0]==="BASEGEOGCRS")):null,r.conversion=t.find(m=>Array.isArray(m)&&m[0]==="CONVERSION")?this.convert(t.find(m=>Array.isArray(m)&&m[0]==="CONVERSION")):null;let s=t.find(m=>Array.isArray(m)&&m[0]==="CS");s&&(r.coordinate_system={subtype:s[1],axis:this.extractAxes(t)});let i=t.find(m=>Array.isArray(m)&&m[0]==="LENGTHUNIT");if(i){let m=this.convertUnit(i);r.coordinate_system.unit=m}r.id=this.getId(t);break;case"BASEGEOGCRS":case"GEOGCRS":case"GEODCRS":r.type=t[0]==="GEODCRS"?"GeodeticCRS":"GeographicCRS",r.name=t[1];let n=t.find(m=>Array.isArray(m)&&(m[0]==="DATUM"||m[0]==="ENSEMBLE"));if(n){let m=this.convert(n);n[0]==="ENSEMBLE"?r.datum_ensemble=m:r.datum=m;let g=t.find(p=>Array.isArray(p)&&p[0]==="PRIMEM");g&&g[1]!=="Greenwich"&&(m.prime_meridian={name:g[1],longitude:parseFloat(g[2])})}let o=t.find(m=>Array.isArray(m)&&m[0]==="CS");r.coordinate_system={subtype:o?o[1]:"ellipsoidal",axis:this.extractAxes(t)},r.id=this.getId(t);break;case"DATUM":r.type="GeodeticReferenceFrame",r.name=t[1],r.ellipsoid=t.find(m=>Array.isArray(m)&&m[0]==="ELLIPSOID")?this.convert(t.find(m=>Array.isArray(m)&&m[0]==="ELLIPSOID")):null;break;case"ENSEMBLE":r.type="DatumEnsemble",r.name=t[1],r.members=t.filter(m=>Array.isArray(m)&&m[0]==="MEMBER").map(m=>({type:"DatumEnsembleMember",name:m[1],id:this.getId(m)}));let a=t.find(m=>Array.isArray(m)&&m[0]==="ENSEMBLEACCURACY");a&&(r.accuracy=parseFloat(a[1]));let h=t.find(m=>Array.isArray(m)&&m[0]==="ELLIPSOID");h&&(r.ellipsoid=this.convert(h)),r.id=this.getId(t);break;case"ELLIPSOID":r.type="Ellipsoid",r.name=t[1],r.semi_major_axis=parseFloat(t[2]),r.inverse_flattening=parseFloat(t[3]);let c=t.find(m=>Array.isArray(m)&&m[0]==="LENGTHUNIT")?this.convert(t.find(m=>Array.isArray(m)&&m[0]==="LENGTHUNIT"),r):null;break;case"CONVERSION":r.type="Conversion",r.name=t[1],r.method=t.find(m=>Array.isArray(m)&&m[0]==="METHOD")?this.convert(t.find(m=>Array.isArray(m)&&m[0]==="METHOD")):null,r.parameters=t.filter(m=>Array.isArray(m)&&m[0]==="PARAMETER").map(m=>this.convert(m));break;case"METHOD":r.type="Method",r.name=t[1],r.id=this.getId(t);break;case"PARAMETER":r.type="Parameter",r.name=t[1],r.value=parseFloat(t[2]),r.unit=this.convertUnit(t.find(m=>Array.isArray(m)&&(m[0]==="LENGTHUNIT"||m[0]==="ANGLEUNIT"||m[0]==="SCALEUNIT"))),r.id=this.getId(t);break;case"BOUNDCRS":r.type="BoundCRS";let l=t.find(m=>Array.isArray(m)&&m[0]==="SOURCECRS");if(l){let m=l.find(g=>Array.isArray(g));r.source_crs=m?this.convert(m):null}let u=t.find(m=>Array.isArray(m)&&m[0]==="TARGETCRS");if(u){let m=u.find(g=>Array.isArray(g));r.target_crs=m?this.convert(m):null}let f=t.find(m=>Array.isArray(m)&&m[0]==="ABRIDGEDTRANSFORMATION");f?r.transformation=this.convert(f):r.transformation=null;break;case"ABRIDGEDTRANSFORMATION":if(r.type="Transformation",r.name=t[1],r.method=t.find(m=>Array.isArray(m)&&m[0]==="METHOD")?this.convert(t.find(m=>Array.isArray(m)&&m[0]==="METHOD")):null,r.parameters=t.filter(m=>Array.isArray(m)&&(m[0]==="PARAMETER"||m[0]==="PARAMETERFILE")).map(m=>{if(m[0]==="PARAMETER")return this.convert(m);if(m[0]==="PARAMETERFILE")return{name:m[1],value:m[2],id:{authority:"EPSG",code:8656}}}),r.parameters.length===7){let m=r.parameters[6];m.name==="Scale difference"&&(m.value=Math.round((m.value-1)*1e12)/1e6)}r.id=this.getId(t);break;case"AXIS":r.coordinate_system||(r.coordinate_system={type:"unspecified",axis:[]}),r.coordinate_system.axis.push(this.convertAxis(t));break;case"LENGTHUNIT":let d=this.convertUnit(t,"LinearUnit");r.coordinate_system&&r.coordinate_system.axis&&r.coordinate_system.axis.forEach(m=>{m.unit||(m.unit=d)}),d.conversion_factor&&d.conversion_factor!==1&&r.semi_major_axis&&(r.semi_major_axis={value:r.semi_major_axis,unit:d});break;default:r.keyword=t[0];break}return r}},lc=Un;function uc(e){return lc.convert(e)}function fc(e){let t=e.toUpperCase();return t.includes("PROJCRS")||t.includes("GEOGCRS")||t.includes("BOUNDCRS")||t.includes("VERTCRS")||t.includes("LENGTHUNIT")||t.includes("ANGLEUNIT")||t.includes("SCALEUNIT")?"WKT2":(t.includes("PROJCS")||t.includes("GEOGCS")||t.includes("LOCAL_CS")||t.includes("VERT_CS")||t.includes("UNIT"),"WKT1")}var mc=g1,Sr=1,dc=2,pc=3,Hs=4,gc=5,Vn=-1,m1=/\s/,d1=/[A-Za-z]/,p1=/[A-Za-z84_]/,Ys=/[,\]]/,_c=/[\d\.E\-\+]/;function Zt(e){if(typeof e!="string")throw new Error("not a string");this.text=e.trim(),this.level=0,this.place=0,this.root=null,this.stack=[],this.currentObject=null,this.state=Sr}Zt.prototype.readCharicter=function(){var e=this.text[this.place++];if(this.state!==Hs)for(;m1.test(e);){if(this.place>=this.text.length)return;e=this.text[this.place++]}switch(this.state){case Sr:return this.neutral(e);case dc:return this.keyword(e);case Hs:return this.quoted(e);case gc:return this.afterquote(e);case pc:return this.number(e);case Vn:return}};Zt.prototype.afterquote=function(e){if(e==='"'){this.word+='"',this.state=Hs;return}if(Ys.test(e)){this.word=this.word.trim(),this.afterItem(e);return}throw new Error(`havn't handled "`+e+'" in afterquote yet, index '+this.place)};Zt.prototype.afterItem=function(e){if(e===","){this.word!==null&&this.currentObject.push(this.word),this.word=null,this.state=Sr;return}if(e==="]"){this.level--,this.word!==null&&(this.currentObject.push(this.word),this.word=null),this.state=Sr,this.currentObject=this.stack.pop(),this.currentObject||(this.state=Vn);return}};Zt.prototype.number=function(e){if(_c.test(e)){this.word+=e;return}if(Ys.test(e)){this.word=parseFloat(this.word),this.afterItem(e);return}throw new Error(`havn't handled "`+e+'" in number yet, index '+this.place)};Zt.prototype.quoted=function(e){if(e==='"'){this.state=gc;return}this.word+=e};Zt.prototype.keyword=function(e){if(p1.test(e)){this.word+=e;return}if(e==="["){var t=[];t.push(this.word),this.level++,this.root===null?this.root=t:this.currentObject.push(t),this.stack.push(this.currentObject),this.currentObject=t,this.state=Sr;return}if(Ys.test(e)){this.afterItem(e);return}throw new Error(`havn't handled "`+e+'" in keyword yet, index '+this.place)};Zt.prototype.neutral=function(e){if(d1.test(e)){this.word=e,this.state=dc;return}if(e==='"'){this.word="",this.state=Hs;return}if(_c.test(e)){this.word=e,this.state=pc;return}if(Ys.test(e)){this.afterItem(e);return}throw new Error(`havn't handled "`+e+'" in neutral yet, index '+this.place)};Zt.prototype.output=function(){for(;this.place<this.text.length;)this.readCharicter();if(this.state===Vn)return this.root;throw new Error('unable to parse string "'+this.text+'". State is '+this.state)};function g1(e){var t=new Zt(e);return t.output()}function kn(e,t,r){Array.isArray(t)&&(r.unshift(t),t=null);var s=t?{}:e,i=r.reduce(function(n,o){return me(o,n),n},s);t&&(e[t]=i)}function me(e,t){if(!Array.isArray(e)){t[e]=!0;return}var r=e.shift();if(r==="PARAMETER"&&(r=e.shift()),e.length===1){if(Array.isArray(e[0])){t[r]={},me(e[0],t[r]);return}t[r]=e[0];return}if(!e.length){t[r]=!0;return}if(r==="TOWGS84"){t[r]=e;return}if(r==="AXIS"){r in t||(t[r]=[]),t[r].push(e);return}Array.isArray(r)||(t[r]={});var s;switch(r){case"UNIT":case"PRIMEM":case"VERT_DATUM":t[r]={name:e[0].toLowerCase(),convert:e[1]},e.length===3&&me(e[2],t[r]);return;case"SPHEROID":case"ELLIPSOID":t[r]={name:e[0],a:e[1],rf:e[2]},e.length===4&&me(e[3],t[r]);return;case"EDATUM":case"ENGINEERINGDATUM":case"LOCAL_DATUM":case"DATUM":case"VERT_CS":case"VERTCRS":case"VERTICALCRS":e[0]=["name",e[0]],kn(t,r,e);return;case"COMPD_CS":case"COMPOUNDCRS":case"FITTED_CS":case"PROJECTEDCRS":case"PROJCRS":case"GEOGCS":case"GEOCCS":case"PROJCS":case"LOCAL_CS":case"GEODCRS":case"GEODETICCRS":case"GEODETICDATUM":case"ENGCRS":case"ENGINEERINGCRS":e[0]=["name",e[0]],kn(t,r,e),t[r].type=r;return;default:for(s=-1;++s<e.length;)if(!Array.isArray(e[s]))return me(e,t[r]);return kn(t,r,e)}}var _1=.017453292519943295;function St(e){return e*_1}function Zs(e){let t=(e.projName||"").toLowerCase().replace(/_/g," ");e.long0===void 0&&e.longc!==void 0&&(e.long0=e.longc),!e.lat_ts&&e.lat1&&(t==="stereographic south pole"||t==="polar stereographic (variant b)")?(e.lat0=St(e.lat1>0?90:-90),e.lat_ts=e.lat1,delete e.lat1):!e.lat_ts&&e.lat0&&(t==="polar stereographic"||t==="polar stereographic (variant a)")&&(e.lat_ts=e.lat0,e.lat0=St(e.lat0>0?90:-90),delete e.lat1)}function Mc(e){let t={units:null,to_meter:void 0};return typeof e=="string"?(t.units=e.toLowerCase(),t.units==="metre"&&(t.units="meter"),t.units==="meter"&&(t.to_meter=1)):e&&e.name&&(t.units=e.name.toLowerCase(),t.units==="metre"&&(t.units="meter"),t.to_meter=e.conversion_factor),t}function xc(e){return typeof e=="object"?e.value*e.unit.conversion_factor:e}function yc(e,t){e.ellipsoid.radius?(t.a=e.ellipsoid.radius,t.rf=0):(t.a=xc(e.ellipsoid.semi_major_axis),e.ellipsoid.inverse_flattening!==void 0?t.rf=e.ellipsoid.inverse_flattening:e.ellipsoid.semi_major_axis!==void 0&&e.ellipsoid.semi_minor_axis!==void 0&&(t.rf=t.a/(t.a-xc(e.ellipsoid.semi_minor_axis))))}function vr(e,t={}){return!e||typeof e!="object"?e:e.type==="BoundCRS"?(vr(e.source_crs,t),e.transformation&&(e.transformation.method&&e.transformation.method.name==="NTv2"?t.nadgrids=e.transformation.parameters[0].value:t.datum_params=e.transformation.parameters.map(r=>r.value)),t):(Object.keys(e).forEach(r=>{let s=e[r];if(s!==null)switch(r){case"name":if(t.srsCode)break;t.name=s,t.srsCode=s;break;case"type":s==="GeographicCRS"?t.projName="longlat":s==="GeodeticCRS"?e.coordinate_system&&e.coordinate_system.subtype==="Cartesian"?t.projName="geocent":t.projName="longlat":s==="ProjectedCRS"&&e.conversion&&e.conversion.method&&(t.projName=e.conversion.method.name);break;case"datum":case"datum_ensemble":s.ellipsoid&&(t.ellps=s.ellipsoid.name,yc(s,t)),s.prime_meridian&&(t.from_greenwich=s.prime_meridian.longitude*Math.PI/180);break;case"ellipsoid":t.ellps=s.name,yc(s,t);break;case"prime_meridian":t.long0=(s.longitude||0)*Math.PI/180;break;case"coordinate_system":if(s.axis){let i={east:"e",north:"n",west:"w",south:"s",up:"u",down:"d",geocentricx:"e",geocentricy:"n",geocentricz:"u"},n=s.axis.map(o=>i[o.direction.toLowerCase()]);if(n.every(Boolean)&&(t.axis=n.join(""),t.axis.length===2&&(t.axis+="u")),s.unit){let{units:o,to_meter:a}=Mc(s.unit);t.units=o,t.to_meter=a}else if(s.axis[0]&&s.axis[0].unit){let{units:o,to_meter:a}=Mc(s.axis[0].unit);t.units=o,t.to_meter=a}}break;case"id":s.authority&&s.code&&(t.title=s.authority+":"+s.code);break;case"conversion":s.method&&s.method.name&&(t.projName=s.method.name),s.parameters&&s.parameters.forEach(i=>{let n=i.name.toLowerCase().replace(/\s+/g,"_"),o=i.value;i.unit&&i.unit.conversion_factor?t[n]=o*i.unit.conversion_factor:i.unit==="degree"?t[n]=o*Math.PI/180:t[n]=o});break;case"unit":s.name&&(t.units=s.name.toLowerCase(),t.units==="metre"&&(t.units="meter")),s.conversion_factor&&(t.to_meter=s.conversion_factor);break;case"base_crs":vr(s,t),t.datumCode=s.id?s.id.authority+"_"+s.id.code:s.name;break;default:break}}),t.latitude_of_false_origin!==void 0&&(t.lat0=t.latitude_of_false_origin),t.longitude_of_false_origin!==void 0&&(t.long0=t.longitude_of_false_origin),t.latitude_of_standard_parallel!==void 0&&(t.lat0=t.latitude_of_standard_parallel,t.lat1=t.latitude_of_standard_parallel),t.latitude_of_1st_standard_parallel!==void 0&&(t.lat1=t.latitude_of_1st_standard_parallel),t.latitude_of_2nd_standard_parallel!==void 0&&(t.lat2=t.latitude_of_2nd_standard_parallel),t.latitude_of_projection_centre!==void 0&&(t.lat0=t.latitude_of_projection_centre),t.longitude_of_projection_centre!==void 0&&(t.longc=t.longitude_of_projection_centre),t.easting_at_false_origin!==void 0&&(t.x0=t.easting_at_false_origin),t.northing_at_false_origin!==void 0&&(t.y0=t.northing_at_false_origin),t.latitude_of_natural_origin!==void 0&&(t.lat0=t.latitude_of_natural_origin),t.longitude_of_natural_origin!==void 0&&(t.long0=t.longitude_of_natural_origin),t.longitude_of_origin!==void 0&&(t.long0=t.longitude_of_origin),t.false_easting!==void 0&&(t.x0=t.false_easting),t.easting_at_projection_centre&&(t.x0=t.easting_at_projection_centre),t.false_northing!==void 0&&(t.y0=t.false_northing),t.northing_at_projection_centre&&(t.y0=t.northing_at_projection_centre),t.standard_parallel_1!==void 0&&(t.lat1=t.standard_parallel_1),t.standard_parallel_2!==void 0&&(t.lat2=t.standard_parallel_2),t.scale_factor_at_natural_origin!==void 0&&(t.k0=t.scale_factor_at_natural_origin),t.scale_factor_at_projection_centre!==void 0&&(t.k0=t.scale_factor_at_projection_centre),t.scale_factor_on_pseudo_standard_parallel!==void 0&&(t.k0=t.scale_factor_on_pseudo_standard_parallel),t.azimuth!==void 0&&(t.alpha=t.azimuth),t.azimuth_at_projection_centre!==void 0&&(t.alpha=t.azimuth_at_projection_centre),t.angle_from_rectified_to_skew_grid&&(t.rectified_grid_angle=t.angle_from_rectified_to_skew_grid),Zs(t),t)}var M1=["PROJECTEDCRS","PROJCRS","GEOGCS","GEOCCS","PROJCS","LOCAL_CS","GEODCRS","GEODETICCRS","GEODETICDATUM","ENGCRS","ENGINEERINGCRS"];function x1(e,t){var r=t[0],s=t[1];!(r in e)&&s in e&&(e[r]=e[s],t.length===3&&(e[r]=t[2](e[r])))}function Sc(e){for(var t=Object.keys(e),r=0,s=t.length;r<s;++r){var i=t[r];M1.indexOf(i)!==-1&&y1(e[i]),typeof e[i]=="object"&&Sc(e[i])}}function y1(e){if(e.AUTHORITY){var t=Object.keys(e.AUTHORITY)[0];t&&t in e.AUTHORITY&&(e.title=t+":"+e.AUTHORITY[t])}if(e.type==="GEOGCS"?e.projName="longlat":e.type==="LOCAL_CS"?(e.projName="identity",e.local=!0):typeof e.PROJECTION=="object"?e.projName=Object.keys(e.PROJECTION)[0]:e.projName=e.PROJECTION,e.AXIS){for(var r="",s=0,i=e.AXIS.length;s<i;++s){var n=[e.AXIS[s][0].toLowerCase(),e.AXIS[s][1].toLowerCase()];n[0].indexOf("north")!==-1||(n[0]==="y"||n[0]==="lat")&&n[1]==="north"?r+="n":n[0].indexOf("south")!==-1||(n[0]==="y"||n[0]==="lat")&&n[1]==="south"?r+="s":n[0].indexOf("east")!==-1||(n[0]==="x"||n[0]==="lon")&&n[1]==="east"?r+="e":(n[0].indexOf("west")!==-1||(n[0]==="x"||n[0]==="lon")&&n[1]==="west")&&(r+="w")}r.length===2&&(r+="u"),r.length===3&&(e.axis=r)}e.UNIT&&(e.units=e.UNIT.name.toLowerCase(),e.units==="metre"&&(e.units="meter"),e.UNIT.convert&&(e.type==="GEOGCS"?e.DATUM&&e.DATUM.SPHEROID&&(e.to_meter=e.UNIT.convert*e.DATUM.SPHEROID.a):e.to_meter=e.UNIT.convert));var o=e.GEOGCS;e.type==="GEOGCS"&&(o=e),o&&(o.PRIMEM&&o.PRIMEM.convert&&(e.from_greenwich=St(o.PRIMEM.convert)),o.DATUM?e.datumCode=o.DATUM.name.toLowerCase():e.datumCode=o.name.toLowerCase(),e.datumCode.slice(0,2)==="d_"&&(e.datumCode=e.datumCode.slice(2)),e.datumCode==="new_zealand_1949"&&(e.datumCode="nzgd49"),(e.datumCode==="wgs_1984"||e.datumCode==="world_geodetic_system_1984")&&(e.PROJECTION==="Mercator_Auxiliary_Sphere"&&(e.sphere=!0),e.datumCode="wgs84"),e.datumCode==="belge_1972"&&(e.datumCode="rnb72"),o.DATUM&&o.DATUM.SPHEROID&&(e.ellps=o.DATUM.SPHEROID.name.replace("_19","").replace(/[Cc]larke\_18/,"clrk"),e.ellps.toLowerCase().slice(0,13)==="international"&&(e.ellps="intl"),e.a=o.DATUM.SPHEROID.a,e.rf=parseFloat(o.DATUM.SPHEROID.rf)),o.DATUM&&o.DATUM.TOWGS84&&(e.datum_params=o.DATUM.TOWGS84),~e.datumCode.indexOf("osgb_1936")&&(e.datumCode="osgb36"),~e.datumCode.indexOf("osni_1952")&&(e.datumCode="osni52"),(~e.datumCode.indexOf("tm65")||~e.datumCode.indexOf("geodetic_datum_of_1965"))&&(e.datumCode="ire65"),e.datumCode==="ch1903+"&&(e.datumCode="ch1903"),~e.datumCode.indexOf("israel")&&(e.datumCode="isr93")),e.b&&!isFinite(e.b)&&(e.b=e.a),e.rectified_grid_angle&&(e.rectified_grid_angle=St(e.rectified_grid_angle));function a(l){var u=e.to_meter||1;return l*u}var h=function(l){return x1(e,l)},c=[["standard_parallel_1","Standard_Parallel_1"],["standard_parallel_1","Latitude of 1st standard parallel"],["standard_parallel_2","Standard_Parallel_2"],["standard_parallel_2","Latitude of 2nd standard parallel"],["false_easting","False_Easting"],["false_easting","False easting"],["false-easting","Easting at false origin"],["false_northing","False_Northing"],["false_northing","False northing"],["false_northing","Northing at false origin"],["central_meridian","Central_Meridian"],["central_meridian","Longitude of natural origin"],["central_meridian","Longitude of false origin"],["latitude_of_origin","Latitude_Of_Origin"],["latitude_of_origin","Central_Parallel"],["latitude_of_origin","Latitude of natural origin"],["latitude_of_origin","Latitude of false origin"],["scale_factor","Scale_Factor"],["k0","scale_factor"],["latitude_of_center","Latitude_Of_Center"],["latitude_of_center","Latitude_of_center"],["lat0","latitude_of_center",St],["longitude_of_center","Longitude_Of_Center"],["longitude_of_center","Longitude_of_center"],["longc","longitude_of_center",St],["x0","false_easting",a],["y0","false_northing",a],["long0","central_meridian",St],["lat0","latitude_of_origin",St],["lat0","standard_parallel_1",St],["lat1","standard_parallel_1",St],["lat2","standard_parallel_2",St],["azimuth","Azimuth"],["alpha","azimuth",St],["srsCode","name"]];c.forEach(h),Zs(e)}function Oe(e){if(typeof e=="object")return vr(e);let t=fc(e);var r=mc(e);if(t==="WKT2"){let n=uc(r);return vr(n)}var s=r[0],i={};return me(r,i),Sc(i),i[s]}function mt(e){var t=this;if(arguments.length===2){var r=arguments[1];typeof r=="string"?r.charAt(0)==="+"?mt[e]=yr(arguments[1]):mt[e]=Oe(arguments[1]):r&&typeof r=="object"&&!("projName"in r)?mt[e]=Oe(arguments[1]):(mt[e]=r,r||delete mt[e])}else if(arguments.length===1){if(Array.isArray(e))return e.map(function(s){return Array.isArray(s)?mt.apply(t,s):mt(s)});if(typeof e=="string"){if(e in mt)return mt[e]}else"EPSG"in e?mt["EPSG:"+e.EPSG]=e:"ESRI"in e?mt["ESRI:"+e.ESRI]=e:"IAU2000"in e?mt["IAU2000:"+e.IAU2000]=e:console.log(e);return}}ec(mt);var Ne=mt;function S1(e){return typeof e=="string"}function v1(e){return e in Ne}function E1(e){return e.indexOf("+")!==0&&e.indexOf("[")!==-1||typeof e=="object"&&!("srsCode"in e)}var vc=["3857","900913","3785","102113"];function w1(e){if(e.title)return e.title.toLowerCase().indexOf("epsg:")===0&&vc.indexOf(e.title.substr(5))>-1;var t=yt(e,"authority");if(t){var r=yt(t,"epsg");return r&&vc.indexOf(r)>-1}}function T1(e){var t=yt(e,"extension");if(t)return yt(t,"proj4")}function P1(e){return e[0]==="+"}function b1(e){let t;if(S1(e))if(v1(e))t=Ne[e];else if(E1(e)){t=Oe(e);var r=T1(t);r&&(t=yr(r))}else P1(e)&&(t=yr(e));else"projName"in e?t=e:t=Oe(e);return t&&w1(t)?Ne["EPSG:3857"]:t}var Ec=b1;function jn(e,t){e=e||{};var r,s;if(!t)return e;for(s in t)r=t[s],r!==void 0&&(e[s]=r);return e}function at(e,t,r){var s=e*t;return r/Math.sqrt(1-s*s)}function Dt(e){return e<0?-1:1}function E(e,t){return t||Math.abs(e)<=Y?e:e-Dt(e)*ne}function ut(e,t,r){var s=e*r,i=.5*e;return s=Math.pow((1-s)/(1+s),i),Math.tan(.5*(y-t))/s}function $t(e,t){for(var r=.5*e,s,i,n=y-2*Math.atan(t),o=0;o<=15;o++)if(s=e*Math.sin(n),i=y-2*Math.atan(t*Math.pow((1-s)/(1+s),r))-n,n+=i,Math.abs(i)<=1e-10)return n;return-9999}function R1(){var e=this.b/this.a;this.es=1-e*e,"x0"in this||(this.x0=0),"y0"in this||(this.y0=0),this.e=Math.sqrt(this.es),this.lat_ts?this.sphere?this.k0=Math.cos(this.lat_ts):this.k0=at(this.e,Math.sin(this.lat_ts),Math.cos(this.lat_ts)):this.k0||(this.k?this.k0=this.k:this.k0=1)}function C1(e){var t=e.x,r=e.y;if(r*X>90&&r*X<-90&&t*X>180&&t*X<-180)return null;var s,i;if(Math.abs(Math.abs(r)-y)<=T)return null;if(this.sphere)s=this.x0+this.a*this.k0*E(t-this.long0,this.over),i=this.y0+this.a*this.k0*Math.log(Math.tan(q+.5*r));else{var n=Math.sin(r),o=ut(this.e,r,n);s=this.x0+this.a*this.k0*E(t-this.long0,this.over),i=this.y0-this.a*this.k0*Math.log(o)}return e.x=s,e.y=i,e}function A1(e){var t=e.x-this.x0,r=e.y-this.y0,s,i;if(this.sphere)i=y-2*Math.atan(Math.exp(-r/(this.a*this.k0)));else{var n=Math.exp(-r/(this.a*this.k0));if(i=$t(this.e,n),i===-9999)return null}return s=E(this.long0+t/(this.a*this.k0),this.over),e.x=s,e.y=i,e}var I1=["Mercator","Popular Visualisation Pseudo Mercator","Mercator_1SP","Mercator_Auxiliary_Sphere","Mercator_Variant_A","merc"],wc={init:R1,forward:C1,inverse:A1,names:I1};function O1(){}function Tc(e){return e}var Wn=["longlat","identity"],Pc={init:O1,forward:Tc,inverse:Tc,names:Wn};var N1=[wc,Pc],de={},Le=[];function bc(e,t){var r=Le.length;return e.names?(Le[r]=e,e.names.forEach(function(s){de[s.toLowerCase()]=r}),this):(console.log(t),!0)}function Hn(e){return e.replace(/[-\(\)\s]+/g," ").trim().replace(/ /g,"_")}function L1(e){if(!e)return!1;var t=e.toLowerCase();if(typeof de[t]<"u"&&Le[de[t]]||(t=Hn(t),t in de&&Le[de[t]]))return Le[de[t]]}function G1(){N1.forEach(bc)}var Rc={start:G1,add:bc,get:L1};var z1={MERIT:{a:6378137,rf:298.257,ellipseName:"MERIT 1983"},SGS85:{a:6378136,rf:298.257,ellipseName:"Soviet Geodetic System 85"},GRS80:{a:6378137,rf:298.257222101,ellipseName:"GRS 1980(IUGG, 1980)"},IAU76:{a:6378140,rf:298.257,ellipseName:"IAU 1976"},airy:{a:6377563396e-3,b:635625691e-2,ellipseName:"Airy 1830"},APL4:{a:6378137,rf:298.25,ellipseName:"Appl. Physics. 1965"},NWL9D:{a:6378145,rf:298.25,ellipseName:"Naval Weapons Lab., 1965"},mod_airy:{a:6377340189e-3,b:6356034446e-3,ellipseName:"Modified Airy"},andrae:{a:637710443e-2,rf:300,ellipseName:"Andrae 1876 (Den., Iclnd.)"},aust_SA:{a:6378160,rf:298.25,ellipseName:"Australian Natl & S. Amer. 1969"},GRS67:{a:6378160,rf:298.247167427,ellipseName:"GRS 67(IUGG 1967)"},bessel:{a:6377397155e-3,rf:299.1528128,ellipseName:"Bessel 1841"},bess_nam:{a:6377483865e-3,rf:299.1528128,ellipseName:"Bessel 1841 (Namibia)"},clrk66:{a:63782064e-1,b:63565838e-1,ellipseName:"Clarke 1866"},clrk80:{a:6378249145e-3,rf:293.4663,ellipseName:"Clarke 1880 mod."},clrk80ign:{a:63782492e-1,b:6356515,rf:293.4660213,ellipseName:"Clarke 1880 (IGN)"},clrk58:{a:6378293645208759e-9,rf:294.2606763692654,ellipseName:"Clarke 1858"},CPM:{a:63757387e-1,rf:334.29,ellipseName:"Comm. des Poids et Mesures 1799"},delmbr:{a:6376428,rf:311.5,ellipseName:"Delambre 1810 (Belgium)"},engelis:{a:637813605e-2,rf:298.2566,ellipseName:"Engelis 1985"},evrst30:{a:6377276345e-3,rf:300.8017,ellipseName:"Everest 1830"},evrst48:{a:6377304063e-3,rf:300.8017,ellipseName:"Everest 1948"},evrst56:{a:6377301243e-3,rf:300.8017,ellipseName:"Everest 1956"},evrst69:{a:6377295664e-3,rf:300.8017,ellipseName:"Everest 1969"},evrstSS:{a:6377298556e-3,rf:300.8017,ellipseName:"Everest (Sabah & Sarawak)"},fschr60:{a:6378166,rf:298.3,ellipseName:"Fischer (Mercury Datum) 1960"},fschr60m:{a:6378155,rf:298.3,ellipseName:"Fischer 1960"},fschr68:{a:6378150,rf:298.3,ellipseName:"Fischer 1968"},helmert:{a:6378200,rf:298.3,ellipseName:"Helmert 1906"},hough:{a:6378270,rf:297,ellipseName:"Hough"},intl:{a:6378388,rf:297,ellipseName:"International 1909 (Hayford)"},kaula:{a:6378163,rf:298.24,ellipseName:"Kaula 1961"},lerch:{a:6378139,rf:298.257,ellipseName:"Lerch 1979"},mprts:{a:6397300,rf:191,ellipseName:"Maupertius 1738"},new_intl:{a:63781575e-1,b:63567722e-1,ellipseName:"New International 1967"},plessis:{a:6376523,rf:6355863,ellipseName:"Plessis 1817 (France)"},krass:{a:6378245,rf:298.3,ellipseName:"Krassovsky, 1942"},SEasia:{a:6378155,b:63567733205e-4,ellipseName:"Southeast Asia"},walbeck:{a:6376896,b:63558348467e-4,ellipseName:"Walbeck"},WGS60:{a:6378165,rf:298.3,ellipseName:"WGS 60"},WGS66:{a:6378145,rf:298.25,ellipseName:"WGS 66"},WGS7:{a:6378135,rf:298.26,ellipseName:"WGS 72"},WGS84:{a:6378137,rf:298.257223563,ellipseName:"WGS 84"},sphere:{a:6370997,b:6370997,ellipseName:"Normal Sphere (r=6370997)"}},Yn=z1;var q1=Yn.WGS84;function Cc(e,t,r,s){var i=e*e,n=t*t,o=(i-n)/i,a=0;s?(e*=1-o*(ic+o*(nc+o*oc)),i=e*e,o=0):a=Math.sqrt(o);var h=(i-n)/n;return{es:o,e:a,ep2:h}}function Ac(e,t,r,s,i){if(!e){var n=yt(Yn,s);n||(n=q1),e=n.a,t=n.b,r=n.rf}return r&&!t&&(t=(1-1/r)*e),(r===0||Math.abs(e-t)<T)&&(i=!0,t=e),{a:e,b:t,rf:r,sphere:i}}var Qs={wgs84:{towgs84:"0,0,0",ellipse:"WGS84",datumName:"WGS84"},ch1903:{towgs84:"674.374,15.056,405.346",ellipse:"bessel",datumName:"swiss"},ggrs87:{towgs84:"-199.87,74.79,246.62",ellipse:"GRS80",datumName:"Greek_Geodetic_Reference_System_1987"},nad83:{towgs84:"0,0,0",ellipse:"GRS80",datumName:"North_American_Datum_1983"},nad27:{nadgrids:"@conus,@alaska,@ntv2_0.gsb,@ntv1_can.dat",ellipse:"clrk66",datumName:"North_American_Datum_1927"},potsdam:{towgs84:"598.1,73.7,418.2,0.202,0.045,-2.455,6.7",ellipse:"bessel",datumName:"Potsdam Rauenberg 1950 DHDN"},carthage:{towgs84:"-263.0,6.0,431.0",ellipse:"clark80",datumName:"Carthage 1934 Tunisia"},hermannskogel:{towgs84:"577.326,90.129,463.919,5.137,1.474,5.297,2.4232",ellipse:"bessel",datumName:"Hermannskogel"},mgi:{towgs84:"577.326,90.129,463.919,5.137,1.474,5.297,2.4232",ellipse:"bessel",datumName:"Militar-Geographische Institut"},osni52:{towgs84:"482.530,-130.596,564.557,-1.042,-0.214,-0.631,8.15",ellipse:"airy",datumName:"Irish National"},ire65:{towgs84:"482.530,-130.596,564.557,-1.042,-0.214,-0.631,8.15",ellipse:"mod_airy",datumName:"Ireland 1965"},rassadiran:{towgs84:"-133.63,-157.5,-158.62",ellipse:"intl",datumName:"Rassadiran"},nzgd49:{towgs84:"59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993",ellipse:"intl",datumName:"New Zealand Geodetic Datum 1949"},osgb36:{towgs84:"446.448,-125.157,542.060,0.1502,0.2470,0.8421,-20.4894",ellipse:"airy",datumName:"Ordnance Survey of Great Britain 1936"},s_jtsk:{towgs84:"589,76,480",ellipse:"bessel",datumName:"S-JTSK (Ferro)"},beduaram:{towgs84:"-106,-87,188",ellipse:"clrk80",datumName:"Beduaram"},gunung_segara:{towgs84:"-403,684,41",ellipse:"bessel",datumName:"Gunung Segara Jakarta"},rnb72:{towgs84:"106.869,-52.2978,103.724,-0.33657,0.456955,-1.84218,1",ellipse:"intl",datumName:"Reseau National Belge 1972"},EPSG_5451:{towgs84:"6.41,-49.05,-11.28,1.5657,0.5242,6.9718,-5.7649"},IGNF_LURESG:{towgs84:"-192.986,13.673,-39.309,-0.4099,-2.9332,2.6881,0.43"},EPSG_4614:{towgs84:"-119.4248,-303.65872,-11.00061,1.164298,0.174458,1.096259,3.657065"},EPSG_4615:{towgs84:"-494.088,-312.129,279.877,-1.423,-1.013,1.59,-0.748"},ESRI_37241:{towgs84:"-76.822,257.457,-12.817,2.136,-0.033,-2.392,-0.031"},ESRI_37249:{towgs84:"-440.296,58.548,296.265,1.128,10.202,4.559,-0.438"},ESRI_37245:{towgs84:"-511.151,-181.269,139.609,1.05,2.703,1.798,3.071"},EPSG_4178:{towgs84:"24.9,-126.4,-93.2,-0.063,-0.247,-0.041,1.01"},EPSG_4622:{towgs84:"-472.29,-5.63,-304.12,0.4362,-0.8374,0.2563,1.8984"},EPSG_4625:{towgs84:"126.93,547.94,130.41,-2.7867,5.1612,-0.8584,13.8227"},EPSG_5252:{towgs84:"0.023,0.036,-0.068,0.00176,0.00912,-0.01136,0.00439"},EPSG_4314:{towgs84:"597.1,71.4,412.1,0.894,0.068,-1.563,7.58"},EPSG_4282:{towgs84:"-178.3,-316.7,-131.5,5.278,6.077,10.979,19.166"},EPSG_4231:{towgs84:"-83.11,-97.38,-117.22,0.005693,-0.044698,0.044285,0.1218"},EPSG_4274:{towgs84:"-230.994,102.591,25.199,0.633,-0.239,0.9,1.95"},EPSG_4134:{towgs84:"-180.624,-225.516,173.919,-0.81,-1.898,8.336,16.71006"},EPSG_4254:{towgs84:"18.38,192.45,96.82,0.056,-0.142,-0.2,-0.0013"},EPSG_4159:{towgs84:"-194.513,-63.978,-25.759,-3.4027,3.756,-3.352,-0.9175"},EPSG_4687:{towgs84:"0.072,-0.507,-0.245,0.0183,-0.0003,0.007,-0.0093"},EPSG_4227:{towgs84:"-83.58,-397.54,458.78,-17.595,-2.847,4.256,3.225"},EPSG_4746:{towgs84:"599.4,72.4,419.2,-0.062,-0.022,-2.723,6.46"},EPSG_4745:{towgs84:"612.4,77,440.2,-0.054,0.057,-2.797,2.55"},EPSG_6311:{towgs84:"8.846,-4.394,-1.122,-0.00237,-0.146528,0.130428,0.783926"},EPSG_4289:{towgs84:"565.7381,50.4018,465.2904,-0.395026,0.330772,-1.876073,4.07244"},EPSG_4230:{towgs84:"-68.863,-134.888,-111.49,-0.53,-0.14,0.57,-3.4"},EPSG_4154:{towgs84:"-123.02,-158.95,-168.47"},EPSG_4156:{towgs84:"570.8,85.7,462.8,4.998,1.587,5.261,3.56"},EPSG_4299:{towgs84:"482.5,-130.6,564.6,-1.042,-0.214,-0.631,8.15"},EPSG_4179:{towgs84:"33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84"},EPSG_4313:{towgs84:"-106.8686,52.2978,-103.7239,0.3366,-0.457,1.8422,-1.2747"},EPSG_4194:{towgs84:"163.511,127.533,-159.789"},EPSG_4195:{towgs84:"105,326,-102.5"},EPSG_4196:{towgs84:"-45,417,-3.5"},EPSG_4611:{towgs84:"-162.619,-276.959,-161.764,0.067753,-2.243648,-1.158828,-1.094246"},EPSG_4633:{towgs84:"137.092,131.66,91.475,-1.9436,-11.5993,-4.3321,-7.4824"},EPSG_4641:{towgs84:"-408.809,366.856,-412.987,1.8842,-0.5308,2.1655,-121.0993"},EPSG_4643:{towgs84:"-480.26,-438.32,-643.429,16.3119,20.1721,-4.0349,-111.7002"},EPSG_4300:{towgs84:"482.5,-130.6,564.6,-1.042,-0.214,-0.631,8.15"},EPSG_4188:{towgs84:"482.5,-130.6,564.6,-1.042,-0.214,-0.631,8.15"},EPSG_4660:{towgs84:"982.6087,552.753,-540.873,6.681627,-31.611492,-19.848161,16.805"},EPSG_4662:{towgs84:"97.295,-263.247,310.882,-1.5999,0.8386,3.1409,13.3259"},EPSG_3906:{towgs84:"577.88891,165.22205,391.18289,4.9145,-0.94729,-13.05098,7.78664"},EPSG_4307:{towgs84:"-209.3622,-87.8162,404.6198,0.0046,3.4784,0.5805,-1.4547"},EPSG_6892:{towgs84:"-76.269,-16.683,68.562,-6.275,10.536,-4.286,-13.686"},EPSG_4690:{towgs84:"221.597,152.441,176.523,2.403,1.3893,0.884,11.4648"},EPSG_4691:{towgs84:"218.769,150.75,176.75,3.5231,2.0037,1.288,10.9817"},EPSG_4629:{towgs84:"72.51,345.411,79.241,-1.5862,-0.8826,-0.5495,1.3653"},EPSG_4630:{towgs84:"165.804,216.213,180.26,-0.6251,-0.4515,-0.0721,7.4111"},EPSG_4692:{towgs84:"217.109,86.452,23.711,0.0183,-0.0003,0.007,-0.0093"},EPSG_9333:{towgs84:"0,0,0,-0.008393,0.000749,-0.010276,0"},EPSG_9059:{towgs84:"0,0,0"},EPSG_4312:{towgs84:"601.705,84.263,485.227,4.7354,1.3145,5.393,-2.3887"},EPSG_4123:{towgs84:"-96.062,-82.428,-121.753,4.801,0.345,-1.376,1.496"},EPSG_4309:{towgs84:"-124.45,183.74,44.64,-0.4384,0.5446,-0.9706,-2.1365"},ESRI_104106:{towgs84:"-283.088,-70.693,117.445,-1.157,0.059,-0.652,-4.058"},EPSG_4281:{towgs84:"-219.247,-73.802,269.529"},EPSG_4322:{towgs84:"0,0,4.5"},EPSG_4324:{towgs84:"0,0,1.9"},EPSG_4284:{towgs84:"43.822,-108.842,-119.585,1.455,-0.761,0.737,0.549"},EPSG_4277:{towgs84:"446.448,-125.157,542.06,0.15,0.247,0.842,-20.489"},EPSG_4207:{towgs84:"-282.1,-72.2,120,-1.529,0.145,-0.89,-4.46"},EPSG_4688:{towgs84:"347.175,1077.618,2623.677,33.9058,-70.6776,9.4013,186.0647"},EPSG_4689:{towgs84:"410.793,54.542,80.501,-2.5596,-2.3517,-0.6594,17.3218"},EPSG_4720:{towgs84:"0,0,4.5"},EPSG_4273:{towgs84:"278.3,93,474.5,7.889,0.05,-6.61,6.21"},EPSG_4240:{towgs84:"204.64,834.74,293.8"},EPSG_4817:{towgs84:"278.3,93,474.5,7.889,0.05,-6.61,6.21"},ESRI_104131:{towgs84:"426.62,142.62,460.09,4.98,4.49,-12.42,-17.1"},EPSG_4265:{towgs84:"-104.1,-49.1,-9.9,0.971,-2.917,0.714,-11.68"},EPSG_4263:{towgs84:"-111.92,-87.85,114.5,1.875,0.202,0.219,0.032"},EPSG_4298:{towgs84:"-689.5937,623.84046,-65.93566,-0.02331,1.17094,-0.80054,5.88536"},EPSG_4270:{towgs84:"-253.4392,-148.452,386.5267,0.15605,0.43,-0.1013,-0.0424"},EPSG_4229:{towgs84:"-121.8,98.1,-10.7"},EPSG_4220:{towgs84:"-55.5,-348,-229.2"},EPSG_4214:{towgs84:"12.646,-155.176,-80.863"},EPSG_4232:{towgs84:"-345,3,223"},EPSG_4238:{towgs84:"-1.977,-13.06,-9.993,0.364,0.254,0.689,-1.037"},EPSG_4168:{towgs84:"-170,33,326"},EPSG_4131:{towgs84:"199,931,318.9"},EPSG_4152:{towgs84:"-0.9102,2.0141,0.5602,0.029039,0.010065,0.010101,0"},EPSG_5228:{towgs84:"572.213,85.334,461.94,4.9732,1.529,5.2484,3.5378"},EPSG_8351:{towgs84:"485.021,169.465,483.839,7.786342,4.397554,4.102655,0"},EPSG_4683:{towgs84:"-127.62,-67.24,-47.04,-3.068,4.903,1.578,-1.06"},EPSG_4133:{towgs84:"0,0,0"},EPSG_7373:{towgs84:"0.819,-0.5762,-1.6446,-0.00378,-0.03317,0.00318,0.0693"},EPSG_9075:{towgs84:"-0.9102,2.0141,0.5602,0.029039,0.010065,0.010101,0"},EPSG_9072:{towgs84:"-0.9102,2.0141,0.5602,0.029039,0.010065,0.010101,0"},EPSG_9294:{towgs84:"1.16835,-1.42001,-2.24431,-0.00822,-0.05508,0.01818,0.23388"},EPSG_4212:{towgs84:"-267.434,173.496,181.814,-13.4704,8.7154,7.3926,14.7492"},EPSG_4191:{towgs84:"-44.183,-0.58,-38.489,2.3867,2.7072,-3.5196,-8.2703"},EPSG_4237:{towgs84:"52.684,-71.194,-13.975,-0.312,-0.1063,-0.3729,1.0191"},EPSG_4740:{towgs84:"-1.08,-0.27,-0.9"},EPSG_4124:{towgs84:"419.3836,99.3335,591.3451,0.850389,1.817277,-7.862238,-0.99496"},EPSG_5681:{towgs84:"584.9636,107.7175,413.8067,1.1155,0.2824,-3.1384,7.9922"},EPSG_4141:{towgs84:"23.772,17.49,17.859,-0.3132,-1.85274,1.67299,-5.4262"},EPSG_4204:{towgs84:"-85.645,-273.077,-79.708,2.289,-1.421,2.532,3.194"},EPSG_4319:{towgs84:"226.702,-193.337,-35.371,-2.229,-4.391,9.238,0.9798"},EPSG_4200:{towgs84:"24.82,-131.21,-82.66"},EPSG_4130:{towgs84:"0,0,0"},EPSG_4127:{towgs84:"-82.875,-57.097,-156.768,-2.158,1.524,-0.982,-0.359"},EPSG_4149:{towgs84:"674.374,15.056,405.346"},EPSG_4617:{towgs84:"-0.991,1.9072,0.5129,0.02579,0.00965,0.01166,0"},EPSG_4663:{towgs84:"-210.502,-66.902,-48.476,2.094,-15.067,-5.817,0.485"},EPSG_4664:{towgs84:"-211.939,137.626,58.3,-0.089,0.251,0.079,0.384"},EPSG_4665:{towgs84:"-105.854,165.589,-38.312,-0.003,-0.026,0.024,-0.048"},EPSG_4666:{towgs84:"631.392,-66.551,481.442,1.09,-4.445,-4.487,-4.43"},EPSG_4756:{towgs84:"-192.873,-39.382,-111.202,-0.00205,-0.0005,0.00335,0.0188"},EPSG_4723:{towgs84:"-179.483,-69.379,-27.584,-7.862,8.163,6.042,-13.925"},EPSG_4726:{towgs84:"8.853,-52.644,180.304,-0.393,-2.323,2.96,-24.081"},EPSG_4267:{towgs84:"-8.0,160.0,176.0"},EPSG_5365:{towgs84:"-0.16959,0.35312,0.51846,0.03385,-0.16325,0.03446,0.03693"},EPSG_4218:{towgs84:"304.5,306.5,-318.1"},EPSG_4242:{towgs84:"-33.722,153.789,94.959,-8.581,-4.478,4.54,8.95"},EPSG_4216:{towgs84:"-292.295,248.758,429.447,4.9971,2.99,6.6906,1.0289"},ESRI_104105:{towgs84:"631.392,-66.551,481.442,1.09,-4.445,-4.487,-4.43"},ESRI_104129:{towgs84:"0,0,0"},EPSG_4673:{towgs84:"174.05,-25.49,112.57"},EPSG_4202:{towgs84:"-124,-60,154"},EPSG_4203:{towgs84:"-117.763,-51.51,139.061,0.292,0.443,0.277,-0.191"},EPSG_3819:{towgs84:"595.48,121.69,515.35,4.115,-2.9383,0.853,-3.408"},EPSG_8694:{towgs84:"-93.799,-132.737,-219.073,-1.844,0.648,-6.37,-0.169"},EPSG_4145:{towgs84:"275.57,676.78,229.6"},EPSG_4283:{towgs84:"0.06155,-0.01087,-0.04019,0.039492,0.032722,0.032898,-0.009994"},EPSG_4317:{towgs84:"2.3287,-147.0425,-92.0802,-0.309248,0.324822,0.497299,5.689063"},EPSG_4272:{towgs84:"59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993"},EPSG_4248:{towgs84:"-307.7,265.3,-363.5"},EPSG_5561:{towgs84:"24,-121,-76"},EPSG_5233:{towgs84:"-0.293,766.95,87.713,0.195704,1.695068,3.473016,-0.039338"},ESRI_104130:{towgs84:"-86,-98,-119"},ESRI_104102:{towgs84:"682,-203,480"},ESRI_37207:{towgs84:"7,-10,-26"},EPSG_4675:{towgs84:"59.935,118.4,-10.871"},ESRI_104109:{towgs84:"-89.121,-348.182,260.871"},ESRI_104112:{towgs84:"-185.583,-230.096,281.361"},ESRI_104113:{towgs84:"25.1,-275.6,222.6"},IGNF_WGS72G:{towgs84:"0,12,6"},IGNF_NTFG:{towgs84:"-168,-60,320"},IGNF_EFATE57G:{towgs84:"-127,-769,472"},IGNF_PGP50G:{towgs84:"324.8,153.6,172.1"},IGNF_REUN47G:{towgs84:"94,-948,-1262"},IGNF_CSG67G:{towgs84:"-186,230,110"},IGNF_GUAD48G:{towgs84:"-467,-16,-300"},IGNF_TAHI51G:{towgs84:"162,117,154"},IGNF_TAHAAG:{towgs84:"65,342,77"},IGNF_NUKU72G:{towgs84:"84,274,65"},IGNF_PETRELS72G:{towgs84:"365,194,166"},IGNF_WALL78G:{towgs84:"253,-133,-127"},IGNF_MAYO50G:{towgs84:"-382,-59,-262"},IGNF_TANNAG:{towgs84:"-139,-967,436"},IGNF_IGN72G:{towgs84:"-13,-348,292"},IGNF_ATIGG:{towgs84:"1118,23,66"},IGNF_FANGA84G:{towgs84:"150.57,158.33,118.32"},IGNF_RUSAT84G:{towgs84:"202.13,174.6,-15.74"},IGNF_KAUE70G:{towgs84:"126.74,300.1,-75.49"},IGNF_MOP90G:{towgs84:"-10.8,-1.8,12.77"},IGNF_MHPF67G:{towgs84:"338.08,212.58,-296.17"},IGNF_TAHI79G:{towgs84:"160.61,116.05,153.69"},IGNF_ANAA92G:{towgs84:"1.5,3.84,4.81"},IGNF_MARQUI72G:{towgs84:"330.91,-13.92,58.56"},IGNF_APAT86G:{towgs84:"143.6,197.82,74.05"},IGNF_TUBU69G:{towgs84:"237.17,171.61,-77.84"},IGNF_STPM50G:{towgs84:"11.363,424.148,373.13"},EPSG_4150:{towgs84:"674.374,15.056,405.346"},EPSG_4754:{towgs84:"-208.4058,-109.8777,-2.5764"},ESRI_104101:{towgs84:"372.87,149.23,585.29"},EPSG_4693:{towgs84:"0,-0.15,0.68"},EPSG_6207:{towgs84:"293.17,726.18,245.36"},EPSG_4153:{towgs84:"-133.63,-157.5,-158.62"},EPSG_4132:{towgs84:"-241.54,-163.64,396.06"},EPSG_4221:{towgs84:"-154.5,150.7,100.4"},EPSG_4266:{towgs84:"-80.7,-132.5,41.1"},EPSG_4193:{towgs84:"-70.9,-151.8,-41.4"},EPSG_5340:{towgs84:"-0.41,0.46,-0.35"},EPSG_4246:{towgs84:"-294.7,-200.1,525.5"},EPSG_4318:{towgs84:"-3.2,-5.7,2.8"},EPSG_4121:{towgs84:"-199.87,74.79,246.62"},EPSG_4223:{towgs84:"-260.1,5.5,432.2"},EPSG_4158:{towgs84:"-0.465,372.095,171.736"},EPSG_4285:{towgs84:"-128.16,-282.42,21.93"},EPSG_4613:{towgs84:"-404.78,685.68,45.47"},EPSG_4607:{towgs84:"195.671,332.517,274.607"},EPSG_4475:{towgs84:"-381.788,-57.501,-256.673"},EPSG_4208:{towgs84:"-157.84,308.54,-146.6"},EPSG_4743:{towgs84:"70.995,-335.916,262.898"},EPSG_4710:{towgs84:"-323.65,551.39,-491.22"},EPSG_7881:{towgs84:"-0.077,0.079,0.086"},EPSG_4682:{towgs84:"283.729,735.942,261.143"},EPSG_4739:{towgs84:"-156,-271,-189"},EPSG_4679:{towgs84:"-80.01,253.26,291.19"},EPSG_4750:{towgs84:"-56.263,16.136,-22.856"},EPSG_4644:{towgs84:"-10.18,-350.43,291.37"},EPSG_4695:{towgs84:"-103.746,-9.614,-255.95"},EPSG_4292:{towgs84:"-355,21,72"},EPSG_4302:{towgs84:"-61.702,284.488,472.052"},EPSG_4143:{towgs84:"-124.76,53,466.79"},EPSG_4606:{towgs84:"-153,153,307"},EPSG_4699:{towgs84:"-770.1,158.4,-498.2"},EPSG_4247:{towgs84:"-273.5,110.6,-357.9"},EPSG_4160:{towgs84:"8.88,184.86,106.69"},EPSG_4161:{towgs84:"-233.43,6.65,173.64"},EPSG_9251:{towgs84:"-9.5,122.9,138.2"},EPSG_9253:{towgs84:"-78.1,101.6,133.3"},EPSG_4297:{towgs84:"-198.383,-240.517,-107.909"},EPSG_4269:{towgs84:"0,0,0"},EPSG_4301:{towgs84:"-147,506,687"},EPSG_4618:{towgs84:"-59,-11,-52"},EPSG_4612:{towgs84:"0,0,0"},EPSG_4678:{towgs84:"44.585,-131.212,-39.544"},EPSG_4250:{towgs84:"-130,29,364"},EPSG_4144:{towgs84:"214,804,268"},EPSG_4147:{towgs84:"-17.51,-108.32,-62.39"},EPSG_4259:{towgs84:"-254.1,-5.36,-100.29"},EPSG_4164:{towgs84:"-76,-138,67"},EPSG_4211:{towgs84:"-378.873,676.002,-46.255"},EPSG_4182:{towgs84:"-422.651,-172.995,84.02"},EPSG_4224:{towgs84:"-143.87,243.37,-33.52"},EPSG_4225:{towgs84:"-205.57,168.77,-4.12"},EPSG_5527:{towgs84:"-67.35,3.88,-38.22"},EPSG_4752:{towgs84:"98,390,-22"},EPSG_4310:{towgs84:"-30,190,89"},EPSG_9248:{towgs84:"-192.26,65.72,132.08"},EPSG_4680:{towgs84:"124.5,-63.5,-281"},EPSG_4701:{towgs84:"-79.9,-158,-168.9"},EPSG_4706:{towgs84:"-146.21,112.63,4.05"},EPSG_4805:{towgs84:"682,-203,480"},EPSG_4201:{towgs84:"-165,-11,206"},EPSG_4210:{towgs84:"-157,-2,-299"},EPSG_4183:{towgs84:"-104,167,-38"},EPSG_4139:{towgs84:"11,72,-101"},EPSG_4668:{towgs84:"-86,-98,-119"},EPSG_4717:{towgs84:"-2,151,181"},EPSG_4732:{towgs84:"102,52,-38"},EPSG_4280:{towgs84:"-377,681,-50"},EPSG_4209:{towgs84:"-138,-105,-289"},EPSG_4261:{towgs84:"31,146,47"},EPSG_4658:{towgs84:"-73,46,-86"},EPSG_4721:{towgs84:"265.025,384.929,-194.046"},EPSG_4222:{towgs84:"-136,-108,-292"},EPSG_4601:{towgs84:"-255,-15,71"},EPSG_4602:{towgs84:"725,685,536"},EPSG_4603:{towgs84:"72,213.7,93"},EPSG_4605:{towgs84:"9,183,236"},EPSG_4621:{towgs84:"137,248,-430"},EPSG_4657:{towgs84:"-28,199,5"},EPSG_4316:{towgs84:"103.25,-100.4,-307.19"},EPSG_4642:{towgs84:"-13,-348,292"},EPSG_4698:{towgs84:"145,-187,103"},EPSG_4192:{towgs84:"-206.1,-174.7,-87.7"},EPSG_4311:{towgs84:"-265,120,-358"},EPSG_4135:{towgs84:"58,-283,-182"},ESRI_104138:{towgs84:"198,-226,-347"},EPSG_4245:{towgs84:"-11,851,5"},EPSG_4142:{towgs84:"-125,53,467"},EPSG_4213:{towgs84:"-106,-87,188"},EPSG_4253:{towgs84:"-133,-77,-51"},EPSG_4129:{towgs84:"-132,-110,-335"},EPSG_4713:{towgs84:"-77,-128,142"},EPSG_4239:{towgs84:"217,823,299"},EPSG_4146:{towgs84:"295,736,257"},EPSG_4155:{towgs84:"-83,37,124"},EPSG_4165:{towgs84:"-173,253,27"},EPSG_4672:{towgs84:"175,-38,113"},EPSG_4236:{towgs84:"-637,-549,-203"},EPSG_4251:{towgs84:"-90,40,88"},EPSG_4271:{towgs84:"-2,374,172"},EPSG_4175:{towgs84:"-88,4,101"},EPSG_4716:{towgs84:"298,-304,-375"},EPSG_4315:{towgs84:"-23,259,-9"},EPSG_4744:{towgs84:"-242.2,-144.9,370.3"},EPSG_4244:{towgs84:"-97,787,86"},EPSG_4293:{towgs84:"616,97,-251"},EPSG_4714:{towgs84:"-127,-769,472"},EPSG_4736:{towgs84:"260,12,-147"},EPSG_6883:{towgs84:"-235,-110,393"},EPSG_6894:{towgs84:"-63,176,185"},EPSG_4205:{towgs84:"-43,-163,45"},EPSG_4256:{towgs84:"41,-220,-134"},EPSG_4262:{towgs84:"639,405,60"},EPSG_4604:{towgs84:"174,359,365"},EPSG_4169:{towgs84:"-115,118,426"},EPSG_4620:{towgs84:"-106,-129,165"},EPSG_4184:{towgs84:"-203,141,53"},EPSG_4616:{towgs84:"-289,-124,60"},EPSG_9403:{towgs84:"-307,-92,127"},EPSG_4684:{towgs84:"-133,-321,50"},EPSG_4708:{towgs84:"-491,-22,435"},EPSG_4707:{towgs84:"114,-116,-333"},EPSG_4709:{towgs84:"145,75,-272"},EPSG_4712:{towgs84:"-205,107,53"},EPSG_4711:{towgs84:"124,-234,-25"},EPSG_4718:{towgs84:"230,-199,-752"},EPSG_4719:{towgs84:"211,147,111"},EPSG_4724:{towgs84:"208,-435,-229"},EPSG_4725:{towgs84:"189,-79,-202"},EPSG_4735:{towgs84:"647,1777,-1124"},EPSG_4722:{towgs84:"-794,119,-298"},EPSG_4728:{towgs84:"-307,-92,127"},EPSG_4734:{towgs84:"-632,438,-609"},EPSG_4727:{towgs84:"912,-58,1227"},EPSG_4729:{towgs84:"185,165,42"},EPSG_4730:{towgs84:"170,42,84"},EPSG_4733:{towgs84:"276,-57,149"},ESRI_37218:{towgs84:"230,-199,-752"},ESRI_37240:{towgs84:"-7,215,225"},ESRI_37221:{towgs84:"252,-209,-751"},ESRI_4305:{towgs84:"-123,-206,219"},ESRI_104139:{towgs84:"-73,-247,227"},EPSG_4748:{towgs84:"51,391,-36"},EPSG_4219:{towgs84:"-384,664,-48"},EPSG_4255:{towgs84:"-333,-222,114"},EPSG_4257:{towgs84:"-587.8,519.75,145.76"},EPSG_4646:{towgs84:"-963,510,-359"},EPSG_6881:{towgs84:"-24,-203,268"},EPSG_6882:{towgs84:"-183,-15,273"},EPSG_4715:{towgs84:"-104,-129,239"},IGNF_RGF93GDD:{towgs84:"0,0,0"},IGNF_RGM04GDD:{towgs84:"0,0,0"},IGNF_RGSPM06GDD:{towgs84:"0,0,0"},IGNF_RGTAAF07GDD:{towgs84:"0,0,0"},IGNF_RGFG95GDD:{towgs84:"0,0,0"},IGNF_RGNCG:{towgs84:"0,0,0"},IGNF_RGPFGDD:{towgs84:"0,0,0"},IGNF_ETRS89G:{towgs84:"0,0,0"},IGNF_RGR92GDD:{towgs84:"0,0,0"},EPSG_4173:{towgs84:"0,0,0"},EPSG_4180:{towgs84:"0,0,0"},EPSG_4619:{towgs84:"0,0,0"},EPSG_4667:{towgs84:"0,0,0"},EPSG_4075:{towgs84:"0,0,0"},EPSG_6706:{towgs84:"0,0,0"},EPSG_7798:{towgs84:"0,0,0"},EPSG_4661:{towgs84:"0,0,0"},EPSG_4669:{towgs84:"0,0,0"},EPSG_8685:{towgs84:"0,0,0"},EPSG_4151:{towgs84:"0,0,0"},EPSG_9702:{towgs84:"0,0,0"},EPSG_4758:{towgs84:"0,0,0"},EPSG_4761:{towgs84:"0,0,0"},EPSG_4765:{towgs84:"0,0,0"},EPSG_8997:{towgs84:"0,0,0"},EPSG_4023:{towgs84:"0,0,0"},EPSG_4670:{towgs84:"0,0,0"},EPSG_4694:{towgs84:"0,0,0"},EPSG_4148:{towgs84:"0,0,0"},EPSG_4163:{towgs84:"0,0,0"},EPSG_4167:{towgs84:"0,0,0"},EPSG_4189:{towgs84:"0,0,0"},EPSG_4190:{towgs84:"0,0,0"},EPSG_4176:{towgs84:"0,0,0"},EPSG_4659:{towgs84:"0,0,0"},EPSG_3824:{towgs84:"0,0,0"},EPSG_3889:{towgs84:"0,0,0"},EPSG_4046:{towgs84:"0,0,0"},EPSG_4081:{towgs84:"0,0,0"},EPSG_4558:{towgs84:"0,0,0"},EPSG_4483:{towgs84:"0,0,0"},EPSG_5013:{towgs84:"0,0,0"},EPSG_5264:{towgs84:"0,0,0"},EPSG_5324:{towgs84:"0,0,0"},EPSG_5354:{towgs84:"0,0,0"},EPSG_5371:{towgs84:"0,0,0"},EPSG_5373:{towgs84:"0,0,0"},EPSG_5381:{towgs84:"0,0,0"},EPSG_5393:{towgs84:"0,0,0"},EPSG_5489:{towgs84:"0,0,0"},EPSG_5593:{towgs84:"0,0,0"},EPSG_6135:{towgs84:"0,0,0"},EPSG_6365:{towgs84:"0,0,0"},EPSG_5246:{towgs84:"0,0,0"},EPSG_7886:{towgs84:"0,0,0"},EPSG_8431:{towgs84:"0,0,0"},EPSG_8427:{towgs84:"0,0,0"},EPSG_8699:{towgs84:"0,0,0"},EPSG_8818:{towgs84:"0,0,0"},EPSG_4757:{towgs84:"0,0,0"},EPSG_9140:{towgs84:"0,0,0"},EPSG_8086:{towgs84:"0,0,0"},EPSG_4686:{towgs84:"0,0,0"},EPSG_4737:{towgs84:"0,0,0"},EPSG_4702:{towgs84:"0,0,0"},EPSG_4747:{towgs84:"0,0,0"},EPSG_4749:{towgs84:"0,0,0"},EPSG_4674:{towgs84:"0,0,0"},EPSG_4755:{towgs84:"0,0,0"},EPSG_4759:{towgs84:"0,0,0"},EPSG_4762:{towgs84:"0,0,0"},EPSG_4763:{towgs84:"0,0,0"},EPSG_4764:{towgs84:"0,0,0"},EPSG_4166:{towgs84:"0,0,0"},EPSG_4170:{towgs84:"0,0,0"},EPSG_5546:{towgs84:"0,0,0"},EPSG_7844:{towgs84:"0,0,0"},EPSG_4818:{towgs84:"589,76,480"},EPSG_10328:{towgs84:"0,0,0"},EPSG_9782:{towgs84:"0,0,0"},EPSG_9777:{towgs84:"0,0,0"},EPSG_10690:{towgs84:"0,0,0"},EPSG_10639:{towgs84:"0,0,0"},EPSG_10739:{towgs84:"0,0,0"},EPSG_7686:{towgs84:"0,0,0"},EPSG_8900:{towgs84:"0,0,0"},EPSG_5886:{towgs84:"0,0,0"},EPSG_7683:{towgs84:"0,0,0"},EPSG_6668:{towgs84:"0,0,0"},EPSG_20046:{towgs84:"0,0,0"},EPSG_10299:{towgs84:"0,0,0"},EPSG_10310:{towgs84:"0,0,0"},EPSG_10475:{towgs84:"0,0,0"},EPSG_4742:{towgs84:"0,0,0"},EPSG_10671:{towgs84:"0,0,0"},EPSG_10762:{towgs84:"0,0,0"},EPSG_10725:{towgs84:"0,0,0"},EPSG_10791:{towgs84:"0,0,0"},EPSG_10800:{towgs84:"0,0,0"},EPSG_10305:{towgs84:"0,0,0"},EPSG_10941:{towgs84:"0,0,0"},EPSG_10968:{towgs84:"0,0,0"},EPSG_10875:{towgs84:"0,0,0"},EPSG_6318:{towgs84:"0,0,0"},EPSG_10910:{towgs84:"0,0,0"}};for(Ic in Qs)$s=Qs[Ic],$s.datumName&&(Qs[$s.datumName]=$s);var $s,Ic,Oc=Qs;function B1(e,t,r,s,i,n,o){var a={};return a.datum_type=xr,t&&(a.datum_type=rc,a.datum_params=t.map(parseFloat),(a.datum_params[0]!==0||a.datum_params[1]!==0||a.datum_params[2]!==0)&&(a.datum_type=It),a.datum_params.length>3&&(a.datum_params[3]!==0||a.datum_params[4]!==0||a.datum_params[5]!==0||a.datum_params[6]!==0)&&(a.datum_type=Ot,a.datum_params[3]*=fe,a.datum_params[4]*=fe,a.datum_params[5]*=fe,a.datum_params[6]=a.datum_params[6]/1e6+1)),o&&(a.datum_type=Yt,a.grids=o),a.a=r,a.b=s,a.es=i,a.ep2=n,a}var Nc=B1;var $n={};function Qn(e,t,r){return t instanceof ArrayBuffer?D1(e,t,r):{ready:F1(e,t)}}function D1(e,t,r){var s=!0;r!==void 0&&r.includeErrorFields===!1&&(s=!1);var i=new DataView(t),n=V1(i),o=k1(i,n),a=j1(i,o,n,s),h={header:o,subgrids:a};return $n[e]=h,h}async function F1(e,t){for(var r=[],s=await t.getImageCount(),i=s-1;i>=0;i--){var n=await t.getImage(i),o=await n.readRasters(),a=o,h=[n.getWidth(),n.getHeight()],c=n.getBoundingBox().map(Lc),l=typeof n.fileDirectory.getValue=="function"?n.fileDirectory.getValue("ModelPixelScale"):n.fileDirectory.ModelPixelScale,u=[l[0],l[1]].map(Lc),f=c[0]+(h[0]-1)*u[0],d=c[3]-(h[1]-1)*u[1],m=a[0],g=a[1],p=[];for(let S=h[1]-1;S>=0;S--)for(let v=h[0]-1;v>=0;v--){var M=S*h[0]+v;p.push([-oe(g[M]),oe(m[M])])}r.push({del:u,lim:h,ll:[-f,d],cvs:p})}var x={header:{nSubgrids:s},subgrids:r};return $n[e]=x,x}function Gc(e){if(e===void 0)return null;var t=e.split(",");return t.map(U1)}function U1(e){if(e.length===0)return null;var t=e[0]==="@";return t&&(e=e.slice(1)),e==="null"?{name:"null",mandatory:!t,grid:null,isNull:!0}:{name:e,mandatory:!t,grid:$n[e]||null,isNull:!1}}function Lc(e){return e*Math.PI/180}function oe(e){return e/3600*Math.PI/180}function V1(e){var t=e.getInt32(8,!1);return t===11?!1:(t=e.getInt32(8,!0),t!==11&&console.warn("Failed to detect nadgrid endian-ness, defaulting to little-endian"),!0)}function k1(e,t){return{nFields:e.getInt32(8,t),nSubgridFields:e.getInt32(24,t),nSubgrids:e.getInt32(40,t),shiftType:Zn(e,56,64).trim(),fromSemiMajorAxis:e.getFloat64(120,t),fromSemiMinorAxis:e.getFloat64(136,t),toSemiMajorAxis:e.getFloat64(152,t),toSemiMinorAxis:e.getFloat64(168,t)}}function Zn(e,t,r){return String.fromCharCode.apply(null,new Uint8Array(e.buffer.slice(t,r)))}function j1(e,t,r,s){for(var i=176,n=[],o=0;o<t.nSubgrids;o++){var a=H1(e,i,r),h=Y1(e,i,a,r,s),c=Math.round(1+(a.upperLongitude-a.lowerLongitude)/a.longitudeInterval),l=Math.round(1+(a.upperLatitude-a.lowerLatitude)/a.latitudeInterval);n.push({ll:[oe(a.lowerLongitude),oe(a.lowerLatitude)],del:[oe(a.longitudeInterval),oe(a.latitudeInterval)],lim:[c,l],count:a.gridNodeCount,cvs:W1(h)});var u=16;s===!1&&(u=8),i+=176+a.gridNodeCount*u}return n}function W1(e){return e.map(function(t){return[oe(t.longitudeShift),oe(t.latitudeShift)]})}function H1(e,t,r){return{name:Zn(e,t+8,t+16).trim(),parent:Zn(e,t+24,t+24+8).trim(),lowerLatitude:e.getFloat64(t+72,r),upperLatitude:e.getFloat64(t+88,r),lowerLongitude:e.getFloat64(t+104,r),upperLongitude:e.getFloat64(t+120,r),latitudeInterval:e.getFloat64(t+136,r),longitudeInterval:e.getFloat64(t+152,r),gridNodeCount:e.getInt32(t+168,r)}}function Y1(e,t,r,s,i){var n=t+176,o=16;i===!1&&(o=8);for(var a=[],h=0;h<r.gridNodeCount;h++){var c={latitudeShift:e.getFloat32(n+h*o,s),longitudeShift:e.getFloat32(n+h*o+4,s)};i!==!1&&(c.latitudeAccuracy=e.getFloat32(n+h*o+8,s),c.longitudeAccuracy=e.getFloat32(n+h*o+12,s)),a.push(c)}return a}function Ge(e,t){if(!(this instanceof Ge))return new Ge(e);this.forward=null,this.inverse=null,this.init=null,this.name,this.axis,this.names=null,this.title,t=t||function(c){if(c)throw c};var r=Ec(e);if(typeof r!="object"){t("Could not parse to valid json: "+e);return}var s=Ge.projections.get(r.projName);if(!s){t("Could not get projection name from: "+e);return}if(r.datumCode&&r.datumCode!=="none"){var i=yt(Oc,r.datumCode);i&&(r.datum_params=r.datum_params||(i.towgs84?i.towgs84.split(","):null),r.ellps=i.ellipse,r.datumName=i.datumName?i.datumName:r.datumCode)}r.k0=r.k0||1,r.axis=r.axis||"enu",r.ellps=r.ellps||"wgs84",r.lat1=r.lat1||r.lat0;var n=Ac(r.a,r.b,r.rf,r.ellps,r.sphere),o=Cc(n.a,n.b,n.rf,r.R_A),a=Gc(r.nadgrids),h=r.datum||Nc(r.datumCode,r.datum_params,n.a,n.b,o.es,o.ep2,a);jn(this,r),jn(this,s),this.a=n.a,this.b=n.b,this.rf=n.rf,this.sphere=n.sphere,this.es=o.es,this.e=o.e,this.ep2=o.ep2,this.datum=h,"init"in this&&typeof this.init=="function"&&this.init(),t(null,this)}Ge.projections=Rc;Ge.projections.start();var Nt=Ge;function zc(e,t){return e.datum_type!==t.datum_type||e.a!==t.a||Math.abs(e.es-t.es)>5e-11?!1:e.datum_type===It?e.datum_params[0]===t.datum_params[0]&&e.datum_params[1]===t.datum_params[1]&&e.datum_params[2]===t.datum_params[2]:e.datum_type===Ot?e.datum_params[0]===t.datum_params[0]&&e.datum_params[1]===t.datum_params[1]&&e.datum_params[2]===t.datum_params[2]&&e.datum_params[3]===t.datum_params[3]&&e.datum_params[4]===t.datum_params[4]&&e.datum_params[5]===t.datum_params[5]&&e.datum_params[6]===t.datum_params[6]:!0}function Xs(e,t,r){var s=e.x,i=e.y,n=e.z?e.z:0,o,a,h,c;if(i<-y&&i>-1.001*y)i=-y;else if(i>y&&i<1.001*y)i=y;else{if(i<-y)return{x:-1/0,y:-1/0,z:e.z};if(i>y)return{x:1/0,y:1/0,z:e.z}}return s>Math.PI&&(s-=2*Math.PI),a=Math.sin(i),c=Math.cos(i),h=a*a,o=r/Math.sqrt(1-t*h),{x:(o+n)*c*Math.cos(s),y:(o+n)*c*Math.sin(s),z:(o*(1-t)+n)*a}}function Ks(e,t,r,s){var i=1e-12,n=i*i,o=30,a,h,c,l,u,f,d,m,g,p,M,x,S,v=e.x,w=e.y,P=e.z?e.z:0,R,C,A;if(a=Math.sqrt(v*v+w*w),h=Math.sqrt(v*v+w*w+P*P),a/r<i){if(R=0,h/r<i)return C=y,A=-s,{x:e.x,y:e.y,z:e.z}}else R=Math.atan2(w,v);c=P/h,l=a/h,u=1/Math.sqrt(1-t*(2-t)*l*l),m=l*(1-t)*u,g=c*u,S=0;do S++,d=r/Math.sqrt(1-t*g*g),A=a*m+P*g-d*(1-t*g*g),f=t*d/(d+A),u=1/Math.sqrt(1-f*(2-f)*l*l),p=l*(1-f)*u,M=c*u,x=M*m-p*g,m=p,g=M;while(x*x>n&&S<o);return C=Math.atan(M/Math.abs(p)),{x:R,y:C,z:A}}function qc(e,t,r){if(t===It)return{x:e.x+r[0],y:e.y+r[1],z:e.z+r[2]};if(t===Ot){var s=r[0],i=r[1],n=r[2],o=r[3],a=r[4],h=r[5],c=r[6];return{x:c*(e.x-h*e.y+a*e.z)+s,y:c*(h*e.x+e.y-o*e.z)+i,z:c*(-a*e.x+o*e.y+e.z)+n}}}function Bc(e,t,r){if(t===It)return{x:e.x-r[0],y:e.y-r[1],z:e.z-r[2]};if(t===Ot){var s=r[0],i=r[1],n=r[2],o=r[3],a=r[4],h=r[5],c=r[6],l=(e.x-s)/c,u=(e.y-i)/c,f=(e.z-n)/c;return{x:l+h*u-a*f,y:-h*l+u+o*f,z:a*l-o*u+f}}}function Js(e){return e===It||e===Ot}function Uc(e,t,r){if(zc(e,t)||e.datum_type===xr||t.datum_type===xr)return r;var s=e.a,i=e.es;if(e.datum_type===Yt){var n=Dc(e,!1,r);if(n!==0)return;s=Dn,i=Fn}var o=t.a,a=t.b,h=t.es;if(t.datum_type===Yt&&(o=Dn,a=sc,h=Fn),i===h&&s===o&&!Js(e.datum_type)&&!Js(t.datum_type))return r;if(r=Xs(r,i,s),Js(e.datum_type)&&(r=qc(r,e.datum_type,e.datum_params)),Js(t.datum_type)&&(r=Bc(r,t.datum_type,t.datum_params)),r=Ks(r,h,o,a),t.datum_type===Yt){var c=Dc(t,!0,r);if(c!==0)return}return r}function Dc(e,t,r){if(e.grids===null||e.grids.length===0)return console.log("Grid shift grids not found"),-1;var s={x:-r.x,y:r.y},i={x:Number.NaN,y:Number.NaN},n=[];t:for(var o=0;o<e.grids.length;o++){var a=e.grids[o];if(n.push(a.name),a.isNull){i=s;break}if(a.grid===null){if(a.mandatory)return console.log("Unable to find mandatory grid '"+a.name+"'"),-1;continue}for(var h=a.grid.subgrids,c=0,l=h.length;c<l;c++){var u=h[c],f=(Math.abs(u.del[1])+Math.abs(u.del[0]))/1e4,d=u.ll[0]-f,m=u.ll[1]-f,g=u.ll[0]+(u.lim[0]-1)*u.del[0]+f,p=u.ll[1]+(u.lim[1]-1)*u.del[1]+f;if(!(m>s.y||d>s.x||p<s.y||g<s.x)&&(i=Z1(s,t,u),!isNaN(i.x)))break t}}return isNaN(i.x)?(console.log("Failed to find a grid shift table for location '"+-s.x*X+" "+s.y*X+" tried: '"+n+"'"),-1):(r.x=-i.x,r.y=i.y,0)}function Z1(e,t,r){var s={x:Number.NaN,y:Number.NaN};if(isNaN(e.x))return s;var i={x:e.x,y:e.y};i.x-=r.ll[0],i.y-=r.ll[1],i.x=E(i.x-Math.PI)+Math.PI;var n=Fc(i,r);if(t){if(isNaN(n.x))return s;n.x=i.x-n.x,n.y=i.y-n.y;var o=9,a=1e-12,h,c;do{if(c=Fc(n,r),isNaN(c.x)){console.log("Inverse grid shift iteration failed, presumably at grid edge. Using first approximation.");break}h={x:i.x-(c.x+n.x),y:i.y-(c.y+n.y)},n.x+=h.x,n.y+=h.y}while(o--&&Math.abs(h.x)>a&&Math.abs(h.y)>a);if(o<0)return console.log("Inverse grid shift iterator failed to converge."),s;s.x=E(n.x+r.ll[0]),s.y=n.y+r.ll[1]}else isNaN(n.x)||(s.x=e.x+n.x,s.y=e.y+n.y);return s}function Fc(e,t){var r={x:e.x/t.del[0],y:e.y/t.del[1]},s={x:Math.floor(r.x),y:Math.floor(r.y)},i={x:r.x-1*s.x,y:r.y-1*s.y},n={x:Number.NaN,y:Number.NaN},o;if(s.x<0||s.x>=t.lim[0]||s.y<0||s.y>=t.lim[1])return n;o=s.y*t.lim[0]+s.x;var a={x:t.cvs[o][0],y:t.cvs[o][1]};o++;var h={x:t.cvs[o][0],y:t.cvs[o][1]};o+=t.lim[0];var c={x:t.cvs[o][0],y:t.cvs[o][1]};o--;var l={x:t.cvs[o][0],y:t.cvs[o][1]},u=i.x*i.y,f=i.x*(1-i.y),d=(1-i.x)*(1-i.y),m=(1-i.x)*i.y;return n.x=d*a.x+f*h.x+m*l.x+u*c.x,n.y=d*a.y+f*h.y+m*l.y+u*c.y,n}var pe=["x","y","z"];function Vc(e,t){let r={};for(let s=0,i=e.axis.length;s<i;s++){if(s===2&&t.z===void 0)continue;let n=t[pe[s]];switch(e.axis[s]){case"e":r.x=n;break;case"w":r.x=-n;break;case"n":r.y=n;break;case"s":r.y=-n;break;case"u":r.z=n;break;case"d":r.z=-n;break;default:return null}}return r}function kc(e,t){let r={};for(let s=0,i=e.axis.length;s<i;s++)if(!(s===2&&t.z===void 0))switch(e.axis[s]){case"e":r[pe[s]]=t.x;break;case"w":r[pe[s]]=-t.x;break;case"n":r[pe[s]]=t.y;break;case"s":r[pe[s]]=-t.y;break;case"u":r[pe[s]]=t.z;break;case"d":r[pe[s]]=-t.z;break;default:return null}return r}function ze(e){var t={x:e[0],y:e[1]};return e.length>2&&(t.z=e[2]),e.length>3&&(t.m=e[3]),t}function Wc(e){jc(e.x),jc(e.y)}function jc(e){if(typeof Number.isFinite=="function"){if(Number.isFinite(e))return;throw new TypeError("coordinates must be finite numbers")}if(typeof e!="number"||e!==e||!isFinite(e))throw new TypeError("coordinates must be finite numbers")}function $1(e,t){return(e.datum.datum_type===It||e.datum.datum_type===Ot||e.datum.datum_type===Yt)&&t.datumCode!=="WGS84"||(t.datum.datum_type===It||t.datum.datum_type===Ot||t.datum.datum_type===Yt)&&e.datumCode!=="WGS84"}function Er(e,t,r,s){var i,n=r.z!==void 0;if(Wc(r),e.datum&&t.datum&&$1(e,t)&&(i=new Nt("WGS84"),r=Er(e,i,r,s),e=i),s&&e.axis!=="enu"&&(r=Vc(e,r)),e.projName==="longlat")r={x:r.x*V,y:r.y*V,z:r.z||0};else if(e.to_meter&&(r={x:r.x*e.to_meter,y:r.y*e.to_meter,z:r.z||0}),r=e.inverse(r),!r)return;if(e.from_greenwich&&(r.x+=e.from_greenwich),r=Uc(e.datum,t.datum,r),!!r)return r=r,t.from_greenwich&&(r={x:r.x-t.from_greenwich,y:r.y,z:r.z||0}),t.projName==="longlat"?r={x:r.x*X,y:r.y*X,z:r.z||0}:(r=t.forward(r),t.to_meter&&(r={x:r.x/t.to_meter,y:r.y/t.to_meter,z:r.z||0})),s&&t.axis!=="enu"?kc(t,r):(r&&!n&&t.projName!=="geocent"&&delete r.z,r)}function Xn(e,t,r,s){var i;return Array.isArray(r)?i=ze(r):i={x:r.x,y:r.y,z:r.z,m:r.m},Er(e,t,i,s)}var Hc=Nt("WGS84");function Kn(e,t,r,s){var i,n,o;return Array.isArray(r)?(i=Er(e,t,ze(r),s)||{x:NaN,y:NaN},r.length>2?(n=typeof e.name<"u"&&e.name==="geocent"||typeof t.name<"u"&&t.name==="geocent",n?typeof i.z=="number"?[i.x,i.y,i.z].concat(r.slice(3)):[i.x,i.y,r[2]].concat(r.slice(3)):s&&typeof i.z=="number"?[i.x,i.y,i.z].concat(r.slice(3)):[i.x,i.y].concat(r.slice(2))):[i.x,i.y]):(i=Er(e,t,{x:r.x,y:r.y,z:r.z,m:r.m},s)||{x:NaN,y:NaN},o=Object.keys(r),o.length===2||(n=typeof e.name<"u"&&e.name==="geocent"||typeof t.name<"u"&&t.name==="geocent",o.forEach(function(a){a==="x"||a==="y"||a==="z"&&(n||s)||(i[a]=r[a])})),i)}function ti(e){return e instanceof Nt?e:typeof e=="object"&&"oProj"in e?e.oProj:Nt(e)}function Q1(e,t,r){var s,i,n=!1,o;return typeof t>"u"?(i=ti(e),s=Hc,n=!0):(typeof t.x<"u"||Array.isArray(t))&&(r=t,i=ti(e),s=Hc,n=!0),s||(s=ti(e)),i||(i=ti(t)),r?Kn(s,i,r):(o={forward:function(a,h){return Kn(s,i,a,h)},inverse:function(a,h){return Kn(i,s,a,h)}},n&&(o.oProj=i),o)}var Yc=Q1;var Zc=6,Qc="AJSAJS",Xc="AFAFAF",qe=65,dt=73,Rt=79,wr=86,Tr=90,Kc={forward:to,inverse:X1,toPoint:eo};function to(e,t){return t=t||5,tp(K1({lat:e[1],lon:e[0]}),t)}function X1(e){var t=ro(tl(e.toUpperCase()));return t.lat&&t.lon?[t.lon,t.lat,t.lon,t.lat]:[t.left,t.bottom,t.right,t.top]}function eo(e){var t=ro(tl(e.toUpperCase()));return t.lat&&t.lon?[t.lon,t.lat]:[(t.left+t.right)/2,(t.top+t.bottom)/2]}function Jn(e){return e*(Math.PI/180)}function $c(e){return 180*(e/Math.PI)}function K1(e){var t=e.lat,r=e.lon,s=6378137,i=.00669438,n=.9996,o,a,h,c,l,u,f,d=Jn(t),m=Jn(r),g,p;p=Math.floor((r+180)/6)+1,r===180&&(p=60),t>=56&&t<64&&r>=3&&r<12&&(p=32),t>=72&&t<84&&(r>=0&&r<9?p=31:r>=9&&r<21?p=33:r>=21&&r<33?p=35:r>=33&&r<42&&(p=37)),o=(p-1)*6-180+3,g=Jn(o),a=i/(1-i),h=s/Math.sqrt(1-i*Math.sin(d)*Math.sin(d)),c=Math.tan(d)*Math.tan(d),l=a*Math.cos(d)*Math.cos(d),u=Math.cos(d)*(m-g),f=s*((1-i/4-3*i*i/64-5*i*i*i/256)*d-(3*i/8+3*i*i/32+45*i*i*i/1024)*Math.sin(2*d)+(15*i*i/256+45*i*i*i/1024)*Math.sin(4*d)-35*i*i*i/3072*Math.sin(6*d));var M=n*h*(u+(1-c+l)*u*u*u/6+(5-18*c+c*c+72*l-58*a)*u*u*u*u*u/120)+5e5,x=n*(f+h*Math.tan(d)*(u*u/2+(5-c+9*l+4*l*l)*u*u*u*u/24+(61-58*c+c*c+600*l-330*a)*u*u*u*u*u*u/720));return t<0&&(x+=1e7),{northing:Math.round(x),easting:Math.round(M),zoneNumber:p,zoneLetter:J1(t)}}function ro(e){var t=e.northing,r=e.easting,s=e.zoneLetter,i=e.zoneNumber;if(i<0||i>60)return null;var n=.9996,o=6378137,a=.00669438,h,c=(1-Math.sqrt(1-a))/(1+Math.sqrt(1-a)),l,u,f,d,m,g,p,M,x,S=r-5e5,v=t;s<"N"&&(v-=1e7),p=(i-1)*6-180+3,h=a/(1-a),g=v/n,M=g/(o*(1-a/4-3*a*a/64-5*a*a*a/256)),x=M+(3*c/2-27*c*c*c/32)*Math.sin(2*M)+(21*c*c/16-55*c*c*c*c/32)*Math.sin(4*M)+151*c*c*c/96*Math.sin(6*M),l=o/Math.sqrt(1-a*Math.sin(x)*Math.sin(x)),u=Math.tan(x)*Math.tan(x),f=h*Math.cos(x)*Math.cos(x),d=o*(1-a)/Math.pow(1-a*Math.sin(x)*Math.sin(x),1.5),m=S/(l*n);var w=x-l*Math.tan(x)/d*(m*m/2-(5+3*u+10*f-4*f*f-9*h)*m*m*m*m/24+(61+90*u+298*f+45*u*u-252*h-3*f*f)*m*m*m*m*m*m/720);w=$c(w);var P=(m-(1+2*u+f)*m*m*m/6+(5-2*f+28*u-3*f*f+8*h+24*u*u)*m*m*m*m*m/120)/Math.cos(x);P=p+$c(P);var R;if(e.accuracy){var C=ro({northing:e.northing+e.accuracy,easting:e.easting+e.accuracy,zoneLetter:e.zoneLetter,zoneNumber:e.zoneNumber});R={top:C.lat,right:C.lon,bottom:w,left:P}}else R={lat:w,lon:P};return R}function J1(e){var t="Z";return 84>=e&&e>=72?t="X":72>e&&e>=64?t="W":64>e&&e>=56?t="V":56>e&&e>=48?t="U":48>e&&e>=40?t="T":40>e&&e>=32?t="S":32>e&&e>=24?t="R":24>e&&e>=16?t="Q":16>e&&e>=8?t="P":8>e&&e>=0?t="N":0>e&&e>=-8?t="M":-8>e&&e>=-16?t="L":-16>e&&e>=-24?t="K":-24>e&&e>=-32?t="J":-32>e&&e>=-40?t="H":-40>e&&e>=-48?t="G":-48>e&&e>=-56?t="F":-56>e&&e>=-64?t="E":-64>e&&e>=-72?t="D":-72>e&&e>=-80&&(t="C"),t}function tp(e,t){var r="00000"+e.easting,s="00000"+e.northing;return e.zoneNumber+e.zoneLetter+ep(e.easting,e.northing,e.zoneNumber)+r.substr(r.length-5,t)+s.substr(s.length-5,t)}function ep(e,t,r){var s=Jc(r),i=Math.floor(e/1e5),n=Math.floor(t/1e5)%20;return rp(i,n,s)}function Jc(e){var t=e%Zc;return t===0&&(t=Zc),t}function rp(e,t,r){var s=r-1,i=Qc.charCodeAt(s),n=Xc.charCodeAt(s),o=i+e-1,a=n+t,h=!1;o>Tr&&(o=o-Tr+qe-1,h=!0),(o===dt||i<dt&&o>dt||(o>dt||i<dt)&&h)&&o++,(o===Rt||i<Rt&&o>Rt||(o>Rt||i<Rt)&&h)&&(o++,o===dt&&o++),o>Tr&&(o=o-Tr+qe-1),a>wr?(a=a-wr+qe-1,h=!0):h=!1,(a===dt||n<dt&&a>dt||(a>dt||n<dt)&&h)&&a++,(a===Rt||n<Rt&&a>Rt||(a>Rt||n<Rt)&&h)&&(a++,a===dt&&a++),a>wr&&(a=a-wr+qe-1);var c=String.fromCharCode(o)+String.fromCharCode(a);return c}function tl(e){if(e&&e.length===0)throw"MGRSPoint coverting from nothing";for(var t=e.length,r=null,s="",i,n=0;!/[A-Z]/.test(i=e.charAt(n));){if(n>=2)throw"MGRSPoint bad conversion from: "+e;s+=i,n++}var o=parseInt(s,10);if(n===0||n+3>t)throw"MGRSPoint bad conversion from: "+e;var a=e.charAt(n++);if(a<="A"||a==="B"||a==="Y"||a>="Z"||a==="I"||a==="O")throw"MGRSPoint zone letter "+a+" not handled: "+e;r=e.substring(n,n+=2);for(var h=Jc(o),c=sp(r.charAt(0),h),l=ip(r.charAt(1),h);l<np(a);)l+=2e6;var u=t-n;if(u%2!==0)throw`MGRSPoint has to have an even number
7
+ "use strict";var __exports__=(()=>{var n0=Object.create;var Is=Object.defineProperty;var o0=Object.getOwnPropertyDescriptor;var a0=Object.getOwnPropertyNames;var h0=Object.getPrototypeOf,c0=Object.prototype.hasOwnProperty;var l0=(e,t)=>()=>{try{return t||e((t={exports:{}}).exports,t),t.exports}catch(s){throw t=0,s}},cr=(e,t)=>{for(var s in t)Is(e,s,{get:t[s],enumerable:!0})},As=(e,t,s,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of a0(t))!c0.call(e,r)&&r!==s&&Is(e,r,{get:()=>t[r],enumerable:!(i=o0(t,r))||i.enumerable});return e},Os=(e,t,s)=>(As(e,t,"default"),s&&As(s,t,"default")),u0=(e,t,s)=>(s=e!=null?n0(h0(e)):{},As(t||!e||!e.__esModule?Is(s,"default",{value:e,enumerable:!0}):s,e)),f0=e=>As(Is({},"__esModule",{value:!0}),e);var Xn=l0((f2,Zn)=>{Zn.exports=globalThis.loaders});var Rs={};cr(Rs,{I3SSource:()=>$i,I3SSpatialTransformer:()=>Be,ImageSet:()=>Ki,IndexedArchiveTilesetSource:()=>_i,LOD_METRIC_TYPE:()=>ye,PointCloudTile:()=>De,PointCloudTileset:()=>er,RasterSet:()=>Ji,STRATEGY_DEFAULT:()=>bs,STRATEGY_NEVER:()=>jn,STRATEGY_REPLACE:()=>Wn,SharedTile2DHeader:()=>le,SpatialCoordinateTransformer:()=>$t,TILESET_TYPE:()=>at,TILE_CONTENT_STATE:()=>et,TILE_REFINEMENT:()=>J,TILE_TYPE:()=>Lt,Tile3D:()=>Et,Tiles3DSource:()=>Ti,Tileset2D:()=>Ts,Tileset3D:()=>gi,TilesetCache:()=>xe,TilesetTraverser:()=>Gt,applyTilesetSpatialOptions:()=>es,calculateTransformProps:()=>li,createBoundingVolume:()=>Se,createImplicitSubtreeReference:()=>nn,createTilesetSpatialReference:()=>vt,get3DTilesSpatialReference:()=>vi,getFrameState:()=>ui,getGeoidModel:()=>Zi,getI3SSpatialReference:()=>Si,getLodStatus:()=>xi,getSpatialCoordinateFrame:()=>kt,isTileset3DSource:()=>pi,markTilesetSpatialReferenceTransformed:()=>mi,materializeImplicitSubtree:()=>Ei,registerGeoidModel:()=>Bn,registerGeoidModelFromPgm:()=>Nl,registerSpatialCrs:()=>Il,registerSpatialDatumGrid:()=>Ol,replaceImplicitUrlTemplate:()=>wi});Os(Rs,u0(Xn(),1));var q={};cr(q,{EPSILON1:()=>d0,EPSILON10:()=>v0,EPSILON11:()=>E0,EPSILON12:()=>w0,EPSILON13:()=>T0,EPSILON14:()=>Ns,EPSILON15:()=>b0,EPSILON16:()=>P0,EPSILON17:()=>R0,EPSILON18:()=>C0,EPSILON19:()=>A0,EPSILON2:()=>m0,EPSILON20:()=>I0,EPSILON3:()=>p0,EPSILON4:()=>g0,EPSILON5:()=>_0,EPSILON6:()=>M0,EPSILON7:()=>x0,EPSILON8:()=>y0,EPSILON9:()=>S0,PI:()=>ue,PI_OVER_FOUR:()=>N0,PI_OVER_SIX:()=>L0,PI_OVER_TWO:()=>O0,TWO_PI:()=>Fe});var d0=.1,m0=.01,p0=.001,g0=1e-4,_0=1e-5,M0=1e-6,x0=1e-7,y0=1e-8,S0=1e-9,v0=1e-10,E0=1e-11,w0=1e-12,T0=1e-13,Ns=1e-14,b0=1e-15,P0=1e-16,R0=1e-17,C0=1e-18,A0=1e-19,I0=1e-20,O0=Math.PI/2,N0=Math.PI/4,L0=Math.PI/6,ue=Math.PI,Fe=Math.PI*2;var G0=1/Math.PI*180,z0=1/180*Math.PI,q0={EPSILON:1e-12,debug:!1,precision:4,printTypes:!1,printDegrees:!1,printRowMajor:!0,_cartographicRadians:!1};globalThis.mathgl=globalThis.mathgl||{config:{...q0}};var V=globalThis.mathgl.config;function lr(e,{precision:t=V.precision}={}){return e=D0(e),`${parseFloat(e.toPrecision(t))}`}function Ot(e){return Array.isArray(e)||ArrayBuffer.isView(e)&&!(e instanceof DataView)}function ur(e){return Ls(e)}function fr(e){return ot(e)}function Ls(e,t){return mr(e,s=>s*z0,t)}function ot(e,t){return mr(e,s=>s*G0,t)}function $n(e,t){return Math.sign(e)===Math.sign(t)&&Math.abs(e)<Math.abs(t)?e:(e%t+t)%t}function dr(e,t){switch(t){case"negative-pi-to-pi":return B0(e);case"zero-to-two-pi":return Qn(e);default:return e}}function Qn(e){if(e>=0&&e<=Fe)return e;let t=$n(e,Fe);return Math.abs(t)<1e-14&&Math.abs(e)>1e-14?Fe:t}function B0(e){return e>=-ue&&e<=ue?e:Qn(e+ue)-ue}function Ue(e,t,s){return mr(e,i=>Math.max(t,Math.min(s,i)))}function pt(e,t,s){let i=V.EPSILON;s&&(V.EPSILON=s);try{if(e===t)return!0;if(Ot(e)&&Ot(t)){if(e.length!==t.length)return!1;for(let r=0;r<e.length;++r)if(!pt(e[r],t[r]))return!1;return!0}return e&&e.equals?e.equals(t):t&&t.equals?t.equals(e):typeof e=="number"&&typeof t=="number"?Math.abs(e-t)<=V.EPSILON*Math.max(1,Math.abs(e),Math.abs(t)):!1}finally{V.EPSILON=i}}function D0(e){return Math.round(e/V.EPSILON)*V.EPSILON}function F0(e){return e.clone?e.clone():new Array(e.length)}function mr(e,t,s){if(Ot(e)){let i=e;s=s||F0(i);for(let r=0;r<s.length&&r<i.length;++r){let n=typeof e=="number"?e:e[r];s[r]=t(n,r,s)}return s}return t(e)}var Qt=class extends Array{clone(){return new this.constructor().copy(this)}fromArray(t,s=0){for(let i=0;i<this.ELEMENTS;++i)this[i]=t[i+s];return this.check()}toArray(t=[],s=0){for(let i=0;i<this.ELEMENTS;++i)t[s+i]=this[i];return t}toObject(t){return t}from(t){return Array.isArray(t)?this.copy(t):this.fromObject(t)}to(t){return t===this?this:Ot(t)?this.toArray(t):this.toObject(t)}toTarget(t){return t?this.to(t):this}toString(){return this.formatString(V)}formatString(t){let s="";for(let i=0;i<this.ELEMENTS;++i)s+=(i>0?", ":"")+lr(this[i],t);return`${t.printTypes?this.constructor.name:""}[${s}]`}equals(t){if(!t||this.length!==t.length)return!1;for(let s=0;s<this.ELEMENTS;++s)if(!pt(this[s],t[s]))return!1;return!0}exactEquals(t){if(!t||this.length!==t.length)return!1;for(let s=0;s<this.ELEMENTS;++s)if(this[s]!==t[s])return!1;return!0}negate(){for(let t=0;t<this.ELEMENTS;++t)this[t]=-this[t];return this.check()}lerp(t,s,i){if(i===void 0)return this.lerp(this,t,s);for(let r=0;r<this.ELEMENTS;++r){let n=t[r],o=typeof s=="number"?s:s[r];this[r]=n+i*(o-n)}return this.check()}min(t){for(let s=0;s<this.ELEMENTS;++s)this[s]=Math.min(t[s],this[s]);return this.check()}max(t){for(let s=0;s<this.ELEMENTS;++s)this[s]=Math.max(t[s],this[s]);return this.check()}clamp(t,s){for(let i=0;i<this.ELEMENTS;++i)this[i]=Math.min(Math.max(this[i],t[i]),s[i]);return this.check()}add(...t){for(let s of t)for(let i=0;i<this.ELEMENTS;++i)this[i]+=s[i];return this.check()}subtract(...t){for(let s of t)for(let i=0;i<this.ELEMENTS;++i)this[i]-=s[i];return this.check()}scale(t){if(typeof t=="number")for(let s=0;s<this.ELEMENTS;++s)this[s]*=t;else for(let s=0;s<this.ELEMENTS&&s<t.length;++s)this[s]*=t[s];return this.check()}multiplyByScalar(t){for(let s=0;s<this.ELEMENTS;++s)this[s]*=t;return this.check()}check(){if(V.debug&&!this.validate())throw new Error(`math.gl: ${this.constructor.name} some fields set to invalid numbers'`);return this}validate(){let t=this.length===this.ELEMENTS;for(let s=0;s<this.ELEMENTS;++s)t=t&&Number.isFinite(this[s]);return t}};function U0(e,t){if(e.length!==t)return!1;for(let s=0;s<e.length;++s)if(!Number.isFinite(e[s]))return!1;return!0}function F(e){if(!Number.isFinite(e))throw new Error(`Invalid number ${JSON.stringify(e)}`);return e}function fe(e,t,s=""){if(V.debug&&!U0(e,t))throw new Error(`math.gl: ${s} some fields set to invalid numbers'`);return e}var de=class extends Qt{toString(){let t="[";if(V.printRowMajor){t+="row-major:";for(let s=0;s<this.RANK;++s)for(let i=0;i<this.RANK;++i)t+=` ${this[i*this.RANK+s]}`}else{t+="column-major:";for(let s=0;s<this.ELEMENTS;++s)t+=` ${this[s]}`}return t+="]",t}getElementIndex(t,s){return s*this.RANK+t}getElement(t,s){return this[s*this.RANK+t]}setElement(t,s,i){return this[s*this.RANK+t]=F(i),this}getColumn(t,s=new Array(this.RANK).fill(-0)){let i=t*this.RANK;for(let r=0;r<this.RANK;++r)s[r]=this[i+r];return s}setColumn(t,s){let i=t*this.RANK;for(let r=0;r<this.RANK;++r)this[i+r]=s[r];return this}};function Q(e,t){if(!e)throw new Error(`math.gl assertion ${t}`)}var me=class extends Qt{get x(){return this[0]}set x(t){this[0]=F(t)}get y(){return this[1]}set y(t){this[1]=F(t)}len(){return Math.sqrt(this.lengthSquared())}magnitude(){return this.len()}lengthSquared(){let t=0;for(let s=0;s<this.ELEMENTS;++s)t+=this[s]*this[s];return t}magnitudeSquared(){return this.lengthSquared()}distance(t){return Math.sqrt(this.distanceSquared(t))}distanceSquared(t){let s=0;for(let i=0;i<this.ELEMENTS;++i){let r=this[i]-t[i];s+=r*r}return F(s)}dot(t){let s=0;for(let i=0;i<this.ELEMENTS;++i)s+=this[i]*t[i];return F(s)}normalize(){let t=this.magnitude();if(t!==0)for(let s=0;s<this.ELEMENTS;++s)this[s]/=t;return this.check()}multiply(...t){for(let s of t)for(let i=0;i<this.ELEMENTS;++i)this[i]*=s[i];return this.check()}divide(...t){for(let s of t)for(let i=0;i<this.ELEMENTS;++i)this[i]/=s[i];return this.check()}lengthSq(){return this.lengthSquared()}distanceTo(t){return this.distance(t)}distanceToSquared(t){return this.distanceSquared(t)}getComponent(t){return Q(t>=0&&t<this.ELEMENTS,"index is out of range"),F(this[t])}setComponent(t,s){return Q(t>=0&&t<this.ELEMENTS,"index is out of range"),this[t]=s,this.check()}addVectors(t,s){return this.copy(t).add(s)}subVectors(t,s){return this.copy(t).subtract(s)}multiplyVectors(t,s){return this.copy(t).multiply(s)}addScaledVector(t,s){for(let i=0;i<this.ELEMENTS;++i)this[i]+=t[i]*s;return this.check()}};var Gs=typeof Float32Array<"u"?Float32Array:Array;var R2=Math.PI/180;function Kn(e,t,s){let i=t[0],r=t[1];return e[0]=s[0]*i+s[2]*r,e[1]=s[1]*i+s[3]*r,e}function Jn(e,t,s){let i=t[0],r=t[1];return e[0]=s[0]*i+s[2]*r+s[4],e[1]=s[1]*i+s[3]*r+s[5],e}function zs(e,t,s){let i=t[0],r=t[1];return e[0]=s[0]*i+s[3]*r+s[6],e[1]=s[1]*i+s[4]*r+s[7],e}function qs(e,t,s){let i=t[0],r=t[1];return e[0]=s[0]*i+s[4]*r+s[12],e[1]=s[1]*i+s[5]*r+s[13],e}function Bs(e,t,s){let i=t[0],r=t[1],n=s[3]*i+s[7]*r||1;return e[0]=(s[0]*i+s[4]*r)/n,e[1]=(s[1]*i+s[5]*r)/n,e}function Ds(e,t,s){let i=t[0],r=t[1],n=t[2],o=s[3]*i+s[7]*r+s[11]*n||1;return e[0]=(s[0]*i+s[4]*r+s[8]*n)/o,e[1]=(s[1]*i+s[5]*r+s[9]*n)/o,e[2]=(s[2]*i+s[6]*r+s[10]*n)/o,e}function to(e,t,s){let i=t[0],r=t[1];return e[0]=s[0]*i+s[2]*r,e[1]=s[1]*i+s[3]*r,e[2]=t[2],e}function eo(e,t,s){let i=t[0],r=t[1],n=t[2];return e[0]=s[0]*i+s[3]*r+s[6]*n,e[1]=s[1]*i+s[4]*r+s[7]*n,e[2]=s[2]*i+s[5]*r+s[8]*n,e[3]=t[3],e}var xt=class extends me{constructor(t=0,s=0){super(2),Ot(t)&&arguments.length===1?this.copy(t):(V.debug&&(F(t),F(s)),this[0]=t,this[1]=s)}set(t,s){return this[0]=t,this[1]=s,this.check()}copy(t){return this[0]=t[0],this[1]=t[1],this.check()}fromObject(t){return V.debug&&(F(t.x),F(t.y)),this[0]=t.x,this[1]=t.y,this.check()}toObject(t){return t.x=this[0],t.y=this[1],t}get ELEMENTS(){return 2}horizontalAngle(){return Math.atan2(this.y,this.x)}verticalAngle(){return Math.atan2(this.x,this.y)}transform(t){return this.transformAsPoint(t)}transformAsPoint(t){return qs(this,this,t),this.check()}transformAsVector(t){return Bs(this,this,t),this.check()}transformByMatrix3(t){return zs(this,this,t),this.check()}transformByMatrix2x3(t){return Jn(this,this,t),this.check()}transformByMatrix2(t){return Kn(this,this,t),this.check()}};function so(){let e=new Gs(3);return Gs!==Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function pr(e){let t=e[0],s=e[1],i=e[2];return Math.sqrt(t*t+s*s+i*i)}function gr(e,t,s){let i=new Gs(3);return i[0]=e,i[1]=t,i[2]=s,i}function io(e,t){let s=t[0],i=t[1],r=t[2],n=s*s+i*i+r*r;return n>0&&(n=1/Math.sqrt(n)),e[0]=t[0]*n,e[1]=t[1]*n,e[2]=t[2]*n,e}function Ve(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function pe(e,t,s){let i=t[0],r=t[1],n=t[2],o=s[0],a=s[1],h=s[2];return e[0]=r*h-n*a,e[1]=n*o-i*h,e[2]=i*a-r*o,e}function Fs(e,t,s){let i=t[0],r=t[1],n=t[2],o=s[3]*i+s[7]*r+s[11]*n+s[15];return o=o||1,e[0]=(s[0]*i+s[4]*r+s[8]*n+s[12])/o,e[1]=(s[1]*i+s[5]*r+s[9]*n+s[13])/o,e[2]=(s[2]*i+s[6]*r+s[10]*n+s[14])/o,e}function Us(e,t,s){let i=t[0],r=t[1],n=t[2];return e[0]=i*s[0]+r*s[3]+n*s[6],e[1]=i*s[1]+r*s[4]+n*s[7],e[2]=i*s[2]+r*s[5]+n*s[8],e}function ro(e,t,s){let i=s[0],r=s[1],n=s[2],o=s[3],a=t[0],h=t[1],c=t[2],l=r*c-n*h,u=n*a-i*c,f=i*h-r*a,m=r*f-n*u,d=n*l-i*f,g=i*u-r*l,_=o*2;return l*=_,u*=_,f*=_,m*=2,d*=2,g*=2,e[0]=a+l+m,e[1]=h+u+d,e[2]=c+f+g,e}function no(e,t,s,i){let r=[],n=[];return r[0]=t[0]-s[0],r[1]=t[1]-s[1],r[2]=t[2]-s[2],n[0]=r[0],n[1]=r[1]*Math.cos(i)-r[2]*Math.sin(i),n[2]=r[1]*Math.sin(i)+r[2]*Math.cos(i),e[0]=n[0]+s[0],e[1]=n[1]+s[1],e[2]=n[2]+s[2],e}function oo(e,t,s,i){let r=[],n=[];return r[0]=t[0]-s[0],r[1]=t[1]-s[1],r[2]=t[2]-s[2],n[0]=r[2]*Math.sin(i)+r[0]*Math.cos(i),n[1]=r[1],n[2]=r[2]*Math.cos(i)-r[0]*Math.sin(i),e[0]=n[0]+s[0],e[1]=n[1]+s[1],e[2]=n[2]+s[2],e}function ao(e,t,s,i){let r=[],n=[];return r[0]=t[0]-s[0],r[1]=t[1]-s[1],r[2]=t[2]-s[2],n[0]=r[0]*Math.cos(i)-r[1]*Math.sin(i),n[1]=r[0]*Math.sin(i)+r[1]*Math.cos(i),n[2]=r[2],e[0]=n[0]+s[0],e[1]=n[1]+s[1],e[2]=n[2]+s[2],e}function ho(e,t){let s=e[0],i=e[1],r=e[2],n=t[0],o=t[1],a=t[2],h=Math.sqrt((s*s+i*i+r*r)*(n*n+o*o+a*a)),c=h&&Ve(e,t)/h;return Math.acos(Math.min(Math.max(c,-1),1))}var co=pr;var _r=[0,0,0],ks,p=class e extends me{static get ZERO(){return ks||(ks=new e(0,0,0),Object.freeze(ks)),ks}constructor(t=0,s=0,i=0){super(-0,-0,-0),arguments.length===1&&Ot(t)?this.copy(t):(V.debug&&(F(t),F(s),F(i)),this[0]=t,this[1]=s,this[2]=i)}set(t,s,i){return this[0]=t,this[1]=s,this[2]=i,this.check()}copy(t){return this[0]=t[0],this[1]=t[1],this[2]=t[2],this.check()}fromObject(t){return V.debug&&(F(t.x),F(t.y),F(t.z)),this[0]=t.x,this[1]=t.y,this[2]=t.z,this.check()}toObject(t){return t.x=this[0],t.y=this[1],t.z=this[2],t}get ELEMENTS(){return 3}get z(){return this[2]}set z(t){this[2]=F(t)}angle(t){return ho(this,t)}cross(t){return pe(this,this,t),this.check()}rotateX({radians:t,origin:s=_r}){return no(this,this,s,t),this.check()}rotateY({radians:t,origin:s=_r}){return oo(this,this,s,t),this.check()}rotateZ({radians:t,origin:s=_r}){return ao(this,this,s,t),this.check()}transform(t){return this.transformAsPoint(t)}transformAsPoint(t){return Fs(this,this,t),this.check()}transformAsVector(t){return Ds(this,this,t),this.check()}transformByMatrix3(t){return Us(this,this,t),this.check()}transformByMatrix2(t){return to(this,this,t),this.check()}transformByQuaternion(t){return ro(this,this,t),this.check()}};function lo(e,t){if(e===t){let s=t[1],i=t[2],r=t[5];e[1]=t[3],e[2]=t[6],e[3]=s,e[5]=t[7],e[6]=i,e[7]=r}else e[0]=t[0],e[1]=t[3],e[2]=t[6],e[3]=t[1],e[4]=t[4],e[5]=t[7],e[6]=t[2],e[7]=t[5],e[8]=t[8];return e}function uo(e,t){let s=t[0],i=t[1],r=t[2],n=t[3],o=t[4],a=t[5],h=t[6],c=t[7],l=t[8],u=l*o-a*c,f=-l*n+a*h,m=c*n-o*h,d=s*u+i*f+r*m;return d?(d=1/d,e[0]=u*d,e[1]=(-l*i+r*c)*d,e[2]=(a*i-r*o)*d,e[3]=f*d,e[4]=(l*s-r*h)*d,e[5]=(-a*s+r*n)*d,e[6]=m*d,e[7]=(-c*s+i*h)*d,e[8]=(o*s-i*n)*d,e):null}function fo(e){let t=e[0],s=e[1],i=e[2],r=e[3],n=e[4],o=e[5],a=e[6],h=e[7],c=e[8];return t*(c*n-o*h)+s*(-c*r+o*a)+i*(h*r-n*a)}function Mr(e,t,s){let i=t[0],r=t[1],n=t[2],o=t[3],a=t[4],h=t[5],c=t[6],l=t[7],u=t[8],f=s[0],m=s[1],d=s[2],g=s[3],_=s[4],M=s[5],y=s[6],E=s[7],w=s[8];return e[0]=f*i+m*o+d*c,e[1]=f*r+m*a+d*l,e[2]=f*n+m*h+d*u,e[3]=g*i+_*o+M*c,e[4]=g*r+_*a+M*l,e[5]=g*n+_*h+M*u,e[6]=y*i+E*o+w*c,e[7]=y*r+E*a+w*l,e[8]=y*n+E*h+w*u,e}function mo(e,t,s){let i=t[0],r=t[1],n=t[2],o=t[3],a=t[4],h=t[5],c=t[6],l=t[7],u=t[8],f=s[0],m=s[1];return e[0]=i,e[1]=r,e[2]=n,e[3]=o,e[4]=a,e[5]=h,e[6]=f*i+m*o+c,e[7]=f*r+m*a+l,e[8]=f*n+m*h+u,e}function po(e,t,s){let i=t[0],r=t[1],n=t[2],o=t[3],a=t[4],h=t[5],c=t[6],l=t[7],u=t[8],f=Math.sin(s),m=Math.cos(s);return e[0]=m*i+f*o,e[1]=m*r+f*a,e[2]=m*n+f*h,e[3]=m*o-f*i,e[4]=m*a-f*r,e[5]=m*h-f*n,e[6]=c,e[7]=l,e[8]=u,e}function xr(e,t,s){let i=s[0],r=s[1];return e[0]=i*t[0],e[1]=i*t[1],e[2]=i*t[2],e[3]=r*t[3],e[4]=r*t[4],e[5]=r*t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e}function go(e,t){let s=t[0],i=t[1],r=t[2],n=t[3],o=s+s,a=i+i,h=r+r,c=s*o,l=i*o,u=i*a,f=r*o,m=r*a,d=r*h,g=n*o,_=n*a,M=n*h;return e[0]=1-u-d,e[3]=l-M,e[6]=f+_,e[1]=l+M,e[4]=1-c-d,e[7]=m-g,e[2]=f-_,e[5]=m+g,e[8]=1-c-u,e}var yr;(function(e){e[e.COL0ROW0=0]="COL0ROW0",e[e.COL0ROW1=1]="COL0ROW1",e[e.COL0ROW2=2]="COL0ROW2",e[e.COL1ROW0=3]="COL1ROW0",e[e.COL1ROW1=4]="COL1ROW1",e[e.COL1ROW2=5]="COL1ROW2",e[e.COL2ROW0=6]="COL2ROW0",e[e.COL2ROW1=7]="COL2ROW1",e[e.COL2ROW2=8]="COL2ROW2"})(yr||(yr={}));var j0=Object.freeze([1,0,0,0,1,0,0,0,1]),U=class extends de{static get IDENTITY(){return H0()}static get ZERO(){return W0()}get ELEMENTS(){return 9}get RANK(){return 3}get INDICES(){return yr}constructor(t){super(-0,-0,-0,-0,-0,-0,-0,-0,-0),arguments.length===1&&Array.isArray(t)?this.copy(t):this.identity()}copy(t){return this[0]=t[0],this[1]=t[1],this[2]=t[2],this[3]=t[3],this[4]=t[4],this[5]=t[5],this[6]=t[6],this[7]=t[7],this[8]=t[8],this.check()}identity(){return this.copy(j0)}fromObject(t){return this.check()}fromQuaternion(t){return go(this,t),this.check()}fromMatrix4(t){return this.set(t[0],t[1],t[2],t[4],t[5],t[6],t[8],t[9],t[10])}set(t,s,i,r,n,o,a,h,c){return this[0]=t,this[1]=s,this[2]=i,this[3]=r,this[4]=n,this[5]=o,this[6]=a,this[7]=h,this[8]=c,this.check()}setRowMajor(t,s,i,r,n,o,a,h,c){return this[0]=t,this[1]=r,this[2]=a,this[3]=s,this[4]=n,this[5]=h,this[6]=i,this[7]=o,this[8]=c,this.check()}determinant(){return fo(this)}transpose(){return lo(this,this),this.check()}invert(){return uo(this,this),this.check()}multiplyLeft(t){return Mr(this,t,this),this.check()}multiplyRight(t){return Mr(this,this,t),this.check()}rotate(t){return po(this,this,t),this.check()}scale(t){return Array.isArray(t)?xr(this,this,t):xr(this,this,[t,t]),this.check()}translate(t){return mo(this,this,t),this.check()}transform(t,s){let i;switch(t.length){case 2:i=zs(s||[-0,-0],t,this);break;case 3:i=Us(s||[-0,-0,-0],t,this);break;case 4:i=eo(s||[-0,-0,-0,-0],t,this);break;default:throw new Error("Illegal vector")}return fe(i,t.length),i}},Vs,js=null;function W0(){return Vs||(Vs=new U([0,0,0,0,0,0,0,0,0]),Object.freeze(Vs)),Vs}function H0(){return js||(js=new U,Object.freeze(js)),js}function Y0(e){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function _o(e,t){if(e===t){let s=t[1],i=t[2],r=t[3],n=t[6],o=t[7],a=t[11];e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=s,e[6]=t[9],e[7]=t[13],e[8]=i,e[9]=n,e[11]=t[14],e[12]=r,e[13]=o,e[14]=a}else e[0]=t[0],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=t[1],e[5]=t[5],e[6]=t[9],e[7]=t[13],e[8]=t[2],e[9]=t[6],e[10]=t[10],e[11]=t[14],e[12]=t[3],e[13]=t[7],e[14]=t[11],e[15]=t[15];return e}function Mo(e,t){let s=t[0],i=t[1],r=t[2],n=t[3],o=t[4],a=t[5],h=t[6],c=t[7],l=t[8],u=t[9],f=t[10],m=t[11],d=t[12],g=t[13],_=t[14],M=t[15],y=s*a-i*o,E=s*h-r*o,w=s*c-n*o,T=i*h-r*a,b=i*c-n*a,R=r*c-n*h,A=l*g-u*d,C=l*_-f*d,G=l*M-m*d,L=u*_-f*g,D=u*M-m*g,H=f*M-m*_,N=y*H-E*D+w*L+T*G-b*C+R*A;return N?(N=1/N,e[0]=(a*H-h*D+c*L)*N,e[1]=(r*D-i*H-n*L)*N,e[2]=(g*R-_*b+M*T)*N,e[3]=(f*b-u*R-m*T)*N,e[4]=(h*G-o*H-c*C)*N,e[5]=(s*H-r*G+n*C)*N,e[6]=(_*w-d*R-M*E)*N,e[7]=(l*R-f*w+m*E)*N,e[8]=(o*D-a*G+c*A)*N,e[9]=(i*G-s*D-n*A)*N,e[10]=(d*b-g*w+M*y)*N,e[11]=(u*w-l*b-m*y)*N,e[12]=(a*C-o*L-h*A)*N,e[13]=(s*L-i*C+r*A)*N,e[14]=(g*E-d*T-_*y)*N,e[15]=(l*T-u*E+f*y)*N,e):null}function xo(e){let t=e[0],s=e[1],i=e[2],r=e[3],n=e[4],o=e[5],a=e[6],h=e[7],c=e[8],l=e[9],u=e[10],f=e[11],m=e[12],d=e[13],g=e[14],_=e[15],M=t*o-s*n,y=t*a-i*n,E=s*a-i*o,w=c*d-l*m,T=c*g-u*m,b=l*g-u*d,R=t*b-s*T+i*w,A=n*b-o*T+a*w,C=c*E-l*y+u*M,G=m*E-d*y+g*M;return h*R-r*A+_*C-f*G}function Sr(e,t,s){let i=t[0],r=t[1],n=t[2],o=t[3],a=t[4],h=t[5],c=t[6],l=t[7],u=t[8],f=t[9],m=t[10],d=t[11],g=t[12],_=t[13],M=t[14],y=t[15],E=s[0],w=s[1],T=s[2],b=s[3];return e[0]=E*i+w*a+T*u+b*g,e[1]=E*r+w*h+T*f+b*_,e[2]=E*n+w*c+T*m+b*M,e[3]=E*o+w*l+T*d+b*y,E=s[4],w=s[5],T=s[6],b=s[7],e[4]=E*i+w*a+T*u+b*g,e[5]=E*r+w*h+T*f+b*_,e[6]=E*n+w*c+T*m+b*M,e[7]=E*o+w*l+T*d+b*y,E=s[8],w=s[9],T=s[10],b=s[11],e[8]=E*i+w*a+T*u+b*g,e[9]=E*r+w*h+T*f+b*_,e[10]=E*n+w*c+T*m+b*M,e[11]=E*o+w*l+T*d+b*y,E=s[12],w=s[13],T=s[14],b=s[15],e[12]=E*i+w*a+T*u+b*g,e[13]=E*r+w*h+T*f+b*_,e[14]=E*n+w*c+T*m+b*M,e[15]=E*o+w*l+T*d+b*y,e}function yo(e,t,s){let i=s[0],r=s[1],n=s[2],o,a,h,c,l,u,f,m,d,g,_,M;return t===e?(e[12]=t[0]*i+t[4]*r+t[8]*n+t[12],e[13]=t[1]*i+t[5]*r+t[9]*n+t[13],e[14]=t[2]*i+t[6]*r+t[10]*n+t[14],e[15]=t[3]*i+t[7]*r+t[11]*n+t[15]):(o=t[0],a=t[1],h=t[2],c=t[3],l=t[4],u=t[5],f=t[6],m=t[7],d=t[8],g=t[9],_=t[10],M=t[11],e[0]=o,e[1]=a,e[2]=h,e[3]=c,e[4]=l,e[5]=u,e[6]=f,e[7]=m,e[8]=d,e[9]=g,e[10]=_,e[11]=M,e[12]=o*i+l*r+d*n+t[12],e[13]=a*i+u*r+g*n+t[13],e[14]=h*i+f*r+_*n+t[14],e[15]=c*i+m*r+M*n+t[15]),e}function So(e,t,s){let i=s[0],r=s[1],n=s[2];return e[0]=t[0]*i,e[1]=t[1]*i,e[2]=t[2]*i,e[3]=t[3]*i,e[4]=t[4]*r,e[5]=t[5]*r,e[6]=t[6]*r,e[7]=t[7]*r,e[8]=t[8]*n,e[9]=t[9]*n,e[10]=t[10]*n,e[11]=t[11]*n,e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e}function vo(e,t,s,i){let r=i[0],n=i[1],o=i[2],a=Math.sqrt(r*r+n*n+o*o),h,c,l,u,f,m,d,g,_,M,y,E,w,T,b,R,A,C,G,L,D,H,N,At;return a<1e-6?null:(a=1/a,r*=a,n*=a,o*=a,c=Math.sin(s),h=Math.cos(s),l=1-h,u=t[0],f=t[1],m=t[2],d=t[3],g=t[4],_=t[5],M=t[6],y=t[7],E=t[8],w=t[9],T=t[10],b=t[11],R=r*r*l+h,A=n*r*l+o*c,C=o*r*l-n*c,G=r*n*l-o*c,L=n*n*l+h,D=o*n*l+r*c,H=r*o*l+n*c,N=n*o*l-r*c,At=o*o*l+h,e[0]=u*R+g*A+E*C,e[1]=f*R+_*A+w*C,e[2]=m*R+M*A+T*C,e[3]=d*R+y*A+b*C,e[4]=u*G+g*L+E*D,e[5]=f*G+_*L+w*D,e[6]=m*G+M*L+T*D,e[7]=d*G+y*L+b*D,e[8]=u*H+g*N+E*At,e[9]=f*H+_*N+w*At,e[10]=m*H+M*N+T*At,e[11]=d*H+y*N+b*At,t!==e&&(e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e)}function Eo(e,t,s){let i=Math.sin(s),r=Math.cos(s),n=t[4],o=t[5],a=t[6],h=t[7],c=t[8],l=t[9],u=t[10],f=t[11];return t!==e&&(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[4]=n*r+c*i,e[5]=o*r+l*i,e[6]=a*r+u*i,e[7]=h*r+f*i,e[8]=c*r-n*i,e[9]=l*r-o*i,e[10]=u*r-a*i,e[11]=f*r-h*i,e}function wo(e,t,s){let i=Math.sin(s),r=Math.cos(s),n=t[0],o=t[1],a=t[2],h=t[3],c=t[8],l=t[9],u=t[10],f=t[11];return t!==e&&(e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[0]=n*r-c*i,e[1]=o*r-l*i,e[2]=a*r-u*i,e[3]=h*r-f*i,e[8]=n*i+c*r,e[9]=o*i+l*r,e[10]=a*i+u*r,e[11]=h*i+f*r,e}function To(e,t,s){let i=Math.sin(s),r=Math.cos(s),n=t[0],o=t[1],a=t[2],h=t[3],c=t[4],l=t[5],u=t[6],f=t[7];return t!==e&&(e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[0]=n*r+c*i,e[1]=o*r+l*i,e[2]=a*r+u*i,e[3]=h*r+f*i,e[4]=c*r-n*i,e[5]=l*r-o*i,e[6]=u*r-a*i,e[7]=f*r-h*i,e}function bo(e,t){let s=t[0],i=t[1],r=t[2],n=t[4],o=t[5],a=t[6],h=t[8],c=t[9],l=t[10];return e[0]=Math.sqrt(s*s+i*i+r*r),e[1]=Math.sqrt(n*n+o*o+a*a),e[2]=Math.sqrt(h*h+c*c+l*l),e}function Po(e,t){let s=t[0],i=t[1],r=t[2],n=t[3],o=s+s,a=i+i,h=r+r,c=s*o,l=i*o,u=i*a,f=r*o,m=r*a,d=r*h,g=n*o,_=n*a,M=n*h;return e[0]=1-u-d,e[1]=l+M,e[2]=f-_,e[3]=0,e[4]=l-M,e[5]=1-c-d,e[6]=m+g,e[7]=0,e[8]=f+_,e[9]=m-g,e[10]=1-c-u,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function Ro(e,t,s,i,r,n,o){let a=1/(s-t),h=1/(r-i),c=1/(n-o);return e[0]=n*2*a,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=n*2*h,e[6]=0,e[7]=0,e[8]=(s+t)*a,e[9]=(r+i)*h,e[10]=(o+n)*c,e[11]=-1,e[12]=0,e[13]=0,e[14]=o*n*2*c,e[15]=0,e}function Z0(e,t,s,i,r){let n=1/Math.tan(t/2);if(e[0]=n/s,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=n,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=-1,e[12]=0,e[13]=0,e[15]=0,r!=null&&r!==1/0){let o=1/(i-r);e[10]=(r+i)*o,e[14]=2*r*i*o}else e[10]=-1,e[14]=-2*i;return e}var Co=Z0;function X0(e,t,s,i,r,n,o){let a=1/(t-s),h=1/(i-r),c=1/(n-o);return e[0]=-2*a,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=-2*h,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=2*c,e[11]=0,e[12]=(t+s)*a,e[13]=(r+i)*h,e[14]=(o+n)*c,e[15]=1,e}var Ao=X0;function Io(e,t,s,i){let r,n,o,a,h,c,l,u,f,m,d=t[0],g=t[1],_=t[2],M=i[0],y=i[1],E=i[2],w=s[0],T=s[1],b=s[2];return Math.abs(d-w)<1e-6&&Math.abs(g-T)<1e-6&&Math.abs(_-b)<1e-6?Y0(e):(u=d-w,f=g-T,m=_-b,r=1/Math.sqrt(u*u+f*f+m*m),u*=r,f*=r,m*=r,n=y*m-E*f,o=E*u-M*m,a=M*f-y*u,r=Math.sqrt(n*n+o*o+a*a),r?(r=1/r,n*=r,o*=r,a*=r):(n=0,o=0,a=0),h=f*a-m*o,c=m*n-u*a,l=u*o-f*n,r=Math.sqrt(h*h+c*c+l*l),r?(r=1/r,h*=r,c*=r,l*=r):(h=0,c=0,l=0),e[0]=n,e[1]=h,e[2]=u,e[3]=0,e[4]=o,e[5]=c,e[6]=f,e[7]=0,e[8]=a,e[9]=l,e[10]=m,e[11]=0,e[12]=-(n*d+o*g+a*_),e[13]=-(h*d+c*g+l*_),e[14]=-(u*d+f*g+m*_),e[15]=1,e)}function Oo(e,t,s){return e[0]=t[0]+s[0],e[1]=t[1]+s[1],e[2]=t[2]+s[2],e[3]=t[3]+s[3],e}function No(e,t,s){return e[0]=t[0]*s,e[1]=t[1]*s,e[2]=t[2]*s,e[3]=t[3]*s,e}function Lo(e){let t=e[0],s=e[1],i=e[2],r=e[3];return Math.sqrt(t*t+s*s+i*i+r*r)}function Go(e){let t=e[0],s=e[1],i=e[2],r=e[3];return t*t+s*s+i*i+r*r}function zo(e,t){let s=t[0],i=t[1],r=t[2],n=t[3],o=s*s+i*i+r*r+n*n;return o>0&&(o=1/Math.sqrt(o)),e[0]=s*o,e[1]=i*o,e[2]=r*o,e[3]=n*o,e}function qo(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3]*t[3]}function Bo(e,t,s,i){let r=t[0],n=t[1],o=t[2],a=t[3];return e[0]=r+i*(s[0]-r),e[1]=n+i*(s[1]-n),e[2]=o+i*(s[2]-o),e[3]=a+i*(s[3]-a),e}function Do(e,t,s){let i=t[0],r=t[1],n=t[2],o=t[3];return e[0]=s[0]*i+s[4]*r+s[8]*n+s[12]*o,e[1]=s[1]*i+s[5]*r+s[9]*n+s[13]*o,e[2]=s[2]*i+s[6]*r+s[10]*n+s[14]*o,e[3]=s[3]*i+s[7]*r+s[11]*n+s[15]*o,e}var wr;(function(e){e[e.COL0ROW0=0]="COL0ROW0",e[e.COL0ROW1=1]="COL0ROW1",e[e.COL0ROW2=2]="COL0ROW2",e[e.COL0ROW3=3]="COL0ROW3",e[e.COL1ROW0=4]="COL1ROW0",e[e.COL1ROW1=5]="COL1ROW1",e[e.COL1ROW2=6]="COL1ROW2",e[e.COL1ROW3=7]="COL1ROW3",e[e.COL2ROW0=8]="COL2ROW0",e[e.COL2ROW1=9]="COL2ROW1",e[e.COL2ROW2=10]="COL2ROW2",e[e.COL2ROW3=11]="COL2ROW3",e[e.COL3ROW0=12]="COL3ROW0",e[e.COL3ROW1=13]="COL3ROW1",e[e.COL3ROW2=14]="COL3ROW2",e[e.COL3ROW3=15]="COL3ROW3"})(wr||(wr={}));var Q0=45*Math.PI/180,K0=1,vr=.1,Er=500,J0=Object.freeze([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]),I=class extends de{static get IDENTITY(){return eu()}static get ZERO(){return tu()}get ELEMENTS(){return 16}get RANK(){return 4}get INDICES(){return wr}constructor(t){super(-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0),arguments.length===1&&Array.isArray(t)?this.copy(t):this.identity()}copy(t){return this[0]=t[0],this[1]=t[1],this[2]=t[2],this[3]=t[3],this[4]=t[4],this[5]=t[5],this[6]=t[6],this[7]=t[7],this[8]=t[8],this[9]=t[9],this[10]=t[10],this[11]=t[11],this[12]=t[12],this[13]=t[13],this[14]=t[14],this[15]=t[15],this.check()}set(t,s,i,r,n,o,a,h,c,l,u,f,m,d,g,_){return this[0]=t,this[1]=s,this[2]=i,this[3]=r,this[4]=n,this[5]=o,this[6]=a,this[7]=h,this[8]=c,this[9]=l,this[10]=u,this[11]=f,this[12]=m,this[13]=d,this[14]=g,this[15]=_,this.check()}setRowMajor(t,s,i,r,n,o,a,h,c,l,u,f,m,d,g,_){return this[0]=t,this[1]=n,this[2]=c,this[3]=m,this[4]=s,this[5]=o,this[6]=l,this[7]=d,this[8]=i,this[9]=a,this[10]=u,this[11]=g,this[12]=r,this[13]=h,this[14]=f,this[15]=_,this.check()}toRowMajor(t){return t[0]=this[0],t[1]=this[4],t[2]=this[8],t[3]=this[12],t[4]=this[1],t[5]=this[5],t[6]=this[9],t[7]=this[13],t[8]=this[2],t[9]=this[6],t[10]=this[10],t[11]=this[14],t[12]=this[3],t[13]=this[7],t[14]=this[11],t[15]=this[15],t}identity(){return this.copy(J0)}fromObject(t){return this.check()}fromQuaternion(t){return Po(this,t),this.check()}fromMatrix3(t){return this.set(t[0],t[1],t[2],0,t[3],t[4],t[5],0,t[6],t[7],t[8],0,0,0,0,1)}frustum(t){let{left:s,right:i,bottom:r,top:n,near:o=vr,far:a=Er}=t;return a===1/0?su(this,s,i,r,n,o):Ro(this,s,i,r,n,o,a),this.check()}lookAt(t){let{eye:s,center:i=[0,0,0],up:r=[0,1,0]}=t;return Io(this,s,i,r),this.check()}ortho(t){let{left:s,right:i,bottom:r,top:n,near:o=vr,far:a=Er}=t;return Ao(this,s,i,r,n,o,a),this.check()}orthographic(t){let{fovy:s=Q0,aspect:i=K0,focalDistance:r=1,near:n=vr,far:o=Er}=t;Fo(s);let a=s/2,h=r*Math.tan(a),c=h*i;return this.ortho({left:-c,right:c,bottom:-h,top:h,near:n,far:o})}perspective(t){let{fovy:s=45*Math.PI/180,aspect:i=1,near:r=.1,far:n=500}=t;return Fo(s),Co(this,s,i,r,n),this.check()}determinant(){return xo(this)}getScale(t=[-0,-0,-0]){return t[0]=Math.sqrt(this[0]*this[0]+this[1]*this[1]+this[2]*this[2]),t[1]=Math.sqrt(this[4]*this[4]+this[5]*this[5]+this[6]*this[6]),t[2]=Math.sqrt(this[8]*this[8]+this[9]*this[9]+this[10]*this[10]),t}getTranslation(t=[-0,-0,-0]){return t[0]=this[12],t[1]=this[13],t[2]=this[14],t}getRotation(t,s){t=t||[-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0],s=s||[-0,-0,-0];let i=this.getScale(s),r=1/i[0],n=1/i[1],o=1/i[2];return t[0]=this[0]*r,t[1]=this[1]*n,t[2]=this[2]*o,t[3]=0,t[4]=this[4]*r,t[5]=this[5]*n,t[6]=this[6]*o,t[7]=0,t[8]=this[8]*r,t[9]=this[9]*n,t[10]=this[10]*o,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}getRotationMatrix3(t,s){t=t||[-0,-0,-0,-0,-0,-0,-0,-0,-0],s=s||[-0,-0,-0];let i=this.getScale(s),r=1/i[0],n=1/i[1],o=1/i[2];return t[0]=this[0]*r,t[1]=this[1]*n,t[2]=this[2]*o,t[3]=this[4]*r,t[4]=this[5]*n,t[5]=this[6]*o,t[6]=this[8]*r,t[7]=this[9]*n,t[8]=this[10]*o,t}transpose(){return _o(this,this),this.check()}invert(){return Mo(this,this),this.check()}multiplyLeft(t){return Sr(this,t,this),this.check()}multiplyRight(t){return Sr(this,this,t),this.check()}rotateX(t){return Eo(this,this,t),this.check()}rotateY(t){return wo(this,this,t),this.check()}rotateZ(t){return To(this,this,t),this.check()}rotateXYZ(t){return this.rotateX(t[0]).rotateY(t[1]).rotateZ(t[2])}rotateAxis(t,s){return vo(this,this,t,s),this.check()}scale(t){return So(this,this,Array.isArray(t)?t:[t,t,t]),this.check()}translate(t){return yo(this,this,t),this.check()}transform(t,s){return t.length===4?(s=Do(s||[-0,-0,-0,-0],t,this),fe(s,4),s):this.transformAsPoint(t,s)}transformAsPoint(t,s){let{length:i}=t,r;switch(i){case 2:r=qs(s||[-0,-0],t,this);break;case 3:r=Fs(s||[-0,-0,-0],t,this);break;default:throw new Error("Illegal vector")}return fe(r,t.length),r}transformAsVector(t,s){let i;switch(t.length){case 2:i=Bs(s||[-0,-0],t,this);break;case 3:i=Ds(s||[-0,-0,-0],t,this);break;default:throw new Error("Illegal vector")}return fe(i,t.length),i}makeRotationX(t){return this.identity().rotateX(t)}makeTranslation(t,s,i){return this.identity().translate([t,s,i])}},Ws,Hs;function tu(){return Ws||(Ws=new I([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]),Object.freeze(Ws)),Ws}function eu(){return Hs||(Hs=new I,Object.freeze(Hs)),Hs}function Fo(e){if(e>Math.PI*2)throw Error("expected radians")}function su(e,t,s,i,r,n){let o=2*n/(s-t),a=2*n/(r-i),h=(s+t)/(s-t),c=(r+i)/(r-i),l=-1,u=-1,f=-2*n;return e[0]=o,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=a,e[6]=0,e[7]=0,e[8]=h,e[9]=c,e[10]=l,e[11]=u,e[12]=0,e[13]=0,e[14]=f,e[15]=0,e}function Uo(e){return e[0]=0,e[1]=0,e[2]=0,e[3]=1,e}function Tr(e,t,s){s=s*.5;let i=Math.sin(s);return e[0]=i*t[0],e[1]=i*t[1],e[2]=i*t[2],e[3]=Math.cos(s),e}function br(e,t,s){let i=t[0],r=t[1],n=t[2],o=t[3],a=s[0],h=s[1],c=s[2],l=s[3];return e[0]=i*l+o*a+r*c-n*h,e[1]=r*l+o*h+n*a-i*c,e[2]=n*l+o*c+i*h-r*a,e[3]=o*l-i*a-r*h-n*c,e}function ko(e,t,s){s*=.5;let i=t[0],r=t[1],n=t[2],o=t[3],a=Math.sin(s),h=Math.cos(s);return e[0]=i*h+o*a,e[1]=r*h+n*a,e[2]=n*h-r*a,e[3]=o*h-i*a,e}function Vo(e,t,s){s*=.5;let i=t[0],r=t[1],n=t[2],o=t[3],a=Math.sin(s),h=Math.cos(s);return e[0]=i*h-n*a,e[1]=r*h+o*a,e[2]=n*h+i*a,e[3]=o*h-r*a,e}function jo(e,t,s){s*=.5;let i=t[0],r=t[1],n=t[2],o=t[3],a=Math.sin(s),h=Math.cos(s);return e[0]=i*h+r*a,e[1]=r*h-i*a,e[2]=n*h+o*a,e[3]=o*h-n*a,e}function Wo(e,t){let s=t[0],i=t[1],r=t[2];return e[0]=s,e[1]=i,e[2]=r,e[3]=Math.sqrt(Math.abs(1-s*s-i*i-r*r)),e}function Ho(e,t,s,i){let r=t[0],n=t[1],o=t[2],a=t[3],h=s[0],c=s[1],l=s[2],u=s[3],f,m,d,g,_;return f=r*h+n*c+o*l+a*u,f<0&&(f=-f,h=-h,c=-c,l=-l,u=-u),1-f>1e-6?(m=Math.acos(f),_=Math.sin(m),d=Math.sin((1-i)*m)/_,g=Math.sin(i*m)/_):(d=1-i,g=i),e[0]=d*r+g*h,e[1]=d*n+g*c,e[2]=d*o+g*l,e[3]=d*a+g*u,e}function Yo(e,t){let s=t[0],i=t[1],r=t[2],n=t[3],o=s*s+i*i+r*r+n*n,a=o?1/o:0;return e[0]=-s*a,e[1]=-i*a,e[2]=-r*a,e[3]=n*a,e}function Zo(e,t){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e[3]=t[3],e}function Xo(e,t){let s=t[0]+t[4]+t[8],i;if(s>0)i=Math.sqrt(s+1),e[3]=.5*i,i=.5/i,e[0]=(t[5]-t[7])*i,e[1]=(t[6]-t[2])*i,e[2]=(t[1]-t[3])*i;else{let r=0;t[4]>t[0]&&(r=1),t[8]>t[r*3+r]&&(r=2);let n=(r+1)%3,o=(r+2)%3;i=Math.sqrt(t[r*3+r]-t[n*3+n]-t[o*3+o]+1),e[r]=.5*i,i=.5/i,e[3]=(t[n*3+o]-t[o*3+n])*i,e[n]=(t[n*3+r]+t[r*3+n])*i,e[o]=(t[o*3+r]+t[r*3+o])*i}return e}var $o=Oo;var Qo=No,Ko=qo,Jo=Bo,ta=Lo;var ea=Go;var iu=zo;var sa=(function(){let e=so(),t=gr(1,0,0),s=gr(0,1,0);return function(i,r,n){let o=Ve(r,n);return o<-.999999?(pe(e,t,r),co(e)<1e-6&&pe(e,s,r),io(e,e),Tr(i,e,Math.PI),i):o>.999999?(i[0]=0,i[1]=0,i[2]=0,i[3]=1,i):(pe(e,r,n),i[0]=e[0],i[1]=e[1],i[2]=e[2],i[3]=1+o,iu(i,i))}})();var yt=class extends Qt{constructor(t=0,s=0,i=0,r=1){super(-0,-0,-0,-0),Array.isArray(t)&&arguments.length===1?this.copy(t):this.set(t,s,i,r)}copy(t){return this[0]=t[0],this[1]=t[1],this[2]=t[2],this[3]=t[3],this.check()}set(t,s,i,r){return this[0]=t,this[1]=s,this[2]=i,this[3]=r,this.check()}fromObject(t){return this[0]=t.x,this[1]=t.y,this[2]=t.z,this[3]=t.w,this.check()}fromMatrix3(t){return Xo(this,t),this.check()}fromEuler(t){switch(this.identity(),t.order){case"xyz":return this.rotateX(t.x).rotateY(t.y).rotateZ(t.z);case"yxz":return this.rotateY(t.y).rotateX(t.x).rotateZ(t.z);case"zxy":return this.rotateZ(t.z).rotateX(t.x).rotateY(t.y);case"zyx":return this.rotateZ(t.z).rotateY(t.y).rotateX(t.x);case"yzx":return this.rotateY(t.y).rotateZ(t.z).rotateX(t.x);case"xzy":return this.rotateX(t.x).rotateZ(t.z).rotateY(t.y);default:throw new Error("Unknown Euler angle order")}}fromAxisRotation(t,s){return Tr(this,t,s),this.check()}identity(){return Uo(this),this.check()}setAxisAngle(t,s){return this.fromAxisRotation(t,s)}get ELEMENTS(){return 4}get x(){return this[0]}set x(t){this[0]=F(t)}get y(){return this[1]}set y(t){this[1]=F(t)}get z(){return this[2]}set z(t){this[2]=F(t)}get w(){return this[3]}set w(t){this[3]=F(t)}len(){return ta(this)}lengthSquared(){return ea(this)}dot(t){return Ko(this,t)}rotationTo(t,s){return sa(this,t,s),this.check()}add(t){return $o(this,this,t),this.check()}calculateW(){return Wo(this,this),this.check()}conjugate(){return Zo(this,this),this.check()}invert(){return Yo(this,this),this.check()}lerp(t,s,i){return i===void 0?this.lerp(this,t,s):(Jo(this,t,s,i),this.check())}multiplyRight(t){return br(this,this,t),this.check()}multiplyLeft(t){return br(this,t,this),this.check()}normalize(){let t=this.len(),s=t>0?1/t:0;return this[0]=this[0]*s,this[1]=this[1]*s,this[2]=this[2]*s,this[3]=this[3]*s,t===0&&(this[3]=1),this.check()}rotateX(t){return ko(this,this,t),this.check()}rotateY(t){return Vo(this,this,t),this.check()}rotateZ(t){return jo(this,this,t),this.check()}scale(t){return Qo(this,this,t),this.check()}slerp(t,s,i){let r,n,o;return arguments.length===2?(r=this,n=t,o=s):(r=t,n=s,o=i),Ho(this,r,n,o),this.check()}lengthSq(){return this.lengthSquared()}setFromAxisAngle(t,s){return this.setAxisAngle(t,s)}premultiply(t){return this.multiplyLeft(t)}multiply(t){return this.multiplyRight(t)}};var Dt=6356752314245179e-9,ru={radii:[6378137,6378137,Dt],radiiSquared:[6378137*6378137,6378137*6378137,Dt*Dt],oneOverRadii:[1/6378137,1/6378137,1/Dt],oneOverRadiiSquared:[1/(6378137*6378137),1/(6378137*6378137),1/(Dt*Dt)],maximumRadius:Math.max(6378137,6378137,Dt),centerToleranceSquared:.1};function Ys(e){return e}var L_=new p;function nu(e,t=[],s=Ys){return"longitude"in e?(t[0]=s(e.longitude),t[1]=s(e.latitude),t[2]=e.height):"x"in e?(t[0]=s(e.x),t[1]=s(e.y),t[2]=e.z):(t[0]=s(e[0]),t[1]=s(e[1]),t[2]=e[2]),t}function ia(e,t=[]){return nu(e,t,V._cartographicRadians?Ys:ur)}function ou(e,t,s=Ys){return"longitude"in t?(t.longitude=s(e[0]),t.latitude=s(e[1]),t.height=e[2]):"x"in t?(t.x=s(e[0]),t.y=s(e[1]),t.z=e[2]):(t[0]=s(e[0]),t[1]=s(e[1]),t[2]=e[2]),t}function ra(e,t){return ou(e,t,V._cartographicRadians?Ys:fr)}var na=1e-14,au=new p,oa={up:{south:"east",north:"west",west:"south",east:"north"},down:{south:"west",north:"east",west:"north",east:"south"},south:{up:"west",down:"east",west:"down",east:"up"},north:{up:"east",down:"west",west:"up",east:"down"},west:{up:"north",down:"south",north:"down",south:"up"},east:{up:"south",down:"north",north:"up",south:"down"}},Pr={north:[-1,0,0],east:[0,1,0],up:[0,0,1],south:[1,0,0],west:[0,-1,0],down:[0,0,-1]},je={east:new p,north:new p,up:new p,west:new p,south:new p,down:new p},hu=new p,cu=new p,lu=new p;function Rr(e,t,s,i,r,n){let o=oa[t]&&oa[t][s];Q(o&&(!i||i===o));let a,h,c,l=au.copy(r);if(pt(l.x,0,na)&&pt(l.y,0,na)){let f=Math.sign(l.z);a=hu.fromArray(Pr[t]),t!=="east"&&t!=="west"&&a.scale(f),h=cu.fromArray(Pr[s]),s!=="east"&&s!=="west"&&h.scale(f),c=lu.fromArray(Pr[i]),i!=="east"&&i!=="west"&&c.scale(f)}else{let{up:f,east:m,north:d}=je;m.set(-l.y,l.x,0).normalize(),e.geodeticSurfaceNormal(l,f),d.copy(f).cross(m);let{down:g,west:_,south:M}=je;g.copy(f).scale(-1),_.copy(m).scale(-1),M.copy(d).scale(-1),a=je[t],h=je[s],c=je[i]}return n[0]=a.x,n[1]=a.y,n[2]=a.z,n[3]=0,n[4]=h.x,n[5]=h.y,n[6]=h.z,n[7]=0,n[8]=c.x,n[9]=c.y,n[10]=c.z,n[11]=0,n[12]=l.x,n[13]=l.y,n[14]=l.z,n[15]=1,n}var ge=new p,uu=new p,fu=new p;function aa(e,t,s=[]){let{oneOverRadii:i,oneOverRadiiSquared:r,centerToleranceSquared:n}=t;ge.from(e);let o=ge.x,a=ge.y,h=ge.z,c=i.x,l=i.y,u=i.z,f=o*o*c*c,m=a*a*l*l,d=h*h*u*u,g=f+m+d,_=Math.sqrt(1/g);if(!Number.isFinite(_))return;let M=uu;if(M.copy(e).scale(_),g<n)return M.to(s);let y=r.x,E=r.y,w=r.z,T=fu;T.set(M.x*y*2,M.y*E*2,M.z*w*2);let b=(1-_)*ge.len()/(.5*T.len()),R=0,A,C,G,L;do{b-=R,A=1/(1+b*y),C=1/(1+b*E),G=1/(1+b*w);let D=A*A,H=C*C,N=G*G,At=D*A,Cs=H*C,sr=N*G;L=f*D+m*H+d*N-1;let ir=-2*(f*At*y+m*Cs*E+d*sr*w);R=L/ir}while(Math.abs(L)>q.EPSILON12);return ge.scale([A,C,G]).to(s)}var Zs=new p,ha=new p,pu=new p,Tt=new p,gu=new p,Xs=new p,P=class{constructor(t=0,s=0,i=0){this.centerToleranceSquared=q.EPSILON1,Q(t>=0),Q(s>=0),Q(i>=0),this.radii=new p(t,s,i),this.radiiSquared=new p(t*t,s*s,i*i),this.radiiToTheFourth=new p(t*t*t*t,s*s*s*s,i*i*i*i),this.oneOverRadii=new p(t===0?0:1/t,s===0?0:1/s,i===0?0:1/i),this.oneOverRadiiSquared=new p(t===0?0:1/(t*t),s===0?0:1/(s*s),i===0?0:1/(i*i)),this.minimumRadius=Math.min(t,s,i),this.maximumRadius=Math.max(t,s,i),this.radiiSquared.z!==0&&(this.squaredXOverSquaredZ=this.radiiSquared.x/this.radiiSquared.z),Object.freeze(this)}equals(t){return this===t||!!(t&&this.radii.equals(t.radii))}toString(){return this.radii.toString()}cartographicToCartesian(t,s=[0,0,0]){let i=ha,r=pu,[,,n]=t;this.geodeticSurfaceNormalCartographic(t,i),r.copy(this.radiiSquared).scale(i);let o=Math.sqrt(i.dot(r));return r.scale(1/o),i.scale(n),r.add(i),r.to(s)}cartesianToCartographic(t,s=[0,0,0]){Xs.from(t);let i=this.scaleToGeodeticSurface(Xs,Tt);if(!i)return;let r=this.geodeticSurfaceNormal(i,ha),n=gu;n.copy(Xs).subtract(i);let o=Math.atan2(r.y,r.x),a=Math.asin(r.z),h=Math.sign(Ve(n,Xs))*pr(n);return ra([o,a,h],s)}eastNorthUpToFixedFrame(t,s=new I){return Rr(this,"east","north","up",t,s)}localFrameToFixedFrame(t,s,i,r,n=new I){return Rr(this,t,s,i,r,n)}geocentricSurfaceNormal(t,s=[0,0,0]){return Zs.from(t).normalize().to(s)}geodeticSurfaceNormalCartographic(t,s=[0,0,0]){let i=ia(t),r=i[0],n=i[1],o=Math.cos(n);return Zs.set(o*Math.cos(r),o*Math.sin(r),Math.sin(n)).normalize(),Zs.to(s)}geodeticSurfaceNormal(t,s=[0,0,0]){return Zs.from(t).scale(this.oneOverRadiiSquared).normalize().to(s)}scaleToGeodeticSurface(t,s){return aa(t,this,s)}scaleToGeocentricSurface(t,s=[0,0,0]){Tt.from(t);let i=Tt.x,r=Tt.y,n=Tt.z,o=this.oneOverRadiiSquared,a=1/Math.sqrt(i*i*o.x+r*r*o.y+n*n*o.z);return Tt.multiplyByScalar(a).to(s)}transformPositionToScaledSpace(t,s=[0,0,0]){return Tt.from(t).scale(this.oneOverRadii).to(s)}transformPositionFromScaledSpace(t,s=[0,0,0]){return Tt.from(t).scale(this.radii).to(s)}getSurfaceNormalIntersectionWithZAxis(t,s=0,i=[0,0,0]){Q(pt(this.radii.x,this.radii.y,q.EPSILON15)),Q(this.radii.z>0),Tt.from(t);let r=Tt.z*(1-this.squaredXOverSquaredZ);if(!(Math.abs(r)>=this.radii.z-s))return Tt.set(0,0,r).to(i)}};P.WGS84=new P(6378137,6378137,Dt);var Cr;(function(e){e.OUTSIDE="outside",e.INTERSECTING="intersecting",e.INSIDE="inside"})(Cr||(Cr={}));var X_=new p,$_=new p;var We=new p,ca=new p,tt=class e{constructor(t=[0,0,0],s=0){this.radius=-0,this.center=new p,this.fromCenterRadius(t,s)}fromCenterRadius(t,s){return this.center.from(t),this.radius=s,this}fromCornerPoints(t,s){return s=We.from(s),this.center=new p().from(t).add(s).scale(.5),this.radius=this.center.distance(s),this}equals(t){return this===t||!!t&&this.center.equals(t.center)&&this.radius===t.radius}clone(){return new e(this.center,this.radius)}union(t){let s=this.center,i=this.radius,r=t.center,n=t.radius,o=We.copy(r).subtract(s),a=o.magnitude();if(i>=a+n)return this.clone();if(n>=a+i)return t.clone();let h=(i+a+n)*.5;return ca.copy(o).scale((-i+h)/a).add(s),this.center.copy(ca),this.radius=h,this}expand(t){let i=We.from(t).subtract(this.center).magnitude();return i>this.radius&&(this.radius=i),this}transform(t){this.center.transform(t);let s=bo(We,t);return this.radius=Math.max(s[0],Math.max(s[1],s[2]))*this.radius,this}distanceSquaredTo(t){let s=this.distanceTo(t);return s*s}distanceTo(t){let i=We.from(t).subtract(this.center);return Math.max(0,i.len()-this.radius)}intersectPlane(t){let s=this.center,i=this.radius,n=t.normal.dot(s)+t.distance;return n<-i?"outside":n<i?"intersecting":"inside"}};var _u=new p,Mu=new p,$s=new p,Qs=new p,Ks=new p,xu=new p,yu=new p,Ft={COLUMN0ROW0:0,COLUMN0ROW1:1,COLUMN0ROW2:2,COLUMN1ROW0:3,COLUMN1ROW1:4,COLUMN1ROW2:5,COLUMN2ROW0:6,COLUMN2ROW1:7,COLUMN2ROW2:8},Nt=class e{constructor(t=[0,0,0],s=[0,0,0,0,0,0,0,0,0]){this.center=new p().from(t),this.halfAxes=new U(s)}get halfSize(){let t=this.halfAxes.getColumn(0),s=this.halfAxes.getColumn(1),i=this.halfAxes.getColumn(2);return[new p(t).len(),new p(s).len(),new p(i).len()]}get quaternion(){let t=this.halfAxes.getColumn(0),s=this.halfAxes.getColumn(1),i=this.halfAxes.getColumn(2),r=new p(t).normalize(),n=new p(s).normalize(),o=new p(i).normalize();return new yt().fromMatrix3(new U([...r,...n,...o]))}fromCenterHalfSizeQuaternion(t,s,i){let r=new yt(i),n=new U().fromQuaternion(r);return n[0]=n[0]*s[0],n[1]=n[1]*s[0],n[2]=n[2]*s[0],n[3]=n[3]*s[1],n[4]=n[4]*s[1],n[5]=n[5]*s[1],n[6]=n[6]*s[2],n[7]=n[7]*s[2],n[8]=n[8]*s[2],this.center=new p().from(t),this.halfAxes=n,this}clone(){return new e(this.center,this.halfAxes)}equals(t){return this===t||!!t&&this.center.equals(t.center)&&this.halfAxes.equals(t.halfAxes)}getBoundingSphere(t=new tt){let s=this.halfAxes,i=s.getColumn(0,$s),r=s.getColumn(1,Qs),n=s.getColumn(2,Ks),o=_u.copy(i).add(r).add(n);return t.center.copy(this.center),t.radius=o.magnitude(),t}intersectPlane(t){let s=this.center,i=t.normal,r=this.halfAxes,n=i.x,o=i.y,a=i.z,h=Math.abs(n*r[Ft.COLUMN0ROW0]+o*r[Ft.COLUMN0ROW1]+a*r[Ft.COLUMN0ROW2])+Math.abs(n*r[Ft.COLUMN1ROW0]+o*r[Ft.COLUMN1ROW1]+a*r[Ft.COLUMN1ROW2])+Math.abs(n*r[Ft.COLUMN2ROW0]+o*r[Ft.COLUMN2ROW1]+a*r[Ft.COLUMN2ROW2]),c=i.dot(s)+t.distance;return c<=-h?"outside":c>=h?"inside":"intersecting"}distanceTo(t){return Math.sqrt(this.distanceSquaredTo(t))}distanceSquaredTo(t){let s=Mu.from(t).subtract(this.center),i=this.halfAxes,r=i.getColumn(0,$s),n=i.getColumn(1,Qs),o=i.getColumn(2,Ks),a=r.magnitude(),h=n.magnitude(),c=o.magnitude();r.normalize(),n.normalize(),o.normalize();let l=0,u;return u=Math.abs(s.dot(r))-a,u>0&&(l+=u*u),u=Math.abs(s.dot(n))-h,u>0&&(l+=u*u),u=Math.abs(s.dot(o))-c,u>0&&(l+=u*u),l}computePlaneDistances(t,s,i=[-0,-0]){let r=Number.POSITIVE_INFINITY,n=Number.NEGATIVE_INFINITY,o=this.center,a=this.halfAxes,h=a.getColumn(0,$s),c=a.getColumn(1,Qs),l=a.getColumn(2,Ks),u=xu.copy(h).add(c).add(l).add(o),f=yu.copy(u).subtract(t),m=s.dot(f);return r=Math.min(m,r),n=Math.max(m,n),u.copy(o).add(h).add(c).subtract(l),f.copy(u).subtract(t),m=s.dot(f),r=Math.min(m,r),n=Math.max(m,n),u.copy(o).add(h).subtract(c).add(l),f.copy(u).subtract(t),m=s.dot(f),r=Math.min(m,r),n=Math.max(m,n),u.copy(o).add(h).subtract(c).subtract(l),f.copy(u).subtract(t),m=s.dot(f),r=Math.min(m,r),n=Math.max(m,n),o.copy(u).subtract(h).add(c).add(l),f.copy(u).subtract(t),m=s.dot(f),r=Math.min(m,r),n=Math.max(m,n),o.copy(u).subtract(h).add(c).subtract(l),f.copy(u).subtract(t),m=s.dot(f),r=Math.min(m,r),n=Math.max(m,n),o.copy(u).subtract(h).subtract(c).add(l),f.copy(u).subtract(t),m=s.dot(f),r=Math.min(m,r),n=Math.max(m,n),o.copy(u).subtract(h).subtract(c).subtract(l),f.copy(u).subtract(t),m=s.dot(f),r=Math.min(m,r),n=Math.max(m,n),i[0]=r,i[1]=n,i}transform(t){this.center.transformAsPoint(t);let s=this.halfAxes.getColumn(0,$s);s.transformAsPoint(t);let i=this.halfAxes.getColumn(1,Qs);i.transformAsPoint(t);let r=this.halfAxes.getColumn(2,Ks);return r.transformAsPoint(t),this.halfAxes=new U([...s,...i,...r]),this}getTransform(){throw new Error("not implemented")}};var la=new p,ua=new p,Y=class e{constructor(t=[0,0,1],s=0){this.normal=new p,this.distance=-0,this.fromNormalDistance(t,s)}fromNormalDistance(t,s){return Q(Number.isFinite(s)),this.normal.from(t).normalize(),this.distance=s,this}fromPointNormal(t,s){t=la.from(t),this.normal.from(s).normalize();let i=-this.normal.dot(t);return this.distance=i,this}fromCoefficients(t,s,i,r){return this.normal.set(t,s,i),Q(pt(this.normal.len(),1)),this.distance=r,this}clone(){return new e(this.normal,this.distance)}equals(t){return pt(this.distance,t.distance)&&pt(this.normal,t.normal)}getPointDistance(t){return this.normal.dot(t)+this.distance}transform(t){let s=ua.copy(this.normal).transformAsVector(t).normalize(),i=this.normal.scale(-this.distance).transform(t);return this.fromPointNormal(i,s)}projectPointOntoPlane(t,s=[0,0,0]){let i=la.from(t),r=this.getPointDistance(i),n=ua.copy(this.normal).scale(r);return i.subtract(n).to(s)}intersectWithRay(t,s=new p){let i=t.origin,r=t.direction,n=this.normal,o=n.dot(r);if(Math.abs(o)<q.EPSILON15)return;let a=(-this.distance-n.dot(i))/o;if(!(a<0))return s.copy(r).multiplyByScalar(a).add(i)}};var fa=[new p([1,0,0]),new p([0,1,0]),new p([0,0,1])],da=new p,Su=new p,K=class e{constructor(t=[]){this.planes=t}fromBoundingSphere(t){this.planes.length=2*fa.length;let s=t.center,i=t.radius,r=0;for(let n of fa){let o=this.planes[r],a=this.planes[r+1];o||(o=this.planes[r]=new Y),a||(a=this.planes[r+1]=new Y);let h=da.copy(n).scale(-i).add(s);o.fromPointNormal(h,n);let c=da.copy(n).scale(i).add(s),l=Su.copy(n).negate();a.fromPointNormal(c,l),r+=2}return this}computeVisibility(t){let s="inside";for(let i of this.planes)switch(t.intersectPlane(i)){case"outside":return"outside";case"intersecting":s="intersecting";break;default:}return s}computeVisibilityWithPlaneMask(t,s){if(Q(Number.isFinite(s),"parentPlaneMask is required."),s===e.MASK_OUTSIDE||s===e.MASK_INSIDE)return s;let i=e.MASK_INSIDE,r=this.planes;for(let n=0;n<this.planes.length;++n){let o=n<31?1<<n:0;if(n<31&&(s&o)===0)continue;let a=r[n],h=t.intersectPlane(a);if(h==="outside")return e.MASK_OUTSIDE;h==="intersecting"&&(i|=o)}return i}};K.MASK_OUTSIDE=4294967295;K.MASK_INSIDE=0;K.MASK_INDETERMINATE=2147483647;var PM=new p,RM=new p,CM=new p,AM=new p,IM=new p;var qM=new p,BM=new p,DM=new p,FM=new p,UM=new p,kM=new p,VM=new p,jM=new p,WM=new p,HM=new p,YM=new p,ZM=new p;var QM=new U,KM=new U,JM=new U,tx=new U,ex=new U;var ax=new p,hx=new p,cx=new p,lx=new p,ux=new p,fx=new U,dx={diagonal:new U,unitary:new U};var Tu=new p,Ar=new p,bu=new I,Pu=new p,He=class{constructor(t,s=P.WGS84){let i=s.scaleToGeodeticSurface(t,Tu),r=s.eastNorthUpToFixedFrame(i,bu);this._origin=new p(i),this._xAxis=new p(Ar.from(r.getColumn(0))),this._yAxis=new p(Ar.from(r.getColumn(1)));let n=new p(Ar.from(r.getColumn(2)));this._plane=new Y().fromPointNormal(this._origin,n)}projectPointToNearestOnPlane(t,s){s||(s=new xt);let r=this._plane.projectPointOntoPlane(t,Pu).subtract(this._origin),n=this._xAxis.dot(r),o=this._yAxis.dot(r);return s.x=n,s.y=o,s}get plane(){return this._plane}get origin(){return this._origin}get xAxis(){return this._xAxis}get yAxis(){return this._yAxis}get zAxis(){return this._plane.normal}};var _e=class{constructor(t,s,i,r){this.west=t,this.south=s,this.east=i,this.north=r}static center(t,s){s||(s=new p);let i=t.east,r=t.west;i<r&&(i+=q.TWO_PI);let n=dr((r+i)*.5,"negative-pi-to-pi"),o=(t.south+t.north)*.5;return s.x=n,s.y=o,s.z=0,s}get width(){let t=this.east,s=this.west;return t<s&&(t+=q.TWO_PI),t-s}};var Ru=new p,Cu=new p,Au=new p,Iu=new p,Ou=new p,Nu=new p,Lu=new p,Gu=new p,ga=new p,zu=new p,_a=new p,qu=new p,Bu=new xt,Du=new xt,Fu=new xt,Uu=new xt,ku=new xt,Vu=new Y,ju=new p,Wu=new p,Hu=new p,Yu=new p,Zu=new xt,Xu=new p,$u=new p,Qu=new p(1,0,0),Ku=new p(0,0,1);function Ir(e,t=P.WGS84,s={}){if(!e||e.length!==6||e.some(y=>!Number.isFinite(y)))throw new Error("makeOBBFromRegion: region must contain exactly six finite numbers");let i=s.units==="degrees"?Ls(1):1,[r,n,o,a,h,c]=e;if(h>c)throw new Error("makeOBBFromRegion: minimumHeight must not exceed maximumHeight");let l=n*i,u=a*i,f=Ma(r*i),m=Ma(o*i);o*i-r*i>=q.TWO_PI-1e-12&&(m=f+q.TWO_PI);let g=1e-12;if(l>u||l<-q.PI_OVER_TWO-g||u>q.PI_OVER_TWO+g)throw new Error("makeOBBFromRegion: latitude must be within [-\u03C0/2, \u03C0/2] and south \u2264 north");let _=Math.max(-q.PI_OVER_TWO,Math.min(q.PI_OVER_TWO,l)),M=Math.max(-q.PI_OVER_TWO,Math.min(q.PI_OVER_TWO,u));return Ju([f,_,m,M,h,c],t,s.transform)}function Ma(e){let t=((e+Math.PI)%q.TWO_PI+q.TWO_PI)%q.TWO_PI-Math.PI;return t===-Math.PI&&e>0?Math.PI:t}function Ju(e,t,s){let i=new Nt,[r,n,o,a,h,c]=e,l=ot(a),u=ot(n),f,m,d,g,_,M,y,E=new _e(r,n,o,a),w=_e.center(E,Cu),T=new p([ot(w.x),ot(w.y),0]),b=w.x,R=T.x;if(E.width<=q.PI){let rr=ot(r),Zl=t.cartographicToCartesian(T),It=new He(Zl,t),Xl=u<0&&l>0?0:T.y,$l=Au.copy([R,l,c]),nr=Iu.copy([rr,l,c]),Ql=Ou.copy([rr,Xl,c]),or=Nu.copy([rr,u,c]),Kl=Lu.copy([R,u,c]),Jl=t.cartographicToCartesian($l,Gu),ar=t.cartographicToCartesian(nr,ga),t0=t.cartographicToCartesian(Ql,zu),hr=t.cartographicToCartesian(or,_a),e0=t.cartographicToCartesian(Kl,qu),s0=It.projectPointToNearestOnPlane(Jl,Bu),Hn=It.projectPointToNearestOnPlane(ar,Du),i0=It.projectPointToNearestOnPlane(t0,Fu),Yn=It.projectPointToNearestOnPlane(hr,Uu),r0=It.projectPointToNearestOnPlane(e0,ku);return g=Math.min(Hn.x,i0.x,Yn.x),f=-g,m=Math.max(Hn.y,s0.y),_=Math.min(Yn.y,r0.y),nr.z=or.z=h,ar=t.cartographicToCartesian(nr,ga),hr=t.cartographicToCartesian(or,_a),y=It.plane,M=Math.min(y.getPointDistance(ar),y.getPointDistance(hr)),d=c,xa(Sa(It.origin,It.xAxis,It.yAxis,It.zAxis,g,f,_,m,M,d,i),s)}let A=ot(o),C=n>0,G=a<0,L=C?u:G?l:0,D=t.cartographicToCartesian([R,L,c],ju);D.z=0;let N=Math.abs(D.x)<q.EPSILON10&&Math.abs(D.y)<q.EPSILON10?Qu:Wu.copy(D).normalize(),At=Ku,Cs=Hu.copy(N).cross(At);y=Vu.fromPointNormal(D,N);let sr=t.cartographicToCartesian([ot(b+q.PI_OVER_TWO),L,c],Yu);f=y.projectPointOntoPlane(sr,Zu).dot(Cs),g=-f;let ir=G?h:c,Hl=C?h:c;m=ya(t,l,ir,!0),_=ya(t,u,Hl,!1);let Yl=t.cartographicToCartesian([A,L,c],$u);return M=y.getPointDistance(Yl),d=0,xa(Sa(D,Cs,At,N,g,f,_,m,M,d,i),s)}function xa(e,t){if(!t)return e;let s=[0,1,2].map(a=>e.halfAxes.getColumn(a,new p)),i=t.transformAsPoint(e.center),r=[1/0,1/0,1/0],n=[-1/0,-1/0,-1/0];for(let a=0;a<8;a++){let h=new p(i);for(let c=0;c<3;c++){let l=t.transformAsVector(s[c]);h.add(new p(l).scale((a&1<<c)===0?-1:1))}for(let c=0;c<3;c++)r[c]=Math.min(r[c],h[c]),n[c]=Math.max(n[c],h[c])}e.center.copy(r).add(n).scale(.5);let o=new p(n).subtract(r).scale(.5);return e.halfAxes=new U().set(o.x,0,0,0,o.y,0,0,0,o.z),e}function ya(e,t,s,i){let r=i?-1/0:1/0;for(let n of[0,90,180,270]){let o=e.cartographicToCartesian([n,t,s],Xu).z;r=i?Math.max(r,o):Math.min(r,o)}return r}function Sa(e,t,s,i,r,n,o,a,h,c,l){let u=l.center,f=l.halfAxes;f.setColumn(0,t),f.setColumn(1,s),f.setColumn(2,i);let m=Ru.set((r+n)/2,(o+a)/2,(h+c)/2).transformByMatrix3(f),d=(n-r)/2,g=(a-o)/2,_=(c-h)/2;return f[0]*=d,f[1]*=d,f[2]*=d,f[3]*=g,f[4]*=g,f[5]*=g,f[6]*=_,f[7]*=_,f[8]*=_,u.copy(e).add(m),l}function Ye(){let e;if(typeof window<"u"&&window.performance)e=window.performance.now();else if(typeof process<"u"&&process.hrtime){let t=process.hrtime();e=t[0]*1e3+t[1]/1e6}else e=Date.now();return e}var se=class{constructor(t,s){this.sampleSize=1,this.time=0,this.count=0,this.samples=0,this.lastTiming=0,this.lastSampleTime=0,this.lastSampleCount=0,this._count=0,this._time=0,this._samples=0,this._startTime=0,this._timerPending=!1,this.name=t,this.type=s,this.reset()}reset(){return this.time=0,this.count=0,this.samples=0,this.lastTiming=0,this.lastSampleTime=0,this.lastSampleCount=0,this._count=0,this._time=0,this._samples=0,this._startTime=0,this._timerPending=!1,this}setSampleSize(t){return this.sampleSize=t,this}incrementCount(){return this.addCount(1),this}decrementCount(){return this.subtractCount(1),this}addCount(t){return this._count+=t,this._samples++,this._checkSampling(),this}subtractCount(t){return this._count-=t,this._samples++,this._checkSampling(),this}addTime(t){return this._time+=t,this.lastTiming=t,this._samples++,this._checkSampling(),this}timeStart(){return this._startTime=Ye(),this._timerPending=!0,this}timeEnd(){return this._timerPending?(this.addTime(Ye()-this._startTime),this._timerPending=!1,this._checkSampling(),this):this}getSampleAverageCount(){return this.sampleSize>0?this.lastSampleCount/this.sampleSize:0}getSampleAverageTime(){return this.sampleSize>0?this.lastSampleTime/this.sampleSize:0}getSampleHz(){return this.lastSampleTime>0?this.sampleSize/(this.lastSampleTime/1e3):0}getAverageCount(){return this.samples>0?this.count/this.samples:0}getAverageTime(){return this.samples>0?this.time/this.samples:0}getHz(){return this.time>0?this.samples/(this.time/1e3):0}_checkSampling(){this._samples===this.sampleSize&&(this.lastSampleTime=this._time,this.lastSampleCount=this._count,this.count+=this._count,this.time+=this._time,this.samples+=this._samples,this._time=0,this._count=0,this._samples=0)}};var St=class{constructor(t){this.stats={},this.id=t.id,this.stats={},this._initializeStats(t.stats),Object.seal(this)}get(t,s="count"){return this._getOrCreate({name:t,type:s})}get size(){return Object.keys(this.stats).length}reset(){for(let t of Object.values(this.stats))t.reset();return this}forEach(t){for(let s of Object.values(this.stats))t(s)}getTable(){let t={};return this.forEach(s=>{t[s.name]={time:s.time||0,count:s.count||0,average:s.getAverageTime()||0,hz:s.getHz()||0}}),t}_initializeStats(t=[]){t.forEach(s=>this._getOrCreate(s))}_getOrCreate(t){let{name:s,type:i}=t,r=this.stats[s];return r||(t instanceof se?r=t:r=new se(s,i),this.stats[s]=r),r}};function bt(e,t){if(!e)throw new Error(t||"loader assertion failed.")}var tf="Queued Requests",ef="Active Requests",sf="Cancelled Requests",rf="Queued Requests Ever",nf="Active Requests Ever",of={id:"request-scheduler",throttleRequests:!0,maxRequests:6,debounceTime:0},Ut=class{props;stats;activeRequestCount=0;requestQueue=[];requestMap=new Map;updateTimer=null;constructor(t={}){this.props={...of,...t},this.stats=new St({id:this.props.id}),this.stats.get(tf),this.stats.get(ef),this.stats.get(sf),this.stats.get(rf),this.stats.get(nf)}setProps(t){t.throttleRequests!==void 0&&(this.props.throttleRequests=t.throttleRequests),t.maxRequests!==void 0&&(this.props.maxRequests=t.maxRequests),t.debounceTime!==void 0&&(this.props.debounceTime=t.debounceTime)}scheduleRequest(t,s=()=>0){if(!this.props.throttleRequests)return Promise.resolve({done:()=>{}});if(this.requestMap.has(t))return this.requestMap.get(t);let i={handle:t,priority:0,getPriority:s},r=new Promise(n=>(i.resolve=n,i));return this.requestQueue.push(i),this.requestMap.set(t,r),this._issueNewRequests(),r}_issueRequest(t){let{handle:s,resolve:i}=t,r=!1,n=()=>{r||(r=!0,this.requestMap.delete(s),this.activeRequestCount--,this._issueNewRequests())};return this.activeRequestCount++,i?i({done:n}):Promise.resolve({done:n})}_issueNewRequests(){this.updateTimer!==null&&clearTimeout(this.updateTimer),this.updateTimer=setTimeout(()=>this._issueNewRequestsAsync(),this.props.debounceTime)}_issueNewRequestsAsync(){this.updateTimer!==null&&clearTimeout(this.updateTimer),this.updateTimer=null;let t=Math.max(this.props.maxRequests-this.activeRequestCount,0);if(t!==0){this._updateAllRequests();for(let s=0;s<t;++s){let i=this.requestQueue.shift();i&&this._issueRequest(i)}}}_updateAllRequests(){let t=this.requestQueue;for(let s=0;s<t.length;++s){let i=t[s];this._updateRequest(i)||(t.splice(s,1),this.requestMap.delete(i.handle),s--)}t.sort((s,i)=>s.priority-i.priority)}_updateRequest(t){return t.priority=t.getPriority(t.handle),t.priority<0?(t.resolve(null),!1):!0}};var af=Number.POSITIVE_INFINITY,hf=Number.POSITIVE_INFINITY,Ze=class{maxEntries;maxBytes;getByteLength;onRemove;entries=new Map;retainedByteLength=0;constructor(t={}){this.maxEntries=va(t.maxEntries,af,"maxEntries"),this.maxBytes=va(t.maxBytes,hf,"maxBytes"),this.getByteLength=t.getByteLength||(()=>0),this.onRemove=t.onRemove}get size(){return this.entries.size}get pendingSize(){let t=0;for(let s of this.entries.values())t+=s.pending?1:0;return t}get byteLength(){return this.retainedByteLength}get(t,s){let i=this.entries.get(t);if(i)return this.touch(t,i),this.waitForEntry(t,i,s)}has(t){return this.entries.has(t)}set(t,s){this.removeEntry(t,"replace");let i=Ea(this.getByteLength(s)),r={promise:Promise.resolve(s),pending:!1,waiterCount:0,byteLength:i};return this.entries.set(t,r),this.retainedByteLength+=i,this.trim(),s}getOrLoad(t,s,i){let r=this.get(t,i);if(r)return r;if(i?.aborted)return Promise.reject(Or());let n=new AbortController,o,a,c={promise:new Promise((l,u)=>{o=l,a=u}),controller:n,pending:!0,waiterCount:0,byteLength:0};this.entries.set(t,c),c.promise.then(l=>this.handleLoadedValue(t,c,l),()=>this.handleLoadError(t,c));try{Promise.resolve(s(n.signal)).then(o,a)}catch(l){a(l)}return this.waitForEntry(t,c,i)}delete(t){return this.removeEntry(t,"delete")}clear(){for(let t of Array.from(this.entries.keys()))this.removeEntry(t,"clear")}handleLoadedValue(t,s,i){if(this.entries.get(t)===s){s.pending=!1,s.controller=void 0;try{s.byteLength=Ea(this.getByteLength(i))}catch{this.removeEntry(t,"error");return}this.retainedByteLength+=s.byteLength,this.trim()}}handleLoadError(t,s){this.entries.get(t)===s&&this.removeEntry(t,s.controller?.signal.aborted?"abort":"error")}waitForEntry(t,s,i){return i?.aborted?Promise.reject(Or()):s.pending?(s.waiterCount++,new Promise((r,n)=>{let o=!0,a=()=>{o&&(o=!1,i?.removeEventListener("abort",h),s.waiterCount--)},h=()=>{o&&(a(),n(Or()),s.pending&&s.waiterCount===0&&this.entries.get(t)===s&&this.removeEntry(t,"abort"))};i?.addEventListener("abort",h,{once:!0}),s.promise.then(c=>{o&&(a(),r(c))},c=>{o&&(a(),n(c))})})):s.promise}touch(t,s){this.entries.delete(t),this.entries.set(t,s)}trim(){let t=this.entries.size-this.pendingSize;if(!(t<=this.maxEntries&&this.retainedByteLength<=this.maxBytes)){for(let[s,i]of this.entries)if(i.pending||(this.removeEntry(s,"evict"),t--),t<=this.maxEntries&&this.retainedByteLength<=this.maxBytes)break}}removeEntry(t,s){let i=this.entries.get(t);return i?(this.entries.delete(t),this.retainedByteLength-=i.byteLength,i.pending&&i.controller?.abort(),this.onRemove?.(t,s),!0):!1}};function Or(){let e=new Error("Request aborted");return e.name="AbortError",e}function va(e,t,s){let i=e??t;if(i<0||Number.isNaN(i))throw new Error(`${s} must be a non-negative number`);return i}function Ea(e){if(!Number.isFinite(e)||e<0)throw new Error("Request cache entry byte length must be a non-negative finite number");return e}var k={logicalRanges:"Logical Range Requests",rangeBatches:"Range Request Batches",transportRanges:"Transport Ranges Created",completedTransportRanges:"Range Transport Requests Completed",coalescedRanges:"Coalesced Logical Ranges",requestedBytes:"Logical Range Request Bytes",transportBytes:"Range Transport Bytes Requested",responseBytes:"Range Response Bytes",networkTimeMs:"Range Network Time",overfetchBytes:"Range Overfetch Bytes",failedTransportRanges:"Range Transport Requests Failed",abortedLogicalRanges:"Aborted Logical Range Requests",fullResponseFallbacks:"Full Response Fallbacks"},Nr={batchDelayMs:50,maxGapBytes:65536,rangeExpansionBytes:65536,maxMergedBytes:8388608,stats:ba("range-request-scheduler-default"),onEvent:()=>{}},ti=class{props;stats;onEvent;pendingRequests=[];flushTimer=null;constructor(t={}){let s=t.rangeExpansionBytes??t.maxGapBytes??Nr.rangeExpansionBytes;this.props={batchDelayMs:t.batchDelayMs??Nr.batchDelayMs,maxGapBytes:t.maxGapBytes??s,rangeExpansionBytes:s,maxMergedBytes:t.maxMergedBytes??Nr.maxMergedBytes},this.stats=t.stats||ba("range-request-scheduler"),this.onEvent=t.onEvent,Pa(this.stats)}scheduleRequest(t){if(t.length<0)return Promise.reject(new Error("Byte range length cannot be negative"));if(t.signal?.aborted)return Promise.reject(Ta());if(t.length===0)return Promise.resolve(new ArrayBuffer(0));let s=new Promise((i,r)=>{let n={...t,resolve:i,reject:r,settled:!1};t.signal&&(n.abortListener=()=>{this.abortRequest(n),n.onAbort?.()},t.signal.addEventListener("abort",n.abortListener,{once:!0})),this.pendingRequests.push(n)});return this.trackEvent({type:"queued",sourceId:t.sourceId,offset:t.offset,length:t.length,logicalRequestCount:1,logicalBytes:t.length}),this.scheduleFlush(),s}fetch(t){let s=t.fetch||globalThis.fetch;return this.scheduleRequest({sourceId:t.sourceId||t.url,offset:t.offset,length:t.length,signal:t.signal,isolationKey:t.isolationKey??{},fetchRange:(i,r,n)=>lf({url:t.url,offset:i,length:r,signal:n,fetch:s,fetchOptions:t.fetchOptions})})}flush(){this.flushTimer&&(clearTimeout(this.flushTimer),this.flushTimer=null);let t=this.pendingRequests;this.pendingRequests=[];let s=t.filter(r=>r.settled||r.signal?.aborted?(this.abortRequest(r),!1):!0),i=this.mergeRequests(s);s.length>0&&this.trackBatch(s,i);for(let r of i)this.fetchMergedRequest(r)}scheduleFlush(){this.flushTimer||(this.flushTimer=setTimeout(()=>this.flush(),this.props.batchDelayMs))}mergeRequests(t){t.sort((i,r)=>i.sourceId!==r.sourceId?i.sourceId<r.sourceId?-1:1:i.offset-r.offset);let s=[];for(let i of t){let r=i.offset+i.length,n=s[s.length-1];n&&uf(n,i,this.props)?(n.endOffset=Math.max(n.endOffset,r),n.requests.push(i)):s.push({sourceId:i.sourceId,isolationKey:i.isolationKey??i.sourceId,offset:i.offset,endOffset:r,fetchRange:i.fetchRange,requests:[i]})}return s}async fetchMergedRequest(t){let{offset:s,endOffset:i,fetchRange:r,requests:n}=t,o=new AbortController,a=Xe(),h=()=>{n.every(c=>c.signal?.aborted)&&o.abort()};try{for(let _ of n)_.onAbort=h;if(h(),n.every(_=>_.settled))return;let c=Lr(n),l=i-s;this.trackEvent({type:"request",sourceId:t.sourceId,offset:s,length:l,logicalRequestCount:n.length,logicalBytes:c,transportBytes:l,overfetchBytes:Math.max(l-c,0)});let u=ff(await r(s,l,o.signal)),{arrayBuffer:f}=u,m=u.fullResponse&&s===0&&f.byteLength<l,d=f.byteLength<l&&Number.isSafeInteger(u.sourceByteLength)&&s+f.byteLength===u.sourceByteLength;if(f.byteLength!==l&&!m&&!d)throw new Error(`Byte-range transport returned ${f.byteLength} bytes; expected ${l}`);let g=u.networkTimeMs??Xe()-a;this.trackEvent({type:"response",sourceId:t.sourceId,offset:s,length:l,logicalRequestCount:n.length,logicalBytes:c,transportBytes:l,responseBytes:u.transportBytes??f.byteLength,networkTimeMs:g,overfetchBytes:Math.max(l-c,0),status:u.status,fullResponse:u.fullResponse});for(let _ of n){if(_.settled)continue;let M=_.offset-s;_.settled=!0,_.resolve(f.slice(M,M+_.length))}}catch(c){this.trackEvent({type:"error",sourceId:t.sourceId,offset:s,length:i-s,logicalRequestCount:n.length,logicalBytes:Lr(n),networkTimeMs:Xe()-a,error:c});for(let l of n)l.settled||(l.signal?.aborted?this.abortRequest(l):(l.settled=!0,l.reject(c)))}finally{for(let c of n)c.abortListener&&c.signal?.removeEventListener("abort",c.abortListener),c.onAbort=void 0}}abortRequest(t){t.settled||(t.settled=!0,t.reject(Ta()),this.trackEvent({type:"abort",sourceId:t.sourceId,offset:t.offset,length:t.length,logicalRequestCount:1,logicalBytes:t.length}))}trackEvent(t){cf(this.stats,t);try{this.onEvent?.(t)}catch{}}trackBatch(t,s){let i=Lr(t),r=s.reduce((n,o)=>n+o.endOffset-o.offset,0);this.trackEvent({type:"batch",logicalRequestCount:t.length,transportRequestCount:s.length,logicalBytes:i,transportBytes:r,overfetchBytes:Math.max(r-i,0)})}};function cf(e,t){switch((t.type==="response"||t.type==="error")&&t.networkTimeMs!==void 0&&e.get(k.networkTimeMs,"time").addTime(t.networkTimeMs),t.type){case"queued":e.get(k.logicalRanges,"count").incrementCount(),e.get(k.requestedBytes,"count").addCount(t.logicalBytes||0);break;case"batch":e.get(k.rangeBatches,"count").incrementCount(),e.get("Logical Ranges Batched","count").addCount(t.logicalRequestCount||0),e.get(k.transportRanges,"count").addCount(t.transportRequestCount||0),e.get(k.coalescedRanges,"count").addCount(Math.max((t.logicalRequestCount||0)-(t.transportRequestCount||0),0)),e.get(k.transportBytes,"count").addCount(t.transportBytes||0),e.get(k.overfetchBytes,"count").addCount(t.overfetchBytes||0);break;case"response":e.get(k.completedTransportRanges,"count").incrementCount(),e.get(k.responseBytes,"count").addCount(t.responseBytes||0),t.fullResponse&&e.get(k.fullResponseFallbacks,"count").incrementCount();break;case"error":e.get(k.failedTransportRanges,"count").incrementCount();break;case"abort":e.get(k.abortedLogicalRanges,"count").incrementCount();break;default:}}function ba(e="range-request-scheduler"){let t=new St({id:e});return Pa(t),t}async function lf(e){let t=gf(e.signal),s=Xe();try{let i=!1,r=await e.fetch(e.url,wa(e.fetchOptions,e.offset,e.length,t.signal));if(r.status===416&&e.offset===0){let h=mf(r.headers.get("Content-Range"));if(!h)throw new Error("Missing content-length on 416 response");r=await e.fetch(e.url,wa(e.fetchOptions,0,h,t.signal)),i=!0}if(r.status===200)throw t.abort(),await _f(r),new Error("Byte-range request failed: server returned 200 instead of 206");if(r.status!==206&&!r.ok)throw new Error(`Bad response code: ${r.status}`);let n=await r.arrayBuffer(),o=r.headers.get("Content-Range"),a=pf(o);if(o&&!a)throw new Error(`Invalid Content-Range header: ${o}`);if(a){let h=a.endOffset-a.offset+1,c=e.offset+e.length-1;if(a.offset!==e.offset||a.endOffset>c||h!==n.byteLength||a.sourceByteLength!==void 0&&a.endOffset>=a.sourceByteLength)throw new Error(`Content-Range does not match requested range: ${o}`)}return{arrayBuffer:n,status:r.status,sourceByteLength:a?.sourceByteLength,transportBytes:n.byteLength,networkTimeMs:Xe()-s,fullResponse:i}}finally{t.removeAbortListener()}}function uf(e,t,s){if(e.sourceId!==t.sourceId||e.isolationKey!==(t.isolationKey??t.sourceId))return!1;let i=t.offset+t.length,r=t.offset-e.endOffset,n=Math.max(e.endOffset,i)-e.offset;return r<=s.rangeExpansionBytes&&n<=s.maxMergedBytes}function Pa(e){e.get(k.logicalRanges,"count"),e.get(k.requestedBytes,"count"),e.get(k.rangeBatches,"count"),e.get("Logical Ranges Batched","count"),e.get(k.transportRanges,"count"),e.get(k.coalescedRanges,"count"),e.get(k.transportBytes,"count"),e.get(k.completedTransportRanges,"count"),e.get(k.responseBytes,"count"),e.get(k.networkTimeMs,"time"),e.get(k.overfetchBytes,"count"),e.get(k.fullResponseFallbacks,"count"),e.get(k.failedTransportRanges,"count"),e.get(k.abortedLogicalRanges,"count")}function Lr(e){return e.reduce((t,s)=>t+s.length,0)}function ff(e){return e instanceof ArrayBuffer?{arrayBuffer:e}:e}function wa(e,t,s,i){return{...e,signal:i,headers:{...df(e?.headers),Range:`bytes=${t}-${t+s-1}`}}}function df(e){return e?e instanceof Headers?Object.fromEntries(e.entries()):Array.isArray(e)?Object.fromEntries(e):e:{}}function mf(e){let t=e?.match(/^bytes \*\/(\d+)$/);return t?Number(t[1]):null}function pf(e){let t=e?.match(/^bytes (\d+)-(\d+)\/(\d+|\*)$/);if(!t)return null;let s=Number(t[1]),i=Number(t[2]),r=t[3]==="*"?void 0:Number(t[3]);return!Number.isSafeInteger(s)||!Number.isSafeInteger(i)||s>i||r!==void 0&&!Number.isSafeInteger(r)?null:{offset:s,endOffset:i,sourceByteLength:r}}function gf(e){let t=new AbortController,s=()=>t.abort();return e?.aborted?t.abort():e?.addEventListener("abort",s,{once:!0}),{signal:t.signal,abort:()=>t.abort(),removeAbortListener:()=>e?.removeEventListener("abort",s)}}async function _f(e){await e.body?.cancel().catch(()=>{})}function Xe(){return globalThis.performance?.now()??Date.now()}function Ta(){if(typeof DOMException<"u")return new DOMException("Request aborted","AbortError");let e=new Error("Request aborted");return e.name="AbortError",e}var gt={};cr(gt,{dirname:()=>xf,filename:()=>Mf,join:()=>yf,resolve:()=>Sf});function Ra(){if(typeof process<"u"&&typeof process.cwd<"u")return process.cwd();let e=window.location?.pathname;return e?.slice(0,e.lastIndexOf("/")+1)||""}function Mf(e){let t=e?e.lastIndexOf("/"):-1;return t>=0?e.substr(t+1):e}function xf(e){let t=e?e.lastIndexOf("/"):-1;return t>=0?e.substr(0,t):""}function yf(...e){return e=e.map((s,i)=>(i&&(s=s.replace(new RegExp("^/"),"")),i!==e.length-1&&(s=s.replace(new RegExp("/$"),"")),s)),e.join("/")}function Sf(...e){let t=[];for(let n=0;n<e.length;n++)t[n]=e[n];let s="",i=!1,r;for(let n=t.length-1;n>=-1&&!i;n--){let o;n>=0?o=t[n]:(r===void 0&&(r=Ra()),o=r),o.length!==0&&(s=`${o}/${s}`,i=o.charCodeAt(0)===$e)}return s=vf(s,!i),i?`/${s}`:s.length>0?s:"."}var $e=47,Gr=46;function vf(e,t){let s="",i=-1,r=0,n,o=!1;for(let a=0;a<=e.length;++a){if(a<e.length)n=e.charCodeAt(a);else{if(n===$e)break;n=$e}if(n===$e){if(!(i===a-1||r===1))if(i!==a-1&&r===2){if(s.length<2||!o||s.charCodeAt(s.length-1)!==Gr||s.charCodeAt(s.length-2)!==Gr){if(s.length>2){let h=s.length-1,c=h;for(;c>=0&&s.charCodeAt(c)!==$e;--c);if(c!==h){s=c===-1?"":s.slice(0,c),i=a,r=0,o=!1;continue}}else if(s.length===2||s.length===1){s="",i=a,r=0,o=!1;continue}}t&&(s.length>0?s+="/..":s="..",o=!0)}else{let h=e.slice(i+1,a);s.length>0?s+=`/${h}`:s=h,o=!1}i=a,r=0}else n===Gr&&r!==-1?++r:r=-1}return s}var Me=class{handle;size;bigsize;url;constructor(t){this.handle=t instanceof ArrayBuffer?new Blob([t]):t,this.size=t instanceof ArrayBuffer?t.byteLength:t.size,this.bigsize=BigInt(this.size),this.url=t instanceof File?t.name:""}async close(){}async stat(){return{size:this.handle.size,bigsize:BigInt(this.handle.size),isDirectory:!1}}async read(t,s,i){if(i?.aborted)throw new Error("Request aborted");let r=await this.handle.slice(Number(t),Number(t)+Number(s)).arrayBuffer();if(i?.aborted)throw new Error("Request aborted");return r}};var ii=class{url;fetchFunction;fetchOptions;consistency;identityHints;countedFailures=new WeakSet;telemetry={requestedBytes:0,downloadedBytes:0,requestCount:0,networkTimeMs:0,abortCount:0,errorCount:0};constructor(t,s){Rf(s.byteLength),this.url=t,this.fetchFunction=s.fetch||((i,r)=>globalThis.fetch(i,r)),this.fetchOptions=s.fetchOptions?{...s.fetchOptions,headers:new Headers(s.fetchOptions.headers)}:void 0,this.consistency=s.consistency||"best-effort",this.identityHints={byteLength:s.byteLength,etag:ni(s.etag),lastModified:ni(s.lastModified)}}getInitialIdentity(){let{byteLength:t,etag:s,lastModified:i}=this.identityHints;return t!==void 0&&(s!==void 0||i!==void 0)?ri(t,s,i):t===0&&this.consistency==="best-effort"?ri(0):null}getTelemetry(){return Object.freeze({...this.telemetry})}trackFailure(t){if(typeof t=="object"&&t!==null){if(this.countedFailures.has(t))return;this.countedFailures.add(t)}Oa(t)?this.telemetry.abortCount++:this.telemetry.errorCount++}async requestRange(t,s,i,r){let n=ei(),o=Cf(i,this.fetchOptions?.signal);this.telemetry.requestCount++,this.telemetry.requestedBytes+=s;try{let a=await this.fetchFunction(this.url,Ef(this.fetchOptions,t,s,o.signal));if(wf(a,t,s,r))return await this.readEmptyIdentityProbe(a,n);if(a.status!==206)throw await si(a),new Error(`HTTP byte-range request expected 206, received ${a.status}`);let h=await Tf(a),c=Ca(a,h.byteLength),l=Ia(r,c,this.identityHints,this.consistency)||Pf(h,t,s);if(l)throw await si(a),new Error(l);let u=await a.arrayBuffer();if(this.telemetry.downloadedBytes+=u.byteLength,u.byteLength!==s)throw new Error(`HTTP byte-range response contained ${u.byteLength} bytes; expected ${s}`);return{arrayBuffer:u,identity:Aa(r,c,this.identityHints),status:a.status,transportBytes:u.byteLength,networkTimeMs:ei()-n}}catch(a){throw(r===null||!Oa(a))&&this.trackFailure(a),a}finally{o.removeAbortListeners(),this.telemetry.networkTimeMs+=ei()-n}}async readEmptyIdentityProbe(t,s){let i=Ca(t,0),r=Ia(null,i,this.identityHints,this.consistency);if(await si(t),r)throw new Error(r);return{arrayBuffer:new ArrayBuffer(0),identity:Aa(null,i,this.identityHints),status:t.status,transportBytes:0,networkTimeMs:ei()-s}}};function Ef(e,t,s,i){let r=new Headers(e?.headers);return r.set("Range",`bytes=${t}-${t+s-1}`),{...e,method:"GET",body:void 0,headers:r,signal:i}}function wf(e,t,s,i){return e.status===416&&i===null&&t===0&&s===1&&/^bytes \*\/0$/i.test(e.headers.get("Content-Range")||"")}async function Tf(e){try{return bf(e.headers.get("Content-Range"))}catch(t){throw await si(e),t}}function bf(e){let t=e?.match(/^bytes (\d+)-(\d+)\/(\d+)$/);if(!t)throw new Error("HTTP byte-range response has an invalid Content-Range header");return{offset:Number(t[1]),endOffset:Number(t[2]),byteLength:Number(t[3])}}function Ca(e,t){return ri(t,ni(e.headers.get("ETag")),ni(e.headers.get("Last-Modified")))}function Aa(e,t,s){return e||ri(t.byteLength,t.etag??s.etag,t.lastModified??s.lastModified)}function Pf(e,t,s){return!Number.isSafeInteger(e.offset)||!Number.isSafeInteger(e.endOffset)||!Number.isSafeInteger(e.byteLength)||e.offset<0||e.endOffset<e.offset||e.endOffset>=e.byteLength?"HTTP byte-range response has invalid range bounds":e.offset!==t||e.endOffset!==t+s-1?"HTTP byte-range response does not match the requested range":null}function Ia(e,t,s,i){let r=e?.byteLength??s.byteLength;if(r!==void 0&&t.byteLength!==r)return"HTTP file length changed while the file was open";let n=e?.etag??s.etag,o=e?.lastModified??s.lastModified;return n?t.etag?n===t.etag?null:"HTTP file ETag changed while the file was open":i==="strict"?"HTTP byte-range response is missing the pinned ETag":o&&t.lastModified&&o!==t.lastModified?"HTTP file Last-Modified value changed while the file was open":null:o?t.lastModified&&o!==t.lastModified?"HTTP file Last-Modified value changed while the file was open":i==="strict"&&!t.lastModified?"HTTP byte-range response is missing the pinned Last-Modified value":null:i==="strict"&&!t.etag&&!t.lastModified?"HTTP byte-range response does not provide an ETag or Last-Modified validator":null}function ri(e,t,s){return Object.freeze({byteLength:e,etag:t,lastModified:s})}function Rf(e){if(e!==void 0&&(!Number.isSafeInteger(e)||e<0))throw new Error("HttpFile byteLength must be a non-negative safe integer")}async function si(e){await e.body?.cancel().catch(()=>{})}function ni(e){return e||void 0}function ei(){return globalThis.performance?.now()??Date.now()}function Oa(e){return e instanceof Error&&e.name==="AbortError"||e instanceof Error&&/aborted/i.test(e.message)}function Cf(...e){let t=new AbortController,s=[...new Set(e.filter(r=>!!r))],i=()=>t.abort();for(let r of s)r.aborted?t.abort():r.addEventListener("abort",i,{once:!0});return{signal:t.signal,removeAbortListeners:()=>{for(let r of s)r.removeEventListener("abort",i)}}}var Qe=class e{handle;url;transport;rangeScheduler;schedulerIsolationKey={};suppliedByteLength;identity;openPromise=null;closed=!1;constructor(t,s={}){this.handle=t,this.url=t,this.transport=new ii(t,s),this.rangeScheduler=s.rangeScheduler||new ti({batchDelayMs:0,...s.rangeSchedulerProps}),this.suppliedByteLength=s.byteLength,this.identity=this.transport.getInitialIdentity()}static async open(t,s={},i){let r=new e(t,s);return await r.open(i),r}async open(t){if(this.assertOpen(),t?.aborted){let s=oi();throw this.transport.trackFailure(s),s}return await this.getIdentity(t),this}get size(){return this.identity?.byteLength??this.suppliedByteLength??0}get bigsize(){return BigInt(this.size)}getIdentitySnapshot(){return this.identity}getTelemetry(){return this.transport.getTelemetry()}async close(){this.closed=!0}async stat(){this.assertOpen();let t=await this.getIdentity();return{size:t.byteLength,bigsize:BigInt(t.byteLength),isDirectory:!1}}async read(t=0,s=0,i){if(this.assertOpen(),i?.aborted){let o=oi();throw this.transport.trackFailure(o),o}let r=await this.getIdentity(i),n=Na(t);if(If(n,s,r.byteLength),s===0)return new ArrayBuffer(0);try{return await this.rangeScheduler.scheduleRequest({sourceId:this.url,isolationKey:this.schedulerIsolationKey,offset:n,length:s,signal:i,fetchRange:this.fetchScheduledRange})}catch(o){throw this.transport.trackFailure(o),o}}async fetchRange(t,s,i){let r=Na(t),n=await this.read(r,s,i),o=Af(this.identity,r,s);return new Response(n,{status:206,headers:o})}fetchScheduledRange=async(t,s,i)=>{let r=await this.getIdentity(i),n=await this.transport.requestRange(t,s,i,r);return{arrayBuffer:n.arrayBuffer,status:n.status,transportBytes:n.transportBytes,networkTimeMs:n.networkTimeMs}};getIdentity(t){if(this.identity)return Promise.resolve(this.identity);if(!this.openPromise){let i=this.probeIdentity().catch(r=>{throw this.openPromise===i&&(this.openPromise=null),r});this.openPromise=i}return Of(this.openPromise,t).catch(s=>{throw this.transport.trackFailure(s),s})}async probeIdentity(){try{let t=await this.transport.requestRange(0,1,void 0,null);return this.identity=t.identity,t.identity}catch(t){throw this.transport.trackFailure(t),t}}assertOpen(){if(this.closed)throw new Error("HttpFile is closed")}};function Af(e,t,s){let i=new Headers;return s>0&&e&&i.set("Content-Range",`bytes ${t}-${t+s-1}/${e.byteLength}`),e?.etag&&i.set("ETag",e.etag),e?.lastModified&&i.set("Last-Modified",e.lastModified),i}function Na(e){let t=Number(e);if(!Number.isSafeInteger(t)||t<0)throw new Error("HTTP byte-range offset must be a non-negative safe integer");return t}function If(e,t,s){if(!Number.isSafeInteger(t)||t<0)throw new Error("HTTP byte-range length must be a non-negative safe integer");if(e+t>s)throw new Error("HTTP byte range extends beyond the end of the file")}function oi(){if(typeof DOMException<"u")return new DOMException("Request aborted","AbortError");let e=new Error("Request aborted");return e.name="AbortError",e}function Of(e,t){return t?t.aborted?Promise.reject(oi()):new Promise((s,i)=>{let r=()=>{t.removeEventListener("abort",r),i(oi())};t.addEventListener("abort",r,{once:!0}),e.then(n=>{t.removeEventListener("abort",r),s(n)},n=>{t.removeEventListener("abort",r),i(n)})}):e}function ai(e={}){if(e.coordinateEpoch!==void 0&&!Number.isFinite(e.coordinateEpoch))throw new Error("Spatial reference coordinate epoch must be a finite decimal year");return Object.freeze({crs:La(e.crs||{state:"absent",provenance:"unknown"}),vertical:e.vertical?La(e.vertical):void 0,coordinateEpoch:e.coordinateEpoch,coordinateFrame:e.coordinateFrame||"unknown",coordinateOrder:Object.freeze([...e.coordinateOrder||[]]),units:e.units?Object.freeze([...e.units]):void 0})}function Ke(e){if(typeof e=="object")return"projjson";let t=e.trim();return/^[A-Z][A-Z0-9_]*\s*[\[(]/i.test(t)?"wkt":/(?:^|\s)\+?proj=/i.test(t)?"proj-string":/^[A-Z][A-Z0-9._-]*(?::[A-Z0-9._-]+)+$/i.test(t)||/^urn:ogc:def:crs:/i.test(t)||/^https?:\/\//i.test(t)||/^[A-Z][A-Z0-9._-]*$/i.test(t)?"identifier":"opaque"}function La(e){return e.state==="explicit"||e.state==="default"?Object.freeze({...e,definition:Ga(e.definition),alternatives:e.alternatives?Object.freeze(e.alternatives.map(t=>Object.freeze({...t,definition:Ga(t.definition)}))):void 0}):Object.freeze({...e})}function Ga(e){return typeof e=="string"?e:zr(e)}function zr(e){return Array.isArray(e)?Object.freeze(e.map(t=>zr(t))):e&&typeof e=="object"?Object.freeze(Object.fromEntries(Object.entries(e).map(([t,s])=>[t,zr(s)]))):e}var hi=class{item;previous;next;constructor(t,s,i){this.item=t,this.previous=s,this.next=i}};var ci=class{head=null;tail=null;_length=0;get length(){return this._length}add(t){let s=new hi(t,this.tail,null);return this.tail?(this.tail.next=s,this.tail=s):(this.head=s,this.tail=s),++this._length,s}remove(t){t&&(t.previous&&t.next?(t.previous.next=t.next,t.next.previous=t.previous):t.previous?(t.previous.next=null,this.tail=t.previous):t.next?(t.next.previous=null,this.head=t.next):(this.head=null,this.tail=null),t.next=null,t.previous=null,--this._length)}splice(t,s){t!==s&&(this.remove(s),this._insert(t,s))}_insert(t,s){let i=t.next;t.next=s,this.tail===t?this.tail=s:i.previous=s,s.next=i,s.previous=t,++this._length}};var xe=class{_list;_sentinel;_trimTiles;constructor(){this._list=new ci,this._sentinel=this._list.add("sentinel"),this._trimTiles=!1}reset(){this._list.splice(this._list.tail,this._sentinel)}touch(t){let s=t._cacheNode;s&&this._list.splice(this._sentinel,s)}add(t,s,i){s._cacheNode||(s._cacheNode=this._list.add(s),i&&i(t,s))}unloadTile(t,s,i){let r=s._cacheNode;r&&(this._list.remove(r),s._cacheNode=null,i&&i(t,s))}unloadTiles(t,s){let i=this._trimTiles;this._trimTiles=!1;let r=this._list,n=this._sentinel,o=r.head;for(;o!==n&&(t.gpuMemoryUsageInBytes>t.cacheBytes||i);){let a=o.item;o=o.next,this.unloadTile(t,a,s)}}trim(){this._trimTiles=!0}};function li(e,t){bt(e),bt(t);let{rtcCenter:s,gltfUpAxis:i}=t,{computedTransform:r,boundingVolume:{center:n}}=e,o=new I(r);switch(s&&o.translate(s),i){case"Z":break;case"Y":let f=new I().rotateX(Math.PI/2);o=o.multiplyRight(f);break;case"X":let m=new I().rotateY(-Math.PI/2);o=o.multiplyRight(m);break;default:break}t.isQuantized&&o.translate(t.quantizedVolumeOffset).scale(t.quantizedVolumeScale);let a=new p(n);t.cartesianModelMatrix=o,t.cartesianOrigin=a;let h=P.WGS84.cartesianToCartographic(a,new p),l=P.WGS84.eastNorthUpToFixedFrame(a).invert();t.cartographicModelMatrix=l.multiplyRight(o),t.cartographicOrigin=h;let u=Lf(t);u&&(t.cartesianModelMatrix=new I(o).multiplyRight(u.matrix),t.cartographicModelMatrix.multiplyRight(u.matrix),u.matrix=I.IDENTITY),t.coordinateSystem||(t.modelMatrix=t.cartographicModelMatrix)}var Nf=1e6**2;function Lf(e){let t=e.gltf;if(!t)return null;let s=typeof t.scene=="number"?t.scene:0,r=t.scenes?.[s]?.nodes?.[0];if(!r?.matrix)return null;let n=r.matrix;return n[12]*n[12]+n[13]*n[13]+n[14]*n[14]<=Nf?null:r}var za=new p,qr=new p,Gf=1e-5,zf=1e-7,Br=new K([new Y,new Y,new Y,new Y,new Y,new Y]);function ui(e,t,s={}){let{cameraUp:i,height:r}=e,n=e.cameraDirection,{metersPerUnit:o}=e.distanceScales,a=Je(e,e.center),h=P.WGS84.eastNorthUpToFixedFrame(a),c=e.unprojectPosition(e.cameraPosition),l=P.WGS84.cartographicToCartesian(c,new p),u;if(n)u=new p(h.transformAsVector(new p(n).scale(o))).normalize();else{let w=e.getFrustumPlanes().near,T=Dr(w,e.cameraPosition),b=Je(e,T);u=new p(b).subtract(l).normalize()}let f=new p(h.transformAsVector(new p(i).scale(o))).normalize();qf(e);let m=e.constructor,{longitude:d,latitude:g,width:_,bearing:M,zoom:y}=e,E=new m({longitude:d,latitude:g,height:r,width:_,bearing:M,zoom:y,pitch:0});return{camera:{position:l,direction:u,up:f,cartographicPosition:c,verticalFieldOfView:Number.isFinite(e.fovy)&&Number(e.fovy)>0?Number(e.fovy)*Math.PI/180:Math.PI/3,timeSinceMovement:s.timeSinceCameraMovement??Number.POSITIVE_INFINITY},viewport:e,topDownViewport:E,height:r,cullingVolume:Br,clippingPlanes:e.clippingPlanes,frameNumber:t,sseDenominator:1.15,dynamicScreenSpaceErrorDensity:0}}function qa(e,t,s,i){let r=Array.from(t),n=Array.from(s),o=e?r.length!==e.position.length||r.some((c,l)=>Math.abs(c-e.position[l])>Gf):!1,a=e?n.length!==e.direction.length||n.some((c,l)=>Math.abs(c-e.direction[l])>zf):!1,h=o||a?i:e?.lastMovementTime??Number.NEGATIVE_INFINITY;return{state:{position:r,direction:n,lastMovementTime:h},timeSinceMovement:Math.max((i-h)/1e3,0)}}function Ba(e,t,s){if(s===0||e.length<=s)return[e,[]];let i=[],{longitude:r,latitude:n}=t.viewport;for(let[c,l]of e.entries()){let[u,f]=l.header.mbs,m=Math.abs(r-u),d=Math.abs(n-f),g=Math.sqrt(d*d+m*m);i.push([c,g])}let o=i.sort((c,l)=>c[1]-l[1]),a=[];for(let c=0;c<s;c++)a.push(e[o[c][0]]);let h=[];for(let c=s;c<o.length;c++)h.push(e[o[c][0]]);return[a,h]}function qf(e){let t=e.getFrustumPlanes(),s=Dr(t.near,e.cameraPosition),i=Je(e,s),r=Je(e,e.cameraPosition,qr),n=0;Br.planes[n++].fromPointNormal(i,za.copy(i).subtract(r));for(let o in t){if(o==="near")continue;let a=t[o],h=Dr(a,s,qr),c=Je(e,h,qr);Br.planes[n++].fromPointNormal(c,za.copy(i).subtract(c))}}function Dr(e,t,s=new p){let i=e.normal.dot(t);return s.copy(e.normal).scale(e.distance-i).add(t),s}function Je(e,t,s=new p){let i=e.unprojectPosition(t);return P.WGS84.cartographicToCartesian(i,s)}var Va=new p,Bf=new p,ie=new p,Da=new p,ts=new p,Fa=new p,Ua=new p,ka=new p,fi=new yt,Df=new p(0,0,1);function ja(e,t){e._updateTransform(t)}function Wa(e,t,s){if(!Number.isFinite(s.dynamicScreenSpaceErrorDensity)||s.dynamicScreenSpaceErrorDensity<=0)return 0;let i=Vf(e),r=i.region?jf(i.region,t):Wf(e,i,t);if(!r)return 0;let n=Ue(s.dynamicScreenSpaceErrorHeightFalloff,0,1),o=r.minimumHeight+(r.maximumHeight-r.minimumHeight)*n,a=r.maximumHeight-o,h=a>0?Ue((r.cameraHeight-o)/a,0,1):r.cameraHeight>=r.maximumHeight?1:0,l=(1-Ue(Math.abs(r.cameraDirection.dot(r.upDirection)),0,1))*(1-h);return s.dynamicScreenSpaceErrorDensity*l}function Ff(e,t){let s=e*t;return 1-Math.exp(-(s*s))}function Uf(e,t,s){return t<=0||s<=0||!Number.isFinite(t)||!Number.isFinite(s)?0:Ff(e,t)*s}function Ha(e,t,s,i=1){let r=e.tileset,n=e.parent&&e.parent.lodMetricValue||e.lodMetricValue,o=s?n:e.lodMetricValue;if(o===0)return 0;let{viewDistanceScale:a}=r.options,h=a||1,c=Number.isFinite(i)?Math.max(i,0):1,l=kf(o,t,h,c);if(l!==null)return l;let u=Math.max(e._distanceToCamera,1e-7),{height:f,sseDenominator:m}=t,d=o*f*c*h/(u*m);return r.options.dynamicScreenSpaceError&&!t.viewport.orthographic&&(d-=Uf(u,t.dynamicScreenSpaceErrorDensity,r.options.dynamicScreenSpaceErrorFactor)),d}function kf(e,t,s,i){let r=t.viewport;if(!r?.orthographic)return null;let n=r.metersPerPixel;return!Number.isFinite(n)||!n||n<=0?null:e*s*i/n}function Vf(e){return e.header.content?.boundingVolume||e.header.boundingVolume}function jf(e,t){let s=Va.copy(t.camera.position).normalize(),i=ts.copy(t.camera.direction).normalize();return{cameraHeight:t.camera.cartographicPosition[2],minimumHeight:e[4],maximumHeight:e[5],cameraDirection:i,upDirection:s}}function Wf(e,t,s){let i=Hf(t,ie);if(i===null)return null;let r=new I(e.computedTransform).invert(),n=e.tileset.ellipsoid;if(Math.hypot(ie[0],ie[1],ie[2])>n.minimumRadius){let a=n.cartesianToCartographic(ie,Bf),h=Va.copy(s.camera.position).normalize(),c=ts.copy(s.camera.direction).normalize();return{cameraHeight:s.camera.cartographicPosition[2],minimumHeight:0,maximumHeight:a[2]*2,cameraDirection:c,upDirection:h}}return r.transformAsPoint(s.camera.position,Da),r.transformAsVector(s.camera.direction,ts),ts.normalize(),{cameraHeight:Da[2],minimumHeight:ie[2]-i,maximumHeight:ie[2]+i,cameraDirection:ts,upDirection:Df}}function Hf(e,t){if(e.box){let s=e.box;return t.set(s[0],s[1],s[2]),Yf(s)}if(e.sphere){let s=e.sphere;return t.set(s[0],s[1],s[2]),s[3]}return null}function Yf(e){return e.length===10?(fi.fromArray(e,6),Fa.set(e[3],0,0).transformByQuaternion(fi),Ua.set(0,e[4],0).transformByQuaternion(fi),ka.set(0,0,e[5]).transformByQuaternion(fi),Math.abs(Fa[2])+Math.abs(Ua[2])+Math.abs(ka[2])):Math.abs(e[5])+Math.abs(e[8])+Math.abs(e[11])}var et={UNLOADED:0,LOADING:1,PROCESSING:2,READY:3,EXPIRED:4,FAILED:5},J;(function(e){e[e.ADD=1]="ADD",e[e.REPLACE=2]="REPLACE"})(J||(J={}));var Lt;(function(e){e.EMPTY="empty",e.SCENEGRAPH="scenegraph",e.POINTCLOUD="pointcloud",e.MESH="mesh"})(Lt||(Lt={}));var at;(function(e){e.I3S="I3S",e.TILES3D="TILES3D"})(at||(at={}));var ye;(function(e){e.GEOMETRIC_ERROR="geometricError",e.MAX_SCREEN_THRESHOLD="maxScreenThreshold"})(ye||(ye={}));var Ya={NOT_COMPUTED:-1,USE_OPTIMIZATION:1,SKIP_OPTIMIZATION:0};var Za=1e4,Zf=1e4,Xf=1e8,$f=new tt,Xa=new p,$a=new p,Fr=new p,di=new p;function Ur(e,t,s){return e+(t-e)*s}function Qa(e,t){let s=e instanceof tt?e:e.getBoundingSphere($f),{center:i,radius:r}=s;Xa.copy(i).subtract(t.position);let n=Math.max(Xa.dot(t.direction),0);return $a.copy(t.direction).scale(n).add(t.position),Fr.copy($a).subtract(i),Fr.magnitude()<=r||(di.copy(Fr).normalize().scale(r).add(i).subtract(t.position),di.magnitude()===0)?0:(di.normalize(),Math.min(Math.max(1-di.dot(t.direction),0),1))}function Ka(e,t,s,i){return!Number.isFinite(i)||i<=0||i>.5?!1:e>s?!0:t!==void 0&&t>s}function Ja(e){let t=Number.isFinite(e.foveatedConeSize)?Math.min(Math.max(e.foveatedConeSize,0),1):1,s=e.refinement===J.REPLACE;if(s&&!e.skipLevelOfDetail||!e.foveatedScreenSpaceError||t>=1||s&&e.skipLevelOfDetail&&e.priorityProgressiveResolution)return!1;let i=Number.isFinite(e.verticalFieldOfView)&&e.verticalFieldOfView>0?e.verticalFieldOfView:Math.PI/3,r=1-Math.cos(i*.5),n=t*r;if(e.foveatedFactor<=n||r<=n)return!1;let o=Math.min(Math.max((e.foveatedFactor-n)/(r-n),0),1),h=(typeof e.interpolationCallback=="function"?e.interpolationCallback:Ur)(e.minimumScreenSpaceErrorRelaxation,e.maximumScreenSpaceError,o),c=Number.isFinite(h)?Math.min(Math.max(h,0),e.maximumScreenSpaceError):0,l=e.screenSpaceError===0&&e.parentScreenSpaceError!==void 0?e.parentScreenSpaceError*.5:e.screenSpaceError;return e.maximumScreenSpaceError-c<=l}function th(e,t,s){return e&&Number.isFinite(t)&&Number.isFinite(s)&&s>0&&t<s}function eh(e){let t=e.rootScreenSpaceError>0?Math.min(Math.max(e.reverseScreenSpaceError/e.rootScreenSpaceError,0),1):0,s=Math.floor(t*(Za-1)),i=Number.isFinite(e.foveatedFactor)?Math.min(Math.max(e.foveatedFactor,0),1):0,r=Math.floor(i*(Za-1))*Zf;return(e.priorityProgressiveResolution?0:Xf)+r+s}var Qf="EPSG:4326",Kf="EPSG:4978";function Jf(e){let t=e.trim().toUpperCase(),s=t.match(/(?:\/DEF\/CRS\/|URN:OGC:DEF:CRS:)([A-Z0-9_-]+)(?:\/|::)(?:[^/:]*[/:])?([A-Z0-9_.-]+)$/);return s?`${s[1]}:${s[2]}`:t}function kt(e){if(typeof e=="string"){let s=Jf(e);return s===Kf||/^GEOCCS\s*[\[(]/.test(s)?"geocentric":s===Qf||s==="EPSG:4490"||s==="EPSG:4979"||s==="OGC:CRS84"||s.includes("+PROJ=LONGLAT")||s.includes("+PROJ=LATLONG")||/^(?:GEOGCS|GEOGCRS|GEOGRAPHICCRS|GEOGRAPHIC2DCRS|GEOGRAPHIC3DCRS)\s*[\[(]/.test(s)?"geographic":/^(?:GEODCRS|GEODETICCRS)\s*[\[(]/.test(s)?/CS\s*[\[(]\s*CARTESIAN/.test(s)?"geocentric":"geographic":"projected"}let t=e;return t.type==="BoundCRS"&&t.source_crs?kt(t.source_crs):t.type==="CompoundCRS"&&t.components?.[0]?kt(t.components[0]):String(t.type).includes("Projected")?"projected":String(t.type).includes("Geographic")?"geographic":String(t.type).includes("Geodetic")?t.coordinate_system?.subtype==="Cartesian"?"geocentric":"geographic":"projected"}function vt(e,t={}){let s=t.sourceCrs!==void 0,i=t.sourceCrs||e.sourceCrs,r=t.outputCoordinates||"auto",n=t.targetCrs||(r==="ecef"?"EPSG:4978":void 0),o=t.targetHeightReference||"native",a=e.verticalUnitScale??1,h=e.elevationUnitScale??1,c=e.elevationOffset||0,l=e.elevationMode==="onTheGround"||e.elevationMode==="relativeToGround"||e.elevationMode==="relativeToScene",u=e.elevationMode==="relativeToScene"?!!t.sceneElevationProvider:!l||!!t.terrainElevationProvider,f=a!==1||h!==1||e.elevationMode!==void 0&&(l||e.elevationMode==="absoluteHeight"&&c!==0),m=o!=="native"&&o!==e.heightReference,d=!!n||o!=="native"||r!=="auto"||f,g=r!=="target-crs"||!!n,_=!m||(e.heightReference||"unknown")!=="unknown",M=Number.isFinite(a)&&a>0&&Number.isFinite(h)&&h>0,y=!!i&&d&&g&&_&&M&&u&&r!=="local-enu",E=s?"caller-override":e.provenance||"unknown",w=s&&i?kt(i):e.coordinateFrame,T=s?"explicit":e.sourceCrsState||(i?E==="format-default"?"default":"explicit":"absent"),b=ai({crs:i?{state:T==="default"?"default":"explicit",definition:i,representation:!s&&e.sourceCrsRepresentation||Ke(i),provenance:E,alternatives:s?void 0:e.sourceCrsAlternatives}:{state:T==="unknown"?"unknown":"absent",provenance:E},vertical:e.verticalCrs?{state:"explicit",definition:e.verticalCrs,representation:Ke(e.verticalCrs),provenance:e.provenance||"metadata"}:void 0,coordinateEpoch:t.coordinateEpoch??e.coordinateEpoch,coordinateFrame:w,coordinateOrder:ed(e.axisOrder),units:s?void 0:e.units}),R=kr(b.crs),A=b.vertical?kr(b.vertical):void 0,C=n?td(n):void 0;return Object.freeze({...b,sourceCrs:R,verticalCrs:A,verticalUnitScale:a,coordinateEpoch:t.coordinateEpoch??e.coordinateEpoch,heightReference:e.heightReference||"unknown",elevationMode:e.elevationMode,elevationOffset:e.elevationOffset,elevationUnit:e.elevationUnit,elevationUnitScale:h,coordinateFrame:w||"unknown",axisOrder:e.axisOrder||"unknown",provenance:E,targetCrs:C,targetHeightReference:o,outputCoordinates:r,status:d?y?"transformable":"unresolved":"native",warnings:Object.freeze([...e.warnings||[]])})}function es(e,t={}){return vt({sourceCrs:e?.sourceCrs,sourceCrsState:e?.crs.state,sourceCrsRepresentation:e?.crs.state==="explicit"||e?.crs.state==="default"?e.crs.representation:void 0,sourceCrsAlternatives:e?.crs.state==="explicit"||e?.crs.state==="default"?e.crs.alternatives:void 0,verticalCrs:e?.verticalCrs,units:e?.units,verticalUnitScale:e?.verticalUnitScale,coordinateEpoch:e?.coordinateEpoch,heightReference:e?.heightReference,elevationMode:e?.elevationMode,elevationOffset:e?.elevationOffset,elevationUnit:e?.elevationUnit,elevationUnitScale:e?.elevationUnitScale,coordinateFrame:e?.coordinateFrame,axisOrder:e?.axisOrder,provenance:e?.provenance,warnings:e?.warnings},t)}function kr(e){return e.state==="explicit"||e.state==="default"?e.definition:void 0}function td(e){let t=ai({crs:{state:"explicit",definition:e,representation:Ke(e),provenance:"caller-override"}}),s=kr(t.crs);if(!s)throw new Error("Failed to normalize a known target CRS definition");return s}function ed(e){switch(e){case"xy":return["x","y"];case"yx":return["y","x"];case"xyz":return["x","y","z"];default:return[]}}function mi(e){if(e.status!=="transformable"&&e.status!=="transformed")throw new Error("Only a transformable spatial reference can be marked as transformed");return Object.freeze({...e,status:"transformed"})}function pi(e){return!!(e&&typeof e=="object"&&"initialize"in e&&"getRootTileset"in e&&"initializeTileHeaders"in e&&"loadTileContent"in e)}var st=1024*1024,Zr=512*st,Xr=512*st,sd=32*st,id=st;function ss(e,t){if(!Number.isFinite(e)||e<0)throw new Error(`${t} must be a finite number greater than or equal to 0`);return e}function sh(e,t){let s=e.cacheBytes??(e.maximumMemoryUsage!==void 0?e.maximumMemoryUsage*st:t);return ss(s,"cacheBytes")}function ih(e,t){let s=e.maximumCacheOverflowBytes??(e.memoryCacheOverflow!==void 0?e.memoryCacheOverflow*st:t);return ss(s,"maximumCacheOverflowBytes")}var Vr={description:"",ellipsoid:P.WGS84,modelMatrix:new I,throttleRequests:!0,maxRequests:64,cacheBytes:Zr,maximumCacheOverflowBytes:Xr,maximumMemoryUsage:Zr/st,memoryCacheOverflow:Xr/st,maximumTilesSelected:0,debounceTime:0,onTileLoad:()=>{},onTileUnload:()=>{},onTileError:()=>{},onSourceError:()=>{},onTilesetError:()=>{},onTraversalComplete:e=>e,onUpdate:()=>{},contentLoader:void 0,viewDistanceScale:1,progressiveResolutionHeightFraction:.3,foveatedScreenSpaceError:!0,foveatedConeSize:.1,foveatedMinimumScreenSpaceErrorRelaxation:0,foveatedInterpolationCallback:Ur,foveatedTimeDelay:.2,maximumScreenSpaceError:8,skipLevelOfDetail:!1,baseScreenSpaceError:1024,skipScreenSpaceErrorFactor:16,skipLevels:1,immediatelyLoadDesiredLevelOfDetail:!1,dynamicScreenSpaceError:!0,dynamicScreenSpaceErrorDensity:2e-4,dynamicScreenSpaceErrorFactor:24,dynamicScreenSpaceErrorHeightFalloff:.25,memoryAdjustedScreenSpaceError:!0,loadTiles:!0,updateTransforms:!0,viewportTraversersMap:null,loadOptions:{fetch:{}},attributions:[],basePath:"",i3s:{},spatial:{}},jr="Tiles In Tileset(s)",Wr="Tiles In Memory",rh="Tiles In View",nh="Tiles To Render",oh="Tiles Loaded",Hr="Tiles Loading",ah="Tiles Unloaded",hh="Failed Tile Loads",ch="Points/Vertices",Yr="Tile Memory Use",lh="Maximum Screen Space Error",gi=class{options;loadOptions;source;type;tileset;loader;url;basePath;modelMatrix;ellipsoid;lodMetricType;lodMetricValue;refine;root=null;roots={};asset={};schema=null;schemaUri=null;groups=[];metadata=null;statistics=null;spatialReference=vt({});description="";properties;extras=null;attributions={};credits={};stats;contentFormats;cartographicCenter=null;cartesianCenter=null;zoom=1;boundingVolume=null;dynamicScreenSpaceErrorComputedDensity=0;gpuMemoryUsageInBytes=0;memoryAdjustedScreenSpaceError=0;_cacheBytes=Zr;_maximumCacheOverflowBytes=Xr;_frameNumber=0;_tiles={};_pendingCount=0;selectedTiles=[];traverseCounter=0;geometricError=0;lastUpdatedVieports=null;_requestedTiles=[];_emptyTiles=[];frameStateData={};_cameraMotionStates={};_deferredTraversalTimeout=null;_traverser;_cache=new xe;_requestScheduler;_heldTiles=new Set;updatePromise=null;tilesetInitializationPromise;constructor(t,s){if(!pi(t))throw new Error("Tileset3D requires a Tileset3DSource instance");let i=s||{},r=t.type===at.TILES3D,n=r?Vr.cacheBytes:sd,o=r?Vr.maximumCacheOverflowBytes:id,a=sh(i,n),h=ih(i,o);this.options={...Vr,...i,cacheBytes:a,maximumCacheOverflowBytes:h,maximumMemoryUsage:a/st,memoryCacheOverflow:h/st,memoryAdjustedScreenSpaceError:i.memoryAdjustedScreenSpaceError??r},this.loadOptions=this.options.loadOptions||{},this.source=t,this.tileset=null,this.loader=this.source.loader,this.type=this.source.type,this.url=this.source.url,this.basePath=this.source.basePath,this.modelMatrix=this.options.modelMatrix,this.ellipsoid=this.options.ellipsoid,this.lodMetricType="",this.lodMetricValue=0,this.refine="",this.contentFormats=this.source.contentFormats,this._traverser=this._initializeTraverser(),this._requestScheduler=new Ut({throttleRequests:this.options.throttleRequests,maxRequests:this.options.maxRequests}),this.memoryAdjustedScreenSpaceError=this.options.maximumScreenSpaceError,this._cacheBytes=a,this._maximumCacheOverflowBytes=h;let c=this._getSourceMetadata();c&&(this.spatialReference=es(c.spatialReference,this.options.spatial)),this.stats=new St({id:this.url}),this._initializeStats(),this.tilesetInitializationPromise=this._initializeTileSet()}destroy(){this._clearDeferredTraversal(),this.source.destroy?.(),this._destroy()}isLoaded(){return this._pendingCount===0&&this._frameNumber!==0&&this._requestedTiles.length===0}get tiles(){return Object.values(this._tiles)}get frameNumber(){return this._frameNumber}get cacheBytes(){return this._cacheBytes}set cacheBytes(t){this._cacheBytes=ss(t,"cacheBytes"),this.options.cacheBytes=this._cacheBytes,this.options.maximumMemoryUsage=this._cacheBytes/st}get maximumCacheOverflowBytes(){return this._maximumCacheOverflowBytes}set maximumCacheOverflowBytes(t){this._maximumCacheOverflowBytes=ss(t,"maximumCacheOverflowBytes"),this.options.maximumCacheOverflowBytes=this._maximumCacheOverflowBytes,this.options.memoryCacheOverflow=this._maximumCacheOverflowBytes/st}get maximumMemoryUsage(){return this.cacheBytes/st}set maximumMemoryUsage(t){this.cacheBytes=ss(t*st,"maximumMemoryUsage")}get queryParams(){let t=this.source.getTileUrl(this.url),s=t.indexOf("?");return s>=0?t.slice(s+1):""}setProps(t){let s=sh(t,this.cacheBytes),i=ih(t,this.maximumCacheOverflowBytes);this.options={...this.options,...t,cacheBytes:s,maximumCacheOverflowBytes:i,maximumMemoryUsage:s/st,memoryCacheOverflow:i/st},this._cacheBytes=s,this._maximumCacheOverflowBytes=i}getTileUrl(t){return this.source.getTileUrl(t)}hasExtension(t){return!!this.source.hasExtension?.(t)}update(t=null){this.tilesetInitializationPromise.then(()=>{!t&&this.lastUpdatedVieports?t=this.lastUpdatedVieports:this.lastUpdatedVieports=t,t&&this.doUpdate(t)})}async selectTiles(t=null){return await this.tilesetInitializationPromise,t&&(this.lastUpdatedVieports=t),this.updatePromise||(this.updatePromise=new Promise(s=>{setTimeout(()=>{this.lastUpdatedVieports&&this.doUpdate(this.lastUpdatedVieports),s(this._frameNumber),this.updatePromise=null},this.options.debounceTime)})),this.updatePromise}adjustScreenSpaceError(){this.gpuMemoryUsageInBytes<this.cacheBytes?this.memoryAdjustedScreenSpaceError=Math.max(this.memoryAdjustedScreenSpaceError/1.02,this.options.maximumScreenSpaceError):this.gpuMemoryUsageInBytes>this.cacheBytes+this.maximumCacheOverflowBytes&&(this.memoryAdjustedScreenSpaceError*=1.02)}doUpdate(t){if("loadTiles"in this.options&&!this.options.loadTiles||this.traverseCounter>0)return;let s=t instanceof Array?t:[t];this._cache.reset(),this._frameNumber++,this.traverseCounter=s.length;let i=Date.now(),r=Number.POSITIVE_INFINITY,n=[];for(let o of s){let a=o.id;this._needTraverse(a)?n.push(a):this.traverseCounter--}for(let o of s){let a=o.id;if(this.roots[a]||(this.roots[a]=this._initializeTileHeaders(this.tileset,null)),!n.includes(a))continue;let h=ui(o,this._frameNumber),c=this.roots[a],l=qa(this._cameraMotionStates[a],h.camera.position,h.camera.direction,i);this._cameraMotionStates[a]=l.state,h.camera.timeSinceMovement=l.timeSinceMovement,ja(c,this.modelMatrix),h.dynamicScreenSpaceErrorDensity=this.type===at.TILES3D&&this.options.dynamicScreenSpaceError&&!h.viewport.orthographic?Wa(c,h,this.options):0,this.dynamicScreenSpaceErrorComputedDensity=h.dynamicScreenSpaceErrorDensity,this._traverser.traverse(c,h,this.options),Object.keys(this._traverser.deferredTiles).length>0&&(r=Math.min(r,Math.max(this.options.foveatedTimeDelay-l.timeSinceMovement,0)))}Number.isFinite(r)?this._scheduleDeferredTraversal(r):this._clearDeferredTraversal()}_scheduleDeferredTraversal(t){this._clearDeferredTraversal(),this._deferredTraversalTimeout=setTimeout(()=>{this._deferredTraversalTimeout=null,this.selectTiles().catch(s=>{let i=s instanceof Error?s:new Error(String(s));this._onTilesetError(i)})},Math.max(t*1e3,0))}_clearDeferredTraversal(){this._deferredTraversalTimeout!==null&&(clearTimeout(this._deferredTraversalTimeout),this._deferredTraversalTimeout=null)}_needTraverse(t){let s=t;return this.options.viewportTraversersMap&&(s=this.options.viewportTraversersMap[t]),s===t}_onTraversalEnd(t){let s=t.viewport.id;this.frameStateData[s]||(this.frameStateData[s]={selectedTiles:[],_requestedTiles:[],_emptyTiles:[]});let i=this.frameStateData[s],r=Object.values(this._traverser.selectedTiles),[n,o]=Ba(r,t,this.options.maximumTilesSelected);i.selectedTiles=n;for(let a of o)a.unselect();i._requestedTiles=Object.values(this._traverser.requestedTiles),i._emptyTiles=Object.values(this._traverser.emptyTiles),this.traverseCounter--,!(this.traverseCounter>0)&&this._updateTiles()}_updateTiles(){let t=this.selectedTiles;this.selectedTiles=[],this._requestedTiles=[],this._emptyTiles=[];for(let n in this.frameStateData){let o=this.frameStateData[n];this.selectedTiles=this.selectedTiles.concat(o.selectedTiles),this._requestedTiles=this._requestedTiles.concat(o._requestedTiles),this._emptyTiles=this._emptyTiles.concat(o._emptyTiles)}this.selectedTiles=this.options.onTraversalComplete(this.selectedTiles);let s=new Set(this.selectedTiles.map(n=>n.id)),i=this.selectedTiles.some(n=>!n.tileDrawn),r=0;if(i){for(let n of s)this._heldTiles.add(n);for(let n of this._heldTiles){if(s.has(n))continue;let o=this._tiles[n];o&&o.contentAvailable?(o._selectedFrame=this._frameNumber,this.selectedTiles.push(o),r++):this._heldTiles.delete(n)}}else this._heldTiles=s;r>0&&setTimeout(()=>{this.selectTiles()},0);for(let n of this.selectedTiles)this._tiles[n.id]=n;this._loadTiles(),this._unloadTiles(),this._updateStats(),this._tilesChanged(t,this.selectedTiles)&&this.options.onUpdate()}_tilesChanged(t,s){if(t.length!==s.length)return!0;let i=new Set(t.map(o=>o.id)),r=new Set(s.map(o=>o.id)),n=t.some(o=>!r.has(o.id));return n=n||s.some(o=>!i.has(o.id)),n}_loadTiles(){this._requestedTiles.sort((t,s)=>t._priority-s._priority);for(let t of this._requestedTiles)t.contentUnloaded&&this._loadTile(t)}_unloadTiles(){this._cache.unloadTiles(this,(t,s)=>t._unloadTile(s)),this.options.memoryAdjustedScreenSpaceError&&this.adjustScreenSpaceError()}_updateStats(){let t=0,s=0;for(let i of this.selectedTiles)if(i.contentAvailable&&i.content){t++;let r=i.contents.length?i.contents:[i.content];for(let n of r)n.pointCount?s+=n.pointCount:s+=n.vertexCount||0}this.stats.get(rh).count=this.selectedTiles.length,this.stats.get(nh).count=t,this.stats.get(ch).count=s,this.stats.get(lh).count=this.memoryAdjustedScreenSpaceError}async _initializeTileSet(){try{let t=this.source.initialize(),s=this._getSourceMetadata();s&&this._syncSourceState(s),s?.tileset?.root&&typeof s.tileset.root.then!="function"&&!this.source.prepareTileset&&(this.root=this._initializeTileHeaders(s.tileset,null),this._applyViewState()),await t;let i=this.source.getMetadata();this._syncSourceState(i),await this.source.prepareTileset?.(this),this.root||(this.root=this._initializeTileHeaders(i.tileset,null)),this._applyViewState()}catch(t){let s=t instanceof Error?t:new Error(String(t));throw this._onSourceError(s,this.root),this._onTilesetError(s),s}}_initializeStats(){this.stats.get(jr),this.stats.get(Hr),this.stats.get(Wr),this.stats.get(rh),this.stats.get(nh),this.stats.get(oh),this.stats.get(ah),this.stats.get(hh),this.stats.get(ch),this.stats.get(Yr,"memory"),this.stats.get(lh)}_initializeTileHeaders(t,s){return this.source.initializeTileHeaders(this,t,s)}_initializeTraverser(){return this.source.createTraverser({basePath:this.basePath,onTraversalEnd:this._onTraversalEnd.bind(this)})}_destroyTileHeaders(t){this._destroySubtree(t)}async _loadTile(t){let s=null;try{this._onStartTileLoading(),s=await t.loadContent()}catch(i){let r=i instanceof Error?i:new Error("load failed");this._onSourceError(r,t),this._onTileLoadError(t,r)}finally{this._onEndTileLoading(),this._onTileLoad(t,s)}}async _loadTileChildren(t,s){try{this._onStartTileLoading(),await t.loadChildren(s)}catch(i){let r=i instanceof Error?i:new Error("subtree load failed");this._onSourceError(r,t),this._onTileLoadError(t,r)}finally{this._onEndTileLoading()}}_onTileLoadError(t,s){this.stats.get(hh).incrementCount();let i=s.message||s.toString(),r=t.url;console.error(`A 3D tile failed to load: ${t.url} ${i}`),this.options.onTileError(t,i,r)}_onSourceError(t,s=null){this.options.onSourceError(t,this.source,s)}_onTilesetError(t){this.options.onTilesetError(t,this)}_onTileLoad(t,s){if(!s?.loaded)return;t.content&&li(t,t.content),this.source.onTileLoaded?.(this,t,s),this._syncSourceState(this.source.getMetadata());let i=this.source.getTilesTotalCount?.();i&&(this.stats.get(jr).reset(),this.stats.get(jr).addCount(i)),this._addTileToCache(t),this.options.onTileLoad(t)}_onStartTileLoading(){this._pendingCount++,this.stats.get(Hr).incrementCount()}_onEndTileLoading(){this._pendingCount--,this.stats.get(Hr).decrementCount()}_addTileToCache(t){this._cache.add(this,t,s=>s._updateCacheStats(t))}_updateCacheStats(t){this.stats.get(oh).incrementCount(),this.stats.get(Wr).incrementCount(),this.gpuMemoryUsageInBytes+=t.gpuMemoryUsageInBytes||0,this.stats.get(Yr).count=this.gpuMemoryUsageInBytes,this.options.memoryAdjustedScreenSpaceError&&this.adjustScreenSpaceError()}_unloadTile(t){this.gpuMemoryUsageInBytes-=t.gpuMemoryUsageInBytes||0,this.stats.get(Wr).decrementCount(),this.stats.get(ah).incrementCount(),this.stats.get(Yr).count=this.gpuMemoryUsageInBytes,this.options.onTileUnload(t),t.unloadContent()}_destroy(){let t=[];for(this.root&&t.push(this.root);t.length>0;){let s=t.pop();for(let i of s.children)t.push(i);this._destroyTile(s)}this.root=null}_destroySubtree(t){let s=t,i=[s];for(;i.length>0;){t=i.pop();for(let r of t.children)i.push(r);t!==s&&this._destroyTile(t)}s.children=[]}_destroyTile(t){this._cache.unloadTile(this,t),this._unloadTile(t),t.destroy()}_syncSourceState(t){this.tileset=t.tileset,this.loader=t.loader,this.type=t.type,this.url=t.url,this.basePath=t.basePath,this.lodMetricType=t.lodMetricType,this.lodMetricValue=t.lodMetricValue,this.refine=t.refine,this.contentFormats=this.source.contentFormats,this.asset=this.source.asset||this.asset;let s=t.tileset;this.schema=s.schema||null,this.schemaUri=s.schemaUri||null,this.groups=s.groups||[],this.metadata=s.metadata||null,this.statistics=s.statistics??null;let i=es(t.spatialReference,this.options.spatial);this.spatialReference=rd(this.spatialReference,i),this.properties=this.source.properties??this.properties,this.extras=this.source.extras??this.extras,this.options.attributions?.length?this.credits={attributions:this.options.attributions}:this.credits=this.source.credits||this.credits}_applyViewState(){let t=this.source.getViewState(this.root);this.asset=t.asset||this.source.asset||{},this.properties=t.properties??this.source.properties,this.extras=t.extras??this.source.extras??null,this.credits=t.credits||this.source.credits||this.credits||{attributions:this.options.attributions||[]},this.description=t.description||this.options.description||"",this.boundingVolume=t.boundingVolume||this.root?.boundingVolume||null,this.cartographicCenter=t.cartographicCenter||new p,this.cartesianCenter=t.cartesianCenter||null,this.zoom=t.zoom||1,this.geometricError=this.tileset?.geometricError||0}_getSourceMetadata(){try{return this.source.getMetadata()}catch{return null}}};function rd(e,t){return e?.status==="transformed"&&e.sourceCrs===t.sourceCrs&&e.targetCrs===t.targetCrs&&e.targetHeightReference===t.targetHeightReference&&e.outputCoordinates===t.outputCoordinates?e:t}var _i=class{sourceUrl;options;archivePromise;constructor(t){this.options=t,this.sourceUrl=nd(t.data,t.fallbackFilename)}async loadRoot(t,s,i){return await this.parseArchiveResource(t,this.options.rootPath,s,i,this.options.rootMode)}async loadResource(t,s,i){let r=this.resolveArchivePath(t,t);return await this.parseArchiveResource(t,r,s,i)}async parseArchiveResource(t,s,i,r,n){let o=this.options.getCoreApi();if(!o)throw new Error(this.options.missingCoreApiMessage);let a=await this.loadFile(s,n),h=this.createArchiveFetch(t);return await o.parse(a,i,{...r,fetch:h},{url:t,fetch:h,_parse:o.parse,loaders:[i],coreApi:o})}createArchiveFetch(t){return async s=>{let i=typeof s=="string"?s:s instanceof URL?s.toString():s.url,r=this.resolveArchivePath(i,t),n=await this.loadFile(r);return new Response(n,{status:200})}}async loadFile(t,s){this.archivePromise||=this.openArchiveReadableFile().then(r=>this.options.parseArchive(r));let i=await this.archivePromise;return await this.options.getFile(i,t,s)}async openArchiveReadableFile(){let{data:t}=this.options;if(typeof t!="string")return new Me(t);if(/^https?:\/\//i.test(t))return new Qe(t);let s=this.options.getCoreApi();if(!s)throw new Error(this.options.missingCoreApiMessage);let i=await s.fetchFile(t);return new Me(await i.arrayBuffer())}resolveArchivePath(t,s){let i=$r(t),r=$r(this.sourceUrl),n=$r(s),o=n===r?r:gt.dirname(n),a=new RegExp(`\\.${this.options.archiveExtension}/(.*)$`,"i"),h=i.match(a);if(h?.[1])return h[1];let c=/^[a-z][a-z0-9+.-]*:/i.test(i)||i.startsWith("/"),l=i.startsWith(r)?i:n===r&&!c?`${r}/${i}`:gt.resolve(o,i);return l===r?"":l.startsWith(`${r}/`)?l.slice(r.length+1):l.replace(/^\/+/,"")}};function nd(e,t){return typeof e=="string"?e:`memory://${"name"in e&&typeof e.name=="string"&&e.name?e.name:t}`}function $r(e){let t=e.indexOf("?");return t>=0?e.slice(0,t):e}function uh(e){return e!=null}var it=new p,Mi=new p;function Se(e,t,s){if(bt(e,"3D Tile: boundingVolume must be defined"),e.box)return od(e.box,t,s);if(e.region)return Ir(e.region);if(e.sphere)return ad(e.sphere,t,s);throw new Error("3D Tile: boundingVolume must contain a sphere, region, or box")}function fh(e,t){if(e.box)return hd(t);if(e.region){let[s,i,r,n,o,a]=e.region;return[[ot(s),ot(i),o],[ot(r),ot(n),a]]}if(e.sphere)return cd(t);throw new Error("Unkown boundingVolume type")}function od(e,t,s){let i=new p(e[0],e[1],e[2]);t.transform(i,i);let r=[];if(e.length===10){let c=e.slice(3,6),l=new yt;l.fromArray(e,6);let u=new p([1,0,0]),f=new p([0,1,0]),m=new p([0,0,1]);u.transformByQuaternion(l),u.scale(c[0]),f.transformByQuaternion(l),f.scale(c[1]),m.transformByQuaternion(l),m.scale(c[2]),r=[...u.toArray(),...f.toArray(),...m.toArray()]}else r=[...e.slice(3,6),...e.slice(6,9),...e.slice(9,12)];let n=t.transformAsVector(r.slice(0,3)),o=t.transformAsVector(r.slice(3,6)),a=t.transformAsVector(r.slice(6,9)),h=new U([n[0],n[1],n[2],o[0],o[1],o[2],a[0],a[1],a[2]]);return uh(s)?(s.center=i,s.halfAxes=h,s):new Nt(i,h)}function ad(e,t,s){let i=new p(e[0],e[1],e[2]);t.transform(i,i);let r=t.getScale(Mi),n=Math.max(Math.max(r[0],r[1]),r[2]),o=e[3]*n;return uh(s)?(s.center=i,s.radius=o,s):new tt(i,o)}function hd(e){let t=dh(),{halfAxes:s}=e,i=new p(s.getColumn(0)),r=new p(s.getColumn(1)),n=new p(s.getColumn(2));for(let o=0;o<2;o++){for(let a=0;a<2;a++){for(let h=0;h<2;h++)it.copy(e.center),it.add(i),it.add(r),it.add(n),mh(t,it),n.negate();r.negate()}i.negate()}return t}function cd(e){let t=dh(),{center:s,radius:i}=e,r=P.WGS84.scaleToGeodeticSurface(s,it),n;r?n=P.WGS84.geodeticSurfaceNormal(r):n=new p(0,0,1);let o=new p(n[2],-n[1],0);o.len()>0?o.normalize():o=new p(0,1,0);let a=o.clone().cross(n);for(let h of[o,a,n]){Mi.copy(h).scale(i);for(let c=0;c<2;c++)it.copy(s),it.add(Mi),mh(t,it),Mi.negate()}return t}function dh(){return[[1/0,1/0,1/0],[-1/0,-1/0,-1/0]]}function mh(e,t){P.WGS84.cartesianToCartographic(t,it),e[0][0]=Math.min(e[0][0],it[0]),e[0][1]=Math.min(e[0][1],it[1]),e[0][2]=Math.min(e[0][2],it[2]),e[1][0]=Math.max(e[1][0],it[0]),e[1][1]=Math.max(e[1][1],it[1]),e[1][2]=Math.max(e[1][2],it[2])}var Qr=new p,ph=new p,Kt=new p,gh=new p,ld=new p,Kr=new I,_h=new I;function xi(e,t){if(e.lodMetricValue===0||Number.isNaN(e.lodMetricValue))return"DIG";let s=2*Jr(e,t);if(s<2)return"OUT";if(!e.header.children)return"DRAW";switch(e.lodMetricType){case"screenSpaceRelative":{let i=t.topDownViewport.height||1;return s/i<=e.lodMetricValue?"DRAW":"DIG"}case"distanceRangeFromDefaultCamera":return e.distanceToTile(t)>=e.lodMetricValue?"DRAW":"DIG";case"maxScreenThresholdSQ":{let i=Math.sqrt(e.lodMetricValue/(Math.PI*.25));return s<=i?"DRAW":"DIG"}default:return s<=e.lodMetricValue?"DRAW":"DIG"}}function Jr(e,t){let{topDownViewport:s}=t,i=e.header.i3sLodMbs||e.header.mbs,r=i[1],n=i[0],o=i[2],a=i[3],h=[...e.boundingVolume.center],c=s.unprojectPosition(s.cameraPosition);P.WGS84.cartographicToCartesian(c,Qr),ph.copy(Qr).subtract(h).normalize(),P.WGS84.eastNorthUpToFixedFrame(h,Kr),_h.copy(Kr).invert(),Kt.copy(Qr).transform(_h);let l=Math.sqrt(Kt[0]*Kt[0]+Kt[1]*Kt[1]),u=l*l/Kt[2];gh.copy([Kt[0],Kt[1],u]);let m=gh.transform(Kr).subtract(h).normalize(),g=ph.cross(m).normalize().scale(a).add(h),_=P.WGS84.cartesianToCartographic(g),M=s.project([n,r,o]),y=s.project(_);return ld.copy(M).subtract(y).magnitude()}var is=class{_map=new Map;_array;_length;constructor(t=0){this._array=new Array(t),this._length=t}get length(){return this._length}set length(t){this._length=t,t>this._array.length&&(this._array.length=t)}get values(){return this._array}get(t){return bt(t<this._array.length),this._array[t]}set(t,s){bt(t>=0),t>=this.length&&(this.length=t+1),this._map.has(this._array[t])&&this._map.delete(this._array[t]),this._array[t]=s,this._map.set(s,t)}delete(t){let s=this._map.get(t);s>=0&&(this._array.splice(s,1),this._map.delete(t),this.length--)}peek(){return this._array[this._length-1]}push(t){if(!this._map.has(t)){let s=this.length++;this._array[s]=t,this._map.set(t,s)}}pop(){let t=this._array[--this.length];return this._map.delete(t),t}reserve(t){bt(t>=0),t>this._array.length&&(this._array.length=t)}resize(t){bt(t>=0),this.length=t}trim(t){t==null&&(t=this.length),this._array.length=t}reset(){this._array=[],this._map=new Map,this._length=0}find(t){return this._map.has(t)}};var ud={loadSiblings:!1,skipLevelOfDetail:!1,baseScreenSpaceError:1024,skipScreenSpaceErrorFactor:16,skipLevels:1,immediatelyLoadDesiredLevelOfDetail:!1,updateTransforms:!0,onTraversalEnd:()=>{},viewportTraversersMap:{},basePath:""},Gt=class{options;disableSkipLevelOfDetail=!1;root=null;selectedTiles={};requestedTiles={};deferredTiles={};emptyTiles={};lastUpdate=new Date().getTime();updateDebounceTime=1e3;_traversalStack=new is;_emptyTraversalStack=new is;_frameNumber=null;traversalFinished(t){return!0}constructor(t){this.options={...ud,...t}}isSkipLevelOfDetailEnabled(){return this.options.skipLevelOfDetail&&!this.disableSkipLevelOfDetail}traverse(t,s,i){this.root=t,this.options={...this.options,...i},this.reset(),this.updateTile(t,s),this._frameNumber=s.frameNumber,this.executeTraversal(t,s)}reset(){this.requestedTiles={},this.deferredTiles={},this.selectedTiles={},this.emptyTiles={},this._traversalStack.reset(),this._emptyTraversalStack.reset()}executeTraversal(t,s){let i=this._traversalStack;for(t._selectionDepth=1,i.push(t);i.length>0;){let r=i.pop(),n=!1;this.canTraverse(r,s)&&(this.updateChildTiles(r,s),n=this.updateAndPushChildren(r,s,i,r.hasRenderContent?r._selectionDepth+1:r._selectionDepth));let o=r.parent,a=!!(!o||o._shouldRefine),h=!n;r.hasRenderContent?r.refine===J.ADD?(this.loadTile(r,s),this.selectTile(r,s)):r.refine===J.REPLACE&&(this.loadTile(r,s),(h||this.isSkipLevelOfDetailEnabled())&&this.selectTile(r,s)):(this.emptyTiles[r.id]=r,this.loadTile(r,s),h&&this.selectTile(r,s)),this.touchTile(r,s),r._shouldRefine=n&&a}this.completeTraversal(s)}completeTraversal(t){let s=new Date().getTime();(this.traversalFinished(t)||s-this.lastUpdate>this.updateDebounceTime)&&(this.lastUpdate=s,this.options.onTraversalEnd(t))}updateChildTiles(t,s){let i=t.children;for(let r of i)this.updateTile(r,s)}updateAndPushChildren(t,s,i,r){let{loadSiblings:n}=this.options,o=this.isSkipLevelOfDetailEnabled(),a=t.children;a.sort(this.compareDistanceToCamera.bind(this));let h=t.refine===J.REPLACE&&t.hasRenderContent&&!o,c=!1,l=!0;for(let u of a)if(u._selectionDepth=r,u.isVisibleAndInRequestVolume?(i.find(u)&&i.delete(u),i.push(u),c=!0):(h||n)&&(this.loadTile(u,s),this.touchTile(u,s)),h){let f;if(u._inRequestVolume?u.hasRenderContent?f=u.contentAvailable:f=this.executeEmptyTraversal(u,s):f=!1,l=l&&f,!l)return!1}return c||(l=!1),l}updateTile(t,s){this.updateTileVisibility(t,s)}selectTile(t,s){this.shouldSelectTile(t,s)&&(t._selectedFrame=s.frameNumber,this.selectedTiles[t.id]=t)}loadTile(t,s){if(this.shouldLoadTile(t)){if(this.shouldDeferTileRequest(t)){this.deferredTiles[t.id]=t;return}t._requestedFrame=s.frameNumber,t._priority=t._getPriority(),this.requestedTiles[t.id]=t}}shouldDeferTileRequest(t){return t.priorityDeferred}touchTile(t,s){t.tileset._cache.touch(t),t._touchedFrame=s.frameNumber}canTraverse(t,s){return t.hasChildren?t.hasTilesetContent?!t.contentExpired:this.shouldRefine(t,s):!1}shouldLoadTile(t){return t.hasUnloadedContent||t.contentExpired}shouldSelectTile(t,s){return t.contentAvailable&&t.contentVisibility(s)!=="outside"}shouldRefine(t,s,i=!1){let r=t._screenSpaceError;return i&&(r=t.getScreenSpaceError(s,!0)),r>t.tileset.memoryAdjustedScreenSpaceError}updateTileVisibility(t,s){let i=[];if(this.options.viewportTraversersMap)for(let r in this.options.viewportTraversersMap)this.options.viewportTraversersMap[r]===s.viewport.id&&i.push(r);else i.push(s.viewport.id);t.updateVisibility(s,i)}compareDistanceToCamera(t,s){return t._distanceToCamera-s._distanceToCamera}anyChildrenVisible(t,s){let i=!1;for(let r of t.children)r.updateVisibility(s),i=i||r.isVisibleAndInRequestVolume;return i}executeEmptyTraversal(t,s){let i=!0,r=!1,n=this._emptyTraversalStack;for(n.push(t);n.length>0;){let o=n.pop(),a=!o.hasRenderContent&&this.canTraverse(o,s),h=!o.hasRenderContent&&o.children.length===0;if(o.header.implicitSubtree&&(r=!0,i=!1),!a&&!o.contentAvailable&&!h&&(i=!1),this.updateTile(o,s),o.isVisibleAndInRequestVolume||(this.loadTile(o,s),this.touchTile(o,s)),a){let c=o.children;for(let l of c)n.push(l)}}return t.hasEmptyContent&&!r||i}};var tn=new p;function fd(e,t,s,i,r=[]){let n=e.length?e:[t],o=!1,a=!1;for(let h of n){let c="inside";if(i!==K.MASK_INSIDE&&(c=s.computeVisibility(h),c==="outside"))continue;let l=!1;for(let u of r)if(h.intersectPlane(u)==="outside"){l=!0;break}l||(o=!0,a=a||c==="intersecting")}return o?a?"intersecting":"inside":"outside"}function dd(e){return e!=null}var Et=class{tileset;header;id;url;parent;refine;type;contentUrl;contentUrls=[];lodMetricType="geometricError";lodMetricValue=0;_unscaledLodMetricValue=0;boundingVolume=null;content=null;contents=[];metadata=null;contentMetadata=[];contentState=et.UNLOADED;gpuMemoryUsageInBytes=0;children=[];childrenState="ready";depth=0;viewportIds=[];transform=new I;extensions=null;implicitTiling=null;userData={};computedTransform;hasEmptyContent=!1;hasTilesetContent=!1;traverser=new Gt({});_cacheNode=null;_frameNumber=null;_expireDate=null;_expiredContent=null;_childrenPromise=null;_boundingBox=void 0;_distanceToCamera=0;_screenSpaceError=0;_screenSpaceErrorProgressiveResolution=0;_priorityProgressiveResolution=!1;_foveatedFactor=0;priorityDeferred=!1;_visibilityPlaneMask;_visible=void 0;_contentBoundingVolume;_contentBoundingVolumes=[];_contentBoundingVolumeHeaders=[];_viewerRequestVolume;get contentBoundingVolume(){return this._contentBoundingVolume}get contentBoundingVolumes(){return this._contentBoundingVolumes}get viewerRequestVolume(){return this._viewerRequestVolume}_initialTransform=new I;_priority=0;_selectedFrame=0;_requestedFrame=0;_selectionDepth=0;_touchedFrame=0;_centerZDepth=0;_shouldRefine=!1;_stackLength=0;_visitedFrame=0;_inRequestVolume=!1;_lodJudge=null;tileDrawn=!0;constructor(t,s,i,r=""){this.header=s,this.tileset=t,this.id=r||s.id,this.url=s.url,this.parent=i,this.refine=this._getRefine(s.refine),this.type=s.type,this.contentUrl=s.contentUrl,this.contentUrls=s.contentUrls||(s.contentUrl?[s.contentUrl]:[]),this.metadata=s.metadata||null;let n=Array.isArray(s.content)?s.content:[s.content];this.contentMetadata=n.filter(Boolean).map(o=>o.metadata||null),this.childrenState=s.implicitSubtree?"unloaded":"ready",this._initializeLodMetric(s),this._initializeTransforms(s),this._updateLodMetricScale(),this._initializeBoundingVolumes(s),this._initializeContent(s),this._initializeRenderingState(s),Object.seal(this)}destroy(){this.header=null}isDestroyed(){return this.header===null}get selected(){return this._selectedFrame===this.tileset._frameNumber}get isVisible(){return this._visible}get isVisibleAndInRequestVolume(){return this._visible&&this._inRequestVolume}get hasRenderContent(){return!this.hasEmptyContent&&!this.hasTilesetContent}get hasChildren(){return this.children.length>0||this.header.children&&this.header.children.length>0||!!(this.header.implicitSubtree&&this.childrenState!=="ready")}get hasUnloadedChildren(){return!!(this.header.implicitSubtree&&(this.childrenState==="unloaded"||this.childrenState==="failed"))}get childrenLoading(){return this.childrenState==="loading"}get contentReady(){return this.contentState===et.READY||this.hasEmptyContent}get contentAvailable(){return!!(this.contentReady&&this.hasRenderContent||this._expiredContent&&!this.contentFailed)}get hasUnloadedContent(){return this.hasRenderContent&&this.contentUnloaded}get contentUnloaded(){return this.contentState===et.UNLOADED}get contentExpired(){return this.contentState===et.EXPIRED}get contentFailed(){return this.contentState===et.FAILED}get distanceToCamera(){return this._distanceToCamera}get screenSpaceError(){return this._screenSpaceError}get boundingBox(){return this._boundingBox||(this._boundingBox=fh(this.header.boundingVolume,this.boundingVolume)),this._boundingBox}getScreenSpaceError(t,s,i=1){switch(this.tileset.type){case at.I3S:return Jr(this,t);case at.TILES3D:return Ha(this,t,s,i);default:throw new Error("Unsupported tileset type")}}unselect(){this._selectedFrame=0}_getGpuMemoryUsageInBytes(){return(this.contents.length?this.contents:[this.content]).reduce((s,i)=>s+(i?.gpuMemoryUsageInBytes||i?.byteLength||0),0)}_getPriority(){return this._calculateRequestPriority(!1)}_getChildrenPriority(){return this._calculateRequestPriority(!0)}_calculateRequestPriority(t){let s=this.tileset._traverser,i=s.options.skipLevelOfDetail&&!s.disableSkipLevelOfDetail,r=this.refine===J.ADD||i;if(r&&!this.isVisible&&this._visible!==void 0||this.tileset._frameNumber-this._touchedFrame>=1||this.priorityDeferred||!t&&this.contentState===et.UNLOADED)return-1;let n=this.parent,a=n&&(!r||this._screenSpaceError===0||n.hasTilesetContent)?n._screenSpaceError:this._screenSpaceError,h=s.root?s.root._screenSpaceError:0,c=Math.max(h-a,0);return eh({priorityProgressiveResolution:this._priorityProgressiveResolution,foveatedFactor:this._foveatedFactor,reverseScreenSpaceError:c,rootScreenSpaceError:h})}async loadContent(){if(this.hasEmptyContent)return{loaded:!1};if(this.content)return{loaded:!0};this.contentExpired&&(this._expireDate=null),this.contentState=et.LOADING;let s=await this.tileset._requestScheduler.scheduleRequest(this.id,this._getPriority.bind(this));if(!s)return this.contentState=et.UNLOADED,{loaded:!1};try{let i=await this.tileset.source.loadTileContent(this);return i.contents&&(this.contents=i.contents,this.content=this.contents[0]||null),this.tileset.options.contentLoader&&await this.tileset.options.contentLoader(this),this.contentState=et.READY,this._onContentLoaded(),i}catch(i){throw this.contentState=et.FAILED,i}finally{s.done()}}async loadChildren(t){if(!this.header.implicitSubtree||this.childrenState==="ready")return{loaded:!1,tileCount:0,childSubtreeCount:0};if(this._childrenPromise)return await this._childrenPromise;if(!this.tileset.source.loadTileChildren)throw new Error("Tileset source does not support lazy tile children");this.childrenState="loading",this._childrenPromise=this._loadChildrenWithScheduler(t);try{return await this._childrenPromise}finally{this._childrenPromise=null}}async _loadChildrenWithScheduler(t){let s=await this.tileset._requestScheduler.scheduleRequest(`${this.id}:implicit-subtree`,this._getChildrenPriority.bind(this));if(!s)return this.childrenState="unloaded",{loaded:!1,tileCount:0,childSubtreeCount:0};try{let i=await this.tileset.source.loadTileChildren(this,t);return this.childrenState=i.loaded?"ready":"unloaded",i}catch(i){throw this.childrenState="failed",i}finally{s.done()}}applyImplicitSubtreeHeader(t){let s=this.header.transform,i=this.header.transformMatrix;this.header={...this.header,...t,transform:s,transformMatrix:i,implicitSubtree:void 0},this.refine=this._getRefine(t.refine),this.type=t.type,this.contentUrl=t.contentUrl,this.contentUrls=t.contentUrls||(t.contentUrl?[t.contentUrl]:[]),this._initializeLodMetric(t),this._updateLodMetricScale(),this._initializeBoundingVolumes(this.header),this._initializeContent(this.header)}unloadContent(){for(let t of this.contents.length?this.contents:[this.content])t&&t.destroy&&t.destroy();return this.contents=[],this.content=null,this.header.content&&this.header.content.destroy&&this.header.content.destroy(),this.header.content=null,this.contentState=et.UNLOADED,this.tileDrawn=!0,!0}updateVisibility(t,s){if(this._frameNumber===t.frameNumber)return;let i=this.parent,r=i?i._visibilityPlaneMask:K.MASK_INDETERMINATE;if(this.tileset._traverser.options.updateTransforms){let n=i?i.computedTransform:this.tileset.modelMatrix;this._updateTransform(n)}this._distanceToCamera=this.distanceToTile(t),this._screenSpaceError=this.getScreenSpaceError(t,!1),this._updateRequestPriorityMetrics(t),this._visibilityPlaneMask=this.visibility(t,r),this._visible=this._visibilityPlaneMask!==K.MASK_OUTSIDE,this._inRequestVolume=this.insideViewerRequestVolume(t),this._frameNumber=t.frameNumber,this.viewportIds=s}_updateRequestPriorityMetrics(t){if(this.tileset.type!==at.TILES3D){this._screenSpaceErrorProgressiveResolution=this._screenSpaceError,this._priorityProgressiveResolution=!1,this._foveatedFactor=0,this.priorityDeferred=!1;return}let s=this.tileset.options,i=s.progressiveResolutionHeightFraction;if(this._screenSpaceErrorProgressiveResolution=this.getScreenSpaceError(t,!1,i),this._priorityProgressiveResolution=Ka(this._screenSpaceErrorProgressiveResolution,this.parent?._screenSpaceErrorProgressiveResolution,this.tileset.memoryAdjustedScreenSpaceError,i),!s.foveatedScreenSpaceError||t.viewport?.orthographic||!t.camera?.position||!t.camera?.direction){this._foveatedFactor=0,this.priorityDeferred=!1;return}this._foveatedFactor=Qa(this.boundingVolume,t.camera);let r=this.tileset._traverser,n=r.options.skipLevelOfDetail&&!r.disableSkipLevelOfDetail,o=Ja({refinement:this.refine,skipLevelOfDetail:n,foveatedScreenSpaceError:s.foveatedScreenSpaceError,foveatedConeSize:s.foveatedConeSize,minimumScreenSpaceErrorRelaxation:s.foveatedMinimumScreenSpaceErrorRelaxation,interpolationCallback:s.foveatedInterpolationCallback,foveatedFactor:this._foveatedFactor,verticalFieldOfView:t.camera.verticalFieldOfView,screenSpaceError:this._screenSpaceError,parentScreenSpaceError:this.parent?._screenSpaceError,maximumScreenSpaceError:this.tileset.memoryAdjustedScreenSpaceError,priorityProgressiveResolution:this._priorityProgressiveResolution});this.priorityDeferred=th(o,t.camera.timeSinceMovement,s.foveatedTimeDelay)}visibility(t,s){let{cullingVolume:i}=t,{boundingVolume:r}=this;return i.computeVisibilityWithPlaneMask(r,s)}contentVisibility(t){return fd(this._contentBoundingVolumes,this.boundingVolume,t.cullingVolume,this._visibilityPlaneMask,t.clippingPlanes)}distanceToTile(t){let s=this.boundingVolume;return Math.sqrt(Math.max(s.distanceSquaredTo(t.camera.position),0))}cameraSpaceZDepth({camera:t}){let s=this.boundingVolume;return tn.subVectors(s.center,t.position),t.direction.dot(tn)}insideViewerRequestVolume(t){let s=this._viewerRequestVolume;return!s||s.distanceSquaredTo(t.camera.position)<=0}updateExpiration(){if(dd(this._expireDate)&&this.contentReady&&!this.hasEmptyContent){let t=Date.now();Date.lessThan(this._expireDate,t)&&(this.contentState=et.EXPIRED,this._expiredContent=this.content)}}get extras(){return this.header.extras}_initializeLodMetric(t){"lodMetricType"in t?this.lodMetricType=t.lodMetricType:(this.lodMetricType=this.parent&&this.parent.lodMetricType||this.tileset.lodMetricType,console.warn("3D Tile: Required prop lodMetricType is undefined. Using parent lodMetricType")),"lodMetricValue"in t?this._unscaledLodMetricValue=t.lodMetricValue:(this._unscaledLodMetricValue=this.parent?this.parent._unscaledLodMetricValue:this.tileset.lodMetricValue,console.warn("3D Tile: Required prop lodMetricValue is undefined. Using parent lodMetricValue")),this.lodMetricValue=this._unscaledLodMetricValue}_initializeTransforms(t){this.transform=t.transform?new I(t.transform):new I;let s=this.parent,i=this.tileset,r=s&&s.computedTransform?s.computedTransform.clone():i.modelMatrix.clone();this.computedTransform=new I(r).multiplyRight(this.transform);let n=s&&s._initialTransform?s._initialTransform.clone():new I;this._initialTransform=new I(n).multiplyRight(this.transform)}_updateLodMetricScale(){if(this.lodMetricType!==ye.GEOMETRIC_ERROR){this.lodMetricValue=this._unscaledLodMetricValue;return}let t=this.computedTransform.getScale(tn),s=Math.max(t[0],t[1],t[2]);this.lodMetricValue=this._unscaledLodMetricValue*s}_initializeBoundingVolumes(t){this._contentBoundingVolume=null,this._contentBoundingVolumeHeaders=[],this._viewerRequestVolume=null,this._updateBoundingVolume(t)}_initializeContent(t){this.content={_tileset:this.tileset,_tile:this},this.contents=[],this.hasEmptyContent=!0,this.contentState=et.UNLOADED,this.hasTilesetContent=!1,(t.contentUrl||t.contentUrls?.length)&&(this.content=null,this.hasEmptyContent=!1)}_initializeRenderingState(t){this.depth=t.level||(this.parent?this.parent.depth+1:0),this._shouldRefine=!1,this._distanceToCamera=0,this._centerZDepth=0,this._screenSpaceError=0,this._screenSpaceErrorProgressiveResolution=0,this._priorityProgressiveResolution=!1,this._foveatedFactor=0,this.priorityDeferred=!1,this._visibilityPlaneMask=K.MASK_INDETERMINATE,this._visible=void 0,this._inRequestVolume=!1,this._stackLength=0,this._selectionDepth=0,this._frameNumber=0,this._touchedFrame=0,this._visitedFrame=0,this._selectedFrame=0,this._requestedFrame=0,this._priority=0}_getRefine(t){return t||this.parent&&this.parent.refine||J.REPLACE}_isTileset(){return(this.contents.length?this.contents:[this.content]).some(t=>t?.shape==="tileset3d")}_onContentLoaded(){let t=this.contents.length?this.contents:[this.content];for(let s of t)switch(s&&s.type){case"vctr":case"geom":this.tileset._traverser.disableSkipLevelOfDetail=!0;break;default:}this._isTileset()?this.hasTilesetContent=!0:this.gpuMemoryUsageInBytes=this._getGpuMemoryUsageInBytes()}_updateBoundingVolume(t){this.boundingVolume=Se(t.boundingVolume,this.computedTransform,this.boundingVolume),t.viewerRequestVolume&&(this._viewerRequestVolume=Se(t.viewerRequestVolume,this.computedTransform,this._viewerRequestVolume));let s=t.content;s&&(this._contentBoundingVolumeHeaders=Array.isArray(s)?s:[s]);let i=s?Array.isArray(s)?s:[s]:this._contentBoundingVolumeHeaders;this._contentBoundingVolumes=i.length?i.map(r=>r?.boundingVolume?Se(r.boundingVolume,this.computedTransform):this.boundingVolume):[this.boundingVolume],this._contentBoundingVolume=this._contentBoundingVolumes[0]||null}_updateTransform(t=new I){let s=t.clone().multiplyRight(this.transform);s.equals(this.computedTransform)||(this.computedTransform=s,this._updateLodMetricScale(),this._updateBoundingVolume(this.header))}};var yi=class extends Gt{pendingImplicitSubtrees=new Map;traversalFinished(t){let s=`${t.viewport.id}:`;for(let[i,r]of this.pendingImplicitSubtrees)if(i.startsWith(s)&&r===t.frameNumber)return!1;return!0}executeTraversal(t,s){if(!this.isSkipLevelOfDetailEnabled()){super.executeTraversal(t,s);return}this.executeSkipTraversal(t,s)}executeSkipTraversal(t,s){let i=[t];for(t._selectionDepth=t.parent?t.parent._selectionDepth:1;i.length>0;){let r=i.pop(),n=!r.parent||r.parent._shouldRefine,o=this.canTraverse(r,s)&&this.updateAndPushSkipChildren(r,s,i)&&n,a=!o&&n;r.hasRenderContent?r.refine===J.ADD?(this.loadTile(r,s),this.selectDesiredTile(r,s)):r.refine===J.REPLACE&&(this.isInBaseTraversal(r,s)?(this.loadTile(r,s),a&&this.selectDesiredTile(r,s)):a?(this.loadTile(r,s),this.selectDesiredTile(r,s)):this.hasReachedSkippingThreshold(r,s)&&this.loadTile(r,s)):(this.emptyTiles[r.id]=r,this.loadTile(r,s),a&&this.selectDesiredTile(r,s)),this.touchTile(r,s),r._shouldRefine=o}this.completeTraversal(s)}updateAndPushSkipChildren(t,s,i){this.updateChildTiles(t,s),t.children.sort(this.compareDistanceToCamera.bind(this));let r=!1;for(let n of t.children)n._selectionDepth=t.hasRenderContent?t._selectionDepth+1:t._selectionDepth,n.isVisibleAndInRequestVolume?(i.push(n),r=!0):this.options.loadSiblings&&(this.loadTile(n,s),this.touchTile(n,s));return r}isInBaseTraversal(t,s){if(this.options.immediatelyLoadDesiredLevelOfDetail)return!1;if(!this.findNearestRequestedOrLoadedAncestor(t,s))return!0;let i=Number.isFinite(this.options.baseScreenSpaceError)?Math.max(this.options.baseScreenSpaceError,0):1024,r=Math.max(i,t.tileset.memoryAdjustedScreenSpaceError);return t._screenSpaceError===0&&t.parent?t.parent._screenSpaceError>r:t._screenSpaceError>r}hasReachedSkippingThreshold(t,s){if(this.options.immediatelyLoadDesiredLevelOfDetail)return!1;if(t._priorityProgressiveResolution&&t._screenSpaceErrorProgressiveResolution<=t.tileset.memoryAdjustedScreenSpaceError&&!!(t.parent&&t.parent._screenSpaceErrorProgressiveResolution>t.tileset.memoryAdjustedScreenSpaceError))return!0;let r=this.findNearestRequestedOrLoadedAncestor(t,s);if(!r)return!1;let n=Number.isFinite(this.options.skipScreenSpaceErrorFactor)&&this.options.skipScreenSpaceErrorFactor>0?this.options.skipScreenSpaceErrorFactor:16,o=Number.isFinite(this.options.skipLevels)?Math.max(Math.floor(this.options.skipLevels),0):1;return t._screenSpaceError<r._screenSpaceError/n&&t.depth>r.depth+o}findNearestRequestedOrLoadedAncestor(t,s){let i=t.parent;for(;i;){if(i.hasRenderContent&&!i.contentFailed&&(!i.hasUnloadedContent||i._requestedFrame===s.frameNumber))return i;i=i.parent}return null}selectDesiredTile(t,s){let i=t;for(;i;){if(this.shouldSelectTile(i,s)){this.selectTile(i,s);return}i=i.parent}this.selectLoadedDescendants(t,s)}selectLoadedDescendants(t,s){let i=[{tile:t,depth:0}];for(;i.length>0;){let{tile:r,depth:n}=i.pop();for(let o of r.children)this.updateTile(o,s),o.isVisibleAndInRequestVolume&&(o.contentAvailable?(this.selectTile(o,s),this.touchTile(o,s)):n<1&&i.push({tile:o,depth:n+1}))}}compareDistanceToCamera(t,s){return s._distanceToCamera===0&&t._distanceToCamera===0?s._centerZDepth-t._centerZDepth:s._distanceToCamera-t._distanceToCamera}updateChildTiles(t,s){if(t.hasUnloadedChildren&&t.isVisibleAndInRequestVolume&&this.shouldRefine(t,s)){let i=`${s.viewport.id}:${t.id}`;this.pendingImplicitSubtrees.has(i)||(this.pendingImplicitSubtrees.set(i,s.frameNumber),t.tileset._loadTileChildren(t,s).finally(()=>{this.handleImplicitSubtreeLoad(t,s,i)}))}super.updateChildTiles(t,s)}handleImplicitSubtreeLoad(t,s,i){this.pendingImplicitSubtrees.delete(i),this._frameNumber===s.frameNumber&&(t.childrenState==="ready"?this.executeTraversal(t,s):this.traversalFinished(s)&&this.options.onTraversalEnd(s))}updateTileVisibility(t,s){if(super.updateTileVisibility(t,s),!t.isVisibleAndInRequestVolume)return;let i=t.children.length>0;if(t.hasTilesetContent&&i){let o=t.children[0];this.updateTileVisibility(o,s),t._visible=o._visible;return}if(this.meetsScreenSpaceErrorEarly(t,s)){t._visible=!1;return}let r=t.refine===J.REPLACE,n=t._optimChildrenWithinParent===Ya.USE_OPTIMIZATION;if(r&&n&&i&&!this.anyChildrenVisible(t,s)){t._visible=!1;return}}meetsScreenSpaceErrorEarly(t,s){let{parent:i}=t;return!i||i.hasTilesetContent||i.refine!==J.ADD?!1:!this.shouldRefine(t,s,!0)}};var md=6378137,pd=6378137,en=6356752314245179e-9,ve=new p;function Mh(e,t){if(e instanceof Nt){let{halfAxes:s}=e,i=gd(s);return Math.log2(en/(i+t[2]))}else if(e instanceof tt){let{radius:s}=e;return Math.log2(en/(s+t[2]))}else if(e.width&&e.height){let{width:s,height:i}=e,r=Math.log2(md/s),n=Math.log2(pd/i);return(r+n)/2}return 1}function sn(e,t,s){P.WGS84.cartographicToCartesian([e.xmax,e.ymax,e.zmax],ve);let i=Math.sqrt(Math.pow(ve[0]-s[0],2)+Math.pow(ve[1]-s[1],2)+Math.pow(ve[2]-s[2],2));return Math.log2(en/(i+t[2]))}function xh(e,t,s){let[i,r,n,o]=e;return sn({xmin:i,xmax:n,ymin:r,ymax:o,zmin:0,zmax:0},t,s)}function gd(e){e.getColumn(0,ve);let t=e.getColumn(1),s=e.getColumn(2);return ve.add(t).add(s).len()}var _d=Object.freeze({meter:1,millimeter:.001,centimeter:.01,decimeter:.1,kilometer:1e3,foot:.3048,yard:.9144,mile:1609.344,"us-foot":.3048006096012192,"us-inch":.0254000508001016,"us-yard":.9144018288036576,"us-mile":1609.3472186944373,"clarke-foot":.3047972654,"clarke-yard":.9143917962,"clarke-link":.201166195164,"sears-yard":.914398414616,"sears-foot":.304799471539,"sears-chain":20.1167651216,"sears-1922-truncated-chain":20.116756,"benoit-1895-b-chain":20.1167824944,"indian-yard":.914398530744,"indian-1937-yard":.91439523,"gold-coast-foot":.304799710181}),Md=Object.freeze({m:"meter",metre:"meter",meters:"meter",metres:"meter",mm:"millimeter",millimetre:"millimeter",millimeters:"millimeter",millimetres:"millimeter",cm:"centimeter",centimetre:"centimeter",centimeters:"centimeter",centimetres:"centimeter",dm:"decimeter",decimetre:"decimeter",decimeters:"decimeter",decimetres:"decimeter",km:"kilometer",kilometre:"kilometer",kilometers:"kilometer",kilometres:"kilometer",ft:"foot",feet:"foot","us-survey-foot":"us-foot","us-survey-feet":"us-foot",yd:"yard",yards:"yard",mi:"mile",miles:"mile"});function rs(e){if(!e)return;let t=e.trim().toLowerCase().replaceAll("_","-"),s=Md[t]||t;return _d[s]}function yh(e,t){return t!==void 0?Number.isFinite(t)&&t>0?t:void 0:e?rs(e):1}function Si(e){let t=e.spatialReference||e.fullExtent?.spatialReference,s=vd(t),i=e.heightModelInfo?.vertCRS||Ed(t),r=e.heightModelInfo?.heightModel,n=e.heightModelInfo?.heightUnit,o=yh(n,e.ZFactor),a=r==="ellipsoidal"?"ellipsoidal":r==="gravity_related_height"?"orthometric":"unknown",h=vh(t),c=h===void 0?Td(t?.wkt):wd(h),l=xd(c,n,e.ZFactor),u=[],f=yd(e.elevationInfo?.mode),m=e.elevationInfo?e.elevationInfo.unit||"meter":void 0,d=rs(m);return o===void 0&&u.push(e.ZFactor!==void 0?`I3S ZFactor ${e.ZFactor} is not a positive finite conversion factor`:`Unsupported I3S vertical unit ${n}`),e.elevationInfo&&d===void 0&&u.push(`Unsupported I3S elevation unit ${m}`),e.elevationInfo?.mode&&!f&&u.push(`Unsupported I3S elevation mode ${e.elevationInfo.mode}`),f&&f!=="absoluteHeight"&&u.push(`I3S elevation mode ${f} requires a terrain or scene elevation provider`),vt({sourceCrs:s,sourceCrsRepresentation:h!==void 0?"identifier":s?"wkt":void 0,sourceCrsAlternatives:h!==void 0&&t?.wkt?[{definition:t.wkt,representation:"wkt"}]:void 0,verticalCrs:i,units:l,verticalUnitScale:o??Number.NaN,heightReference:a,elevationMode:f,elevationOffset:e.elevationInfo?.offset,elevationUnit:m,elevationUnitScale:e.elevationInfo?.mode&&!f?Number.NaN:d??(e.elevationInfo?Number.NaN:1),coordinateFrame:c,axisOrder:s?"xyz":"unknown",provenance:s?"metadata":"unknown",warnings:u})}function xd(e,t,s){if(e==="geocentric")return["meter","meter","meter"];if(e==="geographic"&&(t||s===void 0))return["degree","degree",t||"meter"]}function yd(e){switch(e){case"absoluteHeight":case"onTheGround":case"relativeToGround":case"relativeToScene":return e;default:return}}function vi(e){let t=Sh(e,"TILESET_CRS_GEOCENTRIC"),s=Sh(e,"TILESET_CRS_COORDINATE_EPOCH"),i=[],r,n="unknown",o;typeof t=="string"&&t.toUpperCase()!=="UNKNOWN"?(r=t,n="metadata",o="explicit"):t!==void 0?(i.push("3D Tiles geocentric CRS is explicitly unknown"),n="metadata",o="unknown"):e.root?.boundingVolume?.region?(r="EPSG:4978",n="format-default",o="default"):e.schemaUri&&!e.schema&&i.push("External 3D Tiles metadata schema must be loaded before CRS semantics can resolve");let a=Sd(s);return s!==void 0&&a===void 0&&i.push("3D Tiles coordinate epoch is not a finite decimal year"),vt({sourceCrs:r,sourceCrsState:o,sourceCrsRepresentation:r?"identifier":void 0,coordinateEpoch:a,heightReference:r?"ellipsoidal":"unknown",coordinateFrame:r?"geocentric":"unknown",axisOrder:r?"xyz":"unknown",provenance:n,warnings:i})}function Sd(e){if(typeof e!="string"&&typeof e!="number"||typeof e=="string"&&!e.trim())return;let t=Number(e);return Number.isFinite(t)?t:void 0}function vd(e){let t=vh(e);return t!==void 0?`EPSG:${t}`:e?.wkt}function Ed(e){let t=e?.latestVcsWkid??e?.vcsWkid;return t===void 0?void 0:`EPSG:${t}`}function vh(e){return e?.latestWkid??e?.wkid}function wd(e){return e===4978?"geocentric":e===4326||e===4490||e===4979?"geographic":"projected"}function Td(e){if(!e)return"unknown";let t=e.trim().toUpperCase(),s=t.match(/^([A-Z][A-Z0-9_]*)\s*[\[(]/)?.[1];if(s==="GEOCCS")return"geocentric";if(s==="GEOGCS"||s==="GEOGRAPHICCRS"||s==="GEOGRAPHIC2DCRS"||s==="GEOGRAPHIC3DCRS")return"geographic";if(s==="PROJCS"||s==="PROJCRS"||s==="PROJECTEDCRS")return"projected";if(s==="GEODCRS"||s==="GEODETICCRS"){if(/\bCS\s*[\[(]\s*CARTESIAN\s*,\s*3\b/.test(t))return"geocentric";if(/\bCS\s*[\[(]\s*ELLIPSOIDAL\s*,\s*[23]\b/.test(t))return"geographic"}return"unknown"}function Sh(e,t){let s=e.metadata?.class;if(!s)return;let r=e.schema?.classes?.[s]?.properties,n=e.metadata?.properties;for(let[o,a]of Object.entries(r||{}))if(a.semantic===t)return n?.[o]}var bd=4,Pd=8;function nn(e,t){return{coordinates:t,subtreeUrl:wi(e.subtreesUrlTemplate,t),descriptor:e}}function Ei(e,t){let{descriptor:s}=t;Ld(s);let i={tileCount:0,childSubtreeCount:0},r=wh(e,t,{localLevel:0,mortonIndex:0},t.coordinates,i);if(!r)throw new Error(`Invalid 3D Tiles subtree: root tile is unavailable at ${t.subtreeUrl}`);return{root:r,...i}}function wi(e,t){let s={level:t.level,x:t.x,y:t.y,z:t.z};return e.replace(/{(level|x|y|z)}/gi,(i,r)=>String(s[r.toLowerCase()]))}function wh(e,t,s,i,r){let{descriptor:n}=t,o=Od(n.subdivisionScheme),a=Id(o,s.localLevel)+s.mortonIndex;if(!rn(e.tileAvailability,a))return null;r.tileCount++;let h=Ad(e.contentAvailability,a),c=[];if(i.level<n.maximumLevel)if(s.localLevel+1<n.subtreeLevels)for(let l=0;l<o;l++){let u=Eh(i,l,n.subdivisionScheme),f=wh(e,t,{localLevel:s.localLevel+1,mortonIndex:s.mortonIndex*o+l},u,r);f&&c.push(f)}else for(let l=0;l<o;l++){let u=s.mortonIndex*o+l;if(rn(e.childSubtreeAvailability,u)){let f=Eh(i,l,n.subdivisionScheme);c.push(Rd(e,n,f)),r.childSubtreeCount++}}return Cd(e,n,t,i,h,c)}function Rd(e,t,s){let i=nn(t,s);return{id:bh(i,s),children:[],implicitSubtree:i,boundingVolume:Ph(t.rootBoundingVolume,s,t.subdivisionScheme),geometricError:t.rootLodMetricValue/2**s.level,lodMetricType:t.lodMetricType,lodMetricValue:t.rootLodMetricValue/2**s.level,refine:t.refine,type:Lt.EMPTY,implicitMetadata:Th(e)}}function Cd(e,t,s,i,r,n){let a=(t.contentUrlTemplates?.length?t.contentUrlTemplates:[t.contentUrlTemplate]).map((f,m)=>!r[m]||!f?null:{contentIndex:m,contentUrl:wi(f,i)}).filter(f=>!!f),h=a.map(f=>f.contentUrl),c=a.map(({contentIndex:f,contentUrl:m})=>({...t.contentHeaders?.[f]||(f===0?t.contentHeader:{})||{},uri:m})),l=h[0],u=t.rootLodMetricValue/2**i.level;return{id:bh(s,i),children:n,contentUrl:l,content:c.length>1?c:c[0],contentUrls:h,refine:t.refine,type:Nd(l),lodMetricType:t.lodMetricType,lodMetricValue:u,geometricError:u,boundingVolume:Ph(t.rootBoundingVolume,i,t.subdivisionScheme),implicitMetadata:Th(e)}}function Th(e){if(!(!e.propertyTables&&e.tileMetadata===void 0&&!e.contentMetadata&&e.subtreeMetadata===void 0))return{propertyTables:e.propertyTables,tileMetadata:e.tileMetadata,contentMetadata:e.contentMetadata,subtreeMetadata:e.subtreeMetadata}}function bh(e,t){return`${e.subtreeUrl}#implicit=${t.level}/${t.x}/${t.y}/${t.z}`}function rn(e,t){if(typeof e?.constant=="number")return!!e.constant;let s=e?.explicitBitstream;if(!s)return!1;let i=Math.floor(t/8),r=t%8;return!!(s[i]>>r&1)}function Ad(e,t){return(Array.isArray(e)?e:[e]).map(i=>rn(i||{constant:0},t))}function Id(e,t){return(e**t-1)/(e-1)}function Eh(e,t,s){return{level:e.level+1,x:e.x*2+(t&1),y:e.y*2+(t>>1&1),z:s==="OCTREE"?e.z*2+(t>>2&1):0}}function Od(e){return e==="OCTREE"?Pd:bd}function Ph(e,t,s){if(e.region){let[i,r,n,o,a,h]=e.region,c=2**t.level,l=(n-i)/c,u=(o-r)/c,f=i+l*t.x,m=r+u*t.y,d=a,g=h;if(s==="OCTREE"){let _=(h-a)/c;d=a+_*t.z,g=d+_}return{region:[f,m,f+l,m+u,d,g]}}if(e.box){if(e.s2VolumeInfo)return{box:[...e.box],s2VolumeInfo:e.s2VolumeInfo};let i=e.box,r=2**t.level,n=-1+(2*t.x+1)/r,o=-1+(2*t.y+1)/r,a=-1+(2*t.z+1)/r,h=s==="OCTREE";return{box:[...[i[0]+i[3]*n+i[6]*o+(h?i[9]*a:0),i[1]+i[4]*n+i[7]*o+(h?i[10]*a:0),i[2]+i[5]*n+i[8]*o+(h?i[11]*a:0)],i[3]/r,i[4]/r,i[5]/r,i[6]/r,i[7]/r,i[8]/r,h?i[9]/r:i[9],h?i[10]/r:i[10],h?i[11]/r:i[11]]}}throw new Error(`Unsupported implicit 3D Tiles bounding volume: ${JSON.stringify(e)}`)}function Nd(e){if(!e)return Lt.EMPTY;let t=e.split("?")[0].split(".").pop()?.toLowerCase();switch(t){case"pnts":return Lt.POINTCLOUD;case"i3dm":case"b3dm":case"glb":case"gltf":return Lt.SCENEGRAPH;default:return t||Lt.EMPTY}}function Ld(e){if(e.subdivisionScheme!=="QUADTREE"&&e.subdivisionScheme!=="OCTREE")throw new Error(`Unsupported implicit subdivision scheme: ${e.subdivisionScheme}`);if(!Number.isInteger(e.subtreeLevels)||e.subtreeLevels<1)throw new Error("Implicit subtreeLevels must be a positive integer");if(!Number.isInteger(e.maximumLevel)||e.maximumLevel<0)throw new Error("Implicit availableLevels must describe at least the root level")}var Gd={draco:!1,meshopt:!1,dds:!1,ktx2:!1},zd=32,Ti=class{type=at.TILES3D;loader;url;basePath;tileset=null;loadOptions;coreApi;contentFormats={...Gd};asset;properties;extras;credits;metadata;queryParams={};tileUrlCache=new Map;implicitSubtreeCache;implicitTilingStats={requestedSubtrees:0,loadedSubtrees:0,cacheHits:0,materializedTiles:0};destroyed=!1;extensionsUsed=[];resolver;rootTileset;constructor(t,s={}){let i=qd(t);this.rootTileset=Rh(t)?null:t,this.tileset=this.rootTileset,this.loader=i.loader,this.url=i.url,this.basePath=i.basePath||gt.dirname(i.url),this.resolver=i.resolver,this.coreApi=i.coreApi,this.loadOptions=s;let r=Number(s["3d-tiles"]?.maximumCachedSubtrees),n=Number.isFinite(r)?Math.max(0,Math.floor(r)):zd;this.implicitSubtreeCache=new Ze({maxEntries:n})}destroy(){this.destroyed=!0,this.tileUrlCache.clear(),this.implicitSubtreeCache.clear()}async initialize(){if(!this.rootTileset){let t=this.loadOptions[this.loader.id]||{};this.rootTileset=await this.loadRootData(this.url,{...this.loadOptions,[this.loader.id]:{...t,isTileset:!0}})}if(this.tileset=this.rootTileset,this.rootTileset.queryString){let t=new URLSearchParams(this.rootTileset.queryString);for(let[s,i]of t.entries())this.setQueryParameter(s,i)}if(this.asset=this.rootTileset.asset,!this.asset)throw new Error("Tileset must have an asset property.");if(this.asset.version!=="0.0"&&this.asset.version!=="1.0"&&this.asset.version!=="1.1")throw new Error("The tileset must be 3D Tiles version either 0.0 or 1.0 or 1.1.");"tilesetVersion"in this.asset&&this.setQueryParameter("v",this.asset.tilesetVersion),this.properties=this.rootTileset.properties,this.extras=this.rootTileset.extras,this.credits={attributions:[]},this.extensionsUsed.splice(0,this.extensionsUsed.length,...this.rootTileset.extensionsUsed||[]),this.metadata={type:this.type,loader:this.loader,url:this.url,basePath:this.basePath,tileset:this.rootTileset,lodMetricType:this.rootTileset.lodMetricType,lodMetricValue:this.rootTileset.lodMetricValue,refine:this.rootTileset.root?.refine,spatialReference:vi(this.rootTileset)}}getMetadata(){if(!this.metadata)throw new Error("Tiles3DSource has not been initialized");return this.metadata}async getRootTileset(){return this.getMetadata().tileset}initializeTileHeaders(t,s,i){let r=new Et(t,s.root,i||void 0);i&&(i.children.push(r),r.depth=i.depth+1);let n=[r];for(;n.length>0;){let o=n.pop();t.stats.get("Tiles In Tileset(s)").incrementCount();let a=o.header.children||[];for(let h of a){let c=new Et(t,h,o);if(c.contentUrl?.includes("?session=")){let u=new URL(c.contentUrl).searchParams.get("session");u&&this.setQueryParameter("session",u)}o.children.push(c),c.depth=o.depth+1,n.push(c)}}return r}createTraverser(t){return new yi(t)}async loadTileContent(t){let s=(t.contentUrls||[t.contentUrl]).filter(Boolean),i=this.loadOptions[this.loader.id]||{},r={...this.loadOptions,[this.loader.id]:{...i,isTileset:"auto",assetGltfUpAxis:this.asset&&this.asset.gltfUpAxis||"Y"}},n=await Promise.all(s.map(a=>this.loadResourceData(this.getTileUrl(a),r)));t.contents=n,t.content=n[0]||null;let o=n.filter(a=>a?.shape==="tileset3d");return{loaded:!0,contents:n,nestedTileset:o[0],nestedTilesets:o}}async loadTileChildren(t,s){let i=t.header.implicitSubtree;if(!i)return{loaded:!1,tileCount:0,childSubtreeCount:0};let r=this.getTileUrl(i.subtreeUrl),n=await this.loadImplicitSubtreeResource(r);if(this.destroyed||t.isDestroyed())return{loaded:!1,tileCount:0,childSubtreeCount:0};let o=Ei(n,{...i,subtreeUrl:r});t.applyImplicitSubtreeHeader(o.root);let a=this.initializeMaterializedChildren(t.tileset,t,o.root.children);return this.implicitTilingStats.loadedSubtrees++,this.implicitTilingStats.materializedTiles+=a,{loaded:!0,tileCount:o.tileCount,childSubtreeCount:o.childSubtreeCount}}getImplicitTilingStats(){return{...this.implicitTilingStats,cachedSubtrees:this.implicitSubtreeCache.size-this.implicitSubtreeCache.pendingSize,pendingSubtrees:this.implicitSubtreeCache.pendingSize}}getTileUrl(t){if(t.startsWith("data:"))return t;let s=this.tileUrlCache.get(t);if(s)return s;if(!Object.keys(this.queryParams).length)return this.tileUrlCache.set(t,t),t;let[i,r=""]=t.split("?"),n=new URLSearchParams(r);for(let[h,c]of Object.entries(this.queryParams))n.has(h)||n.set(h,c);let o=n.toString(),a=o?`${i}?${o}`:i;return this.tileUrlCache.set(t,a),a}setQueryParameter(t,s){this.queryParams[t]!==s&&(this.queryParams[t]=s,this.tileUrlCache.clear())}getViewState(t){if(!t)return{asset:this.asset,properties:this.properties,extras:this.extras,credits:this.credits};let{center:s}=t.boundingVolume,i;return s&&(s[0]!==0||s[1]!==0||s[2]!==0)?(i=new p,P.WGS84.cartesianToCartographic(s,i)):i=new p(0,0,-P.WGS84.radii[0]),{asset:this.asset,properties:this.properties,extras:this.extras,credits:this.credits,boundingVolume:t.boundingVolume,cartographicCenter:i,cartesianCenter:s,zoom:Mh(t.boundingVolume,i)}}hasExtension(t){return this.extensionsUsed.includes(t)}onTileLoaded(t,s,i){let n=(s.contents.length?s.contents:[s.content]).flatMap(a=>a?.gltf?.extensionsRemoved||[]);n.includes("KHR_draco_mesh_compression")&&(this.contentFormats.draco=!0),n.includes("EXT_meshopt_compression")&&(this.contentFormats.meshopt=!0),n.includes("KHR_texture_basisu")&&(this.contentFormats.ktx2=!0);let o=i.nestedTilesets||(i.nestedTileset?[i.nestedTileset]:[]);for(let a of o)t._initializeTileHeaders(a,s)}async loadWithCoreApi(t,s,i=this.loader){if(!this.coreApi)throw new Error("Tiles3DSource requires an injected coreApi to load tileset data");return await this.coreApi.load(t,i,s)}async loadRootData(t,s){return this.resolver?await this.resolver.loadRoot(t,this.loader,s):await this.loadWithCoreApi(t,s)}async loadResourceData(t,s,i=this.loader){return this.resolver?await this.resolver.loadResource(t,i,s):await this.loadWithCoreApi(t,s,i)}async loadImplicitSubtreeResource(t){let s=this.implicitSubtreeCache.get(t);if(s)return this.implicitTilingStats.cacheHits++,await s;this.implicitTilingStats.requestedSubtrees++;let i=this.loadOptions[this.loader.id]||{};return await this.implicitSubtreeCache.getOrLoad(t,async()=>await this.loadResourceData(t,{...this.loadOptions,[this.loader.id]:{...i,isTileset:!1,isSubtree:!0}}))}initializeMaterializedChildren(t,s,i){let r=0,n=[{parentTile:s,childHeaders:i}];for(;n.length>0;){let o=n.pop();for(let a of o.childHeaders){let h=new Et(t,a,o.parentTile);o.parentTile.children.push(h),h.depth=o.parentTile.depth+1,t.stats.get("Tiles In Tileset(s)").incrementCount(),r++,a.children?.length&&n.push({parentTile:h,childHeaders:a.children})}}return r}};function Rh(e){return!!(e&&typeof e=="object"&&"url"in e&&"loader"in e&&!("type"in e))}function qd(e){return Rh(e)?{...e,basePath:e.basePath||gt.dirname(e.url)}:{url:e.url,loader:e.loader,basePath:e.basePath||gt.dirname(e.url),resolver:e.resolver,coreApi:e.coreApi}}var bi=class{frameNumberMap=new Map;register(t,s){let i=this.frameNumberMap.get(t)||new Map,r=i.get(s)||0;i.set(s,r+1),this.frameNumberMap.set(t,i)}deregister(t,s){let i=this.frameNumberMap.get(t);if(!i)return;let r=i.get(s)||1;i.set(s,r-1)}isZero(t,s){return(this.frameNumberMap.get(t)?.get(s)||0)===0}};var on={REQUESTED:"REQUESTED",COMPLETED:"COMPLETED",ERROR:"ERROR"},Pi=class{_statusMap;pendingTilesRegister=new bi;constructor(){this._statusMap={}}add(t,s,i,r){if(!this._statusMap[s]){let{frameNumber:n,viewport:{id:o}}=r;this._statusMap[s]={request:t,callback:i,key:s,frameState:r,status:on.REQUESTED},this.pendingTilesRegister.register(o,n),t().then(a=>{this._statusMap[s].status=on.COMPLETED;let{frameNumber:h,viewport:{id:c}}=this._statusMap[s].frameState;this.pendingTilesRegister.deregister(c,h),this._statusMap[s].callback(a,r)}).catch(a=>{this._statusMap[s].status=on.ERROR;let{frameNumber:h,viewport:{id:c}}=this._statusMap[s].frameState;this.pendingTilesRegister.deregister(c,h),i(a)})}}update(t,s){if(this._statusMap[t]){let{frameNumber:i,viewport:{id:r}}=this._statusMap[t].frameState;this.pendingTilesRegister.deregister(r,i);let{frameNumber:n,viewport:{id:o}}=s;this.pendingTilesRegister.register(o,n),this._statusMap[t].frameState=s}}find(t){return this._statusMap[t]}hasPendingTiles(t,s){return!this.pendingTilesRegister.isZero(t,s)}};var Ri=class extends Gt{_tileManager;constructor(t){super(t),this._tileManager=new Pi}traversalFinished(t){return!this._tileManager.hasPendingTiles(t.viewport.id,this._frameNumber||0)}shouldRefine(t,s){return t._lodJudge=xi(t,s),t._lodJudge==="DIG"}updateChildTiles(t,s){let i=t.header.children||[],r=t.children;for(let n of i){let o=`${n.id}-${s.viewport.id}`,a=r&&r.find(h=>h.id===o);if(a)a&&this.updateTile(a,s);else{let h=()=>this._loadTile(t,n.id,s);this._tileManager.find(o)?this._tileManager.update(o,s):this._tileManager.add(h,o,l=>this._onTileLoad(l,t,o),s)}}return!1}async _loadTile(t,s,i){if(!t.tileset.source.loadChildTileHeader)throw new Error("I3S source does not support child tile header loading");return await t.tileset.source.loadChildTileHeader(t,s,i)}_onTileLoad(t,s,i){if(t instanceof Error){s.tileset._onSourceError(t,s);return}let r=new Et(s.tileset,t,s,i);s.children.push(r);let n=this._tileManager.find(r.id).frameState;this.updateTile(r,n),this._frameNumber===n.frameNumber&&(this.traversalFinished(n)||new Date().getTime()-this.lastUpdate>this.updateDebounceTime)&&this.executeTraversal(r,n)}};function Ch(e){e("EPSG:4326","+title=WGS 84 (long/lat) +proj=longlat +ellps=WGS84 +datum=WGS84 +units=degrees"),e("EPSG:4269","+title=NAD83 (long/lat) +proj=longlat +a=6378137.0 +b=6356752.31414036 +ellps=GRS80 +datum=NAD83 +units=degrees"),e("EPSG:3857","+title=WGS 84 / Pseudo-Mercator +proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs");for(var t=1;t<=60;++t)e("EPSG:"+(32600+t),"+proj=utm +zone="+t+" +datum=WGS84 +units=m"),e("EPSG:"+(32700+t),"+proj=utm +zone="+t+" +south +datum=WGS84 +units=m");e("EPSG:5041","+title=WGS 84 / UPS North (E,N) +proj=stere +lat_0=90 +lon_0=0 +k=0.994 +x_0=2000000 +y_0=2000000 +datum=WGS84 +units=m"),e("EPSG:5042","+title=WGS 84 / UPS South (E,N) +proj=stere +lat_0=-90 +lon_0=0 +k=0.994 +x_0=2000000 +y_0=2000000 +datum=WGS84 +units=m"),e.WGS84=e["EPSG:4326"],e["EPSG:3785"]=e["EPSG:3857"],e.GOOGLE=e["EPSG:3857"],e["EPSG:900913"]=e["EPSG:3857"],e["EPSG:102113"]=e["EPSG:3857"]}var Pt=1,Rt=2,Vt=3,Ah=4,ns=5,an=6378137,Ih=6356752314e-3,hn=.0066943799901413165,re=484813681109536e-20,x=Math.PI/2,Oh=.16666666666666666,Nh=.04722222222222222,Lh=.022156084656084655,v=1e-10,B=.017453292519943295,X=57.29577951308232,O=Math.PI/4,Jt=Math.PI*2,j=3.14159265359;var ct={};ct.greenwich=0;ct.lisbon=-9.131906111111;ct.paris=2.337229166667;ct.bogota=-74.080916666667;ct.madrid=-3.687938888889;ct.rome=12.452333333333;ct.bern=7.439583333333;ct.jakarta=106.807719444444;ct.ferro=-17.666666666667;ct.brussels=4.367975;ct.stockholm=18.058277777778;ct.athens=23.7163375;ct.oslo=10.722916666667;var Gh=ct;var zh={mm:{to_meter:.001},cm:{to_meter:.01},ft:{to_meter:.3048},"us-ft":{to_meter:1200/3937},fath:{to_meter:1.8288},kmi:{to_meter:1852},"us-ch":{to_meter:20.1168402336805},"us-mi":{to_meter:1609.34721869444},km:{to_meter:1e3},"ind-ft":{to_meter:.30479841},"ind-yd":{to_meter:.91439523},mi:{to_meter:1609.344},yd:{to_meter:.9144},ch:{to_meter:20.1168},link:{to_meter:.201168},dm:{to_meter:.1},in:{to_meter:.0254},"ind-ch":{to_meter:20.11669506},"us-in":{to_meter:.025400050800101},"us-yd":{to_meter:.914401828803658}};var qh=/[\s_\-\/\(\)]/g;function _t(e,t){if(e[t])return e[t];for(var s=Object.keys(e),i=t.toLowerCase().replace(qh,""),r=-1,n,o;++r<s.length;)if(n=s[r],o=n.toLowerCase().replace(qh,""),o===i)return e[n]}function os(e){var t={},s=e.split("+").map(function(a){return a.trim()}).filter(function(a){return a}).reduce(function(a,h){var c=h.split("=");return c.push(!0),a[c[0].toLowerCase()]=c[1],a},{}),i,r,n,o={proj:"projName",datum:"datumCode",rf:function(a){t.rf=parseFloat(a)},lat_0:function(a){t.lat0=a*B},lat_1:function(a){t.lat1=a*B},lat_2:function(a){t.lat2=a*B},lat_ts:function(a){t.lat_ts=a*B},lon_0:function(a){t.long0=a*B},lon_wrap:function(a){t.long_wrap=parseFloat(a)*B},lon_1:function(a){t.long1=a*B},lon_2:function(a){t.long2=a*B},alpha:function(a){t.alpha=parseFloat(a)*B},gamma:function(a){t.rectified_grid_angle=parseFloat(a)*B},lonc:function(a){t.longc=a*B},x_0:function(a){t.x0=parseFloat(a)},y_0:function(a){t.y0=parseFloat(a)},k_0:function(a){t.k0=parseFloat(a)},k:function(a){t.k0=parseFloat(a)},a:function(a){t.a=parseFloat(a)},b:function(a){t.b=parseFloat(a)},r:function(a){t.a=t.b=parseFloat(a)},r_a:function(){t.R_A=!0},zone:function(a){t.zone=parseInt(a,10)},south:function(){t.utmSouth=!0},towgs84:function(a){t.datum_params=a.split(",").map(function(h){return parseFloat(h)})},to_meter:function(a){t.to_meter=parseFloat(a)},units:function(a){t.units=a;var h=_t(zh,a);h&&(t.to_meter=h.to_meter)},from_greenwich:function(a){t.from_greenwich=a*B},pm:function(a){var h=_t(Gh,a);t.from_greenwich=(h||parseFloat(a))*B},nadgrids:function(a){a==="@null"?t.datumCode="none":t.nadgrids=a},axis:function(a){var h="ewnsud";a.length===3&&h.indexOf(a.substr(0,1))!==-1&&h.indexOf(a.substr(1,1))!==-1&&h.indexOf(a.substr(2,1))!==-1&&(t.axis=a)},approx:function(){t.approx=!0},over:function(){t.over=!0}};for(i in s)r=s[i],i in o?(n=o[i],typeof n=="function"?n(r):t[n]=r):t[i]=r;return typeof t.datumCode=="string"&&t.datumCode!=="WGS84"&&(t.datumCode=t.datumCode.toLowerCase()),t.projStr=e,t}var cn=class{static getId(t){let s=t.find(i=>Array.isArray(i)&&i[0]==="ID");return s&&s.length>=3?{authority:s[1],code:parseInt(s[2],10)}:null}static convertUnit(t,s="unit"){if(!t||t.length<3)return{type:s,name:"unknown",conversion_factor:null};let i=t[1],r=parseFloat(t[2])||null,n=t.find(a=>Array.isArray(a)&&a[0]==="ID"),o=n?{authority:n[1],code:parseInt(n[2],10)}:null;return{type:s,name:i,conversion_factor:r,id:o}}static convertAxis(t){let s=t[1]||"Unknown",i,r=s.match(/^\((.)\)$/);if(r){let c=r[1].toUpperCase();if(c==="E")i="east";else if(c==="N")i="north";else if(c==="U")i="up";else if(t[2])i=t[2];else throw new Error(`Unknown axis abbreviation: ${c}`)}else i=t[2]||"unknown";let n=t.find(c=>Array.isArray(c)&&c[0]==="ORDER"),o=n?parseInt(n[1],10):null,a=t.find(c=>Array.isArray(c)&&(c[0]==="LENGTHUNIT"||c[0]==="ANGLEUNIT"||c[0]==="SCALEUNIT")),h=this.convertUnit(a);return{name:s,direction:i,unit:h,order:o}}static extractAxes(t){return t.filter(s=>Array.isArray(s)&&s[0]==="AXIS").map(s=>this.convertAxis(s)).sort((s,i)=>(s.order||0)-(i.order||0))}static convert(t,s={}){switch(t[0]){case"PROJCRS":s.type="ProjectedCRS",s.name=t[1],s.base_crs=t.find(d=>Array.isArray(d)&&d[0]==="BASEGEOGCRS")?this.convert(t.find(d=>Array.isArray(d)&&d[0]==="BASEGEOGCRS")):null,s.conversion=t.find(d=>Array.isArray(d)&&d[0]==="CONVERSION")?this.convert(t.find(d=>Array.isArray(d)&&d[0]==="CONVERSION")):null;let i=t.find(d=>Array.isArray(d)&&d[0]==="CS");i&&(s.coordinate_system={subtype:i[1],axis:this.extractAxes(t)});let r=t.find(d=>Array.isArray(d)&&d[0]==="LENGTHUNIT");if(r){let d=this.convertUnit(r);s.coordinate_system.unit=d}s.id=this.getId(t);break;case"BASEGEOGCRS":case"GEOGCRS":case"GEODCRS":s.type=t[0]==="GEODCRS"?"GeodeticCRS":"GeographicCRS",s.name=t[1];let n=t.find(d=>Array.isArray(d)&&(d[0]==="DATUM"||d[0]==="ENSEMBLE"));if(n){let d=this.convert(n);n[0]==="ENSEMBLE"?s.datum_ensemble=d:s.datum=d;let g=t.find(_=>Array.isArray(_)&&_[0]==="PRIMEM");g&&g[1]!=="Greenwich"&&(d.prime_meridian={name:g[1],longitude:parseFloat(g[2])})}let o=t.find(d=>Array.isArray(d)&&d[0]==="CS");s.coordinate_system={subtype:o?o[1]:"ellipsoidal",axis:this.extractAxes(t)},s.id=this.getId(t);break;case"DATUM":s.type="GeodeticReferenceFrame",s.name=t[1],s.ellipsoid=t.find(d=>Array.isArray(d)&&d[0]==="ELLIPSOID")?this.convert(t.find(d=>Array.isArray(d)&&d[0]==="ELLIPSOID")):null;break;case"ENSEMBLE":s.type="DatumEnsemble",s.name=t[1],s.members=t.filter(d=>Array.isArray(d)&&d[0]==="MEMBER").map(d=>({type:"DatumEnsembleMember",name:d[1],id:this.getId(d)}));let a=t.find(d=>Array.isArray(d)&&d[0]==="ENSEMBLEACCURACY");a&&(s.accuracy=parseFloat(a[1]));let h=t.find(d=>Array.isArray(d)&&d[0]==="ELLIPSOID");h&&(s.ellipsoid=this.convert(h)),s.id=this.getId(t);break;case"ELLIPSOID":s.type="Ellipsoid",s.name=t[1],s.semi_major_axis=parseFloat(t[2]),s.inverse_flattening=parseFloat(t[3]);let c=t.find(d=>Array.isArray(d)&&d[0]==="LENGTHUNIT")?this.convert(t.find(d=>Array.isArray(d)&&d[0]==="LENGTHUNIT"),s):null;break;case"CONVERSION":s.type="Conversion",s.name=t[1],s.method=t.find(d=>Array.isArray(d)&&d[0]==="METHOD")?this.convert(t.find(d=>Array.isArray(d)&&d[0]==="METHOD")):null,s.parameters=t.filter(d=>Array.isArray(d)&&d[0]==="PARAMETER").map(d=>this.convert(d));break;case"METHOD":s.type="Method",s.name=t[1],s.id=this.getId(t);break;case"PARAMETER":s.type="Parameter",s.name=t[1],s.value=parseFloat(t[2]),s.unit=this.convertUnit(t.find(d=>Array.isArray(d)&&(d[0]==="LENGTHUNIT"||d[0]==="ANGLEUNIT"||d[0]==="SCALEUNIT"))),s.id=this.getId(t);break;case"BOUNDCRS":s.type="BoundCRS";let l=t.find(d=>Array.isArray(d)&&d[0]==="SOURCECRS");if(l){let d=l.find(g=>Array.isArray(g));s.source_crs=d?this.convert(d):null}let u=t.find(d=>Array.isArray(d)&&d[0]==="TARGETCRS");if(u){let d=u.find(g=>Array.isArray(g));s.target_crs=d?this.convert(d):null}let f=t.find(d=>Array.isArray(d)&&d[0]==="ABRIDGEDTRANSFORMATION");f?s.transformation=this.convert(f):s.transformation=null;break;case"ABRIDGEDTRANSFORMATION":if(s.type="Transformation",s.name=t[1],s.method=t.find(d=>Array.isArray(d)&&d[0]==="METHOD")?this.convert(t.find(d=>Array.isArray(d)&&d[0]==="METHOD")):null,s.parameters=t.filter(d=>Array.isArray(d)&&(d[0]==="PARAMETER"||d[0]==="PARAMETERFILE")).map(d=>{if(d[0]==="PARAMETER")return this.convert(d);if(d[0]==="PARAMETERFILE")return{name:d[1],value:d[2],id:{authority:"EPSG",code:8656}}}),s.parameters.length===7){let d=s.parameters[6];d.name==="Scale difference"&&(d.value=Math.round((d.value-1)*1e12)/1e6)}s.id=this.getId(t);break;case"AXIS":s.coordinate_system||(s.coordinate_system={type:"unspecified",axis:[]}),s.coordinate_system.axis.push(this.convertAxis(t));break;case"LENGTHUNIT":let m=this.convertUnit(t,"LinearUnit");s.coordinate_system&&s.coordinate_system.axis&&s.coordinate_system.axis.forEach(d=>{d.unit||(d.unit=m)}),m.conversion_factor&&m.conversion_factor!==1&&s.semi_major_axis&&(s.semi_major_axis={value:s.semi_major_axis,unit:m});break;default:s.keyword=t[0];break}return s}},Bh=cn;function Dh(e){return Bh.convert(e)}function Fh(e){let t=e.toUpperCase();return t.includes("PROJCRS")||t.includes("GEOGCRS")||t.includes("BOUNDCRS")||t.includes("VERTCRS")||t.includes("LENGTHUNIT")||t.includes("ANGLEUNIT")||t.includes("SCALEUNIT")?"WKT2":(t.includes("PROJCS")||t.includes("GEOGCS")||t.includes("LOCAL_CS")||t.includes("VERT_CS")||t.includes("UNIT"),"WKT1")}var Uh=Ud,as=1,kh=2,Vh=3,Ci=4,jh=5,ln=-1,Bd=/\s/,Dd=/[A-Za-z]/,Fd=/[A-Za-z84_]/,Ai=/[,\]]/,Wh=/[\d\.E\-\+]/;function jt(e){if(typeof e!="string")throw new Error("not a string");this.text=e.trim(),this.level=0,this.place=0,this.root=null,this.stack=[],this.currentObject=null,this.state=as}jt.prototype.readCharicter=function(){var e=this.text[this.place++];if(this.state!==Ci)for(;Bd.test(e);){if(this.place>=this.text.length)return;e=this.text[this.place++]}switch(this.state){case as:return this.neutral(e);case kh:return this.keyword(e);case Ci:return this.quoted(e);case jh:return this.afterquote(e);case Vh:return this.number(e);case ln:return}};jt.prototype.afterquote=function(e){if(e==='"'){this.word+='"',this.state=Ci;return}if(Ai.test(e)){this.word=this.word.trim(),this.afterItem(e);return}throw new Error(`havn't handled "`+e+'" in afterquote yet, index '+this.place)};jt.prototype.afterItem=function(e){if(e===","){this.word!==null&&this.currentObject.push(this.word),this.word=null,this.state=as;return}if(e==="]"){this.level--,this.word!==null&&(this.currentObject.push(this.word),this.word=null),this.state=as,this.currentObject=this.stack.pop(),this.currentObject||(this.state=ln);return}};jt.prototype.number=function(e){if(Wh.test(e)){this.word+=e;return}if(Ai.test(e)){this.word=parseFloat(this.word),this.afterItem(e);return}throw new Error(`havn't handled "`+e+'" in number yet, index '+this.place)};jt.prototype.quoted=function(e){if(e==='"'){this.state=jh;return}this.word+=e};jt.prototype.keyword=function(e){if(Fd.test(e)){this.word+=e;return}if(e==="["){var t=[];t.push(this.word),this.level++,this.root===null?this.root=t:this.currentObject.push(t),this.stack.push(this.currentObject),this.currentObject=t,this.state=as;return}if(Ai.test(e)){this.afterItem(e);return}throw new Error(`havn't handled "`+e+'" in keyword yet, index '+this.place)};jt.prototype.neutral=function(e){if(Dd.test(e)){this.word=e,this.state=kh;return}if(e==='"'){this.word="",this.state=Ci;return}if(Wh.test(e)){this.word=e,this.state=Vh;return}if(Ai.test(e)){this.afterItem(e);return}throw new Error(`havn't handled "`+e+'" in neutral yet, index '+this.place)};jt.prototype.output=function(){for(;this.place<this.text.length;)this.readCharicter();if(this.state===ln)return this.root;throw new Error('unable to parse string "'+this.text+'". State is '+this.state)};function Ud(e){var t=new jt(e);return t.output()}function un(e,t,s){Array.isArray(t)&&(s.unshift(t),t=null);var i=t?{}:e,r=s.reduce(function(n,o){return ne(o,n),n},i);t&&(e[t]=r)}function ne(e,t){if(!Array.isArray(e)){t[e]=!0;return}var s=e.shift();if(s==="PARAMETER"&&(s=e.shift()),e.length===1){if(Array.isArray(e[0])){t[s]={},ne(e[0],t[s]);return}t[s]=e[0];return}if(!e.length){t[s]=!0;return}if(s==="TOWGS84"){t[s]=e;return}if(s==="AXIS"){s in t||(t[s]=[]),t[s].push(e);return}Array.isArray(s)||(t[s]={});var i;switch(s){case"UNIT":case"PRIMEM":case"VERT_DATUM":t[s]={name:e[0].toLowerCase(),convert:e[1]},e.length===3&&ne(e[2],t[s]);return;case"SPHEROID":case"ELLIPSOID":t[s]={name:e[0],a:e[1],rf:e[2]},e.length===4&&ne(e[3],t[s]);return;case"EDATUM":case"ENGINEERINGDATUM":case"LOCAL_DATUM":case"DATUM":case"VERT_CS":case"VERTCRS":case"VERTICALCRS":e[0]=["name",e[0]],un(t,s,e);return;case"COMPD_CS":case"COMPOUNDCRS":case"FITTED_CS":case"PROJECTEDCRS":case"PROJCRS":case"GEOGCS":case"GEOCCS":case"PROJCS":case"LOCAL_CS":case"GEODCRS":case"GEODETICCRS":case"GEODETICDATUM":case"ENGCRS":case"ENGINEERINGCRS":e[0]=["name",e[0]],un(t,s,e),t[s].type=s;return;default:for(i=-1;++i<e.length;)if(!Array.isArray(e[i]))return ne(e,t[s]);return un(t,s,e)}}var kd=.017453292519943295;function Mt(e){return e*kd}function Ii(e){let t=(e.projName||"").toLowerCase().replace(/_/g," ");e.long0===void 0&&e.longc!==void 0&&(e.long0=e.longc),!e.lat_ts&&e.lat1&&(t==="stereographic south pole"||t==="polar stereographic (variant b)")?(e.lat0=Mt(e.lat1>0?90:-90),e.lat_ts=e.lat1,delete e.lat1):!e.lat_ts&&e.lat0&&(t==="polar stereographic"||t==="polar stereographic (variant a)")&&(e.lat_ts=e.lat0,e.lat0=Mt(e.lat0>0?90:-90),delete e.lat1)}function Hh(e){let t={units:null,to_meter:void 0};return typeof e=="string"?(t.units=e.toLowerCase(),t.units==="metre"&&(t.units="meter"),t.units==="meter"&&(t.to_meter=1)):e&&e.name&&(t.units=e.name.toLowerCase(),t.units==="metre"&&(t.units="meter"),t.to_meter=e.conversion_factor),t}function Yh(e){return typeof e=="object"?e.value*e.unit.conversion_factor:e}function Zh(e,t){e.ellipsoid.radius?(t.a=e.ellipsoid.radius,t.rf=0):(t.a=Yh(e.ellipsoid.semi_major_axis),e.ellipsoid.inverse_flattening!==void 0?t.rf=e.ellipsoid.inverse_flattening:e.ellipsoid.semi_major_axis!==void 0&&e.ellipsoid.semi_minor_axis!==void 0&&(t.rf=t.a/(t.a-Yh(e.ellipsoid.semi_minor_axis))))}function hs(e,t={}){return!e||typeof e!="object"?e:e.type==="BoundCRS"?(hs(e.source_crs,t),e.transformation&&(e.transformation.method&&e.transformation.method.name==="NTv2"?t.nadgrids=e.transformation.parameters[0].value:t.datum_params=e.transformation.parameters.map(s=>s.value)),t):(Object.keys(e).forEach(s=>{let i=e[s];if(i!==null)switch(s){case"name":if(t.srsCode)break;t.name=i,t.srsCode=i;break;case"type":i==="GeographicCRS"?t.projName="longlat":i==="GeodeticCRS"?e.coordinate_system&&e.coordinate_system.subtype==="Cartesian"?t.projName="geocent":t.projName="longlat":i==="ProjectedCRS"&&e.conversion&&e.conversion.method&&(t.projName=e.conversion.method.name);break;case"datum":case"datum_ensemble":i.ellipsoid&&(t.ellps=i.ellipsoid.name,Zh(i,t)),i.prime_meridian&&(t.from_greenwich=i.prime_meridian.longitude*Math.PI/180);break;case"ellipsoid":t.ellps=i.name,Zh(i,t);break;case"prime_meridian":t.long0=(i.longitude||0)*Math.PI/180;break;case"coordinate_system":if(i.axis){let r={east:"e",north:"n",west:"w",south:"s",up:"u",down:"d",geocentricx:"e",geocentricy:"n",geocentricz:"u"},n=i.axis.map(o=>r[o.direction.toLowerCase()]);if(n.every(Boolean)&&(t.axis=n.join(""),t.axis.length===2&&(t.axis+="u")),i.unit){let{units:o,to_meter:a}=Hh(i.unit);t.units=o,t.to_meter=a}else if(i.axis[0]&&i.axis[0].unit){let{units:o,to_meter:a}=Hh(i.axis[0].unit);t.units=o,t.to_meter=a}}break;case"id":i.authority&&i.code&&(t.title=i.authority+":"+i.code);break;case"conversion":i.method&&i.method.name&&(t.projName=i.method.name),i.parameters&&i.parameters.forEach(r=>{let n=r.name.toLowerCase().replace(/\s+/g,"_"),o=r.value;r.unit&&r.unit.conversion_factor?t[n]=o*r.unit.conversion_factor:r.unit==="degree"?t[n]=o*Math.PI/180:t[n]=o});break;case"unit":i.name&&(t.units=i.name.toLowerCase(),t.units==="metre"&&(t.units="meter")),i.conversion_factor&&(t.to_meter=i.conversion_factor);break;case"base_crs":hs(i,t),t.datumCode=i.id?i.id.authority+"_"+i.id.code:i.name;break;default:break}}),t.latitude_of_false_origin!==void 0&&(t.lat0=t.latitude_of_false_origin),t.longitude_of_false_origin!==void 0&&(t.long0=t.longitude_of_false_origin),t.latitude_of_standard_parallel!==void 0&&(t.lat0=t.latitude_of_standard_parallel,t.lat1=t.latitude_of_standard_parallel),t.latitude_of_1st_standard_parallel!==void 0&&(t.lat1=t.latitude_of_1st_standard_parallel),t.latitude_of_2nd_standard_parallel!==void 0&&(t.lat2=t.latitude_of_2nd_standard_parallel),t.latitude_of_projection_centre!==void 0&&(t.lat0=t.latitude_of_projection_centre),t.longitude_of_projection_centre!==void 0&&(t.longc=t.longitude_of_projection_centre),t.easting_at_false_origin!==void 0&&(t.x0=t.easting_at_false_origin),t.northing_at_false_origin!==void 0&&(t.y0=t.northing_at_false_origin),t.latitude_of_natural_origin!==void 0&&(t.lat0=t.latitude_of_natural_origin),t.longitude_of_natural_origin!==void 0&&(t.long0=t.longitude_of_natural_origin),t.longitude_of_origin!==void 0&&(t.long0=t.longitude_of_origin),t.false_easting!==void 0&&(t.x0=t.false_easting),t.easting_at_projection_centre&&(t.x0=t.easting_at_projection_centre),t.false_northing!==void 0&&(t.y0=t.false_northing),t.northing_at_projection_centre&&(t.y0=t.northing_at_projection_centre),t.standard_parallel_1!==void 0&&(t.lat1=t.standard_parallel_1),t.standard_parallel_2!==void 0&&(t.lat2=t.standard_parallel_2),t.scale_factor_at_natural_origin!==void 0&&(t.k0=t.scale_factor_at_natural_origin),t.scale_factor_at_projection_centre!==void 0&&(t.k0=t.scale_factor_at_projection_centre),t.scale_factor_on_pseudo_standard_parallel!==void 0&&(t.k0=t.scale_factor_on_pseudo_standard_parallel),t.azimuth!==void 0&&(t.alpha=t.azimuth),t.azimuth_at_projection_centre!==void 0&&(t.alpha=t.azimuth_at_projection_centre),t.angle_from_rectified_to_skew_grid&&(t.rectified_grid_angle=t.angle_from_rectified_to_skew_grid),Ii(t),t)}var Vd=["PROJECTEDCRS","PROJCRS","GEOGCS","GEOCCS","PROJCS","LOCAL_CS","GEODCRS","GEODETICCRS","GEODETICDATUM","ENGCRS","ENGINEERINGCRS"];function jd(e,t){var s=t[0],i=t[1];!(s in e)&&i in e&&(e[s]=e[i],t.length===3&&(e[s]=t[2](e[s])))}function Xh(e){for(var t=Object.keys(e),s=0,i=t.length;s<i;++s){var r=t[s];Vd.indexOf(r)!==-1&&Wd(e[r]),typeof e[r]=="object"&&Xh(e[r])}}function Wd(e){if(e.AUTHORITY){var t=Object.keys(e.AUTHORITY)[0];t&&t in e.AUTHORITY&&(e.title=t+":"+e.AUTHORITY[t])}if(e.type==="GEOGCS"?e.projName="longlat":e.type==="LOCAL_CS"?(e.projName="identity",e.local=!0):typeof e.PROJECTION=="object"?e.projName=Object.keys(e.PROJECTION)[0]:e.projName=e.PROJECTION,e.AXIS){for(var s="",i=0,r=e.AXIS.length;i<r;++i){var n=[e.AXIS[i][0].toLowerCase(),e.AXIS[i][1].toLowerCase()];n[0].indexOf("north")!==-1||(n[0]==="y"||n[0]==="lat")&&n[1]==="north"?s+="n":n[0].indexOf("south")!==-1||(n[0]==="y"||n[0]==="lat")&&n[1]==="south"?s+="s":n[0].indexOf("east")!==-1||(n[0]==="x"||n[0]==="lon")&&n[1]==="east"?s+="e":(n[0].indexOf("west")!==-1||(n[0]==="x"||n[0]==="lon")&&n[1]==="west")&&(s+="w")}s.length===2&&(s+="u"),s.length===3&&(e.axis=s)}e.UNIT&&(e.units=e.UNIT.name.toLowerCase(),e.units==="metre"&&(e.units="meter"),e.UNIT.convert&&(e.type==="GEOGCS"?e.DATUM&&e.DATUM.SPHEROID&&(e.to_meter=e.UNIT.convert*e.DATUM.SPHEROID.a):e.to_meter=e.UNIT.convert));var o=e.GEOGCS;e.type==="GEOGCS"&&(o=e),o&&(o.PRIMEM&&o.PRIMEM.convert&&(e.from_greenwich=Mt(o.PRIMEM.convert)),o.DATUM?e.datumCode=o.DATUM.name.toLowerCase():e.datumCode=o.name.toLowerCase(),e.datumCode.slice(0,2)==="d_"&&(e.datumCode=e.datumCode.slice(2)),e.datumCode==="new_zealand_1949"&&(e.datumCode="nzgd49"),(e.datumCode==="wgs_1984"||e.datumCode==="world_geodetic_system_1984")&&(e.PROJECTION==="Mercator_Auxiliary_Sphere"&&(e.sphere=!0),e.datumCode="wgs84"),e.datumCode==="belge_1972"&&(e.datumCode="rnb72"),o.DATUM&&o.DATUM.SPHEROID&&(e.ellps=o.DATUM.SPHEROID.name.replace("_19","").replace(/[Cc]larke\_18/,"clrk"),e.ellps.toLowerCase().slice(0,13)==="international"&&(e.ellps="intl"),e.a=o.DATUM.SPHEROID.a,e.rf=parseFloat(o.DATUM.SPHEROID.rf)),o.DATUM&&o.DATUM.TOWGS84&&(e.datum_params=o.DATUM.TOWGS84),~e.datumCode.indexOf("osgb_1936")&&(e.datumCode="osgb36"),~e.datumCode.indexOf("osni_1952")&&(e.datumCode="osni52"),(~e.datumCode.indexOf("tm65")||~e.datumCode.indexOf("geodetic_datum_of_1965"))&&(e.datumCode="ire65"),e.datumCode==="ch1903+"&&(e.datumCode="ch1903"),~e.datumCode.indexOf("israel")&&(e.datumCode="isr93")),e.b&&!isFinite(e.b)&&(e.b=e.a),e.rectified_grid_angle&&(e.rectified_grid_angle=Mt(e.rectified_grid_angle));function a(l){var u=e.to_meter||1;return l*u}var h=function(l){return jd(e,l)},c=[["standard_parallel_1","Standard_Parallel_1"],["standard_parallel_1","Latitude of 1st standard parallel"],["standard_parallel_2","Standard_Parallel_2"],["standard_parallel_2","Latitude of 2nd standard parallel"],["false_easting","False_Easting"],["false_easting","False easting"],["false-easting","Easting at false origin"],["false_northing","False_Northing"],["false_northing","False northing"],["false_northing","Northing at false origin"],["central_meridian","Central_Meridian"],["central_meridian","Longitude of natural origin"],["central_meridian","Longitude of false origin"],["latitude_of_origin","Latitude_Of_Origin"],["latitude_of_origin","Central_Parallel"],["latitude_of_origin","Latitude of natural origin"],["latitude_of_origin","Latitude of false origin"],["scale_factor","Scale_Factor"],["k0","scale_factor"],["latitude_of_center","Latitude_Of_Center"],["latitude_of_center","Latitude_of_center"],["lat0","latitude_of_center",Mt],["longitude_of_center","Longitude_Of_Center"],["longitude_of_center","Longitude_of_center"],["longc","longitude_of_center",Mt],["x0","false_easting",a],["y0","false_northing",a],["long0","central_meridian",Mt],["lat0","latitude_of_origin",Mt],["lat0","standard_parallel_1",Mt],["lat1","standard_parallel_1",Mt],["lat2","standard_parallel_2",Mt],["azimuth","Azimuth"],["alpha","azimuth",Mt],["srsCode","name"]];c.forEach(h),Ii(e)}function Ee(e){if(typeof e=="object")return hs(e);let t=Fh(e);var s=Uh(e);if(t==="WKT2"){let n=Dh(s);return hs(n)}var i=s[0],r={};return ne(s,r),Xh(r),r[i]}function lt(e){var t=this;if(arguments.length===2){var s=arguments[1];typeof s=="string"?s.charAt(0)==="+"?lt[e]=os(arguments[1]):lt[e]=Ee(arguments[1]):s&&typeof s=="object"&&!("projName"in s)?lt[e]=Ee(arguments[1]):(lt[e]=s,s||delete lt[e])}else if(arguments.length===1){if(Array.isArray(e))return e.map(function(i){return Array.isArray(i)?lt.apply(t,i):lt(i)});if(typeof e=="string"){if(e in lt)return lt[e]}else"EPSG"in e?lt["EPSG:"+e.EPSG]=e:"ESRI"in e?lt["ESRI:"+e.ESRI]=e:"IAU2000"in e?lt["IAU2000:"+e.IAU2000]=e:console.log(e);return}}Ch(lt);var we=lt;function Hd(e){return typeof e=="string"}function Yd(e){return e in we}function Zd(e){return e.indexOf("+")!==0&&e.indexOf("[")!==-1||typeof e=="object"&&!("srsCode"in e)}var $h=["3857","900913","3785","102113"];function Xd(e){if(e.title)return e.title.toLowerCase().indexOf("epsg:")===0&&$h.indexOf(e.title.substr(5))>-1;var t=_t(e,"authority");if(t){var s=_t(t,"epsg");return s&&$h.indexOf(s)>-1}}function $d(e){var t=_t(e,"extension");if(t)return _t(t,"proj4")}function Qd(e){return e[0]==="+"}function Kd(e){let t;if(Hd(e))if(Yd(e))t=we[e];else if(Zd(e)){t=Ee(e);var s=$d(t);s&&(t=os(s))}else Qd(e)&&(t=os(e));else"projName"in e?t=e:t=Ee(e);return t&&Xd(t)?we["EPSG:3857"]:t}var Qh=Kd;function fn(e,t){e=e||{};var s,i;if(!t)return e;for(i in t)s=t[i],s!==void 0&&(e[i]=s);return e}function rt(e,t,s){var i=e*t;return s/Math.sqrt(1-i*i)}function zt(e){return e<0?-1:1}function S(e,t){return t||Math.abs(e)<=j?e:e-zt(e)*Jt}function ht(e,t,s){var i=e*s,r=.5*e;return i=Math.pow((1-i)/(1+i),r),Math.tan(.5*(x-t))/i}function Wt(e,t){for(var s=.5*e,i,r,n=x-2*Math.atan(t),o=0;o<=15;o++)if(i=e*Math.sin(n),r=x-2*Math.atan(t*Math.pow((1-i)/(1+i),s))-n,n+=r,Math.abs(r)<=1e-10)return n;return-9999}function Jd(){var e=this.b/this.a;this.es=1-e*e,"x0"in this||(this.x0=0),"y0"in this||(this.y0=0),this.long0=this.long0||0,this.e=Math.sqrt(this.es),this.lat_ts?this.sphere?this.k0=Math.cos(this.lat_ts):this.k0=rt(this.e,Math.sin(this.lat_ts),Math.cos(this.lat_ts)):this.k0||(this.k?this.k0=this.k:this.k0=1)}function tm(e){var t=e.x,s=e.y;if(s*X>90&&s*X<-90&&t*X>180&&t*X<-180)return null;var i,r;if(Math.abs(Math.abs(s)-x)<=v)return null;if(this.sphere)i=this.x0+this.a*this.k0*S(t-this.long0,this.over),r=this.y0+this.a*this.k0*Math.log(Math.tan(O+.5*s));else{var n=Math.sin(s),o=ht(this.e,s,n);i=this.x0+this.a*this.k0*S(t-this.long0,this.over),r=this.y0-this.a*this.k0*Math.log(o)}return e.x=i,e.y=r,e}function em(e){var t=e.x-this.x0,s=e.y-this.y0,i,r;if(this.sphere)r=x-2*Math.atan(Math.exp(-s/(this.a*this.k0)));else{var n=Math.exp(-s/(this.a*this.k0));if(r=Wt(this.e,n),r===-9999)return null}return i=S(this.long0+t/(this.a*this.k0),this.over),e.x=i,e.y=r,e}var sm=["Mercator","Popular Visualisation Pseudo Mercator","Mercator_1SP","Mercator_Auxiliary_Sphere","Mercator_Variant_A","merc"],Kh={init:Jd,forward:tm,inverse:em,names:sm};function im(){}function Jh(e){return e}var dn=["longlat","identity"],tc={init:im,forward:Jh,inverse:Jh,names:dn};var rm=[Kh,tc],oe={},Te=[];function ec(e,t){var s=Te.length;return e.names?(Te[s]=e,e.names.forEach(function(i){oe[i.toLowerCase()]=s}),this):(console.log(t),!0)}function mn(e){return e.replace(/[-\(\)\s]+/g," ").trim().replace(/ /g,"_")}function nm(e){if(!e)return!1;var t=e.toLowerCase();if(typeof oe[t]<"u"&&Te[oe[t]]||(t=mn(t),t in oe&&Te[oe[t]]))return Te[oe[t]]}function om(){rm.forEach(ec)}var sc={start:om,add:ec,get:nm};var am={MERIT:{a:6378137,rf:298.257,ellipseName:"MERIT 1983"},SGS85:{a:6378136,rf:298.257,ellipseName:"Soviet Geodetic System 85"},GRS80:{a:6378137,rf:298.257222101,ellipseName:"GRS 1980(IUGG, 1980)"},IAU76:{a:6378140,rf:298.257,ellipseName:"IAU 1976"},airy:{a:6377563396e-3,b:635625691e-2,ellipseName:"Airy 1830"},APL4:{a:6378137,rf:298.25,ellipseName:"Appl. Physics. 1965"},NWL9D:{a:6378145,rf:298.25,ellipseName:"Naval Weapons Lab., 1965"},mod_airy:{a:6377340189e-3,b:6356034446e-3,ellipseName:"Modified Airy"},andrae:{a:637710443e-2,rf:300,ellipseName:"Andrae 1876 (Den., Iclnd.)"},aust_SA:{a:6378160,rf:298.25,ellipseName:"Australian Natl & S. Amer. 1969"},GRS67:{a:6378160,rf:298.247167427,ellipseName:"GRS 67(IUGG 1967)"},bessel:{a:6377397155e-3,rf:299.1528128,ellipseName:"Bessel 1841"},bess_nam:{a:6377483865e-3,rf:299.1528128,ellipseName:"Bessel 1841 (Namibia)"},clrk66:{a:63782064e-1,b:63565838e-1,ellipseName:"Clarke 1866"},clrk80:{a:6378249145e-3,rf:293.4663,ellipseName:"Clarke 1880 mod."},clrk80ign:{a:63782492e-1,b:6356515,rf:293.4660213,ellipseName:"Clarke 1880 (IGN)"},clrk58:{a:6378293645208759e-9,rf:294.2606763692654,ellipseName:"Clarke 1858"},CPM:{a:63757387e-1,rf:334.29,ellipseName:"Comm. des Poids et Mesures 1799"},delmbr:{a:6376428,rf:311.5,ellipseName:"Delambre 1810 (Belgium)"},engelis:{a:637813605e-2,rf:298.2566,ellipseName:"Engelis 1985"},evrst30:{a:6377276345e-3,rf:300.8017,ellipseName:"Everest 1830"},evrst48:{a:6377304063e-3,rf:300.8017,ellipseName:"Everest 1948"},evrst56:{a:6377301243e-3,rf:300.8017,ellipseName:"Everest 1956"},evrst69:{a:6377295664e-3,rf:300.8017,ellipseName:"Everest 1969"},evrstSS:{a:6377298556e-3,rf:300.8017,ellipseName:"Everest (Sabah & Sarawak)"},fschr60:{a:6378166,rf:298.3,ellipseName:"Fischer (Mercury Datum) 1960"},fschr60m:{a:6378155,rf:298.3,ellipseName:"Fischer 1960"},fschr68:{a:6378150,rf:298.3,ellipseName:"Fischer 1968"},helmert:{a:6378200,rf:298.3,ellipseName:"Helmert 1906"},hough:{a:6378270,rf:297,ellipseName:"Hough"},intl:{a:6378388,rf:297,ellipseName:"International 1909 (Hayford)"},kaula:{a:6378163,rf:298.24,ellipseName:"Kaula 1961"},lerch:{a:6378139,rf:298.257,ellipseName:"Lerch 1979"},mprts:{a:6397300,rf:191,ellipseName:"Maupertius 1738"},new_intl:{a:63781575e-1,b:63567722e-1,ellipseName:"New International 1967"},plessis:{a:6376523,b:6355863,ellipseName:"Plessis 1817 (France)"},krass:{a:6378245,rf:298.3,ellipseName:"Krassovsky, 1942"},SEasia:{a:6378155,b:63567733205e-4,ellipseName:"Southeast Asia"},walbeck:{a:6376896,b:63558348467e-4,ellipseName:"Walbeck"},WGS60:{a:6378165,rf:298.3,ellipseName:"WGS 60"},WGS66:{a:6378145,rf:298.25,ellipseName:"WGS 66"},WGS7:{a:6378135,rf:298.26,ellipseName:"WGS 72"},WGS84:{a:6378137,rf:298.257223563,ellipseName:"WGS 84"},sphere:{a:6370997,b:6370997,ellipseName:"Normal Sphere (r=6370997)"}},pn=am;var hm=pn.WGS84;function ic(e,t,s,i){var r=e*e,n=t*t,o=(r-n)/r,a=0;i?(e*=1-o*(Oh+o*(Nh+o*Lh)),r=e*e,o=0):a=Math.sqrt(o);var h=(r-n)/n;return{es:o,e:a,ep2:h}}function rc(e,t,s,i,r){if(!e){var n=_t(pn,i);n||(n=hm),e=n.a,t=n.b,s=n.rf}return s&&!t&&(t=(1-1/s)*e),(s===0||Math.abs(e-t)<v)&&(r=!0,t=e),{a:e,b:t,rf:s,sphere:r}}var Ni={wgs84:{towgs84:"0,0,0",ellipse:"WGS84",datumName:"WGS84"},ch1903:{towgs84:"674.374,15.056,405.346",ellipse:"bessel",datumName:"swiss"},ggrs87:{towgs84:"-199.87,74.79,246.62",ellipse:"GRS80",datumName:"Greek_Geodetic_Reference_System_1987"},nad83:{towgs84:"0,0,0",ellipse:"GRS80",datumName:"North_American_Datum_1983"},nad27:{nadgrids:"@conus,@alaska,@ntv2_0.gsb,@ntv1_can.dat",ellipse:"clrk66",datumName:"North_American_Datum_1927"},potsdam:{towgs84:"598.1,73.7,418.2,0.202,0.045,-2.455,6.7",ellipse:"bessel",datumName:"Potsdam Rauenberg 1950 DHDN"},carthage:{towgs84:"-263.0,6.0,431.0",ellipse:"clrk80ign",datumName:"Carthage 1934 Tunisia"},hermannskogel:{towgs84:"577.326,90.129,463.919,5.137,1.474,5.297,2.4232",ellipse:"bessel",datumName:"Hermannskogel"},mgi:{towgs84:"577.326,90.129,463.919,5.137,1.474,5.297,2.4232",ellipse:"bessel",datumName:"Militar-Geographische Institut"},osni52:{towgs84:"482.530,-130.596,564.557,-1.042,-0.214,-0.631,8.15",ellipse:"airy",datumName:"Irish National"},ire65:{towgs84:"482.530,-130.596,564.557,-1.042,-0.214,-0.631,8.15",ellipse:"mod_airy",datumName:"Ireland 1965"},rassadiran:{towgs84:"-133.63,-157.5,-158.62",ellipse:"intl",datumName:"Rassadiran"},nzgd49:{towgs84:"59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993",ellipse:"intl",datumName:"New Zealand Geodetic Datum 1949"},osgb36:{towgs84:"446.448,-125.157,542.060,0.1502,0.2470,0.8421,-20.4894",ellipse:"airy",datumName:"Ordnance Survey of Great Britain 1936"},s_jtsk:{towgs84:"589,76,480",ellipse:"bessel",datumName:"S-JTSK (Ferro)"},beduaram:{towgs84:"-106,-87,188",ellipse:"clrk80",datumName:"Beduaram"},gunung_segara:{towgs84:"-403,684,41",ellipse:"bessel",datumName:"Gunung Segara Jakarta"},rnb72:{towgs84:"106.869,-52.2978,103.724,-0.33657,0.456955,-1.84218,1",ellipse:"intl",datumName:"Reseau National Belge 1972"},EPSG_5451:{towgs84:"6.41,-49.05,-11.28,1.5657,0.5242,6.9718,-5.7649"},IGNF_LURESG:{towgs84:"-192.986,13.673,-39.309,-0.4099,-2.9332,2.6881,0.43"},EPSG_4614:{towgs84:"-119.4248,-303.65872,-11.00061,1.164298,0.174458,1.096259,3.657065"},EPSG_4615:{towgs84:"-494.088,-312.129,279.877,-1.423,-1.013,1.59,-0.748"},ESRI_37241:{towgs84:"-76.822,257.457,-12.817,2.136,-0.033,-2.392,-0.031"},ESRI_37249:{towgs84:"-440.296,58.548,296.265,1.128,10.202,4.559,-0.438"},ESRI_37245:{towgs84:"-511.151,-181.269,139.609,1.05,2.703,1.798,3.071"},EPSG_4178:{towgs84:"24.9,-126.4,-93.2,-0.063,-0.247,-0.041,1.01"},EPSG_4622:{towgs84:"-472.29,-5.63,-304.12,0.4362,-0.8374,0.2563,1.8984"},EPSG_4625:{towgs84:"126.93,547.94,130.41,-2.7867,5.1612,-0.8584,13.8227"},EPSG_5252:{towgs84:"0.023,0.036,-0.068,0.00176,0.00912,-0.01136,0.00439"},EPSG_4314:{towgs84:"597.1,71.4,412.1,0.894,0.068,-1.563,7.58"},EPSG_4282:{towgs84:"-178.3,-316.7,-131.5,5.278,6.077,10.979,19.166"},EPSG_4231:{towgs84:"-83.11,-97.38,-117.22,0.005693,-0.044698,0.044285,0.1218"},EPSG_4274:{towgs84:"-230.994,102.591,25.199,0.633,-0.239,0.9,1.95"},EPSG_4134:{towgs84:"-180.624,-225.516,173.919,-0.81,-1.898,8.336,16.71006"},EPSG_4254:{towgs84:"18.38,192.45,96.82,0.056,-0.142,-0.2,-0.0013"},EPSG_4159:{towgs84:"-194.513,-63.978,-25.759,-3.4027,3.756,-3.352,-0.9175"},EPSG_4687:{towgs84:"0.072,-0.507,-0.245,0.0183,-0.0003,0.007,-0.0093"},EPSG_4227:{towgs84:"-83.58,-397.54,458.78,-17.595,-2.847,4.256,3.225"},EPSG_4746:{towgs84:"599.4,72.4,419.2,-0.062,-0.022,-2.723,6.46"},EPSG_4745:{towgs84:"612.4,77,440.2,-0.054,0.057,-2.797,2.55"},EPSG_6311:{towgs84:"8.846,-4.394,-1.122,-0.00237,-0.146528,0.130428,0.783926"},EPSG_4289:{towgs84:"565.7381,50.4018,465.2904,-0.395026,0.330772,-1.876073,4.07244"},EPSG_4230:{towgs84:"-68.863,-134.888,-111.49,-0.53,-0.14,0.57,-3.4"},EPSG_4154:{towgs84:"-123.02,-158.95,-168.47"},EPSG_4156:{towgs84:"570.8,85.7,462.8,4.998,1.587,5.261,3.56"},EPSG_4299:{towgs84:"482.5,-130.6,564.6,-1.042,-0.214,-0.631,8.15"},EPSG_4179:{towgs84:"33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84"},EPSG_4313:{towgs84:"-106.8686,52.2978,-103.7239,0.3366,-0.457,1.8422,-1.2747"},EPSG_4194:{towgs84:"163.511,127.533,-159.789"},EPSG_4195:{towgs84:"105,326,-102.5"},EPSG_4196:{towgs84:"-45,417,-3.5"},EPSG_4611:{towgs84:"-162.619,-276.959,-161.764,0.067753,-2.243648,-1.158828,-1.094246"},EPSG_4633:{towgs84:"137.092,131.66,91.475,-1.9436,-11.5993,-4.3321,-7.4824"},EPSG_4641:{towgs84:"-408.809,366.856,-412.987,1.8842,-0.5308,2.1655,-121.0993"},EPSG_4643:{towgs84:"-480.26,-438.32,-643.429,16.3119,20.1721,-4.0349,-111.7002"},EPSG_4300:{towgs84:"482.5,-130.6,564.6,-1.042,-0.214,-0.631,8.15"},EPSG_4188:{towgs84:"482.5,-130.6,564.6,-1.042,-0.214,-0.631,8.15"},EPSG_4660:{towgs84:"982.6087,552.753,-540.873,6.681627,-31.611492,-19.848161,16.805"},EPSG_4662:{towgs84:"97.295,-263.247,310.882,-1.5999,0.8386,3.1409,13.3259"},EPSG_3906:{towgs84:"577.88891,165.22205,391.18289,4.9145,-0.94729,-13.05098,7.78664"},EPSG_4307:{towgs84:"-209.3622,-87.8162,404.6198,0.0046,3.4784,0.5805,-1.4547"},EPSG_6892:{towgs84:"-76.269,-16.683,68.562,-6.275,10.536,-4.286,-13.686"},EPSG_4690:{towgs84:"221.597,152.441,176.523,2.403,1.3893,0.884,11.4648"},EPSG_4691:{towgs84:"218.769,150.75,176.75,3.5231,2.0037,1.288,10.9817"},EPSG_4629:{towgs84:"72.51,345.411,79.241,-1.5862,-0.8826,-0.5495,1.3653"},EPSG_4630:{towgs84:"165.804,216.213,180.26,-0.6251,-0.4515,-0.0721,7.4111"},EPSG_4692:{towgs84:"217.109,86.452,23.711,0.0183,-0.0003,0.007,-0.0093"},EPSG_9333:{towgs84:"0,0,0,-0.008393,0.000749,-0.010276,0"},EPSG_9059:{towgs84:"0,0,0"},EPSG_4312:{towgs84:"601.705,84.263,485.227,4.7354,1.3145,5.393,-2.3887"},EPSG_4123:{towgs84:"-96.062,-82.428,-121.753,4.801,0.345,-1.376,1.496"},EPSG_4309:{towgs84:"-124.45,183.74,44.64,-0.4384,0.5446,-0.9706,-2.1365"},ESRI_104106:{towgs84:"-283.088,-70.693,117.445,-1.157,0.059,-0.652,-4.058"},EPSG_4281:{towgs84:"-219.247,-73.802,269.529"},EPSG_4322:{towgs84:"0,0,4.5"},EPSG_4324:{towgs84:"0,0,1.9"},EPSG_4284:{towgs84:"43.822,-108.842,-119.585,1.455,-0.761,0.737,0.549"},EPSG_4277:{towgs84:"446.448,-125.157,542.06,0.15,0.247,0.842,-20.489"},EPSG_4207:{towgs84:"-282.1,-72.2,120,-1.529,0.145,-0.89,-4.46"},EPSG_4688:{towgs84:"347.175,1077.618,2623.677,33.9058,-70.6776,9.4013,186.0647"},EPSG_4689:{towgs84:"410.793,54.542,80.501,-2.5596,-2.3517,-0.6594,17.3218"},EPSG_4720:{towgs84:"0,0,4.5"},EPSG_4273:{towgs84:"278.3,93,474.5,7.889,0.05,-6.61,6.21"},EPSG_4240:{towgs84:"204.64,834.74,293.8"},EPSG_4817:{towgs84:"278.3,93,474.5,7.889,0.05,-6.61,6.21"},ESRI_104131:{towgs84:"426.62,142.62,460.09,4.98,4.49,-12.42,-17.1"},EPSG_4265:{towgs84:"-104.1,-49.1,-9.9,0.971,-2.917,0.714,-11.68"},EPSG_4263:{towgs84:"-111.92,-87.85,114.5,1.875,0.202,0.219,0.032"},EPSG_4298:{towgs84:"-689.5937,623.84046,-65.93566,-0.02331,1.17094,-0.80054,5.88536"},EPSG_4270:{towgs84:"-253.4392,-148.452,386.5267,0.15605,0.43,-0.1013,-0.0424"},EPSG_4229:{towgs84:"-121.8,98.1,-10.7"},EPSG_4220:{towgs84:"-55.5,-348,-229.2"},EPSG_4214:{towgs84:"12.646,-155.176,-80.863"},EPSG_4232:{towgs84:"-345,3,223"},EPSG_4238:{towgs84:"-1.977,-13.06,-9.993,0.364,0.254,0.689,-1.037"},EPSG_4168:{towgs84:"-170,33,326"},EPSG_4131:{towgs84:"199,931,318.9"},EPSG_4152:{towgs84:"-0.9102,2.0141,0.5602,0.029039,0.010065,0.010101,0"},EPSG_5228:{towgs84:"572.213,85.334,461.94,4.9732,1.529,5.2484,3.5378"},EPSG_8351:{towgs84:"485.021,169.465,483.839,7.786342,4.397554,4.102655,0"},EPSG_4683:{towgs84:"-127.62,-67.24,-47.04,-3.068,4.903,1.578,-1.06"},EPSG_4133:{towgs84:"0,0,0"},EPSG_7373:{towgs84:"0.819,-0.5762,-1.6446,-0.00378,-0.03317,0.00318,0.0693"},EPSG_9075:{towgs84:"-0.9102,2.0141,0.5602,0.029039,0.010065,0.010101,0"},EPSG_9072:{towgs84:"-0.9102,2.0141,0.5602,0.029039,0.010065,0.010101,0"},EPSG_9294:{towgs84:"1.16835,-1.42001,-2.24431,-0.00822,-0.05508,0.01818,0.23388"},EPSG_4212:{towgs84:"-267.434,173.496,181.814,-13.4704,8.7154,7.3926,14.7492"},EPSG_4191:{towgs84:"-44.183,-0.58,-38.489,2.3867,2.7072,-3.5196,-8.2703"},EPSG_4237:{towgs84:"52.684,-71.194,-13.975,-0.312,-0.1063,-0.3729,1.0191"},EPSG_4740:{towgs84:"-1.08,-0.27,-0.9"},EPSG_4124:{towgs84:"419.3836,99.3335,591.3451,0.850389,1.817277,-7.862238,-0.99496"},EPSG_5681:{towgs84:"584.9636,107.7175,413.8067,1.1155,0.2824,-3.1384,7.9922"},EPSG_4141:{towgs84:"23.772,17.49,17.859,-0.3132,-1.85274,1.67299,-5.4262"},EPSG_4204:{towgs84:"-85.645,-273.077,-79.708,2.289,-1.421,2.532,3.194"},EPSG_4319:{towgs84:"226.702,-193.337,-35.371,-2.229,-4.391,9.238,0.9798"},EPSG_4200:{towgs84:"24.82,-131.21,-82.66"},EPSG_4130:{towgs84:"0,0,0"},EPSG_4127:{towgs84:"-82.875,-57.097,-156.768,-2.158,1.524,-0.982,-0.359"},EPSG_4149:{towgs84:"674.374,15.056,405.346"},EPSG_4617:{towgs84:"-0.991,1.9072,0.5129,0.02579,0.00965,0.01166,0"},EPSG_4663:{towgs84:"-210.502,-66.902,-48.476,2.094,-15.067,-5.817,0.485"},EPSG_4664:{towgs84:"-211.939,137.626,58.3,-0.089,0.251,0.079,0.384"},EPSG_4665:{towgs84:"-105.854,165.589,-38.312,-0.003,-0.026,0.024,-0.048"},EPSG_4666:{towgs84:"631.392,-66.551,481.442,1.09,-4.445,-4.487,-4.43"},EPSG_4756:{towgs84:"-192.873,-39.382,-111.202,-0.00205,-0.0005,0.00335,0.0188"},EPSG_4723:{towgs84:"-179.483,-69.379,-27.584,-7.862,8.163,6.042,-13.925"},EPSG_4726:{towgs84:"8.853,-52.644,180.304,-0.393,-2.323,2.96,-24.081"},EPSG_4267:{towgs84:"-8.0,160.0,176.0"},EPSG_5365:{towgs84:"-0.16959,0.35312,0.51846,0.03385,-0.16325,0.03446,0.03693"},EPSG_4218:{towgs84:"304.5,306.5,-318.1"},EPSG_4242:{towgs84:"-33.722,153.789,94.959,-8.581,-4.478,4.54,8.95"},EPSG_4216:{towgs84:"-292.295,248.758,429.447,4.9971,2.99,6.6906,1.0289"},ESRI_104105:{towgs84:"631.392,-66.551,481.442,1.09,-4.445,-4.487,-4.43"},ESRI_104129:{towgs84:"0,0,0"},EPSG_4673:{towgs84:"174.05,-25.49,112.57"},EPSG_4202:{towgs84:"-124,-60,154"},EPSG_4203:{towgs84:"-117.763,-51.51,139.061,0.292,0.443,0.277,-0.191"},EPSG_3819:{towgs84:"595.48,121.69,515.35,4.115,-2.9383,0.853,-3.408"},EPSG_8694:{towgs84:"-93.799,-132.737,-219.073,-1.844,0.648,-6.37,-0.169"},EPSG_4145:{towgs84:"275.57,676.78,229.6"},EPSG_4283:{towgs84:"0.06155,-0.01087,-0.04019,0.039492,0.032722,0.032898,-0.009994"},EPSG_4317:{towgs84:"2.3287,-147.0425,-92.0802,-0.309248,0.324822,0.497299,5.689063"},EPSG_4272:{towgs84:"59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993"},EPSG_4248:{towgs84:"-307.7,265.3,-363.5"},EPSG_5561:{towgs84:"24,-121,-76"},EPSG_5233:{towgs84:"-0.293,766.95,87.713,0.195704,1.695068,3.473016,-0.039338"},ESRI_104130:{towgs84:"-86,-98,-119"},ESRI_104102:{towgs84:"682,-203,480"},ESRI_37207:{towgs84:"7,-10,-26"},EPSG_4675:{towgs84:"59.935,118.4,-10.871"},ESRI_104109:{towgs84:"-89.121,-348.182,260.871"},ESRI_104112:{towgs84:"-185.583,-230.096,281.361"},ESRI_104113:{towgs84:"25.1,-275.6,222.6"},IGNF_WGS72G:{towgs84:"0,12,6"},IGNF_NTFG:{towgs84:"-168,-60,320"},IGNF_EFATE57G:{towgs84:"-127,-769,472"},IGNF_PGP50G:{towgs84:"324.8,153.6,172.1"},IGNF_REUN47G:{towgs84:"94,-948,-1262"},IGNF_CSG67G:{towgs84:"-186,230,110"},IGNF_GUAD48G:{towgs84:"-467,-16,-300"},IGNF_TAHI51G:{towgs84:"162,117,154"},IGNF_TAHAAG:{towgs84:"65,342,77"},IGNF_NUKU72G:{towgs84:"84,274,65"},IGNF_PETRELS72G:{towgs84:"365,194,166"},IGNF_WALL78G:{towgs84:"253,-133,-127"},IGNF_MAYO50G:{towgs84:"-382,-59,-262"},IGNF_TANNAG:{towgs84:"-139,-967,436"},IGNF_IGN72G:{towgs84:"-13,-348,292"},IGNF_ATIGG:{towgs84:"1118,23,66"},IGNF_FANGA84G:{towgs84:"150.57,158.33,118.32"},IGNF_RUSAT84G:{towgs84:"202.13,174.6,-15.74"},IGNF_KAUE70G:{towgs84:"126.74,300.1,-75.49"},IGNF_MOP90G:{towgs84:"-10.8,-1.8,12.77"},IGNF_MHPF67G:{towgs84:"338.08,212.58,-296.17"},IGNF_TAHI79G:{towgs84:"160.61,116.05,153.69"},IGNF_ANAA92G:{towgs84:"1.5,3.84,4.81"},IGNF_MARQUI72G:{towgs84:"330.91,-13.92,58.56"},IGNF_APAT86G:{towgs84:"143.6,197.82,74.05"},IGNF_TUBU69G:{towgs84:"237.17,171.61,-77.84"},IGNF_STPM50G:{towgs84:"11.363,424.148,373.13"},EPSG_4150:{towgs84:"674.374,15.056,405.346"},EPSG_4754:{towgs84:"-208.4058,-109.8777,-2.5764"},ESRI_104101:{towgs84:"372.87,149.23,585.29"},EPSG_4693:{towgs84:"0,-0.15,0.68"},EPSG_6207:{towgs84:"293.17,726.18,245.36"},EPSG_4153:{towgs84:"-133.63,-157.5,-158.62"},EPSG_4132:{towgs84:"-241.54,-163.64,396.06"},EPSG_4221:{towgs84:"-154.5,150.7,100.4"},EPSG_4266:{towgs84:"-80.7,-132.5,41.1"},EPSG_4193:{towgs84:"-70.9,-151.8,-41.4"},EPSG_5340:{towgs84:"-0.41,0.46,-0.35"},EPSG_4246:{towgs84:"-294.7,-200.1,525.5"},EPSG_4318:{towgs84:"-3.2,-5.7,2.8"},EPSG_4121:{towgs84:"-199.87,74.79,246.62"},EPSG_4223:{towgs84:"-260.1,5.5,432.2"},EPSG_4158:{towgs84:"-0.465,372.095,171.736"},EPSG_4285:{towgs84:"-128.16,-282.42,21.93"},EPSG_4613:{towgs84:"-404.78,685.68,45.47"},EPSG_4607:{towgs84:"195.671,332.517,274.607"},EPSG_4475:{towgs84:"-381.788,-57.501,-256.673"},EPSG_4208:{towgs84:"-157.84,308.54,-146.6"},EPSG_4743:{towgs84:"70.995,-335.916,262.898"},EPSG_4710:{towgs84:"-323.65,551.39,-491.22"},EPSG_7881:{towgs84:"-0.077,0.079,0.086"},EPSG_4682:{towgs84:"283.729,735.942,261.143"},EPSG_4739:{towgs84:"-156,-271,-189"},EPSG_4679:{towgs84:"-80.01,253.26,291.19"},EPSG_4750:{towgs84:"-56.263,16.136,-22.856"},EPSG_4644:{towgs84:"-10.18,-350.43,291.37"},EPSG_4695:{towgs84:"-103.746,-9.614,-255.95"},EPSG_4292:{towgs84:"-355,21,72"},EPSG_4302:{towgs84:"-61.702,284.488,472.052"},EPSG_4143:{towgs84:"-124.76,53,466.79"},EPSG_4606:{towgs84:"-153,153,307"},EPSG_4699:{towgs84:"-770.1,158.4,-498.2"},EPSG_4247:{towgs84:"-273.5,110.6,-357.9"},EPSG_4160:{towgs84:"8.88,184.86,106.69"},EPSG_4161:{towgs84:"-233.43,6.65,173.64"},EPSG_9251:{towgs84:"-9.5,122.9,138.2"},EPSG_9253:{towgs84:"-78.1,101.6,133.3"},EPSG_4297:{towgs84:"-198.383,-240.517,-107.909"},EPSG_4269:{towgs84:"0,0,0"},EPSG_4301:{towgs84:"-147,506,687"},EPSG_4618:{towgs84:"-59,-11,-52"},EPSG_4612:{towgs84:"0,0,0"},EPSG_4678:{towgs84:"44.585,-131.212,-39.544"},EPSG_4250:{towgs84:"-130,29,364"},EPSG_4144:{towgs84:"214,804,268"},EPSG_4147:{towgs84:"-17.51,-108.32,-62.39"},EPSG_4259:{towgs84:"-254.1,-5.36,-100.29"},EPSG_4164:{towgs84:"-76,-138,67"},EPSG_4211:{towgs84:"-378.873,676.002,-46.255"},EPSG_4182:{towgs84:"-422.651,-172.995,84.02"},EPSG_4224:{towgs84:"-143.87,243.37,-33.52"},EPSG_4225:{towgs84:"-205.57,168.77,-4.12"},EPSG_5527:{towgs84:"-67.35,3.88,-38.22"},EPSG_4752:{towgs84:"98,390,-22"},EPSG_4310:{towgs84:"-30,190,89"},EPSG_9248:{towgs84:"-192.26,65.72,132.08"},EPSG_4680:{towgs84:"124.5,-63.5,-281"},EPSG_4701:{towgs84:"-79.9,-158,-168.9"},EPSG_4706:{towgs84:"-146.21,112.63,4.05"},EPSG_4805:{towgs84:"682,-203,480"},EPSG_4201:{towgs84:"-165,-11,206"},EPSG_4210:{towgs84:"-157,-2,-299"},EPSG_4183:{towgs84:"-104,167,-38"},EPSG_4139:{towgs84:"11,72,-101"},EPSG_4668:{towgs84:"-86,-98,-119"},EPSG_4717:{towgs84:"-2,151,181"},EPSG_4732:{towgs84:"102,52,-38"},EPSG_4280:{towgs84:"-377,681,-50"},EPSG_4209:{towgs84:"-138,-105,-289"},EPSG_4261:{towgs84:"31,146,47"},EPSG_4658:{towgs84:"-73,46,-86"},EPSG_4721:{towgs84:"265.025,384.929,-194.046"},EPSG_4222:{towgs84:"-136,-108,-292"},EPSG_4601:{towgs84:"-255,-15,71"},EPSG_4602:{towgs84:"725,685,536"},EPSG_4603:{towgs84:"72,213.7,93"},EPSG_4605:{towgs84:"9,183,236"},EPSG_4621:{towgs84:"137,248,-430"},EPSG_4657:{towgs84:"-28,199,5"},EPSG_4316:{towgs84:"103.25,-100.4,-307.19"},EPSG_4642:{towgs84:"-13,-348,292"},EPSG_4698:{towgs84:"145,-187,103"},EPSG_4192:{towgs84:"-206.1,-174.7,-87.7"},EPSG_4311:{towgs84:"-265,120,-358"},EPSG_4135:{towgs84:"58,-283,-182"},ESRI_104138:{towgs84:"198,-226,-347"},EPSG_4245:{towgs84:"-11,851,5"},EPSG_4142:{towgs84:"-125,53,467"},EPSG_4213:{towgs84:"-106,-87,188"},EPSG_4253:{towgs84:"-133,-77,-51"},EPSG_4129:{towgs84:"-132,-110,-335"},EPSG_4713:{towgs84:"-77,-128,142"},EPSG_4239:{towgs84:"217,823,299"},EPSG_4146:{towgs84:"295,736,257"},EPSG_4155:{towgs84:"-83,37,124"},EPSG_4165:{towgs84:"-173,253,27"},EPSG_4672:{towgs84:"175,-38,113"},EPSG_4236:{towgs84:"-637,-549,-203"},EPSG_4251:{towgs84:"-90,40,88"},EPSG_4271:{towgs84:"-2,374,172"},EPSG_4175:{towgs84:"-88,4,101"},EPSG_4716:{towgs84:"298,-304,-375"},EPSG_4315:{towgs84:"-23,259,-9"},EPSG_4744:{towgs84:"-242.2,-144.9,370.3"},EPSG_4244:{towgs84:"-97,787,86"},EPSG_4293:{towgs84:"616,97,-251"},EPSG_4714:{towgs84:"-127,-769,472"},EPSG_4736:{towgs84:"260,12,-147"},EPSG_6883:{towgs84:"-235,-110,393"},EPSG_6894:{towgs84:"-63,176,185"},EPSG_4205:{towgs84:"-43,-163,45"},EPSG_4256:{towgs84:"41,-220,-134"},EPSG_4262:{towgs84:"639,405,60"},EPSG_4604:{towgs84:"174,359,365"},EPSG_4169:{towgs84:"-115,118,426"},EPSG_4620:{towgs84:"-106,-129,165"},EPSG_4184:{towgs84:"-203,141,53"},EPSG_4616:{towgs84:"-289,-124,60"},EPSG_9403:{towgs84:"-307,-92,127"},EPSG_4684:{towgs84:"-133,-321,50"},EPSG_4708:{towgs84:"-491,-22,435"},EPSG_4707:{towgs84:"114,-116,-333"},EPSG_4709:{towgs84:"145,75,-272"},EPSG_4712:{towgs84:"-205,107,53"},EPSG_4711:{towgs84:"124,-234,-25"},EPSG_4718:{towgs84:"230,-199,-752"},EPSG_4719:{towgs84:"211,147,111"},EPSG_4724:{towgs84:"208,-435,-229"},EPSG_4725:{towgs84:"189,-79,-202"},EPSG_4735:{towgs84:"647,1777,-1124"},EPSG_4722:{towgs84:"-794,119,-298"},EPSG_4728:{towgs84:"-307,-92,127"},EPSG_4734:{towgs84:"-632,438,-609"},EPSG_4727:{towgs84:"912,-58,1227"},EPSG_4729:{towgs84:"185,165,42"},EPSG_4730:{towgs84:"170,42,84"},EPSG_4733:{towgs84:"276,-57,149"},ESRI_37218:{towgs84:"230,-199,-752"},ESRI_37240:{towgs84:"-7,215,225"},ESRI_37221:{towgs84:"252,-209,-751"},ESRI_4305:{towgs84:"-123,-206,219"},ESRI_104139:{towgs84:"-73,-247,227"},EPSG_4748:{towgs84:"51,391,-36"},EPSG_4219:{towgs84:"-384,664,-48"},EPSG_4255:{towgs84:"-333,-222,114"},EPSG_4257:{towgs84:"-587.8,519.75,145.76"},EPSG_4646:{towgs84:"-963,510,-359"},EPSG_6881:{towgs84:"-24,-203,268"},EPSG_6882:{towgs84:"-183,-15,273"},EPSG_4715:{towgs84:"-104,-129,239"},IGNF_RGF93GDD:{towgs84:"0,0,0"},IGNF_RGM04GDD:{towgs84:"0,0,0"},IGNF_RGSPM06GDD:{towgs84:"0,0,0"},IGNF_RGTAAF07GDD:{towgs84:"0,0,0"},IGNF_RGFG95GDD:{towgs84:"0,0,0"},IGNF_RGNCG:{towgs84:"0,0,0"},IGNF_RGPFGDD:{towgs84:"0,0,0"},IGNF_ETRS89G:{towgs84:"0,0,0"},IGNF_RGR92GDD:{towgs84:"0,0,0"},EPSG_4173:{towgs84:"0,0,0"},EPSG_4180:{towgs84:"0,0,0"},EPSG_4619:{towgs84:"0,0,0"},EPSG_4667:{towgs84:"0,0,0"},EPSG_4075:{towgs84:"0,0,0"},EPSG_6706:{towgs84:"0,0,0"},EPSG_7798:{towgs84:"0,0,0"},EPSG_4661:{towgs84:"0,0,0"},EPSG_4669:{towgs84:"0,0,0"},EPSG_8685:{towgs84:"0,0,0"},EPSG_4151:{towgs84:"0,0,0"},EPSG_9702:{towgs84:"0,0,0"},EPSG_4758:{towgs84:"0,0,0"},EPSG_4761:{towgs84:"0,0,0"},EPSG_4765:{towgs84:"0,0,0"},EPSG_8997:{towgs84:"0,0,0"},EPSG_4023:{towgs84:"0,0,0"},EPSG_4670:{towgs84:"0,0,0"},EPSG_4694:{towgs84:"0,0,0"},EPSG_4148:{towgs84:"0,0,0"},EPSG_4163:{towgs84:"0,0,0"},EPSG_4167:{towgs84:"0,0,0"},EPSG_4189:{towgs84:"0,0,0"},EPSG_4190:{towgs84:"0,0,0"},EPSG_4176:{towgs84:"0,0,0"},EPSG_4659:{towgs84:"0,0,0"},EPSG_3824:{towgs84:"0,0,0"},EPSG_3889:{towgs84:"0,0,0"},EPSG_4046:{towgs84:"0,0,0"},EPSG_4081:{towgs84:"0,0,0"},EPSG_4558:{towgs84:"0,0,0"},EPSG_4483:{towgs84:"0,0,0"},EPSG_5013:{towgs84:"0,0,0"},EPSG_5264:{towgs84:"0,0,0"},EPSG_5324:{towgs84:"0,0,0"},EPSG_5354:{towgs84:"0,0,0"},EPSG_5371:{towgs84:"0,0,0"},EPSG_5373:{towgs84:"0,0,0"},EPSG_5381:{towgs84:"0,0,0"},EPSG_5393:{towgs84:"0,0,0"},EPSG_5489:{towgs84:"0,0,0"},EPSG_5593:{towgs84:"0,0,0"},EPSG_6135:{towgs84:"0,0,0"},EPSG_6365:{towgs84:"0,0,0"},EPSG_5246:{towgs84:"0,0,0"},EPSG_7886:{towgs84:"0,0,0"},EPSG_8431:{towgs84:"0,0,0"},EPSG_8427:{towgs84:"0,0,0"},EPSG_8699:{towgs84:"0,0,0"},EPSG_8818:{towgs84:"0,0,0"},EPSG_4757:{towgs84:"0,0,0"},EPSG_9140:{towgs84:"0,0,0"},EPSG_8086:{towgs84:"0,0,0"},EPSG_4686:{towgs84:"0,0,0"},EPSG_4737:{towgs84:"0,0,0"},EPSG_4702:{towgs84:"0,0,0"},EPSG_4747:{towgs84:"0,0,0"},EPSG_4749:{towgs84:"0,0,0"},EPSG_4674:{towgs84:"0,0,0"},EPSG_4755:{towgs84:"0,0,0"},EPSG_4759:{towgs84:"0,0,0"},EPSG_4762:{towgs84:"0,0,0"},EPSG_4763:{towgs84:"0,0,0"},EPSG_4764:{towgs84:"0,0,0"},EPSG_4166:{towgs84:"0,0,0"},EPSG_4170:{towgs84:"0,0,0"},EPSG_5546:{towgs84:"0,0,0"},EPSG_7844:{towgs84:"0,0,0"},EPSG_4818:{towgs84:"589,76,480"},EPSG_10328:{towgs84:"0,0,0"},EPSG_9782:{towgs84:"0,0,0"},EPSG_9777:{towgs84:"0,0,0"},EPSG_10690:{towgs84:"0,0,0"},EPSG_10639:{towgs84:"0,0,0"},EPSG_10739:{towgs84:"0,0,0"},EPSG_7686:{towgs84:"0,0,0"},EPSG_8900:{towgs84:"0,0,0"},EPSG_5886:{towgs84:"0,0,0"},EPSG_7683:{towgs84:"0,0,0"},EPSG_6668:{towgs84:"0,0,0"},EPSG_20046:{towgs84:"0,0,0"},EPSG_10299:{towgs84:"0,0,0"},EPSG_10310:{towgs84:"0,0,0"},EPSG_10475:{towgs84:"0,0,0"},EPSG_4742:{towgs84:"0,0,0"},EPSG_10671:{towgs84:"0,0,0"},EPSG_10762:{towgs84:"0,0,0"},EPSG_10725:{towgs84:"0,0,0"},EPSG_10791:{towgs84:"0,0,0"},EPSG_10800:{towgs84:"0,0,0"},EPSG_10305:{towgs84:"0,0,0"},EPSG_10941:{towgs84:"0,0,0"},EPSG_10968:{towgs84:"0,0,0"},EPSG_10875:{towgs84:"0,0,0"},EPSG_6318:{towgs84:"0,0,0"},EPSG_10910:{towgs84:"0,0,0"}};for(nc in Ni)Oi=Ni[nc],Oi.datumName&&(Ni[Oi.datumName]=Oi);var Oi,nc,oc=Ni;function cm(e,t,s,i,r,n,o){var a={};return a.datum_type=ns,t&&(a.datum_type=Ah,a.datum_params=t.map(parseFloat),(a.datum_params[0]!==0||a.datum_params[1]!==0||a.datum_params[2]!==0)&&(a.datum_type=Pt),a.datum_params.length>3&&(a.datum_params[3]!==0||a.datum_params[4]!==0||a.datum_params[5]!==0||a.datum_params[6]!==0)&&(a.datum_type=Rt,a.datum_params[3]*=re,a.datum_params[4]*=re,a.datum_params[5]*=re,a.datum_params[6]=a.datum_params[6]/1e6+1)),o&&(a.datum_type=Vt,a.grids=o),a.a=s,a.b=i,a.es=r,a.ep2=n,a}var ac=cm;var _n={};function Mn(e,t,s){return t instanceof ArrayBuffer?lm(e,t,s):{ready:um(e,t)}}function lm(e,t,s){var i=!0;s!==void 0&&s.includeErrorFields===!1&&(i=!1);var r=new DataView(t),n=dm(r),o=mm(r,n),a=pm(r,o,n,i),h={header:o,subgrids:a};return _n[e]=h,h}async function um(e,t){for(var s=[],i=await t.getImageCount(),r=i-1;r>=0;r--){var n=await t.getImage(r),o=await n.readRasters(),a=o,h=[n.getWidth(),n.getHeight()],c=n.getBoundingBox().map(hc),l=typeof n.fileDirectory.getValue=="function"?n.fileDirectory.getValue("ModelPixelScale"):n.fileDirectory.ModelPixelScale,u=[l[0],l[1]].map(hc),f=c[0]+(h[0]-1)*u[0],m=c[3]-(h[1]-1)*u[1],d=a[0],g=a[1],_=[];for(let E=h[1]-1;E>=0;E--)for(let w=h[0]-1;w>=0;w--){var M=E*h[0]+w;_.push([-te(g[M]),te(d[M])])}s.push({del:u,lim:h,ll:[-f,m],cvs:_})}var y={header:{nSubgrids:i},subgrids:s};return _n[e]=y,y}function cc(e){if(e===void 0)return null;var t=e.split(",");return t.map(fm)}function fm(e){if(e.length===0)return null;var t=e[0]==="@";return t&&(e=e.slice(1)),e==="null"?{name:"null",mandatory:!t,grid:null,isNull:!0}:{name:e,mandatory:!t,grid:_n[e]||null,isNull:!1}}function hc(e){return e*Math.PI/180}function te(e){return e/3600*Math.PI/180}function dm(e){var t=e.getInt32(8,!1);return t===11?!1:(t=e.getInt32(8,!0),t!==11&&console.warn("Failed to detect nadgrid endian-ness, defaulting to little-endian"),!0)}function mm(e,t){return{nFields:e.getInt32(8,t),nSubgridFields:e.getInt32(24,t),nSubgrids:e.getInt32(40,t),shiftType:gn(e,56,64).trim(),fromSemiMajorAxis:e.getFloat64(120,t),fromSemiMinorAxis:e.getFloat64(136,t),toSemiMajorAxis:e.getFloat64(152,t),toSemiMinorAxis:e.getFloat64(168,t)}}function gn(e,t,s){return String.fromCharCode.apply(null,new Uint8Array(e.buffer.slice(t,s)))}function pm(e,t,s,i){for(var r=176,n=[],o=0;o<t.nSubgrids;o++){var a=_m(e,r,s),h=Mm(e,r,a,s,i),c=Math.round(1+(a.upperLongitude-a.lowerLongitude)/a.longitudeInterval),l=Math.round(1+(a.upperLatitude-a.lowerLatitude)/a.latitudeInterval);n.push({ll:[te(a.lowerLongitude),te(a.lowerLatitude)],del:[te(a.longitudeInterval),te(a.latitudeInterval)],lim:[c,l],count:a.gridNodeCount,cvs:gm(h)});var u=16;i===!1&&(u=8),r+=176+a.gridNodeCount*u}return n}function gm(e){return e.map(function(t){return[te(t.longitudeShift),te(t.latitudeShift)]})}function _m(e,t,s){return{name:gn(e,t+8,t+16).trim(),parent:gn(e,t+24,t+24+8).trim(),lowerLatitude:e.getFloat64(t+72,s),upperLatitude:e.getFloat64(t+88,s),lowerLongitude:e.getFloat64(t+104,s),upperLongitude:e.getFloat64(t+120,s),latitudeInterval:e.getFloat64(t+136,s),longitudeInterval:e.getFloat64(t+152,s),gridNodeCount:e.getInt32(t+168,s)}}function Mm(e,t,s,i,r){var n=t+176,o=16;r===!1&&(o=8);for(var a=[],h=0;h<s.gridNodeCount;h++){var c={latitudeShift:e.getFloat32(n+h*o,i),longitudeShift:e.getFloat32(n+h*o+4,i)};r!==!1&&(c.latitudeAccuracy=e.getFloat32(n+h*o+8,i),c.longitudeAccuracy=e.getFloat32(n+h*o+12,i)),a.push(c)}return a}function be(e,t){if(!(this instanceof be))return new be(e);this.forward=null,this.inverse=null,this.init=null,this.name,this.axis,this.names=null,this.title,t=t||function(c){if(c)throw c};var s=Qh(e);if(typeof s!="object"){t("Could not parse to valid json: "+e);return}var i=be.projections.get(s.projName);if(!i){t("Could not get projection name from: "+e);return}if(s.datumCode&&s.datumCode!=="none"){var r=_t(oc,s.datumCode);r&&(s.datum_params=s.datum_params||(r.towgs84?r.towgs84.split(","):null),s.ellps=r.ellipse,s.datumName=r.datumName?r.datumName:s.datumCode)}s.axis=s.axis||"enu",s.ellps=s.ellps||"wgs84",s.lat1=s.lat1||s.lat0;var n=rc(s.a,s.b,s.rf,s.ellps,s.sphere),o=ic(n.a,n.b,n.rf,s.R_A),a=cc(s.nadgrids),h=s.datum||ac(s.datumCode,s.datum_params,n.a,n.b,o.es,o.ep2,a);fn(this,s),fn(this,i),this.a=n.a,this.b=n.b,this.rf=n.rf,this.sphere=n.sphere,this.es=o.es,this.e=o.e,this.ep2=o.ep2,this.datum=h,"init"in this&&typeof this.init=="function"&&this.init(),this.k0||(this.k0=1),t(null,this)}be.projections=sc;be.projections.start();var Ct=be;function lc(e,t){return e.datum_type!==t.datum_type||e.a!==t.a||Math.abs(e.es-t.es)>5e-11?!1:e.datum_type===Pt?e.datum_params[0]===t.datum_params[0]&&e.datum_params[1]===t.datum_params[1]&&e.datum_params[2]===t.datum_params[2]:e.datum_type===Rt?e.datum_params[0]===t.datum_params[0]&&e.datum_params[1]===t.datum_params[1]&&e.datum_params[2]===t.datum_params[2]&&e.datum_params[3]===t.datum_params[3]&&e.datum_params[4]===t.datum_params[4]&&e.datum_params[5]===t.datum_params[5]&&e.datum_params[6]===t.datum_params[6]:!0}function Li(e,t,s){var i=e.x,r=e.y,n=e.z?e.z:0,o,a,h,c;if(r<-x&&r>-1.001*x)r=-x;else if(r>x&&r<1.001*x)r=x;else{if(r<-x)return{x:-1/0,y:-1/0,z:e.z};if(r>x)return{x:1/0,y:1/0,z:e.z}}return i>Math.PI&&(i-=2*Math.PI),a=Math.sin(r),c=Math.cos(r),h=a*a,o=s/Math.sqrt(1-t*h),{x:(o+n)*c*Math.cos(i),y:(o+n)*c*Math.sin(i),z:(o*(1-t)+n)*a}}function Gi(e,t,s,i){var r=1e-12,n=r*r,o=30,a,h,c,l,u,f,m,d,g,_,M,y,E,w=e.x,T=e.y,b=e.z?e.z:0,R,A,C;if(a=Math.sqrt(w*w+T*T),h=Math.sqrt(w*w+T*T+b*b),a/s<r){if(R=0,h/s<r)return A=x,C=-i,{x:e.x,y:e.y,z:e.z}}else R=Math.atan2(T,w);c=b/h,l=a/h,u=1/Math.sqrt(1-t*(2-t)*l*l),d=l*(1-t)*u,g=c*u,E=0;do E++,m=s/Math.sqrt(1-t*g*g),C=a*d+b*g-m*(1-t*g*g),f=t*m/(m+C),u=1/Math.sqrt(1-f*(2-f)*l*l),_=l*(1-f)*u,M=c*u,y=M*d-_*g,d=_,g=M;while(y*y>n&&E<o);return A=Math.atan(M/Math.abs(_)),{x:R,y:A,z:C}}function uc(e,t,s){if(t===Pt)return{x:e.x+s[0],y:e.y+s[1],z:e.z+s[2]};if(t===Rt){var i=s[0],r=s[1],n=s[2],o=s[3],a=s[4],h=s[5],c=s[6];return{x:c*(e.x-h*e.y+a*e.z)+i,y:c*(h*e.x+e.y-o*e.z)+r,z:c*(-a*e.x+o*e.y+e.z)+n}}}function fc(e,t,s){if(t===Pt)return{x:e.x-s[0],y:e.y-s[1],z:e.z-s[2]};if(t===Rt){var i=s[0],r=s[1],n=s[2],o=s[3],a=s[4],h=s[5],c=s[6],l=(e.x-i)/c,u=(e.y-r)/c,f=(e.z-n)/c;return{x:l+h*u-a*f,y:-h*l+u+o*f,z:a*l-o*u+f}}}function zi(e){return e===Pt||e===Rt}function pc(e,t,s){if(lc(e,t)||e.datum_type===ns||t.datum_type===ns)return s;var i=e.a,r=e.es;if(e.datum_type===Vt){var n=dc(e,!1,s);if(n!==0)return;i=an,r=hn}var o=t.a,a=t.b,h=t.es;if(t.datum_type===Vt&&(o=an,a=Ih,h=hn),r===h&&i===o&&!zi(e.datum_type)&&!zi(t.datum_type))return s;if(s=Li(s,r,i),zi(e.datum_type)&&(s=uc(s,e.datum_type,e.datum_params)),zi(t.datum_type)&&(s=fc(s,t.datum_type,t.datum_params)),s=Gi(s,h,o,a),t.datum_type===Vt){var c=dc(t,!0,s);if(c!==0)return}return s}function dc(e,t,s){if(e.grids===null||e.grids.length===0)return console.log("Grid shift grids not found"),-1;var i={x:-s.x,y:s.y},r={x:Number.NaN,y:Number.NaN},n=[];t:for(var o=0;o<e.grids.length;o++){var a=e.grids[o];if(n.push(a.name),a.isNull){r=i;break}if(a.grid===null){if(a.mandatory)return console.log("Unable to find mandatory grid '"+a.name+"'"),-1;continue}for(var h=a.grid.subgrids,c=0,l=h.length;c<l;c++){var u=h[c],f=(Math.abs(u.del[1])+Math.abs(u.del[0]))/1e4,m=u.ll[0]-f,d=u.ll[1]-f,g=u.ll[0]+(u.lim[0]-1)*u.del[0]+f,_=u.ll[1]+(u.lim[1]-1)*u.del[1]+f;if(!(d>i.y||m>i.x||_<i.y||g<i.x)&&(r=xm(i,t,u),!isNaN(r.x)))break t}}return isNaN(r.x)?(console.log("Failed to find a grid shift table for location '"+-i.x*X+" "+i.y*X+" tried: '"+n+"'"),-1):(s.x=-r.x,s.y=r.y,0)}function xm(e,t,s){var i={x:Number.NaN,y:Number.NaN};if(isNaN(e.x))return i;var r={x:e.x,y:e.y};r.x-=s.ll[0],r.y-=s.ll[1],r.x=S(r.x-Math.PI)+Math.PI;var n=mc(r,s);if(t){if(isNaN(n.x))return i;n.x=r.x-n.x,n.y=r.y-n.y;var o=9,a=1e-12,h,c;do{if(c=mc(n,s),isNaN(c.x)){console.log("Inverse grid shift iteration failed, presumably at grid edge. Using first approximation.");break}h={x:r.x-(c.x+n.x),y:r.y-(c.y+n.y)},n.x+=h.x,n.y+=h.y}while(o--&&Math.abs(h.x)>a&&Math.abs(h.y)>a);if(o<0)return console.log("Inverse grid shift iterator failed to converge."),i;i.x=S(n.x+s.ll[0]),i.y=n.y+s.ll[1]}else isNaN(n.x)||(i.x=e.x+n.x,i.y=e.y+n.y);return i}function mc(e,t){var s={x:e.x/t.del[0],y:e.y/t.del[1]},i={x:Math.floor(s.x),y:Math.floor(s.y)},r={x:s.x-1*i.x,y:s.y-1*i.y},n={x:Number.NaN,y:Number.NaN},o;if(i.x<0||i.x>=t.lim[0]||i.y<0||i.y>=t.lim[1])return n;o=i.y*t.lim[0]+i.x;var a={x:t.cvs[o][0],y:t.cvs[o][1]};o++;var h={x:t.cvs[o][0],y:t.cvs[o][1]};o+=t.lim[0];var c={x:t.cvs[o][0],y:t.cvs[o][1]};o--;var l={x:t.cvs[o][0],y:t.cvs[o][1]},u=r.x*r.y,f=r.x*(1-r.y),m=(1-r.x)*(1-r.y),d=(1-r.x)*r.y;return n.x=m*a.x+f*h.x+d*l.x+u*c.x,n.y=m*a.y+f*h.y+d*l.y+u*c.y,n}var ae=["x","y","z"];function gc(e,t){let s={};for(let i=0,r=e.axis.length;i<r;i++){if(i===2&&t.z===void 0)continue;let n=t[ae[i]];switch(e.axis[i]){case"e":s.x=n;break;case"w":s.x=-n;break;case"n":s.y=n;break;case"s":s.y=-n;break;case"u":s.z=n;break;case"d":s.z=-n;break;default:return null}}return s}function _c(e,t){let s={};for(let i=0,r=e.axis.length;i<r;i++)if(!(i===2&&t.z===void 0))switch(e.axis[i]){case"e":s[ae[i]]=t.x;break;case"w":s[ae[i]]=-t.x;break;case"n":s[ae[i]]=t.y;break;case"s":s[ae[i]]=-t.y;break;case"u":s[ae[i]]=t.z;break;case"d":s[ae[i]]=-t.z;break;default:return null}return s}function Pe(e){var t={x:e[0],y:e[1]};return e.length>2&&(t.z=e[2]),e.length>3&&(t.m=e[3]),t}function xc(e){Mc(e.x),Mc(e.y)}function Mc(e){if(typeof Number.isFinite=="function"){if(Number.isFinite(e))return;throw new TypeError("coordinates must be finite numbers")}if(typeof e!="number"||e!==e||!isFinite(e))throw new TypeError("coordinates must be finite numbers")}function ym(e,t){return(e.datum.datum_type===Pt||e.datum.datum_type===Rt||e.datum.datum_type===Vt)&&t.datumCode!=="WGS84"||(t.datum.datum_type===Pt||t.datum.datum_type===Rt||t.datum.datum_type===Vt)&&e.datumCode!=="WGS84"}function cs(e,t,s,i){var r,n=s.z!==void 0;if(xc(s),e.datum&&t.datum&&ym(e,t)&&(r=new Ct("WGS84"),s=cs(e,r,s,i),e=r),i&&e.axis!=="enu"&&(s=gc(e,s)),e.projName==="longlat")s={x:s.x*B,y:s.y*B,z:s.z||0};else if(e.to_meter&&(s={x:s.x*e.to_meter,y:s.y*e.to_meter,z:s.z||0}),s=e.inverse(s),!s)return;if(e.from_greenwich&&(s.x+=e.from_greenwich),s=pc(e.datum,t.datum,s),!!s)return s=s,t.from_greenwich&&(s={x:s.x-t.from_greenwich,y:s.y,z:s.z||0}),t.projName==="longlat"?(t.long_wrap!==void 0&&(s.x=t.long_wrap+S(s.x-t.long_wrap)),s={x:s.x*X,y:s.y*X,z:s.z||0}):(s=t.forward(s),t.to_meter&&(s={x:s.x/t.to_meter,y:s.y/t.to_meter,z:s.z||0})),i&&t.axis!=="enu"?_c(t,s):(s&&!n&&t.projName!=="geocent"&&delete s.z,s)}function xn(e,t,s,i){var r;return Array.isArray(s)?r=Pe(s):r={x:s.x,y:s.y,z:s.z,m:s.m},cs(e,t,r,i)}var yc=Ct("WGS84");function yn(e,t,s,i){var r,n,o;return Array.isArray(s)?(r=cs(e,t,Pe(s),i)||{x:NaN,y:NaN},s.length>2?(n=typeof e.name<"u"&&e.name==="geocent"||typeof t.name<"u"&&t.name==="geocent",n?typeof r.z=="number"?[r.x,r.y,r.z].concat(s.slice(3)):[r.x,r.y,s[2]].concat(s.slice(3)):i&&typeof r.z=="number"?[r.x,r.y,r.z].concat(s.slice(3)):[r.x,r.y].concat(s.slice(2))):[r.x,r.y]):(r=cs(e,t,{x:s.x,y:s.y,z:s.z,m:s.m},i)||{x:NaN,y:NaN},o=Object.keys(s),o.length===2||(n=typeof e.name<"u"&&e.name==="geocent"||typeof t.name<"u"&&t.name==="geocent",o.forEach(function(a){a==="x"||a==="y"||a==="z"&&(n||i)||(r[a]=s[a])})),r)}function qi(e){return e instanceof Ct?e:typeof e=="object"&&"oProj"in e?e.oProj:Ct(e)}function Sm(e,t,s){var i,r,n=!1,o;return typeof t>"u"?(r=qi(e),i=yc,n=!0):(typeof t.x<"u"||Array.isArray(t))&&(s=t,r=qi(e),i=yc,n=!0),i||(i=qi(e)),r||(r=qi(t)),s?yn(i,r,s):(o={forward:function(a,h){return yn(i,r,a,h)},inverse:function(a,h){return yn(r,i,a,h)}},n&&(o.oProj=r),o)}var Sc=Sm;var vc=6,wc="AJSAJS",Tc="AFAFAF",Re=65,ut=73,wt=79,ls=86,us=90,bc={forward:vn,inverse:vm,toPoint:En};function vn(e,t){return t=t||5,Tm(Em({lat:e[1],lon:e[0]}),t)}function vm(e){var t=wn(Rc(e.toUpperCase()));return t.lat&&t.lon?[t.lon,t.lat,t.lon,t.lat]:[t.left,t.bottom,t.right,t.top]}function En(e){var t=wn(Rc(e.toUpperCase()));return t.lat&&t.lon?[t.lon,t.lat]:[(t.left+t.right)/2,(t.top+t.bottom)/2]}function Sn(e){return e*(Math.PI/180)}function Ec(e){return 180*(e/Math.PI)}function Em(e){var t=e.lat,s=e.lon,i=6378137,r=.00669438,n=.9996,o,a,h,c,l,u,f,m=Sn(t),d=Sn(s),g,_;_=Math.floor((s+180)/6)+1,s===180&&(_=60),t>=56&&t<64&&s>=3&&s<12&&(_=32),t>=72&&t<84&&(s>=0&&s<9?_=31:s>=9&&s<21?_=33:s>=21&&s<33?_=35:s>=33&&s<42&&(_=37)),o=(_-1)*6-180+3,g=Sn(o),a=r/(1-r),h=i/Math.sqrt(1-r*Math.sin(m)*Math.sin(m)),c=Math.tan(m)*Math.tan(m),l=a*Math.cos(m)*Math.cos(m),u=Math.cos(m)*(d-g),f=i*((1-r/4-3*r*r/64-5*r*r*r/256)*m-(3*r/8+3*r*r/32+45*r*r*r/1024)*Math.sin(2*m)+(15*r*r/256+45*r*r*r/1024)*Math.sin(4*m)-35*r*r*r/3072*Math.sin(6*m));var M=n*h*(u+(1-c+l)*u*u*u/6+(5-18*c+c*c+72*l-58*a)*u*u*u*u*u/120)+5e5,y=n*(f+h*Math.tan(m)*(u*u/2+(5-c+9*l+4*l*l)*u*u*u*u/24+(61-58*c+c*c+600*l-330*a)*u*u*u*u*u*u/720));return t<0&&(y+=1e7),{northing:Math.round(y),easting:Math.round(M),zoneNumber:_,zoneLetter:wm(t)}}function wn(e){var t=e.northing,s=e.easting,i=e.zoneLetter,r=e.zoneNumber;if(r<0||r>60)return null;var n=.9996,o=6378137,a=.00669438,h,c=(1-Math.sqrt(1-a))/(1+Math.sqrt(1-a)),l,u,f,m,d,g,_,M,y,E=s-5e5,w=t;i<"N"&&(w-=1e7),_=(r-1)*6-180+3,h=a/(1-a),g=w/n,M=g/(o*(1-a/4-3*a*a/64-5*a*a*a/256)),y=M+(3*c/2-27*c*c*c/32)*Math.sin(2*M)+(21*c*c/16-55*c*c*c*c/32)*Math.sin(4*M)+151*c*c*c/96*Math.sin(6*M),l=o/Math.sqrt(1-a*Math.sin(y)*Math.sin(y)),u=Math.tan(y)*Math.tan(y),f=h*Math.cos(y)*Math.cos(y),m=o*(1-a)/Math.pow(1-a*Math.sin(y)*Math.sin(y),1.5),d=E/(l*n);var T=y-l*Math.tan(y)/m*(d*d/2-(5+3*u+10*f-4*f*f-9*h)*d*d*d*d/24+(61+90*u+298*f+45*u*u-252*h-3*f*f)*d*d*d*d*d*d/720);T=Ec(T);var b=(d-(1+2*u+f)*d*d*d/6+(5-2*f+28*u-3*f*f+8*h+24*u*u)*d*d*d*d*d/120)/Math.cos(y);b=_+Ec(b);var R;if(e.accuracy){var A=wn({northing:e.northing+e.accuracy,easting:e.easting+e.accuracy,zoneLetter:e.zoneLetter,zoneNumber:e.zoneNumber});R={top:A.lat,right:A.lon,bottom:T,left:b}}else R={lat:T,lon:b};return R}function wm(e){var t="Z";return 84>=e&&e>=72?t="X":72>e&&e>=64?t="W":64>e&&e>=56?t="V":56>e&&e>=48?t="U":48>e&&e>=40?t="T":40>e&&e>=32?t="S":32>e&&e>=24?t="R":24>e&&e>=16?t="Q":16>e&&e>=8?t="P":8>e&&e>=0?t="N":0>e&&e>=-8?t="M":-8>e&&e>=-16?t="L":-16>e&&e>=-24?t="K":-24>e&&e>=-32?t="J":-32>e&&e>=-40?t="H":-40>e&&e>=-48?t="G":-48>e&&e>=-56?t="F":-56>e&&e>=-64?t="E":-64>e&&e>=-72?t="D":-72>e&&e>=-80&&(t="C"),t}function Tm(e,t){var s="00000"+e.easting,i="00000"+e.northing;return e.zoneNumber+e.zoneLetter+bm(e.easting,e.northing,e.zoneNumber)+s.substr(s.length-5,t)+i.substr(i.length-5,t)}function bm(e,t,s){var i=Pc(s),r=Math.floor(e/1e5),n=Math.floor(t/1e5)%20;return Pm(r,n,i)}function Pc(e){var t=e%vc;return t===0&&(t=vc),t}function Pm(e,t,s){var i=s-1,r=wc.charCodeAt(i),n=Tc.charCodeAt(i),o=r+e-1,a=n+t,h=!1;o>us&&(o=o-us+Re-1,h=!0),(o===ut||r<ut&&o>ut||(o>ut||r<ut)&&h)&&o++,(o===wt||r<wt&&o>wt||(o>wt||r<wt)&&h)&&(o++,o===ut&&o++),o>us&&(o=o-us+Re-1),a>ls?(a=a-ls+Re-1,h=!0):h=!1,(a===ut||n<ut&&a>ut||(a>ut||n<ut)&&h)&&a++,(a===wt||n<wt&&a>wt||(a>wt||n<wt)&&h)&&(a++,a===ut&&a++),a>ls&&(a=a-ls+Re-1);var c=String.fromCharCode(o)+String.fromCharCode(a);return c}function Rc(e){if(e&&e.length===0)throw"MGRSPoint coverting from nothing";for(var t=e.length,s=null,i="",r,n=0;!/[A-Z]/.test(r=e.charAt(n));){if(n>=2)throw"MGRSPoint bad conversion from: "+e;i+=r,n++}var o=parseInt(i,10);if(n===0||n+3>t)throw"MGRSPoint bad conversion from: "+e;var a=e.charAt(n++);if(a<="A"||a==="B"||a==="Y"||a>="Z"||a==="I"||a==="O")throw"MGRSPoint zone letter "+a+" not handled: "+e;s=e.substring(n,n+=2);for(var h=Pc(o),c=Rm(s.charAt(0),h),l=Cm(s.charAt(1),h);l<Am(a);)l+=2e6;var u=t-n;if(u%2!==0)throw`MGRSPoint has to have an even number
8
8
  of digits after the zone letter and two 100km letters - front
9
9
  half for easting meters, second half for
10
- northing meters`+e;var f=u/2,d=0,m=0,g,p,M,x,S;return f>0&&(g=1e5/Math.pow(10,f),p=e.substring(n,n+f),d=parseFloat(p)*g,M=e.substring(n+f),m=parseFloat(M)*g),x=d+c,S=m+l,{easting:x,northing:S,zoneLetter:a,zoneNumber:o,accuracy:g}}function sp(e,t){for(var r=Qc.charCodeAt(t-1),s=1e5,i=!1;r!==e.charCodeAt(0);){if(r++,r===dt&&r++,r===Rt&&r++,r>Tr){if(i)throw"Bad character: "+e;r=qe,i=!0}s+=1e5}return s}function ip(e,t){if(e>"V")throw"MGRSPoint given invalid Northing "+e;for(var r=Xc.charCodeAt(t-1),s=0,i=!1;r!==e.charCodeAt(0);){if(r++,r===dt&&r++,r===Rt&&r++,r>wr){if(i)throw"Bad character: "+e;r=qe,i=!0}s+=1e5}return s}function np(e){var t;switch(e){case"C":t=11e5;break;case"D":t=2e6;break;case"E":t=28e5;break;case"F":t=37e5;break;case"G":t=46e5;break;case"H":t=55e5;break;case"J":t=64e5;break;case"K":t=73e5;break;case"L":t=82e5;break;case"M":t=91e5;break;case"N":t=0;break;case"P":t=8e5;break;case"Q":t=17e5;break;case"R":t=26e5;break;case"S":t=35e5;break;case"T":t=44e5;break;case"U":t=53e5;break;case"V":t=62e5;break;case"W":t=7e6;break;case"X":t=79e5;break;default:t=-1}if(t>=0)return t;throw"Invalid zone letter: "+e}function Be(e,t,r){if(!(this instanceof Be))return new Be(e,t,r);if(Array.isArray(e))this.x=e[0],this.y=e[1],this.z=e[2]||0;else if(typeof e=="object")this.x=e.x,this.y=e.y,this.z=e.z||0;else if(typeof e=="string"&&typeof t>"u"){var s=e.split(",");this.x=parseFloat(s[0]),this.y=parseFloat(s[1]),this.z=parseFloat(s[2])||0}else this.x=e,this.y=t,this.z=r||0;console.warn("proj4.Point will be removed in version 3, use proj4.toPoint")}Be.fromMGRS=function(e){return new Be(eo(e))};Be.prototype.toMGRS=function(e){return to([this.x,this.y],e)};var el=Be;var op=1,ap=.25,rl=.046875,sl=.01953125,il=.01068115234375,hp=.75,cp=.46875,lp=.013020833333333334,up=.007120768229166667,fp=.3645833333333333,mp=.005696614583333333,dp=.3076171875;function De(e){var t=[];t[0]=op-e*(ap+e*(rl+e*(sl+e*il))),t[1]=e*(hp-e*(rl+e*(sl+e*il)));var r=e*e;return t[2]=r*(cp-e*(lp+e*up)),r*=e,t[3]=r*(fp-e*mp),t[4]=r*e*dp,t}function Ft(e,t,r,s){return r*=t,t*=t,s[0]*e-r*(s[1]+t*(s[2]+t*(s[3]+t*s[4])))}var pp=20;function Fe(e,t,r){for(var s=1/(1-t),i=e,n=pp;n;--n){var o=Math.sin(i),a=1-t*o*o;if(a=(Ft(i,o,Math.cos(i),r)-e)*(a*Math.sqrt(a))*s,i-=a,Math.abs(a)<T)return i}return i}function gp(){this.x0=this.x0!==void 0?this.x0:0,this.y0=this.y0!==void 0?this.y0:0,this.long0=this.long0!==void 0?this.long0:0,this.lat0=this.lat0!==void 0?this.lat0:0,this.es&&(this.en=De(this.es),this.ml0=Ft(this.lat0,Math.sin(this.lat0),Math.cos(this.lat0),this.en))}function _p(e){var t=e.x,r=e.y,s=E(t-this.long0,this.over),i,n,o,a=Math.sin(r),h=Math.cos(r);if(this.es){var l=h*s,u=Math.pow(l,2),f=this.ep2*Math.pow(h,2),d=Math.pow(f,2),m=Math.abs(h)>T?Math.tan(r):0,g=Math.pow(m,2),p=Math.pow(g,2);i=1-this.es*Math.pow(a,2),l=l/Math.sqrt(i);var M=Ft(r,a,h,this.en);n=this.a*(this.k0*l*(1+u/6*(1-g+f+u/20*(5-18*g+p+14*f-58*g*f+u/42*(61+179*p-p*g-479*g)))))+this.x0,o=this.a*(this.k0*(M-this.ml0+a*s*l/2*(1+u/12*(5-g+9*f+4*d+u/30*(61+p-58*g+270*f-330*g*f+u/56*(1385+543*p-p*g-3111*g))))))+this.y0}else{var c=h*Math.sin(s);if(Math.abs(Math.abs(c)-1)<T)return 93;if(n=.5*this.a*this.k0*Math.log((1+c)/(1-c))+this.x0,o=h*Math.cos(s)/Math.sqrt(1-Math.pow(c,2)),c=Math.abs(o),c>=1){if(c-1>T)return 93;o=0}else o=Math.acos(o);r<0&&(o=-o),o=this.a*this.k0*(o-this.lat0)+this.y0}return e.x=n,e.y=o,e}function Mp(e){var t,r,s,i,n=(e.x-this.x0)*(1/this.a),o=(e.y-this.y0)*(1/this.a);if(this.es)if(t=this.ml0+o/this.k0,r=Fe(t,this.es,this.en),Math.abs(r)<y){var u=Math.sin(r),f=Math.cos(r),d=Math.abs(f)>T?Math.tan(r):0,m=this.ep2*Math.pow(f,2),g=Math.pow(m,2),p=Math.pow(d,2),M=Math.pow(p,2);t=1-this.es*Math.pow(u,2);var x=n*Math.sqrt(t)/this.k0,S=Math.pow(x,2);t=t*d,s=r-t*S/(1-this.es)*.5*(1-S/12*(5+3*p-9*m*p+m-4*g-S/30*(61+90*p-252*m*p+45*M+46*m-S/56*(1385+3633*p+4095*M+1574*M*p)))),i=E(this.long0+x*(1-S/6*(1+2*p+m-S/20*(5+28*p+24*M+8*m*p+6*m-S/42*(61+662*p+1320*M+720*M*p))))/f,this.over)}else s=y*Dt(o),i=0;else{var a=Math.exp(n/this.k0),h=.5*(a-1/a),c=this.lat0+o/this.k0,l=Math.cos(c);t=Math.sqrt((1-Math.pow(l,2))/(1+Math.pow(h,2))),s=Math.asin(t),o<0&&(s=-s),h===0&&l===0?i=0:i=E(Math.atan2(h,l)+this.long0,this.over)}return e.x=i,e.y=s,e}var xp=["Fast_Transverse_Mercator","Fast Transverse Mercator"],Ue={init:gp,forward:_p,inverse:Mp,names:xp};function ei(e){var t=Math.exp(e);return t=(t-1/t)/2,t}function Q(e,t){e=Math.abs(e),t=Math.abs(t);var r=Math.max(e,t),s=Math.min(e,t)/(r||1);return r*Math.sqrt(1+Math.pow(s,2))}function nl(e){var t=1+e,r=t-1;return r===0?e:e*Math.log(t)/r}function ol(e){var t=Math.abs(e);return t=nl(t*(1+t/(Q(1,t)+1))),e<0?-t:t}function ri(e,t){for(var r=2*Math.cos(2*t),s=e.length-1,i=e[s],n=0,o;--s>=0;)o=-n+r*i+e[s],n=i,i=o;return t+o*Math.sin(2*t)}function al(e,t){for(var r=2*Math.cos(t),s=e.length-1,i=e[s],n=0,o;--s>=0;)o=-n+r*i+e[s],n=i,i=o;return Math.sin(t)*o}function hl(e){var t=Math.exp(e);return t=(t+1/t)/2,t}function so(e,t,r){for(var s=Math.sin(t),i=Math.cos(t),n=ei(r),o=hl(r),a=2*i*o,h=-2*s*n,c=e.length-1,l=e[c],u=0,f=0,d=0,m,g;--c>=0;)m=f,g=u,f=l,u=d,l=-m+a*f-h*u+e[c],d=-g+h*f+a*u;return a=s*o,h=i*n,[a*l-h*d,a*d+h*l]}function yp(){if(!this.approx&&(isNaN(this.es)||this.es<=0))throw new Error('Incorrect elliptical usage. Try using the +approx option in the proj string, or PROJECTION["Fast_Transverse_Mercator"] in the WKT.');this.approx&&(Ue.init.apply(this),this.forward=Ue.forward,this.inverse=Ue.inverse),this.x0=this.x0!==void 0?this.x0:0,this.y0=this.y0!==void 0?this.y0:0,this.long0=this.long0!==void 0?this.long0:0,this.lat0=this.lat0!==void 0?this.lat0:0,this.cgb=[],this.cbg=[],this.utg=[],this.gtu=[];var e=this.es/(1+Math.sqrt(1-this.es)),t=e/(2-e),r=t;this.cgb[0]=t*(2+t*(-2/3+t*(-2+t*(116/45+t*(26/45+t*(-2854/675)))))),this.cbg[0]=t*(-2+t*(2/3+t*(4/3+t*(-82/45+t*(32/45+t*(4642/4725)))))),r=r*t,this.cgb[1]=r*(7/3+t*(-8/5+t*(-227/45+t*(2704/315+t*(2323/945))))),this.cbg[1]=r*(5/3+t*(-16/15+t*(-13/9+t*(904/315+t*(-1522/945))))),r=r*t,this.cgb[2]=r*(56/15+t*(-136/35+t*(-1262/105+t*(73814/2835)))),this.cbg[2]=r*(-26/15+t*(34/21+t*(8/5+t*(-12686/2835)))),r=r*t,this.cgb[3]=r*(4279/630+t*(-332/35+t*(-399572/14175))),this.cbg[3]=r*(1237/630+t*(-12/5+t*(-24832/14175))),r=r*t,this.cgb[4]=r*(4174/315+t*(-144838/6237)),this.cbg[4]=r*(-734/315+t*(109598/31185)),r=r*t,this.cgb[5]=r*(601676/22275),this.cbg[5]=r*(444337/155925),r=Math.pow(t,2),this.Qn=this.k0/(1+t)*(1+r*(1/4+r*(1/64+r/256))),this.utg[0]=t*(-.5+t*(2/3+t*(-37/96+t*(1/360+t*(81/512+t*(-96199/604800)))))),this.gtu[0]=t*(.5+t*(-2/3+t*(5/16+t*(41/180+t*(-127/288+t*(7891/37800)))))),this.utg[1]=r*(-1/48+t*(-1/15+t*(437/1440+t*(-46/105+t*(1118711/3870720))))),this.gtu[1]=r*(13/48+t*(-3/5+t*(557/1440+t*(281/630+t*(-1983433/1935360))))),r=r*t,this.utg[2]=r*(-17/480+t*(37/840+t*(209/4480+t*(-5569/90720)))),this.gtu[2]=r*(61/240+t*(-103/140+t*(15061/26880+t*(167603/181440)))),r=r*t,this.utg[3]=r*(-4397/161280+t*(11/504+t*(830251/7257600))),this.gtu[3]=r*(49561/161280+t*(-179/168+t*(6601661/7257600))),r=r*t,this.utg[4]=r*(-4583/161280+t*(108847/3991680)),this.gtu[4]=r*(34729/80640+t*(-3418889/1995840)),r=r*t,this.utg[5]=r*(-20648693/638668800),this.gtu[5]=r*(212378941/319334400);var s=ri(this.cbg,this.lat0);this.Zb=-this.Qn*(s+al(this.gtu,2*s))}function Sp(e){var t=E(e.x-this.long0,this.over),r=e.y;r=ri(this.cbg,r);var s=Math.sin(r),i=Math.cos(r),n=Math.sin(t),o=Math.cos(t);r=Math.atan2(s,o*i),t=Math.atan2(n*i,Q(s,i*o)),t=ol(Math.tan(t));var a=so(this.gtu,2*r,2*t);r=r+a[0],t=t+a[1];var h,c;return Math.abs(t)<=2.623395162778?(h=this.a*(this.Qn*t)+this.x0,c=this.a*(this.Qn*r+this.Zb)+this.y0):(h=1/0,c=1/0),e.x=h,e.y=c,e}function vp(e){var t=(e.x-this.x0)*(1/this.a),r=(e.y-this.y0)*(1/this.a);r=(r-this.Zb)/this.Qn,t=t/this.Qn;var s,i;if(Math.abs(t)<=2.623395162778){var n=so(this.utg,2*r,2*t);r=r+n[0],t=t+n[1],t=Math.atan(ei(t));var o=Math.sin(r),a=Math.cos(r),h=Math.sin(t),c=Math.cos(t);r=Math.atan2(o*c,Q(h,c*a)),t=Math.atan2(h,c*a),s=E(t+this.long0,this.over),i=ri(this.cgb,r)}else s=1/0,i=1/0;return e.x=s,e.y=i,e}var Ep=["Extended_Transverse_Mercator","Extended Transverse Mercator","etmerc","Transverse_Mercator","Transverse Mercator","Gauss Kruger","Gauss_Kruger","tmerc"],Ve={init:yp,forward:Sp,inverse:vp,names:Ep};function cl(e,t){if(e===void 0){if(e=Math.floor((E(t)+Math.PI)*30/Math.PI)+1,e<0)return 0;if(e>60)return 60}return e}var wp="etmerc";function Tp(){var e=cl(this.zone,this.long0);if(e===void 0)throw new Error("unknown utm zone");this.lat0=0,this.long0=(6*Math.abs(e)-183)*V,this.x0=5e5,this.y0=this.utmSouth?1e7:0,this.k0=.9996,Ve.init.apply(this),this.forward=Ve.forward,this.inverse=Ve.inverse}var Pp=["Universal Transverse Mercator System","utm"],ll={init:Tp,names:Pp,dependsOn:wp};function si(e,t){return Math.pow((1-e)/(1+e),t)}var bp=20;function Rp(){var e=Math.sin(this.lat0),t=Math.cos(this.lat0);t*=t,this.rc=Math.sqrt(1-this.es)/(1-this.es*e*e),this.C=Math.sqrt(1+this.es*t*t/(1-this.es)),this.phic0=Math.asin(e/this.C),this.ratexp=.5*this.C*this.e,this.K=Math.tan(.5*this.phic0+q)/(Math.pow(Math.tan(.5*this.lat0+q),this.C)*si(this.e*e,this.ratexp))}function Cp(e){var t=e.x,r=e.y;return e.y=2*Math.atan(this.K*Math.pow(Math.tan(.5*r+q),this.C)*si(this.e*Math.sin(r),this.ratexp))-y,e.x=this.C*t,e}function Ap(e){for(var t=1e-14,r=e.x/this.C,s=e.y,i=Math.pow(Math.tan(.5*s+q)/this.K,1/this.C),n=bp;n>0&&(s=2*Math.atan(i*si(this.e*Math.sin(e.y),-.5*this.e))-y,!(Math.abs(s-e.y)<t));--n)e.y=s;return n?(e.x=r,e.y=s,e):null}var Ip=["gauss"],ii={init:Rp,forward:Cp,inverse:Ap,names:Ip};function Op(){ii.init.apply(this),this.rc&&(this.sinc0=Math.sin(this.phic0),this.cosc0=Math.cos(this.phic0),this.R2=2*this.rc,this.title||(this.title="Oblique Stereographic Alternative"))}function Np(e){var t,r,s,i;return e.x=E(e.x-this.long0,this.over),ii.forward.apply(this,[e]),t=Math.sin(e.y),r=Math.cos(e.y),s=Math.cos(e.x),i=this.k0*this.R2/(1+this.sinc0*t+this.cosc0*r*s),e.x=i*r*Math.sin(e.x),e.y=i*(this.cosc0*t-this.sinc0*r*s),e.x=this.a*e.x+this.x0,e.y=this.a*e.y+this.y0,e}function Lp(e){var t,r,s,i,n;if(e.x=(e.x-this.x0)/this.a,e.y=(e.y-this.y0)/this.a,e.x/=this.k0,e.y/=this.k0,n=Q(e.x,e.y)){var o=2*Math.atan2(n,this.R2);t=Math.sin(o),r=Math.cos(o),i=Math.asin(r*this.sinc0+e.y*t*this.cosc0/n),s=Math.atan2(e.x*t,n*this.cosc0*r-e.y*this.sinc0*t)}else i=this.phic0,s=0;return e.x=s,e.y=i,ii.inverse.apply(this,[e]),e.x=E(e.x+this.long0,this.over),e}var Gp=["Stereographic_North_Pole","Oblique_Stereographic","sterea","Oblique Stereographic Alternative","Double_Stereographic"],ul={init:Op,forward:Np,inverse:Lp,names:Gp};function io(e,t,r){return t*=r,Math.tan(.5*(y+e))*Math.pow((1-t)/(1+t),.5*r)}function zp(){this.x0=this.x0||0,this.y0=this.y0||0,this.lat0=this.lat0||0,this.long0=this.long0||0,this.coslat0=Math.cos(this.lat0),this.sinlat0=Math.sin(this.lat0),this.sphere?this.k0===1&&!isNaN(this.lat_ts)&&Math.abs(this.coslat0)<=T&&(this.k0=.5*(1+Dt(this.lat0)*Math.sin(this.lat_ts))):(Math.abs(this.coslat0)<=T&&(this.lat0>0?this.con=1:this.con=-1),this.cons=Math.sqrt(Math.pow(1+this.e,1+this.e)*Math.pow(1-this.e,1-this.e)),this.k0===1&&!isNaN(this.lat_ts)&&Math.abs(this.coslat0)<=T&&Math.abs(Math.cos(this.lat_ts))>T&&(this.k0=.5*this.cons*at(this.e,Math.sin(this.lat_ts),Math.cos(this.lat_ts))/ut(this.e,this.con*this.lat_ts,this.con*Math.sin(this.lat_ts))),this.ms1=at(this.e,this.sinlat0,this.coslat0),this.X0=2*Math.atan(io(this.lat0,this.sinlat0,this.e))-y,this.cosX0=Math.cos(this.X0),this.sinX0=Math.sin(this.X0))}function qp(e){var t=e.x,r=e.y,s=Math.sin(r),i=Math.cos(r),n,o,a,h,c,l,u=E(t-this.long0,this.over);return Math.abs(Math.abs(t-this.long0)-Math.PI)<=T&&Math.abs(r+this.lat0)<=T?(e.x=NaN,e.y=NaN,e):this.sphere?(n=2*this.k0/(1+this.sinlat0*s+this.coslat0*i*Math.cos(u)),e.x=this.a*n*i*Math.sin(u)+this.x0,e.y=this.a*n*(this.coslat0*s-this.sinlat0*i*Math.cos(u))+this.y0,e):(o=2*Math.atan(io(r,s,this.e))-y,h=Math.cos(o),a=Math.sin(o),Math.abs(this.coslat0)<=T?(c=ut(this.e,r*this.con,this.con*s),l=2*this.a*this.k0*c/this.cons,e.x=this.x0+l*Math.sin(t-this.long0),e.y=this.y0-this.con*l*Math.cos(t-this.long0),e):(Math.abs(this.sinlat0)<T?(n=2*this.a*this.k0/(1+h*Math.cos(u)),e.y=n*a):(n=2*this.a*this.k0*this.ms1/(this.cosX0*(1+this.sinX0*a+this.cosX0*h*Math.cos(u))),e.y=n*(this.cosX0*a-this.sinX0*h*Math.cos(u))+this.y0),e.x=n*h*Math.sin(u)+this.x0,e))}function Bp(e){e.x-=this.x0,e.y-=this.y0;var t,r,s,i,n,o=Math.sqrt(e.x*e.x+e.y*e.y);if(this.sphere){var a=2*Math.atan(o/(2*this.a*this.k0));return t=this.long0,r=this.lat0,o<=T?(e.x=t,e.y=r,e):(r=Math.asin(Math.cos(a)*this.sinlat0+e.y*Math.sin(a)*this.coslat0/o),Math.abs(this.coslat0)<T?this.lat0>0?t=E(this.long0+Math.atan2(e.x,-1*e.y),this.over):t=E(this.long0+Math.atan2(e.x,e.y),this.over):t=E(this.long0+Math.atan2(e.x*Math.sin(a),o*this.coslat0*Math.cos(a)-e.y*this.sinlat0*Math.sin(a)),this.over),e.x=t,e.y=r,e)}else if(Math.abs(this.coslat0)<=T){if(o<=T)return r=this.lat0,t=this.long0,e.x=t,e.y=r,e;e.x*=this.con,e.y*=this.con,s=o*this.cons/(2*this.a*this.k0),r=this.con*$t(this.e,s),t=this.con*E(this.con*this.long0+Math.atan2(e.x,-1*e.y),this.over)}else i=2*Math.atan(o*this.cosX0/(2*this.a*this.k0*this.ms1)),t=this.long0,o<=T?n=this.X0:(n=Math.asin(Math.cos(i)*this.sinX0+e.y*Math.sin(i)*this.cosX0/o),t=E(this.long0+Math.atan2(e.x*Math.sin(i),o*this.cosX0*Math.cos(i)-e.y*this.sinX0*Math.sin(i)),this.over)),r=-1*$t(this.e,Math.tan(.5*(y+n)));return e.x=t,e.y=r,e}var Dp=["stere","Stereographic_South_Pole","Polar_Stereographic_variant_A","Polar_Stereographic_variant_B","Polar_Stereographic"],fl={init:zp,forward:qp,inverse:Bp,names:Dp,ssfn_:io};function Fp(){var e=this.lat0;this.lambda0=this.long0;var t=Math.sin(e),r=this.a,s=this.rf,i=1/s,n=2*i-Math.pow(i,2),o=this.e=Math.sqrt(n);this.R=this.k0*r*Math.sqrt(1-n)/(1-n*Math.pow(t,2)),this.alpha=Math.sqrt(1+n/(1-n)*Math.pow(Math.cos(e),4)),this.b0=Math.asin(t/this.alpha);var a=Math.log(Math.tan(Math.PI/4+this.b0/2)),h=Math.log(Math.tan(Math.PI/4+e/2)),c=Math.log((1+o*t)/(1-o*t));this.K=a-this.alpha*h+this.alpha*o/2*c}function Up(e){var t=Math.log(Math.tan(Math.PI/4-e.y/2)),r=this.e/2*Math.log((1+this.e*Math.sin(e.y))/(1-this.e*Math.sin(e.y))),s=-this.alpha*(t+r)+this.K,i=2*(Math.atan(Math.exp(s))-Math.PI/4),n=this.alpha*(e.x-this.lambda0),o=Math.atan(Math.sin(n)/(Math.sin(this.b0)*Math.tan(i)+Math.cos(this.b0)*Math.cos(n))),a=Math.asin(Math.cos(this.b0)*Math.sin(i)-Math.sin(this.b0)*Math.cos(i)*Math.cos(n));return e.y=this.R/2*Math.log((1+Math.sin(a))/(1-Math.sin(a)))+this.y0,e.x=this.R*o+this.x0,e}function Vp(e){for(var t=e.x-this.x0,r=e.y-this.y0,s=t/this.R,i=2*(Math.atan(Math.exp(r/this.R))-Math.PI/4),n=Math.asin(Math.cos(this.b0)*Math.sin(i)+Math.sin(this.b0)*Math.cos(i)*Math.cos(s)),o=Math.atan(Math.sin(s)/(Math.cos(this.b0)*Math.cos(s)-Math.sin(this.b0)*Math.tan(i))),a=this.lambda0+o/this.alpha,h=0,c=n,l=-1e3,u=0;Math.abs(c-l)>1e-7;){if(++u>20)return;h=1/this.alpha*(Math.log(Math.tan(Math.PI/4+n/2))-this.K)+this.e*Math.log(Math.tan(Math.PI/4+Math.asin(this.e*Math.sin(c))/2)),l=c,c=2*Math.atan(Math.exp(h))-Math.PI/2}return e.x=a,e.y=c,e}var kp=["somerc"],ml={init:Fp,forward:Up,inverse:Vp,names:kp};var ke=1e-7;function jp(e){var t=["Hotine_Oblique_Mercator","Hotine_Oblique_Mercator_variant_A","Hotine_Oblique_Mercator_Azimuth_Natural_Origin"],r=typeof e.projName=="object"?Object.keys(e.projName)[0]:e.projName;return"no_uoff"in e||"no_off"in e||t.indexOf(r)!==-1||t.indexOf(Hn(r))!==-1}function Wp(){var e,t,r,s,i,n,o,a,h,c,l=0,u,f=0,d=0,m=0,g=0,p=0,M=0;this.no_off=jp(this),this.no_rot="no_rot"in this;var x=!1;"alpha"in this&&(x=!0);var S=!1;if("rectified_grid_angle"in this&&(S=!0),x&&(M=this.alpha),S&&(l=this.rectified_grid_angle,x||(M=0,x=!0)),x||S)f=this.longc;else if(d=this.long1,g=this.lat1,m=this.long2,p=this.lat2,Math.abs(g-p)<=ke||(e=Math.abs(g))<=ke||Math.abs(e-y)<=ke||Math.abs(Math.abs(this.lat0)-y)<=ke||Math.abs(Math.abs(p)-y)<=ke)throw new Error;var v=1-this.es;t=Math.sqrt(v),Math.abs(this.lat0)>T?(a=Math.sin(this.lat0),r=Math.cos(this.lat0),e=1-this.es*a*a,this.B=r*r,this.B=Math.sqrt(1+this.es*this.B*this.B/v),this.A=this.B*this.k0*t/e,s=this.B*t/(r*Math.sqrt(e)),i=s*s-1,i<=0?i=0:(i=Math.sqrt(i),this.lat0<0&&(i=-i)),this.E=i+=s,this.E*=Math.pow(ut(this.e,this.lat0,a),this.B)):(this.B=1/t,this.A=this.k0,this.E=s=i=1),x||S?(x?(u=Math.asin(Math.sin(M)/s),S||(l=M)):(u=l,M=Math.asin(s*Math.sin(u))),this.lam0=f-Math.asin(.5*(i-1/i)*Math.tan(u))/this.B):(n=Math.pow(ut(this.e,g,Math.sin(g)),this.B),o=Math.pow(ut(this.e,p,Math.sin(p)),this.B),i=this.E/n,h=(o-n)/(o+n),c=this.E*this.E,c=(c-o*n)/(c+o*n),e=d-m,e<-Math.PI?m-=ne:e>Math.PI&&(m+=ne),this.lam0=E(.5*(d+m)-Math.atan(c*Math.tan(.5*this.B*(d-m))/h)/this.B,this.over),u=Math.atan(2*Math.sin(this.B*E(d-this.lam0,this.over))/(i-1/i)),l=M=Math.asin(s*Math.sin(u))),this.singam=Math.sin(u),this.cosgam=Math.cos(u),this.sinrot=Math.sin(l),this.cosrot=Math.cos(l),this.rB=1/this.B,this.ArB=this.A*this.rB,this.BrA=1/this.ArB,this.no_off?this.u_0=0:(this.u_0=Math.abs(this.ArB*Math.atan(Math.sqrt(s*s-1)/Math.cos(M))),this.lat0<0&&(this.u_0=-this.u_0)),i=.5*u,this.v_pole_n=this.ArB*Math.log(Math.tan(q-i)),this.v_pole_s=this.ArB*Math.log(Math.tan(q+i))}function Hp(e){var t={},r,s,i,n,o,a,h,c;if(e.x=e.x-this.lam0,Math.abs(Math.abs(e.y)-y)>T){if(o=this.E/Math.pow(ut(this.e,e.y,Math.sin(e.y)),this.B),a=1/o,r=.5*(o-a),s=.5*(o+a),n=Math.sin(this.B*e.x),i=(r*this.singam-n*this.cosgam)/s,Math.abs(Math.abs(i)-1)<T)throw new Error;c=.5*this.ArB*Math.log((1-i)/(1+i)),a=Math.cos(this.B*e.x),Math.abs(a)<ke?h=this.A*e.x:h=this.ArB*Math.atan2(r*this.cosgam+n*this.singam,a)}else c=e.y>0?this.v_pole_n:this.v_pole_s,h=this.ArB*e.y;return this.no_rot?(t.x=h,t.y=c):(h-=this.u_0,t.x=c*this.cosrot+h*this.sinrot,t.y=h*this.cosrot-c*this.sinrot),t.x=this.a*t.x+this.x0,t.y=this.a*t.y+this.y0,t}function Yp(e){var t,r,s,i,n,o,a,h={};if(e.x=(e.x-this.x0)*(1/this.a),e.y=(e.y-this.y0)*(1/this.a),this.no_rot?(r=e.y,t=e.x):(r=e.x*this.cosrot-e.y*this.sinrot,t=e.y*this.cosrot+e.x*this.sinrot+this.u_0),s=Math.exp(-this.BrA*r),i=.5*(s-1/s),n=.5*(s+1/s),o=Math.sin(this.BrA*t),a=(o*this.cosgam+i*this.singam)/n,Math.abs(Math.abs(a)-1)<T)h.x=0,h.y=a<0?-y:y;else{if(h.y=this.E/Math.sqrt((1+a)/(1-a)),h.y=$t(this.e,Math.pow(h.y,1/this.B)),h.y===1/0)throw new Error;h.x=-this.rB*Math.atan2(i*this.cosgam-o*this.singam,Math.cos(this.BrA*t))}return h.x+=this.lam0,h}var Zp=["Hotine_Oblique_Mercator","Hotine Oblique Mercator","Hotine_Oblique_Mercator_variant_A","Hotine_Oblique_Mercator_Variant_B","Hotine_Oblique_Mercator_Azimuth_Natural_Origin","Hotine_Oblique_Mercator_Two_Point_Natural_Origin","Hotine_Oblique_Mercator_Azimuth_Center","Oblique_Mercator","omerc"],dl={init:Wp,forward:Hp,inverse:Yp,names:Zp};function $p(){if(this.lat2||(this.lat2=this.lat1),this.k0||(this.k0=1),this.x0=this.x0||0,this.y0=this.y0||0,!(Math.abs(this.lat1+this.lat2)<T)){var e=this.b/this.a;this.e=Math.sqrt(1-e*e);var t=Math.sin(this.lat1),r=Math.cos(this.lat1),s=at(this.e,t,r),i=ut(this.e,this.lat1,t),n=Math.sin(this.lat2),o=Math.cos(this.lat2),a=at(this.e,n,o),h=ut(this.e,this.lat2,n),c=Math.abs(Math.abs(this.lat0)-y)<T?0:ut(this.e,this.lat0,Math.sin(this.lat0));Math.abs(this.lat1-this.lat2)>T?this.ns=Math.log(s/a)/Math.log(i/h):this.ns=t,isNaN(this.ns)&&(this.ns=t),this.f0=s/(this.ns*Math.pow(i,this.ns)),this.rh=this.a*this.f0*Math.pow(c,this.ns),this.title||(this.title="Lambert Conformal Conic")}}function Qp(e){var t=e.x,r=e.y;Math.abs(2*Math.abs(r)-Math.PI)<=T&&(r=Dt(r)*(y-2*T));var s=Math.abs(Math.abs(r)-y),i,n;if(s>T)i=ut(this.e,r,Math.sin(r)),n=this.a*this.f0*Math.pow(i,this.ns);else{if(s=r*this.ns,s<=0)return null;n=0}var o=this.ns*E(t-this.long0,this.over);return e.x=this.k0*(n*Math.sin(o))+this.x0,e.y=this.k0*(this.rh-n*Math.cos(o))+this.y0,e}function Xp(e){var t,r,s,i,n,o=(e.x-this.x0)/this.k0,a=this.rh-(e.y-this.y0)/this.k0;this.ns>0?(t=Math.sqrt(o*o+a*a),r=1):(t=-Math.sqrt(o*o+a*a),r=-1);var h=0;if(t!==0&&(h=Math.atan2(r*o,r*a)),t!==0||this.ns>0){if(r=1/this.ns,s=Math.pow(t/(this.a*this.f0),r),i=$t(this.e,s),i===-9999)return null}else i=-y;return n=E(h/this.ns+this.long0,this.over),e.x=n,e.y=i,e}var Kp=["Lambert Tangential Conformal Conic Projection","Lambert_Conformal_Conic","Lambert_Conformal_Conic_1SP","Lambert_Conformal_Conic_2SP","lcc","Lambert Conic Conformal (1SP)","Lambert Conic Conformal (2SP)"],pl={init:$p,forward:Qp,inverse:Xp,names:Kp};function Jp(){this.a=6377397155e-3,this.es=.006674372230614,this.e=Math.sqrt(this.es),this.lat0||(this.lat0=.863937979737193),this.long0||(this.long0=.7417649320975901-.308341501185665),this.k0||(this.k0=.9999),this.s45=.785398163397448,this.s90=2*this.s45,this.fi0=this.lat0,this.e2=this.es,this.e=Math.sqrt(this.e2),this.alfa=Math.sqrt(1+this.e2*Math.pow(Math.cos(this.fi0),4)/(1-this.e2)),this.uq=1.04216856380474,this.u0=Math.asin(Math.sin(this.fi0)/this.alfa),this.g=Math.pow((1+this.e*Math.sin(this.fi0))/(1-this.e*Math.sin(this.fi0)),this.alfa*this.e/2),this.k=Math.tan(this.u0/2+this.s45)/Math.pow(Math.tan(this.fi0/2+this.s45),this.alfa)*this.g,this.k1=this.k0,this.n0=this.a*Math.sqrt(1-this.e2)/(1-this.e2*Math.pow(Math.sin(this.fi0),2)),this.s0=1.37008346281555,this.n=Math.sin(this.s0),this.ro0=this.k1*this.n0/Math.tan(this.s0),this.ad=this.s90-this.uq}function tg(e){var t,r,s,i,n,o,a,h=e.x,c=e.y,l=E(h-this.long0,this.over);return t=Math.pow((1+this.e*Math.sin(c))/(1-this.e*Math.sin(c)),this.alfa*this.e/2),r=2*(Math.atan(this.k*Math.pow(Math.tan(c/2+this.s45),this.alfa)/t)-this.s45),s=-l*this.alfa,i=Math.asin(Math.cos(this.ad)*Math.sin(r)+Math.sin(this.ad)*Math.cos(r)*Math.cos(s)),n=Math.asin(Math.cos(r)*Math.sin(s)/Math.cos(i)),o=this.n*n,a=this.ro0*Math.pow(Math.tan(this.s0/2+this.s45),this.n)/Math.pow(Math.tan(i/2+this.s45),this.n),e.y=a*Math.cos(o)/1,e.x=a*Math.sin(o)/1,this.czech||(e.y*=-1,e.x*=-1),e}function eg(e){var t,r,s,i,n,o,a,h,c=e.x;e.x=e.y,e.y=c,this.czech||(e.y*=-1,e.x*=-1),o=Math.sqrt(e.x*e.x+e.y*e.y),n=Math.atan2(e.y,e.x),i=n/Math.sin(this.s0),s=2*(Math.atan(Math.pow(this.ro0/o,1/this.n)*Math.tan(this.s0/2+this.s45))-this.s45),t=Math.asin(Math.cos(this.ad)*Math.sin(s)-Math.sin(this.ad)*Math.cos(s)*Math.cos(i)),r=Math.asin(Math.cos(s)*Math.sin(i)/Math.cos(t)),e.x=this.long0-r/this.alfa,a=t,h=0;var l=0;do e.y=2*(Math.atan(Math.pow(this.k,-1/this.alfa)*Math.pow(Math.tan(t/2+this.s45),1/this.alfa)*Math.pow((1+this.e*Math.sin(a))/(1-this.e*Math.sin(a)),this.e/2))-this.s45),Math.abs(a-e.y)<1e-10&&(h=1),a=e.y,l+=1;while(h===0&&l<15);return l>=15?null:e}var rg=["Krovak","Krovak Modified","Krovak (North Orientated)","Krovak Modified (North Orientated)","krovak"],gl={init:Jp,forward:tg,inverse:eg,names:rg};function K(e,t,r,s,i){return e*i-t*Math.sin(2*i)+r*Math.sin(4*i)-s*Math.sin(6*i)}function Qt(e){return 1-.25*e*(1+e/16*(3+1.25*e))}function Xt(e){return .375*e*(1+.25*e*(1+.46875*e))}function Kt(e){return .05859375*e*e*(1+.75*e)}function Jt(e){return e*e*e*(35/3072)}function Pr(e,t,r){var s=t*r;return e/Math.sqrt(1-s*s)}function pt(e){return Math.abs(e)<y?e:e-Dt(e)*Math.PI}function ge(e,t,r,s,i){var n,o;n=e/t;for(var a=0;a<15;a++)if(o=(e-(t*n-r*Math.sin(2*n)+s*Math.sin(4*n)-i*Math.sin(6*n)))/(t-2*r*Math.cos(2*n)+4*s*Math.cos(4*n)-6*i*Math.cos(6*n)),n+=o,Math.abs(o)<=1e-10)return n;return NaN}function sg(){this.sphere||(this.e0=Qt(this.es),this.e1=Xt(this.es),this.e2=Kt(this.es),this.e3=Jt(this.es),this.ml0=this.a*K(this.e0,this.e1,this.e2,this.e3,this.lat0))}function ig(e){var t,r,s=e.x,i=e.y;if(s=E(s-this.long0,this.over),this.sphere)t=this.a*Math.asin(Math.cos(i)*Math.sin(s)),r=this.a*(Math.atan2(Math.tan(i),Math.cos(s))-this.lat0);else{var n=Math.sin(i),o=Math.cos(i),a=Pr(this.a,this.e,n),h=Math.tan(i)*Math.tan(i),c=s*Math.cos(i),l=c*c,u=this.es*o*o/(1-this.es),f=this.a*K(this.e0,this.e1,this.e2,this.e3,i);t=a*c*(1-l*h*(1/6-(8-h+8*u)*l/120)),r=f-this.ml0+a*n/o*l*(.5+(5-h+6*u)*l/24)}return e.x=t+this.x0,e.y=r+this.y0,e}function ng(e){e.x-=this.x0,e.y-=this.y0;var t=e.x/this.a,r=e.y/this.a,s,i;if(this.sphere){var n=r+this.lat0;s=Math.asin(Math.sin(n)*Math.cos(t)),i=Math.atan2(Math.tan(t),Math.cos(n))}else{var o=this.ml0/this.a+r,a=ge(o,this.e0,this.e1,this.e2,this.e3);if(Math.abs(Math.abs(a)-y)<=T)return e.x=this.long0,e.y=y,r<0&&(e.y*=-1),e;var h=Pr(this.a,this.e,Math.sin(a)),c=h*h*h/this.a/this.a*(1-this.es),l=Math.pow(Math.tan(a),2),u=t*this.a/h,f=u*u;s=a-h*Math.tan(a)/c*u*u*(.5-(1+3*l)*u*u/24),i=u*(1-f*(l/3+(1+3*l)*l*f/15))/Math.cos(a)}return e.x=E(i+this.long0,this.over),e.y=pt(s),e}var og=["Cassini","Cassini_Soldner","cass"],_l={init:sg,forward:ig,inverse:ng,names:og};function gt(e,t){var r;return e>1e-7?(r=e*t,(1-e*e)*(t/(1-r*r)-.5/e*Math.log((1-r)/(1+r)))):2*t}var ag=.3333333333333333,hg=.17222222222222222,cg=.10257936507936508,lg=.06388888888888888,ug=.0664021164021164,fg=.016415012942191543;function br(e){var t,r=[];return r[0]=e*ag,t=e*e,r[0]+=t*hg,r[1]=t*lg,t*=e,r[0]+=t*cg,r[1]+=t*ug,r[2]=t*fg,r}function Rr(e,t){var r=e+e;return e+t[0]*Math.sin(r)+t[1]*Math.sin(r+r)+t[2]*Math.sin(r+r+r)}var no=1,oo=2,ao=3,ni=4;function mg(){var e=Math.abs(this.lat0);if(Math.abs(e-y)<T?this.mode=this.lat0<0?no:oo:Math.abs(e)<T?this.mode=ao:this.mode=ni,this.es>0){var t;switch(this.qp=gt(this.e,1),this.mmf=.5/(1-this.es),this.apa=br(this.es),this.mode){case oo:this.dd=1;break;case no:this.dd=1;break;case ao:this.rq=Math.sqrt(.5*this.qp),this.dd=1/this.rq,this.xmf=1,this.ymf=.5*this.qp;break;case ni:this.rq=Math.sqrt(.5*this.qp),t=Math.sin(this.lat0),this.sinb1=gt(this.e,t)/this.qp,this.cosb1=Math.sqrt(1-this.sinb1*this.sinb1),this.dd=Math.cos(this.lat0)/(Math.sqrt(1-this.es*t*t)*this.rq*this.cosb1),this.ymf=(this.xmf=this.rq)/this.dd,this.xmf*=this.dd;break}}else this.mode===ni&&(this.sinph0=Math.sin(this.lat0),this.cosph0=Math.cos(this.lat0))}function dg(e){var t,r,s,i,n,o,a,h,c,l,u=e.x,f=e.y;if(u=E(u-this.long0,this.over),this.sphere){if(n=Math.sin(f),l=Math.cos(f),s=Math.cos(u),this.mode===this.OBLIQ||this.mode===this.EQUIT){if(r=this.mode===this.EQUIT?1+l*s:1+this.sinph0*n+this.cosph0*l*s,r<=T)return null;r=Math.sqrt(2/r),t=r*l*Math.sin(u),r*=this.mode===this.EQUIT?n:this.cosph0*n-this.sinph0*l*s}else if(this.mode===this.N_POLE||this.mode===this.S_POLE){if(this.mode===this.N_POLE&&(s=-s),Math.abs(f+this.lat0)<T)return null;r=q-f*.5,r=2*(this.mode===this.S_POLE?Math.cos(r):Math.sin(r)),t=r*Math.sin(u),r*=s}}else{switch(a=0,h=0,c=0,s=Math.cos(u),i=Math.sin(u),n=Math.sin(f),o=gt(this.e,n),(this.mode===this.OBLIQ||this.mode===this.EQUIT)&&(a=o/this.qp,h=Math.sqrt(1-a*a)),this.mode){case this.OBLIQ:c=1+this.sinb1*a+this.cosb1*h*s;break;case this.EQUIT:c=1+h*s;break;case this.N_POLE:c=y+f,o=this.qp-o;break;case this.S_POLE:c=f-y,o=this.qp+o;break}if(Math.abs(c)<T)return null;switch(this.mode){case this.OBLIQ:case this.EQUIT:c=Math.sqrt(2/c),this.mode===this.OBLIQ?r=this.ymf*c*(this.cosb1*a-this.sinb1*h*s):r=(c=Math.sqrt(2/(1+h*s)))*a*this.ymf,t=this.xmf*c*h*i;break;case this.N_POLE:case this.S_POLE:o>=0?(t=(c=Math.sqrt(o))*i,r=s*(this.mode===this.S_POLE?c:-c)):t=r=0;break}}return e.x=this.a*t+this.x0,e.y=this.a*r+this.y0,e}function pg(e){e.x-=this.x0,e.y-=this.y0;var t=e.x/this.a,r=e.y/this.a,s,i,n,o,a,h,c;if(this.sphere){var l=0,u,f=0;if(u=Math.sqrt(t*t+r*r),i=u*.5,i>1)return null;switch(i=2*Math.asin(i),(this.mode===this.OBLIQ||this.mode===this.EQUIT)&&(f=Math.sin(i),l=Math.cos(i)),this.mode){case this.EQUIT:i=Math.abs(u)<=T?0:Math.asin(r*f/u),t*=f,r=l*u;break;case this.OBLIQ:i=Math.abs(u)<=T?this.lat0:Math.asin(l*this.sinph0+r*f*this.cosph0/u),t*=f*this.cosph0,r=(l-Math.sin(i)*this.sinph0)*u;break;case this.N_POLE:r=-r,i=y-i;break;case this.S_POLE:i-=y;break}s=r===0&&(this.mode===this.EQUIT||this.mode===this.OBLIQ)?0:Math.atan2(t,r)}else{if(c=0,this.mode===this.OBLIQ||this.mode===this.EQUIT){if(t/=this.dd,r*=this.dd,h=Math.sqrt(t*t+r*r),h<T)return e.x=this.long0,e.y=this.lat0,e;o=2*Math.asin(.5*h/this.rq),n=Math.cos(o),t*=o=Math.sin(o),this.mode===this.OBLIQ?(c=n*this.sinb1+r*o*this.cosb1/h,a=this.qp*c,r=h*this.cosb1*n-r*this.sinb1*o):(c=r*o/h,a=this.qp*c,r=h*n)}else if(this.mode===this.N_POLE||this.mode===this.S_POLE){if(this.mode===this.N_POLE&&(r=-r),a=t*t+r*r,!a)return e.x=this.long0,e.y=this.lat0,e;c=1-a/this.qp,this.mode===this.S_POLE&&(c=-c)}s=Math.atan2(t,r),i=Rr(Math.asin(c),this.apa)}return e.x=E(this.long0+s,this.over),e.y=i,e}var gg=["Lambert Azimuthal Equal Area","Lambert_Azimuthal_Equal_Area","laea"],Ml={init:mg,forward:dg,inverse:pg,names:gg,S_POLE:no,N_POLE:oo,EQUIT:ao,OBLIQ:ni};function _t(e){return Math.abs(e)>1&&(e=e>1?1:-1),Math.asin(e)}function _g(){Math.abs(this.lat1+this.lat2)<T||(this.temp=this.b/this.a,this.es=1-Math.pow(this.temp,2),this.e3=Math.sqrt(this.es),this.sin_po=Math.sin(this.lat1),this.cos_po=Math.cos(this.lat1),this.t1=this.sin_po,this.con=this.sin_po,this.ms1=at(this.e3,this.sin_po,this.cos_po),this.qs1=gt(this.e3,this.sin_po),this.sin_po=Math.sin(this.lat2),this.cos_po=Math.cos(this.lat2),this.t2=this.sin_po,this.ms2=at(this.e3,this.sin_po,this.cos_po),this.qs2=gt(this.e3,this.sin_po),this.sin_po=Math.sin(this.lat0),this.cos_po=Math.cos(this.lat0),this.t3=this.sin_po,this.qs0=gt(this.e3,this.sin_po),Math.abs(this.lat1-this.lat2)>T?this.ns0=(this.ms1*this.ms1-this.ms2*this.ms2)/(this.qs2-this.qs1):this.ns0=this.con,this.c=this.ms1*this.ms1+this.ns0*this.qs1,this.rh=this.a*Math.sqrt(this.c-this.ns0*this.qs0)/this.ns0)}function Mg(e){var t=e.x,r=e.y;this.sin_phi=Math.sin(r),this.cos_phi=Math.cos(r);var s=gt(this.e3,this.sin_phi),i=this.a*Math.sqrt(this.c-this.ns0*s)/this.ns0,n=this.ns0*E(t-this.long0,this.over),o=i*Math.sin(n)+this.x0,a=this.rh-i*Math.cos(n)+this.y0;return e.x=o,e.y=a,e}function xg(e){var t,r,s,i,n,o;return e.x-=this.x0,e.y=this.rh-e.y+this.y0,this.ns0>=0?(t=Math.sqrt(e.x*e.x+e.y*e.y),s=1):(t=-Math.sqrt(e.x*e.x+e.y*e.y),s=-1),i=0,t!==0&&(i=Math.atan2(s*e.x,s*e.y)),s=t*this.ns0/this.a,this.sphere?o=Math.asin((this.c-s*s)/(2*this.ns0)):(r=(this.c-s*s)/this.ns0,o=this.phi1z(this.e3,r)),n=E(i/this.ns0+this.long0,this.over),e.x=n,e.y=o,e}function yg(e,t){var r,s,i,n,o,a=_t(.5*t);if(e<T)return a;for(var h=e*e,c=1;c<=25;c++)if(r=Math.sin(a),s=Math.cos(a),i=e*r,n=1-i*i,o=.5*n*n/s*(t/(1-h)-r/n+.5/e*Math.log((1-i)/(1+i))),a=a+o,Math.abs(o)<=1e-7)return a;return null}var Sg=["Albers_Conic_Equal_Area","Albers_Equal_Area","Albers","aea"],xl={init:_g,forward:Mg,inverse:xg,names:Sg,phi1z:yg};function vg(){this.sin_p14=Math.sin(this.lat0),this.cos_p14=Math.cos(this.lat0),this.infinity_dist=1e3*this.a,this.rc=1}function Eg(e){var t,r,s,i,n,o,a,h,c=e.x,l=e.y;return s=E(c-this.long0,this.over),t=Math.sin(l),r=Math.cos(l),i=Math.cos(s),o=this.sin_p14*t+this.cos_p14*r*i,n=1,o>0||Math.abs(o)<=T?(a=this.x0+this.a*n*r*Math.sin(s)/o,h=this.y0+this.a*n*(this.cos_p14*t-this.sin_p14*r*i)/o):(a=this.x0+this.infinity_dist*r*Math.sin(s),h=this.y0+this.infinity_dist*(this.cos_p14*t-this.sin_p14*r*i)),e.x=a,e.y=h,e}function wg(e){var t,r,s,i,n,o;return e.x=(e.x-this.x0)/this.a,e.y=(e.y-this.y0)/this.a,e.x/=this.k0,e.y/=this.k0,(t=Math.sqrt(e.x*e.x+e.y*e.y))?(i=Math.atan2(t,this.rc),r=Math.sin(i),s=Math.cos(i),o=_t(s*this.sin_p14+e.y*r*this.cos_p14/t),n=Math.atan2(e.x*r,t*this.cos_p14*s-e.y*this.sin_p14*r),n=E(this.long0+n,this.over)):(o=this.phic0,n=0),e.x=n,e.y=o,e}var Tg=["gnom"],yl={init:vg,forward:Eg,inverse:wg,names:Tg};function Sl(e,t){var r=1-(1-e*e)/(2*e)*Math.log((1-e)/(1+e));if(Math.abs(Math.abs(t)-r)<1e-6)return t<0?-1*y:y;for(var s=Math.asin(.5*t),i,n,o,a,h=0;h<30;h++)if(n=Math.sin(s),o=Math.cos(s),a=e*n,i=Math.pow(1-a*a,2)/(2*o)*(t/(1-e*e)-n/(1-a*a)+.5/e*Math.log((1-a)/(1+a))),s+=i,Math.abs(i)<=1e-10)return s;return NaN}function Pg(){this.sphere||(this.k0=at(this.e,Math.sin(this.lat_ts),Math.cos(this.lat_ts)))}function bg(e){var t=e.x,r=e.y,s,i,n=E(t-this.long0,this.over);if(this.sphere)s=this.x0+this.a*n*Math.cos(this.lat_ts),i=this.y0+this.a*Math.sin(r)/Math.cos(this.lat_ts);else{var o=gt(this.e,Math.sin(r));s=this.x0+this.a*this.k0*n,i=this.y0+this.a*o*.5/this.k0}return e.x=s,e.y=i,e}function Rg(e){e.x-=this.x0,e.y-=this.y0;var t,r;return this.sphere?(t=E(this.long0+e.x/this.a/Math.cos(this.lat_ts),this.over),r=Math.asin(e.y/this.a*Math.cos(this.lat_ts))):(r=Sl(this.e,2*e.y*this.k0/this.a),t=E(this.long0+e.x/(this.a*this.k0),this.over)),e.x=t,e.y=r,e}var Cg=["cea"],vl={init:Pg,forward:bg,inverse:Rg,names:Cg};function Ag(){this.x0=this.x0||0,this.y0=this.y0||0,this.lat0=this.lat0||0,this.long0=this.long0||0,this.lat_ts=this.lat_ts||0,this.title=this.title||"Equidistant Cylindrical (Plate Carre)",this.rc=Math.cos(this.lat_ts)}function Ig(e){var t=e.x,r=e.y,s=E(t-this.long0,this.over),i=pt(r-this.lat0);return e.x=this.x0+this.a*s*this.rc,e.y=this.y0+this.a*i,e}function Og(e){var t=e.x,r=e.y;return e.x=E(this.long0+(t-this.x0)/(this.a*this.rc),this.over),e.y=pt(this.lat0+(r-this.y0)/this.a),e}var Ng=["Equirectangular","Equidistant_Cylindrical","Equidistant_Cylindrical_Spherical","eqc"],El={init:Ag,forward:Ig,inverse:Og,names:Ng};var wl=20;function Lg(){this.temp=this.b/this.a,this.es=1-Math.pow(this.temp,2),this.e=Math.sqrt(this.es),this.e0=Qt(this.es),this.e1=Xt(this.es),this.e2=Kt(this.es),this.e3=Jt(this.es),this.ml0=this.a*K(this.e0,this.e1,this.e2,this.e3,this.lat0)}function Gg(e){var t=e.x,r=e.y,s,i,n,o=E(t-this.long0,this.over);if(n=o*Math.sin(r),this.sphere)Math.abs(r)<=T?(s=this.a*o,i=-1*this.a*this.lat0):(s=this.a*Math.sin(n)/Math.tan(r),i=this.a*(pt(r-this.lat0)+(1-Math.cos(n))/Math.tan(r)));else if(Math.abs(r)<=T)s=this.a*o,i=-1*this.ml0;else{var a=Pr(this.a,this.e,Math.sin(r))/Math.tan(r);s=a*Math.sin(n),i=this.a*K(this.e0,this.e1,this.e2,this.e3,r)-this.ml0+a*(1-Math.cos(n))}return e.x=s+this.x0,e.y=i+this.y0,e}function zg(e){var t,r,s,i,n,o,a,h,c;if(s=e.x-this.x0,i=e.y-this.y0,this.sphere)if(Math.abs(i+this.a*this.lat0)<=T)t=E(s/this.a+this.long0,this.over),r=0;else{o=this.lat0+i/this.a,a=s*s/this.a/this.a+o*o,h=o;var l;for(n=wl;n;--n)if(l=Math.tan(h),c=-1*(o*(h*l+1)-h-.5*(h*h+a)*l)/((h-o)/l-1),h+=c,Math.abs(c)<=T){r=h;break}t=E(this.long0+Math.asin(s*Math.tan(h)/this.a)/Math.sin(r),this.over)}else if(Math.abs(i+this.ml0)<=T)r=0,t=E(this.long0+s/this.a,this.over);else{o=(this.ml0+i)/this.a,a=s*s/this.a/this.a+o*o,h=o;var u,f,d,m,g;for(n=wl;n;--n)if(g=this.e*Math.sin(h),u=Math.sqrt(1-g*g)*Math.tan(h),f=this.a*K(this.e0,this.e1,this.e2,this.e3,h),d=this.e0-2*this.e1*Math.cos(2*h)+4*this.e2*Math.cos(4*h)-6*this.e3*Math.cos(6*h),m=f/this.a,c=(o*(u*m+1)-m-.5*u*(m*m+a))/(this.es*Math.sin(2*h)*(m*m+a-2*o*m)/(4*u)+(o-m)*(u*d-2/Math.sin(2*h))-d),h-=c,Math.abs(c)<=T){r=h;break}u=Math.sqrt(1-this.es*Math.pow(Math.sin(r),2))*Math.tan(r),t=E(this.long0+Math.asin(s*u/this.a)/Math.sin(r),this.over)}return e.x=t,e.y=r,e}var qg=["Polyconic","American_Polyconic","poly"],Tl={init:Lg,forward:Gg,inverse:zg,names:qg};function Bg(){this.A=[],this.A[1]=.6399175073,this.A[2]=-.1358797613,this.A[3]=.063294409,this.A[4]=-.02526853,this.A[5]=.0117879,this.A[6]=-.0055161,this.A[7]=.0026906,this.A[8]=-.001333,this.A[9]=67e-5,this.A[10]=-34e-5,this.B_re=[],this.B_im=[],this.B_re[1]=.7557853228,this.B_im[1]=0,this.B_re[2]=.249204646,this.B_im[2]=.003371507,this.B_re[3]=-.001541739,this.B_im[3]=.04105856,this.B_re[4]=-.10162907,this.B_im[4]=.01727609,this.B_re[5]=-.26623489,this.B_im[5]=-.36249218,this.B_re[6]=-.6870983,this.B_im[6]=-1.1651967,this.C_re=[],this.C_im=[],this.C_re[1]=1.3231270439,this.C_im[1]=0,this.C_re[2]=-.577245789,this.C_im[2]=-.007809598,this.C_re[3]=.508307513,this.C_im[3]=-.112208952,this.C_re[4]=-.15094762,this.C_im[4]=.18200602,this.C_re[5]=1.01418179,this.C_im[5]=1.64497696,this.C_re[6]=1.9660549,this.C_im[6]=2.5127645,this.D=[],this.D[1]=1.5627014243,this.D[2]=.5185406398,this.D[3]=-.03333098,this.D[4]=-.1052906,this.D[5]=-.0368594,this.D[6]=.007317,this.D[7]=.0122,this.D[8]=.00394,this.D[9]=-.0013}function Dg(e){var t,r=e.x,s=e.y,i=s-this.lat0,n=r-this.long0,o=i/fe*1e-5,a=n,h=1,c=0;for(t=1;t<=10;t++)h=h*o,c=c+this.A[t]*h;var l=c,u=a,f=1,d=0,m,g,p=0,M=0;for(t=1;t<=6;t++)m=f*l-d*u,g=d*l+f*u,f=m,d=g,p=p+this.B_re[t]*f-this.B_im[t]*d,M=M+this.B_im[t]*f+this.B_re[t]*d;return e.x=M*this.a+this.x0,e.y=p*this.a+this.y0,e}function Fg(e){var t,r=e.x,s=e.y,i=r-this.x0,n=s-this.y0,o=n/this.a,a=i/this.a,h=1,c=0,l,u,f=0,d=0;for(t=1;t<=6;t++)l=h*o-c*a,u=c*o+h*a,h=l,c=u,f=f+this.C_re[t]*h-this.C_im[t]*c,d=d+this.C_im[t]*h+this.C_re[t]*c;for(var m=0;m<this.iterations;m++){var g=f,p=d,M,x,S=o,v=a;for(t=2;t<=6;t++)M=g*f-p*d,x=p*f+g*d,g=M,p=x,S=S+(t-1)*(this.B_re[t]*g-this.B_im[t]*p),v=v+(t-1)*(this.B_im[t]*g+this.B_re[t]*p);g=1,p=0;var w=this.B_re[1],P=this.B_im[1];for(t=2;t<=6;t++)M=g*f-p*d,x=p*f+g*d,g=M,p=x,w=w+t*(this.B_re[t]*g-this.B_im[t]*p),P=P+t*(this.B_im[t]*g+this.B_re[t]*p);var R=w*w+P*P;f=(S*w+v*P)/R,d=(v*w-S*P)/R}var C=f,A=d,b=1,O=0;for(t=1;t<=9;t++)b=b*C,O=O+this.D[t]*b;var N=this.lat0+O*fe*1e5,B=this.long0+A;return e.x=B,e.y=N,e}var Ug=["New_Zealand_Map_Grid","nzmg"],Pl={init:Bg,forward:Dg,inverse:Fg,names:Ug};function Vg(){}function kg(e){var t=e.x,r=e.y,s=E(t-this.long0,this.over),i=this.x0+this.a*s,n=this.y0+this.a*Math.log(Math.tan(Math.PI/4+r/2.5))*1.25;return e.x=i,e.y=n,e}function jg(e){e.x-=this.x0,e.y-=this.y0;var t=E(this.long0+e.x/this.a,this.over),r=2.5*(Math.atan(Math.exp(.8*e.y/this.a))-Math.PI/4);return e.x=t,e.y=r,e}var Wg=["Miller_Cylindrical","mill"],bl={init:Vg,forward:kg,inverse:jg,names:Wg};var Hg=20;function Yg(){this.long0=this.long0||0,this.sphere?(this.n=1,this.m=0,this.es=0,this.C_y=Math.sqrt((this.m+1)/this.n),this.C_x=this.C_y/(this.m+1)):this.en=De(this.es)}function ho(e){var t,r,s=e.x,i=e.y;if(s=E(s-this.long0,this.over),this.sphere){if(!this.m)i=this.n!==1?Math.asin(this.n*Math.sin(i)):i;else for(var n=this.n*Math.sin(i),o=Hg;o;--o){var a=(this.m*i+Math.sin(i)-n)/(this.m+Math.cos(i));if(i-=a,Math.abs(a)<T)break}t=this.a*this.C_x*s*(this.m+Math.cos(i)),r=this.a*this.C_y*i}else{var h=Math.sin(i),c=Math.cos(i);r=this.a*Ft(i,h,c,this.en),t=this.a*s*c/Math.sqrt(1-this.es*h*h)}return e.x=t,e.y=r,e}function co(e){var t,r,s,i;return e.x-=this.x0,s=e.x/this.a,e.y-=this.y0,t=e.y/this.a,this.sphere?(t/=this.C_y,s=s/(this.C_x*(this.m+Math.cos(t))),this.m?t=_t((this.m*t+Math.sin(t))/this.n):this.n!==1&&(t=_t(Math.sin(t)/this.n)),s=E(s+this.long0,this.over),t=pt(t)):(t=Fe(e.y/this.a,this.es,this.en),i=Math.abs(t),i<y?(i=Math.sin(t),r=this.long0+e.x*Math.sqrt(1-this.es*i*i)/(this.a*Math.cos(t)),s=E(r,this.over)):i-T<y&&(s=this.long0)),e.x=s,e.y=t,e}var Zg=["Sinusoidal","sinu"],Rl={init:Yg,forward:ho,inverse:co,names:Zg};function $g(){this.sphere=!0,this.b=this.a,this.m=1,this.n=2.5707963267948966,this.es=0,this.C_y=Math.sqrt((this.m+1)/this.n),this.C_x=this.C_y/(this.m+1)}var Qg=ho,Xg=co,Kg=["Eckert_VI","eck6"],Cl={init:$g,forward:Qg,inverse:Xg,names:Kg};function Jg(){this.x0=this.x0!==void 0?this.x0:0,this.y0=this.y0!==void 0?this.y0:0,this.long0=this.long0!==void 0?this.long0:0}function t2(e){for(var t=e.x,r=e.y,s=E(t-this.long0,this.over),i=r,n=Math.PI*Math.sin(r);;){var o=-(i+Math.sin(i)-n)/(1+Math.cos(i));if(i+=o,Math.abs(o)<T)break}i/=2,Math.PI/2-Math.abs(r)<T&&(s=0);var a=.900316316158*this.a*s*Math.cos(i)+this.x0,h=1.4142135623731*this.a*Math.sin(i)+this.y0;return e.x=a,e.y=h,e}function e2(e){var t,r;e.x-=this.x0,e.y-=this.y0,r=e.y/(1.4142135623731*this.a),Math.abs(r)>.999999999999&&(r=.999999999999),t=Math.asin(r);var s=E(this.long0+e.x/(.900316316158*this.a*Math.cos(t)),this.over);s<-Math.PI&&(s=-Math.PI),s>Math.PI&&(s=Math.PI),r=(2*t+Math.sin(2*t))/Math.PI,Math.abs(r)>1&&(r=1);var i=Math.asin(r);return e.x=s,e.y=i,e}var r2=["Mollweide","moll"],Al={init:Jg,forward:t2,inverse:e2,names:r2};function s2(){Math.abs(this.lat1+this.lat2)<T||(this.lat2=this.lat2||this.lat1,this.temp=this.b/this.a,this.es=1-Math.pow(this.temp,2),this.e=Math.sqrt(this.es),this.e0=Qt(this.es),this.e1=Xt(this.es),this.e2=Kt(this.es),this.e3=Jt(this.es),this.sin_phi=Math.sin(this.lat1),this.cos_phi=Math.cos(this.lat1),this.ms1=at(this.e,this.sin_phi,this.cos_phi),this.ml1=K(this.e0,this.e1,this.e2,this.e3,this.lat1),Math.abs(this.lat1-this.lat2)<T?this.ns=this.sin_phi:(this.sin_phi=Math.sin(this.lat2),this.cos_phi=Math.cos(this.lat2),this.ms2=at(this.e,this.sin_phi,this.cos_phi),this.ml2=K(this.e0,this.e1,this.e2,this.e3,this.lat2),this.ns=(this.ms1-this.ms2)/(this.ml2-this.ml1)),this.g=this.ml1+this.ms1/this.ns,this.ml0=K(this.e0,this.e1,this.e2,this.e3,this.lat0),this.rh=this.a*(this.g-this.ml0))}function i2(e){var t=e.x,r=e.y,s;if(this.sphere)s=this.a*(this.g-r);else{var i=K(this.e0,this.e1,this.e2,this.e3,r);s=this.a*(this.g-i)}var n=this.ns*E(t-this.long0,this.over),o=this.x0+s*Math.sin(n),a=this.y0+this.rh-s*Math.cos(n);return e.x=o,e.y=a,e}function n2(e){e.x-=this.x0,e.y=this.rh-e.y+this.y0;var t,r,s,i;this.ns>=0?(r=Math.sqrt(e.x*e.x+e.y*e.y),t=1):(r=-Math.sqrt(e.x*e.x+e.y*e.y),t=-1);var n=0;if(r!==0&&(n=Math.atan2(t*e.x,t*e.y)),this.sphere)return i=E(this.long0+n/this.ns,this.over),s=pt(this.g-r/this.a),e.x=i,e.y=s,e;var o=this.g-r/this.a;return s=ge(o,this.e0,this.e1,this.e2,this.e3),i=E(this.long0+n/this.ns,this.over),e.x=i,e.y=s,e}var o2=["Equidistant_Conic","eqdc"],Il={init:s2,forward:i2,inverse:n2,names:o2};function a2(){this.R=this.a}function h2(e){var t=e.x,r=e.y,s=E(t-this.long0,this.over),i,n;Math.abs(r)<=T&&(i=this.x0+this.R*s,n=this.y0);var o=_t(2*Math.abs(r/Math.PI));(Math.abs(s)<=T||Math.abs(Math.abs(r)-y)<=T)&&(i=this.x0,r>=0?n=this.y0+Math.PI*this.R*Math.tan(.5*o):n=this.y0+Math.PI*this.R*-Math.tan(.5*o));var a=.5*Math.abs(Math.PI/s-s/Math.PI),h=a*a,c=Math.sin(o),l=Math.cos(o),u=l/(c+l-1),f=u*u,d=u*(2/c-1),m=d*d,g=Math.PI*this.R*(a*(u-m)+Math.sqrt(h*(u-m)*(u-m)-(m+h)*(f-m)))/(m+h);s<0&&(g=-g),i=this.x0+g;var p=h+u;return g=Math.PI*this.R*(d*p-a*Math.sqrt((m+h)*(h+1)-p*p))/(m+h),r>=0?n=this.y0+g:n=this.y0-g,e.x=i,e.y=n,e}function c2(e){var t,r,s,i,n,o,a,h,c,l,u,f,d;return e.x-=this.x0,e.y-=this.y0,u=Math.PI*this.R,s=e.x/u,i=e.y/u,n=s*s+i*i,o=-Math.abs(i)*(1+n),a=o-2*i*i+s*s,h=-2*o+1+2*i*i+n*n,d=i*i/h+(2*a*a*a/h/h/h-9*o*a/h/h)/27,c=(o-a*a/3/h)/h,l=2*Math.sqrt(-c/3),u=3*d/c/l,Math.abs(u)>1&&(u>=0?u=1:u=-1),f=Math.acos(u)/3,e.y>=0?r=(-l*Math.cos(f+Math.PI/3)-a/3/h)*Math.PI:r=-(-l*Math.cos(f+Math.PI/3)-a/3/h)*Math.PI,Math.abs(s)<T?t=this.long0:t=E(this.long0+Math.PI*(n-1+Math.sqrt(1+2*(s*s-i*i)+n*n))/2/s,this.over),e.x=t,e.y=r,e}var l2=["Van_der_Grinten_I","VanDerGrinten","Van_der_Grinten","vandg"],Ol={init:a2,forward:h2,inverse:c2,names:l2};function Nl(e,t,r,s,i,n){let o=s-t,a=Math.atan((1-n)*Math.tan(e)),h=Math.atan((1-n)*Math.tan(r)),c=Math.sin(a),l=Math.cos(a),u=Math.sin(h),f=Math.cos(h),d=o,m,g=100,p,M,x,S,v,w,P,R,C,A,b,O,N,B;do{if(p=Math.sin(d),M=Math.cos(d),x=Math.sqrt(f*p*(f*p)+(l*u-c*f*M)*(l*u-c*f*M)),x===0)return{azi1:0,s12:0};S=c*u+l*f*M,v=Math.atan2(x,S),w=l*f*p/x,P=1-w*w,R=P!==0?S-2*c*u/P:0,C=n/16*P*(4+n*(4-3*P)),m=d,d=o+(1-C)*n*w*(v+C*x*(R+C*S*(-1+2*R*R)))}while(Math.abs(d-m)>1e-12&&--g>0);return g===0?{azi1:NaN,s12:NaN}:(A=P*(i*i-i*(1-n)*(i*(1-n)))/(i*(1-n)*(i*(1-n))),b=1+A/16384*(4096+A*(-768+A*(320-175*A))),O=A/1024*(256+A*(-128+A*(74-47*A))),N=O*x*(R+O/4*(S*(-1+2*R*R)-O/6*R*(-3+4*x*x)*(-3+4*R*R))),B=i*(1-n)*b*(v-N),{azi1:Math.atan2(f*p,l*u-c*f*M),s12:B})}function Ll(e,t,r,s,i,n){let o=Math.atan((1-n)*Math.tan(e)),a=Math.sin(o),h=Math.cos(o),c=Math.sin(r),l=Math.cos(r),u=Math.atan2(a,h*l),f=h*c,d=1-f*f,m=d*(i*i-i*(1-n)*(i*(1-n)))/(i*(1-n)*(i*(1-n))),g=1+m/16384*(4096+m*(-768+m*(320-175*m))),p=m/1024*(256+m*(-128+m*(74-47*m))),M=s/(i*(1-n)*g),x,S=100,v,w,P,R;do v=Math.cos(2*u+M),w=Math.sin(M),P=Math.cos(M),R=p*w*(v+p/4*(P*(-1+2*v*v)-p/6*v*(-3+4*w*w)*(-3+4*v*v))),x=M,M=s/(i*(1-n)*g)+R;while(Math.abs(M-x)>1e-12&&--S>0);if(S===0)return{lat2:NaN,lon2:NaN};let C=a*w-h*P*l,A=Math.atan2(a*P+h*w*l,(1-n)*Math.sqrt(f*f+C*C)),b=Math.atan2(w*c,h*P-a*w*l),O=n/16*d*(4+n*(4-3*d)),N=b-(1-O)*n*f*(M+O*w*(v+O*P*(-1+2*v*v))),B=t+N;return{lat2:A,lon2:B}}function u2(){this.sin_p12=Math.sin(this.lat0),this.cos_p12=Math.cos(this.lat0),this.f=this.es/(1+Math.sqrt(1-this.es))}function f2(e){var t=e.x,r=e.y,s=Math.sin(e.y),i=Math.cos(e.y),n=E(t-this.long0,this.over),o,a,h,c,l,u,f,d,m,g,p;return this.sphere?Math.abs(this.sin_p12-1)<=T?(e.x=this.x0+this.a*(y-r)*Math.sin(n),e.y=this.y0-this.a*(y-r)*Math.cos(n),e):Math.abs(this.sin_p12+1)<=T?(e.x=this.x0+this.a*(y+r)*Math.sin(n),e.y=this.y0+this.a*(y+r)*Math.cos(n),e):(m=this.sin_p12*s+this.cos_p12*i*Math.cos(n),f=Math.acos(m),d=f?f/Math.sin(f):1,e.x=this.x0+this.a*d*i*Math.sin(n),e.y=this.y0+this.a*d*(this.cos_p12*s-this.sin_p12*i*Math.cos(n)),e):(o=Qt(this.es),a=Xt(this.es),h=Kt(this.es),c=Jt(this.es),Math.abs(this.sin_p12-1)<=T?(l=this.a*K(o,a,h,c,y),u=this.a*K(o,a,h,c,r),e.x=this.x0+(l-u)*Math.sin(n),e.y=this.y0-(l-u)*Math.cos(n),e):Math.abs(this.sin_p12+1)<=T?(l=this.a*K(o,a,h,c,y),u=this.a*K(o,a,h,c,r),e.x=this.x0+(l+u)*Math.sin(n),e.y=this.y0+(l+u)*Math.cos(n),e):Math.abs(t)<T&&Math.abs(r-this.lat0)<T?(e.x=e.y=0,e):(g=Nl(this.lat0,this.long0,r,t,this.a,this.f),p=g.azi1,e.x=g.s12*Math.sin(p),e.y=g.s12*Math.cos(p),e))}function m2(e){e.x-=this.x0,e.y-=this.y0;var t,r,s,i,n,o,a,h,c,l,u,f,d,m,g,p;return this.sphere?(t=Math.sqrt(e.x*e.x+e.y*e.y),t>2*y*this.a?void 0:(r=t/this.a,s=Math.sin(r),i=Math.cos(r),n=this.long0,Math.abs(t)<=T?o=this.lat0:(o=_t(i*this.sin_p12+e.y*s*this.cos_p12/t),a=Math.abs(this.lat0)-y,Math.abs(a)<=T?this.lat0>=0?n=E(this.long0+Math.atan2(e.x,-e.y),this.over):n=E(this.long0-Math.atan2(-e.x,e.y),this.over):n=E(this.long0+Math.atan2(e.x*s,t*this.cos_p12*i-e.y*this.sin_p12*s),this.over)),e.x=n,e.y=o,e)):(h=Qt(this.es),c=Xt(this.es),l=Kt(this.es),u=Jt(this.es),Math.abs(this.sin_p12-1)<=T?(f=this.a*K(h,c,l,u,y),t=Math.sqrt(e.x*e.x+e.y*e.y),d=f-t,o=ge(d/this.a,h,c,l,u),n=E(this.long0+Math.atan2(e.x,-1*e.y),this.over),e.x=n,e.y=o,e):Math.abs(this.sin_p12+1)<=T?(f=this.a*K(h,c,l,u,y),t=Math.sqrt(e.x*e.x+e.y*e.y),d=t-f,o=ge(d/this.a,h,c,l,u),n=E(this.long0+Math.atan2(e.x,e.y),this.over),e.x=n,e.y=o,e):(m=Math.atan2(e.x,e.y),g=Math.sqrt(e.x*e.x+e.y*e.y),p=Ll(this.lat0,this.long0,m,g,this.a,this.f),e.x=p.lon2,e.y=p.lat2,e))}var d2=["Azimuthal_Equidistant","aeqd"],Gl={init:u2,forward:f2,inverse:m2,names:d2};function p2(){this.sin_p14=Math.sin(this.lat0||0),this.cos_p14=Math.cos(this.lat0||0)}function g2(e){var t,r,s,i,n,o,a,h,c=e.x,l=e.y;return s=E(c-(this.long0||0),this.over),t=Math.sin(l),r=Math.cos(l),i=Math.cos(s),o=this.sin_p14*t+this.cos_p14*r*i,n=1,(o>0||Math.abs(o)<=T)&&(a=this.a*n*r*Math.sin(s),h=(this.y0||0)+this.a*n*(this.cos_p14*t-this.sin_p14*r*i)),e.x=a,e.y=h,e}function _2(e){var t,r,s,i,n,o,a,h,c;return e.x-=this.x0||0,e.y-=this.y0||0,t=Math.sqrt(e.x*e.x+e.y*e.y),r=_t(t/this.a),s=Math.sin(r),i=Math.cos(r),h=this.long0||0,c=this.lat0||0,o=h,Math.abs(t)<=T?(a=c,e.x=o,e.y=a,e):(a=_t(i*this.sin_p14+e.y*s*this.cos_p14/t),n=Math.abs(c)-y,Math.abs(n)<=T?(c>=0?o=E(h+Math.atan2(e.x,-e.y),this.over):o=E(h-Math.atan2(-e.x,e.y),this.over),e.x=o,e.y=a,e):(o=E(h+Math.atan2(e.x*s,t*this.cos_p14*i-e.y*this.sin_p14*s),this.over),e.x=o,e.y=a,e))}var M2=["ortho"],zl={init:p2,forward:g2,inverse:_2,names:M2};var Z={FRONT:1,RIGHT:2,BACK:3,LEFT:4,TOP:5,BOTTOM:6},F={AREA_0:1,AREA_1:2,AREA_2:3,AREA_3:4};function x2(){this.x0=this.x0||0,this.y0=this.y0||0,this.lat0=this.lat0||0,this.long0=this.long0||0,this.lat_ts=this.lat_ts||0,this.title=this.title||"Quadrilateralized Spherical Cube",this.lat0>=y-q/2?this.face=Z.TOP:this.lat0<=-(y-q/2)?this.face=Z.BOTTOM:Math.abs(this.long0)<=q?this.face=Z.FRONT:Math.abs(this.long0)<=y+q?this.face=this.long0>0?Z.RIGHT:Z.LEFT:this.face=Z.BACK,this.es!==0&&(this.one_minus_f=1-(this.a-this.b)/this.a,this.one_minus_f_squared=this.one_minus_f*this.one_minus_f)}function y2(e){var t={x:0,y:0},r,s,i,n,o,a,h={value:0};if(e.x-=this.long0,this.es!==0?r=Math.atan(this.one_minus_f_squared*Math.tan(e.y)):r=e.y,s=e.x,this.face===Z.TOP)n=y-r,s>=q&&s<=y+q?(h.value=F.AREA_0,i=s-y):s>y+q||s<=-(y+q)?(h.value=F.AREA_1,i=s>0?s-Y:s+Y):s>-(y+q)&&s<=-q?(h.value=F.AREA_2,i=s+y):(h.value=F.AREA_3,i=s);else if(this.face===Z.BOTTOM)n=y+r,s>=q&&s<=y+q?(h.value=F.AREA_0,i=-s+y):s<q&&s>=-q?(h.value=F.AREA_1,i=-s):s<-q&&s>=-(y+q)?(h.value=F.AREA_2,i=-s-y):(h.value=F.AREA_3,i=s>0?-s+Y:-s-Y);else{var c,l,u,f,d,m,g;this.face===Z.RIGHT?s=je(s,+y):this.face===Z.BACK?s=je(s,+Y):this.face===Z.LEFT&&(s=je(s,-y)),f=Math.sin(r),d=Math.cos(r),m=Math.sin(s),g=Math.cos(s),c=d*g,l=d*m,u=f,this.face===Z.FRONT?(n=Math.acos(c),i=oi(n,u,l,h)):this.face===Z.RIGHT?(n=Math.acos(l),i=oi(n,u,-c,h)):this.face===Z.BACK?(n=Math.acos(-c),i=oi(n,u,-l,h)):this.face===Z.LEFT?(n=Math.acos(-l),i=oi(n,u,c,h)):(n=i=0,h.value=F.AREA_0)}return a=Math.atan(12/Y*(i+Math.acos(Math.sin(i)*Math.cos(q))-y)),o=Math.sqrt((1-Math.cos(n))/(Math.cos(a)*Math.cos(a))/(1-Math.cos(Math.atan(1/Math.cos(i))))),h.value===F.AREA_1?a+=y:h.value===F.AREA_2?a+=Y:h.value===F.AREA_3&&(a+=1.5*Y),t.x=o*Math.cos(a),t.y=o*Math.sin(a),t.x=t.x*this.a+this.x0,t.y=t.y*this.a+this.y0,e.x=t.x,e.y=t.y,e}function S2(e){var t={lam:0,phi:0},r,s,i,n,o,a,h,c,l,u={value:0};if(e.x=(e.x-this.x0)/this.a,e.y=(e.y-this.y0)/this.a,s=Math.atan(Math.sqrt(e.x*e.x+e.y*e.y)),r=Math.atan2(e.y,e.x),e.x>=0&&e.x>=Math.abs(e.y)?u.value=F.AREA_0:e.y>=0&&e.y>=Math.abs(e.x)?(u.value=F.AREA_1,r-=y):e.x<0&&-e.x>=Math.abs(e.y)?(u.value=F.AREA_2,r=r<0?r+Y:r-Y):(u.value=F.AREA_3,r+=y),l=Y/12*Math.tan(r),o=Math.sin(l)/(Math.cos(l)-1/Math.sqrt(2)),a=Math.atan(o),i=Math.cos(r),n=Math.tan(s),h=1-i*i*n*n*(1-Math.cos(Math.atan(1/Math.cos(a)))),h<-1?h=-1:h>1&&(h=1),this.face===Z.TOP)c=Math.acos(h),t.phi=y-c,u.value===F.AREA_0?t.lam=a+y:u.value===F.AREA_1?t.lam=a<0?a+Y:a-Y:u.value===F.AREA_2?t.lam=a-y:t.lam=a;else if(this.face===Z.BOTTOM)c=Math.acos(h),t.phi=c-y,u.value===F.AREA_0?t.lam=-a+y:u.value===F.AREA_1?t.lam=-a:u.value===F.AREA_2?t.lam=-a-y:t.lam=a<0?-a-Y:-a+Y;else{var f,d,m;f=h,l=f*f,l>=1?m=0:m=Math.sqrt(1-l)*Math.sin(a),l+=m*m,l>=1?d=0:d=Math.sqrt(1-l),u.value===F.AREA_1?(l=d,d=-m,m=l):u.value===F.AREA_2?(d=-d,m=-m):u.value===F.AREA_3&&(l=d,d=m,m=-l),this.face===Z.RIGHT?(l=f,f=-d,d=l):this.face===Z.BACK?(f=-f,d=-d):this.face===Z.LEFT&&(l=f,f=d,d=-l),t.phi=Math.acos(-m)-y,t.lam=Math.atan2(d,f),this.face===Z.RIGHT?t.lam=je(t.lam,-y):this.face===Z.BACK?t.lam=je(t.lam,-Y):this.face===Z.LEFT&&(t.lam=je(t.lam,+y))}if(this.es!==0){var g,p,M;g=t.phi<0?1:0,p=Math.tan(t.phi),M=this.b/Math.sqrt(p*p+this.one_minus_f_squared),t.phi=Math.atan(Math.sqrt(this.a*this.a-M*M)/(this.one_minus_f*M)),g&&(t.phi=-t.phi)}return t.lam+=this.long0,e.x=t.lam,e.y=t.phi,e}function oi(e,t,r,s){var i;return e<T?(s.value=F.AREA_0,i=0):(i=Math.atan2(t,r),Math.abs(i)<=q?s.value=F.AREA_0:i>q&&i<=y+q?(s.value=F.AREA_1,i-=y):i>y+q||i<=-(y+q)?(s.value=F.AREA_2,i=i>=0?i-Y:i+Y):(s.value=F.AREA_3,i+=y)),i}function je(e,t){var r=e+t;return r<-Y?r+=ne:r>+Y&&(r-=ne),r}var v2=["Quadrilateralized Spherical Cube","Quadrilateralized_Spherical_Cube","qsc"],ql={init:x2,forward:y2,inverse:S2,names:v2};var lo=[[1,22199e-21,-715515e-10,31103e-10],[.9986,-482243e-9,-24897e-9,-13309e-10],[.9954,-83103e-8,-448605e-10,-986701e-12],[.99,-.00135364,-59661e-9,36777e-10],[.9822,-.00167442,-449547e-11,-572411e-11],[.973,-.00214868,-903571e-10,18736e-12],[.96,-.00305085,-900761e-10,164917e-11],[.9427,-.00382792,-653386e-10,-26154e-10],[.9216,-.00467746,-10457e-8,481243e-11],[.8962,-.00536223,-323831e-10,-543432e-11],[.8679,-.00609363,-113898e-9,332484e-11],[.835,-.00698325,-640253e-10,934959e-12],[.7986,-.00755338,-500009e-10,935324e-12],[.7597,-.00798324,-35971e-9,-227626e-11],[.7186,-.00851367,-701149e-10,-86303e-10],[.6732,-.00986209,-199569e-9,191974e-10],[.6213,-.010418,883923e-10,624051e-11],[.5722,-.00906601,182e-6,624051e-11],[.5322,-.00677797,275608e-9,624051e-11]],Cr=[[-520417e-23,.0124,121431e-23,-845284e-16],[.062,.0124,-126793e-14,422642e-15],[.124,.0124,507171e-14,-160604e-14],[.186,.0123999,-190189e-13,600152e-14],[.248,.0124002,710039e-13,-224e-10],[.31,.0123992,-264997e-12,835986e-13],[.372,.0124029,988983e-12,-311994e-12],[.434,.0123893,-369093e-11,-435621e-12],[.4958,.0123198,-102252e-10,-345523e-12],[.5571,.0121916,-154081e-10,-582288e-12],[.6176,.0119938,-241424e-10,-525327e-12],[.6769,.011713,-320223e-10,-516405e-12],[.7346,.0113541,-397684e-10,-609052e-12],[.7903,.0109107,-489042e-10,-104739e-11],[.8435,.0103431,-64615e-9,-140374e-14],[.8936,.00969686,-64636e-9,-8547e-9],[.9394,.00840947,-192841e-9,-42106e-10],[.9761,.00616527,-256e-6,-42106e-10],[1,.00328947,-319159e-9,-42106e-10]],Bl=.8487,Dl=1.3523,Fl=X/5,E2=1/Fl,We=18,ai=function(e,t){return e[0]+t*(e[1]+t*(e[2]+t*e[3]))},w2=function(e,t){return e[1]+t*(2*e[2]+t*3*e[3])};function T2(e,t,r,s){for(var i=t;s;--s){var n=e(i);if(i-=n,Math.abs(n)<r)break}return i}function P2(){this.x0=this.x0||0,this.y0=this.y0||0,this.long0=this.long0||0,this.es=0,this.title=this.title||"Robinson"}function b2(e){var t=E(e.x-this.long0,this.over),r=Math.abs(e.y),s=Math.floor(r*Fl);s<0?s=0:s>=We&&(s=We-1),r=X*(r-E2*s);var i={x:ai(lo[s],r)*t,y:ai(Cr[s],r)};return e.y<0&&(i.y=-i.y),i.x=i.x*this.a*Bl+this.x0,i.y=i.y*this.a*Dl+this.y0,i}function R2(e){var t={x:(e.x-this.x0)/(this.a*Bl),y:Math.abs(e.y-this.y0)/(this.a*Dl)};if(t.y>=1)t.x/=lo[We][0],t.y=e.y<0?-y:y;else{var r=Math.floor(t.y*We);for(r<0?r=0:r>=We&&(r=We-1);;)if(Cr[r][0]>t.y)--r;else if(Cr[r+1][0]<=t.y)++r;else break;var s=Cr[r],i=5*(t.y-s[0])/(Cr[r+1][0]-s[0]);i=T2(function(n){return(ai(s,n)-t.y)/w2(s,n)},i,T,100),t.x/=ai(lo[r],i),t.y=(5*r+i)*V,e.y<0&&(t.y=-t.y)}return t.x=E(t.x+this.long0,this.over),t}var C2=["Robinson","robin"],Ul={init:P2,forward:b2,inverse:R2,names:C2};function A2(){this.name="geocent"}function I2(e){var t=Xs(e,this.es,this.a);return t}function O2(e){var t=Ks(e,this.es,this.a,this.b);return t}var N2=["Geocentric","geocentric","geocent","Geocent"],Vl={init:A2,forward:I2,inverse:O2,names:N2};var ht={N_POLE:0,S_POLE:1,EQUIT:2,OBLIQ:3},Ar={h:{def:1e5,num:!0},azi:{def:0,num:!0,degrees:!0},tilt:{def:0,num:!0,degrees:!0},long0:{def:0,num:!0},lat0:{def:0,num:!0}};function L2(){if(Object.keys(Ar).forEach((function(r){if(typeof this[r]>"u")this[r]=Ar[r].def;else{if(Ar[r].num&&isNaN(this[r]))throw new Error("Invalid parameter value, must be numeric "+r+" = "+this[r]);Ar[r].num&&(this[r]=parseFloat(this[r]))}Ar[r].degrees&&(this[r]=this[r]*V)}).bind(this)),Math.abs(Math.abs(this.lat0)-y)<T?this.mode=this.lat0<0?ht.S_POLE:ht.N_POLE:Math.abs(this.lat0)<T?this.mode=ht.EQUIT:(this.mode=ht.OBLIQ,this.sinph0=Math.sin(this.lat0),this.cosph0=Math.cos(this.lat0)),this.pn1=this.h/this.a,this.pn1<=0||this.pn1>1e10)throw new Error("Invalid height");this.p=1+this.pn1,this.rp=1/this.p,this.h1=1/this.pn1,this.pfact=(this.p+1)*this.h1,this.es=0;var e=this.tilt,t=this.azi;this.cg=Math.cos(t),this.sg=Math.sin(t),this.cw=Math.cos(e),this.sw=Math.sin(e)}function G2(e){e.x-=this.long0;var t=Math.sin(e.y),r=Math.cos(e.y),s=Math.cos(e.x),i,n;switch(this.mode){case ht.OBLIQ:n=this.sinph0*t+this.cosph0*r*s;break;case ht.EQUIT:n=r*s;break;case ht.S_POLE:n=-t;break;case ht.N_POLE:n=t;break}switch(n=this.pn1/(this.p-n),i=n*r*Math.sin(e.x),this.mode){case ht.OBLIQ:n*=this.cosph0*t-this.sinph0*r*s;break;case ht.EQUIT:n*=t;break;case ht.N_POLE:n*=-(r*s);break;case ht.S_POLE:n*=r*s;break}var o,a;return o=n*this.cg+i*this.sg,a=1/(o*this.sw*this.h1+this.cw),i=(i*this.cg-n*this.sg)*this.cw*a,n=o*a,e.x=i*this.a,e.y=n*this.a,e}function z2(e){e.x/=this.a,e.y/=this.a;var t={x:e.x,y:e.y},r,s,i;i=1/(this.pn1-e.y*this.sw),r=this.pn1*e.x*i,s=this.pn1*e.y*this.cw*i,e.x=r*this.cg+s*this.sg,e.y=s*this.cg-r*this.sg;var n=Q(e.x,e.y);if(Math.abs(n)<T)t.x=0,t.y=e.y;else{var o,a;switch(a=1-n*n*this.pfact,a=(this.p-Math.sqrt(a))/(this.pn1/n+n/this.pn1),o=Math.sqrt(1-a*a),this.mode){case ht.OBLIQ:t.y=Math.asin(o*this.sinph0+e.y*a*this.cosph0/n),e.y=(o-this.sinph0*Math.sin(t.y))*n,e.x*=a*this.cosph0;break;case ht.EQUIT:t.y=Math.asin(e.y*a/n),e.y=o*n,e.x*=a;break;case ht.N_POLE:t.y=Math.asin(o),e.y=-e.y;break;case ht.S_POLE:t.y=-Math.asin(o);break}t.x=Math.atan2(e.x,e.y)}return e.x=t.x+this.long0,e.y=t.y,e}var q2=["Tilted_Perspective","tpers"],kl={init:L2,forward:G2,inverse:z2,names:q2};function B2(){if(this.flip_axis=this.sweep==="x"?1:0,this.h=Number(this.h),this.radius_g_1=this.h/this.a,this.radius_g_1<=0||this.radius_g_1>1e10)throw new Error;if(this.radius_g=1+this.radius_g_1,this.C=this.radius_g*this.radius_g-1,this.es!==0){var e=1-this.es,t=1/e;this.radius_p=Math.sqrt(e),this.radius_p2=e,this.radius_p_inv2=t,this.shape="ellipse"}else this.radius_p=1,this.radius_p2=1,this.radius_p_inv2=1,this.shape="sphere";this.title||(this.title="Geostationary Satellite View")}function D2(e){var t=e.x,r=e.y,s,i,n,o;if(t=t-this.long0,this.shape==="ellipse"){r=Math.atan(this.radius_p2*Math.tan(r));var a=this.radius_p/Q(this.radius_p*Math.cos(r),Math.sin(r));if(i=a*Math.cos(t)*Math.cos(r),n=a*Math.sin(t)*Math.cos(r),o=a*Math.sin(r),(this.radius_g-i)*i-n*n-o*o*this.radius_p_inv2<0)return e.x=Number.NaN,e.y=Number.NaN,e;s=this.radius_g-i,this.flip_axis?(e.x=this.radius_g_1*Math.atan(n/Q(o,s)),e.y=this.radius_g_1*Math.atan(o/s)):(e.x=this.radius_g_1*Math.atan(n/s),e.y=this.radius_g_1*Math.atan(o/Q(n,s)))}else this.shape==="sphere"&&(s=Math.cos(r),i=Math.cos(t)*s,n=Math.sin(t)*s,o=Math.sin(r),s=this.radius_g-i,this.flip_axis?(e.x=this.radius_g_1*Math.atan(n/Q(o,s)),e.y=this.radius_g_1*Math.atan(o/s)):(e.x=this.radius_g_1*Math.atan(n/s),e.y=this.radius_g_1*Math.atan(o/Q(n,s))));return e.x=e.x*this.a,e.y=e.y*this.a,e}function F2(e){var t=-1,r=0,s=0,i,n,o,a;if(e.x=e.x/this.a,e.y=e.y/this.a,this.shape==="ellipse"){this.flip_axis?(s=Math.tan(e.y/this.radius_g_1),r=Math.tan(e.x/this.radius_g_1)*Q(1,s)):(r=Math.tan(e.x/this.radius_g_1),s=Math.tan(e.y/this.radius_g_1)*Q(1,r));var h=s/this.radius_p;if(i=r*r+h*h+t*t,n=2*this.radius_g*t,o=n*n-4*i*this.C,o<0)return e.x=Number.NaN,e.y=Number.NaN,e;a=(-n-Math.sqrt(o))/(2*i),t=this.radius_g+a*t,r*=a,s*=a,e.x=Math.atan2(r,t),e.y=Math.atan(s*Math.cos(e.x)/t),e.y=Math.atan(this.radius_p_inv2*Math.tan(e.y))}else if(this.shape==="sphere"){if(this.flip_axis?(s=Math.tan(e.y/this.radius_g_1),r=Math.tan(e.x/this.radius_g_1)*Math.sqrt(1+s*s)):(r=Math.tan(e.x/this.radius_g_1),s=Math.tan(e.y/this.radius_g_1)*Math.sqrt(1+r*r)),i=r*r+s*s+t*t,n=2*this.radius_g*t,o=n*n-4*i*this.C,o<0)return e.x=Number.NaN,e.y=Number.NaN,e;a=(-n-Math.sqrt(o))/(2*i),t=this.radius_g+a*t,r*=a,s*=a,e.x=Math.atan2(r,t),e.y=Math.atan(s*Math.cos(e.x)/t)}return e.x=e.x+this.long0,e}var U2=["Geostationary Satellite View","Geostationary_Satellite","geos"],jl={init:B2,forward:D2,inverse:F2,names:U2};var Ir=1.340264,Or=-.081106,Nr=893e-6,Lr=.003796,hi=Math.sqrt(3)/2;function V2(){this.long0=this.long0!==void 0?this.long0:0,this.x0=this.x0!==void 0?this.x0:0,this.y0=this.y0!==void 0?this.y0:0,this.es!==0&&(this.apa=br(this.es),this.qp=gt(this.e,1),this.rqda=Math.sqrt(.5*this.qp))}function k2(e){var t=E(e.x-this.long0,this.over),r=e.y,s=Math.sin(r);this.es!==0&&(s=gt(this.e,s)/this.qp);var i=Math.asin(hi*s),n=i*i,o=n*n*n;return e.x=t*Math.cos(i)/(hi*(Ir+3*Or*n+o*(7*Nr+9*Lr*n))),e.y=i*(Ir+Or*n+o*(Nr+Lr*n)),this.es!==0&&(e.x*=this.rqda,e.y*=this.rqda),e.x=this.a*e.x+this.x0,e.y=this.a*e.y+this.y0,e}function j2(e){e.x=(e.x-this.x0)/this.a,e.y=(e.y-this.y0)/this.a,this.es!==0&&(e.x/=this.rqda,e.y/=this.rqda);var t=1e-9,r=12,s=e.y,i,n,o,a,h,c;for(c=0;c<r&&(i=s*s,n=i*i*i,o=s*(Ir+Or*i+n*(Nr+Lr*i))-e.y,a=Ir+3*Or*i+n*(7*Nr+9*Lr*i),s-=h=o/a,!(Math.abs(h)<t));++c);return i=s*s,n=i*i*i,e.x=hi*e.x*(Ir+3*Or*i+n*(7*Nr+9*Lr*i))/Math.cos(s),e.y=Math.asin(Math.sin(s)/hi),this.es!==0&&(e.y=Rr(e.y,this.apa)),e.x=E(e.x+this.long0,this.over),e}var W2=["eqearth","Equal Earth","Equal_Earth"],Wl={init:V2,forward:k2,inverse:j2,names:W2};var Gr=1e-10;function H2(){var e;if(this.phi1=this.lat1,Math.abs(this.phi1)<Gr)throw new Error;this.es?(this.en=De(this.es),this.m1=Ft(this.phi1,this.am1=Math.sin(this.phi1),e=Math.cos(this.phi1),this.en),this.am1=e/(Math.sqrt(1-this.es*this.am1*this.am1)*this.am1),this.inverse=Z2,this.forward=Y2):(Math.abs(this.phi1)+Gr>=y?this.cphi1=0:this.cphi1=1/Math.tan(this.phi1),this.inverse=Q2,this.forward=$2)}function Y2(e){var t=E(e.x-(this.long0||0),this.over),r=e.y,s,i,n;return s=this.am1+this.m1-Ft(r,i=Math.sin(r),n=Math.cos(r),this.en),i=n*t/(s*Math.sqrt(1-this.es*i*i)),e.x=s*Math.sin(i),e.y=this.am1-s*Math.cos(i),e.x=this.a*e.x+(this.x0||0),e.y=this.a*e.y+(this.y0||0),e}function Z2(e){e.x=(e.x-(this.x0||0))/this.a,e.y=(e.y-(this.y0||0))/this.a;var t,r,s,i;if(r=Q(e.x,e.y=this.am1-e.y),i=Fe(this.am1+this.m1-r,this.es,this.en),(t=Math.abs(i))<y)t=Math.sin(i),s=r*Math.atan2(e.x,e.y)*Math.sqrt(1-this.es*t*t)/Math.cos(i);else if(Math.abs(t-y)<=Gr)s=0;else throw new Error;return e.x=E(s+(this.long0||0),this.over),e.y=pt(i),e}function $2(e){var t=E(e.x-(this.long0||0),this.over),r=e.y,s,i;return i=this.cphi1+this.phi1-r,Math.abs(i)>Gr?(e.x=i*Math.sin(s=t*Math.cos(r)/i),e.y=this.cphi1-i*Math.cos(s)):e.x=e.y=0,e.x=this.a*e.x+(this.x0||0),e.y=this.a*e.y+(this.y0||0),e}function Q2(e){e.x=(e.x-(this.x0||0))/this.a,e.y=(e.y-(this.y0||0))/this.a;var t,r,s=Q(e.x,e.y=this.cphi1-e.y);if(r=this.cphi1+this.phi1-s,Math.abs(r)>y)throw new Error;return Math.abs(Math.abs(r)-y)<=Gr?t=0:t=s*Math.atan2(e.x,e.y)/Math.cos(r),e.x=E(t+(this.long0||0),this.over),e.y=pt(r),e}var X2=["bonne","Bonne (Werner lat_1=90)"],Hl={init:H2,names:X2};var Yl={OBLIQUE:{forward:r_,inverse:i_},TRANSVERSE:{forward:s_,inverse:n_}},ci={ROTATE:{o_alpha:"oAlpha",o_lon_c:"oLongC",o_lat_c:"oLatC"},NEW_POLE:{o_lat_p:"oLatP",o_lon_p:"oLongP"},NEW_EQUATOR:{o_lon_1:"oLong1",o_lat_1:"oLat1",o_lon_2:"oLong2",o_lat_2:"oLat2"}};function K2(){if(this.x0=this.x0||0,this.y0=this.y0||0,this.long0=this.long0||0,this.title=this.title||"General Oblique Transformation",this.isIdentity=Wn.includes(this.o_proj),!this.o_proj)throw new Error("Missing parameter: o_proj");if(this.o_proj==="ob_tran")throw new Error("Invalid value for o_proj: "+this.o_proj);let e=this.projStr.replace("+proj=ob_tran","").replace("+o_proj=","+proj=").trim(),t=Nt(e);if(!t)throw new Error("Invalid parameter: o_proj. Unknown projection "+this.o_proj);t.long0=0,this.obliqueProjection=t;let r,s=Object.keys(ci),i=a=>{if(typeof this[a]>"u")return;let h=parseFloat(this[a])*V;if(isNaN(h))throw new Error("Invalid value for "+a+": "+this[a]);return h};for(let a=0;a<s.length;a++){let h=s[a],c=ci[h],l=Object.entries(c);if(l.some(([f])=>typeof this[f]<"u")){r=c;for(let f=0;f<l.length;f++){let[d,m]=l[f],g=i(d);if(typeof g>"u")throw new Error("Missing parameter: "+d+".");this[m]=g}break}}if(!r)throw new Error("No valid parameters provided for ob_tran projection.");let{lamp:n,phip:o}=e_(this,r);this.lamp=n,Math.abs(o)>T?(this.cphip=Math.cos(o),this.sphip=Math.sin(o),this.projectionType=Yl.OBLIQUE):this.projectionType=Yl.TRANSVERSE}function J2(e){return this.projectionType.forward(this,e)}function t_(e){return this.projectionType.inverse(this,e)}function e_(e,t){let r,s;if(t===ci.ROTATE){let i=e.oLongC,n=e.oLatC,o=e.oAlpha;if(Math.abs(Math.abs(n)-y)<=T)throw new Error("Invalid value for o_lat_c: "+e.o_lat_c+" should be < 90\xB0");s=i+Math.atan2(-1*Math.cos(o),-1*Math.sin(o)*Math.sin(n)),r=Math.asin(Math.cos(n)*Math.sin(o))}else if(t===ci.NEW_POLE)s=e.oLongP,r=e.oLatP;else{let i=e.oLong1,n=e.oLat1,o=e.oLong2,a=e.oLat2,h=Math.abs(n);if(Math.abs(n)>y-T)throw new Error("Invalid value for o_lat_1: "+e.o_lat_1+" should be < 90\xB0");if(Math.abs(a)>y-T)throw new Error("Invalid value for o_lat_2: "+e.o_lat_2+" should be < 90\xB0");if(Math.abs(n-a)<T)throw new Error("Invalid value for o_lat_1 and o_lat_2: o_lat_1 should be different from o_lat_2");if(h<T)throw new Error("Invalid value for o_lat_1: o_lat_1 should be different from zero");s=Math.atan2(Math.cos(n)*Math.sin(a)*Math.cos(i)-Math.sin(n)*Math.cos(a)*Math.cos(o),Math.sin(n)*Math.cos(a)*Math.sin(o)-Math.cos(n)*Math.sin(a)*Math.sin(i)),r=Math.atan(-1*Math.cos(s-i)/Math.tan(n))}return{lamp:s,phip:r}}function r_(e,t){let{x:r,y:s}=t;r=E(r-e.long0,e.over);let i=Math.cos(r),n=Math.sin(s),o=Math.cos(s);t.x=E(Math.atan2(o*Math.sin(r),e.sphip*o*i+e.cphip*n)+e.lamp),t.y=Math.asin(e.sphip*n-e.cphip*o*i);let a=e.obliqueProjection.forward(t);return e.isIdentity&&(a.x*=X,a.y*=X),a}function s_(e,t){let{x:r,y:s}=t;r=E(r-e.long0,e.over);let i=Math.cos(s),n=Math.cos(r);t.x=E(Math.atan2(i*Math.sin(r),Math.sin(s))+e.lamp),t.y=Math.asin(-1*i*n);let o=e.obliqueProjection.forward(t);return e.isIdentity&&(o.x*=X,o.y*=X),o}function i_(e,t){e.isIdentity&&(t.x*=V,t.y*=V);let r=e.obliqueProjection.inverse(t),{x:s,y:i}=r;if(s<Number.MAX_VALUE){s-=e.lamp;let n=Math.cos(s),o=Math.sin(i),a=Math.cos(i);t.x=Math.atan2(a*Math.sin(s),e.sphip*a*n-e.cphip*o),t.y=Math.asin(e.sphip*o+e.cphip*a*n)}return t.x=E(t.x+e.long0),t}function n_(e,t){e.isIdentity&&(t.x*=V,t.y*=V);let r=e.obliqueProjection.inverse(t),{x:s,y:i}=r;if(s<Number.MAX_VALUE){let n=Math.cos(i);s-=e.lamp,t.x=Math.atan2(n*Math.sin(s),-1*Math.sin(i)),t.y=Math.asin(n*Math.cos(s))}return t.x=E(t.x+e.long0),t}var o_=["General Oblique Transformation","General_Oblique_Transformation","ob_tran"],Zl={init:K2,forward:J2,inverse:t_,names:o_};function $l(e){e.Proj.projections.add(Ue),e.Proj.projections.add(Ve),e.Proj.projections.add(ll),e.Proj.projections.add(ul),e.Proj.projections.add(fl),e.Proj.projections.add(ml),e.Proj.projections.add(dl),e.Proj.projections.add(pl),e.Proj.projections.add(gl),e.Proj.projections.add(_l),e.Proj.projections.add(Ml),e.Proj.projections.add(xl),e.Proj.projections.add(yl),e.Proj.projections.add(vl),e.Proj.projections.add(El),e.Proj.projections.add(Tl),e.Proj.projections.add(Pl),e.Proj.projections.add(bl),e.Proj.projections.add(Rl),e.Proj.projections.add(Cl),e.Proj.projections.add(Al),e.Proj.projections.add(Il),e.Proj.projections.add(Ol),e.Proj.projections.add(Gl),e.Proj.projections.add(zl),e.Proj.projections.add(ql),e.Proj.projections.add(Ul),e.Proj.projections.add(Vl),e.Proj.projections.add(kl),e.Proj.projections.add(jl),e.Proj.projections.add(Wl),e.Proj.projections.add(Hl),e.Proj.projections.add(Zl)}var Ql=Object.assign(Yc,{defaultDatum:"WGS84",Proj:Nt,WGS84:new Nt("WGS84"),Point:el,toPoint:ze,defs:Ne,nadgrid:Qn,transform:Xn,mgrs:Kc,version:"__VERSION__"});$l(Ql);var uo=Ql;var fo=uo,Ut=class{static defineProjectionAliases(t){for(let r in t)fo.defs(r,t[r])}static registerDatumGrid(t,r,s){fo.nadgrid(t,r,s)}constructor({from:t="WGS84",to:r="WGS84",enforceAxis:s=!1}){if(this._projection=fo(t,r),this._enforceAxis=s,!this._projection)throw new Error("Invalid projection");this.project=this.project.bind(this),this.unproject=this.unproject.bind(this)}project(t){return this._projection.forward(t,this._enforceAxis)}unproject(t){return this._projection.inverse(t,this._enforceAxis)}};var zr=class extends Error{constructor(t){super(t.message||"CRS is not compatible with proj4js"),this.name="Proj4CRSCompatibilityError",this.compatibility=t}};var a_=new Set(["GeographicCRS","GeodeticCRS","ProjectedCRS","BoundCRS"]);function h_(e){return typeof e=="object"&&e!==null}function li(e){return typeof e.type=="string"?e.type:void 0}function Kl(e){return a_.has(e.type)}function Jl(e){return Kl(e)?e.type!=="BoundCRS"||Jl(e.source_crs):!1}function Xl(e,t,r,s=!1){return{status:"unsupported",checked:!1,lossy:s,type:e,reason:t,message:r}}function c_(e){if(e.type!=="CompoundCRS"||!Array.isArray(e.components))return{reason:"missing-horizontal-crs",message:"CompoundCRS does not contain a components array"};let t=e.components.filter(r=>Jl(r));return t.length===0?{reason:"missing-horizontal-crs",message:"CompoundCRS does not contain a Proj4-compatible horizontal CRS"}:t.length>1?{reason:"ambiguous-horizontal-crs",message:"CompoundCRS contains more than one Proj4-compatible horizontal CRS"}:{definition:t[0]}}function l_(e,t){if(!h_(e))return{definition:e,lossy:!1};if(Kl(e))return{definition:e,lossy:!1,type:li(e)};if(t==="horizontal"&&e.type==="CompoundCRS"){let s=c_(e);if("reason"in s)throw new zr(Xl(li(e),s.reason,s.message,!0));return{definition:s.definition,lossy:!0,type:li(e)}}let r=li(e);throw new zr(Xl(r,"unsupported-crs-type",r?`${r} is not supported by proj4js`:"CRS object has no supported type"))}function mo(e,t){return l_(e,t?.mode||"strict").definition}var u_=[9,-18,-88,0,96,90,0,0,-60,-20,-9,18,8,0,-96,30,0,0,60,-20,9,-88,-18,90,96,0,-20,-60,0,0,186,-42,-42,-150,-96,-150,60,60,60,60,54,162,-78,30,-24,-90,-60,60,-60,60,-9,-32,18,30,24,0,20,-60,0,0,-9,8,18,30,-96,0,-20,60,0,0,54,-78,162,-90,-24,30,60,-60,60,-60,-54,78,78,90,144,90,-60,-60,-60,-60,9,-8,-18,-30,-24,0,20,60,0,0,-9,18,-32,0,24,30,0,0,-60,20,9,-18,-8,0,-24,-30,0,0,60,20],f_=372,m_=[0,0,-131,0,138,144,0,0,-102,-31,0,0,7,0,-138,42,0,0,102,-31,62,0,-31,0,0,-62,0,0,0,31,124,0,-62,0,0,-124,0,0,0,62,124,0,-62,0,0,-124,0,0,0,62,62,0,-31,0,0,-62,0,0,0,31,0,0,45,0,-183,-9,0,93,18,0,0,0,216,0,33,87,0,-93,12,-93,0,0,156,0,153,99,0,-93,-12,-93,0,0,-45,0,-3,9,0,93,-18,0,0,0,-55,0,48,42,0,0,-84,31,0,0,-7,0,-48,-42,0,0,84,31],d_=372,p_=[18,-36,-122,0,120,135,0,0,-84,-31,-18,36,-2,0,-120,51,0,0,84,-31,36,-165,-27,93,147,-9,0,-93,18,0,210,45,-111,-93,-57,-192,0,93,12,93,162,141,-75,-93,-129,-180,0,93,-12,93,-36,-21,27,93,39,9,0,-93,-18,0,0,0,62,0,0,31,0,0,0,-31,0,0,124,0,0,62,0,0,0,-62,0,0,124,0,0,62,0,0,0,-62,0,0,62,0,0,31,0,0,0,-31,-18,36,-64,0,66,51,0,0,-102,31,18,-36,2,0,-66,-51,0,0,102,31],g_=12,po=20/2,__=2,qr=class{constructor(t){this._v00=0,this._v01=0,this._v10=0,this._v11=0,this._t=[],this.options=t,this._ix=this.options._width,this._iy=this.options._height}getHeight(t,r){if(t=Math.abs(t)>90?NaN:t,Number.isNaN(t)||Number.isNaN(r))return NaN;let s=M_(r,360);r=s!==-180?s:180;let i=r*this.options._rlonres,n=-t*this.options._rlatres,o=Math.floor(i),a=Math.min(Math.round((this.options._height-1)/2-1),Math.floor(n));i-=o,n-=a,a+=(this.options._height-1)/2,o+=o<0?this.options._width:o>=this.options._width?-this.options._width:0;let h=0,c=0,l=0,u=0,f=new Array(po);if(o===this._ix&&a===this._iy)this.options.cubic?f=this._t:(h=this._v00,c=this._v01,l=this._v10,u=this._v11);else if(!this.options.cubic)h=this._rawval(o,a),c=this._rawval(o+1,a),l=this._rawval(o,a+1),u=this._rawval(o+1,a+1);else{let m=[this._rawval(o,a-1),this._rawval(o+1,a-1),this._rawval(o-1,a),this._rawval(o,a),this._rawval(o+1,a),this._rawval(o+2,a),this._rawval(o-1,a+1),this._rawval(o,a+1),this._rawval(o+1,a+1),this._rawval(o+2,a+1),this._rawval(o,a+2),this._rawval(o+1,a+2)],g=m_;a!==0&&(g=a===this.options._height-2?p_:u_);let p=f_;a!==0&&(p=a===this.options._height-2?d_:240);for(let M=0;M<po;++M){f[M]=0;for(let x=0;x<g_;++x)f[M]+=m[x]*g[po*x+M];f[M]/=p}}if(!this.options.cubic){let m=(1-i)*h+i*c,g=(1-i)*l+i*u,p=(1-n)*m+n*g,M=this.options._offset+this.options._scale*p;return this._ix=o,this._iy=a,this._v00=h,this._v01=c,this._v10=l,this._v11=u,M}let d=f[0]+i*(f[1]+i*(f[3]+i*f[6]))+n*(f[2]+i*(f[4]+i*f[7])+n*(f[5]+i*f[8]+n*f[9]));return d=this.options._offset+this.options._scale*d,this._ix=o,this._iy=a,this._t=f,d}_rawval(t,r){t<0?t+=this.options._width:t>=this.options._width&&(t-=this.options._width),(r<0||r>=this.options._height)&&(r=r<0?-r:2*(this.options._height-1)-r,t+=(t<this.options._width/2?1:-1)*this.options._width/2);let s=this.options._datastart+__*(r*this.options._swidth+t),i=this.options.data[s],n=this.options.data[s+1];return i<<8|n}};function M_(e,t){t=Math.abs(t);let r=t0(e,t);return 2*Math.abs(r)===t?r-=t0(e,2*t)-r:2*Math.abs(r)>t&&(r+=r<0?t:-t),r}function t0(e,t){return e-Math.floor(e/t)*t}var x_=10,y_=65535;function go(e,t){let r=S_(e),s=r.next();if(s.done||s.value.line!=="P5")throw new Error("Geoid model file: File not in PGM format");let i=Number.MAX_VALUE,n=0,o=-1,a=-1,h="NONE",c="UNKNOWN",l=0,u=0,f=null,d=null;do{s=r.next();let M=s.value.line;if(M.length)if(M[0]==="#"){let x=M.split(" "),S=x[0],v=x[1];if(S!=="#"||!v)continue;let w=x.length>2?x.slice(2):[];if(v==="Description")h=w.join(" ");else if(v==="DateTime")c=w.join(" ");else if(v==="Offset"){if(!x[2])throw new Error("Geoid model file: Error reading offset");i=parseInt(x[2],10)}else if(v==="Scale"){if(!x[2])throw new Error("Geoid model file: Error reading scale");n=parseFloat(x[2])}else v===(t.cubic?"MaxCubicError":"MaxBilinearError")?isFinite(parseFloat(x[2]))&&(o=parseFloat(x[2])):v===(t.cubic?"RMSCubicError":"RMSBilinearError")&&isFinite(parseFloat(x[2]))&&(a=parseFloat(x[2]))}else{let x=M.split(" ");if(x=x.filter(S=>S!==""),l=parseInt(x[0],10),u=parseInt(x[1],10),!(l&&u))throw new Error("Geoid model file: Error reading raster size");break}}while(!s.done);s=r.next();let m=parseInt(s.value.line,10);if(s.done)throw new Error("Geoid model file: Error reading maxval");if(m!==y_)throw new Error("Geoid model file: Incorrect value of maxval");if(f=s.value.offset,d=l,i===Number.MAX_VALUE)throw new Error("Geoid model file: Offset not set");if(n===0)throw new Error("Geoid model file: Scale not set");if(n<0)throw new Error("Geoid model file: Scale must be positive");if(u<2||l<2)throw new Error("Geoid model file: Raster size too small");if(l&1)throw new Error("Geoid model file: Raster width is odd");if(!(u&1))throw new Error("Geoid model file: Raster height is even");let g=l/360,p=(u-1)/180;return new qr({cubic:t.cubic,_width:l,_height:u,_rlonres:g,_rlatres:p,_offset:i,_scale:n,_swidth:d,_datastart:f,_maxerror:o,_rmserror:a,_description:h,_datetime:c,data:e})}function*S_(e){let t=0;do{let r=e.indexOf(x_,t);if(r!==-1){let s=e.subarray(t,r);t=r+1,yield{offset:t,line:e0(s)}}else{let s=e.subarray(t,e.length);t=e.length,yield{offset:t,line:e0(s)}}}while(t<e.length);return{offset:t,line:""}}function e0(e){let t="";for(let r of e)t+=String.fromCharCode(r);return t}var r0=new Map;function s0(e,t){Mo(e,"CRS"),Ut.defineProjectionAliases({[e]:t})}function i0(e,t){Mo(e,"datum grid"),Ut.registerDatumGrid(e,t)}function _o(e,t){Mo(e,"geoid model"),r0.set(e,t)}function n0(e,t,r={}){let s=go(t,r);return _o(e,s),s}function ui(e){return r0.get(e)}function Mo(e,t){if(!e.trim())throw new Error(`${t} name must not be empty`)}var xo="EPSG:4326",v_="EPSG:4978",te=class{spatialReference;horizontalProjection;geographicProjection;heightOutputProjection;sourceIsGeocentric;outputIsGeocentric;sourceIsGeographic;outputIsGeographic;geoid;constructor(t,r={}){this.spatialReference=t,E_(t);let s=t.targetCrs||t.sourceCrs;if(this.sourceIsGeocentric=yo(t.sourceCrs),this.outputIsGeocentric=yo(s),this.sourceIsGeographic=o0(t.sourceCrs),this.outputIsGeographic=o0(s),t.sourceCrs&&t.targetCrs&&!this.sourceIsGeocentric&&!this.outputIsGeocentric&&(this.horizontalProjection=new Ut({from:fi(t.sourceCrs),to:fi(t.targetCrs),enforceAxis:!1})),(Br(t)||this.sourceIsGeocentric||this.outputIsGeocentric)&&(!this.sourceIsGeographic&&!this.sourceIsGeocentric&&(this.geographicProjection=new Ut({from:fi(t.sourceCrs),to:xo,enforceAxis:!1})),!this.outputIsGeographic&&!this.outputIsGeocentric&&(this.heightOutputProjection=new Ut({from:xo,to:fi(s),enforceAxis:!1}))),Br(t)&&(this.geoid=w_(r.geoidModel),!this.geoid)){let i=typeof r.geoidModel=="string"?` "${r.geoidModel}"`:"";throw new Error(`Height conversion requires a registered geoid model${i}; call registerGeoidModel() or pass a parsed Geoid instance`)}}transformPosition(t){if(t.length<2)throw new Error("A spatial coordinate must contain at least x and y components");let r=[...t];if(Br(this.spatialReference)||this.sourceIsGeocentric||this.outputIsGeocentric){if(r.length<3||!Number.isFinite(r[2]))throw new Error("Three-dimensional CRS conversion requires a finite z coordinate");let s=this.toGeographic(r);if(Br(this.spatialReference)){let n=this.geoid.getHeight(s[1],s[0]);s[2]=T_(s[2],n,this.spatialReference.heightReference,this.spatialReference.targetHeightReference)}let i=this.fromGeographic(s);return r.splice(0,i.length,...i),r}if(this.horizontalProjection){let s=this.horizontalProjection.project(r.slice(0,3));r.splice(0,s.length,...s)}return r}toGeographic(t){return this.sourceIsGeocentric?Array.from(I.WGS84.cartesianToCartographic(new _(t))):this.sourceIsGeographic?t.slice(0,3):this.geographicProjection.project(t.slice(0,3))}fromGeographic(t){return this.outputIsGeocentric?Array.from(I.WGS84.cartographicToCartesian(new _(t))):this.outputIsGeographic?t.slice(0,3):this.heightOutputProjection.project(t.slice(0,3))}};function fi(e){if(!e)throw new Error("Cannot construct a projection because the CRS is unknown");return mo(e,{mode:"horizontal"})}function E_(e){if(e.outputCoordinates==="local-enu")throw new Error("local-enu output requires a dataset-derived local origin and must be created by a tileset source");if(e.outputCoordinates==="target-crs"&&!e.targetCrs)throw new Error("target-crs output requires targetCrs");if(!e.sourceCrs&&e.status==="unresolved")throw new Error("Cannot transform coordinates because the source CRS is unknown");if(Br(e)&&e.heightReference==="unknown")throw new Error("Cannot convert heights because the source height reference is unknown");if(e.coordinateFrame==="geocentric"&&!yo(e.sourceCrs))throw new Error("Only EPSG:4978 geocentric coordinates are supported by the current spatial transformer");if(e.status==="unresolved")throw new Error("The requested spatial output cannot be resolved from the available metadata")}function yo(e){return typeof e=="string"&&a0(e)===v_}function o0(e){if(typeof e!="string")return!1;let t=a0(e);return t===xo||t==="EPSG:4979"||t==="OGC:CRS84"}function a0(e){let t=e.trim().toUpperCase(),r=t.match(/(?:\/DEF\/CRS\/|URN:OGC:DEF:CRS:)([A-Z0-9_-]+)(?:\/|::)(?:[^/:]*[/:])?([A-Z0-9_.-]+)$/);return r?`${r[1]}:${r[2]}`:t}function Br(e){let t=e.targetHeightReference;return t!=="native"&&t!==e.heightReference}function w_(e){return typeof e=="string"?ui(e):e}function T_(e,t,r,s){if(r===s||s==="native")return e;if(r==="orthometric"&&s==="ellipsoidal")return e+t;if(r==="ellipsoidal"&&s==="orthometric")return e-t;throw new Error(`Unsupported height conversion from ${r} to ${s}`)}var Ye=class{spatialReference;targetCoordinateFrame;positionTransformer;sourceToGeographicTransformer;geographicToTargetTransformer;sourceCoordinateFrame;sourceVerticalUnitScale;elevationMode;elevationOffset;elevationProvider;providerUnitScale;providerHeightTransformer;constructor(t,r={}){if(t.status!=="transformable"&&t.status!=="transformed")throw new Error("I3SSpatialTransformer requires a requested, transformable spatial output");let s=t.targetCrs||t.sourceCrs;if(!s)throw new Error("I3S spatial transformation requires a target CRS");if(this.positionTransformer=new te(t,r),this.sourceCoordinateFrame=t.coordinateFrame,this.sourceVerticalUnitScale=t.verticalUnitScale,this.elevationMode=t.elevationMode,this.elevationOffset=(t.elevationOffset||0)*t.elevationUnitScale,this.elevationProvider=P_(this.elevationMode,r),this.elevationProvider&&(typeof this.elevationProvider.sampleElevations!="function"||typeof this.elevationProvider.getElevationRange!="function"))throw new Error("An I3S elevation provider must implement sampleElevations() and getElevationRange()");let i=Mr(this.elevationProvider?.unit||"meter");if(this.elevationProvider&&i===void 0)throw new Error(`Unsupported elevation-provider unit ${this.elevationProvider.unit}`);this.providerUnitScale=i||1,this.targetCoordinateFrame=Ht(s),this.spatialReference=Is(t);let n=Pt({sourceCrs:t.sourceCrs,heightReference:t.heightReference,coordinateFrame:t.coordinateFrame,axisOrder:t.axisOrder,provenance:t.provenance},{targetCrs:"EPSG:4326"});if(this.sourceToGeographicTransformer=new te(n),He(this.elevationMode)){if(!this.elevationProvider){let h=this.elevationMode==="relativeToScene"?"scene":"terrain";throw new Error(`I3S elevation mode ${this.elevationMode} requires a ${h} elevation provider`)}if(t.heightReference==="unknown")throw new Error(`I3S elevation mode ${this.elevationMode} requires a known source height reference`);let a=this.elevationProvider.heightReference||t.heightReference;if(a!==t.heightReference){if(t.heightReference!=="ellipsoidal"&&t.heightReference!=="orthometric")throw new Error("Converting elevation-provider heights requires an ellipsoidal or orthometric source height reference");let h=Pt({sourceCrs:"EPSG:4326",heightReference:a,coordinateFrame:"geographic",axisOrder:"xyz",provenance:"caller-override"},{targetCrs:"EPSG:4326",targetHeightReference:t.heightReference,geoidModel:r.geoidModel});this.providerHeightTransformer=new te(h,r)}}let o=Pt({sourceCrs:"EPSG:4326",heightReference:t.heightReference,coordinateFrame:"geographic",axisOrder:"xyz",provenance:"format-default"},{targetCrs:s,targetHeightReference:t.targetHeightReference,geoidModel:r.geoidModel});this.geographicToTargetTransformer=new te(o,r)}transformPosition(t){let r=this.placeSourcePositionsSync(t),s=this.positionTransformer.transformPosition([r[0],r[1],r[2]]);return[s[0],s[1],s[2]]}async transformPositionAsync(t){let r=await this.placeSourcePositions(t),s=this.positionTransformer.transformPosition([r[0],r[1],r[2]]);return[s[0],s[1],s[2]]}transformPlacedPosition(t){let r=this.positionTransformer.transformPosition([t[0],t[1],t[2]]);return[r[0],r[1],r[2]]}transformSourcePositionToGeographic(t){let r=this.placeSourcePositionsSync(t),s=this.sourceToGeographicTransformer.transformPosition([r[0],r[1],r[2]]);return[s[0],s[1],s[2]]}async transformSourcePositionToGeographicAsync(t){let r=await this.placeSourcePositions(t),s=this.sourceToGeographicTransformer.transformPosition([r[0],r[1],r[2]]);return[s[0],s[1],s[2]]}transformPositions(t,r){let s=this.placeSourcePositionsSync(t),i=this.placeSourcePositionsSync(r);return this.transformPlacedPositions(s,i)}async transformPositionsAsync(t,r){let s=new Float64Array(t.length+3);s.set(Array.from(t),0),s.set(Array.from(r).slice(0,3),t.length);let i=await this.placeSourcePositions(s);return this.transformPlacedPositions(i.subarray(0,t.length),i.subarray(t.length))}transformPlacedPositions(t,r){let s=this.transformPlacedPosition(r),i=new Float32Array(t.length),n=Float64Array.from(t);for(let h=0;h<t.length;h+=3){let c=this.transformPlacedPosition([t[h],t[h+1],t[h+2]]);i[h]=c[0]-s[0],i[h+1]=c[1]-s[1],i[h+2]=c[2]-s[2]}let o=this.targetCoordinateFrame==="geographic",a=o?new z:new z().translate(s);return{positions:i,sourcePositions:n,origin:s,cartographicOrigin:o?s:[0,0,0],coordinateSystem:o?"lnglat-offsets":"cartesian",modelMatrix:a}}transformNormals(t,r,s="earth-centered"){let i=new Float32Array(t.length);for(let n=0;n<t.length;n+=3){let o=this.sourceToGeographicTransformer.transformPosition([r[n],r[n+1],r[n+2]]),a=new _([t[n],t[n+1],t[n+2]]).normalize(),h=s==="earth-centered"?a:f0(a,o),c=this.transformEcefNormal(h,o);i.set(c,n)}return i}transformBoundingVolume(t){let s=this.getGeographicBoundSamples(t).map(i=>this.geographicToTargetTransformer.transformPosition(i));return this.targetCoordinateFrame==="geographic"?{region:ae(s)}:{box:_e(s)}}async transformBoundingVolumeAsync(t){let s=(await this.getGeographicBoundSamplesAsync(t)).map(i=>this.geographicToTargetTransformer.transformPosition(i));return this.targetCoordinateFrame==="geographic"?{region:ae(s)}:{box:_e(s)}}transformBoundingVolumeToGeographic(t){return{region:ae(this.getGeographicBoundSamples(t))}}async transformBoundingVolumeToGeographicAsync(t){return{region:ae(await this.getGeographicBoundSamplesAsync(t))}}transformBoundingVolumeToGeocentric(t){let r=this.getGeographicBoundSamples(t).map(s=>Array.from(I.WGS84.cartographicToCartesian(new _(s))));return{box:_e(r)}}async transformBoundingVolumeToGeocentricAsync(t){let r=(await this.getGeographicBoundSamplesAsync(t)).map(s=>Array.from(I.WGS84.cartographicToCartesian(new _(s))));return{box:_e(r)}}transformBoundingSphereToGeographic(t){let r=t.mbs?.length?Array.from(t.mbs).slice(0,3):t.obb?Array.from(t.obb.center).slice(0,3):null;if(!r)throw new Error("I3S spatial transformation requires an MBS or OBB bound");let s=this.placeSourcePositionsSync(r),i=this.sourceToGeographicTransformer.transformPosition(Array.from(s)),n=t.mbs?.length?t.mbs[3]:Math.hypot(...Array.from(t.obb.halfSize).slice(0,3));return[i[0],i[1],i[2],n]}async transformBoundingSphereToGeographicAsync(t){return h0(await this.getGeographicBoundSamplesAsync(t))}async transformBoundsAsync(t){let r=await this.getGeographicBoundSamplesAsync(t),s=r.map(n=>Array.from(I.WGS84.cartographicToCartesian(new _(n)))),i=r.map(n=>this.geographicToTargetTransformer.transformPosition(n));return{boundingVolume:{box:_e(s)},spatialBoundingVolume:this.targetCoordinateFrame==="geographic"?{region:ae(i)}:{box:_e(i)},i3sLodMbs:He(this.elevationMode)?h0(r):this.transformBoundingSphereToGeographic(t)}}async transformPointCloudBoundsAsync(t){let r=await this.getGeographicBoundSamplesAsync(t),s=r.map(i=>this.geographicToTargetTransformer.transformPosition(i));return{boundingVolume:{region:ae(r)},spatialBoundingVolume:this.targetCoordinateFrame==="geographic"?{region:ae(s)}:{box:_e(s)}}}getGeographicBoundSamples(t){let r=c0(t,this.sourceCoordinateFrame,this.sourceToGeographicTransformer,this.sourceVerticalUnitScale);if(!r.length)throw new Error("I3S spatial transformation requires an MBS or OBB bound");let s=this.placeSourcePositionsSync(r.flat(),!0),i=So(s);return this.sourceCoordinateFrame==="geographic"?i:i.map(n=>this.sourceToGeographicTransformer.transformPosition(n))}async getGeographicBoundSamplesAsync(t){let r=c0(t,this.sourceCoordinateFrame,this.sourceToGeographicTransformer,this.sourceVerticalUnitScale);if(!r.length)throw new Error("I3S spatial transformation requires an MBS or OBB bound");if(He(this.elevationMode)){let i=this.sourceCoordinateFrame==="geographic"?r:r.map(n=>this.sourceToGeographicTransformer.transformPosition(n));return await this.placeGeographicBoundSamples(i)}let s=So(await this.placeSourcePositions(r.flat(),!0));return this.sourceCoordinateFrame==="geographic"?s:s.map(i=>this.sourceToGeographicTransformer.transformPosition(i))}async placeGeographicBoundSamples(t){let s=await this.elevationProvider.getElevationRange(b_(t)),i=s.minimum*this.providerUnitScale,n=s.maximum*this.providerUnitScale;if(!Number.isFinite(i)||!Number.isFinite(n)||i>n)throw new Error("Elevation provider returned an invalid range; minimum and maximum must be finite and ordered");let o=t.map(l=>l[2]),a=Math.min(...o),h=Math.max(...o),c=[];for(let[l,u]of t){let f=this.providerHeightTransformer?this.providerHeightTransformer.transformPosition([l,u,i])[2]:i,d=this.providerHeightTransformer?this.providerHeightTransformer.transformPosition([l,u,n])[2]:n,m=Math.min(f,d),g=Math.max(f,d),p=this.elevationMode==="onTheGround"?m:m+a+this.elevationOffset,M=this.elevationMode==="onTheGround"?g:g+h+this.elevationOffset;c.push([l,u,p],[l,u,M])}return c}placeSourcePositionsSync(t,r=!1){if(He(this.elevationMode))throw new Error(`I3S elevation mode ${this.elevationMode} requires asynchronous surface placement`);let s=Float64Array.from(t),i=this.elevationMode==="absoluteHeight"?this.elevationOffset:0;for(let n=2;n<s.length;n+=3)s[n]=s[n]*(r?1:this.sourceVerticalUnitScale)+i;return s}async placeSourcePositions(t,r=!1){if(!He(this.elevationMode))return this.placeSourcePositionsSync(t,r);let s=Float64Array.from(t),i=So(s).map(o=>{let a=this.sourceToGeographicTransformer.transformPosition(o);return[a[0],a[1]]}),n=await this.elevationProvider.sampleElevations(i);if(n.length!==i.length)throw new Error(`Elevation provider returned ${n.length} heights for ${i.length} positions`);for(let o=0;o<i.length;o++){let a=n[o]*this.providerUnitScale;if(!Number.isFinite(a))throw new Error(`Elevation provider returned a non-finite height at index ${o}`);let[h,c]=i[o],l=this.providerHeightTransformer?this.providerHeightTransformer.transformPosition([h,c,a])[2]:a,u=s[o*3+2]*(r?1:this.sourceVerticalUnitScale);s[o*3+2]=this.elevationMode==="onTheGround"?l:l+u+this.elevationOffset}return s}transformEcefNormal(t,r){if(this.targetCoordinateFrame==="geocentric")return t.normalize();if(this.targetCoordinateFrame==="geographic")return C_(t,r).normalize();let s=I.WGS84.cartographicToCartesian(new _(r)),i=[];for(let o of R_()){let a=I.WGS84.cartesianToCartographic(new _(s).add(o)),h=I.WGS84.cartesianToCartographic(new _(s).subtract(o)),c=this.geographicToTargetTransformer.transformPosition(a),l=this.geographicToTargetTransformer.transformPosition(h);i.push((c[0]-l[0])/2,(c[1]-l[1])/2,(c[2]-l[2])/2)}let n=new j(i);if(Math.abs(n.determinant())<1e-12)throw new Error("Cannot transform an I3S normal through a singular local projection");return n.invert().transpose(),new _(t).transformByMatrix3(n).normalize()}};function P_(e,t){return e==="relativeToScene"?t.sceneElevationProvider:He(e)?t.terrainElevationProvider:void 0}function He(e){return e==="onTheGround"||e==="relativeToGround"||e==="relativeToScene"}function So(e){if(e.length%3!==0)throw new Error("I3S position arrays must contain complete XYZ tuples");let t=[];for(let r=0;r<e.length;r+=3)t.push([e[r],e[r+1],e[r+2]]);return t}function b_(e){let t=ae(e);return{west:t[0]*180/Math.PI,south:t[1]*180/Math.PI,east:t[2]*180/Math.PI,north:t[3]*180/Math.PI}}function h0(e){if(!e.length)throw new Error("I3S spatial transformation requires at least one bound sample");let t=e.map(n=>I.WGS84.cartographicToCartesian(new _(n))),r=new _;for(let n of t)r.add(n);r.scale(1/t.length);let s=0;for(let n of t)s=Math.max(s,new _(n).subtract(r).magnitude());let i=I.WGS84.cartesianToCartographic(r);return[i[0],i[1],i[2],s]}function c0(e,t,r,s){let i=e.obb;if(i){let h=Array.from(i.center).slice(0,3);h[2]*=s;let c=Array.from(i.halfSize).slice(0,3),l=new wt().fromArray(Array.from(i.quaternion)),u=[new _([c[0],0,0]).transformByQuaternion(l),new _([0,c[1],0]).transformByQuaternion(l),new _([0,0,c[2]]).transformByQuaternion(l)];if(t==="geographic"){let f=r.transformPosition(h),d=I.WGS84.cartographicToCartesian(new _(f)),m=e.normalReferenceFrame==="vertex-reference-frame"?u.map(g=>f0(g,f)):u;return l0().map(g=>{let p=new _(d);for(let M=0;M<3;M++)p.add(new _(m[M]).scale(g[M]));return Array.from(I.WGS84.cartesianToCartographic(p))})}return l0().map(f=>{let d=new _(h);for(let m=0;m<3;m++)d.add(new _(u[m]).scale(f[m]));return Array.from(d)})}let n=e.mbs?Array.from(e.mbs):[];if(n.length<4)return[];let o=n.slice(0,3);o[2]*=s;let a=n[3];if(t==="geographic"){let h=r.transformPosition(o),c=I.WGS84.cartographicToCartesian(new _(h));return u0().map(l=>Array.from(I.WGS84.cartesianToCartographic(new _(c).add(new _(l).scale(a)))))}return u0().map(h=>Array.from(new _(o).add(new _(h).scale(a))))}function l0(){return[-1,1].flatMap(e=>[-1,1].flatMap(t=>[-1,1].map(r=>[e,t,r])))}function u0(){return[[1,0,0],[-1,0,0],[0,1,0],[0,-1,0],[0,0,1],[0,0,-1]]}function R_(){return[new _([1,0,0]),new _([0,1,0]),new _([0,0,1])]}function f0(e,t){let r=t[0]*Math.PI/180,s=t[1]*Math.PI/180,i=new _([-Math.sin(r),Math.cos(r),0]),n=new _([-Math.sin(s)*Math.cos(r),-Math.sin(s)*Math.sin(r),Math.cos(s)]),o=new _([Math.cos(s)*Math.cos(r),Math.cos(s)*Math.sin(r),Math.sin(s)]);return i.scale(e[0]).add(n.scale(e[1])).add(o.scale(e[2]))}function C_(e,t){let r=t[0]*Math.PI/180,s=t[1]*Math.PI/180,i=new _([-Math.sin(r),Math.cos(r),0]),n=new _([-Math.sin(s)*Math.cos(r),-Math.sin(s)*Math.sin(r),Math.cos(s)]),o=new _([Math.cos(s)*Math.cos(r),Math.cos(s)*Math.sin(r),Math.sin(s)]);return new _([i.dot(e),n.dot(e),o.dot(e)])}function _e(e){let t=[1/0,1/0,1/0],r=[-1/0,-1/0,-1/0];for(let n of e)for(let o=0;o<3;o++)t[o]=Math.min(t[o],n[o]),r[o]=Math.max(r[o],n[o]);let s=t.map((n,o)=>(n+r[o])/2),i=t.map((n,o)=>(r[o]-n)/2);return[s[0],s[1],s[2],i[0],0,0,0,i[1],0,0,0,i[2]]}function ae(e){let t=e[0][0],r=1/0,s=-1/0,i=1/0,n=-1/0,o=1/0,a=-1/0;for(let h of e){let c=t+vo(h[0]-t);r=Math.min(r,c),s=Math.max(s,c),i=Math.min(i,h[1]),n=Math.max(n,h[1]),o=Math.min(o,h[2]),a=Math.max(a,h[2])}return[vo(r)*Math.PI/180,i*Math.PI/180,vo(s)*Math.PI/180,n*Math.PI/180,o,a]}function vo(e){return((e+180)%360+360)%360-180}var A_={draco:!1,meshopt:!1,dds:!1,ktx2:!1},mi=class{type=lt.I3S;loader;url;basePath;tileset=null;loadOptions;coreApi;contentFormats={...A_};asset;properties;extras;credits;metadata;queryParams={};resolver;rootTileset;spatialTransformer;preparedRootHeader;constructor(t,r={}){let s=I_(t);this.rootTileset=m0(t)?null:t,this.tileset=this.rootTileset,this.loader=s.loader,this.url=s.url,this.basePath=s.basePath||xt.dirname(s.url),this.resolver=s.resolver,this.coreApi=s.coreApi,this.loadOptions=r,this.initializeQueryParams(r)}async initialize(){this.rootTileset||(this.rootTileset=await this.loadRootData(this.getTileUrl(this.url),this.loadOptions)),this.tileset=this.rootTileset,this.rootTileset.root&&typeof this.rootTileset.root.then=="function"&&(this.rootTileset.root=await this.rootTileset.root),this.metadata={type:this.type,loader:this.loader,url:this.url,basePath:this.basePath,tileset:this.rootTileset,lodMetricType:this.rootTileset.lodMetricType,lodMetricValue:this.rootTileset.lodMetricValue,refine:this.rootTileset.root?.refine,spatialReference:Bs(this.rootTileset)}}getMetadata(){if(!this.metadata)throw new Error("I3SSource has not been initialized");return this.metadata}async getRootTileset(){return this.getMetadata().tileset}async prepareTileset(t){let r=t.spatialReference;if(r.status==="unresolved")throw new Error(r.warnings[0]||"I3S spatial operations cannot be resolved from the supplied metadata and options");r.status!=="transformable"&&r.status!=="transformed"||(this.spatialTransformer||=new Ye(r,t.options.spatial),t.spatialReference=this.spatialTransformer.spatialReference,this.preparedRootHeader=await this.transformTileHeader(this.getMetadata().tileset.root))}initializeTileHeaders(t,r,s){let i=s?r.root:this.preparedRootHeader||r.root;if(this.spatialTransformer&&!this.preparedRootHeader)throw new Error("I3S spatial root header was not prepared before tile initialization");let n=new bt(t,i,s||void 0);return s&&(s.children.push(n),n.depth=s.depth+1),n}createTraverser(t){return new Ws(t)}async loadTileContent(t){let r=this.getTileUrl(t.contentUrl),s=this.loader.id,i=this.loadOptions[s]||{},n=this.getMetadata(),o={...this.loadOptions,[s]:{...i,...t.tileset.options.i3s,_tileOptions:{attributeUrls:t.header.attributeUrls,textureUrl:t.header.textureUrl,textureUrls:t.header.textureUrls,textureFormat:t.header.textureFormat,textureLoaderOptions:t.header.textureLoaderOptions,materialDefinition:t.header.materialDefinition,layerType:t.header.layerType,pointRenderer:t.header.pointRenderer,pointSymbol:t.header.pointSymbol,isDracoGeometry:t.header.isDracoGeometry,mbs:t.header.mbs},_tilesetOptions:{store:n.tileset.store,attributeStorageInfo:n.tileset.attributeStorageInfo,fields:n.tileset.fields,spatialReference:t.tileset.spatialReference,spatialOptions:t.tileset.options.spatial},isTileHeader:!1}};return t.content=await this.loadResourceData(r,o),{loaded:!0}}async loadChildTileHeader(t,r,s){let i=this.getMetadata();if(i.tileset.nodePages||i.tileset.pointNodePages){let c=await i.tileset.nodePagesTile.formTileFromNodePages(r);return await this.transformTileHeader(c)}let n=this.getTileUrl(`${this.url}/nodes/${r}`),o=this.loadOptions.i3s&&typeof this.loadOptions.i3s=="object"?this.loadOptions.i3s:{},a={...this.loadOptions,i3s:{...o,isTileHeader:!0}},h=await this.loadResourceData(n,a);return await this.transformTileHeader(h)}getTileUrl(t){if(t.startsWith("data:")||!Object.keys(this.queryParams).length)return t;let r=t.indexOf("?");if(r===-1)return`${t}?${new URLSearchParams(this.queryParams).toString()}`;let s=t.slice(r+1),i=new Set(s.split("&").map(a=>a.split("=",1)[0])),n=new URLSearchParams;for(let[a,h]of Object.entries(this.queryParams))i.has(a)||n.set(a,h);let o=n.toString();return o?`${t}${s?"&":""}${o}`:t}getViewState(t){if(this.spatialTransformer&&t){let n=new _(t.boundingVolume.center),o=new _(t.header.i3sLodMbs.slice(0,3));return this.spatialTransformer.targetCoordinateFrame==="geographic"?{boundingVolume:t.boundingVolume,cartographicCenter:o,cartesianCenter:n,zoom:1}:{boundingVolume:t.boundingVolume,cartographicCenter:o,cartesianCenter:n,zoom:1}}let r=this.getMetadata(),s=r.tileset.fullExtent;if(s){let{xmin:n,xmax:o,ymin:a,ymax:h,zmin:c,zmax:l}=s,u=new _(n+(o-n)/2,a+(h-a)/2,c+(l-c)/2),f=new _;return I.WGS84.cartographicToCartesian(u,f),{cartographicCenter:u,cartesianCenter:f,zoom:Gn(s,u,f)}}let i=r.tileset.store?.extent;if(i){let[n,o,a,h]=i,c=new _(n+(a-n)/2,o+(h-o)/2,0),l=new _;return I.WGS84.cartographicToCartesian(c,l),{cartographicCenter:c,cartesianCenter:l,zoom:Wh(i,c,l)}}return console.warn("Extent is not defined in the tileset header"),{cartographicCenter:new _,zoom:1}}onTileLoaded(t,r){switch(r.header.isDracoGeometry&&(this.contentFormats.draco=!0),r.header.textureFormat){case"dds":this.contentFormats.dds=!0;break;case"ktx2":this.contentFormats.ktx2=!0;break;default:}}getTilesTotalCount(){return this.getMetadata().tileset?.nodePagesTile?.nodesInNodePages||null}async loadWithCoreApi(t,r){if(!this.coreApi)throw new Error("I3SSource requires an injected coreApi to load tileset data");return await this.coreApi.load(t,this.loader,r)}async loadRootData(t,r){return this.resolver?await this.resolver.loadRoot(t,this.loader,r):await this.loadWithCoreApi(t,r)}initializeQueryParams(t){let r=t.i3s;if(r&&typeof r=="object"&&"token"in r){let s=r.token;typeof s=="string"&&(this.queryParams.token=s)}}async loadResourceData(t,r){return this.resolver?await this.resolver.loadResource(t,this.loader,r):await this.loadWithCoreApi(t,r)}async transformTileHeader(t){if(!this.spatialTransformer)return t;let r={mbs:t.mbs,obb:t.obb,normalReferenceFrame:this.getMetadata().tileset.store?.normalReferenceFrame},s=await this.spatialTransformer.transformBoundsAsync(r);return{...t,boundingVolume:s.boundingVolume,spatialBoundingVolume:s.spatialBoundingVolume,i3sLodMbs:s.i3sLodMbs}}};function m0(e){return!!(e&&typeof e=="object"&&"url"in e&&"loader"in e&&!("type"in e))}function I_(e){return m0(e)?{...e,basePath:e.basePath||xt.dirname(e.url)}:{url:e.url,loader:e.loader,basePath:e.basePath||xt.dirname(e.url),resolver:e.resolver,coreApi:e.coreApi}}var Me=class{index;parent;children;content;error;id;zoom;userData;boundingBox;_abortController;_loader;_loaderId;_isLoaded;_isCancelled;_needsReload;_bbox;constructor(t){this.index=t,this.parent=null,this.children=[],this.content=null,this.error=null,this._loader=void 0,this._abortController=null,this._loaderId=0,this._isLoaded=!1,this._isCancelled=!1,this._needsReload=!1}get bbox(){return this._bbox}set bbox(t){this._bbox||(this._bbox=t,"west"in t?this.boundingBox=[[t.west,t.south],[t.east,t.north]]:this.boundingBox=[[t.left,t.top],[t.right,t.bottom]])}get data(){let t=this._loader;return!this._isCancelled&&t!==void 0?t.then(()=>this.data):this.content}get isLoaded(){return this._isLoaded&&!this._needsReload}get isLoading(){return!!this._loader&&!this._isCancelled}get hasError(){return!!this.error}get needsReload(){return this._needsReload||this._isCancelled}get byteLength(){let t=this.content?this.content.byteLength:0;return Number.isFinite(t)?t:0}async _loadData({getData:t,requestScheduler:r,onLoad:s,onError:i}){let n=(p,M,x)=>{if(x===this._loaderId){if(this._loader=void 0,this.content=p,this.error=M?O_(M):null,this._isCancelled&&!p){this._isLoaded=!1;return}if(this._isLoaded=!0,this._isCancelled=!1,M){i(M,this);return}s(this)}},{index:o,id:a,bbox:h,userData:c,zoom:l}=this,u=this._loaderId;this._abortController=new AbortController;let{signal:f}=this._abortController,d=await r.scheduleRequest(this,()=>1);if(!d){this._isCancelled=!0;return}if(this._isCancelled){d.done();return}let m=null,g;try{m=await t({index:o,id:a,bbox:h,userData:c,zoom:l,signal:f})}catch(p){g=p||!0}finally{d.done()}n(m,g,u)}loadData(t){return this._isLoaded=!1,this._isCancelled=!1,this._needsReload=!1,this.error=null,this._loaderId++,this._loader=this._loadData(t),this._loader}setNeedsReload(){this.isLoading&&(this.abort(),this._loader=void 0),this._needsReload=!0}abort(){this.isLoaded||(this._isCancelled=!0,this._abortController?.abort())}};function O_(e){return e instanceof Error?e:typeof e=="string"?new Error(e):new Error("Tile request failed")}var Eo="never",wo="no-overlap",Fr="best-available",d0={adapter:null,extent:null,tileSize:512,maxZoom:null,minZoom:null,maxCacheSize:100,maxCacheByteSize:null,refinementStrategy:Fr,zRange:null,maxRequests:6,debounceTime:0,zoomOffset:0,onTileLoad:()=>{},onTileUnload:()=>{},onTileError:()=>{},tileSource:null},Dr=class e{stats;sourceMetadata=null;opts;_requestScheduler;_cache;_dirty;_tiles;_cacheByteSize;_unloadedTileCount;_listeners=new Set;_consumers=new Map;_explicitOptionKeys=new Set;_baseOpts={};_sourceMetadataOverrides={};_maxZoom;_minZoom;_lastTileContext=null;constructor(t){if(this.stats=new Tt({id:"Tileset2D",stats:[{name:"Tiles In Cache"},{name:"Cache Size"},{name:"Visible Tiles"},{name:"Selected Tiles"},{name:"Loading Tiles"},{name:"Unloaded Tiles"},{name:"Consumers"}]}),this.opts={...d0,...t,getTileData:t.getTileData||(()=>null),tileSource:t.tileSource},this._requestScheduler=new Wt({throttleRequests:this.opts.maxRequests>0||this.opts.debounceTime>0,maxRequests:this.opts.maxRequests,debounceTime:this.opts.debounceTime}),this._cache=new Map,this._tiles=[],this._dirty=!1,this._cacheByteSize=0,this._unloadedTileCount=0,!this.opts.tileSource&&!t.getTileData)throw new Error("Tileset2D requires either `getTileData` or `tileSource`.");this.setOptions(t),this._updateStats(),this.opts.tileSource&&this._initializeTileSource(this.opts.tileSource).catch(()=>{})}static fromTileSource(t,r={}){return new e({...r,tileSource:t})}get tiles(){return this._tiles}get cacheByteSize(){return this._cacheByteSize}get selectedTiles(){return Array.from(this._getSelectedTilesUnion())}get visibleTiles(){let t=this._getVisibleTilesUnion();for(let r of this._getSelectedTilesUnion())t.add(r);return Array.from(t)}get loadingTiles(){return Array.from(this._cache.values()).filter(t=>t.isLoading)}get unloadedTiles(){return Array.from(this._cache.values()).filter(t=>!t.isLoaded)}get maxZoom(){return this._maxZoom}get minZoom(){return this._minZoom}get refinementStrategy(){return this.opts.refinementStrategy||Fr}get adapter(){return this.opts.adapter}subscribe(t){return this._listeners.add(t),()=>this._listeners.delete(t)}attachConsumer(t){this._consumers.set(t,{selectedTiles:new Set,visibleTiles:new Set}),this._updateStats()}detachConsumer(t){this._consumers.delete(t),this._pruneRequests(),this._resizeCache(),this._updateStats()}setOptions(t){this._rememberExplicitOptions(t),this._baseOpts={...this._baseOpts,...t};let r=this.opts.maxRequests,s=this.opts.debounceTime;this._applyResolvedOptions(),(r!==this.opts.maxRequests||s!==this.opts.debounceTime)&&(this._requestScheduler=new Wt({throttleRequests:this.opts.maxRequests>0||this.opts.debounceTime>0,maxRequests:this.opts.maxRequests,debounceTime:this.opts.debounceTime}))}finalize(){for(let t of this._cache.values())t.isLoading&&t.abort();this._cache.clear(),this._tiles=[],this._consumers.clear(),this._cacheByteSize=0,this._unloadedTileCount=0,this._updateStats()}reloadAll(){let t=this._getSelectedTilesUnion();for(let r of this._cache.keys()){let s=this._cache.get(r);s&&!t.has(s)?(this._cache.delete(r),this._handleTileUnload(s),this._dirty=!0):s&&s.setNeedsReload()}this._cacheByteSize=this._getCacheByteSize(),this.prepareTiles(),this._updateStats()}updateConsumer(t,r,s){this._consumers.set(t,{selectedTiles:new Set(r),visibleTiles:new Set(s)}),this._pruneRequests(),this._resizeCache(),this._updateStats()}prepareTiles(){this._dirty&&(this._rebuildTree(),this._syncTiles(),this._dirty=!1)}getTileIndices({viewState:t,maxZoom:r,minZoom:s,zRange:i,modelMatrix:n,modelMatrixInverse:o}){let{adapter:a,tileSize:h,extent:c,zoomOffset:l}=this.opts;if(!a)throw new Error("Tileset2D requires an adapter before tile traversal can be used.");return this._lastTileContext={viewState:t,tileSize:h},a.getTileIndices({viewState:t,maxZoom:r,minZoom:s,zRange:i,tileSize:h,extent:N_(c),modelMatrix:n,modelMatrixInverse:o,zoomOffset:l})}getTileId(t){return`${t.x}-${t.y}-${t.z}`}getTileZoom(t){return t.z}getTileMetadata(t){if(!this._lastTileContext)throw new Error("Tileset2D metadata requested before traversal context was set.");if(!this.opts.adapter)throw new Error("Tileset2D requires an adapter before tile metadata can be derived.");return{bbox:this.opts.adapter.getTileBoundingBox(this._lastTileContext,t)}}getParentIndex(t){return{x:Math.floor(t.x/2),y:Math.floor(t.y/2),z:t.z-1}}getTile(t,r){let s=this.getTileId(t),i=this._cache.get(s),n=!1;return!i&&r?(i=new Me(t),Object.assign(i,this.getTileMetadata(i.index)),Object.assign(i,{id:s,zoom:this.getTileZoom(i.index)}),n=!0,this._cache.set(s,i),this._dirty=!0,this._updateStats()):i&&i.needsReload&&(n=!0),i&&this._touchTile(s,i),i&&n&&r&&(i.loadData({getData:this.opts.getTileData,requestScheduler:this._requestScheduler,onLoad:this._handleTileLoad.bind(this),onError:this._handleTileError.bind(this)}).catch(()=>{}),this._updateStats()),i}async _initializeTileSource(t){try{this.sourceMetadata=await t.getMetadata(),this._sourceMetadataOverrides=this._getMetadataOverrides(this.sourceMetadata),this._applyResolvedOptions(),this._notifyUpdate()}catch(r){let s=r instanceof Error?r:new Error(`TileSource metadata error: ${String(r)}`);this._notifyError(s)}}_rememberExplicitOptions(t){for(let r of Object.keys(t))this._explicitOptionKeys.add(r)}_applyResolvedOptions(){let t={...d0,...this._sourceMetadataOverrides,...this._baseOpts};if(t.tileSource){let r=t.tileSource;t.getTileData=s=>r.getTileData(s)}this.opts=t,this._maxZoom=typeof this.opts.maxZoom=="number"&&Number.isFinite(this.opts.maxZoom)?Math.floor(this.opts.maxZoom):void 0,this._minZoom=typeof this.opts.minZoom=="number"&&Number.isFinite(this.opts.minZoom)?Math.ceil(this.opts.minZoom):void 0}_getMetadataOverrides(t){if(!t)return{};let r={};return!this._explicitOptionKeys.has("minZoom")&&Number.isFinite(t.minZoom)&&(r.minZoom=t.minZoom),!this._explicitOptionKeys.has("maxZoom")&&Number.isFinite(t.maxZoom)&&(r.maxZoom=t.maxZoom),!this._explicitOptionKeys.has("extent")&&t.boundingBox&&(r.extent=[t.boundingBox[0][0],t.boundingBox[0][1],t.boundingBox[1][0],t.boundingBox[1][1]]),r}_handleTileLoad(t){this.opts.onTileLoad?.(t),this._cacheByteSize=this._getCacheByteSize(),this._resizeCache();for(let r of this._listeners)r.onTileLoad?.(t);this._updateStats()}_handleTileError(t,r){this.opts.onTileError?.(t,r);for(let s of this._listeners)s.onTileError?.(t,r);this._updateStats()}_handleTileUnload(t){this._unloadedTileCount++,this.opts.onTileUnload?.(t);for(let r of this._listeners)r.onTileUnload?.(t);this._updateStats()}_notifyUpdate(){for(let t of this._listeners)t.onUpdate?.()}_notifyError(t){for(let r of this._listeners)r.onError?.(t)}_updateStats(){this._setStatCount("Tiles In Cache",this._cache.size),this._setStatCount("Cache Size",this.cacheByteSize),this._setStatCount("Visible Tiles",this.visibleTiles.length),this._setStatCount("Selected Tiles",this.selectedTiles.length),this._setStatCount("Loading Tiles",this.loadingTiles.length),this._setStatCount("Unloaded Tiles",this._unloadedTileCount),this._setStatCount("Consumers",this._consumers.size);for(let t of this._listeners)t.onStatsChange?.(this.stats)}_setStatCount(t,r){this.stats.get(t).reset().addCount(r)}_getSelectedTilesUnion(){let t=new Set;for(let r of this._consumers.values())for(let s of r.selectedTiles)t.add(s);return t}_getVisibleTilesUnion(){let t=new Set;for(let r of this._consumers.values())for(let s of r.visibleTiles)t.add(s);return t}_touchTile(t,r){this._cache.delete(t),this._cache.set(t,r)}_getCacheByteSize(){let t=0;for(let r of this._cache.values())t+=r.byteLength;return t}_pruneRequests(){let{maxRequests:t=0}=this.opts,r=this._getSelectedTilesUnion(),s=this._getVisibleTilesUnion(),i=[],n=0;for(let o of this._cache.values())o.isLoading&&(n++,!r.has(o)&&!s.has(o)&&i.push(o));for(;t>0&&n>t&&i.length>0;){let o=i.shift();o&&o.abort(),n--}}_rebuildTree(){for(let t of this._cache.values())t.parent=null,t.children&&(t.children.length=0);for(let t of this._cache.values()){let r=this._getNearestAncestor(t);t.parent=r,r?.children&&r.children.push(t)}}_syncTiles(){this._tiles=Array.from(this._cache.values()).sort((t,r)=>t.zoom-r.zoom)}_resizeCache(){let t=this.opts.maxCacheSize??100,r=this.opts.maxCacheByteSize??1/0,s=this._getVisibleTilesUnion(),i=this._getSelectedTilesUnion();if(this._cache.size>t||this._cacheByteSize>r){for(let[o,a]of this._cache)if(!s.has(a)&&!i.has(a)&&(this._cache.delete(o),this._cacheByteSize=this._getCacheByteSize(),this._handleTileUnload(a)),this._cache.size<=t&&this._cacheByteSize<=r)break;this._dirty=!0}this._dirty&&(this._rebuildTree(),this._syncTiles(),this._dirty=!1)}_getNearestAncestor(t){let{_minZoom:r=0}=this,s=t.index;for(;this.getTileZoom(s)>r;){s=this.getParentIndex(s);let i=this.getTile(s);if(i)return i}return null}};function N_(e){return e&&e.length===4?e:void 0}var di={getMetadata:async()=>({name:"",keywords:[],layers:[]}),getImage:async()=>null,debounceTime:0},pi=class e{metadata=null;_opts;_listeners=new Set;_currentRequest=null;_lastAcceptedRequestId=-1;_nextRequestId=0;_loadCounter=0;_timeoutId=null;_abortController=null;_finalized=!1;constructor(t){if(this._opts=this._normalizeOptions(t),!this._opts.imageSource&&(!t.getImage||!t.getMetadata))throw new Error("ImageSet requires either `imageSource` or both `getImage` and `getMetadata`.")}static fromImageSource(t,r={}){return new e({...r,imageSource:t})}get isLoaded(){return this._loadCounter===0&&!!this._currentRequest}get image(){return this._currentRequest?.image||null}get currentRequest(){return this._currentRequest}get imageSource(){return this._opts.imageSource}subscribe(t){return this._listeners.add(t),()=>this._listeners.delete(t)}setOptions(t){let r=this._opts.imageSource,s=this._normalizeOptions({...this._opts,...t}),i=r!==s.imageSource||this._opts.getImage!==s.getImage||this._opts.getMetadata!==s.getMetadata;this._opts=s,i&&(this._cancelScheduledImage(),this.metadata=null,this._currentRequest=null,this._lastAcceptedRequestId=-1,this._nextRequestId=0,this._emitUpdate())}async loadMetadata(){this._startLoading();try{let t=await this._opts.getMetadata();if(this._finalized)return t;this.metadata=t;for(let r of this._listeners)r.onMetadataLoad?.(t);return this._emitUpdate(),t}catch(t){let r=p0(t,"Image metadata request failed");if(!this._finalized)for(let s of this._listeners)s.onMetadataLoadError?.(r);throw r}finally{this._finishLoading()}}requestImage(t,r=this._opts.debounceTime){let s=this._nextRequestId++;return this._cancelScheduledImage(),this._abortActiveRequest(),r>0?this._timeoutId=setTimeout(()=>{this._timeoutId=null,this._loadImage(s,t)},r):this._loadImage(s,t),s}finalize(){this._finalized=!0,this._cancelScheduledImage(),this._abortActiveRequest(),this._listeners.clear()}async _loadImage(t,r){if(!this._finalized){this._startLoading();for(let s of this._listeners)s.onImageLoadStart?.(t,r);try{let s=new AbortController;this._abortController=s;let i=await this._opts.getImage({...r,signal:s.signal});if(this._finalized||t<=this._lastAcceptedRequestId)return;this._lastAcceptedRequestId=t,this._currentRequest={requestId:t,parameters:r,image:i};for(let n of this._listeners)n.onImageLoad?.(this._currentRequest);this._emitUpdate()}catch(s){if(L_(s))return;let i=p0(s,"Image request failed");if(!this._finalized)for(let n of this._listeners)n.onImageLoadError?.(t,i,r)}finally{this._abortController?.signal===r.signal&&(this._abortController=null),this._finishLoading()}}}_normalizeOptions(t){let r=t.imageSource||null;return{...di,...t,imageSource:r,getMetadata:t.getMetadata||(()=>r?r.getMetadata():di.getMetadata()),getImage:t.getImage||(s=>r?r.getImage(s):di.getImage(s)),debounceTime:t.debounceTime??di.debounceTime}}_emitUpdate(){for(let t of this._listeners)t.onUpdate?.()}_startLoading(){let t=this._loadCounter>0;this._loadCounter++,t||(this._emitLoadingStateChange(!0),this._emitUpdate())}_finishLoading(){let t=this._loadCounter>0;this._loadCounter=Math.max(0,this._loadCounter-1),t&&this._loadCounter===0&&(this._emitLoadingStateChange(!1),this._emitUpdate())}_emitLoadingStateChange(t){for(let r of this._listeners)r.onLoadingStateChange?.(t)}_cancelScheduledImage(){this._timeoutId!==null&&(clearTimeout(this._timeoutId),this._timeoutId=null)}_abortActiveRequest(){this._abortController?.abort(),this._abortController=null}};function L_(e){return e instanceof Error&&e.name==="AbortError"}function p0(e,t){return e instanceof Error?e:typeof e=="string"?new Error(e):new Error(t)}var Ur={getMetadata:async()=>({width:0,height:0,bandCount:0,dtype:"uint8"}),getRaster:async()=>({data:new Uint8Array(0),width:0,height:0,bandCount:0,dtype:"uint8"}),debounceTime:0,shouldRefetch:()=>!0},gi=class e{metadata=null;_opts;_listeners=new Set;_currentRequest=null;_lastAcceptedRequestId=-1;_nextRequestId=0;_loadCounter=0;_timeoutId=null;_abortController=null;_finalized=!1;constructor(t){if(this._opts=this._normalizeOptions(t),!this._opts.rasterSource&&(!t.getRaster||!t.getMetadata))throw new Error("RasterSet requires either `rasterSource` or both `getRaster` and `getMetadata`.")}static fromRasterSource(t,r={}){return new e({...r,rasterSource:t})}static fromCallbacks(t){return new e(t)}get isLoaded(){return this._loadCounter===0&&!!this._currentRequest}get raster(){return this._currentRequest?.raster||null}get currentRequest(){return this._currentRequest}get rasterSource(){return this._opts.rasterSource}subscribe(t){return this._listeners.add(t),()=>this._listeners.delete(t)}setOptions(t){let r=this._opts.rasterSource,s=this._normalizeOptions({...this._opts,...t}),i=r!==s.rasterSource||this._opts.getRaster!==s.getRaster||this._opts.getMetadata!==s.getMetadata;this._opts=s,i&&(this._cancelScheduledRaster(),this.metadata=null,this._currentRequest=null,this._lastAcceptedRequestId=-1,this._nextRequestId=0,this._emitUpdate())}async loadMetadata(){this._startLoading();try{let t=await this._opts.getMetadata();if(this._finalized)return t;this.metadata=t;for(let r of this._listeners)r.onMetadataLoad?.(t);return this._emitUpdate(),t}catch(t){let r=g0(t,"Raster metadata request failed");if(!this._finalized)for(let s of this._listeners)s.onMetadataLoadError?.(r);throw r}finally{this._finishLoading()}}requestRaster(t,r=this._opts.debounceTime){if(!this.shouldRefetchRaster(t))return this._currentRequest?.requestId??-1;let s=this._nextRequestId++;return this._cancelScheduledRaster(),r>0?this._timeoutId=setTimeout(()=>{this._timeoutId=null,this._loadRaster(s,t)},r):this._loadRaster(s,t),s}shouldRefetchRaster(t){return this._opts.shouldRefetch({currentRequest:this._currentRequest,metadata:this.metadata,nextParameters:t})}finalize(){this._finalized=!0,this._cancelScheduledRaster(),this._abortActiveRequest(),this._listeners.clear()}async _loadRaster(t,r){if(!this._finalized){this._startLoading();for(let s of this._listeners)s.onRasterLoadStart?.(t,r);try{let s=new AbortController;this._abortController=s;let i=await this._opts.getRaster(G_(r,s.signal));if(this._finalized||s.signal.aborted||t<=this._lastAcceptedRequestId)return;this._lastAcceptedRequestId=t,this._currentRequest={requestId:t,parameters:r,raster:i};for(let n of this._listeners)n.onRasterLoad?.(this._currentRequest);this._emitUpdate()}catch(s){if(z_(s))return;let i=g0(s,"Raster request failed");if(!this._finalized)for(let n of this._listeners)n.onRasterLoadError?.(t,i,r)}finally{this._abortController=null,this._finishLoading()}}}_normalizeOptions(t){let r=t.rasterSource||null;return{...Ur,...t,rasterSource:r,getMetadata:t.getMetadata||(()=>r?r.getMetadata():Ur.getMetadata()),getRaster:t.getRaster||(s=>r?r.getRaster(s):Ur.getRaster(s)),debounceTime:t.debounceTime??Ur.debounceTime,shouldRefetch:t.shouldRefetch||(s=>Ur.shouldRefetch(s))}}_emitUpdate(){for(let t of this._listeners)t.onUpdate?.()}_emitLoadingStateChange(t){for(let r of this._listeners)r.onLoadingStateChange?.(t)}_startLoading(){let t=this._loadCounter>0;this._loadCounter++,t||(this._emitLoadingStateChange(!0),this._emitUpdate())}_finishLoading(){let t=this._loadCounter>0;this._loadCounter=Math.max(0,this._loadCounter-1),t&&this._loadCounter===0&&(this._emitLoadingStateChange(!1),this._emitUpdate())}_cancelScheduledRaster(){this._timeoutId!==null&&(clearTimeout(this._timeoutId),this._timeoutId=null)}_abortActiveRequest(){this._abortController?.abort(),this._abortController=null}};function G_(e,t){let r=Array.isArray(e)?e.slice():Object.create(Object.getPrototypeOf(e),Object.getOwnPropertyDescriptors(e));return Object.defineProperty(r,"signal",{configurable:!0,enumerable:!0,value:t,writable:!0}),r}function g0(e,t){return e instanceof Error?e:typeof e=="string"?new Error(e):new Error(t)}function z_(e){return e instanceof Error&&e.name==="AbortError"}var Ze=class{header;parent;children=[];childrenLoaded=!1;childrenPromise=null;selected=!1;viewportIds=[];content=null;contentAvailable=!1;contentFailed=!1;isContentLoading=!1;constructor(t,r=null){this.header=t,this.parent=r}get id(){return this.header.id}get level(){return this.header.level}get pointCount(){return this.header.pointCount}get geometricError(){return this.header.geometricError}get boundingVolume(){return this.header.boundingVolume}setSelected(t){this.selected=!0,this.viewportIds.includes(t)||this.viewportIds.push(t)}clearSelection(){this.selected=!1,this.viewportIds=[]}};var q_={debounceTime:0,minimumNodePixelSize:150,maximumScreenSpaceError:1,lodSelectionMetricType:"maxScreenThresholdSQ",densityThreshold:1,pointBudget:2e6,maxDepth:Number.POSITIVE_INFINITY,onTileLoad:()=>{},onTileError:()=>{},onTraversalComplete:e=>e,onUpdate:()=>{}},_i=64,Mi=class{dataSource;options;root=null;cartographicCenter=null;zoom=1;boundingVolume=null;visibleTilesCount=0;frameNumberValue=0;pendingCount=0;lastUpdatedViewports=null;updatePromise=null;tilesMap=new Map;constructor(t,r={}){this.dataSource=t,this.options={...q_,...r},this.tilesetInitializationPromise=this.initialize()}tilesetInitializationPromise;get isReady(){return this.dataSource.isReady}get frameNumber(){return this.frameNumberValue}get tiles(){return Array.from(this.tilesMap.values())}isLoaded(){return this.frameNumberValue>0&&this.pendingCount===0&&this.selectedTiles.every(t=>t.contentAvailable||t.contentFailed)}selectedTiles=[];update(t=null){this.selectTiles(t).catch(()=>{})}destroy(){this.selectedTiles=[],this.tilesMap.clear(),this.root=null,this.cartographicCenter=null,this.boundingVolume=null,this.visibleTilesCount=0,this.pendingCount=0,this.lastUpdatedViewports=null,this.updatePromise=null}async initialize(){await this.dataSource.initialize();let t=await this.dataSource.getRootTile();this.root=this.getOrCreateTile(t,null);let r=await this.dataSource.getViewState?.();this.boundingVolume=r?.boundingVolume||this.root.boundingVolume;let s=r?.cartographicCenter||this.root.boundingVolume.center;this.cartographicCenter=new _(s),this.zoom=r?.zoom||this.estimateZoom(this.boundingVolume)}async selectTiles(t=null){return await this.tilesetInitializationPromise,t&&(this.lastUpdatedViewports=t),this.updatePromise||(this.updatePromise=new Promise((r,s)=>{setTimeout(()=>{this.doSelectTiles().then(()=>r(this.frameNumberValue)).catch(s).finally(()=>{this.updatePromise=null})},this.options.debounceTime)})),this.updatePromise}async doSelectTiles(){if(!this.root||!this.lastUpdatedViewports)return;let t=new Set(this.selectedTiles.map(a=>a.id));for(let a of this.tilesMap.values())a.clearSelection();this.frameNumberValue++;let r=Array.isArray(this.lastUpdatedViewports)?this.lastUpdatedViewports:[this.lastUpdatedViewports],s=new Map,i=new Set,n=0;for(let a of r){let h=this.getTraversalContext(a);n=await this.traverseTiles(h,s,n,i)}this.visibleTilesCount=i.size,this.selectedTiles=this.options.onTraversalComplete(Array.from(s.values()));for(let a of this.selectedTiles)this.loadTile(a).catch(()=>{});let o=new Set(this.selectedTiles.map(a=>a.id));this.haveSameIds(t,o)||this.options.onUpdate()}async traverseTiles(t,r,s,i){if(!this.root)return s;let n=s,o=[{tile:this.root,weight:this.estimateScreenRadius(this.root,t.viewport)}];for(;o.length>0;){o.sort((u,f)=>f.weight-u.weight);let a=o.shift();if(!a)break;let{tile:h,weight:c}=a;if(!this.isVisible(h,t))continue;if(i.add(h.id),!r.has(h.id)&&h.pointCount>0){if(n>0&&n+h.pointCount>this.options.pointBudget)break;r.set(h.id,h),n+=h.pointCount}if(r.has(h.id)&&h.setSelected(t.viewport.id),!this.shouldRefine(h,c))continue;let l=await this.getVisibleChildren(h,t);l.length>0&&o.push(...l)}return n}shouldRefine(t,r){if(t.level<this.options.maxDepth&&Number.isFinite(r)&&(t.header.lodSelectionMetricType||this.options.lodSelectionMetricType)==="density-threshold"){let s=Math.max(1,Math.PI*r*r),i=t.pointCount/s,n=t.header.lodThreshold||this.options.densityThreshold;return i<n}return t.level<this.options.maxDepth&&Number.isFinite(r)&&r>=this.options.minimumNodePixelSize}getTraversalContext(t){let r=this.getCullingVolume(t);return{viewport:t,cullingVolume:this.shouldUseCullingVolume(t,r)?r:null}}isVisible(t,r){if(r.cullingVolume){let i=this.getCommonSpaceBoundingSphere(t.boundingVolume,r.viewport);if(i)return this.isBoundingSphereInsideCullingVolume(i,r.cullingVolume)}let s=this.getProjectedFootprint(t.boundingVolume,r.viewport);return s?this.isProjectedFootprintVisible(s,r.viewport):!1}shouldUseCullingVolume(t,r){if(!this.root||!r)return!1;let s=this.getCommonSpaceBoundingSphere(this.root.boundingVolume,t);if(!s)return!1;if(this.isBoundingSphereInsideCullingVolume(s,r))return!0;let i=this.getProjectedFootprint(this.root.boundingVolume,t);return!i||!this.isProjectedFootprintVisible(i,t)}isBoundingSphereInsideCullingVolume(t,r){return r.computeVisibilityWithPlaneMask(t,tt.MASK_INDETERMINATE)!==tt.MASK_OUTSIDE}isProjectedFootprintVisible(t,r){return!(t.x+t.radius<-_i||t.x-t.radius>r.width+_i||t.y+t.radius<-_i||t.y-t.radius>r.height+_i)}estimateScreenRadius(t,r){let s=this.getProjectedFootprint(t.boundingVolume,r);return s?s.radius:0}projectBounds(t,r){let s=this.getBoundingVolumeCorners(t),i=Number.POSITIVE_INFINITY,n=Number.POSITIVE_INFINITY,o=Number.NEGATIVE_INFINITY,a=Number.NEGATIVE_INFINITY;try{for(let h of s){let[c,l]=r.project(h);!Number.isFinite(c)||!Number.isFinite(l)||(i=Math.min(i,c),n=Math.min(n,l),o=Math.max(o,c),a=Math.max(a,l))}}catch{return null}return!Number.isFinite(i)||!Number.isFinite(n)||!Number.isFinite(o)||!Number.isFinite(a)?null:{minX:i,minY:n,maxX:o,maxY:a}}getProjectedFootprint(t,r){let s=Number.NaN,i=Number.NaN;try{[s,i]=r.project(t.center)}catch{return null}if(!Number.isFinite(s)||!Number.isFinite(i))return null;let n=this.getBoundingVolumeCorners(t),o=0;try{for(let a of n){let[h,c]=r.project(a);!Number.isFinite(h)||!Number.isFinite(c)||(o=Math.max(o,Math.hypot(h-s,c-i)))}}catch{return null}if(o===0){let a=this.projectBounds(t,r);a&&(o=Math.max(a.maxX-a.minX,a.maxY-a.minY)/2)}return{x:s,y:i,radius:o}}async getVisibleChildren(t,r){return t.level>=this.options.maxDepth?[]:(await this.getChildren(t)).map(i=>({tile:i,weight:this.estimateScreenRadius(i,r.viewport)})).filter(i=>this.isVisible(i.tile,r))}async getChildren(t){if(t.childrenLoaded)return t.children;if(!t.childrenPromise){let r=this.dataSource.getChildren(t.header).then(s=>s.map(i=>this.getOrCreateTile(i,t))).then(s=>(t.children=s,t.childrenLoaded=!0,s));t.childrenPromise=r.finally(()=>{t.childrenPromise===r&&(t.childrenPromise=null)})}return t.childrenPromise}getOrCreateTile(t,r){let s=this.tilesMap.get(t.id);if(s)return s.header=t,r&&s.parent!==r&&(s.parent=r),s;let i=new Ze(t,r);return this.tilesMap.set(t.id,i),r&&!r.children.find(n=>n.id===i.id)&&r.children.push(i),i}async loadTile(t){if(!(t.contentAvailable||t.isContentLoading||t.contentFailed)){t.isContentLoading=!0,this.pendingCount++;try{let r=await this.dataSource.loadTileContent(t.header);t.content=r,t.contentAvailable=!0,r&&this.options.onTileLoad(t)}catch(r){t.contentFailed=!0,this.options.onTileError(t,r)}finally{t.isContentLoading=!1,this.pendingCount--}}}estimateZoom(t){if(!t||t.coordinateFrame==="cartesian")return 1;let[r,s]=t.cartographicBounds,i=t.coversFullLongitude?360:t.wrapsDateline?360-Math.abs(s[0]-r[0]):Math.abs(s[0]-r[0]),n=Math.max(i,1e-6);return Math.max(1,Math.round(Math.log2(360/n)))}haveSameIds(t,r){if(t.size!==r.size)return!1;for(let s of t)if(!r.has(s))return!1;return!0}getBoundingVolumeCorners(t){let[r,s]=t.cartographicBounds,i=t.coversFullLongitude?[[-180,180]]:t.wrapsDateline?[[r[0],180],[-180,s[0]]]:[[r[0],s[0]]],n=[],o=360-Math.abs(s[0]-r[0]),a=r[0]+o/2;for(let[h,c]of i){let l=d=>{if(!t.wrapsDateline)return d;let m=d;for(;m-a>180;)m-=360;for(;m-a<-180;)m+=360;return m},u=l(h),f=l(c);n.push([u,r[1],r[2]||0],[u,r[1],s[2]||0],[u,s[1],r[2]||0],[u,s[1],s[2]||0],[f,r[1],r[2]||0],[f,r[1],s[2]||0],[f,s[1],r[2]||0],[f,s[1],s[2]||0])}return n}getCullingVolume(t){let r=t.getFrustumPlanes?.bind(t);if(!r)return null;let s=r(),i=["left","right","bottom","top","near","far"],n=[];for(let o of i){let a=s[o];if(!a)return null;n.push(new $(a.normal,-a.distance))}return new tt(n)}getCommonSpaceBoundingSphere(t,r){let s=r.projectPosition?.bind(r);if(!s)return null;let i=this.getBoundingVolumeCorners(t),n=Number.POSITIVE_INFINITY,o=Number.POSITIVE_INFINITY,a=Number.POSITIVE_INFINITY,h=Number.NEGATIVE_INFINITY,c=Number.NEGATIVE_INFINITY,l=Number.NEGATIVE_INFINITY;try{for(let u of i){let[f,d,m=0]=s(u);!Number.isFinite(f)||!Number.isFinite(d)||!Number.isFinite(m)||(n=Math.min(n,f),o=Math.min(o,d),a=Math.min(a,m),h=Math.max(h,f),c=Math.max(c,d),l=Math.max(l,m))}}catch{return null}return!Number.isFinite(n)||!Number.isFinite(o)||!Number.isFinite(a)||!Number.isFinite(h)||!Number.isFinite(c)||!Number.isFinite(l)?null:new rt().fromCornerPoints([n,o,a],[h,c,l])}};return q0(Vr);})();
10
+ northing meters`+e;var f=u/2,m=0,d=0,g,_,M,y,E;return f>0&&(g=1e5/Math.pow(10,f),_=e.substring(n,n+f),m=parseFloat(_)*g,M=e.substring(n+f),d=parseFloat(M)*g),y=m+c,E=d+l,{easting:y,northing:E,zoneLetter:a,zoneNumber:o,accuracy:g}}function Rm(e,t){for(var s=wc.charCodeAt(t-1),i=1e5,r=!1;s!==e.charCodeAt(0);){if(s++,s===ut&&s++,s===wt&&s++,s>us){if(r)throw"Bad character: "+e;s=Re,r=!0}i+=1e5}return i}function Cm(e,t){if(e>"V")throw"MGRSPoint given invalid Northing "+e;for(var s=Tc.charCodeAt(t-1),i=0,r=!1;s!==e.charCodeAt(0);){if(s++,s===ut&&s++,s===wt&&s++,s>ls){if(r)throw"Bad character: "+e;s=Re,r=!0}i+=1e5}return i}function Am(e){var t;switch(e){case"C":t=11e5;break;case"D":t=2e6;break;case"E":t=28e5;break;case"F":t=37e5;break;case"G":t=46e5;break;case"H":t=55e5;break;case"J":t=64e5;break;case"K":t=73e5;break;case"L":t=82e5;break;case"M":t=91e5;break;case"N":t=0;break;case"P":t=8e5;break;case"Q":t=17e5;break;case"R":t=26e5;break;case"S":t=35e5;break;case"T":t=44e5;break;case"U":t=53e5;break;case"V":t=62e5;break;case"W":t=7e6;break;case"X":t=79e5;break;default:t=-1}if(t>=0)return t;throw"Invalid zone letter: "+e}function Ce(e,t,s){if(!(this instanceof Ce))return new Ce(e,t,s);if(Array.isArray(e))this.x=e[0],this.y=e[1],this.z=e[2]||0;else if(typeof e=="object")this.x=e.x,this.y=e.y,this.z=e.z||0;else if(typeof e=="string"&&typeof t>"u"){var i=e.split(",");this.x=parseFloat(i[0]),this.y=parseFloat(i[1]),this.z=parseFloat(i[2])||0}else this.x=e,this.y=t,this.z=s||0;console.warn("proj4.Point will be removed in version 3, use proj4.toPoint")}Ce.fromMGRS=function(e){return new Ce(En(e))};Ce.prototype.toMGRS=function(e){return vn([this.x,this.y],e)};var Cc=Ce;var Im=1,Om=.25,Ac=.046875,Ic=.01953125,Oc=.01068115234375,Nm=.75,Lm=.46875,Gm=.013020833333333334,zm=.007120768229166667,qm=.3645833333333333,Bm=.005696614583333333,Dm=.3076171875;function Ae(e){var t=[];t[0]=Im-e*(Om+e*(Ac+e*(Ic+e*Oc))),t[1]=e*(Nm-e*(Ac+e*(Ic+e*Oc)));var s=e*e;return t[2]=s*(Lm-e*(Gm+e*zm)),s*=e,t[3]=s*(qm-e*Bm),t[4]=s*e*Dm,t}function qt(e,t,s,i){return s*=t,t*=t,i[0]*e-s*(i[1]+t*(i[2]+t*(i[3]+t*i[4])))}var Fm=20;function Ie(e,t,s){for(var i=1/(1-t),r=e,n=Fm;n;--n){var o=Math.sin(r),a=1-t*o*o;if(a=(qt(r,o,Math.cos(r),s)-e)*(a*Math.sqrt(a))*i,r-=a,Math.abs(a)<v)return r}return r}function Um(){this.x0=this.x0!==void 0?this.x0:0,this.y0=this.y0!==void 0?this.y0:0,this.long0=this.long0!==void 0?this.long0:0,this.lat0=this.lat0!==void 0?this.lat0:0,this.es&&(this.en=Ae(this.es),this.ml0=qt(this.lat0,Math.sin(this.lat0),Math.cos(this.lat0),this.en))}function km(e){var t=e.x,s=e.y,i=S(t-this.long0,this.over),r,n,o,a=Math.sin(s),h=Math.cos(s);if(this.es){var l=h*i,u=Math.pow(l,2),f=this.ep2*Math.pow(h,2),m=Math.pow(f,2),d=Math.abs(h)>v?Math.tan(s):0,g=Math.pow(d,2),_=Math.pow(g,2);r=1-this.es*Math.pow(a,2),l=l/Math.sqrt(r);var M=qt(s,a,h,this.en);n=this.a*(this.k0*l*(1+u/6*(1-g+f+u/20*(5-18*g+_+14*f-58*g*f+u/42*(61+179*_-_*g-479*g)))))+this.x0,o=this.a*(this.k0*(M-this.ml0+a*i*l/2*(1+u/12*(5-g+9*f+4*m+u/30*(61+_-58*g+270*f-330*g*f+u/56*(1385+543*_-_*g-3111*g))))))+this.y0}else{var c=h*Math.sin(i);if(Math.abs(Math.abs(c)-1)<v)return 93;if(n=.5*this.a*this.k0*Math.log((1+c)/(1-c))+this.x0,o=h*Math.cos(i)/Math.sqrt(1-Math.pow(c,2)),c=Math.abs(o),c>=1){if(c-1>v)return 93;o=0}else o=Math.acos(o);s<0&&(o=-o),o=this.a*this.k0*(o-this.lat0)+this.y0}return e.x=n,e.y=o,e}function Vm(e){var t,s,i,r,n=(e.x-this.x0)*(1/this.a),o=(e.y-this.y0)*(1/this.a);if(this.es)if(t=this.ml0+o/this.k0,s=Ie(t,this.es,this.en),Math.abs(s)<x){var u=Math.sin(s),f=Math.cos(s),m=Math.abs(f)>v?Math.tan(s):0,d=this.ep2*Math.pow(f,2),g=Math.pow(d,2),_=Math.pow(m,2),M=Math.pow(_,2);t=1-this.es*Math.pow(u,2);var y=n*Math.sqrt(t)/this.k0,E=Math.pow(y,2);t=t*m,i=s-t*E/(1-this.es)*.5*(1-E/12*(5+3*_-9*d*_+d-4*g-E/30*(61+90*_-252*d*_+45*M+46*d-E/56*(1385+3633*_+4095*M+1574*M*_)))),r=S(this.long0+y*(1-E/6*(1+2*_+d-E/20*(5+28*_+24*M+8*d*_+6*d-E/42*(61+662*_+1320*M+720*M*_))))/f,this.over)}else i=x*zt(o),r=0;else{var a=Math.exp(n/this.k0),h=.5*(a-1/a),c=this.lat0+o/this.k0,l=Math.cos(c);t=Math.sqrt((1-Math.pow(l,2))/(1+Math.pow(h,2))),i=Math.asin(t),o<0&&(i=-i),h===0&&l===0?r=0:r=S(Math.atan2(h,l)+this.long0,this.over)}return e.x=r,e.y=i,e}var jm=["Fast_Transverse_Mercator","Fast Transverse Mercator"],Oe={init:Um,forward:km,inverse:Vm,names:jm};function Bi(e){var t=Math.exp(e);return t=(t-1/t)/2,t}function Z(e,t){e=Math.abs(e),t=Math.abs(t);var s=Math.max(e,t),i=Math.min(e,t)/(s||1);return s*Math.sqrt(1+Math.pow(i,2))}function Nc(e){var t=1+e,s=t-1;return s===0?e:e*Math.log(t)/s}function Lc(e){var t=Math.abs(e);return t=Nc(t*(1+t/(Z(1,t)+1))),e<0?-t:t}function Di(e,t){for(var s=2*Math.cos(2*t),i=e.length-1,r=e[i],n=0,o;--i>=0;)o=-n+s*r+e[i],n=r,r=o;return t+o*Math.sin(2*t)}function Gc(e,t){for(var s=2*Math.cos(t),i=e.length-1,r=e[i],n=0,o;--i>=0;)o=-n+s*r+e[i],n=r,r=o;return Math.sin(t)*o}function zc(e){var t=Math.exp(e);return t=(t+1/t)/2,t}function Tn(e,t,s){for(var i=Math.sin(t),r=Math.cos(t),n=Bi(s),o=zc(s),a=2*r*o,h=-2*i*n,c=e.length-1,l=e[c],u=0,f=0,m=0,d,g;--c>=0;)d=f,g=u,f=l,u=m,l=-d+a*f-h*u+e[c],m=-g+h*f+a*u;return a=i*o,h=r*n,[a*l-h*m,a*m+h*l]}function Wm(){if(!this.approx&&(isNaN(this.es)||this.es<=0))throw new Error('Incorrect elliptical usage. Try using the +approx option in the proj string, or PROJECTION["Fast_Transverse_Mercator"] in the WKT.');this.approx&&(Oe.init.apply(this),this.forward=Oe.forward,this.inverse=Oe.inverse),this.x0=this.x0!==void 0?this.x0:0,this.y0=this.y0!==void 0?this.y0:0,this.long0=this.long0!==void 0?this.long0:0,this.lat0=this.lat0!==void 0?this.lat0:0,this.k0=this.k0!==void 0?this.k0:1,this.cgb=[],this.cbg=[],this.utg=[],this.gtu=[];var e=this.es/(1+Math.sqrt(1-this.es)),t=e/(2-e),s=t;this.cgb[0]=t*(2+t*(-2/3+t*(-2+t*(116/45+t*(26/45+t*(-2854/675)))))),this.cbg[0]=t*(-2+t*(2/3+t*(4/3+t*(-82/45+t*(32/45+t*(4642/4725)))))),s=s*t,this.cgb[1]=s*(7/3+t*(-8/5+t*(-227/45+t*(2704/315+t*(2323/945))))),this.cbg[1]=s*(5/3+t*(-16/15+t*(-13/9+t*(904/315+t*(-1522/945))))),s=s*t,this.cgb[2]=s*(56/15+t*(-136/35+t*(-1262/105+t*(73814/2835)))),this.cbg[2]=s*(-26/15+t*(34/21+t*(8/5+t*(-12686/2835)))),s=s*t,this.cgb[3]=s*(4279/630+t*(-332/35+t*(-399572/14175))),this.cbg[3]=s*(1237/630+t*(-12/5+t*(-24832/14175))),s=s*t,this.cgb[4]=s*(4174/315+t*(-144838/6237)),this.cbg[4]=s*(-734/315+t*(109598/31185)),s=s*t,this.cgb[5]=s*(601676/22275),this.cbg[5]=s*(444337/155925),s=Math.pow(t,2),this.Qn=this.k0/(1+t)*(1+s*(1/4+s*(1/64+s/256))),this.utg[0]=t*(-.5+t*(2/3+t*(-37/96+t*(1/360+t*(81/512+t*(-96199/604800)))))),this.gtu[0]=t*(.5+t*(-2/3+t*(5/16+t*(41/180+t*(-127/288+t*(7891/37800)))))),this.utg[1]=s*(-1/48+t*(-1/15+t*(437/1440+t*(-46/105+t*(1118711/3870720))))),this.gtu[1]=s*(13/48+t*(-3/5+t*(557/1440+t*(281/630+t*(-1983433/1935360))))),s=s*t,this.utg[2]=s*(-17/480+t*(37/840+t*(209/4480+t*(-5569/90720)))),this.gtu[2]=s*(61/240+t*(-103/140+t*(15061/26880+t*(167603/181440)))),s=s*t,this.utg[3]=s*(-4397/161280+t*(11/504+t*(830251/7257600))),this.gtu[3]=s*(49561/161280+t*(-179/168+t*(6601661/7257600))),s=s*t,this.utg[4]=s*(-4583/161280+t*(108847/3991680)),this.gtu[4]=s*(34729/80640+t*(-3418889/1995840)),s=s*t,this.utg[5]=s*(-20648693/638668800),this.gtu[5]=s*(212378941/319334400);var i=Di(this.cbg,this.lat0);this.Zb=-this.Qn*(i+Gc(this.gtu,2*i))}function Hm(e){var t=S(e.x-this.long0,this.over),s=e.y;s=Di(this.cbg,s);var i=Math.sin(s),r=Math.cos(s),n=Math.sin(t),o=Math.cos(t);s=Math.atan2(i,o*r),t=Math.atan2(n*r,Z(i,r*o)),t=Lc(Math.tan(t));var a=Tn(this.gtu,2*s,2*t);s=s+a[0],t=t+a[1];var h,c;return Math.abs(t)<=2.623395162778?(h=this.a*(this.Qn*t)+this.x0,c=this.a*(this.Qn*s+this.Zb)+this.y0):(h=1/0,c=1/0),e.x=h,e.y=c,e}function Ym(e){var t=(e.x-this.x0)*(1/this.a),s=(e.y-this.y0)*(1/this.a);s=(s-this.Zb)/this.Qn,t=t/this.Qn;var i,r;if(Math.abs(t)<=2.623395162778){var n=Tn(this.utg,2*s,2*t);s=s+n[0],t=t+n[1],t=Math.atan(Bi(t));var o=Math.sin(s),a=Math.cos(s),h=Math.sin(t),c=Math.cos(t);s=Math.atan2(o*c,Z(h,c*a)),t=Math.atan2(h,c*a),i=S(t+this.long0,this.over),r=Di(this.cgb,s)}else i=1/0,r=1/0;return e.x=i,e.y=r,e}var Zm=["Extended_Transverse_Mercator","Extended Transverse Mercator","etmerc","Transverse_Mercator","Transverse Mercator","Gauss Kruger","Gauss_Kruger","tmerc"],Ne={init:Wm,forward:Hm,inverse:Ym,names:Zm};function qc(e,t){if(e===void 0){if(e=Math.floor((S(t)+Math.PI)*30/Math.PI)+1,e<0)return 0;if(e>60)return 60}return e}var Xm="etmerc";function $m(){var e=qc(this.zone,this.long0);if(e===void 0)throw new Error("unknown utm zone");this.lat0=0,this.long0=(6*Math.abs(e)-183)*B,this.x0=5e5,this.y0=this.utmSouth?1e7:0,this.k0=.9996,Ne.init.apply(this),this.forward=Ne.forward,this.inverse=Ne.inverse}var Qm=["Universal Transverse Mercator System","utm"],Bc={init:$m,names:Qm,dependsOn:Xm};function Fi(e,t){return Math.pow((1-e)/(1+e),t)}var Km=20;function Jm(){var e=Math.sin(this.lat0),t=Math.cos(this.lat0);t*=t,this.rc=Math.sqrt(1-this.es)/(1-this.es*e*e),this.C=Math.sqrt(1+this.es*t*t/(1-this.es)),this.phic0=Math.asin(e/this.C),this.ratexp=.5*this.C*this.e,this.K=Math.tan(.5*this.phic0+O)/(Math.pow(Math.tan(.5*this.lat0+O),this.C)*Fi(this.e*e,this.ratexp))}function t1(e){var t=e.x,s=e.y;return e.y=2*Math.atan(this.K*Math.pow(Math.tan(.5*s+O),this.C)*Fi(this.e*Math.sin(s),this.ratexp))-x,e.x=this.C*t,e}function e1(e){for(var t=1e-14,s=e.x/this.C,i=e.y,r=Math.pow(Math.tan(.5*i+O)/this.K,1/this.C),n=Km;n>0&&(i=2*Math.atan(r*Fi(this.e*Math.sin(e.y),-.5*this.e))-x,!(Math.abs(i-e.y)<t));--n)e.y=i;return n?(e.x=s,e.y=i,e):null}var s1=["gauss"],Ui={init:Jm,forward:t1,inverse:e1,names:s1};function i1(){Ui.init.apply(this),this.rc&&(this.sinc0=Math.sin(this.phic0),this.cosc0=Math.cos(this.phic0),this.R2=2*this.rc,this.title||(this.title="Oblique Stereographic Alternative"))}function r1(e){var t,s,i,r;return e.x=S(e.x-this.long0,this.over),Ui.forward.apply(this,[e]),t=Math.sin(e.y),s=Math.cos(e.y),i=Math.cos(e.x),r=this.k0*this.R2/(1+this.sinc0*t+this.cosc0*s*i),e.x=r*s*Math.sin(e.x),e.y=r*(this.cosc0*t-this.sinc0*s*i),e.x=this.a*e.x+this.x0,e.y=this.a*e.y+this.y0,e}function n1(e){var t,s,i,r,n;if(e.x=(e.x-this.x0)/this.a,e.y=(e.y-this.y0)/this.a,e.x/=this.k0,e.y/=this.k0,n=Z(e.x,e.y)){var o=2*Math.atan2(n,this.R2);t=Math.sin(o),s=Math.cos(o),r=Math.asin(s*this.sinc0+e.y*t*this.cosc0/n),i=Math.atan2(e.x*t,n*this.cosc0*s-e.y*this.sinc0*t)}else r=this.phic0,i=0;return e.x=i,e.y=r,Ui.inverse.apply(this,[e]),e.x=S(e.x+this.long0,this.over),e}var o1=["Stereographic_North_Pole","Oblique_Stereographic","sterea","Oblique Stereographic Alternative","Double_Stereographic"],Dc={init:i1,forward:r1,inverse:n1,names:o1};function bn(e,t,s){return t*=s,Math.tan(.5*(x+e))*Math.pow((1-t)/(1+t),.5*s)}function a1(){this.x0=this.x0||0,this.y0=this.y0||0,this.lat0=this.lat0||0,this.long0=this.long0||0,this.coslat0=Math.cos(this.lat0),this.sinlat0=Math.sin(this.lat0),this.sphere?!isNaN(this.lat_ts)&&Math.abs(this.coslat0)<=v&&(this.k0=.5*(1+zt(this.lat0)*Math.sin(this.lat_ts))):(Math.abs(this.coslat0)<=v&&(this.lat0>0?this.con=1:this.con=-1),this.cons=Math.sqrt(Math.pow(1+this.e,1+this.e)*Math.pow(1-this.e,1-this.e)),!isNaN(this.lat_ts)&&Math.abs(this.coslat0)<=v&&Math.abs(Math.cos(this.lat_ts))>v&&(this.k0=.5*this.cons*rt(this.e,Math.sin(this.lat_ts),Math.cos(this.lat_ts))/ht(this.e,this.con*this.lat_ts,this.con*Math.sin(this.lat_ts))),this.ms1=rt(this.e,this.sinlat0,this.coslat0),this.X0=2*Math.atan(bn(this.lat0,this.sinlat0,this.e))-x,this.cosX0=Math.cos(this.X0),this.sinX0=Math.sin(this.X0))}function h1(e){var t=e.x,s=e.y,i=Math.sin(s),r=Math.cos(s),n,o,a,h,c,l,u=S(t-this.long0,this.over);return Math.abs(Math.abs(t-this.long0)-Math.PI)<=v&&Math.abs(s+this.lat0)<=v?(e.x=NaN,e.y=NaN,e):this.sphere?(n=2*this.k0/(1+this.sinlat0*i+this.coslat0*r*Math.cos(u)),e.x=this.a*n*r*Math.sin(u)+this.x0,e.y=this.a*n*(this.coslat0*i-this.sinlat0*r*Math.cos(u))+this.y0,e):(o=2*Math.atan(bn(s,i,this.e))-x,h=Math.cos(o),a=Math.sin(o),Math.abs(this.coslat0)<=v?(c=ht(this.e,s*this.con,this.con*i),l=2*this.a*this.k0*c/this.cons,e.x=this.x0+l*Math.sin(t-this.long0),e.y=this.y0-this.con*l*Math.cos(t-this.long0),e):(Math.abs(this.sinlat0)<v?(n=2*this.a*this.k0/(1+h*Math.cos(u)),e.y=n*a):(n=2*this.a*this.k0*this.ms1/(this.cosX0*(1+this.sinX0*a+this.cosX0*h*Math.cos(u))),e.y=n*(this.cosX0*a-this.sinX0*h*Math.cos(u))+this.y0),e.x=n*h*Math.sin(u)+this.x0,e))}function c1(e){e.x-=this.x0,e.y-=this.y0;var t,s,i,r,n,o=Math.sqrt(e.x*e.x+e.y*e.y);if(this.sphere){var a=2*Math.atan(o/(2*this.a*this.k0));return t=this.long0,s=this.lat0,o<=v?(e.x=t,e.y=s,e):(s=Math.asin(Math.cos(a)*this.sinlat0+e.y*Math.sin(a)*this.coslat0/o),Math.abs(this.coslat0)<v?this.lat0>0?t=S(this.long0+Math.atan2(e.x,-1*e.y),this.over):t=S(this.long0+Math.atan2(e.x,e.y),this.over):t=S(this.long0+Math.atan2(e.x*Math.sin(a),o*this.coslat0*Math.cos(a)-e.y*this.sinlat0*Math.sin(a)),this.over),e.x=t,e.y=s,e)}else if(Math.abs(this.coslat0)<=v){if(o<=v)return s=this.lat0,t=this.long0,e.x=t,e.y=s,e;e.x*=this.con,e.y*=this.con,i=o*this.cons/(2*this.a*this.k0),s=this.con*Wt(this.e,i),t=this.con*S(this.con*this.long0+Math.atan2(e.x,-1*e.y),this.over)}else r=2*Math.atan(o*this.cosX0/(2*this.a*this.k0*this.ms1)),t=this.long0,o<=v?n=this.X0:(n=Math.asin(Math.cos(r)*this.sinX0+e.y*Math.sin(r)*this.cosX0/o),t=S(this.long0+Math.atan2(e.x*Math.sin(r),o*this.cosX0*Math.cos(r)-e.y*this.sinX0*Math.sin(r)),this.over)),s=-1*Wt(this.e,Math.tan(.5*(x+n)));return e.x=t,e.y=s,e}var l1=["stere","Stereographic_South_Pole","Polar_Stereographic_variant_A","Polar_Stereographic_variant_B","Polar_Stereographic"],Fc={init:a1,forward:h1,inverse:c1,names:l1,ssfn_:bn};function u1(){this.k0||(this.k0=1);var e=this.lat0;this.lambda0=this.long0;var t=Math.sin(e),s=this.a,i=this.rf,r=1/i,n=2*r-Math.pow(r,2),o=this.e=Math.sqrt(n);this.R=this.k0*s*Math.sqrt(1-n)/(1-n*Math.pow(t,2)),this.alpha=Math.sqrt(1+n/(1-n)*Math.pow(Math.cos(e),4)),this.b0=Math.asin(t/this.alpha);var a=Math.log(Math.tan(Math.PI/4+this.b0/2)),h=Math.log(Math.tan(Math.PI/4+e/2)),c=Math.log((1+o*t)/(1-o*t));this.K=a-this.alpha*h+this.alpha*o/2*c}function f1(e){var t=Math.log(Math.tan(Math.PI/4-e.y/2)),s=this.e/2*Math.log((1+this.e*Math.sin(e.y))/(1-this.e*Math.sin(e.y))),i=-this.alpha*(t+s)+this.K,r=2*(Math.atan(Math.exp(i))-Math.PI/4),n=this.alpha*(e.x-this.lambda0),o=Math.atan(Math.sin(n)/(Math.sin(this.b0)*Math.tan(r)+Math.cos(this.b0)*Math.cos(n))),a=Math.asin(Math.cos(this.b0)*Math.sin(r)-Math.sin(this.b0)*Math.cos(r)*Math.cos(n));return e.y=this.R/2*Math.log((1+Math.sin(a))/(1-Math.sin(a)))+this.y0,e.x=this.R*o+this.x0,e}function d1(e){for(var t=e.x-this.x0,s=e.y-this.y0,i=t/this.R,r=2*(Math.atan(Math.exp(s/this.R))-Math.PI/4),n=Math.asin(Math.cos(this.b0)*Math.sin(r)+Math.sin(this.b0)*Math.cos(r)*Math.cos(i)),o=Math.atan(Math.sin(i)/(Math.cos(this.b0)*Math.cos(i)-Math.sin(this.b0)*Math.tan(r))),a=this.lambda0+o/this.alpha,h=0,c=n,l=-1e3,u=0;Math.abs(c-l)>1e-7;){if(++u>20)return;h=1/this.alpha*(Math.log(Math.tan(Math.PI/4+n/2))-this.K)+this.e*Math.log(Math.tan(Math.PI/4+Math.asin(this.e*Math.sin(c))/2)),l=c,c=2*Math.atan(Math.exp(h))-Math.PI/2}return e.x=a,e.y=c,e}var m1=["somerc"],Uc={init:u1,forward:f1,inverse:d1,names:m1};var Le=1e-7;function p1(e){var t=["Hotine_Oblique_Mercator","Hotine_Oblique_Mercator_variant_A","Hotine_Oblique_Mercator_Azimuth_Natural_Origin"],s=typeof e.projName=="object"?Object.keys(e.projName)[0]:e.projName;return"no_uoff"in e||"no_off"in e||t.indexOf(s)!==-1||t.indexOf(mn(s))!==-1}function g1(){var e,t,s,i,r,n,o,a,h,c,l=0,u,f=0,m=0,d=0,g=0,_=0,M=0;this.k0||(this.k0=1),this.no_off=p1(this),this.no_rot="no_rot"in this;var y=!1;"alpha"in this&&(y=!0);var E=!1;if("rectified_grid_angle"in this&&(E=!0),y&&(M=this.alpha),E&&(l=this.rectified_grid_angle,y||(M=0,y=!0)),y||E)f=this.longc;else if(m=this.long1,g=this.lat1,d=this.long2,_=this.lat2,Math.abs(g-_)<=Le||(e=Math.abs(g))<=Le||Math.abs(e-x)<=Le||Math.abs(Math.abs(this.lat0)-x)<=Le||Math.abs(Math.abs(_)-x)<=Le)throw new Error;var w=1-this.es;t=Math.sqrt(w),Math.abs(this.lat0)>v?(a=Math.sin(this.lat0),s=Math.cos(this.lat0),e=1-this.es*a*a,this.B=s*s,this.B=Math.sqrt(1+this.es*this.B*this.B/w),this.A=this.B*this.k0*t/e,i=this.B*t/(s*Math.sqrt(e)),r=i*i-1,r<=0?r=0:(r=Math.sqrt(r),this.lat0<0&&(r=-r)),this.E=r+=i,this.E*=Math.pow(ht(this.e,this.lat0,a),this.B)):(this.B=1/t,this.A=this.k0,this.E=i=r=1),y||E?(y?(u=Math.asin(Math.sin(M)/i),E||(l=M)):(u=l,M=Math.asin(i*Math.sin(u))),this.lam0=f-Math.asin(.5*(r-1/r)*Math.tan(u))/this.B):(n=Math.pow(ht(this.e,g,Math.sin(g)),this.B),o=Math.pow(ht(this.e,_,Math.sin(_)),this.B),r=this.E/n,h=(o-n)/(o+n),c=this.E*this.E,c=(c-o*n)/(c+o*n),e=m-d,e<-Math.PI?d-=Jt:e>Math.PI&&(d+=Jt),this.lam0=S(.5*(m+d)-Math.atan(c*Math.tan(.5*this.B*(m-d))/h)/this.B,this.over),u=Math.atan(2*Math.sin(this.B*S(m-this.lam0,this.over))/(r-1/r)),l=M=Math.asin(i*Math.sin(u))),this.singam=Math.sin(u),this.cosgam=Math.cos(u),this.sinrot=Math.sin(l),this.cosrot=Math.cos(l),this.rB=1/this.B,this.ArB=this.A*this.rB,this.BrA=1/this.ArB,this.no_off?this.u_0=0:(this.u_0=Math.abs(this.ArB*Math.atan(Math.sqrt(i*i-1)/Math.cos(M))),this.lat0<0&&(this.u_0=-this.u_0)),r=.5*u,this.v_pole_n=this.ArB*Math.log(Math.tan(O-r)),this.v_pole_s=this.ArB*Math.log(Math.tan(O+r))}function _1(e){var t={},s,i,r,n,o,a,h,c;if(e.x=e.x-this.lam0,Math.abs(Math.abs(e.y)-x)>v){if(o=this.E/Math.pow(ht(this.e,e.y,Math.sin(e.y)),this.B),a=1/o,s=.5*(o-a),i=.5*(o+a),n=Math.sin(this.B*e.x),r=(s*this.singam-n*this.cosgam)/i,Math.abs(Math.abs(r)-1)<v)throw new Error;c=.5*this.ArB*Math.log((1-r)/(1+r)),a=Math.cos(this.B*e.x),Math.abs(a)<Le?h=this.A*e.x:h=this.ArB*Math.atan2(s*this.cosgam+n*this.singam,a)}else c=e.y>0?this.v_pole_n:this.v_pole_s,h=this.ArB*e.y;return this.no_rot?(t.x=h,t.y=c):(h-=this.u_0,t.x=c*this.cosrot+h*this.sinrot,t.y=h*this.cosrot-c*this.sinrot),t.x=this.a*t.x+this.x0,t.y=this.a*t.y+this.y0,t}function M1(e){var t,s,i,r,n,o,a,h={};if(e.x=(e.x-this.x0)*(1/this.a),e.y=(e.y-this.y0)*(1/this.a),this.no_rot?(s=e.y,t=e.x):(s=e.x*this.cosrot-e.y*this.sinrot,t=e.y*this.cosrot+e.x*this.sinrot+this.u_0),i=Math.exp(-this.BrA*s),r=.5*(i-1/i),n=.5*(i+1/i),o=Math.sin(this.BrA*t),a=(o*this.cosgam+r*this.singam)/n,Math.abs(Math.abs(a)-1)<v)h.x=0,h.y=a<0?-x:x;else{if(h.y=this.E/Math.sqrt((1+a)/(1-a)),h.y=Wt(this.e,Math.pow(h.y,1/this.B)),h.y===1/0)throw new Error;h.x=-this.rB*Math.atan2(r*this.cosgam-o*this.singam,Math.cos(this.BrA*t))}return h.x+=this.lam0,h}var x1=["Hotine_Oblique_Mercator","Hotine Oblique Mercator","Hotine_Oblique_Mercator_variant_A","Hotine_Oblique_Mercator_Variant_B","Hotine_Oblique_Mercator_Azimuth_Natural_Origin","Hotine_Oblique_Mercator_Two_Point_Natural_Origin","Hotine_Oblique_Mercator_Azimuth_Center","Oblique_Mercator","omerc"],kc={init:g1,forward:_1,inverse:M1,names:x1};function y1(){if(this.lat2||(this.lat2=this.lat1),this.k0||(this.k0=1),this.x0=this.x0||0,this.y0=this.y0||0,this.long0=this.long0||0,!(Math.abs(this.lat1+this.lat2)<v)){var e=this.b/this.a;this.e=Math.sqrt(1-e*e);var t=Math.sin(this.lat1),s=Math.cos(this.lat1),i=rt(this.e,t,s),r=ht(this.e,this.lat1,t),n=Math.sin(this.lat2),o=Math.cos(this.lat2),a=rt(this.e,n,o),h=ht(this.e,this.lat2,n),c=ht(this.e,this.lat0,Math.sin(this.lat0));Math.abs(this.lat1-this.lat2)>v?this.ns=Math.log(i/a)/Math.log(r/h):this.ns=t,isNaN(this.ns)&&(this.ns=t),this.f0=i/(this.ns*Math.pow(r,this.ns)),this.rh=Math.abs(Math.abs(this.lat0)-x)<v?0:this.a*this.f0*Math.pow(c,this.ns),this.title||(this.title="Lambert Conformal Conic")}}function S1(e){var t=e.x,s=e.y;Math.abs(2*Math.abs(s)-Math.PI)<=v&&(s=zt(s)*(x-2*v));var i=Math.abs(Math.abs(s)-x),r,n;if(i>v)r=ht(this.e,s,Math.sin(s)),n=this.a*this.f0*Math.pow(r,this.ns);else{if(i=s*this.ns,i<=0)return null;n=0}var o=this.ns*S(t-this.long0,this.over);return e.x=this.k0*(n*Math.sin(o))+this.x0,e.y=this.k0*(this.rh-n*Math.cos(o))+this.y0,e}function v1(e){var t,s,i,r,n,o=(e.x-this.x0)/this.k0,a=this.rh-(e.y-this.y0)/this.k0;this.ns>0?(t=Math.sqrt(o*o+a*a),s=1):(t=-Math.sqrt(o*o+a*a),s=-1);var h=0;if(t!==0&&(h=Math.atan2(s*o,s*a)),t!==0||this.ns>0){if(s=1/this.ns,i=Math.pow(t/(this.a*this.f0),s),r=Wt(this.e,i),r===-9999)return null}else r=-x;return n=S(h/this.ns+this.long0,this.over),e.x=n,e.y=r,e}var E1=["Lambert Tangential Conformal Conic Projection","Lambert_Conformal_Conic","Lambert_Conformal_Conic_1SP","Lambert_Conformal_Conic_2SP","lcc","Lambert Conic Conformal (1SP)","Lambert Conic Conformal (2SP)"],Vc={init:y1,forward:S1,inverse:v1,names:E1};function w1(){this.a=6377397155e-3,this.es=.006674372230614,this.e=Math.sqrt(this.es),this.lat0||(this.lat0=.863937979737193),this.long0||(this.long0=.7417649320975901-.308341501185665),this.k0||(this.k0=.9999),this.s45=.785398163397448,this.s90=2*this.s45,this.fi0=this.lat0,this.e2=this.es,this.e=Math.sqrt(this.e2),this.alfa=Math.sqrt(1+this.e2*Math.pow(Math.cos(this.fi0),4)/(1-this.e2)),this.uq=1.04216856380474,this.u0=Math.asin(Math.sin(this.fi0)/this.alfa),this.g=Math.pow((1+this.e*Math.sin(this.fi0))/(1-this.e*Math.sin(this.fi0)),this.alfa*this.e/2),this.k=Math.tan(this.u0/2+this.s45)/Math.pow(Math.tan(this.fi0/2+this.s45),this.alfa)*this.g,this.k1=this.k0,this.n0=this.a*Math.sqrt(1-this.e2)/(1-this.e2*Math.pow(Math.sin(this.fi0),2)),this.s0=1.37008346281555,this.n=Math.sin(this.s0),this.ro0=this.k1*this.n0/Math.tan(this.s0),this.ad=this.s90-this.uq}function T1(e){var t,s,i,r,n,o,a,h=e.x,c=e.y,l=S(h-this.long0,this.over);return t=Math.pow((1+this.e*Math.sin(c))/(1-this.e*Math.sin(c)),this.alfa*this.e/2),s=2*(Math.atan(this.k*Math.pow(Math.tan(c/2+this.s45),this.alfa)/t)-this.s45),i=-l*this.alfa,r=Math.asin(Math.cos(this.ad)*Math.sin(s)+Math.sin(this.ad)*Math.cos(s)*Math.cos(i)),n=Math.asin(Math.cos(s)*Math.sin(i)/Math.cos(r)),o=this.n*n,a=this.ro0*Math.pow(Math.tan(this.s0/2+this.s45),this.n)/Math.pow(Math.tan(r/2+this.s45),this.n),e.y=a*Math.cos(o)/1,e.x=a*Math.sin(o)/1,this.czech||(e.y*=-1,e.x*=-1),e}function b1(e){var t,s,i,r,n,o,a,h,c=e.x;e.x=e.y,e.y=c,this.czech||(e.y*=-1,e.x*=-1),o=Math.sqrt(e.x*e.x+e.y*e.y),n=Math.atan2(e.y,e.x),r=n/Math.sin(this.s0),i=2*(Math.atan(Math.pow(this.ro0/o,1/this.n)*Math.tan(this.s0/2+this.s45))-this.s45),t=Math.asin(Math.cos(this.ad)*Math.sin(i)-Math.sin(this.ad)*Math.cos(i)*Math.cos(r)),s=Math.asin(Math.cos(i)*Math.sin(r)/Math.cos(t)),e.x=this.long0-s/this.alfa,a=t,h=0;var l=0;do e.y=2*(Math.atan(Math.pow(this.k,-1/this.alfa)*Math.pow(Math.tan(t/2+this.s45),1/this.alfa)*Math.pow((1+this.e*Math.sin(a))/(1-this.e*Math.sin(a)),this.e/2))-this.s45),Math.abs(a-e.y)<1e-10&&(h=1),a=e.y,l+=1;while(h===0&&l<15);return l>=15?null:e}var P1=["Krovak","Krovak Modified","Krovak (North Orientated)","Krovak Modified (North Orientated)","krovak"],jc={init:w1,forward:T1,inverse:b1,names:P1};function $(e,t,s,i,r){return e*r-t*Math.sin(2*r)+s*Math.sin(4*r)-i*Math.sin(6*r)}function Ht(e){return 1-.25*e*(1+e/16*(3+1.25*e))}function Yt(e){return .375*e*(1+.25*e*(1+.46875*e))}function Zt(e){return .05859375*e*e*(1+.75*e)}function Xt(e){return e*e*e*(35/3072)}function fs(e,t,s){var i=t*s;return e/Math.sqrt(1-i*i)}function ft(e){return Math.abs(e)<x?e:e-zt(e)*Math.PI}function he(e,t,s,i,r){var n,o;n=e/t;for(var a=0;a<15;a++)if(o=(e-(t*n-s*Math.sin(2*n)+i*Math.sin(4*n)-r*Math.sin(6*n)))/(t-2*s*Math.cos(2*n)+4*i*Math.cos(4*n)-6*r*Math.cos(6*n)),n+=o,Math.abs(o)<=1e-10)return n;return NaN}function R1(){this.sphere||(this.e0=Ht(this.es),this.e1=Yt(this.es),this.e2=Zt(this.es),this.e3=Xt(this.es),this.ml0=this.a*$(this.e0,this.e1,this.e2,this.e3,this.lat0))}function C1(e){var t,s,i=e.x,r=e.y;if(i=S(i-this.long0,this.over),this.sphere)t=this.a*Math.asin(Math.cos(r)*Math.sin(i)),s=this.a*(Math.atan2(Math.tan(r),Math.cos(i))-this.lat0);else{var n=Math.sin(r),o=Math.cos(r),a=fs(this.a,this.e,n),h=Math.tan(r)*Math.tan(r),c=i*Math.cos(r),l=c*c,u=this.es*o*o/(1-this.es),f=this.a*$(this.e0,this.e1,this.e2,this.e3,r);t=a*c*(1-l*h*(1/6-(8-h+8*u)*l/120)),s=f-this.ml0+a*n/o*l*(.5+(5-h+6*u)*l/24)}return e.x=t+this.x0,e.y=s+this.y0,e}function A1(e){e.x-=this.x0,e.y-=this.y0;var t=e.x/this.a,s=e.y/this.a,i,r;if(this.sphere){var n=s+this.lat0;i=Math.asin(Math.sin(n)*Math.cos(t)),r=Math.atan2(Math.tan(t),Math.cos(n))}else{var o=this.ml0/this.a+s,a=he(o,this.e0,this.e1,this.e2,this.e3);if(Math.abs(Math.abs(a)-x)<=v)return e.x=this.long0,e.y=x,s<0&&(e.y*=-1),e;var h=fs(this.a,this.e,Math.sin(a)),c=h*h*h/this.a/this.a*(1-this.es),l=Math.pow(Math.tan(a),2),u=t*this.a/h,f=u*u;i=a-h*Math.tan(a)/c*u*u*(.5-(1+3*l)*u*u/24),r=u*(1-f*(l/3+(1+3*l)*l*f/15))/Math.cos(a)}return e.x=S(r+this.long0,this.over),e.y=ft(i),e}var I1=["Cassini","Cassini_Soldner","cass"],Wc={init:R1,forward:C1,inverse:A1,names:I1};function dt(e,t){var s;return e>1e-7?(s=e*t,(1-e*e)*(t/(1-s*s)-.5/e*Math.log((1-s)/(1+s)))):2*t}var O1=.3333333333333333,N1=.17222222222222222,L1=.10257936507936508,G1=.06388888888888888,z1=.0664021164021164,q1=.016415012942191543;function ds(e){var t,s=[];return s[0]=e*O1,t=e*e,s[0]+=t*N1,s[1]=t*G1,t*=e,s[0]+=t*L1,s[1]+=t*z1,s[2]=t*q1,s}function ms(e,t){var s=e+e;return e+t[0]*Math.sin(s)+t[1]*Math.sin(s+s)+t[2]*Math.sin(s+s+s)}var Pn=1,Rn=2,Cn=3,ki=4;function B1(){var e=Math.abs(this.lat0);if(Math.abs(e-x)<v?this.mode=this.lat0<0?Pn:Rn:Math.abs(e)<v?this.mode=Cn:this.mode=ki,this.es>0){var t;switch(this.qp=dt(this.e,1),this.mmf=.5/(1-this.es),this.apa=ds(this.es),this.mode){case Rn:this.dd=1;break;case Pn:this.dd=1;break;case Cn:this.rq=Math.sqrt(.5*this.qp),this.dd=1/this.rq,this.xmf=1,this.ymf=.5*this.qp;break;case ki:this.rq=Math.sqrt(.5*this.qp),t=Math.sin(this.lat0),this.sinb1=dt(this.e,t)/this.qp,this.cosb1=Math.sqrt(1-this.sinb1*this.sinb1),this.dd=Math.cos(this.lat0)/(Math.sqrt(1-this.es*t*t)*this.rq*this.cosb1),this.ymf=(this.xmf=this.rq)/this.dd,this.xmf*=this.dd;break}}else this.mode===ki&&(this.sinph0=Math.sin(this.lat0),this.cosph0=Math.cos(this.lat0))}function D1(e){var t,s,i,r,n,o,a,h,c,l,u=e.x,f=e.y;if(u=S(u-this.long0,this.over),this.sphere){if(n=Math.sin(f),l=Math.cos(f),i=Math.cos(u),this.mode===this.OBLIQ||this.mode===this.EQUIT){if(s=this.mode===this.EQUIT?1+l*i:1+this.sinph0*n+this.cosph0*l*i,s<=v)return null;s=Math.sqrt(2/s),t=s*l*Math.sin(u),s*=this.mode===this.EQUIT?n:this.cosph0*n-this.sinph0*l*i}else if(this.mode===this.N_POLE||this.mode===this.S_POLE){if(this.mode===this.N_POLE&&(i=-i),Math.abs(f+this.lat0)<v)return null;s=O-f*.5,s=2*(this.mode===this.S_POLE?Math.cos(s):Math.sin(s)),t=s*Math.sin(u),s*=i}}else{switch(a=0,h=0,c=0,i=Math.cos(u),r=Math.sin(u),n=Math.sin(f),o=dt(this.e,n),(this.mode===this.OBLIQ||this.mode===this.EQUIT)&&(a=o/this.qp,h=Math.sqrt(1-a*a)),this.mode){case this.OBLIQ:c=1+this.sinb1*a+this.cosb1*h*i;break;case this.EQUIT:c=1+h*i;break;case this.N_POLE:c=x+f,o=this.qp-o;break;case this.S_POLE:c=f-x,o=this.qp+o;break}if(Math.abs(c)<v)return null;switch(this.mode){case this.OBLIQ:case this.EQUIT:c=Math.sqrt(2/c),this.mode===this.OBLIQ?s=this.ymf*c*(this.cosb1*a-this.sinb1*h*i):s=(c=Math.sqrt(2/(1+h*i)))*a*this.ymf,t=this.xmf*c*h*r;break;case this.N_POLE:case this.S_POLE:o>=0?(t=(c=Math.sqrt(o))*r,s=i*(this.mode===this.S_POLE?c:-c)):t=s=0;break}}return e.x=this.a*t+this.x0,e.y=this.a*s+this.y0,e}function F1(e){e.x-=this.x0,e.y-=this.y0;var t=e.x/this.a,s=e.y/this.a,i,r,n,o,a,h,c;if(this.sphere){var l=0,u,f=0;if(u=Math.sqrt(t*t+s*s),r=u*.5,r>1)return null;switch(r=2*Math.asin(r),(this.mode===this.OBLIQ||this.mode===this.EQUIT)&&(f=Math.sin(r),l=Math.cos(r)),this.mode){case this.EQUIT:r=Math.abs(u)<=v?0:Math.asin(s*f/u),t*=f,s=l*u;break;case this.OBLIQ:r=Math.abs(u)<=v?this.lat0:Math.asin(l*this.sinph0+s*f*this.cosph0/u),t*=f*this.cosph0,s=(l-Math.sin(r)*this.sinph0)*u;break;case this.N_POLE:s=-s,r=x-r;break;case this.S_POLE:r-=x;break}i=s===0&&(this.mode===this.EQUIT||this.mode===this.OBLIQ)?0:Math.atan2(t,s)}else{if(c=0,this.mode===this.OBLIQ||this.mode===this.EQUIT){if(t/=this.dd,s*=this.dd,h=Math.sqrt(t*t+s*s),h<v)return e.x=this.long0,e.y=this.lat0,e;o=2*Math.asin(.5*h/this.rq),n=Math.cos(o),t*=o=Math.sin(o),this.mode===this.OBLIQ?(c=n*this.sinb1+s*o*this.cosb1/h,a=this.qp*c,s=h*this.cosb1*n-s*this.sinb1*o):(c=s*o/h,a=this.qp*c,s=h*n)}else if(this.mode===this.N_POLE||this.mode===this.S_POLE){if(this.mode===this.N_POLE&&(s=-s),a=t*t+s*s,!a)return e.x=this.long0,e.y=this.lat0,e;c=1-a/this.qp,this.mode===this.S_POLE&&(c=-c)}i=Math.atan2(t,s),r=ms(Math.asin(c),this.apa)}return e.x=S(this.long0+i,this.over),e.y=r,e}var U1=["Lambert Azimuthal Equal Area","Lambert_Azimuthal_Equal_Area","laea"],Hc={init:B1,forward:D1,inverse:F1,names:U1,S_POLE:Pn,N_POLE:Rn,EQUIT:Cn,OBLIQ:ki};function mt(e){return Math.abs(e)>1&&(e=e>1?1:-1),Math.asin(e)}function k1(){Math.abs(this.lat1+this.lat2)<v||(this.temp=this.b/this.a,this.es=1-Math.pow(this.temp,2),this.e3=Math.sqrt(this.es),this.sin_po=Math.sin(this.lat1),this.cos_po=Math.cos(this.lat1),this.t1=this.sin_po,this.con=this.sin_po,this.ms1=rt(this.e3,this.sin_po,this.cos_po),this.qs1=dt(this.e3,this.sin_po),this.sin_po=Math.sin(this.lat2),this.cos_po=Math.cos(this.lat2),this.t2=this.sin_po,this.ms2=rt(this.e3,this.sin_po,this.cos_po),this.qs2=dt(this.e3,this.sin_po),this.sin_po=Math.sin(this.lat0),this.cos_po=Math.cos(this.lat0),this.t3=this.sin_po,this.qs0=dt(this.e3,this.sin_po),Math.abs(this.lat1-this.lat2)>v?this.ns0=(this.ms1*this.ms1-this.ms2*this.ms2)/(this.qs2-this.qs1):this.ns0=this.con,this.c=this.ms1*this.ms1+this.ns0*this.qs1,this.rh=this.a*Math.sqrt(this.c-this.ns0*this.qs0)/this.ns0)}function V1(e){var t=e.x,s=e.y;this.sin_phi=Math.sin(s),this.cos_phi=Math.cos(s);var i=dt(this.e3,this.sin_phi),r=this.a*Math.sqrt(this.c-this.ns0*i)/this.ns0,n=this.ns0*S(t-this.long0,this.over),o=r*Math.sin(n)+this.x0,a=this.rh-r*Math.cos(n)+this.y0;return e.x=o,e.y=a,e}function j1(e){var t,s,i,r,n,o;return e.x-=this.x0,e.y=this.rh-e.y+this.y0,this.ns0>=0?(t=Math.sqrt(e.x*e.x+e.y*e.y),i=1):(t=-Math.sqrt(e.x*e.x+e.y*e.y),i=-1),r=0,t!==0&&(r=Math.atan2(i*e.x,i*e.y)),i=t*this.ns0/this.a,this.sphere?o=Math.asin((this.c-i*i)/(2*this.ns0)):(s=(this.c-i*i)/this.ns0,o=this.phi1z(this.e3,s)),n=S(r/this.ns0+this.long0,this.over),e.x=n,e.y=o,e}function W1(e,t){var s,i,r,n,o,a=mt(.5*t);if(e<v)return a;for(var h=e*e,c=1;c<=25;c++)if(s=Math.sin(a),i=Math.cos(a),r=e*s,n=1-r*r,o=.5*n*n/i*(t/(1-h)-s/n+.5/e*Math.log((1-r)/(1+r))),a=a+o,Math.abs(o)<=1e-7)return a;return null}var H1=["Albers_Conic_Equal_Area","Albers_Equal_Area","Albers","aea"],Yc={init:k1,forward:V1,inverse:j1,names:H1,phi1z:W1};function Y1(){this.sin_p14=Math.sin(this.lat0),this.cos_p14=Math.cos(this.lat0),this.infinity_dist=1e3*this.a,this.rc=1}function Z1(e){var t,s,i,r,n,o,a,h,c=e.x,l=e.y;return i=S(c-this.long0,this.over),t=Math.sin(l),s=Math.cos(l),r=Math.cos(i),o=this.sin_p14*t+this.cos_p14*s*r,n=1,o>0||Math.abs(o)<=v?(a=this.x0+this.a*n*s*Math.sin(i)/o,h=this.y0+this.a*n*(this.cos_p14*t-this.sin_p14*s*r)/o):(a=this.x0+this.infinity_dist*s*Math.sin(i),h=this.y0+this.infinity_dist*(this.cos_p14*t-this.sin_p14*s*r)),e.x=a,e.y=h,e}function X1(e){var t,s,i,r,n,o;return e.x=(e.x-this.x0)/this.a,e.y=(e.y-this.y0)/this.a,e.x/=this.k0,e.y/=this.k0,(t=Math.sqrt(e.x*e.x+e.y*e.y))?(r=Math.atan2(t,this.rc),s=Math.sin(r),i=Math.cos(r),o=mt(i*this.sin_p14+e.y*s*this.cos_p14/t),n=Math.atan2(e.x*s,t*this.cos_p14*i-e.y*this.sin_p14*s),n=S(this.long0+n,this.over)):(o=this.phic0,n=0),e.x=n,e.y=o,e}var $1=["gnom"],Zc={init:Y1,forward:Z1,inverse:X1,names:$1};function Xc(e,t){var s=1-(1-e*e)/(2*e)*Math.log((1-e)/(1+e));if(Math.abs(Math.abs(t)-s)<1e-6)return t<0?-1*x:x;for(var i=Math.asin(.5*t),r,n,o,a,h=0;h<30;h++)if(n=Math.sin(i),o=Math.cos(i),a=e*n,r=Math.pow(1-a*a,2)/(2*o)*(t/(1-e*e)-n/(1-a*a)+.5/e*Math.log((1-a)/(1+a))),i+=r,Math.abs(r)<=1e-10)return i;return NaN}function Q1(){this.sphere||(this.k0=rt(this.e,Math.sin(this.lat_ts),Math.cos(this.lat_ts)))}function K1(e){var t=e.x,s=e.y,i,r,n=S(t-this.long0,this.over);if(this.sphere)i=this.x0+this.a*n*Math.cos(this.lat_ts),r=this.y0+this.a*Math.sin(s)/Math.cos(this.lat_ts);else{var o=dt(this.e,Math.sin(s));i=this.x0+this.a*this.k0*n,r=this.y0+this.a*o*.5/this.k0}return e.x=i,e.y=r,e}function J1(e){e.x-=this.x0,e.y-=this.y0;var t,s;return this.sphere?(t=S(this.long0+e.x/this.a/Math.cos(this.lat_ts),this.over),s=Math.asin(e.y/this.a*Math.cos(this.lat_ts))):(s=Xc(this.e,2*e.y*this.k0/this.a),t=S(this.long0+e.x/(this.a*this.k0),this.over)),e.x=t,e.y=s,e}var tp=["cea"],$c={init:Q1,forward:K1,inverse:J1,names:tp};function ep(){this.x0=this.x0||0,this.y0=this.y0||0,this.lat0=this.lat0||0,this.long0=this.long0||0,this.lat_ts=this.lat_ts||0,this.title=this.title||"Equidistant Cylindrical (Plate Carre)",this.rc=Math.cos(this.lat_ts)}function sp(e){var t=e.x,s=e.y,i=S(t-this.long0,this.over),r=ft(s-this.lat0);return e.x=this.x0+this.a*i*this.rc,e.y=this.y0+this.a*r,e}function ip(e){var t=e.x,s=e.y;return e.x=S(this.long0+(t-this.x0)/(this.a*this.rc),this.over),e.y=ft(this.lat0+(s-this.y0)/this.a),e}var rp=["Equirectangular","Equidistant_Cylindrical","Equidistant_Cylindrical_Spherical","eqc"],Qc={init:ep,forward:sp,inverse:ip,names:rp};var Kc=20;function np(){this.temp=this.b/this.a,this.es=1-Math.pow(this.temp,2),this.e=Math.sqrt(this.es),this.e0=Ht(this.es),this.e1=Yt(this.es),this.e2=Zt(this.es),this.e3=Xt(this.es),this.ml0=this.a*$(this.e0,this.e1,this.e2,this.e3,this.lat0)}function op(e){var t=e.x,s=e.y,i,r,n,o=S(t-this.long0,this.over);if(n=o*Math.sin(s),this.sphere)Math.abs(s)<=v?(i=this.a*o,r=-1*this.a*this.lat0):(i=this.a*Math.sin(n)/Math.tan(s),r=this.a*(ft(s-this.lat0)+(1-Math.cos(n))/Math.tan(s)));else if(Math.abs(s)<=v)i=this.a*o,r=-1*this.ml0;else{var a=fs(this.a,this.e,Math.sin(s))/Math.tan(s);i=a*Math.sin(n),r=this.a*$(this.e0,this.e1,this.e2,this.e3,s)-this.ml0+a*(1-Math.cos(n))}return e.x=i+this.x0,e.y=r+this.y0,e}function ap(e){var t,s,i,r,n,o,a,h,c;if(i=e.x-this.x0,r=e.y-this.y0,this.sphere)if(Math.abs(r+this.a*this.lat0)<=v)t=S(i/this.a+this.long0,this.over),s=0;else{o=this.lat0+r/this.a,a=i*i/this.a/this.a+o*o,h=o;var l;for(n=Kc;n;--n)if(l=Math.tan(h),c=-1*(o*(h*l+1)-h-.5*(h*h+a)*l)/((h-o)/l-1),h+=c,Math.abs(c)<=v){s=h;break}t=S(this.long0+Math.asin(i*Math.tan(h)/this.a)/Math.sin(s),this.over)}else if(Math.abs(r+this.ml0)<=v)s=0,t=S(this.long0+i/this.a,this.over);else{o=(this.ml0+r)/this.a,a=i*i/this.a/this.a+o*o,h=o;var u,f,m,d,g;for(n=Kc;n;--n)if(g=this.e*Math.sin(h),u=Math.sqrt(1-g*g)*Math.tan(h),f=this.a*$(this.e0,this.e1,this.e2,this.e3,h),m=this.e0-2*this.e1*Math.cos(2*h)+4*this.e2*Math.cos(4*h)-6*this.e3*Math.cos(6*h),d=f/this.a,c=(o*(u*d+1)-d-.5*u*(d*d+a))/(this.es*Math.sin(2*h)*(d*d+a-2*o*d)/(4*u)+(o-d)*(u*m-2/Math.sin(2*h))-m),h-=c,Math.abs(c)<=v){s=h;break}u=Math.sqrt(1-this.es*Math.pow(Math.sin(s),2))*Math.tan(s),t=S(this.long0+Math.asin(i*u/this.a)/Math.sin(s),this.over)}return e.x=t,e.y=s,e}var hp=["Polyconic","American_Polyconic","poly"],Jc={init:np,forward:op,inverse:ap,names:hp};var cp=1;function lp(){this.A=[],this.A[1]=.6399175073,this.A[2]=-.1358797613,this.A[3]=.063294409,this.A[4]=-.02526853,this.A[5]=.0117879,this.A[6]=-.0055161,this.A[7]=.0026906,this.A[8]=-.001333,this.A[9]=67e-5,this.A[10]=-34e-5,this.B_re=[],this.B_im=[],this.B_re[1]=.7557853228,this.B_im[1]=0,this.B_re[2]=.249204646,this.B_im[2]=.003371507,this.B_re[3]=-.001541739,this.B_im[3]=.04105856,this.B_re[4]=-.10162907,this.B_im[4]=.01727609,this.B_re[5]=-.26623489,this.B_im[5]=-.36249218,this.B_re[6]=-.6870983,this.B_im[6]=-1.1651967,this.C_re=[],this.C_im=[],this.C_re[1]=1.3231270439,this.C_im[1]=0,this.C_re[2]=-.577245789,this.C_im[2]=-.007809598,this.C_re[3]=.508307513,this.C_im[3]=-.112208952,this.C_re[4]=-.15094762,this.C_im[4]=.18200602,this.C_re[5]=1.01418179,this.C_im[5]=1.64497696,this.C_re[6]=1.9660549,this.C_im[6]=2.5127645,this.D=[],this.D[1]=1.5627014243,this.D[2]=.5185406398,this.D[3]=-.03333098,this.D[4]=-.1052906,this.D[5]=-.0368594,this.D[6]=.007317,this.D[7]=.0122,this.D[8]=.00394,this.D[9]=-.0013}function up(e){var t,s=e.x,i=e.y,r=i-this.lat0,n=s-this.long0,o=r/re*1e-5,a=n,h=1,c=0;for(t=1;t<=10;t++)h=h*o,c=c+this.A[t]*h;var l=c,u=a,f=1,m=0,d,g,_=0,M=0;for(t=1;t<=6;t++)d=f*l-m*u,g=m*l+f*u,f=d,m=g,_=_+this.B_re[t]*f-this.B_im[t]*m,M=M+this.B_im[t]*f+this.B_re[t]*m;return e.x=M*this.a+this.x0,e.y=_*this.a+this.y0,e}function fp(e){var t,s=e.x,i=e.y,r=s-this.x0,n=i-this.y0,o=n/this.a,a=r/this.a,h=1,c=0,l,u,f=0,m=0;for(t=1;t<=6;t++)l=h*o-c*a,u=c*o+h*a,h=l,c=u,f=f+this.C_re[t]*h-this.C_im[t]*c,m=m+this.C_im[t]*h+this.C_re[t]*c;for(var d=0;d<this.iterations;d++){var g=f,_=m,M,y,E=o,w=a;for(t=2;t<=6;t++)M=g*f-_*m,y=_*f+g*m,g=M,_=y,E=E+(t-1)*(this.B_re[t]*g-this.B_im[t]*_),w=w+(t-1)*(this.B_im[t]*g+this.B_re[t]*_);g=1,_=0;var T=this.B_re[1],b=this.B_im[1];for(t=2;t<=6;t++)M=g*f-_*m,y=_*f+g*m,g=M,_=y,T=T+t*(this.B_re[t]*g-this.B_im[t]*_),b=b+t*(this.B_im[t]*g+this.B_re[t]*_);var R=T*T+b*b;f=(E*T+w*b)/R,m=(w*T-E*b)/R}var A=f,C=m,G=1,L=0;for(t=1;t<=9;t++)G=G*A,L=L+this.D[t]*G;var D=this.lat0+L*re*1e5,H=this.long0+C;return e.x=H,e.y=D,e}var dp=["New_Zealand_Map_Grid","nzmg"],tl={init:lp,forward:up,inverse:fp,names:dp,iterations:cp};function mp(){}function pp(e){var t=e.x,s=e.y,i=S(t-this.long0,this.over),r=this.x0+this.a*i,n=this.y0+this.a*Math.log(Math.tan(Math.PI/4+s/2.5))*1.25;return e.x=r,e.y=n,e}function gp(e){e.x-=this.x0,e.y-=this.y0;var t=S(this.long0+e.x/this.a,this.over),s=2.5*(Math.atan(Math.exp(.8*e.y/this.a))-Math.PI/4);return e.x=t,e.y=s,e}var _p=["Miller_Cylindrical","mill"],el={init:mp,forward:pp,inverse:gp,names:_p};var Mp=20;function xp(){this.long0=this.long0||0,this.sphere?(this.n=1,this.m=0,this.es=0,this.C_y=Math.sqrt((this.m+1)/this.n),this.C_x=this.C_y/(this.m+1)):this.en=Ae(this.es)}function An(e){var t,s,i=e.x,r=e.y;if(i=S(i-this.long0,this.over),this.sphere){if(!this.m)r=this.n!==1?Math.asin(this.n*Math.sin(r)):r;else for(var n=this.n*Math.sin(r),o=Mp;o;--o){var a=(this.m*r+Math.sin(r)-n)/(this.m+Math.cos(r));if(r-=a,Math.abs(a)<v)break}t=this.a*this.C_x*i*(this.m+Math.cos(r)),s=this.a*this.C_y*r}else{var h=Math.sin(r),c=Math.cos(r);s=this.a*qt(r,h,c,this.en),t=this.a*i*c/Math.sqrt(1-this.es*h*h)}return e.x=t,e.y=s,e}function In(e){var t,s,i,r;return e.x-=this.x0,i=e.x/this.a,e.y-=this.y0,t=e.y/this.a,this.sphere?(t/=this.C_y,i=i/(this.C_x*(this.m+Math.cos(t))),this.m?t=mt((this.m*t+Math.sin(t))/this.n):this.n!==1&&(t=mt(Math.sin(t)/this.n)),i=S(i+this.long0,this.over),t=ft(t)):(t=Ie(e.y/this.a,this.es,this.en),r=Math.abs(t),r<x?(r=Math.sin(t),s=this.long0+e.x*Math.sqrt(1-this.es*r*r)/(this.a*Math.cos(t)),i=S(s,this.over)):r-v<x&&(i=this.long0)),e.x=i,e.y=t,e}var yp=["Sinusoidal","sinu"],sl={init:xp,forward:An,inverse:In,names:yp};function Sp(){this.sphere=!0,this.b=this.a,this.m=1,this.n=2.5707963267948966,this.es=0,this.C_y=Math.sqrt((this.m+1)/this.n),this.C_x=this.C_y/(this.m+1)}var vp=An,Ep=In,wp=["Eckert_VI","eck6"],il={init:Sp,forward:vp,inverse:Ep,names:wp};function Tp(){this.x0=this.x0!==void 0?this.x0:0,this.y0=this.y0!==void 0?this.y0:0,this.long0=this.long0!==void 0?this.long0:0}function bp(e){for(var t=e.x,s=e.y,i=S(t-this.long0,this.over),r=s,n=Math.PI*Math.sin(s);;){var o=-(r+Math.sin(r)-n)/(1+Math.cos(r));if(r+=o,Math.abs(o)<v)break}r/=2,Math.PI/2-Math.abs(s)<v&&(i=0);var a=.900316316158*this.a*i*Math.cos(r)+this.x0,h=1.4142135623731*this.a*Math.sin(r)+this.y0;return e.x=a,e.y=h,e}function Pp(e){var t,s;e.x-=this.x0,e.y-=this.y0,s=e.y/(1.4142135623731*this.a),Math.abs(s)>.999999999999&&(s=.999999999999),t=Math.asin(s);var i=S(this.long0+e.x/(.900316316158*this.a*Math.cos(t)),this.over);i<-Math.PI&&(i=-Math.PI),i>Math.PI&&(i=Math.PI),s=(2*t+Math.sin(2*t))/Math.PI,Math.abs(s)>1&&(s=1);var r=Math.asin(s);return e.x=i,e.y=r,e}var Rp=["Mollweide","moll"],rl={init:Tp,forward:bp,inverse:Pp,names:Rp};function Cp(){Math.abs(this.lat1+this.lat2)<v||(this.lat2=this.lat2||this.lat1,this.temp=this.b/this.a,this.es=1-Math.pow(this.temp,2),this.e=Math.sqrt(this.es),this.e0=Ht(this.es),this.e1=Yt(this.es),this.e2=Zt(this.es),this.e3=Xt(this.es),this.sin_phi=Math.sin(this.lat1),this.cos_phi=Math.cos(this.lat1),this.ms1=rt(this.e,this.sin_phi,this.cos_phi),this.ml1=$(this.e0,this.e1,this.e2,this.e3,this.lat1),Math.abs(this.lat1-this.lat2)<v?this.ns=this.sin_phi:(this.sin_phi=Math.sin(this.lat2),this.cos_phi=Math.cos(this.lat2),this.ms2=rt(this.e,this.sin_phi,this.cos_phi),this.ml2=$(this.e0,this.e1,this.e2,this.e3,this.lat2),this.ns=(this.ms1-this.ms2)/(this.ml2-this.ml1)),this.g=this.ml1+this.ms1/this.ns,this.ml0=$(this.e0,this.e1,this.e2,this.e3,this.lat0),this.rh=this.a*(this.g-this.ml0))}function Ap(e){var t=e.x,s=e.y,i;if(this.sphere)i=this.a*(this.g-s);else{var r=$(this.e0,this.e1,this.e2,this.e3,s);i=this.a*(this.g-r)}var n=this.ns*S(t-this.long0,this.over),o=this.x0+i*Math.sin(n),a=this.y0+this.rh-i*Math.cos(n);return e.x=o,e.y=a,e}function Ip(e){e.x-=this.x0,e.y=this.rh-e.y+this.y0;var t,s,i,r;this.ns>=0?(s=Math.sqrt(e.x*e.x+e.y*e.y),t=1):(s=-Math.sqrt(e.x*e.x+e.y*e.y),t=-1);var n=0;if(s!==0&&(n=Math.atan2(t*e.x,t*e.y)),this.sphere)return r=S(this.long0+n/this.ns,this.over),i=ft(this.g-s/this.a),e.x=r,e.y=i,e;var o=this.g-s/this.a;return i=he(o,this.e0,this.e1,this.e2,this.e3),r=S(this.long0+n/this.ns,this.over),e.x=r,e.y=i,e}var Op=["Equidistant_Conic","eqdc"],nl={init:Cp,forward:Ap,inverse:Ip,names:Op};function Np(){this.R=this.a}function Lp(e){var t=e.x,s=e.y,i=S(t-this.long0,this.over),r,n;if(Math.abs(s)<=v)return r=this.x0+this.R*i,n=this.y0,e.x=r,e.y=n,e;var o=mt(2*Math.abs(s/Math.PI));if(Math.abs(i)<=v||Math.abs(Math.abs(s)-x)<=v)return r=this.x0,s>=0?n=this.y0+Math.PI*this.R*Math.tan(.5*o):n=this.y0+Math.PI*this.R*-Math.tan(.5*o),e.x=r,e.y=n,e;var a=.5*Math.abs(Math.PI/i-i/Math.PI),h=a*a,c=Math.sin(o),l=Math.cos(o),u=l/(c+l-1),f=u*u,m=u*(2/c-1),d=m*m,g=Math.PI*this.R*(a*(u-d)+Math.sqrt(h*(u-d)*(u-d)-(d+h)*(f-d)))/(d+h);i<0&&(g=-g),r=this.x0+g;var _=h+u;return g=Math.PI*this.R*(m*_-a*Math.sqrt((d+h)*(h+1)-_*_))/(d+h),s>=0?n=this.y0+g:n=this.y0-g,e.x=r,e.y=n,e}function Gp(e){var t,s,i,r,n,o,a,h,c,l,u,f,m;return e.x-=this.x0,e.y-=this.y0,u=Math.PI*this.R,i=e.x/u,r=e.y/u,n=i*i+r*r,o=-Math.abs(r)*(1+n),a=o-2*r*r+i*i,h=-2*o+1+2*r*r+n*n,m=r*r/h+(2*a*a*a/h/h/h-9*o*a/h/h)/27,c=(o-a*a/3/h)/h,l=2*Math.sqrt(-c/3),u=3*m/c/l,Math.abs(u)>1&&(u>=0?u=1:u=-1),f=Math.acos(u)/3,e.y>=0?s=(-l*Math.cos(f+Math.PI/3)-a/3/h)*Math.PI:s=-(-l*Math.cos(f+Math.PI/3)-a/3/h)*Math.PI,Math.abs(i)<v?t=this.long0:t=S(this.long0+Math.PI*(n-1+Math.sqrt(1+2*(i*i-r*r)+n*n))/2/i,this.over),e.x=t,e.y=s,e}var zp=["Van_der_Grinten_I","VanDerGrinten","Van_der_Grinten","vandg"],ol={init:Np,forward:Lp,inverse:Gp,names:zp};function al(e,t,s,i,r,n){let o=i-t,a=Math.atan((1-n)*Math.tan(e)),h=Math.atan((1-n)*Math.tan(s)),c=Math.sin(a),l=Math.cos(a),u=Math.sin(h),f=Math.cos(h),m=o,d,g=100,_,M,y,E,w,T,b,R,A,C,G,L,D,H;do{if(_=Math.sin(m),M=Math.cos(m),y=Math.sqrt(f*_*(f*_)+(l*u-c*f*M)*(l*u-c*f*M)),y===0)return{azi1:0,s12:0};E=c*u+l*f*M,w=Math.atan2(y,E),T=l*f*_/y,b=1-T*T,R=b!==0?E-2*c*u/b:0,A=n/16*b*(4+n*(4-3*b)),d=m,m=o+(1-A)*n*T*(w+A*y*(R+A*E*(-1+2*R*R)))}while(Math.abs(m-d)>1e-12&&--g>0);return g===0?{azi1:NaN,s12:NaN}:(C=b*(r*r-r*(1-n)*(r*(1-n)))/(r*(1-n)*(r*(1-n))),G=1+C/16384*(4096+C*(-768+C*(320-175*C))),L=C/1024*(256+C*(-128+C*(74-47*C))),D=L*y*(R+L/4*(E*(-1+2*R*R)-L/6*R*(-3+4*y*y)*(-3+4*R*R))),H=r*(1-n)*G*(w-D),{azi1:Math.atan2(f*_,l*u-c*f*M),s12:H})}function hl(e,t,s,i,r,n){let o=Math.atan((1-n)*Math.tan(e)),a=Math.sin(o),h=Math.cos(o),c=Math.sin(s),l=Math.cos(s),u=Math.atan2(a,h*l),f=h*c,m=1-f*f,d=m*(r*r-r*(1-n)*(r*(1-n)))/(r*(1-n)*(r*(1-n))),g=1+d/16384*(4096+d*(-768+d*(320-175*d))),_=d/1024*(256+d*(-128+d*(74-47*d))),M=i/(r*(1-n)*g),y,E=100,w,T,b,R;do w=Math.cos(2*u+M),T=Math.sin(M),b=Math.cos(M),R=_*T*(w+_/4*(b*(-1+2*w*w)-_/6*w*(-3+4*T*T)*(-3+4*w*w))),y=M,M=i/(r*(1-n)*g)+R;while(Math.abs(M-y)>1e-12&&--E>0);if(E===0)return{lat2:NaN,lon2:NaN};let A=a*T-h*b*l,C=Math.atan2(a*b+h*T*l,(1-n)*Math.sqrt(f*f+A*A)),G=Math.atan2(T*c,h*b-a*T*l),L=n/16*m*(4+n*(4-3*m)),D=G-(1-L)*n*f*(M+L*T*(w+L*b*(-1+2*w*w))),H=t+D;return{lat2:C,lon2:H}}function qp(){this.sin_p12=Math.sin(this.lat0),this.cos_p12=Math.cos(this.lat0),this.x0=this.x0||0,this.y0=this.y0||0,this.long0=this.long0||0,this.f=this.es/(1+Math.sqrt(1-this.es))}function Bp(e){var t=e.x,s=e.y,i=Math.sin(e.y),r=Math.cos(e.y),n=S(t-this.long0,this.over),o,a,h,c,l,u,f,m,d,g,_;return this.sphere?Math.abs(this.sin_p12-1)<=v?(e.x=this.x0+this.a*(x-s)*Math.sin(n),e.y=this.y0-this.a*(x-s)*Math.cos(n),e):Math.abs(this.sin_p12+1)<=v?(e.x=this.x0+this.a*(x+s)*Math.sin(n),e.y=this.y0+this.a*(x+s)*Math.cos(n),e):(d=this.sin_p12*i+this.cos_p12*r*Math.cos(n),f=Math.acos(d),m=f?f/Math.sin(f):1,e.x=this.x0+this.a*m*r*Math.sin(n),e.y=this.y0+this.a*m*(this.cos_p12*i-this.sin_p12*r*Math.cos(n)),e):(o=Ht(this.es),a=Yt(this.es),h=Zt(this.es),c=Xt(this.es),Math.abs(this.sin_p12-1)<=v?(l=this.a*$(o,a,h,c,x),u=this.a*$(o,a,h,c,s),e.x=this.x0+(l-u)*Math.sin(n),e.y=this.y0-(l-u)*Math.cos(n),e):Math.abs(this.sin_p12+1)<=v?(l=this.a*$(o,a,h,c,x),u=this.a*$(o,a,h,c,s),e.x=this.x0+(l+u)*Math.sin(n),e.y=this.y0+(l+u)*Math.cos(n),e):Math.abs(t)<v&&Math.abs(s-this.lat0)<v?(e.x=this.x0,e.y=this.y0,e):(g=al(this.lat0,this.long0,s,t,this.a,this.f),_=g.azi1,e.x=this.x0+g.s12*Math.sin(_),e.y=this.y0+g.s12*Math.cos(_),e))}function Dp(e){e.x-=this.x0,e.y-=this.y0;var t,s,i,r,n,o,a,h,c,l,u,f,m,d,g,_;return this.sphere?(t=Math.sqrt(e.x*e.x+e.y*e.y),t>2*x*this.a?void 0:(s=t/this.a,i=Math.sin(s),r=Math.cos(s),n=this.long0,Math.abs(t)<=v?o=this.lat0:(o=mt(r*this.sin_p12+e.y*i*this.cos_p12/t),a=Math.abs(this.lat0)-x,Math.abs(a)<=v?this.lat0>=0?n=S(this.long0+Math.atan2(e.x,-e.y),this.over):n=S(this.long0-Math.atan2(-e.x,e.y),this.over):n=S(this.long0+Math.atan2(e.x*i,t*this.cos_p12*r-e.y*this.sin_p12*i),this.over)),e.x=n,e.y=o,e)):(h=Ht(this.es),c=Yt(this.es),l=Zt(this.es),u=Xt(this.es),Math.abs(this.sin_p12-1)<=v?(f=this.a*$(h,c,l,u,x),t=Math.sqrt(e.x*e.x+e.y*e.y),m=f-t,o=he(m/this.a,h,c,l,u),n=S(this.long0+Math.atan2(e.x,-1*e.y),this.over),e.x=n,e.y=o,e):Math.abs(this.sin_p12+1)<=v?(f=this.a*$(h,c,l,u,x),t=Math.sqrt(e.x*e.x+e.y*e.y),m=t-f,o=he(m/this.a,h,c,l,u),n=S(this.long0+Math.atan2(e.x,e.y),this.over),e.x=n,e.y=o,e):(d=Math.atan2(e.x,e.y),g=Math.sqrt(e.x*e.x+e.y*e.y),_=hl(this.lat0,this.long0,d,g,this.a,this.f),e.x=_.lon2,e.y=_.lat2,e))}var Fp=["Azimuthal_Equidistant","aeqd"],cl={init:qp,forward:Bp,inverse:Dp,names:Fp};function Up(){this.sin_p14=Math.sin(this.lat0||0),this.cos_p14=Math.cos(this.lat0||0)}function kp(e){var t,s,i,r,n,o,a,h,c=e.x,l=e.y;return i=S(c-(this.long0||0),this.over),t=Math.sin(l),s=Math.cos(l),r=Math.cos(i),o=this.sin_p14*t+this.cos_p14*s*r,n=1,(o>0||Math.abs(o)<=v)&&(a=this.a*n*s*Math.sin(i),h=(this.y0||0)+this.a*n*(this.cos_p14*t-this.sin_p14*s*r)),e.x=a,e.y=h,e}function Vp(e){var t,s,i,r,n,o,a,h,c;return e.x-=this.x0||0,e.y-=this.y0||0,t=Math.sqrt(e.x*e.x+e.y*e.y),s=mt(t/this.a),i=Math.sin(s),r=Math.cos(s),h=this.long0||0,c=this.lat0||0,o=h,Math.abs(t)<=v?(a=c,e.x=o,e.y=a,e):(a=mt(r*this.sin_p14+e.y*i*this.cos_p14/t),n=Math.abs(c)-x,Math.abs(n)<=v?(c>=0?o=S(h+Math.atan2(e.x,-e.y),this.over):o=S(h-Math.atan2(-e.x,e.y),this.over),e.x=o,e.y=a,e):(o=S(h+Math.atan2(e.x*i,t*this.cos_p14*r-e.y*this.sin_p14*i),this.over),e.x=o,e.y=a,e))}var jp=["ortho"],ll={init:Up,forward:kp,inverse:Vp,names:jp};var W={FRONT:1,RIGHT:2,BACK:3,LEFT:4,TOP:5,BOTTOM:6},z={AREA_0:1,AREA_1:2,AREA_2:3,AREA_3:4};function Wp(){this.x0=this.x0||0,this.y0=this.y0||0,this.lat0=this.lat0||0,this.long0=this.long0||0,this.lat_ts=this.lat_ts||0,this.title=this.title||"Quadrilateralized Spherical Cube",this.lat0>=x-O/2?this.face=W.TOP:this.lat0<=-(x-O/2)?this.face=W.BOTTOM:Math.abs(this.long0)<=O?this.face=W.FRONT:Math.abs(this.long0)<=x+O?this.face=this.long0>0?W.RIGHT:W.LEFT:this.face=W.BACK,this.es!==0&&(this.one_minus_f=1-(this.a-this.b)/this.a,this.one_minus_f_squared=this.one_minus_f*this.one_minus_f)}function Hp(e){var t={x:0,y:0},s,i,r,n,o,a,h={value:0};if(e.x-=this.long0,this.es!==0?s=Math.atan(this.one_minus_f_squared*Math.tan(e.y)):s=e.y,i=e.x,this.face===W.TOP)n=x-s,i>=O&&i<=x+O?(h.value=z.AREA_0,r=i-x):i>x+O||i<=-(x+O)?(h.value=z.AREA_1,r=i>0?i-j:i+j):i>-(x+O)&&i<=-O?(h.value=z.AREA_2,r=i+x):(h.value=z.AREA_3,r=i);else if(this.face===W.BOTTOM)n=x+s,i>=O&&i<=x+O?(h.value=z.AREA_0,r=-i+x):i<O&&i>=-O?(h.value=z.AREA_1,r=-i):i<-O&&i>=-(x+O)?(h.value=z.AREA_2,r=-i-x):(h.value=z.AREA_3,r=i>0?-i+j:-i-j);else{var c,l,u,f,m,d,g;this.face===W.RIGHT?i=Ge(i,+x):this.face===W.BACK?i=Ge(i,+j):this.face===W.LEFT&&(i=Ge(i,-x)),f=Math.sin(s),m=Math.cos(s),d=Math.sin(i),g=Math.cos(i),c=m*g,l=m*d,u=f,this.face===W.FRONT?(n=Math.acos(c),r=Vi(n,u,l,h)):this.face===W.RIGHT?(n=Math.acos(l),r=Vi(n,u,-c,h)):this.face===W.BACK?(n=Math.acos(-c),r=Vi(n,u,-l,h)):this.face===W.LEFT?(n=Math.acos(-l),r=Vi(n,u,c,h)):(n=r=0,h.value=z.AREA_0)}return a=Math.atan(12/j*(r+Math.acos(Math.sin(r)*Math.cos(O))-x)),o=Math.sqrt((1-Math.cos(n))/(Math.cos(a)*Math.cos(a))/(1-Math.cos(Math.atan(1/Math.cos(r))))),h.value===z.AREA_1?a+=x:h.value===z.AREA_2?a+=j:h.value===z.AREA_3&&(a+=1.5*j),t.x=o*Math.cos(a),t.y=o*Math.sin(a),t.x=t.x*this.a+this.x0,t.y=t.y*this.a+this.y0,e.x=t.x,e.y=t.y,e}function Yp(e){var t={lam:0,phi:0},s,i,r,n,o,a,h,c,l,u={value:0};if(e.x=(e.x-this.x0)/this.a,e.y=(e.y-this.y0)/this.a,i=Math.atan(Math.sqrt(e.x*e.x+e.y*e.y)),s=Math.atan2(e.y,e.x),e.x>=0&&e.x>=Math.abs(e.y)?u.value=z.AREA_0:e.y>=0&&e.y>=Math.abs(e.x)?(u.value=z.AREA_1,s-=x):e.x<0&&-e.x>=Math.abs(e.y)?(u.value=z.AREA_2,s=s<0?s+j:s-j):(u.value=z.AREA_3,s+=x),l=j/12*Math.tan(s),o=Math.sin(l)/(Math.cos(l)-1/Math.sqrt(2)),a=Math.atan(o),r=Math.cos(s),n=Math.tan(i),h=1-r*r*n*n*(1-Math.cos(Math.atan(1/Math.cos(a)))),h<-1?h=-1:h>1&&(h=1),this.face===W.TOP)c=Math.acos(h),t.phi=x-c,u.value===z.AREA_0?t.lam=a+x:u.value===z.AREA_1?t.lam=a<0?a+j:a-j:u.value===z.AREA_2?t.lam=a-x:t.lam=a;else if(this.face===W.BOTTOM)c=Math.acos(h),t.phi=c-x,u.value===z.AREA_0?t.lam=-a+x:u.value===z.AREA_1?t.lam=-a:u.value===z.AREA_2?t.lam=-a-x:t.lam=a<0?-a-j:-a+j;else{var f,m,d;f=h,l=f*f,l>=1?d=0:d=Math.sqrt(1-l)*Math.sin(a),l+=d*d,l>=1?m=0:m=Math.sqrt(1-l),u.value===z.AREA_1?(l=m,m=-d,d=l):u.value===z.AREA_2?(m=-m,d=-d):u.value===z.AREA_3&&(l=m,m=d,d=-l),this.face===W.RIGHT?(l=f,f=-m,m=l):this.face===W.BACK?(f=-f,m=-m):this.face===W.LEFT&&(l=f,f=m,m=-l),t.phi=Math.acos(-d)-x,t.lam=Math.atan2(m,f),this.face===W.RIGHT?t.lam=Ge(t.lam,-x):this.face===W.BACK?t.lam=Ge(t.lam,-j):this.face===W.LEFT&&(t.lam=Ge(t.lam,+x))}if(this.es!==0){var g,_,M;g=t.phi<0?1:0,_=Math.tan(t.phi),M=this.b/Math.sqrt(_*_+this.one_minus_f_squared),t.phi=Math.atan(Math.sqrt(this.a*this.a-M*M)/(this.one_minus_f*M)),g&&(t.phi=-t.phi)}return t.lam+=this.long0,e.x=t.lam,e.y=t.phi,e}function Vi(e,t,s,i){var r;return e<v?(i.value=z.AREA_0,r=0):(r=Math.atan2(t,s),Math.abs(r)<=O?i.value=z.AREA_0:r>O&&r<=x+O?(i.value=z.AREA_1,r-=x):r>x+O||r<=-(x+O)?(i.value=z.AREA_2,r=r>=0?r-j:r+j):(i.value=z.AREA_3,r+=x)),r}function Ge(e,t){var s=e+t;return s<-j?s+=Jt:s>+j&&(s-=Jt),s}var Zp=["Quadrilateralized Spherical Cube","Quadrilateralized_Spherical_Cube","qsc"],ul={init:Wp,forward:Hp,inverse:Yp,names:Zp};var On=[[1,22199e-21,-715515e-10,31103e-10],[.9986,-482243e-9,-24897e-9,-13309e-10],[.9954,-83103e-8,-448605e-10,-986701e-12],[.99,-.00135364,-59661e-9,36777e-10],[.9822,-.00167442,-449547e-11,-572411e-11],[.973,-.00214868,-903571e-10,18736e-12],[.96,-.00305085,-900761e-10,164917e-11],[.9427,-.00382792,-653386e-10,-26154e-10],[.9216,-.00467746,-10457e-8,481243e-11],[.8962,-.00536223,-323831e-10,-543432e-11],[.8679,-.00609363,-113898e-9,332484e-11],[.835,-.00698325,-640253e-10,934959e-12],[.7986,-.00755338,-500009e-10,935324e-12],[.7597,-.00798324,-35971e-9,-227626e-11],[.7186,-.00851367,-701149e-10,-86303e-10],[.6732,-.00986209,-199569e-9,191974e-10],[.6213,-.010418,883923e-10,624051e-11],[.5722,-.00906601,182e-6,624051e-11],[.5322,-.00677797,275608e-9,624051e-11]],ps=[[-520417e-23,.0124,121431e-23,-845284e-16],[.062,.0124,-126793e-14,422642e-15],[.124,.0124,507171e-14,-160604e-14],[.186,.0123999,-190189e-13,600152e-14],[.248,.0124002,710039e-13,-224e-10],[.31,.0123992,-264997e-12,835986e-13],[.372,.0124029,988983e-12,-311994e-12],[.434,.0123893,-369093e-11,-435621e-12],[.4958,.0123198,-102252e-10,-345523e-12],[.5571,.0121916,-154081e-10,-582288e-12],[.6176,.0119938,-241424e-10,-525327e-12],[.6769,.011713,-320223e-10,-516405e-12],[.7346,.0113541,-397684e-10,-609052e-12],[.7903,.0109107,-489042e-10,-104739e-11],[.8435,.0103431,-64615e-9,-140374e-14],[.8936,.00969686,-64636e-9,-8547e-9],[.9394,.00840947,-192841e-9,-42106e-10],[.9761,.00616527,-256e-6,-42106e-10],[1,.00328947,-319159e-9,-42106e-10]],fl=.8487,dl=1.3523,ml=X/5,Xp=1/ml,ze=18,ji=function(e,t){return e[0]+t*(e[1]+t*(e[2]+t*e[3]))},$p=function(e,t){return e[1]+t*(2*e[2]+t*3*e[3])};function Qp(e,t,s,i){for(var r=t;i;--i){var n=e(r);if(r-=n,Math.abs(n)<s)break}return r}function Kp(){this.x0=this.x0||0,this.y0=this.y0||0,this.long0=this.long0||0,this.es=0,this.title=this.title||"Robinson"}function Jp(e){var t=S(e.x-this.long0,this.over),s=Math.abs(e.y),i=Math.floor(s*ml);i<0?i=0:i>=ze&&(i=ze-1),s=X*(s-Xp*i);var r={x:ji(On[i],s)*t,y:ji(ps[i],s)};return e.y<0&&(r.y=-r.y),r.x=r.x*this.a*fl+this.x0,r.y=r.y*this.a*dl+this.y0,r}function tg(e){var t={x:(e.x-this.x0)/(this.a*fl),y:Math.abs(e.y-this.y0)/(this.a*dl)};if(t.y>=1)t.x/=On[ze][0],t.y=e.y<0?-x:x;else{var s=Math.floor(t.y*ze);for(s<0?s=0:s>=ze&&(s=ze-1);;)if(ps[s][0]>t.y)--s;else if(ps[s+1][0]<=t.y)++s;else break;var i=ps[s],r=5*(t.y-i[0])/(ps[s+1][0]-i[0]);r=Qp(function(n){return(ji(i,n)-t.y)/$p(i,n)},r,v,100),t.x/=ji(On[s],r),t.y=(5*s+r)*B,e.y<0&&(t.y=-t.y)}return t.x=S(t.x+this.long0,this.over),t}var eg=["Robinson","robin"],pl={init:Kp,forward:Jp,inverse:tg,names:eg};function sg(){this.name="geocent"}function ig(e){var t=Li(e,this.es,this.a);return t}function rg(e){var t=Gi(e,this.es,this.a,this.b);return t}var ng=["Geocentric","geocentric","geocent","Geocent"],gl={init:sg,forward:ig,inverse:rg,names:ng};var nt={N_POLE:0,S_POLE:1,EQUIT:2,OBLIQ:3},gs={h:{def:1e5,num:!0},azi:{def:0,num:!0,degrees:!0},tilt:{def:0,num:!0,degrees:!0},long0:{def:0,num:!0},lat0:{def:0,num:!0}};function og(){if(Object.keys(gs).forEach((function(s){if(typeof this[s]>"u")this[s]=gs[s].def;else{if(gs[s].num&&isNaN(this[s]))throw new Error("Invalid parameter value, must be numeric "+s+" = "+this[s]);gs[s].num&&(this[s]=parseFloat(this[s]))}gs[s].degrees&&(this[s]=this[s]*B)}).bind(this)),Math.abs(Math.abs(this.lat0)-x)<v?this.mode=this.lat0<0?nt.S_POLE:nt.N_POLE:Math.abs(this.lat0)<v?this.mode=nt.EQUIT:(this.mode=nt.OBLIQ,this.sinph0=Math.sin(this.lat0),this.cosph0=Math.cos(this.lat0)),this.pn1=this.h/this.a,this.pn1<=0||this.pn1>1e10)throw new Error("Invalid height");this.p=1+this.pn1,this.rp=1/this.p,this.h1=1/this.pn1,this.pfact=(this.p+1)*this.h1,this.es=0;var e=this.tilt,t=this.azi;this.cg=Math.cos(t),this.sg=Math.sin(t),this.cw=Math.cos(e),this.sw=Math.sin(e)}function ag(e){e.x-=this.long0;var t=Math.sin(e.y),s=Math.cos(e.y),i=Math.cos(e.x),r,n;switch(this.mode){case nt.OBLIQ:n=this.sinph0*t+this.cosph0*s*i;break;case nt.EQUIT:n=s*i;break;case nt.S_POLE:n=-t;break;case nt.N_POLE:n=t;break}switch(n=this.pn1/(this.p-n),r=n*s*Math.sin(e.x),this.mode){case nt.OBLIQ:n*=this.cosph0*t-this.sinph0*s*i;break;case nt.EQUIT:n*=t;break;case nt.N_POLE:n*=-(s*i);break;case nt.S_POLE:n*=s*i;break}var o,a;return o=n*this.cg+r*this.sg,a=1/(o*this.sw*this.h1+this.cw),r=(r*this.cg-n*this.sg)*this.cw*a,n=o*a,e.x=r*this.a,e.y=n*this.a,e}function hg(e){e.x/=this.a,e.y/=this.a;var t={x:e.x,y:e.y},s,i,r;r=1/(this.pn1-e.y*this.sw),s=this.pn1*e.x*r,i=this.pn1*e.y*this.cw*r,e.x=s*this.cg+i*this.sg,e.y=i*this.cg-s*this.sg;var n=Z(e.x,e.y);if(Math.abs(n)<v)t.x=0,t.y=e.y;else{var o,a;switch(a=1-n*n*this.pfact,a=(this.p-Math.sqrt(a))/(this.pn1/n+n/this.pn1),o=Math.sqrt(1-a*a),this.mode){case nt.OBLIQ:t.y=Math.asin(o*this.sinph0+e.y*a*this.cosph0/n),e.y=(o-this.sinph0*Math.sin(t.y))*n,e.x*=a*this.cosph0;break;case nt.EQUIT:t.y=Math.asin(e.y*a/n),e.y=o*n,e.x*=a;break;case nt.N_POLE:t.y=Math.asin(o),e.y=-e.y;break;case nt.S_POLE:t.y=-Math.asin(o);break}t.x=Math.atan2(e.x,e.y)}return e.x=t.x+this.long0,e.y=t.y,e}var cg=["Tilted_Perspective","tpers"],_l={init:og,forward:ag,inverse:hg,names:cg};function lg(){if(this.flip_axis=this.sweep==="x"?1:0,this.h=Number(this.h),this.radius_g_1=this.h/this.a,this.radius_g_1<=0||this.radius_g_1>1e10)throw new Error;if(this.radius_g=1+this.radius_g_1,this.C=this.radius_g*this.radius_g-1,this.es!==0){var e=1-this.es,t=1/e;this.radius_p=Math.sqrt(e),this.radius_p2=e,this.radius_p_inv2=t,this.shape="ellipse"}else this.radius_p=1,this.radius_p2=1,this.radius_p_inv2=1,this.shape="sphere";this.title||(this.title="Geostationary Satellite View")}function ug(e){var t=e.x,s=e.y,i,r,n,o;if(t=t-this.long0,this.shape==="ellipse"){s=Math.atan(this.radius_p2*Math.tan(s));var a=this.radius_p/Z(this.radius_p*Math.cos(s),Math.sin(s));if(r=a*Math.cos(t)*Math.cos(s),n=a*Math.sin(t)*Math.cos(s),o=a*Math.sin(s),(this.radius_g-r)*r-n*n-o*o*this.radius_p_inv2<0)return e.x=Number.NaN,e.y=Number.NaN,e;i=this.radius_g-r,this.flip_axis?(e.x=this.radius_g_1*Math.atan(n/Z(o,i)),e.y=this.radius_g_1*Math.atan(o/i)):(e.x=this.radius_g_1*Math.atan(n/i),e.y=this.radius_g_1*Math.atan(o/Z(n,i)))}else this.shape==="sphere"&&(i=Math.cos(s),r=Math.cos(t)*i,n=Math.sin(t)*i,o=Math.sin(s),i=this.radius_g-r,this.flip_axis?(e.x=this.radius_g_1*Math.atan(n/Z(o,i)),e.y=this.radius_g_1*Math.atan(o/i)):(e.x=this.radius_g_1*Math.atan(n/i),e.y=this.radius_g_1*Math.atan(o/Z(n,i))));return e.x=e.x*this.a,e.y=e.y*this.a,e}function fg(e){var t=-1,s=0,i=0,r,n,o,a;if(e.x=e.x/this.a,e.y=e.y/this.a,this.shape==="ellipse"){this.flip_axis?(i=Math.tan(e.y/this.radius_g_1),s=Math.tan(e.x/this.radius_g_1)*Z(1,i)):(s=Math.tan(e.x/this.radius_g_1),i=Math.tan(e.y/this.radius_g_1)*Z(1,s));var h=i/this.radius_p;if(r=s*s+h*h+t*t,n=2*this.radius_g*t,o=n*n-4*r*this.C,o<0)return e.x=Number.NaN,e.y=Number.NaN,e;a=(-n-Math.sqrt(o))/(2*r),t=this.radius_g+a*t,s*=a,i*=a,e.x=Math.atan2(s,t),e.y=Math.atan(i*Math.cos(e.x)/t),e.y=Math.atan(this.radius_p_inv2*Math.tan(e.y))}else if(this.shape==="sphere"){if(this.flip_axis?(i=Math.tan(e.y/this.radius_g_1),s=Math.tan(e.x/this.radius_g_1)*Math.sqrt(1+i*i)):(s=Math.tan(e.x/this.radius_g_1),i=Math.tan(e.y/this.radius_g_1)*Math.sqrt(1+s*s)),r=s*s+i*i+t*t,n=2*this.radius_g*t,o=n*n-4*r*this.C,o<0)return e.x=Number.NaN,e.y=Number.NaN,e;a=(-n-Math.sqrt(o))/(2*r),t=this.radius_g+a*t,s*=a,i*=a,e.x=Math.atan2(s,t),e.y=Math.atan(i*Math.cos(e.x)/t)}return e.x=e.x+this.long0,e}var dg=["Geostationary Satellite View","Geostationary_Satellite","geos"],Ml={init:lg,forward:ug,inverse:fg,names:dg};var _s=1.340264,Ms=-.081106,xs=893e-6,ys=.003796,Wi=Math.sqrt(3)/2;function mg(){this.long0=this.long0!==void 0?this.long0:0,this.x0=this.x0!==void 0?this.x0:0,this.y0=this.y0!==void 0?this.y0:0,this.es!==0&&(this.apa=ds(this.es),this.qp=dt(this.e,1),this.rqda=Math.sqrt(.5*this.qp))}function pg(e){var t=S(e.x-this.long0,this.over),s=e.y,i=Math.sin(s);this.es!==0&&(i=dt(this.e,i)/this.qp);var r=Math.asin(Wi*i),n=r*r,o=n*n*n;return e.x=t*Math.cos(r)/(Wi*(_s+3*Ms*n+o*(7*xs+9*ys*n))),e.y=r*(_s+Ms*n+o*(xs+ys*n)),this.es!==0&&(e.x*=this.rqda,e.y*=this.rqda),e.x=this.a*e.x+this.x0,e.y=this.a*e.y+this.y0,e}function gg(e){e.x=(e.x-this.x0)/this.a,e.y=(e.y-this.y0)/this.a,this.es!==0&&(e.x/=this.rqda,e.y/=this.rqda);var t=1e-9,s=12,i=e.y,r,n,o,a,h,c;for(c=0;c<s&&(r=i*i,n=r*r*r,o=i*(_s+Ms*r+n*(xs+ys*r))-e.y,a=_s+3*Ms*r+n*(7*xs+9*ys*r),i-=h=o/a,!(Math.abs(h)<t));++c);return r=i*i,n=r*r*r,e.x=Wi*e.x*(_s+3*Ms*r+n*(7*xs+9*ys*r))/Math.cos(i),e.y=Math.asin(Math.sin(i)/Wi),this.es!==0&&(e.y=ms(e.y,this.apa)),e.x=S(e.x+this.long0,this.over),e}var _g=["eqearth","Equal Earth","Equal_Earth"],xl={init:mg,forward:pg,inverse:gg,names:_g};var Ss=1e-10;function Mg(){var e;if(this.phi1=this.lat1,Math.abs(this.phi1)<Ss)throw new Error;this.es?(this.en=Ae(this.es),this.m1=qt(this.phi1,this.am1=Math.sin(this.phi1),e=Math.cos(this.phi1),this.en),this.am1=e/(Math.sqrt(1-this.es*this.am1*this.am1)*this.am1),this.inverse=yg,this.forward=xg):(Math.abs(this.phi1)+Ss>=x?this.cphi1=0:this.cphi1=1/Math.tan(this.phi1),this.inverse=vg,this.forward=Sg)}function xg(e){var t=S(e.x-(this.long0||0),this.over),s=e.y,i,r,n;return i=this.am1+this.m1-qt(s,r=Math.sin(s),n=Math.cos(s),this.en),r=n*t/(i*Math.sqrt(1-this.es*r*r)),e.x=i*Math.sin(r),e.y=this.am1-i*Math.cos(r),e.x=this.a*e.x+(this.x0||0),e.y=this.a*e.y+(this.y0||0),e}function yg(e){e.x=(e.x-(this.x0||0))/this.a,e.y=(e.y-(this.y0||0))/this.a;var t,s,i,r;if(s=Z(e.x,e.y=this.am1-e.y),r=Ie(this.am1+this.m1-s,this.es,this.en),(t=Math.abs(r))<x)t=Math.sin(r),i=s*Math.atan2(e.x,e.y)*Math.sqrt(1-this.es*t*t)/Math.cos(r);else if(Math.abs(t-x)<=Ss)i=0;else throw new Error;return e.x=S(i+(this.long0||0),this.over),e.y=ft(r),e}function Sg(e){var t=S(e.x-(this.long0||0),this.over),s=e.y,i,r;return r=this.cphi1+this.phi1-s,Math.abs(r)>Ss?(e.x=r*Math.sin(i=t*Math.cos(s)/r),e.y=this.cphi1-r*Math.cos(i)):e.x=e.y=0,e.x=this.a*e.x+(this.x0||0),e.y=this.a*e.y+(this.y0||0),e}function vg(e){e.x=(e.x-(this.x0||0))/this.a,e.y=(e.y-(this.y0||0))/this.a;var t,s,i=Z(e.x,e.y=this.cphi1-e.y);if(s=this.cphi1+this.phi1-i,Math.abs(s)>x)throw new Error;return Math.abs(Math.abs(s)-x)<=Ss?t=0:t=i*Math.atan2(e.x,e.y)/Math.cos(s),e.x=S(t+(this.long0||0),this.over),e.y=ft(s),e}var Eg=["bonne","Bonne (Werner lat_1=90)"],yl={init:Mg,names:Eg};var Sl={OBLIQUE:{forward:Rg,inverse:Ag},TRANSVERSE:{forward:Cg,inverse:Ig}},Hi={ROTATE:{o_alpha:"oAlpha",o_lon_c:"oLongC",o_lat_c:"oLatC"},NEW_POLE:{o_lat_p:"oLatP",o_lon_p:"oLongP"},NEW_EQUATOR:{o_lon_1:"oLong1",o_lat_1:"oLat1",o_lon_2:"oLong2",o_lat_2:"oLat2"}};function wg(){if(this.x0=this.x0||0,this.y0=this.y0||0,this.long0=this.long0||0,this.title=this.title||"General Oblique Transformation",this.isIdentity=dn.includes(this.o_proj),!this.o_proj)throw new Error("Missing parameter: o_proj");if(this.o_proj==="ob_tran")throw new Error("Invalid value for o_proj: "+this.o_proj);let e=this.projStr.replace("+proj=ob_tran","").replace("+o_proj=","+proj=").trim(),t=Ct(e);if(!t)throw new Error("Invalid parameter: o_proj. Unknown projection "+this.o_proj);t.long0=0,this.obliqueProjection=t;let s,i=Object.keys(Hi),r=a=>{if(typeof this[a]>"u")return;let h=parseFloat(this[a])*B;if(isNaN(h))throw new Error("Invalid value for "+a+": "+this[a]);return h};for(let a=0;a<i.length;a++){let h=i[a],c=Hi[h],l=Object.entries(c);if(l.some(([f])=>typeof this[f]<"u")){s=c;for(let f=0;f<l.length;f++){let[m,d]=l[f],g=r(m);if(typeof g>"u")throw new Error("Missing parameter: "+m+".");this[d]=g}break}}if(!s)throw new Error("No valid parameters provided for ob_tran projection.");let{lamp:n,phip:o}=Pg(this,s);this.lamp=n,Math.abs(o)>v?(this.cphip=Math.cos(o),this.sphip=Math.sin(o),this.projectionType=Sl.OBLIQUE):this.projectionType=Sl.TRANSVERSE}function Tg(e){return this.projectionType.forward(this,e)}function bg(e){return this.projectionType.inverse(this,e)}function Pg(e,t){let s,i;if(t===Hi.ROTATE){let r=e.oLongC,n=e.oLatC,o=e.oAlpha;if(Math.abs(Math.abs(n)-x)<=v)throw new Error("Invalid value for o_lat_c: "+e.o_lat_c+" should be < 90\xB0");i=r+Math.atan2(-1*Math.cos(o),-1*Math.sin(o)*Math.sin(n)),s=Math.asin(Math.cos(n)*Math.sin(o))}else if(t===Hi.NEW_POLE)i=e.oLongP,s=e.oLatP;else{let r=e.oLong1,n=e.oLat1,o=e.oLong2,a=e.oLat2,h=Math.abs(n);if(Math.abs(n)>x-v)throw new Error("Invalid value for o_lat_1: "+e.o_lat_1+" should be < 90\xB0");if(Math.abs(a)>x-v)throw new Error("Invalid value for o_lat_2: "+e.o_lat_2+" should be < 90\xB0");if(Math.abs(n-a)<v)throw new Error("Invalid value for o_lat_1 and o_lat_2: o_lat_1 should be different from o_lat_2");if(h<v)throw new Error("Invalid value for o_lat_1: o_lat_1 should be different from zero");i=Math.atan2(Math.cos(n)*Math.sin(a)*Math.cos(r)-Math.sin(n)*Math.cos(a)*Math.cos(o),Math.sin(n)*Math.cos(a)*Math.sin(o)-Math.cos(n)*Math.sin(a)*Math.sin(r)),s=Math.atan(-1*Math.cos(i-r)/Math.tan(n))}return{lamp:i,phip:s}}function Rg(e,t){let{x:s,y:i}=t;s=S(s-e.long0,e.over);let r=Math.cos(s),n=Math.sin(i),o=Math.cos(i);t.x=S(Math.atan2(o*Math.sin(s),e.sphip*o*r+e.cphip*n)+e.lamp),t.y=Math.asin(e.sphip*n-e.cphip*o*r);let a=e.obliqueProjection.forward(t);return e.isIdentity&&(a.x*=X,a.y*=X),a}function Cg(e,t){let{x:s,y:i}=t;s=S(s-e.long0,e.over);let r=Math.cos(i),n=Math.cos(s);t.x=S(Math.atan2(r*Math.sin(s),Math.sin(i))+e.lamp),t.y=Math.asin(-1*r*n);let o=e.obliqueProjection.forward(t);return e.isIdentity&&(o.x*=X,o.y*=X),o}function Ag(e,t){e.isIdentity&&(t.x*=B,t.y*=B);let s=e.obliqueProjection.inverse(t),{x:i,y:r}=s;if(i<Number.MAX_VALUE){i-=e.lamp;let n=Math.cos(i),o=Math.sin(r),a=Math.cos(r);t.x=Math.atan2(a*Math.sin(i),e.sphip*a*n-e.cphip*o),t.y=Math.asin(e.sphip*o+e.cphip*a*n)}return t.x=S(t.x+e.long0),t}function Ig(e,t){e.isIdentity&&(t.x*=B,t.y*=B);let s=e.obliqueProjection.inverse(t),{x:i,y:r}=s;if(i<Number.MAX_VALUE){let n=Math.cos(r);i-=e.lamp,t.x=Math.atan2(n*Math.sin(i),-1*Math.sin(r)),t.y=Math.asin(n*Math.cos(i))}return t.x=S(t.x+e.long0),t}var Og=["General Oblique Transformation","General_Oblique_Transformation","ob_tran"],vl={init:wg,forward:Tg,inverse:bg,names:Og};function El(e){e.Proj.projections.add(Oe),e.Proj.projections.add(Ne),e.Proj.projections.add(Bc),e.Proj.projections.add(Dc),e.Proj.projections.add(Fc),e.Proj.projections.add(Uc),e.Proj.projections.add(kc),e.Proj.projections.add(Vc),e.Proj.projections.add(jc),e.Proj.projections.add(Wc),e.Proj.projections.add(Hc),e.Proj.projections.add(Yc),e.Proj.projections.add(Zc),e.Proj.projections.add($c),e.Proj.projections.add(Qc),e.Proj.projections.add(Jc),e.Proj.projections.add(tl),e.Proj.projections.add(el),e.Proj.projections.add(sl),e.Proj.projections.add(il),e.Proj.projections.add(rl),e.Proj.projections.add(nl),e.Proj.projections.add(ol),e.Proj.projections.add(cl),e.Proj.projections.add(ll),e.Proj.projections.add(ul),e.Proj.projections.add(pl),e.Proj.projections.add(gl),e.Proj.projections.add(_l),e.Proj.projections.add(Ml),e.Proj.projections.add(xl),e.Proj.projections.add(yl),e.Proj.projections.add(vl)}var wl=Object.assign(Sc,{defaultDatum:"WGS84",Proj:Ct,WGS84:new Ct("WGS84"),Point:Cc,toPoint:Pe,defs:we,nadgrid:Mn,transform:xn,mgrs:bc,version:"__VERSION__"});El(wl);var Nn=wl;var Ln=Nn,Bt=class{static defineProjectionAliases(t){for(let s in t)Ln.defs(s,t[s])}static registerDatumGrid(t,s,i){Ln.nadgrid(t,s,i)}constructor({from:t="WGS84",to:s="WGS84",enforceAxis:i=!1}){if(this._projection=Ln(t,s),this._enforceAxis=i,!this._projection)throw new Error("Invalid projection");this.project=this.project.bind(this),this.unproject=this.unproject.bind(this)}project(t){return this._projection.forward(t,this._enforceAxis)}unproject(t){return this._projection.inverse(t,this._enforceAxis)}};var vs=class extends Error{constructor(t){super(t.message||"CRS is not compatible with proj4js"),this.name="Proj4CRSCompatibilityError",this.compatibility=t}};var Ng=new Set(["GeographicCRS","GeodeticCRS","ProjectedCRS","BoundCRS"]);function Lg(e){return typeof e=="object"&&e!==null}function Yi(e){return typeof e.type=="string"?e.type:void 0}function bl(e){return Ng.has(e.type)}function Pl(e){return bl(e)?e.type!=="BoundCRS"||Pl(e.source_crs):!1}function Tl(e,t,s,i=!1){return{status:"unsupported",checked:!1,lossy:i,type:e,reason:t,message:s}}function Gg(e){if(e.type!=="CompoundCRS"||!Array.isArray(e.components))return{reason:"missing-horizontal-crs",message:"CompoundCRS does not contain a components array"};let t=e.components.filter(s=>Pl(s));return t.length===0?{reason:"missing-horizontal-crs",message:"CompoundCRS does not contain a Proj4-compatible horizontal CRS"}:t.length>1?{reason:"ambiguous-horizontal-crs",message:"CompoundCRS contains more than one Proj4-compatible horizontal CRS"}:{definition:t[0]}}function zg(e,t){if(!Lg(e))return{definition:e,lossy:!1};if(bl(e))return{definition:e,lossy:!1,type:Yi(e)};if(t==="horizontal"&&e.type==="CompoundCRS"){let i=Gg(e);if("reason"in i)throw new vs(Tl(Yi(e),i.reason,i.message,!0));return{definition:i.definition,lossy:!0,type:Yi(e)}}let s=Yi(e);throw new vs(Tl(s,"unsupported-crs-type",s?`${s} is not supported by proj4js`:"CRS object has no supported type"))}function Gn(e,t){return zg(e,t?.mode||"strict").definition}var qg=[9,-18,-88,0,96,90,0,0,-60,-20,-9,18,8,0,-96,30,0,0,60,-20,9,-88,-18,90,96,0,-20,-60,0,0,186,-42,-42,-150,-96,-150,60,60,60,60,54,162,-78,30,-24,-90,-60,60,-60,60,-9,-32,18,30,24,0,20,-60,0,0,-9,8,18,30,-96,0,-20,60,0,0,54,-78,162,-90,-24,30,60,-60,60,-60,-54,78,78,90,144,90,-60,-60,-60,-60,9,-8,-18,-30,-24,0,20,60,0,0,-9,18,-32,0,24,30,0,0,-60,20,9,-18,-8,0,-24,-30,0,0,60,20],Bg=372,Dg=[0,0,-131,0,138,144,0,0,-102,-31,0,0,7,0,-138,42,0,0,102,-31,62,0,-31,0,0,-62,0,0,0,31,124,0,-62,0,0,-124,0,0,0,62,124,0,-62,0,0,-124,0,0,0,62,62,0,-31,0,0,-62,0,0,0,31,0,0,45,0,-183,-9,0,93,18,0,0,0,216,0,33,87,0,-93,12,-93,0,0,156,0,153,99,0,-93,-12,-93,0,0,-45,0,-3,9,0,93,-18,0,0,0,-55,0,48,42,0,0,-84,31,0,0,-7,0,-48,-42,0,0,84,31],Fg=372,Ug=[18,-36,-122,0,120,135,0,0,-84,-31,-18,36,-2,0,-120,51,0,0,84,-31,36,-165,-27,93,147,-9,0,-93,18,0,210,45,-111,-93,-57,-192,0,93,12,93,162,141,-75,-93,-129,-180,0,93,-12,93,-36,-21,27,93,39,9,0,-93,-18,0,0,0,62,0,0,31,0,0,0,-31,0,0,124,0,0,62,0,0,0,-62,0,0,124,0,0,62,0,0,0,-62,0,0,62,0,0,31,0,0,0,-31,-18,36,-64,0,66,51,0,0,-102,31,18,-36,2,0,-66,-51,0,0,102,31],kg=12,zn=20/2,Vg=2,Es=class{constructor(t){this._v00=0,this._v01=0,this._v10=0,this._v11=0,this._t=[],this.options=t,this._ix=this.options._width,this._iy=this.options._height}getHeight(t,s){if(t=Math.abs(t)>90?NaN:t,Number.isNaN(t)||Number.isNaN(s))return NaN;let i=jg(s,360);s=i!==-180?i:180;let r=s*this.options._rlonres,n=-t*this.options._rlatres,o=Math.floor(r),a=Math.min(Math.round((this.options._height-1)/2-1),Math.floor(n));r-=o,n-=a,a+=(this.options._height-1)/2,o+=o<0?this.options._width:o>=this.options._width?-this.options._width:0;let h=0,c=0,l=0,u=0,f=new Array(zn);if(o===this._ix&&a===this._iy)this.options.cubic?f=this._t:(h=this._v00,c=this._v01,l=this._v10,u=this._v11);else if(!this.options.cubic)h=this._rawval(o,a),c=this._rawval(o+1,a),l=this._rawval(o,a+1),u=this._rawval(o+1,a+1);else{let d=[this._rawval(o,a-1),this._rawval(o+1,a-1),this._rawval(o-1,a),this._rawval(o,a),this._rawval(o+1,a),this._rawval(o+2,a),this._rawval(o-1,a+1),this._rawval(o,a+1),this._rawval(o+1,a+1),this._rawval(o+2,a+1),this._rawval(o,a+2),this._rawval(o+1,a+2)],g=Dg;a!==0&&(g=a===this.options._height-2?Ug:qg);let _=Bg;a!==0&&(_=a===this.options._height-2?Fg:240);for(let M=0;M<zn;++M){f[M]=0;for(let y=0;y<kg;++y)f[M]+=d[y]*g[zn*y+M];f[M]/=_}}if(!this.options.cubic){let d=(1-r)*h+r*c,g=(1-r)*l+r*u,_=(1-n)*d+n*g,M=this.options._offset+this.options._scale*_;return this._ix=o,this._iy=a,this._v00=h,this._v01=c,this._v10=l,this._v11=u,M}let m=f[0]+r*(f[1]+r*(f[3]+r*f[6]))+n*(f[2]+r*(f[4]+r*f[7])+n*(f[5]+r*f[8]+n*f[9]));return m=this.options._offset+this.options._scale*m,this._ix=o,this._iy=a,this._t=f,m}_rawval(t,s){t<0?t+=this.options._width:t>=this.options._width&&(t-=this.options._width),(s<0||s>=this.options._height)&&(s=s<0?-s:2*(this.options._height-1)-s,t+=(t<this.options._width/2?1:-1)*this.options._width/2);let i=this.options._datastart+Vg*(s*this.options._swidth+t),r=this.options.data[i],n=this.options.data[i+1];return r<<8|n}};function jg(e,t){t=Math.abs(t);let s=Rl(e,t);return 2*Math.abs(s)===t?s-=Rl(e,2*t)-s:2*Math.abs(s)>t&&(s+=s<0?t:-t),s}function Rl(e,t){return e-Math.floor(e/t)*t}var Wg=10,Hg=65535;function qn(e,t){let s=Yg(e),i=s.next();if(i.done||i.value.line!=="P5")throw new Error("Geoid model file: File not in PGM format");let r=Number.MAX_VALUE,n=0,o=-1,a=-1,h="NONE",c="UNKNOWN",l=0,u=0,f=null,m=null;do{i=s.next();let M=i.value.line;if(M.length)if(M[0]==="#"){let y=M.split(" "),E=y[0],w=y[1];if(E!=="#"||!w)continue;let T=y.length>2?y.slice(2):[];if(w==="Description")h=T.join(" ");else if(w==="DateTime")c=T.join(" ");else if(w==="Offset"){if(!y[2])throw new Error("Geoid model file: Error reading offset");r=parseInt(y[2],10)}else if(w==="Scale"){if(!y[2])throw new Error("Geoid model file: Error reading scale");n=parseFloat(y[2])}else w===(t.cubic?"MaxCubicError":"MaxBilinearError")?isFinite(parseFloat(y[2]))&&(o=parseFloat(y[2])):w===(t.cubic?"RMSCubicError":"RMSBilinearError")&&isFinite(parseFloat(y[2]))&&(a=parseFloat(y[2]))}else{let y=M.split(" ");if(y=y.filter(E=>E!==""),l=parseInt(y[0],10),u=parseInt(y[1],10),!(l&&u))throw new Error("Geoid model file: Error reading raster size");break}}while(!i.done);i=s.next();let d=parseInt(i.value.line,10);if(i.done)throw new Error("Geoid model file: Error reading maxval");if(d!==Hg)throw new Error("Geoid model file: Incorrect value of maxval");if(f=i.value.offset,m=l,r===Number.MAX_VALUE)throw new Error("Geoid model file: Offset not set");if(n===0)throw new Error("Geoid model file: Scale not set");if(n<0)throw new Error("Geoid model file: Scale must be positive");if(u<2||l<2)throw new Error("Geoid model file: Raster size too small");if(l&1)throw new Error("Geoid model file: Raster width is odd");if(!(u&1))throw new Error("Geoid model file: Raster height is even");let g=l/360,_=(u-1)/180;return new Es({cubic:t.cubic,_width:l,_height:u,_rlonres:g,_rlatres:_,_offset:r,_scale:n,_swidth:m,_datastart:f,_maxerror:o,_rmserror:a,_description:h,_datetime:c,data:e})}function*Yg(e){let t=0;do{let s=e.indexOf(Wg,t);if(s!==-1){let i=e.subarray(t,s);t=s+1,yield{offset:t,line:Cl(i)}}else{let i=e.subarray(t,e.length);t=e.length,yield{offset:t,line:Cl(i)}}}while(t<e.length);return{offset:t,line:""}}function Cl(e){let t="";for(let s of e)t+=String.fromCharCode(s);return t}var Al=new Map;function Il(e,t){Dn(e,"CRS"),Bt.defineProjectionAliases({[e]:t})}function Ol(e,t){Dn(e,"datum grid"),Bt.registerDatumGrid(e,t)}function Bn(e,t){Dn(e,"geoid model"),Al.set(e,t)}function Nl(e,t,s={}){let i=qn(t,s);return Bn(e,i),i}function Zi(e){return Al.get(e)}function Dn(e,t){if(!e.trim())throw new Error(`${t} name must not be empty`)}var Fn="EPSG:4326",Zg="EPSG:4978",$t=class{spatialReference;horizontalProjection;geographicProjection;heightOutputProjection;sourceIsGeocentric;outputIsGeocentric;sourceIsGeographic;outputIsGeographic;geoid;constructor(t,s={}){this.spatialReference=t,Xg(t);let i=t.targetCrs||t.sourceCrs;if(this.sourceIsGeocentric=Un(t.sourceCrs),this.outputIsGeocentric=Un(i),this.sourceIsGeographic=Ll(t.sourceCrs),this.outputIsGeographic=Ll(i),t.sourceCrs&&t.targetCrs&&!this.sourceIsGeocentric&&!this.outputIsGeocentric&&(this.horizontalProjection=new Bt({from:Xi(t.sourceCrs),to:Xi(t.targetCrs),enforceAxis:!1})),(ws(t)||this.sourceIsGeocentric||this.outputIsGeocentric)&&(!this.sourceIsGeographic&&!this.sourceIsGeocentric&&(this.geographicProjection=new Bt({from:Xi(t.sourceCrs),to:Fn,enforceAxis:!1})),!this.outputIsGeographic&&!this.outputIsGeocentric&&(this.heightOutputProjection=new Bt({from:Fn,to:Xi(i),enforceAxis:!1}))),ws(t)&&(this.geoid=$g(s.geoidModel),!this.geoid)){let r=typeof s.geoidModel=="string"?` "${s.geoidModel}"`:"";throw new Error(`Height conversion requires a registered geoid model${r}; call registerGeoidModel() or pass a parsed Geoid instance`)}}transformPosition(t){if(t.length<2)throw new Error("A spatial coordinate must contain at least x and y components");let s=[...t];if(ws(this.spatialReference)||this.sourceIsGeocentric||this.outputIsGeocentric){if(s.length<3||!Number.isFinite(s[2]))throw new Error("Three-dimensional CRS conversion requires a finite z coordinate");let i=this.toGeographic(s);if(ws(this.spatialReference)){let n=this.geoid.getHeight(i[1],i[0]);i[2]=Qg(i[2],n,this.spatialReference.heightReference,this.spatialReference.targetHeightReference)}let r=this.fromGeographic(i);return s.splice(0,r.length,...r),s}if(this.horizontalProjection){let i=this.horizontalProjection.project(s.slice(0,3));s.splice(0,i.length,...i)}return s}toGeographic(t){return this.sourceIsGeocentric?Array.from(P.WGS84.cartesianToCartographic(new p(t))):this.sourceIsGeographic?t.slice(0,3):this.geographicProjection.project(t.slice(0,3))}fromGeographic(t){return this.outputIsGeocentric?Array.from(P.WGS84.cartographicToCartesian(new p(t))):this.outputIsGeographic?t.slice(0,3):this.heightOutputProjection.project(t.slice(0,3))}};function Xi(e){if(!e)throw new Error("Cannot construct a projection because the CRS is unknown");return Gn(e,{mode:"horizontal"})}function Xg(e){if(e.outputCoordinates==="local-enu")throw new Error("local-enu output requires a dataset-derived local origin and must be created by a tileset source");if(e.outputCoordinates==="target-crs"&&!e.targetCrs)throw new Error("target-crs output requires targetCrs");if(!e.sourceCrs&&e.status==="unresolved")throw new Error("Cannot transform coordinates because the source CRS is unknown");if(ws(e)&&e.heightReference==="unknown")throw new Error("Cannot convert heights because the source height reference is unknown");if(e.coordinateFrame==="geocentric"&&!Un(e.sourceCrs))throw new Error("Only EPSG:4978 geocentric coordinates are supported by the current spatial transformer");if(e.status==="unresolved")throw new Error("The requested spatial output cannot be resolved from the available metadata")}function Un(e){return typeof e=="string"&&Gl(e)===Zg}function Ll(e){if(typeof e!="string")return!1;let t=Gl(e);return t===Fn||t==="EPSG:4979"||t==="OGC:CRS84"}function Gl(e){let t=e.trim().toUpperCase(),s=t.match(/(?:\/DEF\/CRS\/|URN:OGC:DEF:CRS:)([A-Z0-9_-]+)(?:\/|::)(?:[^/:]*[/:])?([A-Z0-9_.-]+)$/);return s?`${s[1]}:${s[2]}`:t}function ws(e){let t=e.targetHeightReference;return t!=="native"&&t!==e.heightReference}function $g(e){return typeof e=="string"?Zi(e):e}function Qg(e,t,s,i){if(s===i||i==="native")return e;if(s==="orthometric"&&i==="ellipsoidal")return e+t;if(s==="ellipsoidal"&&i==="orthometric")return e-t;throw new Error(`Unsupported height conversion from ${s} to ${i}`)}var Be=class{spatialReference;targetCoordinateFrame;positionTransformer;sourceToGeographicTransformer;geographicToTargetTransformer;sourceCoordinateFrame;sourceVerticalUnitScale;elevationMode;elevationOffset;elevationProvider;providerUnitScale;providerHeightTransformer;constructor(t,s={}){if(t.status!=="transformable"&&t.status!=="transformed")throw new Error("I3SSpatialTransformer requires a requested, transformable spatial output");let i=t.targetCrs||t.sourceCrs;if(!i)throw new Error("I3S spatial transformation requires a target CRS");if(this.positionTransformer=new $t(t,s),this.sourceCoordinateFrame=t.coordinateFrame,this.sourceVerticalUnitScale=t.verticalUnitScale,this.elevationMode=t.elevationMode,this.elevationOffset=(t.elevationOffset||0)*t.elevationUnitScale,this.elevationProvider=Kg(this.elevationMode,s),this.elevationProvider&&(typeof this.elevationProvider.sampleElevations!="function"||typeof this.elevationProvider.getElevationRange!="function"))throw new Error("An I3S elevation provider must implement sampleElevations() and getElevationRange()");let r=rs(this.elevationProvider?.unit||"meter");if(this.elevationProvider&&r===void 0)throw new Error(`Unsupported elevation-provider unit ${this.elevationProvider.unit}`);this.providerUnitScale=r||1,this.targetCoordinateFrame=kt(i),this.spatialReference=mi(t);let n=vt({sourceCrs:t.sourceCrs,heightReference:t.heightReference,coordinateFrame:t.coordinateFrame,axisOrder:t.axisOrder,provenance:t.provenance},{targetCrs:"EPSG:4326"});if(this.sourceToGeographicTransformer=new $t(n),qe(this.elevationMode)){if(!this.elevationProvider){let h=this.elevationMode==="relativeToScene"?"scene":"terrain";throw new Error(`I3S elevation mode ${this.elevationMode} requires a ${h} elevation provider`)}if(t.heightReference==="unknown")throw new Error(`I3S elevation mode ${this.elevationMode} requires a known source height reference`);let a=this.elevationProvider.heightReference||t.heightReference;if(a!==t.heightReference){if(t.heightReference!=="ellipsoidal"&&t.heightReference!=="orthometric")throw new Error("Converting elevation-provider heights requires an ellipsoidal or orthometric source height reference");let h=vt({sourceCrs:"EPSG:4326",heightReference:a,coordinateFrame:"geographic",axisOrder:"xyz",provenance:"caller-override"},{targetCrs:"EPSG:4326",targetHeightReference:t.heightReference,geoidModel:s.geoidModel});this.providerHeightTransformer=new $t(h,s)}}let o=vt({sourceCrs:"EPSG:4326",heightReference:t.heightReference,coordinateFrame:"geographic",axisOrder:"xyz",provenance:"format-default"},{targetCrs:i,targetHeightReference:t.targetHeightReference,geoidModel:s.geoidModel});this.geographicToTargetTransformer=new $t(o,s)}transformPosition(t){let s=this.placeSourcePositionsSync(t),i=this.positionTransformer.transformPosition([s[0],s[1],s[2]]);return[i[0],i[1],i[2]]}async transformPositionAsync(t){let s=await this.placeSourcePositions(t),i=this.positionTransformer.transformPosition([s[0],s[1],s[2]]);return[i[0],i[1],i[2]]}transformPlacedPosition(t){let s=this.positionTransformer.transformPosition([t[0],t[1],t[2]]);return[s[0],s[1],s[2]]}transformSourcePositionToGeographic(t){let s=this.placeSourcePositionsSync(t),i=this.sourceToGeographicTransformer.transformPosition([s[0],s[1],s[2]]);return[i[0],i[1],i[2]]}async transformSourcePositionToGeographicAsync(t){let s=await this.placeSourcePositions(t),i=this.sourceToGeographicTransformer.transformPosition([s[0],s[1],s[2]]);return[i[0],i[1],i[2]]}transformPositions(t,s){let i=this.placeSourcePositionsSync(t),r=this.placeSourcePositionsSync(s);return this.transformPlacedPositions(i,r)}async transformPositionsAsync(t,s){let i=new Float64Array(t.length+3);i.set(Array.from(t),0),i.set(Array.from(s).slice(0,3),t.length);let r=await this.placeSourcePositions(i);return this.transformPlacedPositions(r.subarray(0,t.length),r.subarray(t.length))}transformPlacedPositions(t,s){let i=this.transformPlacedPosition(s),r=new Float32Array(t.length),n=Float64Array.from(t);for(let h=0;h<t.length;h+=3){let c=this.transformPlacedPosition([t[h],t[h+1],t[h+2]]);r[h]=c[0]-i[0],r[h+1]=c[1]-i[1],r[h+2]=c[2]-i[2]}let o=this.targetCoordinateFrame==="geographic",a=o?new I:new I().translate(i);return{positions:r,sourcePositions:n,origin:i,cartographicOrigin:o?i:[0,0,0],coordinateSystem:o?"lnglat-offsets":"cartesian",modelMatrix:a}}transformNormals(t,s,i="earth-centered"){let r=new Float32Array(t.length);for(let n=0;n<t.length;n+=3){let o=this.sourceToGeographicTransformer.transformPosition([s[n],s[n+1],s[n+2]]),a=new p([t[n],t[n+1],t[n+2]]).normalize(),h=i==="earth-centered"?a:Fl(a,o),c=this.transformEcefNormal(h,o);r.set(c,n)}return r}transformBoundingVolume(t){let i=this.getGeographicBoundSamples(t).map(r=>this.geographicToTargetTransformer.transformPosition(r));return this.targetCoordinateFrame==="geographic"?{region:ee(i)}:{box:ce(i)}}async transformBoundingVolumeAsync(t){let i=(await this.getGeographicBoundSamplesAsync(t)).map(r=>this.geographicToTargetTransformer.transformPosition(r));return this.targetCoordinateFrame==="geographic"?{region:ee(i)}:{box:ce(i)}}transformBoundingVolumeToGeographic(t){return{region:ee(this.getGeographicBoundSamples(t))}}async transformBoundingVolumeToGeographicAsync(t){return{region:ee(await this.getGeographicBoundSamplesAsync(t))}}transformBoundingVolumeToGeocentric(t){let s=this.getGeographicBoundSamples(t).map(i=>Array.from(P.WGS84.cartographicToCartesian(new p(i))));return{box:ce(s)}}async transformBoundingVolumeToGeocentricAsync(t){let s=(await this.getGeographicBoundSamplesAsync(t)).map(i=>Array.from(P.WGS84.cartographicToCartesian(new p(i))));return{box:ce(s)}}transformBoundingSphereToGeographic(t){let s=t.mbs?.length?Array.from(t.mbs).slice(0,3):t.obb?Array.from(t.obb.center).slice(0,3):null;if(!s)throw new Error("I3S spatial transformation requires an MBS or OBB bound");let i=this.placeSourcePositionsSync(s),r=this.sourceToGeographicTransformer.transformPosition(Array.from(i)),n=t.mbs?.length?t.mbs[3]:Math.hypot(...Array.from(t.obb.halfSize).slice(0,3));return[r[0],r[1],r[2],n]}async transformBoundingSphereToGeographicAsync(t){return zl(await this.getGeographicBoundSamplesAsync(t))}async transformBoundsAsync(t){let s=await this.getGeographicBoundSamplesAsync(t),i=s.map(n=>Array.from(P.WGS84.cartographicToCartesian(new p(n)))),r=s.map(n=>this.geographicToTargetTransformer.transformPosition(n));return{boundingVolume:{box:ce(i)},spatialBoundingVolume:this.targetCoordinateFrame==="geographic"?{region:ee(r)}:{box:ce(r)},i3sLodMbs:qe(this.elevationMode)?zl(s):this.transformBoundingSphereToGeographic(t)}}async transformPointCloudBoundsAsync(t){let s=await this.getGeographicBoundSamplesAsync(t),i=s.map(r=>this.geographicToTargetTransformer.transformPosition(r));return{boundingVolume:{region:ee(s)},spatialBoundingVolume:this.targetCoordinateFrame==="geographic"?{region:ee(i)}:{box:ce(i)}}}getGeographicBoundSamples(t){let s=ql(t,this.sourceCoordinateFrame,this.sourceToGeographicTransformer,this.sourceVerticalUnitScale);if(!s.length)throw new Error("I3S spatial transformation requires an MBS or OBB bound");let i=this.placeSourcePositionsSync(s.flat(),!0),r=kn(i);return this.sourceCoordinateFrame==="geographic"?r:r.map(n=>this.sourceToGeographicTransformer.transformPosition(n))}async getGeographicBoundSamplesAsync(t){let s=ql(t,this.sourceCoordinateFrame,this.sourceToGeographicTransformer,this.sourceVerticalUnitScale);if(!s.length)throw new Error("I3S spatial transformation requires an MBS or OBB bound");if(qe(this.elevationMode)){let r=this.sourceCoordinateFrame==="geographic"?s:s.map(n=>this.sourceToGeographicTransformer.transformPosition(n));return await this.placeGeographicBoundSamples(r)}let i=kn(await this.placeSourcePositions(s.flat(),!0));return this.sourceCoordinateFrame==="geographic"?i:i.map(r=>this.sourceToGeographicTransformer.transformPosition(r))}async placeGeographicBoundSamples(t){let i=await this.elevationProvider.getElevationRange(Jg(t)),r=i.minimum*this.providerUnitScale,n=i.maximum*this.providerUnitScale;if(!Number.isFinite(r)||!Number.isFinite(n)||r>n)throw new Error("Elevation provider returned an invalid range; minimum and maximum must be finite and ordered");let o=t.map(l=>l[2]),a=Math.min(...o),h=Math.max(...o),c=[];for(let[l,u]of t){let f=this.providerHeightTransformer?this.providerHeightTransformer.transformPosition([l,u,r])[2]:r,m=this.providerHeightTransformer?this.providerHeightTransformer.transformPosition([l,u,n])[2]:n,d=Math.min(f,m),g=Math.max(f,m),_=this.elevationMode==="onTheGround"?d:d+a+this.elevationOffset,M=this.elevationMode==="onTheGround"?g:g+h+this.elevationOffset;c.push([l,u,_],[l,u,M])}return c}placeSourcePositionsSync(t,s=!1){if(qe(this.elevationMode))throw new Error(`I3S elevation mode ${this.elevationMode} requires asynchronous surface placement`);let i=Float64Array.from(t),r=this.elevationMode==="absoluteHeight"?this.elevationOffset:0;for(let n=2;n<i.length;n+=3)i[n]=i[n]*(s?1:this.sourceVerticalUnitScale)+r;return i}async placeSourcePositions(t,s=!1){if(!qe(this.elevationMode))return this.placeSourcePositionsSync(t,s);let i=Float64Array.from(t),r=kn(i).map(o=>{let a=this.sourceToGeographicTransformer.transformPosition(o);return[a[0],a[1]]}),n=await this.elevationProvider.sampleElevations(r);if(n.length!==r.length)throw new Error(`Elevation provider returned ${n.length} heights for ${r.length} positions`);for(let o=0;o<r.length;o++){let a=n[o]*this.providerUnitScale;if(!Number.isFinite(a))throw new Error(`Elevation provider returned a non-finite height at index ${o}`);let[h,c]=r[o],l=this.providerHeightTransformer?this.providerHeightTransformer.transformPosition([h,c,a])[2]:a,u=i[o*3+2]*(s?1:this.sourceVerticalUnitScale);i[o*3+2]=this.elevationMode==="onTheGround"?l:l+u+this.elevationOffset}return i}transformEcefNormal(t,s){if(this.targetCoordinateFrame==="geocentric")return t.normalize();if(this.targetCoordinateFrame==="geographic")return e2(t,s).normalize();let i=P.WGS84.cartographicToCartesian(new p(s)),r=[];for(let o of t2()){let a=P.WGS84.cartesianToCartographic(new p(i).add(o)),h=P.WGS84.cartesianToCartographic(new p(i).subtract(o)),c=this.geographicToTargetTransformer.transformPosition(a),l=this.geographicToTargetTransformer.transformPosition(h);r.push((c[0]-l[0])/2,(c[1]-l[1])/2,(c[2]-l[2])/2)}let n=new U(r);if(Math.abs(n.determinant())<1e-12)throw new Error("Cannot transform an I3S normal through a singular local projection");return n.invert().transpose(),new p(t).transformByMatrix3(n).normalize()}};function Kg(e,t){return e==="relativeToScene"?t.sceneElevationProvider:qe(e)?t.terrainElevationProvider:void 0}function qe(e){return e==="onTheGround"||e==="relativeToGround"||e==="relativeToScene"}function kn(e){if(e.length%3!==0)throw new Error("I3S position arrays must contain complete XYZ tuples");let t=[];for(let s=0;s<e.length;s+=3)t.push([e[s],e[s+1],e[s+2]]);return t}function Jg(e){let t=ee(e);return{west:t[0]*180/Math.PI,south:t[1]*180/Math.PI,east:t[2]*180/Math.PI,north:t[3]*180/Math.PI}}function zl(e){if(!e.length)throw new Error("I3S spatial transformation requires at least one bound sample");let t=e.map(n=>P.WGS84.cartographicToCartesian(new p(n))),s=new p;for(let n of t)s.add(n);s.scale(1/t.length);let i=0;for(let n of t)i=Math.max(i,new p(n).subtract(s).magnitude());let r=P.WGS84.cartesianToCartographic(s);return[r[0],r[1],r[2],i]}function ql(e,t,s,i){let r=e.obb;if(r){let h=Array.from(r.center).slice(0,3);h[2]*=i;let c=Array.from(r.halfSize).slice(0,3),l=new yt().fromArray(Array.from(r.quaternion)),u=[new p([c[0],0,0]).transformByQuaternion(l),new p([0,c[1],0]).transformByQuaternion(l),new p([0,0,c[2]]).transformByQuaternion(l)];if(t==="geographic"){let f=s.transformPosition(h),m=P.WGS84.cartographicToCartesian(new p(f)),d=e.normalReferenceFrame==="vertex-reference-frame"?u.map(g=>Fl(g,f)):u;return Bl().map(g=>{let _=new p(m);for(let M=0;M<3;M++)_.add(new p(d[M]).scale(g[M]));return Array.from(P.WGS84.cartesianToCartographic(_))})}return Bl().map(f=>{let m=new p(h);for(let d=0;d<3;d++)m.add(new p(u[d]).scale(f[d]));return Array.from(m)})}let n=e.mbs?Array.from(e.mbs):[];if(n.length<4)return[];let o=n.slice(0,3);o[2]*=i;let a=n[3];if(t==="geographic"){let h=s.transformPosition(o),c=P.WGS84.cartographicToCartesian(new p(h));return Dl().map(l=>Array.from(P.WGS84.cartesianToCartographic(new p(c).add(new p(l).scale(a)))))}return Dl().map(h=>Array.from(new p(o).add(new p(h).scale(a))))}function Bl(){return[-1,1].flatMap(e=>[-1,1].flatMap(t=>[-1,1].map(s=>[e,t,s])))}function Dl(){return[[1,0,0],[-1,0,0],[0,1,0],[0,-1,0],[0,0,1],[0,0,-1]]}function t2(){return[new p([1,0,0]),new p([0,1,0]),new p([0,0,1])]}function Fl(e,t){let s=t[0]*Math.PI/180,i=t[1]*Math.PI/180,r=new p([-Math.sin(s),Math.cos(s),0]),n=new p([-Math.sin(i)*Math.cos(s),-Math.sin(i)*Math.sin(s),Math.cos(i)]),o=new p([Math.cos(i)*Math.cos(s),Math.cos(i)*Math.sin(s),Math.sin(i)]);return r.scale(e[0]).add(n.scale(e[1])).add(o.scale(e[2]))}function e2(e,t){let s=t[0]*Math.PI/180,i=t[1]*Math.PI/180,r=new p([-Math.sin(s),Math.cos(s),0]),n=new p([-Math.sin(i)*Math.cos(s),-Math.sin(i)*Math.sin(s),Math.cos(i)]),o=new p([Math.cos(i)*Math.cos(s),Math.cos(i)*Math.sin(s),Math.sin(i)]);return new p([r.dot(e),n.dot(e),o.dot(e)])}function ce(e){let t=[1/0,1/0,1/0],s=[-1/0,-1/0,-1/0];for(let n of e)for(let o=0;o<3;o++)t[o]=Math.min(t[o],n[o]),s[o]=Math.max(s[o],n[o]);let i=t.map((n,o)=>(n+s[o])/2),r=t.map((n,o)=>(s[o]-n)/2);return[i[0],i[1],i[2],r[0],0,0,0,r[1],0,0,0,r[2]]}function ee(e){let t=e[0][0],s=1/0,i=-1/0,r=1/0,n=-1/0,o=1/0,a=-1/0;for(let h of e){let c=t+Vn(h[0]-t);s=Math.min(s,c),i=Math.max(i,c),r=Math.min(r,h[1]),n=Math.max(n,h[1]),o=Math.min(o,h[2]),a=Math.max(a,h[2])}return[Vn(s)*Math.PI/180,r*Math.PI/180,Vn(i)*Math.PI/180,n*Math.PI/180,o,a]}function Vn(e){return((e+180)%360+360)%360-180}var s2={draco:!1,meshopt:!1,dds:!1,ktx2:!1},$i=class{type=at.I3S;loader;contentLoader;url;basePath;tileset=null;loadOptions;coreApi;contentFormats={...s2};asset;properties;extras;credits;metadata;queryParams={};resolver;rootTileset;spatialTransformer;preparedRootHeader;constructor(t,s={}){let i=r2(t);this.rootTileset=Ul(t)?null:t,this.tileset=this.rootTileset,this.loader=i.loader,this.contentLoader=i2(i.loader),this.url=i.url,this.basePath=i.basePath||gt.dirname(i.url),this.resolver=i.resolver,this.coreApi=i.coreApi,this.loadOptions=s,this.initializeQueryParams(s)}async initialize(){this.rootTileset||(this.rootTileset=await this.loadRootData(this.getTileUrl(this.url),this.loadOptions)),this.tileset=this.rootTileset,this.rootTileset.root&&typeof this.rootTileset.root.then=="function"&&(this.rootTileset.root=await this.rootTileset.root),this.metadata={type:this.type,loader:this.loader,url:this.url,basePath:this.basePath,tileset:this.rootTileset,lodMetricType:this.rootTileset.lodMetricType,lodMetricValue:this.rootTileset.lodMetricValue,refine:this.rootTileset.root?.refine,spatialReference:Si(this.rootTileset)}}getMetadata(){if(!this.metadata)throw new Error("I3SSource has not been initialized");return this.metadata}async getRootTileset(){return this.getMetadata().tileset}async prepareTileset(t){let s=t.spatialReference;if(s.status==="unresolved")throw new Error(s.warnings[0]||"I3S spatial operations cannot be resolved from the supplied metadata and options");s.status!=="transformable"&&s.status!=="transformed"||(this.spatialTransformer||=new Be(s,t.options.spatial),t.spatialReference=this.spatialTransformer.spatialReference,this.preparedRootHeader=await this.transformTileHeader(this.getMetadata().tileset.root))}initializeTileHeaders(t,s,i){let r=i?s.root:this.preparedRootHeader||s.root;if(this.spatialTransformer&&!this.preparedRootHeader)throw new Error("I3S spatial root header was not prepared before tile initialization");let n=new Et(t,r,i||void 0);return i&&(i.children.push(n),n.depth=i.depth+1),n}createTraverser(t){return new Ri(t)}async loadTileContent(t){let s=this.getTileUrl(t.contentUrl),i=this.loader.id,r=this.loadOptions[i]||{},n=this.getMetadata(),o={...this.loadOptions,[i]:{...r,...t.tileset.options.i3s,_tileOptions:{attributeUrls:t.header.attributeUrls,textureUrl:t.header.textureUrl,textureUrls:t.header.textureUrls,textureFormat:t.header.textureFormat,textureLoaderOptions:t.header.textureLoaderOptions,materialDefinition:t.header.materialDefinition,layerType:t.header.layerType,pointRenderer:t.header.pointRenderer,pointSymbol:t.header.pointSymbol,isDracoGeometry:t.header.isDracoGeometry,mbs:t.header.mbs},_tilesetOptions:{store:n.tileset.store,attributeStorageInfo:n.tileset.attributeStorageInfo,fields:n.tileset.fields,spatialReference:t.tileset.spatialReference,spatialOptions:t.tileset.options.spatial},isTileHeader:!1}};return t.content=await this.loadResourceData(s,o,this.contentLoader),{loaded:!0}}async loadChildTileHeader(t,s,i){let r=this.getMetadata();if(r.tileset.nodePages||r.tileset.pointNodePages){let c=await r.tileset.nodePagesTile.formTileFromNodePages(s);return await this.transformTileHeader(c)}let n=this.getTileUrl(`${this.url}/nodes/${s}`),o=this.loadOptions.i3s&&typeof this.loadOptions.i3s=="object"?this.loadOptions.i3s:{},a={...this.loadOptions,i3s:{...o,isTileHeader:!0}},h=await this.loadResourceData(n,a);return await this.transformTileHeader(h)}getTileUrl(t){if(t.startsWith("data:")||!Object.keys(this.queryParams).length)return t;let s=t.indexOf("?");if(s===-1)return`${t}?${new URLSearchParams(this.queryParams).toString()}`;let i=t.slice(s+1),r=new Set(i.split("&").map(a=>a.split("=",1)[0])),n=new URLSearchParams;for(let[a,h]of Object.entries(this.queryParams))r.has(a)||n.set(a,h);let o=n.toString();return o?`${t}${i?"&":""}${o}`:t}getViewState(t){if(this.spatialTransformer&&t){let n=new p(t.boundingVolume.center),o=new p(t.header.i3sLodMbs.slice(0,3));return this.spatialTransformer.targetCoordinateFrame==="geographic"?{boundingVolume:t.boundingVolume,cartographicCenter:o,cartesianCenter:n,zoom:1}:{boundingVolume:t.boundingVolume,cartographicCenter:o,cartesianCenter:n,zoom:1}}let s=this.getMetadata(),i=s.tileset.fullExtent;if(i){let{xmin:n,xmax:o,ymin:a,ymax:h,zmin:c,zmax:l}=i,u=new p(n+(o-n)/2,a+(h-a)/2,c+(l-c)/2),f=new p;return P.WGS84.cartographicToCartesian(u,f),{cartographicCenter:u,cartesianCenter:f,zoom:sn(i,u,f)}}let r=s.tileset.store?.extent;if(r){let[n,o,a,h]=r,c=new p(n+(a-n)/2,o+(h-o)/2,0),l=new p;return P.WGS84.cartographicToCartesian(c,l),{cartographicCenter:c,cartesianCenter:l,zoom:xh(r,c,l)}}return console.warn("Extent is not defined in the tileset header"),{cartographicCenter:new p,zoom:1}}onTileLoaded(t,s){switch(s.header.isDracoGeometry&&(this.contentFormats.draco=!0),s.header.textureFormat){case"dds":this.contentFormats.dds=!0;break;case"ktx2":this.contentFormats.ktx2=!0;break;default:}}getTilesTotalCount(){return this.getMetadata().tileset?.nodePagesTile?.nodesInNodePages||null}async loadWithCoreApi(t,s,i=this.loader){if(!this.coreApi)throw new Error("I3SSource requires an injected coreApi to load tileset data");return await this.coreApi.load(t,i,s)}async loadRootData(t,s){return this.resolver?await this.resolver.loadRoot(t,this.loader,s):await this.loadWithCoreApi(t,s)}initializeQueryParams(t){let s=t.i3s;if(s&&typeof s=="object"&&"token"in s){let i=s.token;typeof i=="string"&&(this.queryParams.token=i)}}async loadResourceData(t,s,i=this.loader){return this.resolver?await this.resolver.loadResource(t,i,s):await this.loadWithCoreApi(t,s,i)}async transformTileHeader(t){if(!this.spatialTransformer)return t;let s={mbs:t.mbs,obb:t.obb,normalReferenceFrame:this.getMetadata().tileset.store?.normalReferenceFrame},i=await this.spatialTransformer.transformBoundsAsync(s);return{...t,boundingVolume:i.boundingVolume,spatialBoundingVolume:i.spatialBoundingVolume,i3sLodMbs:i.i3sLodMbs}}};function i2(e){return e.contentLoader||e}function Ul(e){return!!(e&&typeof e=="object"&&"url"in e&&"loader"in e&&!("type"in e))}function r2(e){return Ul(e)?{...e,basePath:e.basePath||gt.dirname(e.url)}:{url:e.url,loader:e.loader,basePath:e.basePath||gt.dirname(e.url),resolver:e.resolver,coreApi:e.coreApi}}var le=class{index;parent;children;content;error;id;zoom;userData;boundingBox;_abortController;_loader;_loaderId;_isLoaded;_isCancelled;_needsReload;_bbox;constructor(t){this.index=t,this.parent=null,this.children=[],this.content=null,this.error=null,this._loader=void 0,this._abortController=null,this._loaderId=0,this._isLoaded=!1,this._isCancelled=!1,this._needsReload=!1}get bbox(){return this._bbox}set bbox(t){this._bbox||(this._bbox=t,"west"in t?this.boundingBox=[[t.west,t.south],[t.east,t.north]]:this.boundingBox=[[t.left,t.top],[t.right,t.bottom]])}get data(){let t=this._loader;return!this._isCancelled&&t!==void 0?t.then(()=>this.data):this.content}get isLoaded(){return this._isLoaded&&!this._needsReload}get isLoading(){return!!this._loader&&!this._isCancelled}get hasError(){return!!this.error}get needsReload(){return this._needsReload||this._isCancelled}get byteLength(){let t=this.content?this.content.byteLength:0;return Number.isFinite(t)?t:0}async _loadData({getData:t,requestScheduler:s,onLoad:i,onError:r}){let n=(_,M,y)=>{if(y===this._loaderId){if(this._loader=void 0,this.content=_,this.error=M?n2(M):null,this._isCancelled&&!_){this._isLoaded=!1;return}if(this._isLoaded=!0,this._isCancelled=!1,M){r(M,this);return}i(this)}},{index:o,id:a,bbox:h,userData:c,zoom:l}=this,u=this._loaderId;this._abortController=new AbortController;let{signal:f}=this._abortController,m=await s.scheduleRequest(this,()=>1);if(!m){this._isCancelled=!0;return}if(this._isCancelled){m.done();return}let d=null,g;try{d=await t({index:o,id:a,bbox:h,userData:c,zoom:l,signal:f})}catch(_){g=_||!0}finally{m.done()}n(d,g,u)}loadData(t){return this._isLoaded=!1,this._isCancelled=!1,this._needsReload=!1,this.error=null,this._loaderId++,this._loader=this._loadData(t),this._loader}setNeedsReload(){this.isLoading&&(this.abort(),this._loader=void 0),this._needsReload=!0}abort(){this.isLoaded||(this._isCancelled=!0,this._abortController?.abort())}};function n2(e){return e instanceof Error?e:typeof e=="string"?new Error(e):new Error("Tile request failed")}var jn="never",Wn="no-overlap",bs="best-available",kl={adapter:null,extent:null,tileSize:512,maxZoom:null,minZoom:null,maxCacheSize:100,maxCacheByteSize:null,refinementStrategy:bs,zRange:null,maxRequests:6,debounceTime:0,zoomOffset:0,onTileLoad:()=>{},onTileUnload:()=>{},onTileError:()=>{},tileSource:null},Ts=class e{stats;sourceMetadata=null;opts;_requestScheduler;_cache;_dirty;_tiles;_cacheByteSize;_unloadedTileCount;_listeners=new Set;_consumers=new Map;_explicitOptionKeys=new Set;_baseOpts={};_sourceMetadataOverrides={};_maxZoom;_minZoom;_lastTileContext=null;constructor(t){if(this.stats=new St({id:"Tileset2D",stats:[{name:"Tiles In Cache"},{name:"Cache Size"},{name:"Visible Tiles"},{name:"Selected Tiles"},{name:"Loading Tiles"},{name:"Unloaded Tiles"},{name:"Consumers"}]}),this.opts={...kl,...t,getTileData:t.getTileData||(()=>null),tileSource:t.tileSource},this._requestScheduler=new Ut({throttleRequests:this.opts.maxRequests>0||this.opts.debounceTime>0,maxRequests:this.opts.maxRequests,debounceTime:this.opts.debounceTime}),this._cache=new Map,this._tiles=[],this._dirty=!1,this._cacheByteSize=0,this._unloadedTileCount=0,!this.opts.tileSource&&!t.getTileData)throw new Error("Tileset2D requires either `getTileData` or `tileSource`.");this.setOptions(t),this._updateStats(),this.opts.tileSource&&this._initializeTileSource(this.opts.tileSource).catch(()=>{})}static fromTileSource(t,s={}){return new e({...s,tileSource:t})}get tiles(){return this._tiles}get cacheByteSize(){return this._cacheByteSize}get selectedTiles(){return Array.from(this._getSelectedTilesUnion())}get visibleTiles(){let t=this._getVisibleTilesUnion();for(let s of this._getSelectedTilesUnion())t.add(s);return Array.from(t)}get loadingTiles(){return Array.from(this._cache.values()).filter(t=>t.isLoading)}get unloadedTiles(){return Array.from(this._cache.values()).filter(t=>!t.isLoaded)}get maxZoom(){return this._maxZoom}get minZoom(){return this._minZoom}get refinementStrategy(){return this.opts.refinementStrategy||bs}get adapter(){return this.opts.adapter}subscribe(t){return this._listeners.add(t),()=>this._listeners.delete(t)}attachConsumer(t){this._consumers.set(t,{selectedTiles:new Set,visibleTiles:new Set}),this._updateStats()}detachConsumer(t){this._consumers.delete(t),this._pruneRequests(),this._resizeCache(),this._updateStats()}setOptions(t){this._rememberExplicitOptions(t),this._baseOpts={...this._baseOpts,...t};let s=this.opts.maxRequests,i=this.opts.debounceTime;this._applyResolvedOptions(),(s!==this.opts.maxRequests||i!==this.opts.debounceTime)&&(this._requestScheduler=new Ut({throttleRequests:this.opts.maxRequests>0||this.opts.debounceTime>0,maxRequests:this.opts.maxRequests,debounceTime:this.opts.debounceTime}))}finalize(){for(let t of this._cache.values())t.isLoading&&t.abort();this._cache.clear(),this._tiles=[],this._consumers.clear(),this._cacheByteSize=0,this._unloadedTileCount=0,this._updateStats()}reloadAll(){let t=this._getSelectedTilesUnion();for(let s of this._cache.keys()){let i=this._cache.get(s);i&&!t.has(i)?(this._cache.delete(s),this._handleTileUnload(i),this._dirty=!0):i&&i.setNeedsReload()}this._cacheByteSize=this._getCacheByteSize(),this.prepareTiles(),this._updateStats()}updateConsumer(t,s,i){this._consumers.set(t,{selectedTiles:new Set(s),visibleTiles:new Set(i)}),this._pruneRequests(),this._resizeCache(),this._updateStats()}prepareTiles(){this._dirty&&(this._rebuildTree(),this._syncTiles(),this._dirty=!1)}getTileIndices({viewState:t,maxZoom:s,minZoom:i,zRange:r,modelMatrix:n,modelMatrixInverse:o}){let{adapter:a,tileSize:h,extent:c,zoomOffset:l}=this.opts;if(!a)throw new Error("Tileset2D requires an adapter before tile traversal can be used.");return this._lastTileContext={viewState:t,tileSize:h},a.getTileIndices({viewState:t,maxZoom:s,minZoom:i,zRange:r,tileSize:h,extent:o2(c),modelMatrix:n,modelMatrixInverse:o,zoomOffset:l})}getTileId(t){return`${t.x}-${t.y}-${t.z}`}getTileZoom(t){return t.z}getTileMetadata(t){if(!this._lastTileContext)throw new Error("Tileset2D metadata requested before traversal context was set.");if(!this.opts.adapter)throw new Error("Tileset2D requires an adapter before tile metadata can be derived.");return{bbox:this.opts.adapter.getTileBoundingBox(this._lastTileContext,t)}}getParentIndex(t){return{x:Math.floor(t.x/2),y:Math.floor(t.y/2),z:t.z-1}}getTile(t,s){let i=this.getTileId(t),r=this._cache.get(i),n=!1;return!r&&s?(r=new le(t),Object.assign(r,this.getTileMetadata(r.index)),Object.assign(r,{id:i,zoom:this.getTileZoom(r.index)}),n=!0,this._cache.set(i,r),this._dirty=!0,this._updateStats()):r&&r.needsReload&&(n=!0),r&&this._touchTile(i,r),r&&n&&s&&(r.loadData({getData:this.opts.getTileData,requestScheduler:this._requestScheduler,onLoad:this._handleTileLoad.bind(this),onError:this._handleTileError.bind(this)}).catch(()=>{}),this._updateStats()),r}async _initializeTileSource(t){try{this.sourceMetadata=await t.getMetadata(),this._sourceMetadataOverrides=this._getMetadataOverrides(this.sourceMetadata),this._applyResolvedOptions(),this._notifyUpdate()}catch(s){let i=s instanceof Error?s:new Error(`TileSource metadata error: ${String(s)}`);this._notifyError(i)}}_rememberExplicitOptions(t){for(let s of Object.keys(t))this._explicitOptionKeys.add(s)}_applyResolvedOptions(){let t={...kl,...this._sourceMetadataOverrides,...this._baseOpts};if(t.tileSource){let s=t.tileSource;t.getTileData=i=>s.getTileData(i)}this.opts=t,this._maxZoom=typeof this.opts.maxZoom=="number"&&Number.isFinite(this.opts.maxZoom)?Math.floor(this.opts.maxZoom):void 0,this._minZoom=typeof this.opts.minZoom=="number"&&Number.isFinite(this.opts.minZoom)?Math.ceil(this.opts.minZoom):void 0}_getMetadataOverrides(t){if(!t)return{};let s={};return!this._explicitOptionKeys.has("minZoom")&&Number.isFinite(t.minZoom)&&(s.minZoom=t.minZoom),!this._explicitOptionKeys.has("maxZoom")&&Number.isFinite(t.maxZoom)&&(s.maxZoom=t.maxZoom),!this._explicitOptionKeys.has("extent")&&t.boundingBox&&(s.extent=[t.boundingBox[0][0],t.boundingBox[0][1],t.boundingBox[1][0],t.boundingBox[1][1]]),s}_handleTileLoad(t){this.opts.onTileLoad?.(t),this._cacheByteSize=this._getCacheByteSize(),this._resizeCache();for(let s of this._listeners)s.onTileLoad?.(t);this._updateStats()}_handleTileError(t,s){this.opts.onTileError?.(t,s);for(let i of this._listeners)i.onTileError?.(t,s);this._updateStats()}_handleTileUnload(t){this._unloadedTileCount++,this.opts.onTileUnload?.(t);for(let s of this._listeners)s.onTileUnload?.(t);this._updateStats()}_notifyUpdate(){for(let t of this._listeners)t.onUpdate?.()}_notifyError(t){for(let s of this._listeners)s.onError?.(t)}_updateStats(){this._setStatCount("Tiles In Cache",this._cache.size),this._setStatCount("Cache Size",this.cacheByteSize),this._setStatCount("Visible Tiles",this.visibleTiles.length),this._setStatCount("Selected Tiles",this.selectedTiles.length),this._setStatCount("Loading Tiles",this.loadingTiles.length),this._setStatCount("Unloaded Tiles",this._unloadedTileCount),this._setStatCount("Consumers",this._consumers.size);for(let t of this._listeners)t.onStatsChange?.(this.stats)}_setStatCount(t,s){this.stats.get(t).reset().addCount(s)}_getSelectedTilesUnion(){let t=new Set;for(let s of this._consumers.values())for(let i of s.selectedTiles)t.add(i);return t}_getVisibleTilesUnion(){let t=new Set;for(let s of this._consumers.values())for(let i of s.visibleTiles)t.add(i);return t}_touchTile(t,s){this._cache.delete(t),this._cache.set(t,s)}_getCacheByteSize(){let t=0;for(let s of this._cache.values())t+=s.byteLength;return t}_pruneRequests(){let{maxRequests:t=0}=this.opts,s=this._getSelectedTilesUnion(),i=this._getVisibleTilesUnion(),r=[],n=0;for(let o of this._cache.values())o.isLoading&&(n++,!s.has(o)&&!i.has(o)&&r.push(o));for(;t>0&&n>t&&r.length>0;){let o=r.shift();o&&o.abort(),n--}}_rebuildTree(){for(let t of this._cache.values())t.parent=null,t.children&&(t.children.length=0);for(let t of this._cache.values()){let s=this._getNearestAncestor(t);t.parent=s,s?.children&&s.children.push(t)}}_syncTiles(){this._tiles=Array.from(this._cache.values()).sort((t,s)=>t.zoom-s.zoom)}_resizeCache(){let t=this.opts.maxCacheSize??100,s=this.opts.maxCacheByteSize??1/0,i=this._getVisibleTilesUnion(),r=this._getSelectedTilesUnion();if(this._cache.size>t||this._cacheByteSize>s){for(let[o,a]of this._cache)if(!i.has(a)&&!r.has(a)&&(this._cache.delete(o),this._cacheByteSize=this._getCacheByteSize(),this._handleTileUnload(a)),this._cache.size<=t&&this._cacheByteSize<=s)break;this._dirty=!0}this._dirty&&(this._rebuildTree(),this._syncTiles(),this._dirty=!1)}_getNearestAncestor(t){let{_minZoom:s=0}=this,i=t.index;for(;this.getTileZoom(i)>s;){i=this.getParentIndex(i);let r=this.getTile(i);if(r)return r}return null}};function o2(e){return e&&e.length===4?e:void 0}var Qi={getMetadata:async()=>({name:"",keywords:[],layers:[]}),getImage:async()=>null,debounceTime:0},Ki=class e{metadata=null;_opts;_listeners=new Set;_currentRequest=null;_lastAcceptedRequestId=-1;_nextRequestId=0;_loadCounter=0;_timeoutId=null;_abortController=null;_finalized=!1;constructor(t){if(this._opts=this._normalizeOptions(t),!this._opts.imageSource&&(!t.getImage||!t.getMetadata))throw new Error("ImageSet requires either `imageSource` or both `getImage` and `getMetadata`.")}static fromImageSource(t,s={}){return new e({...s,imageSource:t})}get isLoaded(){return this._loadCounter===0&&!!this._currentRequest}get image(){return this._currentRequest?.image||null}get currentRequest(){return this._currentRequest}get imageSource(){return this._opts.imageSource}subscribe(t){return this._listeners.add(t),()=>this._listeners.delete(t)}setOptions(t){let s=this._opts.imageSource,i=this._normalizeOptions({...this._opts,...t}),r=s!==i.imageSource||this._opts.getImage!==i.getImage||this._opts.getMetadata!==i.getMetadata;this._opts=i,r&&(this._cancelScheduledImage(),this.metadata=null,this._currentRequest=null,this._lastAcceptedRequestId=-1,this._nextRequestId=0,this._emitUpdate())}async loadMetadata(){this._startLoading();try{let t=await this._opts.getMetadata();if(this._finalized)return t;this.metadata=t;for(let s of this._listeners)s.onMetadataLoad?.(t);return this._emitUpdate(),t}catch(t){let s=Vl(t,"Image metadata request failed");if(!this._finalized)for(let i of this._listeners)i.onMetadataLoadError?.(s);throw s}finally{this._finishLoading()}}requestImage(t,s=this._opts.debounceTime){let i=this._nextRequestId++;return this._cancelScheduledImage(),this._abortActiveRequest(),s>0?this._timeoutId=setTimeout(()=>{this._timeoutId=null,this._loadImage(i,t)},s):this._loadImage(i,t),i}finalize(){this._finalized=!0,this._cancelScheduledImage(),this._abortActiveRequest(),this._listeners.clear()}async _loadImage(t,s){if(!this._finalized){this._startLoading();for(let i of this._listeners)i.onImageLoadStart?.(t,s);try{let i=new AbortController;this._abortController=i;let r=await this._opts.getImage({...s,signal:i.signal});if(this._finalized||t<=this._lastAcceptedRequestId)return;this._lastAcceptedRequestId=t,this._currentRequest={requestId:t,parameters:s,image:r};for(let n of this._listeners)n.onImageLoad?.(this._currentRequest);this._emitUpdate()}catch(i){if(a2(i))return;let r=Vl(i,"Image request failed");if(!this._finalized)for(let n of this._listeners)n.onImageLoadError?.(t,r,s)}finally{this._abortController?.signal===s.signal&&(this._abortController=null),this._finishLoading()}}}_normalizeOptions(t){let s=t.imageSource||null;return{...Qi,...t,imageSource:s,getMetadata:t.getMetadata||(()=>s?s.getMetadata():Qi.getMetadata()),getImage:t.getImage||(i=>s?s.getImage(i):Qi.getImage(i)),debounceTime:t.debounceTime??Qi.debounceTime}}_emitUpdate(){for(let t of this._listeners)t.onUpdate?.()}_startLoading(){let t=this._loadCounter>0;this._loadCounter++,t||(this._emitLoadingStateChange(!0),this._emitUpdate())}_finishLoading(){let t=this._loadCounter>0;this._loadCounter=Math.max(0,this._loadCounter-1),t&&this._loadCounter===0&&(this._emitLoadingStateChange(!1),this._emitUpdate())}_emitLoadingStateChange(t){for(let s of this._listeners)s.onLoadingStateChange?.(t)}_cancelScheduledImage(){this._timeoutId!==null&&(clearTimeout(this._timeoutId),this._timeoutId=null)}_abortActiveRequest(){this._abortController?.abort(),this._abortController=null}};function a2(e){return e instanceof Error&&e.name==="AbortError"}function Vl(e,t){return e instanceof Error?e:typeof e=="string"?new Error(e):new Error(t)}var Ps={getMetadata:async()=>({width:0,height:0,bandCount:0,dtype:"uint8"}),getRaster:async()=>({data:new Uint8Array(0),width:0,height:0,bandCount:0,dtype:"uint8"}),debounceTime:0,shouldRefetch:()=>!0},Ji=class e{metadata=null;_opts;_listeners=new Set;_currentRequest=null;_lastAcceptedRequestId=-1;_nextRequestId=0;_loadCounter=0;_timeoutId=null;_abortController=null;_finalized=!1;constructor(t){if(this._opts=this._normalizeOptions(t),!this._opts.rasterSource&&(!t.getRaster||!t.getMetadata))throw new Error("RasterSet requires either `rasterSource` or both `getRaster` and `getMetadata`.")}static fromRasterSource(t,s={}){return new e({...s,rasterSource:t})}static fromCallbacks(t){return new e(t)}get isLoaded(){return this._loadCounter===0&&!!this._currentRequest}get raster(){return this._currentRequest?.raster||null}get currentRequest(){return this._currentRequest}get rasterSource(){return this._opts.rasterSource}subscribe(t){return this._listeners.add(t),()=>this._listeners.delete(t)}setOptions(t){let s=this._opts.rasterSource,i=this._normalizeOptions({...this._opts,...t}),r=s!==i.rasterSource||this._opts.getRaster!==i.getRaster||this._opts.getMetadata!==i.getMetadata;this._opts=i,r&&(this._cancelScheduledRaster(),this.metadata=null,this._currentRequest=null,this._lastAcceptedRequestId=-1,this._nextRequestId=0,this._emitUpdate())}async loadMetadata(){this._startLoading();try{let t=await this._opts.getMetadata();if(this._finalized)return t;this.metadata=t;for(let s of this._listeners)s.onMetadataLoad?.(t);return this._emitUpdate(),t}catch(t){let s=jl(t,"Raster metadata request failed");if(!this._finalized)for(let i of this._listeners)i.onMetadataLoadError?.(s);throw s}finally{this._finishLoading()}}requestRaster(t,s=this._opts.debounceTime){if(!this.shouldRefetchRaster(t))return this._currentRequest?.requestId??-1;let i=this._nextRequestId++;return this._cancelScheduledRaster(),s>0?this._timeoutId=setTimeout(()=>{this._timeoutId=null,this._loadRaster(i,t)},s):this._loadRaster(i,t),i}shouldRefetchRaster(t){return this._opts.shouldRefetch({currentRequest:this._currentRequest,metadata:this.metadata,nextParameters:t})}finalize(){this._finalized=!0,this._cancelScheduledRaster(),this._abortActiveRequest(),this._listeners.clear()}async _loadRaster(t,s){if(!this._finalized){this._startLoading();for(let i of this._listeners)i.onRasterLoadStart?.(t,s);try{let i=new AbortController;this._abortController=i;let r=await this._opts.getRaster(h2(s,i.signal));if(this._finalized||i.signal.aborted||t<=this._lastAcceptedRequestId)return;this._lastAcceptedRequestId=t,this._currentRequest={requestId:t,parameters:s,raster:r};for(let n of this._listeners)n.onRasterLoad?.(this._currentRequest);this._emitUpdate()}catch(i){if(c2(i))return;let r=jl(i,"Raster request failed");if(!this._finalized)for(let n of this._listeners)n.onRasterLoadError?.(t,r,s)}finally{this._abortController=null,this._finishLoading()}}}_normalizeOptions(t){let s=t.rasterSource||null;return{...Ps,...t,rasterSource:s,getMetadata:t.getMetadata||(()=>s?s.getMetadata():Ps.getMetadata()),getRaster:t.getRaster||(i=>s?s.getRaster(i):Ps.getRaster(i)),debounceTime:t.debounceTime??Ps.debounceTime,shouldRefetch:t.shouldRefetch||(i=>Ps.shouldRefetch(i))}}_emitUpdate(){for(let t of this._listeners)t.onUpdate?.()}_emitLoadingStateChange(t){for(let s of this._listeners)s.onLoadingStateChange?.(t)}_startLoading(){let t=this._loadCounter>0;this._loadCounter++,t||(this._emitLoadingStateChange(!0),this._emitUpdate())}_finishLoading(){let t=this._loadCounter>0;this._loadCounter=Math.max(0,this._loadCounter-1),t&&this._loadCounter===0&&(this._emitLoadingStateChange(!1),this._emitUpdate())}_cancelScheduledRaster(){this._timeoutId!==null&&(clearTimeout(this._timeoutId),this._timeoutId=null)}_abortActiveRequest(){this._abortController?.abort(),this._abortController=null}};function h2(e,t){let s=Array.isArray(e)?e.slice():Object.create(Object.getPrototypeOf(e),Object.getOwnPropertyDescriptors(e));return Object.defineProperty(s,"signal",{configurable:!0,enumerable:!0,value:t,writable:!0}),s}function jl(e,t){return e instanceof Error?e:typeof e=="string"?new Error(e):new Error(t)}function c2(e){return e instanceof Error&&e.name==="AbortError"}var De=class{header;parent;children=[];childrenLoaded=!1;childrenPromise=null;selected=!1;viewportIds=[];content=null;contentAvailable=!1;contentFailed=!1;isContentLoading=!1;constructor(t,s=null){this.header=t,this.parent=s}get id(){return this.header.id}get level(){return this.header.level}get pointCount(){return this.header.pointCount}get geometricError(){return this.header.geometricError}get boundingVolume(){return this.header.boundingVolume}setSelected(t){this.selected=!0,this.viewportIds.includes(t)||this.viewportIds.push(t)}clearSelection(){this.selected=!1,this.viewportIds=[]}};var l2={debounceTime:0,minimumNodePixelSize:150,maximumScreenSpaceError:1,lodSelectionMetricType:"maxScreenThresholdSQ",densityThreshold:1,pointBudget:2e6,maxDepth:Number.POSITIVE_INFINITY,onTileLoad:()=>{},onTileError:()=>{},onTraversalComplete:e=>e,onUpdate:()=>{}},tr=64,er=class{dataSource;options;root=null;cartographicCenter=null;zoom=1;boundingVolume=null;visibleTilesCount=0;frameNumberValue=0;pendingCount=0;lastUpdatedViewports=null;updatePromise=null;tilesMap=new Map;constructor(t,s={}){this.dataSource=t,this.options={...l2,...s},this.tilesetInitializationPromise=this.initialize()}tilesetInitializationPromise;get isReady(){return this.dataSource.isReady}get frameNumber(){return this.frameNumberValue}get tiles(){return Array.from(this.tilesMap.values())}isLoaded(){return this.frameNumberValue>0&&this.pendingCount===0&&this.selectedTiles.every(t=>t.contentAvailable||t.contentFailed)}selectedTiles=[];update(t=null){this.selectTiles(t).catch(()=>{})}destroy(){this.selectedTiles=[],this.tilesMap.clear(),this.root=null,this.cartographicCenter=null,this.boundingVolume=null,this.visibleTilesCount=0,this.pendingCount=0,this.lastUpdatedViewports=null,this.updatePromise=null}async initialize(){await this.dataSource.initialize();let t=await this.dataSource.getRootTile();this.root=this.getOrCreateTile(t,null);let s=await this.dataSource.getViewState?.();this.boundingVolume=s?.boundingVolume||this.root.boundingVolume;let i=s?.cartographicCenter||this.root.boundingVolume.center;this.cartographicCenter=new p(i),this.zoom=s?.zoom||this.estimateZoom(this.boundingVolume)}async selectTiles(t=null){return await this.tilesetInitializationPromise,t&&(this.lastUpdatedViewports=t),this.updatePromise||(this.updatePromise=new Promise((s,i)=>{setTimeout(()=>{this.doSelectTiles().then(()=>s(this.frameNumberValue)).catch(i).finally(()=>{this.updatePromise=null})},this.options.debounceTime)})),this.updatePromise}async doSelectTiles(){if(!this.root||!this.lastUpdatedViewports)return;let t=new Set(this.selectedTiles.map(a=>a.id));for(let a of this.tilesMap.values())a.clearSelection();this.frameNumberValue++;let s=Array.isArray(this.lastUpdatedViewports)?this.lastUpdatedViewports:[this.lastUpdatedViewports],i=new Map,r=new Set,n=0;for(let a of s){let h=this.getTraversalContext(a);n=await this.traverseTiles(h,i,n,r)}this.visibleTilesCount=r.size,this.selectedTiles=this.options.onTraversalComplete(Array.from(i.values()));for(let a of this.selectedTiles)this.loadTile(a).catch(()=>{});let o=new Set(this.selectedTiles.map(a=>a.id));this.haveSameIds(t,o)||this.options.onUpdate()}async traverseTiles(t,s,i,r){if(!this.root)return i;let n=i,o=[{tile:this.root,weight:this.estimateScreenRadius(this.root,t.viewport)}];for(;o.length>0;){o.sort((u,f)=>f.weight-u.weight);let a=o.shift();if(!a)break;let{tile:h,weight:c}=a;if(!this.isVisible(h,t))continue;if(r.add(h.id),!s.has(h.id)&&h.pointCount>0){if(n>0&&n+h.pointCount>this.options.pointBudget)break;s.set(h.id,h),n+=h.pointCount}if(s.has(h.id)&&h.setSelected(t.viewport.id),!this.shouldRefine(h,c))continue;let l=await this.getVisibleChildren(h,t);l.length>0&&o.push(...l)}return n}shouldRefine(t,s){if(t.level<this.options.maxDepth&&Number.isFinite(s)&&(t.header.lodSelectionMetricType||this.options.lodSelectionMetricType)==="density-threshold"){let i=Math.max(1,Math.PI*s*s),r=t.pointCount/i,n=t.header.lodThreshold||this.options.densityThreshold;return r<n}return t.level<this.options.maxDepth&&Number.isFinite(s)&&s>=this.options.minimumNodePixelSize}getTraversalContext(t){let s=this.getCullingVolume(t);return{viewport:t,cullingVolume:this.shouldUseCullingVolume(t,s)?s:null}}isVisible(t,s){if(s.cullingVolume){let r=this.getCommonSpaceBoundingSphere(t.boundingVolume,s.viewport);if(r)return this.isBoundingSphereInsideCullingVolume(r,s.cullingVolume)}let i=this.getProjectedFootprint(t.boundingVolume,s.viewport);return i?this.isProjectedFootprintVisible(i,s.viewport):!1}shouldUseCullingVolume(t,s){if(!this.root||!s)return!1;let i=this.getCommonSpaceBoundingSphere(this.root.boundingVolume,t);if(!i)return!1;if(this.isBoundingSphereInsideCullingVolume(i,s))return!0;let r=this.getProjectedFootprint(this.root.boundingVolume,t);return!r||!this.isProjectedFootprintVisible(r,t)}isBoundingSphereInsideCullingVolume(t,s){return s.computeVisibilityWithPlaneMask(t,K.MASK_INDETERMINATE)!==K.MASK_OUTSIDE}isProjectedFootprintVisible(t,s){return!(t.x+t.radius<-tr||t.x-t.radius>s.width+tr||t.y+t.radius<-tr||t.y-t.radius>s.height+tr)}estimateScreenRadius(t,s){let i=this.getProjectedFootprint(t.boundingVolume,s);return i?i.radius:0}projectBounds(t,s){let i=this.getBoundingVolumeCorners(t),r=Number.POSITIVE_INFINITY,n=Number.POSITIVE_INFINITY,o=Number.NEGATIVE_INFINITY,a=Number.NEGATIVE_INFINITY;try{for(let h of i){let[c,l]=s.project(h);!Number.isFinite(c)||!Number.isFinite(l)||(r=Math.min(r,c),n=Math.min(n,l),o=Math.max(o,c),a=Math.max(a,l))}}catch{return null}return!Number.isFinite(r)||!Number.isFinite(n)||!Number.isFinite(o)||!Number.isFinite(a)?null:{minX:r,minY:n,maxX:o,maxY:a}}getProjectedFootprint(t,s){let i=Number.NaN,r=Number.NaN;try{[i,r]=s.project(t.center)}catch{return null}if(!Number.isFinite(i)||!Number.isFinite(r))return null;let n=this.getBoundingVolumeCorners(t),o=0;try{for(let a of n){let[h,c]=s.project(a);!Number.isFinite(h)||!Number.isFinite(c)||(o=Math.max(o,Math.hypot(h-i,c-r)))}}catch{return null}if(o===0){let a=this.projectBounds(t,s);a&&(o=Math.max(a.maxX-a.minX,a.maxY-a.minY)/2)}return{x:i,y:r,radius:o}}async getVisibleChildren(t,s){return t.level>=this.options.maxDepth?[]:(await this.getChildren(t)).map(r=>({tile:r,weight:this.estimateScreenRadius(r,s.viewport)})).filter(r=>this.isVisible(r.tile,s))}async getChildren(t){if(t.childrenLoaded)return t.children;if(!t.childrenPromise){let s=this.dataSource.getChildren(t.header).then(i=>i.map(r=>this.getOrCreateTile(r,t))).then(i=>(t.children=i,t.childrenLoaded=!0,i));t.childrenPromise=s.finally(()=>{t.childrenPromise===s&&(t.childrenPromise=null)})}return t.childrenPromise}getOrCreateTile(t,s){let i=this.tilesMap.get(t.id);if(i)return i.header=t,s&&i.parent!==s&&(i.parent=s),i;let r=new De(t,s);return this.tilesMap.set(t.id,r),s&&!s.children.find(n=>n.id===r.id)&&s.children.push(r),r}async loadTile(t){if(!(t.contentAvailable||t.isContentLoading||t.contentFailed)){t.isContentLoading=!0,this.pendingCount++;try{let s=await this.dataSource.loadTileContent(t.header);t.content=s,t.contentAvailable=!0,s&&this.options.onTileLoad(t)}catch(s){t.contentFailed=!0,this.options.onTileError(t,s)}finally{t.isContentLoading=!1,this.pendingCount--}}}estimateZoom(t){if(!t||t.coordinateFrame==="cartesian")return 1;let[s,i]=t.cartographicBounds,r=t.coversFullLongitude?360:t.wrapsDateline?360-Math.abs(i[0]-s[0]):Math.abs(i[0]-s[0]),n=Math.max(r,1e-6);return Math.max(1,Math.round(Math.log2(360/n)))}haveSameIds(t,s){if(t.size!==s.size)return!1;for(let i of t)if(!s.has(i))return!1;return!0}getBoundingVolumeCorners(t){let[s,i]=t.cartographicBounds,r=t.coversFullLongitude?[[-180,180]]:t.wrapsDateline?[[s[0],180],[-180,i[0]]]:[[s[0],i[0]]],n=[],o=360-Math.abs(i[0]-s[0]),a=s[0]+o/2;for(let[h,c]of r){let l=m=>{if(!t.wrapsDateline)return m;let d=m;for(;d-a>180;)d-=360;for(;d-a<-180;)d+=360;return d},u=l(h),f=l(c);n.push([u,s[1],s[2]||0],[u,s[1],i[2]||0],[u,i[1],s[2]||0],[u,i[1],i[2]||0],[f,s[1],s[2]||0],[f,s[1],i[2]||0],[f,i[1],s[2]||0],[f,i[1],i[2]||0])}return n}getCullingVolume(t){let s=t.getFrustumPlanes?.bind(t);if(!s)return null;let i=s(),r=["left","right","bottom","top","near","far"],n=[];for(let o of r){let a=i[o];if(!a)return null;n.push(new Y(a.normal,-a.distance))}return new K(n)}getCommonSpaceBoundingSphere(t,s){let i=s.projectPosition?.bind(s);if(!i)return null;let r=this.getBoundingVolumeCorners(t),n=Number.POSITIVE_INFINITY,o=Number.POSITIVE_INFINITY,a=Number.POSITIVE_INFINITY,h=Number.NEGATIVE_INFINITY,c=Number.NEGATIVE_INFINITY,l=Number.NEGATIVE_INFINITY;try{for(let u of r){let[f,m,d=0]=i(u);!Number.isFinite(f)||!Number.isFinite(m)||!Number.isFinite(d)||(n=Math.min(n,f),o=Math.min(o,m),a=Math.min(a,d),h=Math.max(h,f),c=Math.max(c,m),l=Math.max(l,d))}}catch{return null}return!Number.isFinite(n)||!Number.isFinite(o)||!Number.isFinite(a)||!Number.isFinite(h)||!Number.isFinite(c)||!Number.isFinite(l)?null:new tt().fromCornerPoints([n,o,a],[h,c,l])}};return f0(Rs);})();
11
11
  return __exports__;
12
12
  });