@gisatcz/deckgl-geolib 2.5.0-dev.4 → 2.5.0-dev.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/index.js +60 -7
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/index.min.js +2 -2
- package/dist/cjs/index.min.js.map +1 -1
- package/dist/esm/index.js +60 -7
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/index.min.js +2 -2
- package/dist/esm/index.min.js.map +1 -1
- package/dist/esm/types/core/CogTiles.d.ts +7 -2
- package/package.json +1 -1
package/dist/cjs/index.min.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";var A=require("@deck.gl/core"),I=require("@deck.gl/geo-layers"),g=require("@deck.gl/layers"),B=require("@deck.gl/extensions"),e=require("chroma-js"),C=require("@loaders.gl/schema"),i=require("@loaders.gl/loader-utils"),t=require("@deck.gl/mesh-layers");let Q=!1;function E(){"undefined"==typeof window||Q||(window.addEventListener("unhandledrejection",A=>{A.reason&&"AbortError"===A.reason.name&&A.preventDefault()}),Q=!0)}function s(A){return(I,...g)=>a(A,I,g)}function o(A,I){return s(r(A,I).get)}const{apply:a,getOwnPropertyDescriptor:r,getPrototypeOf:n,ownKeys:h}=Reflect,{iterator:l,toStringTag:c}=Symbol,D=Object,{create:w,defineProperty:y}=D,d=Array.prototype[l],f=s(d),S=ArrayBuffer;o(S.prototype,"byteLength");const u="undefined"!=typeof SharedArrayBuffer?SharedArrayBuffer:null;u&&o(u.prototype,"byteLength");const G=n(Uint8Array);G.from;const N=G.prototype;N[l],s(N.keys),s(N.values),s(N.entries),s(N.set),s(N.reverse),s(N.fill),s(N.copyWithin),s(N.sort),s(N.slice),s(N.subarray),o(N,"buffer"),o(N,"byteOffset"),o(N,"length"),o(N,c);const F=Uint8Array,k=Uint16Array,R=Uint32Array,L=Float32Array,U=n([][l]()),p=s(U.next),Y=s(function*(){}().next),M=n(U),m=s(DataView.prototype.getUint16),K=WeakMap,H=K.prototype,J=s(H.get),b=s(H.set),q=new K,x=w(null,{next:{value:function(){const A=J(q,this);return p(A)}},[l]:{value:function(){return this}}});const T=new K,O=w(M,{next:{value:function(){const A=J(T,this);return Y(A)},writable:!0,configurable:!0}});for(const A of h(U))"next"!==A&&y(O,A,r(U,A));const P=new S(4),v=new L(P),V=new R(P),Z=new k(512),j=new F(512);for(let A=0;A<256;++A){const I=A-127;I<-24?(Z[A]=0,Z[256|A]=32768,j[A]=24,j[256|A]=24):I<-14?(Z[A]=1024>>-I-14,Z[256|A]=1024>>-I-14|32768,j[A]=-I-1,j[256|A]=-I-1):I<=15?(Z[A]=I+15<<10,Z[256|A]=I+15<<10|32768,j[A]=13,j[256|A]=13):I<128?(Z[A]=31744,Z[256|A]=64512,j[A]=24,j[256|A]=24):(Z[A]=31744,Z[256|A]=64512,j[A]=13,j[256|A]=13)}const z=new R(2048);for(let A=1;A<1024;++A){let I=A<<13,g=0;for(;!(8388608&I);)I<<=1,g-=8388608;I&=-8388609,g+=947912704,z[A]=I|g}for(let A=1024;A<2048;++A)z[A]=939524096+(A-1024<<13);const W=new R(64);for(let A=1;A<31;++A)W[A]=A<<23;W[31]=1199570944,W[32]=2147483648;for(let A=33;A<63;++A)W[A]=2147483648+(A-32<<23);W[63]=3347054592;const _=new k(64);for(let A=1;A<64;++A)32!==A&&(_[A]=1024);function X(A,I,...g){return function(A){const I=A>>10;return V[0]=z[_[I]+(1023&A)]+W[I],v[0]}(m(A,I,...function(A){if(A[l]===d&&U.next===p)return A;const I=w(x);return b(q,I,f(A)),I}(g)))}function $(A,I,g){const B="object"==typeof A?A.outer:A,e=B.slice(0,B.indexOf(">")+1),C=['"',"'"];for(let A=0;A<C.length;A++){const g=C[A],B=new RegExp(I+"\\="+g+"([^"+g+"]*)"+g).exec(e);if(B)return B[1]}}function AA(A,I,g){const B=new RegExp(I).exec(A.slice(g));return B?g+B.index+B[0].length-1:-1}function IA(A,I){const g=new RegExp(I,"g"),B=A.match(g);return B?B.length:0}function gA(A,I,g){const B=g&&g.debug||!1,e=!(g&&!1===typeof g.nested),C=g&&g.startIndex||0;B&&console.log("[xml-utils] starting findTagByName with",I," and ",g);const i=function(A,I,g){const B=new RegExp(I).exec(A.slice(g));return B?g+B.index:-1}(A,`<${I}[ \n>/]`,C);if(B&&console.log("[xml-utils] start:",i),-1===i)return;const t=A.slice(i+I.length);let Q=AA(t,"^[^<]*[ /]>",0);const E=-1!==Q&&"/"===t[Q-1];if(B&&console.log("[xml-utils] selfClosing:",E),!1===E)if(e){let A=0,g=1,B=0;for(;-1!==(Q=AA(t,"[ /]"+I+">",A));){const e=t.substring(A,Q+1);if(g+=IA(e,"<"+I+"[ \n\t>]"),B+=IA(e,"</"+I+">"),B>=g)break;A=Q}}else Q=AA(t,"[ /]"+I+">",0);const s=i+I.length+Q+1;if(B&&console.log("[xml-utils] end:",s),-1===s)return;const o=A.slice(i,s);let a;return a=E?null:o.slice(o.indexOf(">")+1,o.lastIndexOf("<")),{inner:a,outer:o,start:i,end:s}}const BA={BYTE:1,ASCII:2,SHORT:3,LONG:4,RATIONAL:5,SBYTE:6,UNDEFINED:7,SSHORT:8,SLONG:9,SRATIONAL:10,FLOAT:11,DOUBLE:12,IFD:13,LONG8:16,SLONG8:17,IFD8:18},eA={[BA.BYTE]:1,[BA.ASCII]:1,[BA.SBYTE]:1,[BA.UNDEFINED]:1,[BA.SHORT]:2,[BA.SSHORT]:2,[BA.LONG]:4,[BA.SLONG]:4,[BA.FLOAT]:4,[BA.IFD]:4,[BA.RATIONAL]:8,[BA.SRATIONAL]:8,[BA.DOUBLE]:8,[BA.LONG8]:8,[BA.SLONG8]:8,[BA.IFD8]:8};function CA(A){const I=eA[A];if(void 0===I)throw new RangeError(`Invalid field type: ${A}`);return I}const iA={NewSubfileType:{tag:254,type:BA.LONG,eager:!0},SubfileType:{tag:255,type:BA.SHORT,eager:!0},ImageWidth:{tag:256,type:BA.SHORT,eager:!0},ImageLength:{tag:257,type:BA.SHORT,eager:!0},BitsPerSample:{tag:258,type:BA.SHORT,isArray:!0,eager:!0},Compression:{tag:259,type:BA.SHORT,eager:!0},PhotometricInterpretation:{tag:262,type:BA.SHORT,eager:!0},Threshholding:{tag:263,type:BA.SHORT},CellWidth:{tag:264,type:BA.SHORT},CellLength:{tag:265,type:BA.SHORT},FillOrder:{tag:266,type:BA.SHORT},DocumentName:{tag:269,type:BA.ASCII},ImageDescription:{tag:270,type:BA.ASCII},Make:{tag:271,type:BA.ASCII},Model:{tag:272,type:BA.ASCII},StripOffsets:{tag:273,type:BA.SHORT,isArray:!0},Orientation:{tag:274,type:BA.SHORT},SamplesPerPixel:{tag:277,type:BA.SHORT,eager:!0},RowsPerStrip:{tag:278,type:BA.SHORT,eager:!0},StripByteCounts:{tag:279,type:BA.LONG,isArray:!0},MinSampleValue:{tag:280,type:BA.SHORT,isArray:!0},MaxSampleValue:{tag:281,type:BA.SHORT,isArray:!0},XResolution:{tag:282,type:BA.RATIONAL},YResolution:{tag:283,type:BA.RATIONAL},PlanarConfiguration:{tag:284,type:BA.SHORT,eager:!0},PageName:{tag:285,type:BA.ASCII},XPosition:{tag:286,type:BA.RATIONAL},YPosition:{tag:287,type:BA.RATIONAL},FreeOffsets:{tag:288,type:BA.LONG},FreeByteCounts:{tag:289,type:BA.LONG},GrayResponseUnit:{tag:290,type:BA.SHORT},GrayResponseCurve:{tag:291,type:BA.SHORT,isArray:!0},T4Options:{tag:292,type:BA.LONG},T6Options:{tag:293,type:BA.LONG},ResolutionUnit:{tag:296,type:BA.SHORT},PageNumber:{tag:297,type:BA.SHORT,isArray:!0},TransferFunction:{tag:301,type:BA.SHORT,isArray:!0},Software:{tag:305,type:BA.ASCII},DateTime:{tag:306,type:BA.ASCII},Artist:{tag:315,type:BA.ASCII},HostComputer:{tag:316,type:BA.ASCII},Predictor:{tag:317,type:BA.SHORT},WhitePoint:{tag:318,type:BA.RATIONAL,isArray:!0},PrimaryChromaticities:{tag:319,type:BA.RATIONAL,isArray:!0},ColorMap:{tag:320,type:BA.SHORT,isArray:!0},HalftoneHints:{tag:321,type:BA.SHORT,isArray:!0},TileWidth:{tag:322,type:BA.SHORT,eager:!0},TileLength:{tag:323,type:BA.SHORT,eager:!0},TileOffsets:{tag:324,type:BA.LONG,isArray:!0},TileByteCounts:{tag:325,type:BA.SHORT,isArray:!0},InkSet:{tag:332,type:BA.SHORT},InkNames:{tag:333,type:BA.ASCII},NumberOfInks:{tag:334,type:BA.SHORT},DotRange:{tag:336,type:BA.BYTE,isArray:!0},TargetPrinter:{tag:337,type:BA.ASCII},ExtraSamples:{tag:338,type:BA.BYTE,isArray:!0,eager:!0},SampleFormat:{tag:339,type:BA.SHORT,isArray:!0,eager:!0},SMinSampleValue:{tag:340,isArray:!0},SMaxSampleValue:{tag:341,isArray:!0},TransferRange:{tag:342,type:BA.SHORT,isArray:!0},JPEGProc:{tag:512,type:BA.SHORT},JPEGInterchangeFormat:{tag:513,type:BA.LONG},JPEGInterchangeFormatLngth:{tag:514,type:BA.LONG},JPEGRestartInterval:{tag:515,type:BA.SHORT},JPEGLosslessPredictors:{tag:517,type:BA.SHORT,isArray:!0},JPEGPointTransforms:{tag:518,type:BA.SHORT,isArray:!0},JPEGQTables:{tag:519,type:BA.LONG,isArray:!0},JPEGDCTables:{tag:520,type:BA.LONG,isArray:!0},JPEGACTables:{tag:521,type:BA.LONG,isArray:!0},YCbCrCoefficients:{tag:529,type:BA.RATIONAL,isArray:!0},YCbCrSubSampling:{tag:530,type:BA.SHORT,isArray:!0},YCbCrPositioning:{tag:531,type:BA.SHORT},ReferenceBlackWhite:{tag:532,type:BA.LONG,isArray:!0},Copyright:{tag:33432,type:BA.ASCII},BadFaxLines:{tag:326},CleanFaxData:{tag:327},ClipPath:{tag:343},ConsecutiveBadFaxLines:{tag:328},Decode:{tag:433},DefaultImageColor:{tag:434},Indexed:{tag:346},JPEGTables:{tag:347,isArray:!0,eager:!0},StripRowCounts:{tag:559,isArray:!0},SubIFDs:{tag:330,isArray:!0},XClipPathUnits:{tag:344},YClipPathUnits:{tag:345},ApertureValue:{tag:37378},ColorSpace:{tag:40961},DateTimeDigitized:{tag:36868},DateTimeOriginal:{tag:36867},ExifIFD:{tag:34665,name:"Exif IFD",type:BA.LONG},ExifVersion:{tag:36864},ExposureTime:{tag:33434},FileSource:{tag:41728},Flash:{tag:37385},FlashpixVersion:{tag:40960},FNumber:{tag:33437},ImageUniqueID:{tag:42016},LightSource:{tag:37384},MakerNote:{tag:37500},ShutterSpeedValue:{tag:37377},UserComment:{tag:37510},IPTC:{tag:33723},CZ_LSMINFO:{tag:34412},ICCProfile:{tag:34675,name:"ICC Profile"},XMP:{tag:700},GDAL_METADATA:{tag:42112},GDAL_NODATA:{tag:42113,type:BA.ASCII,eager:!0},Photoshop:{tag:34377},ModelPixelScale:{tag:33550,type:BA.DOUBLE,isArray:!0,eager:!0},ModelTiepoint:{tag:33922,type:BA.DOUBLE,isArray:!0,eager:!0},ModelTransformation:{tag:34264,type:BA.DOUBLE,isArray:!0,eager:!0},GeoKeyDirectory:{tag:34735,type:BA.SHORT,isArray:!0,eager:!0},GeoDoubleParams:{tag:34736,type:BA.DOUBLE,isArray:!0,eager:!0},GeoAsciiParams:{tag:34737,type:BA.ASCII,eager:!0},LercParameters:{tag:50674,eager:!0}},tA={},QA={};function EA(A,I,g,B=!1,e=!1){tA[I]=A,QA[A]={tag:A,name:I,type:"string"==typeof g?BA[g]:g,isArray:B,eager:e}}for(const[A,I]of Object.entries(iA)){const g=I;EA(g.tag,g.name||A,g.type,g.isArray,g.eager)}function sA(A){return"number"==typeof A?A:tA[A]}const oA=0,aA=1,rA=2,nA=3,hA=5,lA=6,cA=8,DA=0,wA=1,yA=0,dA=1,fA=2,SA={1024:"GTModelTypeGeoKey",1025:"GTRasterTypeGeoKey",1026:"GTCitationGeoKey",2048:"GeographicTypeGeoKey",2049:"GeogCitationGeoKey",2050:"GeogGeodeticDatumGeoKey",2051:"GeogPrimeMeridianGeoKey",2052:"GeogLinearUnitsGeoKey",2053:"GeogLinearUnitSizeGeoKey",2054:"GeogAngularUnitsGeoKey",2055:"GeogAngularUnitSizeGeoKey",2056:"GeogEllipsoidGeoKey",2057:"GeogSemiMajorAxisGeoKey",2058:"GeogSemiMinorAxisGeoKey",2059:"GeogInvFlatteningGeoKey",2060:"GeogAzimuthUnitsGeoKey",2061:"GeogPrimeMeridianLongGeoKey",2062:"GeogTOWGS84GeoKey",3072:"ProjectedCSTypeGeoKey",3073:"PCSCitationGeoKey",3074:"ProjectionGeoKey",3075:"ProjCoordTransGeoKey",3076:"ProjLinearUnitsGeoKey",3077:"ProjLinearUnitSizeGeoKey",3078:"ProjStdParallel1GeoKey",3079:"ProjStdParallel2GeoKey",3080:"ProjNatOriginLongGeoKey",3081:"ProjNatOriginLatGeoKey",3082:"ProjFalseEastingGeoKey",3083:"ProjFalseNorthingGeoKey",3084:"ProjFalseOriginLongGeoKey",3085:"ProjFalseOriginLatGeoKey",3086:"ProjFalseOriginEastingGeoKey",3087:"ProjFalseOriginNorthingGeoKey",3088:"ProjCenterLongGeoKey",3089:"ProjCenterLatGeoKey",3090:"ProjCenterEastingGeoKey",3091:"ProjCenterNorthingGeoKey",3092:"ProjScaleAtNatOriginGeoKey",3093:"ProjScaleAtCenterGeoKey",3094:"ProjAzimuthAngleGeoKey",3095:"ProjStraightVertPoleLongGeoKey",3096:"ProjRectifiedGridAngleGeoKey",4096:"VerticalCSTypeGeoKey",4097:"VerticalCitationGeoKey",4098:"VerticalDatumGeoKey",4099:"VerticalUnitsGeoKey"};for(const[A,I]of Object.entries(SA));const uA=new Map;async function GA(A){const I=!A.hasTag("StripOffsets");return{tileWidth:I?await A.loadValue("TileWidth"):await A.loadValue("ImageWidth"),tileHeight:I?await A.loadValue("TileLength"):await A.loadValue("RowsPerStrip")||await A.loadValue("ImageLength"),planarConfiguration:await A.loadValue("PlanarConfiguration"),bitsPerSample:await A.loadValue("BitsPerSample"),predictor:await A.loadValue("Predictor")||1}}function NA(A,I,g=GA,B=!0){Array.isArray(A)||(A=[A]),A.forEach(A=>{uA.set(A,{importFn:I,decoderParameterFn:g,preferWorker:B})})}const FA=[{cases:[void 0,1],importFn:()=>Promise.resolve().then(function(){return ZI}).then(A=>A.default),preferWorker:!1},{cases:5,importFn:()=>Promise.resolve().then(function(){return WI}).then(A=>A.default)},{cases:6,importFn:()=>{throw new Error("old style JPEG compression is not supported.")}},{cases:7,importFn:()=>Promise.resolve().then(function(){return sg}).then(A=>A.default),decoderParameterFn:async A=>({...await GA(A),JPEGTables:await A.loadValue("JPEGTables")})},{cases:[8,32946],importFn:()=>Promise.resolve().then(function(){return FB}).then(A=>A.default)},{cases:32773,importFn:()=>Promise.resolve().then(function(){return kB}).then(A=>A.default)},{cases:34887,importFn:()=>Promise.resolve().then(function(){return xB}).then(async A=>(await A.zstd.init(),A)).then(A=>A.default),decoderParameterFn:async A=>({...await GA(A),LercParameters:await A.loadValue("LercParameters")})},{cases:5e4,importFn:()=>Promise.resolve().then(function(){return zB}).then(async A=>(await A.zstd.init(),A)).then(A=>A.default)},{cases:50001,importFn:()=>Promise.resolve().then(function(){return WB}).then(A=>A.default),decoderParameterFn:async A=>({...await GA(A),samplesPerPixel:Number(await A.loadValue("SamplesPerPixel"))||4}),preferWorker:!1}];for(const A of FA){const{cases:I,importFn:g,decoderParameterFn:B,preferWorker:e}=A;NA(I,g,B,e)}function kA(A,I,g,B=1){return new(Object.getPrototypeOf(A).constructor)(I*g*B)}function RA(A,I,g){return(1-g)*A+g*I}function LA(A,I,g,B,e,C="nearest"){switch(C.toLowerCase()){case"nearest":return function(A,I,g,B,e){const C=I/B,i=g/e;return A.map(A=>{const t=kA(A,B,e);for(let Q=0;Q<e;++Q){const e=Math.min(Math.round(i*Q),g-1);for(let g=0;g<B;++g){const i=Math.min(Math.round(C*g),I-1),E=A[e*I+i];t[Q*B+g]=E}}return t})}(A,I,g,B,e);case"bilinear":case"linear":return function(A,I,g,B,e){const C=I/B,i=g/e;return A.map(A=>{const t=kA(A,B,e);for(let Q=0;Q<e;++Q){const e=i*Q,E=Math.floor(e),s=Math.min(Math.ceil(e),g-1);for(let g=0;g<B;++g){const i=C*g,o=i%1,a=Math.floor(i),r=Math.min(Math.ceil(i),I-1),n=A[E*I+a],h=A[E*I+r],l=A[s*I+a],c=A[s*I+r],D=RA(RA(n,h,o),RA(l,c,o),e%1);t[Q*B+g]=D}}return t})}(A,I,g,B,e);default:throw new Error(`Unsupported resampling method: '${C}'`)}}function UA(A,I,g,B,e,C,i="nearest"){switch(i.toLowerCase()){case"nearest":return function(A,I,g,B,e,C){const i=I/B,t=g/e,Q=kA(A,B,e,C);for(let E=0;E<e;++E){const e=Math.min(Math.round(t*E),g-1);for(let g=0;g<B;++g){const t=Math.min(Math.round(i*g),I-1);for(let i=0;i<C;++i){const s=A[e*I*C+t*C+i];Q[E*B*C+g*C+i]=s}}}return Q}(A,I,g,B,e,C);case"bilinear":case"linear":return function(A,I,g,B,e,C){const i=I/B,t=g/e,Q=kA(A,B,e,C);for(let E=0;E<e;++E){const e=t*E,s=Math.floor(e),o=Math.min(Math.ceil(e),g-1);for(let g=0;g<B;++g){const t=i*g,a=t%1,r=Math.floor(t),n=Math.min(Math.ceil(t),I-1);for(let i=0;i<C;++i){const t=A[s*I*C+r*C+i],h=A[s*I*C+n*C+i],l=A[o*I*C+r*C+i],c=A[o*I*C+n*C+i],D=RA(RA(t,h,a),RA(l,c,a),e%1);Q[E*B*C+g*C+i]=D}}}return Q}(A,I,g,B,e,C);default:throw new Error(`Unsupported resampling method: '${i}'`)}}function pA(A,I,g){let B=0;for(let e=I;e<g;++e)B+=A[e];return B}function YA(A,I,g){let B;switch(A){case 1:I<=8?B=Uint8Array:I<=16?B=Uint16Array:I<=32&&(B=Uint32Array);break;case 2:8===I?B=Int8Array:16===I?B=Int16Array:32===I&&(B=Int32Array);break;case 3:switch(I){case 16:case 32:B=Float32Array;break;case 64:B=Float64Array}}if(B){if("number"==typeof g)return new B(g);if(g instanceof ArrayBuffer)return new B(g)}throw Error("Unsupported data format/bitsPerSample")}class MA{constructor(A,I,g,B){this.fileDirectory=A,this.littleEndian=I,this.tiles=g?[]:null,this.isTiled=!A.hasTag("StripOffsets");const e=A.getValue("PlanarConfiguration")??1;if(1!==e&&2!==e)throw new Error("Invalid planar configuration.");this.planarConfiguration=e,this.source=B}getFileDirectory(){return this.fileDirectory}getGeoKeys(){return this.fileDirectory.parseGeoKeyDirectory()}getWidth(){return this.fileDirectory.getValue("ImageWidth")||0}getHeight(){return this.fileDirectory.getValue("ImageLength")||0}getSamplesPerPixel(){return this.fileDirectory.getValue("SamplesPerPixel")??1}getTileWidth(){return this.isTiled?this.fileDirectory.getValue("TileWidth")||0:this.getWidth()}getTileHeight(){if(this.isTiled)return this.fileDirectory.getValue("TileLength")||0;const A=this.fileDirectory.hasTag("RowsPerStrip")&&this.fileDirectory.getValue("RowsPerStrip");return A?Math.min(A,this.getHeight()):this.getHeight()}getBlockWidth(){return this.getTileWidth()}getBlockHeight(A){return this.isTiled||(A+1)*this.getTileHeight()<=this.getHeight()?this.getTileHeight():this.getHeight()-A*this.getTileHeight()}getBytesPerPixel(){let A=0;const I=this.fileDirectory.getValue("BitsPerSample")||[];for(let g=0;g<I.length;++g)A+=this.getSampleByteSize(g);return A}getSampleByteSize(A){const I=this.fileDirectory.getValue("BitsPerSample")||[];if(A>=I.length)throw new RangeError(`Sample index ${A} is out of range.`);return Math.ceil(I[A]/8)}getReaderForSample(A){const I=this.fileDirectory.getValue("SampleFormat"),g=I?I[A]:1,B=(this.fileDirectory.getValue("BitsPerSample")||[])[A];switch(g){case 1:if(B<=8)return DataView.prototype.getUint8;if(B<=16)return DataView.prototype.getUint16;if(B<=32)return DataView.prototype.getUint32;break;case 2:if(B<=8)return DataView.prototype.getInt8;if(B<=16)return DataView.prototype.getInt16;if(B<=32)return DataView.prototype.getInt32;break;case 3:switch(B){case 16:return function(A,I){return X(this,A,I)};case 32:return DataView.prototype.getFloat32;case 64:return DataView.prototype.getFloat64}}throw Error("Unsupported data format/bitsPerSample")}getSampleFormat(A=0){const I=this.fileDirectory.getValue("SampleFormat");return I?I[A]:1}getBitsPerSample(A=0){const I=this.fileDirectory.getValue("BitsPerSample");return I?I[A]:0}getArrayForSample(A,I){return YA(this.getSampleFormat(A),this.getBitsPerSample(A),I)}async getTileOrStrip(A,I,g,B,e){const C=Math.ceil(this.getWidth()/this.getTileWidth()),i=Math.ceil(this.getHeight()/this.getTileHeight());let t;const{tiles:Q}=this;if(1===this.planarConfiguration?t=I*C+A:2===this.planarConfiguration&&(t=g*C*i+I*C+A),void 0===t)throw new Error("Could not determine tile or strip index.");let E,s;if(this.isTiled?(E=Number(await this.fileDirectory.loadValueIndexed("TileOffsets",t)),s=Number(await this.fileDirectory.loadValueIndexed("TileByteCounts",t))):(E=Number(await this.fileDirectory.loadValueIndexed("StripOffsets",t)),s=Number(await this.fileDirectory.loadValueIndexed("StripByteCounts",t))),0===s){const B=this.getBlockHeight(I)*this.getTileWidth(),e=2===this.planarConfiguration?this.getSampleByteSize(g):this.getBytesPerPixel(),C=new ArrayBuffer(B*e);return this.getArrayForSample(g,C).fill(this.getGDALNoData()||0),{x:A,y:I,sample:g,data:C}}const o=(await this.source.fetch([{offset:E,length:s}],e))[0];let a;return null!==Q&&Q[t]?a=Q[t]:(a=(async()=>{let A=await B.decode(o);const g=this.getSampleFormat(),e=this.getBitsPerSample();return function(A,I){return(1!==A&&2!==A||!(I<=32)||I%8!=0)&&(3!==A||16!==I&&32!==I&&64!==I)}(g,e)&&(A=function(A,I,g,B,e,C,i){const t=new DataView(A),Q=2===g?1:B,E=YA(I,e,2===g?i*C:i*C*B),s=parseInt("1".repeat(e),2);if(1===I){let A;A=1===g?B*e:e;let I=C*A;7&I&&(I=I+7&-8);for(let A=0;A<i;++A){const g=A*I;for(let I=0;I<C;++I){const B=g+I*Q*e;for(let g=0;g<Q;++g){const i=B+g*e,o=(A*C+I)*Q+g,a=Math.floor(i/8),r=i%8;if(r+e<=8)E[o]=t.getUint8(a)>>8-e-r&s;else if(r+e<=16)E[o]=t.getUint16(a)>>16-e-r&s;else if(r+e<=24){const A=t.getUint16(a)<<8|t.getUint8(a+2);E[o]=A>>24-e-r&s}else E[o]=t.getUint32(a)>>32-e-r&s}}}}return E.buffer}(A,g,this.planarConfiguration,this.getSamplesPerPixel(),e,this.getTileWidth(),this.getBlockHeight(I))),A})(),null!==Q&&(Q[t]=a)),{x:A,y:I,sample:g,data:await a}}async _readRaster(A,I,g,B,e,C,i,t,Q){const E=this.getTileWidth(),s=this.getTileHeight(),o=this.getWidth(),a=this.getHeight(),r=Math.max(Math.floor(A[0]/E),0),n=Math.min(Math.ceil(A[2]/E),Math.ceil(o/E)),h=Math.max(Math.floor(A[1]/s),0),l=Math.min(Math.ceil(A[3]/s),Math.ceil(a/s)),c=A[2]-A[0];let D=this.getBytesPerPixel();const w=[],y=[];for(let A=0;A<I.length;++A){if(1===this.planarConfiguration){const g=await this.fileDirectory.loadValue("BitsPerSample");if("object"!=typeof g)throw new Error("Expected BitsPerSample to be an array or typed array.");w.push(pA(g,0,I[A])/8)}else w.push(0);y.push(this.getReaderForSample(I[A]))}const d=[],{littleEndian:f}=this;for(let C=h;C<l;++C)for(let i=r;i<n;++i){let t;1===this.planarConfiguration&&(t=this.getTileOrStrip(i,C,0,e,Q));for(let r=0;r<I.length;++r){const n=r,h=I[r];if(2===this.planarConfiguration&&(D=this.getSampleByteSize(h),t=this.getTileOrStrip(i,C,h,e,Q)),!t)throw new Error("Could not get tile or strip data.");const l=t.then(e=>{const C=e.data,i=new DataView(C),t=this.getBlockHeight(e.y),Q=e.y*s,r=e.x*E,h=Q+t,l=(e.x+1)*E,d=y[n],S=Math.min(t,t-(h-A[3]),a-Q),u=Math.min(E,E-(l-A[2]),o-r);for(let e=Math.max(0,A[1]-Q);e<S;++e)for(let C=Math.max(0,A[0]-r);C<u;++C){const t=(e*E+C)*D,s=d.call(i,t+w[n],f);let o;B?(o=(e+Q-A[1])*c*I.length+(C+r-A[0])*I.length+n,g[o]=s):(o=(e+Q-A[1])*c+C+r-A[0],g[n][o]=s)}});d.push(l)}}if(await Promise.all(d),C&&A[2]-A[0]!==C||i&&A[3]-A[1]!==i){let e;e=B?UA(g,A[2]-A[0],A[3]-A[1],C,i,I.length,t):LA(g,A[2]-A[0],A[3]-A[1],C,i,t);const Q=e;return Q.width=C??A[2]-A[0],Q.height=i??A[3]-A[1],Q}const S=g;return S.width=C||A[2]-A[0],S.height=i||A[3]-A[1],S}async readRasters(A={}){const{window:I,samples:g=[],pool:B=null,width:e,height:C,resampleMethod:i,fillValue:t,signal:Q}=A,E="interleave"in A&&A.interleave,s=I||[0,0,this.getWidth(),this.getHeight()];if(s[0]>s[2]||s[1]>s[3])throw new Error("Invalid subsets");const o=(s[2]-s[0])*(s[3]-s[1]),a=this.getSamplesPerPixel();if(g&&g.length){for(let A=0;A<g.length;++A)if(g[A]>=a)return Promise.reject(new RangeError(`Invalid sample index '${g[A]}'.`))}else for(let A=0;A<a;++A)g.push(A);let r;if(E){const{fileDirectory:A}=this,I=A.getValue("SampleFormat"),B=I?Math.max.apply(null,Array.from(I)):1;if(1!==B&&2!==B&&3!==B)throw new Error("Unsupported sample format for interleaved data. Must be 1, 2, or 3.");const e=A.getValue("BitsPerSample");if(r=YA(B,e?Math.max.apply(null,Array.from(e)):8,o*g.length),t){if(Array.isArray(t))throw new Error("When reading interleaved data, fillValue must be a single number.");r.fill(t)}}else{r=[];for(let A=0;A<g.length;++A){const I=this.getArrayForSample(g[A],o);Array.isArray(t)&&A<t.length?I.fill(t[A]):t&&!Array.isArray(t)&&I.fill(t),r.push(I)}}const n=this.fileDirectory.getValue("Compression")||1,h=await async function(A,I){if(!uA.has(A))throw new Error(`Unknown compression method identifier: ${A}`);const{decoderParameterFn:g}=uA.get(A);return g(I)}(n,this.fileDirectory),l=B?B.bindParameters(n,h):await async function(A,I){if(!uA.has(A))throw new Error(`Unknown compression method identifier: ${A}`);const{importFn:g}=uA.get(A);return new(await g())(I)}(n,h);return await this._readRaster(s,g,r,E,l,e,C,i,Q)}async readRGB(A={}){const{window:I,pool:g=null,width:B,height:e,resampleMethod:C,enableAlpha:i=!1,signal:t}=A,Q=("interleave"in A&&A.interleave)??!1,E=I||[0,0,this.getWidth(),this.getHeight()];if(E[0]>E[2]||E[1]>E[3])throw new Error("Invalid subsets");const s=this.fileDirectory.getValue("PhotometricInterpretation");if(s===rA){let A=[0,1,2];const E=this.fileDirectory.getValue("ExtraSamples");if(E&&E[0]!==DA&&i){A=[];const I=this.fileDirectory.getValue("BitsPerSample")||[];for(let g=0;g<I.length;g+=1)A.push(g)}return this.readRasters({window:I,interleave:Q,samples:A,pool:g,width:B,height:e,resampleMethod:C,signal:t})}let o;switch(s){case oA:case aA:case nA:o=[0];break;case hA:o=[0,1,2,3];break;case lA:case cA:o=[0,1,2];break;default:throw new Error("Invalid or unsupported photometric interpretation.")}const a={window:E,interleave:!0,samples:o,pool:g,width:B,height:e,resampleMethod:C,signal:t},{fileDirectory:r}=this,n=await this.readRasters(a),h=2**this.getBitsPerSample(0);let l;switch(s){case oA:l=function(A,I){const{width:g,height:B}=A,e=new Uint8Array(g*B*3);let C;for(let g=0,B=0;g<A.length;++g,B+=3)C=256-A[g]/I*256,e[B]=C,e[B+1]=C,e[B+2]=C;return e}(n,h);break;case aA:l=function(A,I){const{width:g,height:B}=A,e=new Uint8Array(g*B*3);let C;for(let g=0,B=0;g<A.length;++g,B+=3)C=A[g]/I*256,e[B]=C,e[B+1]=C,e[B+2]=C;return e}(n,h);break;case nA:l=function(A,I){const{width:g,height:B}=A,e=new Uint8Array(g*B*3),C=I.length/3,i=I.length/3*2;for(let g=0,B=0;g<A.length;++g,B+=3){const t=A[g];e[B]=I[t]/65536*256,e[B+1]=I[t+C]/65536*256,e[B+2]=I[t+i]/65536*256}return e}(n,await r.loadValue("ColorMap"));break;case hA:l=function(A){const{width:I,height:g}=A,B=new Uint8Array(I*g*3);for(let I=0,g=0;I<A.length;I+=4,g+=3){const e=A[I],C=A[I+1],i=A[I+2],t=A[I+3];B[g]=(255-e)/256*255*((255-t)/256),B[g+1]=(255-C)/256*255*((255-t)/256),B[g+2]=(255-i)/256*255*((255-t)/256)}return B}(n);break;case lA:l=function(A){const{width:I,height:g}=A,B=new Uint8ClampedArray(I*g*3);for(let I=0,g=0;I<A.length;I+=3,g+=3){const e=A[I],C=A[I+1],i=A[I+2];B[g]=e+1.402*(i-128),B[g+1]=e-.34414*(C-128)-.71414*(i-128),B[g+2]=e+1.772*(C-128)}return B}(n);break;case cA:l=function(A){const{width:I,height:g}=A,B=new Uint8Array(I*g*3);for(let I=0,g=0;I<A.length;I+=3,g+=3){let e,C,i,t=(A[I+0]+16)/116,Q=(A[I+1]<<24>>24)/500+t,E=t-(A[I+2]<<24>>24)/200;Q=.95047*(Q*Q*Q>.008856?Q*Q*Q:(Q-16/116)/7.787),t=1*(t*t*t>.008856?t*t*t:(t-16/116)/7.787),E=1.08883*(E*E*E>.008856?E*E*E:(E-16/116)/7.787),e=3.2406*Q+-1.5372*t+-.4986*E,C=-.9689*Q+1.8758*t+.0415*E,i=.0557*Q+-.204*t+1.057*E,e=e>.0031308?1.055*e**(1/2.4)-.055:12.92*e,C=C>.0031308?1.055*C**(1/2.4)-.055:12.92*C,i=i>.0031308?1.055*i**(1/2.4)-.055:12.92*i,B[g]=255*Math.max(0,Math.min(1,e)),B[g+1]=255*Math.max(0,Math.min(1,C)),B[g+2]=255*Math.max(0,Math.min(1,i))}return B}(n);break;default:throw new Error("Unsupported photometric interpretation.")}if(!Q){const A=new Uint8Array(l.length/3),I=new Uint8Array(l.length/3),g=new Uint8Array(l.length/3);for(let B=0,e=0;B<l.length;B+=3,++e)A[e]=l[B],I[e]=l[B+1],g[e]=l[B+2];l=[A,I,g]}const c=l;return c.width=n.width,c.height=n.height,c}async getTiePoints(){if(!this.fileDirectory.hasTag("ModelTiepoint"))return[];const A=await this.fileDirectory.loadValue("ModelTiepoint");if("object"!=typeof A)throw new Error("Expected ModelTiepoint to be an array or typed array.");const I=[];for(let g=0;g<A.length;g+=6)I.push({i:A[g],j:A[g+1],k:A[g+2],x:A[g+3],y:A[g+4],z:A[g+5]});return I}async getGDALMetadata(A=null){const I={};if(!this.fileDirectory.hasTag("GDAL_METADATA"))return null;let g=function(A,I){const g=[];let B,e=0;for(;B=gA(A,I,{debug:!1,startIndex:e});)e=B.start+1+I.length,g.push(B);return g}(await this.fileDirectory.loadValue("GDAL_METADATA"),"Item");g=null===A?g.filter(A=>void 0===$(A,"sample")):g.filter(I=>Number($(I,"sample"))===A);for(let A=0;A<g.length;++A){const B=g[A];I[$(B,"name")]=B.inner}return I}getGDALNoData(){const A=this.fileDirectory.hasTag("GDAL_NODATA")&&this.fileDirectory.getValue("GDAL_NODATA");return A?Number(A.substring(0,A.length-1)):null}getOrigin(){const A=this.fileDirectory.getValue("ModelTiepoint"),I=this.fileDirectory.getValue("ModelTransformation");if(A&&6===A.length)return[A[3],A[4],A[5]];if(I)return[I[3],I[7],I[11]];throw new Error("The image does not have an affine transformation.")}getResolution(A=null){const I=this.fileDirectory.getValue("ModelPixelScale"),g=this.fileDirectory.getValue("ModelTransformation");if(I)return[I[0],-I[1],I[2]];if(g)return 0===g[1]&&0===g[4]?[g[0],-g[5],g[10]]:[Math.sqrt(g[0]*g[0]+g[4]*g[4]),-Math.sqrt(g[1]*g[1]+g[5]*g[5]),g[10]];if(A){const[I,g,B]=A.getResolution();return[I*A.getWidth()/this.getWidth(),g*A.getHeight()/this.getHeight(),B*A.getWidth()/this.getWidth()]}throw new Error("The image does not have an affine transformation.")}pixelIsArea(){return 1===this.getGeoKeys()?.GTRasterTypeGeoKey}getBoundingBox(A=!1){const I=this.getHeight(),g=this.getWidth(),B=this.fileDirectory.getValue("ModelTransformation");if(B&&!A){const[A,e,,C,i,t,,Q]=B,E=[[0,0],[0,I],[g,0],[g,I]].map(([I,g])=>[C+A*I+e*g,Q+i*I+t*g]),s=E.map(A=>A[0]),o=E.map(A=>A[1]);return[Math.min(...s),Math.min(...o),Math.max(...s),Math.max(...o)]}{const A=this.getOrigin(),B=this.getResolution(),e=A[0],C=A[1],i=e+B[0]*g,t=C+B[1]*I;return[Math.min(e,i),Math.min(C,t),Math.max(e,i),Math.max(C,t)]}}}class mA{constructor(A){this._dataView=new DataView(A)}get buffer(){return this._dataView.buffer}getUint64(A,I){const g=this.getUint32(A,I),B=this.getUint32(A+4,I);let e;if(I){if(e=g+2**32*B,!Number.isSafeInteger(e))throw new Error(`${e} exceeds MAX_SAFE_INTEGER. Precision may be lost. Please report if you get this message to https://github.com/geotiffjs/geotiff.js/issues`);return e}if(e=2**32*g+B,!Number.isSafeInteger(e))throw new Error(`${e} exceeds MAX_SAFE_INTEGER. Precision may be lost. Please report if you get this message to https://github.com/geotiffjs/geotiff.js/issues`);return e}getInt64(A,I){let g=0;const B=(128&this._dataView.getUint8(A+(I?7:0)))>0;let e=!0;for(let C=0;C<8;C++){let i=this._dataView.getUint8(A+(I?C:7-C));B&&(e?0!==i&&(i=255&~(i-1),e=!1):i=255&~i),g+=i*256**C}return B&&(g=-g),g}getUint8(A){return this._dataView.getUint8(A)}getInt8(A){return this._dataView.getInt8(A)}getUint16(A,I){return this._dataView.getUint16(A,I)}getInt16(A,I){return this._dataView.getInt16(A,I)}getUint32(A,I){return this._dataView.getUint32(A,I)}getInt32(A,I){return this._dataView.getInt32(A,I)}getFloat16(A,I){return X(this._dataView,A,I)}getFloat32(A,I){return this._dataView.getFloat32(A,I)}getFloat64(A,I){return this._dataView.getFloat64(A,I)}}class KA{constructor(A,I,g,B){this._dataView=new DataView(A),this._sliceOffset=I,this._littleEndian=g,this._bigTiff=B}get sliceOffset(){return this._sliceOffset}get sliceTop(){return this._sliceOffset+this.buffer.byteLength}get littleEndian(){return this._littleEndian}get bigTiff(){return this._bigTiff}get buffer(){return this._dataView.buffer}covers(A,I){return this.sliceOffset<=A&&this.sliceTop>=A+I}readUint8(A){return this._dataView.getUint8(A-this._sliceOffset)}readInt8(A){return this._dataView.getInt8(A-this._sliceOffset)}readUint16(A){return this._dataView.getUint16(A-this._sliceOffset,this._littleEndian)}readInt16(A){return this._dataView.getInt16(A-this._sliceOffset,this._littleEndian)}readUint32(A){return this._dataView.getUint32(A-this._sliceOffset,this._littleEndian)}readInt32(A){return this._dataView.getInt32(A-this._sliceOffset,this._littleEndian)}readFloat32(A){return this._dataView.getFloat32(A-this._sliceOffset,this._littleEndian)}readFloat64(A){return this._dataView.getFloat64(A-this._sliceOffset,this._littleEndian)}readUint64(A){const I=this.readUint32(A),g=this.readUint32(A+4);let B;if(this._littleEndian){if(B=I+2**32*g,!Number.isSafeInteger(B))throw new Error(`${B} exceeds MAX_SAFE_INTEGER. Precision may be lost. Please report if you get this message to https://github.com/geotiffjs/geotiff.js/issues`);return B}if(B=2**32*I+g,!Number.isSafeInteger(B))throw new Error(`${B} exceeds MAX_SAFE_INTEGER. Precision may be lost. Please report if you get this message to https://github.com/geotiffjs/geotiff.js/issues`);return B}readInt64(A){let I=0;const g=(128&this._dataView.getUint8(A+(this._littleEndian?7:0)))>0;let B=!0;for(let e=0;e<8;e++){let C=this._dataView.getUint8(A+(this._littleEndian?e:7-e));g&&(B?0!==C&&(C=255&~(C-1),B=!1):C=255&~C),I+=C*256**e}return g&&(I=-I),I}readOffset(A){return this._bigTiff?this.readUint64(A):this.readUint32(A)}}const HA="\r\n\r\n";function JA(A){if(void 0!==Object.fromEntries)return Object.fromEntries(A);const I={};for(const[g,B]of A)I[g.toLowerCase()]=B;return I}function bA(A){return JA(A.split("\r\n").map(A=>{const I=A.split(":").map(A=>A.trim());return I[0]=I[0].toLowerCase(),I}))}function qA(A){let I=NaN,g=NaN,B=NaN;return A&&([,I,g,B]=(A.match(/bytes (\d+)-(\d+)\/(\d+)/)||[]).map(Number)),{start:I,end:g,total:B}}class xA{async fetch(A,I){return Promise.all(A.map(async A=>(await this.fetchSlice(A,I)).data))}async fetchSlice(A,I){throw new Error(`fetching of slice ${A} not possible, not implemented`)}get fileSize(){return null}async close(){}}class TA extends Map{constructor(A={}){if(super(),!(A.maxSize&&A.maxSize>0))throw new TypeError("`maxSize` must be a number greater than 0");if("number"==typeof A.maxAge&&0===A.maxAge)throw new TypeError("`maxAge` must be a number greater than 0");this.maxSize=A.maxSize,this.maxAge=A.maxAge||Number.POSITIVE_INFINITY,this.onEviction=A.onEviction,this.cache=new Map,this.oldCache=new Map,this._size=0}_emitEvictions(A){if("function"==typeof this.onEviction)for(const[I,g]of A)this.onEviction(I,g.value)}_deleteIfExpired(A,I){return"number"==typeof I.expiry&&I.expiry<=Date.now()&&("function"==typeof this.onEviction&&this.onEviction(A,I.value),this.delete(A))}_getOrDeleteIfExpired(A,I){if(!1===this._deleteIfExpired(A,I))return I.value}_getItemValue(A,I){return I.expiry?this._getOrDeleteIfExpired(A,I):I.value}_peek(A,I){const g=I.get(A);return this._getItemValue(A,g)}_set(A,I){this.cache.set(A,I),this._size++,this._size>=this.maxSize&&(this._size=0,this._emitEvictions(this.oldCache),this.oldCache=this.cache,this.cache=new Map)}_moveToRecent(A,I){this.oldCache.delete(A),this._set(A,I)}*_entriesAscending(){for(const A of this.oldCache){const[I,g]=A;if(!this.cache.has(I)){!1===this._deleteIfExpired(I,g)&&(yield A)}}for(const A of this.cache){const[I,g]=A;!1===this._deleteIfExpired(I,g)&&(yield A)}}get(A){if(this.cache.has(A)){const I=this.cache.get(A);return this._getItemValue(A,I)}if(this.oldCache.has(A)){const I=this.oldCache.get(A);if(!1===this._deleteIfExpired(A,I))return this._moveToRecent(A,I),I.value}}set(A,I,{maxAge:g=this.maxAge}={}){const B="number"==typeof g&&g!==Number.POSITIVE_INFINITY?Date.now()+g:void 0;return this.cache.has(A)?this.cache.set(A,{value:I,expiry:B}):this._set(A,{value:I,expiry:B}),this}has(A){return this.cache.has(A)?!this._deleteIfExpired(A,this.cache.get(A)):!!this.oldCache.has(A)&&!this._deleteIfExpired(A,this.oldCache.get(A))}peek(A){return this.cache.has(A)?this._peek(A,this.cache):this.oldCache.has(A)?this._peek(A,this.oldCache):void 0}delete(A){const I=this.cache.delete(A);return I&&this._size--,this.oldCache.delete(A)||I}clear(){this.cache.clear(),this.oldCache.clear(),this._size=0}resize(A){if(!(A&&A>0))throw new TypeError("`maxSize` must be a number greater than 0");const I=[...this._entriesAscending()],g=I.length-A;g<0?(this.cache=new Map(I),this.oldCache=new Map,this._size=I.length):(g>0&&this._emitEvictions(I.slice(0,g)),this.oldCache=new Map(I.slice(g)),this.cache=new Map,this._size=0),this.maxSize=A}*keys(){for(const[A]of this)yield A}*values(){for(const[,A]of this)yield A}*[Symbol.iterator](){for(const A of this.cache){const[I,g]=A;!1===this._deleteIfExpired(I,g)&&(yield[I,g.value])}for(const A of this.oldCache){const[I,g]=A;if(!this.cache.has(I)){!1===this._deleteIfExpired(I,g)&&(yield[I,g.value])}}}*entriesDescending(){let A=[...this.cache];for(let I=A.length-1;I>=0;--I){const g=A[I],[B,e]=g;!1===this._deleteIfExpired(B,e)&&(yield[B,e.value])}A=[...this.oldCache];for(let I=A.length-1;I>=0;--I){const g=A[I],[B,e]=g;if(!this.cache.has(B)){!1===this._deleteIfExpired(B,e)&&(yield[B,e.value])}}}*entriesAscending(){for(const[A,I]of this._entriesAscending())yield[A,I.value]}get size(){if(!this._size)return this.oldCache.size;let A=0;for(const I of this.oldCache.keys())this.cache.has(I)||A++;return Math.min(this._size+A,this.maxSize)}entries(){return this.entriesAscending()}forEach(A,I=this){for(const[g,B]of this.entriesAscending())A.call(I,B,g,this)}get[Symbol.toStringTag](){return JSON.stringify([...this.entriesAscending()])}}class OA extends Error{constructor(...A){super(...A),Error.captureStackTrace&&Error.captureStackTrace(this,OA),this.name="AbortError",this.signal=void 0}}class PA extends Error{constructor(A,I){super(I),this.errors=A,this.message=I,this.name="AggregateError"}}const vA=PA;class VA{constructor(A,I,g){this.offset=A,this.length=I,this.data=g}get top(){return this.offset+this.length}}class ZA{constructor(A,I,g){this.offset=A,this.length=I,this.blockIds=g}}class jA extends xA{constructor(A,{blockSize:I=65536,cacheSize:g=100}={}){super(),this.source=A,this.blockSize=I,this.blockCache=new TA({maxSize:g,onEviction:(A,I)=>{this.evictedBlocks.set(A,I)}}),this.evictedBlocks=new Map,this.blockRequests=new Map,this.blockIdsToFetch=new Set,this.abortedBlockIds=new Set}get fileSize(){return this.source.fileSize}async fetch(A,I){const g=[],B=[],e=[];this.evictedBlocks.clear();for(const{offset:I,length:C}of A){let A=I+C;const{fileSize:i}=this;null!==i&&(A=Math.min(A,i));for(let C=Math.floor(I/this.blockSize)*this.blockSize;C<A;C+=this.blockSize){const A=Math.floor(C/this.blockSize);this.blockCache.has(A)||this.blockRequests.has(A)||(this.blockIdsToFetch.add(A),B.push(A)),this.blockRequests.has(A)&&g.push(this.blockRequests.get(A)),e.push(A)}}await async function(A){return new Promise(I=>setTimeout(I,A))}(),this.fetchBlocks(I);const C=[];for(const A of B)this.blockRequests.has(A)&&C.push(this.blockRequests.get(A));await Promise.allSettled(g),await Promise.allSettled(C);const i=[],t=e.filter(A=>this.abortedBlockIds.has(A)||!this.blockCache.has(A));if(t.forEach(A=>this.blockIdsToFetch.add(A)),t.length>0&&I&&!I.aborted){this.fetchBlocks();for(const A of t){const I=this.blockRequests.get(A);if(!I)throw new Error(`Block ${A} is not in the block requests`);i.push(I)}await Promise.allSettled(i)}if(I&&I.aborted)throw new OA("Request was aborted");const Q=e.map(A=>this.blockCache.get(A)||this.evictedBlocks.get(A)),E=Q.filter(A=>!A);if(E.length)throw new vA(E,"Request failed");const s=new Map(function(A,I){const g=Array.isArray(A)?A:Array.from(A),B=Array.isArray(I)?I:Array.from(I);return g.map((A,I)=>[A,B[I]])}(e,Q));return this.readSliceData(A,s)}fetchBlocks(A){if(this.blockIdsToFetch.size>0){const I=this.groupBlocks(this.blockIdsToFetch),g=I.map(async I=>({...I,...await this.source.fetchSlice(I,A)}));for(let B=0;B<I.length;++B){const e=I[B];for(const I of e.blockIds)this.blockRequests.set(I,(async()=>{try{const A=(await Promise.all(g))[B],e=I*this.blockSize,C=e-A.offset,i=Math.min(C+this.blockSize,A.data.byteLength),t=A.data.slice(C,i),Q=new VA(e,t.byteLength,t);this.blockCache.set(I,Q),this.abortedBlockIds.delete(I)}catch(g){if(!(g instanceof OA&&"AbortError"===g.name))throw g;g.signal=A,this.blockCache.delete(I),this.abortedBlockIds.add(I)}finally{this.blockRequests.delete(I)}})())}this.blockIdsToFetch.clear()}}groupBlocks(A){const I=Array.from(A).sort((A,I)=>A-I);if(0===I.length)return[];let g=[],B=null;const e=[];for(const A of I)null===B||B+1===A?(g.push(A),B=A):(e.push(new ZA(g[0]*this.blockSize,g.length*this.blockSize,g)),g=[A],B=A);return e.push(new ZA(g[0]*this.blockSize,g.length*this.blockSize,g)),e}readSliceData(A,I){return A.map(A=>{let g=A.offset+A.length;null!==this.fileSize&&(g=Math.min(this.fileSize,g));const B=Math.floor(A.offset/this.blockSize),e=Math.floor((g-1)/this.blockSize),C=new ArrayBuffer(A.length),i=new Uint8Array(C);for(let C=B;C<=e;++C){const B=I.get(C);if(!B)continue;const e=B.offset-A.offset;let t,Q=0,E=0;e<0?Q=-e:e>0&&(E=e),t=B.top-g<0?B.length-Q:g-B.offset-Q;const s=new Uint8Array(B.data,Q,t);i.set(s,E)}return C})}}class zA{get ok(){return this.status>=200&&this.status<=299}get status(){throw new Error("not implemented")}getHeader(A){throw new Error("not implemented")}async getData(){throw new Error("not implemented")}}class WA{constructor(A){this.url=A}async request(A){throw new Error("request is not implemented")}}class _A extends zA{constructor(A){super(),this.response=A}get status(){return this.response.status}getHeader(A){return this.response.headers.get(A)||void 0}async getData(){return this.response.arrayBuffer?await this.response.arrayBuffer():(await this.response.buffer()).buffer}}class XA extends WA{constructor(A,I){super(A),this.credentials=I}async request({headers:A,signal:I}={}){const g=await fetch(this.url,{headers:A,credentials:this.credentials,signal:I});return new _A(g)}}class $A extends zA{constructor(A,I){super(),this.xhr=A,this.data=I}get status(){return this.xhr.status}getHeader(A){return this.xhr.getResponseHeader(A)||void 0}async getData(){return this.data}}class AI extends WA{constructRequest(A,I){return new Promise((g,B)=>{const e=new XMLHttpRequest;e.open("GET",this.url),e.responseType="arraybuffer";for(const[I,g]of Object.entries(A))e.setRequestHeader(I,g);e.onload=()=>{const A=e.response;g(new $A(e,A))},e.onerror=B,e.onabort=()=>B(new OA("Request aborted")),e.send(),I&&(I.aborted&&e.abort(),I.addEventListener("abort",()=>e.abort()))})}async request({headers:A={},signal:I}={}){return await this.constructRequest(A,I)}}var II={};class gI extends zA{constructor(A,I){super(),this.response=A,this.dataPromise=I}get status(){return this.response.statusCode}getHeader(A){const I=this.response.headers[A];return Array.isArray(I)?I.join(", "):I}async getData(){return await this.dataPromise}}class BI extends WA{constructor(A){super(A),this.parsedUrl=II.parse(this.url),this.httpApi=(this.parsedUrl.protocol,II)}constructRequest(A,I){return new Promise((g,B)=>{const e=this.httpApi.get({...this.parsedUrl,headers:A},A=>{const I=new Promise(I=>{const g=[];A.on("data",A=>{g.push(A)}),A.on("end",()=>{const A=Buffer.concat(g).buffer;I(A)}),A.on("error",B)});g(new gI(A,I))});e.on("error",B),I&&(I.aborted&&e.destroy(new OA("Request aborted")),I.addEventListener("abort",()=>e.destroy(new OA("Request aborted"))))})}async request({headers:A={},signal:I}={}){return await this.constructRequest(A,I)}}class eI extends xA{constructor(A,{headers:I,maxRanges:g=0,allowFullFile:B}={}){super(),this.client=A,this.headers=I,this.maxRanges=g,this.allowFullFile=B,this._fileSize=null}async fetch(A,I){return this.maxRanges>=A.length?this.fetchSlices(A,I).then(A=>A.map(A=>A.data)):(this.maxRanges>0&&A.length,Promise.all(A.map(async A=>(await this.fetchSlice(A,I)).data)))}async fetchSlices(A,I){const g=await this.client.request({headers:{...this.headers,Range:`bytes=${A.map(({offset:A,length:I})=>`${A}-${A+I-1}`).join(",")}`},signal:I});if(g.ok){if(206===g.status){const{type:B,params:e}=function(A){if(!A)return{type:null,params:{}};const[I,...g]=A.split(";").map(A=>A.trim());return{type:I,params:JA(g.map(A=>A.split("=")))}}(g.getHeader("content-type"));if("multipart/byteranges"===B){const A=function(A,I){let g=-1;const B=new TextDecoder("ascii"),e=[],C=`--${I}`,i=`${C}--`;for(let I=0;I<10;++I)B.decode(new Uint8Array(A,I,C.length))===C&&(g=I);if(-1===g)throw new Error("Could not find initial boundary");for(;g<A.byteLength;){const I=B.decode(new Uint8Array(A,g,Math.min(C.length+1024,A.byteLength-g)));if(0===I.length||I.startsWith(i))break;if(!I.startsWith(C))throw new Error("Part does not start with boundary");const t=I.substr(C.length+2);if(0===t.length)break;const Q=t.indexOf(HA),E=bA(t.substr(0,Q)),{start:s,end:o,total:a}=qA(E["content-range"]),r=g+C.length+Q+4,n=o+1-s;e.push({headers:E,data:A.slice(r,r+n),offset:s,length:n,fileSize:a}),g=r+n+4}return e}(await g.getData(),e.boundary);return this._fileSize=A[0].fileSize||null,A}const C=await g.getData(),{start:i,end:t,total:Q}=qA(g.getHeader("content-range"));this._fileSize=Q||null;const E=[{data:C,offset:i,length:t+1-i}];if(A.length>1){const g=await Promise.all(A.slice(1).map(A=>this.fetchSlice(A,I)));return E.concat(g)}return E}{if(!this.allowFullFile)throw new Error("Server responded with full file");const A=await g.getData();return this._fileSize=A.byteLength,[{data:A,offset:0,length:A.byteLength}]}}throw new Error("Error fetching data.")}async fetchSlice(A,I){const{offset:g,length:B}=A,e=await this.client.request({headers:{...this.headers,Range:`bytes=${g}-${g+B-1}`},signal:I});if(e.ok){if(206===e.status){const A=await e.getData(),{total:I}=qA(e.getHeader("content-range"));return this._fileSize=I||null,{data:A,offset:g,length:B}}{if(!this.allowFullFile)throw new Error("Server responded with full file");const A=await e.getData();return this._fileSize=A.byteLength,{data:A,offset:0,length:A.byteLength}}}throw new Error("Error fetching data.")}get fileSize(){return this._fileSize}}function CI(A,{blockSize:I,cacheSize:g}){return void 0===I?A:new jA(A,{blockSize:I,cacheSize:g})}function iI(A,{forceXHR:I=!1,...g}={}){return"function"!=typeof fetch||I?"undefined"!=typeof XMLHttpRequest?function(A,{headers:I={},maxRanges:g=0,allowFullFile:B=!1,...e}={}){const C=new AI(A);return CI(new eI(C,{headers:I,maxRanges:g,allowFullFile:B}),e)}(A,g):function(A,{headers:I={},maxRanges:g=0,allowFullFile:B=!1,...e}={}){const C=new BI(A);return CI(new eI(C,{headers:I,maxRanges:g,allowFullFile:B}),e)}(A,g):function(A,{headers:I={},credentials:g,maxRanges:B=0,allowFullFile:e=!1,...C}={}){const i=new XA(A,g);return CI(new eI(i,{headers:I,maxRanges:B,allowFullFile:e}),C)}(A,g)}class tI extends xA{constructor(A){super(),this.arrayBuffer=A}fetchSlice(A,I){if(I&&I.aborted)throw new OA("Request aborted");return Promise.resolve({data:this.arrayBuffer.slice(A.offset,A.offset+A.length),offset:A.offset,length:A.length})}}function QI(A,I){switch(A){case BA.BYTE:case BA.ASCII:case BA.UNDEFINED:return new Uint8Array(I);case BA.SBYTE:return new Int8Array(I);case BA.SHORT:return new Uint16Array(I);case BA.SSHORT:return new Int16Array(I);case BA.LONG:case BA.IFD:return new Uint32Array(I);case BA.SLONG:return new Int32Array(I);case BA.LONG8:case BA.IFD8:case BA.SLONG8:return new Array(I);case BA.RATIONAL:return new Uint32Array(2*I);case BA.SRATIONAL:return new Int32Array(2*I);case BA.FLOAT:return new Float32Array(I);case BA.DOUBLE:return new Float64Array(I);default:throw new RangeError(`Invalid field type: ${A}`)}}function EI(A,I){switch(I){case BA.BYTE:case BA.ASCII:case BA.UNDEFINED:return A.readUint8;case BA.SBYTE:return A.readInt8;case BA.SHORT:return A.readUint16;case BA.SSHORT:return A.readInt16;case BA.LONG:case BA.IFD:return A.readUint32;case BA.SLONG:return A.readInt32;case BA.LONG8:case BA.IFD8:return A.readUint64;case BA.SLONG8:return A.readInt64;case BA.RATIONAL:return A.readUint32;case BA.SRATIONAL:return A.readInt32;case BA.FLOAT:return A.readFloat32;case BA.DOUBLE:return A.readFloat64;default:throw new RangeError(`Invalid field type: ${I}`)}}function sI(A=null,I,g,B,e,C,i=!1){const t=CA(B),Q=A||QI(B,e),E=B===BA.RATIONAL||B===BA.SRATIONAL;if(E)for(let A=0;A<e;A+=2)Q[A]=I.call(g,C+A*t),Q[A+1]=I.call(g,C+(A*t+4));else for(let A=0;A<e;++A)Q[A]=I.call(g,C+A*t);return B===BA.ASCII?new TextDecoder("utf-8").decode(Q):1!==e||i||E?Q:Q[0]}class oI{constructor(A,I,g,B,e){this.source=A,this.arrayOffset=I,this.littleEndian=g,this.fieldType=B,this.length=e,this.data=QI(B,e),this.itemSize=CA(B),this.maskBitmap=new Uint8Array(Math.ceil(e/8)),this.fetchIndexPromises=new Map,this.fullFetchPromise=null}async loadAll(){return this.fullFetchPromise||(this.fullFetchPromise=this.source.fetch([{offset:this.arrayOffset,length:this.itemSize*this.length}]).then(A=>{const I=new KA(A[0],this.arrayOffset,!0,!1),g=sI(this.data,EI(I,this.fieldType),I,this.fieldType,this.length,this.arrayOffset,!0);return this.maskBitmap.fill(255),this.fetchIndexPromises.clear(),g})),this.fullFetchPromise}async get(A){if(A<0||A>=this.data.length)throw new RangeError(`Index ${A} out of bounds for length ${this.data.length}`);const I=Math.floor(A/8),g=1<<A%8,B=this.arrayOffset+A*this.itemSize;if(0===(this.maskBitmap[I]&g)){if(!this.fetchIndexPromises.has(A)){const e=this.source.fetch([{offset:B,length:this.itemSize}]).then(e=>{const C=new KA(e[0],this.arrayOffset+A*this.itemSize,!0,!1),i=EI(C,this.fieldType).call(C,B);return this.data[A]=i,this.maskBitmap[I]|=g,this.fetchIndexPromises.delete(A),i});this.fetchIndexPromises.set(A,e)}return this.fetchIndexPromises.get(A)}return this.data[A]}}class aI{constructor(A,I,g,B){this.actualizedFields=A,this.deferredFields=I,this.deferredFieldsBeingResolved=new Map,this.deferredArrays=g,this.nextIFDByteOffset=B}hasTag(A){const I=sA(A);return this.actualizedFields.has(I)||this.deferredFields.has(I)||this.deferredArrays.has(I)}getValue(A){const I=sA(A);if(this.deferredFields.has(I)||this.deferredArrays.has(I)){const A=QA[I];throw new Error(`Field '${A?.name||`Tag${I}`}' (${I}) is deferred. Use loadValue() to load it asynchronously.`)}if(this.actualizedFields.has(I))return this.actualizedFields.get(I)}async loadValue(A){const I=sA(A);if(this.actualizedFields.has(I))return this.actualizedFields.get(I);if(this.deferredFieldsBeingResolved.has(I))return this.deferredFieldsBeingResolved.get(I);const g=this.deferredFields.get(I);if(g){this.deferredFields.delete(I);const A=(async()=>{try{const A=await g();return this.actualizedFields.set(I,A),A}finally{this.deferredFieldsBeingResolved.delete(I)}})();return this.deferredFieldsBeingResolved.set(I,A),A}const B=this.deferredArrays.get(I);return B?B.loadAll():void 0}async loadValueIndexed(A,I){const g=sA(A);if(this.actualizedFields.has(g)){return this.actualizedFields.get(g)[I]}if(this.deferredArrays.has(g)){return this.deferredArrays.get(g).get(I)}if(this.hasTag(g)){const A=await this.loadValue(g);if(A&&"number"!=typeof A)return A[I]}}parseGeoKeyDirectory(){const A=this.getValue("GeoKeyDirectory");if(!A)return null;const I={};for(let g=4;g<=4*A[3];g+=4){const B=SA[A[g]],e=A[g+1]||null,C=A[g+2],i=A[g+3];let t=null;if(e){if(t=this.getValue(e),null==t)throw new Error(`Could not get value of geoKey '${B}'.`);"string"==typeof t?t=t.substring(i,i+C-1):t.subarray&&(t=t.subarray(i,i+C),1===C&&(t=t[0]))}else t=i;I[B]=t}return I}toObject(){const A={};for(const[I,g]of this.actualizedFields.entries()){const B="number"==typeof I?QA[I]:void 0;A[B?B.name:`Tag${I}`]=g}return A}}class rI{constructor(A,I,g,B=!1){this.source=A,this.littleEndian=I,this.bigTiff=g,this.eager=B}async getSlice(A,I){const g=this.bigTiff?4048:1024;return new KA((await this.source.fetch([{offset:A,length:void 0!==I?I:g}]))[0],A,this.littleEndian,this.bigTiff)}async parseFileDirectoryAt(A){const I=this.bigTiff?20:12,g=this.bigTiff?8:2;let B=await this.getSlice(A);const e=this.bigTiff?B.readUint64(A):B.readUint16(A),C=e*(I+(this.bigTiff?16:6));B.covers(A,C)||(B=await this.getSlice(A,C));const i=new Map,t=new Map,Q=new Map;let E=A+(this.bigTiff?8:2);for(let A=0;A<e;E+=I,++A){const A=B.readUint16(E),I=B.readUint16(E+2),g=this.bigTiff?B.readUint64(E+4):B.readUint32(E+4);let e=null,C=null,s=null;const o=CA(I),a=E+(this.bigTiff?12:8),r=QA[A]?.isArray,n=QA[A]?.eager||this.eager;if(o*g<=(this.bigTiff?8:4))e=sI(QI(I,g),EI(B,I),B,I,g,a,r);else{const A=B.readOffset(a),i=CA(I)*g;if(B.covers(A,i))e=sI(QI(I,g),EI(B,I),B,I,g,A,r);else if(n){const B=await this.getSlice(A,i);e=sI(QI(I,g),EI(B,I),B,I,g,A,r)}else r?s=new oI(this.source,A,this.littleEndian,I,g):C=async()=>{const B=await this.getSlice(A,i);return sI(QI(I,g),EI(B,I),B,I,g,A,r)}}null!==e?i.set(A,e):null!==C?t.set(A,C):null!==s&&Q.set(A,s)}const s=B.readOffset(A+g+I*e);return new aI(i,t,Q,s)}}function nI(A,I){let g=A.length-I,B=0;do{for(let g=I;g>0;g--)A[B+I]+=A[B],B++;g-=I}while(g>0)}function hI(A,I,g){let B=0,e=A.length;const C=e/g;for(;e>I;){for(let g=I;g>0;--g)A[B+I]+=A[B],++B;e-=I}const i=A.slice();for(let I=0;I<C;++I)for(let B=0;B<g;++B)A[g*I+B]=i[(g-B-1)*C+I]}class lI{constructor(A){this.parameters=A}decodeBlock(A){throw new Error("decodeBlock not implemented")}async decode(A){const I=await this.decodeBlock(A),{tileWidth:g,tileHeight:B,predictor:e,bitsPerSample:C,planarConfiguration:i}=this.parameters;if(1!==e){return function(A,I,g,B,e,C){if(!I||1===I)return A;for(let A=0;A<e.length;++A){if(e[A]%8!=0)throw new Error("When decoding with predictor, only multiple of 8 bits are supported.");if(e[A]!==e[0])throw new Error("When decoding with predictor, all samples must have the same size.")}const i=e[0]/8,t=2===C?1:e.length;for(let C=0;C<B&&!(C*t*g*i>=A.byteLength);++C){let B;if(2===I){switch(e[0]){case 8:B=new Uint8Array(A,C*t*g*i,t*g*i);break;case 16:B=new Uint16Array(A,C*t*g*i,t*g*i/2);break;case 32:B=new Uint32Array(A,C*t*g*i,t*g*i/4);break;default:throw new Error(`Predictor 2 not allowed with ${e[0]} bits per sample.`)}nI(B,t)}else 3===I&&(B=new Uint8Array(A,C*t*g*i,t*g*i),hI(B,t,i))}return A}(I,e,g,B,Array.isArray(C)||ArrayBuffer.isView(C)?Array.from(C):[C],i)}return I}}function cI(A,I,g,B){let e=null,C=null;const i=CA(I);switch(I){case BA.BYTE:case BA.ASCII:case BA.UNDEFINED:e=new Uint8Array(g),C=A.readUint8;break;case BA.SBYTE:e=new Int8Array(g),C=A.readInt8;break;case BA.SHORT:e=new Uint16Array(g),C=A.readUint16;break;case BA.SSHORT:e=new Int16Array(g),C=A.readInt16;break;case BA.LONG:case BA.IFD:e=new Uint32Array(g),C=A.readUint32;break;case BA.SLONG:e=new Int32Array(g),C=A.readInt32;break;case BA.LONG8:case BA.IFD8:e=new Array(g),C=A.readUint64;break;case BA.SLONG8:e=new Array(g),C=A.readInt64;break;case BA.RATIONAL:e=new Uint32Array(2*g),C=A.readUint32;break;case BA.SRATIONAL:e=new Int32Array(2*g),C=A.readInt32;break;case BA.FLOAT:e=new Float32Array(g),C=A.readFloat32;break;case BA.DOUBLE:e=new Float64Array(g),C=A.readFloat64}if(null===e||null===C)throw new RangeError(`Invalid field type: ${I}`);for(let I=0;I<g;++I)e[I]=C.call(A,B+I*i);return new TextDecoder("utf-8").decode(e)}class DI extends Error{constructor(A){super(`No image at index ${A}`),this.index=A}}class wI{async getImage(A=0){throw new Error("Not implemented")}async getImageCount(){throw new Error("Not implemented")}async readRasters(A={}){const{window:I,width:g,height:B}=A;let{resX:e,resY:C,bbox:i}=A;const t=await this.getImage();let Q=t;const E=await this.getImageCount(),s=t.getBoundingBox();if(I&&i)throw new Error('Both "bbox" and "window" passed.');if(g||B){if(I){const[A,g]=t.getOrigin(),[B,e]=t.getResolution();i=[A+I[0]*B,g+I[1]*e,A+I[2]*B,g+I[3]*e]}const A=i||s;if(g){if(e)throw new Error("Both width and resX passed");e=(A[2]-A[0])/g}if(B){if(C)throw new Error("Both width and resY passed");C=(A[3]-A[1])/B}}if(e||C){const A=[];for(let I=0;I<E;++I){const g=await this.getImage(I),B=g.fileDirectory.getValue("SubfileType"),e=g.fileDirectory.getValue("NewSubfileType");(0===I||2===B||1&(e||0))&&A.push(g)}A.sort((A,I)=>A.getWidth()-I.getWidth());for(let I=0;I<A.length;++I){const g=A[I],B=(s[2]-s[0])/g.getWidth(),i=(s[3]-s[1])/g.getHeight();if(Q=g,e&&e>B||C&&C>i)break}}let o=I;if(i){const[A,I]=t.getOrigin(),[g,B]=Q.getResolution(t);o=[Math.round((i[0]-A)/g),Math.round((i[1]-I)/B),Math.round((i[2]-A)/g),Math.round((i[3]-I)/B)],o=[Math.min(o[0],o[2]),Math.min(o[1],o[3]),Math.max(o[0],o[2]),Math.max(o[1],o[3])]}return Q.readRasters({...A,window:o})}}class yI extends wI{constructor(A,I,g,B,e={}){super(),this.source=A,this.parser=new rI(A,I,g,!1),this.littleEndian=I,this.bigTiff=g,this.firstIFDOffset=B,this.cache=e.cache||!1,this.ifdRequests=[],this.ghostValues=null}async getSlice(A,I){const g=this.bigTiff?4048:1024;return new KA((await this.source.fetch([{offset:A,length:void 0!==I?I:g}]))[0],A,this.littleEndian,this.bigTiff)}async requestIFD(A){if(this.ifdRequests[A])return this.ifdRequests[A];if(0===A)return this.ifdRequests[A]=this.parser.parseFileDirectoryAt(this.firstIFDOffset),this.ifdRequests[A];if(!this.ifdRequests[A-1])try{this.ifdRequests[A-1]=this.requestIFD(A-1)}catch(I){if(I instanceof DI)throw new DI(A);throw I}return this.ifdRequests[A]=(async()=>{const I=this.ifdRequests[A-1];if(!I)throw new Error("Previous IFD request missing");const g=await I;if(0===g.nextIFDByteOffset)throw new DI(A);return this.parser.parseFileDirectoryAt(g.nextIFDByteOffset)})(),this.ifdRequests[A]}async getImage(A=0){return new MA(await this.requestIFD(A),this.littleEndian,this.cache,this.source)}async getImageCount(){let A=0,I=!0;for(;I;)try{await this.requestIFD(A),++A}catch(A){if(!(A instanceof DI))throw A;I=!1}return A}async getGhostValues(){const A=this.bigTiff?16:8;if(null!==this.ghostValues)return this.ghostValues;const I="GDAL_STRUCTURAL_METADATA_SIZE=";let g=await this.getSlice(A,130);if(I===cI(g,BA.ASCII,30,A)){const I=cI(g,BA.ASCII,130,A).split("\n")[0],B=Number(I.split("=")[1].split(" ")[0])+I.length;B>130&&(g=await this.getSlice(A,B));const e=cI(g,BA.ASCII,B,A),C={};e.split("\n").filter(A=>A.length>0).map(A=>A.split("=")).forEach(([A,I])=>{C[A]=I}),this.ghostValues=C}return this.ghostValues}static async fromSource(A,I,g){const B=(await A.fetch([{offset:0,length:1024}],g))[0],e=new mA(B),C=e.getUint16(0,!1);let i;if(18761===C)i=!0;else{if(19789!==C)throw new TypeError("Invalid byte order value.");i=!1}const t=e.getUint16(2,i);let Q;if(42===t)Q=!1;else{if(43!==t)throw new TypeError("Invalid magic number.");Q=!0;if(8!==e.getUint16(4,i))throw new Error("Unsupported offset byte-size.")}const E=Q?e.getUint64(8,i):e.getUint32(4,i);return new yI(A,i,Q,E,I)}close(){return"function"==typeof this.source.close&&this.source.close()}}async function dI(A,I){return yI.fromSource(function(A){return new tI(A)}(A),void 0,I)}const fI={type:"image",blockSize:65536,format:void 0,useChannel:null,useChannelIndex:null,noDataValue:void 0,multiplier:1,verticalExaggeration:1,numOfChannels:void 0,planarConfig:void 0,tesselator:"martini",terrainColor:[200,200,200,255],terrainSkirtHeight:100,terrainMinValue:0,useHeatMap:!0,useColorsBasedOnValues:!1,useColorClasses:!1,useAutoRange:!1,useDataForOpacity:!1,useSingleColor:!1,blurredTexture:!0,clipLow:null,clipHigh:null,color:[255,0,255,255],colorScale:e.brewer.YlOrRd,colorScaleValueRange:[0,255],colorsBasedOnValues:void 0,colorClasses:void 0,alpha:100,maxGlazeAlpha:128,nullColor:[0,0,0,0],unidentifiedColor:[0,0,0,0],clippedColor:[0,0,0,0],useSlope:!1,useHillshade:!1,hillshadeAzimuth:315,hillshadeAltitude:45,zFactor:1,useSwissRelief:!1,swissSlopeWeight:.5,useReliefGlaze:!1,disableLighting:!1};class SI{constructor(A=257){this.gridSize=A;const I=A-1;if(I&I-1)throw new Error(`Expected grid size to be 2^n+1, got ${A}.`);this.numTriangles=I*I*2-2,this.numParentTriangles=this.numTriangles-I*I,this.indices=new Uint32Array(this.gridSize*this.gridSize),this.coords=new Uint16Array(4*this.numTriangles);for(let A=0;A<this.numTriangles;A++){let g=A+2,B=0,e=0,C=0,i=0,t=0,Q=0;for(1&g?C=i=t=I:B=e=Q=I;(g>>=1)>1;){const A=B+C>>1,I=e+i>>1;1&g?(C=B,i=e,B=t,e=Q):(B=C,e=i,C=t,i=Q),t=A,Q=I}const E=4*A;this.coords[E+0]=B,this.coords[E+1]=e,this.coords[E+2]=C,this.coords[E+3]=i}}createTile(A){return new uI(A,this)}}class uI{constructor(A,I){const g=I.gridSize;if(A.length!==g*g)throw new Error(`Expected terrain data of length ${g*g} (${g} x ${g}), got ${A.length}.`);this.terrain=A,this.martini=I,this.errors=new Float32Array(A.length),this.update()}update(){const{numTriangles:A,numParentTriangles:I,coords:g,gridSize:B}=this.martini,{terrain:e,errors:C}=this;for(let i=A-1;i>=0;i--){const A=4*i,t=g[A+0],Q=g[A+1],E=g[A+2],s=g[A+3],o=t+E>>1,a=Q+s>>1,r=o+a-Q,n=a+t-o,h=(e[Q*B+t]+e[s*B+E])/2,l=a*B+o,c=Math.abs(h-e[l]);if(C[l]=Math.max(C[l],c),i<I){const A=(Q+n>>1)*B+(t+r>>1),I=(s+n>>1)*B+(E+r>>1);C[l]=Math.max(C[l],C[A],C[I])}}}getMesh(A=0){const{gridSize:I,indices:g}=this.martini,{errors:B}=this;let e=0,C=0;const i=I-1;function t(i,Q,E,s,o,a){const r=i+E>>1,n=Q+s>>1;Math.abs(i-o)+Math.abs(Q-a)>1&&B[n*I+r]>A?(t(o,a,i,Q,r,n),t(E,s,o,a,r,n)):(g[Q*I+i]=g[Q*I+i]||++e,g[s*I+E]=g[s*I+E]||++e,g[a*I+o]=g[a*I+o]||++e,C++)}g.fill(0),t(0,0,i,i,i,0),t(i,i,0,0,0,i);const Q=new Uint16Array(2*e),E=new Uint32Array(3*C);let s=0;function o(e,C,i,t,a,r){const n=e+i>>1,h=C+t>>1;if(Math.abs(e-a)+Math.abs(C-r)>1&&B[h*I+n]>A)o(a,r,e,C,n,h),o(i,t,a,r,n,h);else{const A=g[C*I+e]-1,B=g[t*I+i]-1,o=g[r*I+a]-1;Q[2*A]=e,Q[2*A+1]=C,Q[2*B]=i,Q[2*B+1]=t,Q[2*o]=a,Q[2*o+1]=r,E[s++]=A,E[s++]=B,E[s++]=o}}return o(0,0,i,i,i,0),o(i,i,0,0,0,i),{vertices:Q,triangles:E}}}function GI(A,I,g,B,e,C){return(g-e)*(I-C)-(B-C)*(A-e)}class NI{constructor(A,I,g=I){this.data=A,this.width=I,this.height=g,this.coords=[],this.triangles=[],this._halfedges=[],this._candidates=[],this._queueIndices=[],this._queue=[],this._errors=[],this._rms=[],this._pending=[],this._pendingLen=0,this._rmsSum=0;const B=I-1,e=g-1,C=this._addPoint(0,0),i=this._addPoint(B,0),t=this._addPoint(0,e),Q=this._addPoint(B,e),E=this._addTriangle(Q,C,t,-1,-1,-1);this._addTriangle(C,Q,i,E,-1,-1),this._flush()}run(A=1){for(;this.getMaxError()>A;)this.refine()}refine(){this._step(),this._flush()}getMaxError(){return this._errors[0]}getRMSD(){return this._rmsSum>0?Math.sqrt(this._rmsSum/(this.width*this.height)):0}heightAt(A,I){return this.data[this.width*I+A]}_flush(){const{coords:A}=this;for(let I=0;I<this._pendingLen;I++){const g=this._pending[I],B=2*this.triangles[3*g+0],e=2*this.triangles[3*g+1],C=2*this.triangles[3*g+2];this._findCandidate(A[B],A[B+1],A[e],A[e+1],A[C],A[C+1],g)}this._pendingLen=0}_findCandidate(A,I,g,B,e,C,i){const t=Math.min(A,g,e),Q=Math.min(I,B,C),E=Math.max(A,g,e),s=Math.max(I,B,C);let o=GI(g,B,e,C,t,Q),a=GI(e,C,A,I,t,Q),r=GI(A,I,g,B,t,Q);const n=B-I,h=A-g,l=C-B,c=g-e,D=I-C,w=e-A,y=GI(A,I,g,B,e,C),d=this.heightAt(A,I)/y,f=this.heightAt(g,B)/y,S=this.heightAt(e,C)/y;let u=0,G=0,N=0,F=0;for(let A=Q;A<=s;A++){let I=0;o<0&&0!==l&&(I=Math.max(I,Math.floor(-o/l))),a<0&&0!==D&&(I=Math.max(I,Math.floor(-a/D))),r<0&&0!==n&&(I=Math.max(I,Math.floor(-r/n)));let g=o+l*I,B=a+D*I,e=r+n*I,C=!1;for(let i=t+I;i<=E;i++){if(g>=0&&B>=0&&e>=0){C=!0;const I=d*g+f*B+S*e,t=Math.abs(I-this.heightAt(i,A));F+=t*t,t>u&&(u=t,G=i,N=A)}else if(C)break;g+=l,B+=D,e+=n}o+=c,a+=w,r+=h}(G===A&&N===I||G===g&&N===B||G===e&&N===C)&&(u=0),this._candidates[2*i]=G,this._candidates[2*i+1]=N,this._rms[i]=F,this._queuePush(i,u,F)}_step(){const A=this._queuePop(),I=3*A+0,g=3*A+1,B=3*A+2,e=this.triangles[I],C=this.triangles[g],i=this.triangles[B],t=this.coords[2*e],Q=this.coords[2*e+1],E=this.coords[2*C],s=this.coords[2*C+1],o=this.coords[2*i],a=this.coords[2*i+1],r=this._candidates[2*A],n=this._candidates[2*A+1],h=this._addPoint(r,n);if(0===GI(t,Q,E,s,r,n))this._handleCollinear(h,I);else if(0===GI(E,s,o,a,r,n))this._handleCollinear(h,g);else if(0===GI(o,a,t,Q,r,n))this._handleCollinear(h,B);else{const A=this._halfedges[I],t=this._halfedges[g],Q=this._halfedges[B],E=this._addTriangle(e,C,h,A,-1,-1,I),s=this._addTriangle(C,i,h,t,-1,E+1),o=this._addTriangle(i,e,h,Q,E+2,s+1);this._legalize(E),this._legalize(s),this._legalize(o)}}_addPoint(A,I){const g=this.coords.length>>1;return this.coords.push(A,I),g}_addTriangle(A,I,g,B,e,C,i=this.triangles.length){const t=i/3;return this.triangles[i+0]=A,this.triangles[i+1]=I,this.triangles[i+2]=g,this._halfedges[i+0]=B,this._halfedges[i+1]=e,this._halfedges[i+2]=C,B>=0&&(this._halfedges[B]=i+0),e>=0&&(this._halfedges[e]=i+1),C>=0&&(this._halfedges[C]=i+2),this._candidates[2*t+0]=0,this._candidates[2*t+1]=0,this._queueIndices[t]=-1,this._rms[t]=0,this._pending[this._pendingLen++]=t,i}_legalize(A){const I=this._halfedges[A];if(I<0)return;const g=A-A%3,B=I-I%3,e=g+(A+1)%3,C=g+(A+2)%3,i=B+(I+2)%3,t=B+(I+1)%3,Q=this.triangles[C],E=this.triangles[A],s=this.triangles[e],o=this.triangles[i],{coords:a}=this;if(!function(A,I,g,B,e,C,i,t){const Q=A-i,E=I-t,s=g-i,o=B-t,a=e-i,r=C-t,n=s*s+o*o,h=a*a+r*r;return Q*(o*h-n*r)-E*(s*h-n*a)+(Q*Q+E*E)*(s*r-o*a)<0}(a[2*Q],a[2*Q+1],a[2*E],a[2*E+1],a[2*s],a[2*s+1],a[2*o],a[2*o+1]))return;const r=this._halfedges[e],n=this._halfedges[C],h=this._halfedges[i],l=this._halfedges[t];this._queueRemove(g/3),this._queueRemove(B/3);const c=this._addTriangle(Q,o,s,-1,h,r,g),D=this._addTriangle(o,Q,E,c,n,l,B);this._legalize(c+1),this._legalize(D+2)}_handleCollinear(A,I){const g=I-I%3,B=g+(I+1)%3,e=g+(I+2)%3,C=this.triangles[e],i=this.triangles[I],t=this.triangles[B],Q=this._halfedges[B],E=this._halfedges[e],s=this._halfedges[I];if(s<0){const I=this._addTriangle(A,C,i,-1,E,-1,g),B=this._addTriangle(C,A,t,I,-1,Q);return this._legalize(I+1),void this._legalize(B+2)}const o=s-s%3,a=o+(s+2)%3,r=o+(s+1)%3,n=this.triangles[a],h=this._halfedges[a],l=this._halfedges[r];this._queueRemove(o/3);const c=this._addTriangle(C,i,A,E,-1,-1,g),D=this._addTriangle(i,n,A,l,-1,c+1,o),w=this._addTriangle(n,t,A,h,-1,D+1),y=this._addTriangle(t,C,A,Q,c+2,w+1);this._legalize(c),this._legalize(D),this._legalize(w),this._legalize(y)}_queuePush(A,I,g){const B=this._queue.length;this._queueIndices[A]=B,this._queue.push(A),this._errors.push(I),this._rmsSum+=g,this._queueUp(B)}_queuePop(){const A=this._queue.length-1;return this._queueSwap(0,A),this._queueDown(0,A),this._queuePopBack()}_queuePopBack(){const A=this._queue.pop();return this._errors.pop(),this._rmsSum-=this._rms[A],this._queueIndices[A]=-1,A}_queueRemove(A){const I=this._queueIndices[A];if(I<0){const I=this._pending.indexOf(A);if(-1===I)throw new Error("Broken triangulation (something went wrong).");return void(this._pending[I]=this._pending[--this._pendingLen])}const g=this._queue.length-1;g!==I&&(this._queueSwap(I,g),this._queueDown(I,g)||this._queueUp(I)),this._queuePopBack()}_queueLess(A,I){return this._errors[A]>this._errors[I]}_queueSwap(A,I){const g=this._queue[A],B=this._queue[I];this._queue[A]=B,this._queue[I]=g,this._queueIndices[g]=I,this._queueIndices[B]=A;const e=this._errors[A];this._errors[A]=this._errors[I],this._errors[I]=e}_queueUp(A){let I=A;for(;;){const A=I-1>>1;if(A===I||!this._queueLess(I,A))break;this._queueSwap(A,I),I=A}}_queueDown(A,I){let g=A;for(;;){const A=2*g+1;if(A>=I||A<0)break;const B=A+1;let e=A;if(B<I&&this._queueLess(B,A)&&(e=B),!this._queueLess(e,g))break;this._queueSwap(g,e),g=e}return g>A}}function FI(A,I,g,B){const e=function(A){const I=new Map,g=(A,g)=>{const B=Math.min(A,g),e=Math.max(A,g),C=BigInt(B)<<32n|BigInt(e);I.has(C)?I.delete(C):I.set(C,[A,g])};for(let I=0;I<A.length;I+=3){const B=A[I],e=A[I+1],C=A[I+2];g(B,e),g(e,C),g(C,B)}return Array.from(I.values())}(I),C=new A.POSITION.value.constructor(6*e.length),t=new A.TEXCOORD_0.value.constructor(4*e.length),Q=new I.constructor(6*e.length);for(let I=0;I<e.length;I++){kI({edge:e[I],edgeIndex:I,attributes:A,skirtHeight:g,newPosition:C,newTexcoord0:t,newTriangles:Q})}A.POSITION.value=i.concatenateTypedArrays(A.POSITION.value,C),A.TEXCOORD_0.value=i.concatenateTypedArrays(A.TEXCOORD_0.value,t);return{attributes:A,triangles:I instanceof Array?I.concat(Q):i.concatenateTypedArrays(I,Q)}}function kI({edge:A,edgeIndex:I,attributes:g,skirtHeight:B,newPosition:e,newTexcoord0:C,newTriangles:i}){const t=g.POSITION.value.length,Q=2*I,E=2*I+1;e.set(g.POSITION.value.subarray(3*A[0],3*A[0]+3),3*Q),e[3*Q+2]=e[3*Q+2]-B,e.set(g.POSITION.value.subarray(3*A[1],3*A[1]+3),3*E),e[3*E+2]=e[3*E+2]-B,C.set(g.TEXCOORD_0.value.subarray(2*A[0],2*A[0]+2),2*Q),C.set(g.TEXCOORD_0.value.subarray(2*A[1],2*A[1]+2),2*E);const s=2*I*3;i[s]=A[0],i[s+1]=t/3+E,i[s+2]=A[1],i[s+3]=t/3+E,i[s+4]=A[0],i[s+5]=t/3+Q}function RI(A,I,g,B,e){return g===I?B:(A-I)*(e-B)/(g-I)+B}class LI{static _swissColorLUTCache=new Map;static _8bitLUTCache=new Map;static _floatLUTCache=new Map;static getLUTCacheKey(A,I,g,B){return`${I}_${g}_${B}_${JSON.stringify(A.colorScale)}_${A.useSingleColor}_${JSON.stringify(A.color)}_${A.useColorClasses}_${JSON.stringify(A.colorClasses)}_${A.useColorsBasedOnValues}_${JSON.stringify(A.colorsBasedOnValues)}_${A.useHeatMap}_${A.clipLow??""}_${A.clipHigh??""}_${JSON.stringify(A.clippedColor)}_${JSON.stringify(A.nullColor)}_${JSON.stringify(A.unidentifiedColor)}`}static async generate(A,I){const g={...I},{rasters:B,width:e,height:C}=A,i=1===B.length,t=document.createElement("canvas");t.width=e,t.height=C;const Q=t.getContext("2d"),E=Q.createImageData(e,C),s=e*C*4,o=Math.floor(2.55*g.alpha);g.unidentifiedColor=this.getColorFromChromaType(g.unidentifiedColor,o),g.nullColor=this.getColorFromChromaType(g.nullColor,o),g.clippedColor=this.getColorFromChromaType(g.clippedColor,o),g.color=this.getColorFromChromaType(g.color,o),g.useChannelIndex??=null==g.useChannel?null:g.useChannel-1;const a=g.numOfChannels??(1===B.length?B[0].length/(e*C):B.length);if(g.useReliefGlaze)if(B.length>=1)E.data.set(this.getReliefGlazeRGBA(B,g,s));else{const A=new Uint8ClampedArray(s);A.fill(0),E.data.set(A)}else if(g.useSwissRelief)if(2===B.length)E.data.set(this.getColorValue(B,g,s));else{this.getDefaultColor(s,g.nullColor).forEach((A,I)=>{E.data[I]=A})}else if(null==g.useChannelIndex)if(i){const A=B[0].length/(e*C);if(1===A)g.useAutoRange&&(g.colorScaleValueRange=this.getMinMax(B[0],g)),E.data.set(this.getColorValue(B[0],g,s));else if(3===A||4===A){let I=0;for(let e=0;e<s;e+=4){const C=[B[0][I],B[0][I+1],B[0][I+2]],i=this.hasPixelsNoData(C,g.noDataValue);E.data[e]=i?g.nullColor[0]:C[0],E.data[e+1]=i?g.nullColor[1]:C[1],E.data[e+2]=i?g.nullColor[2]:C[2],E.data[e+3]=i?g.nullColor[3]:4===A?B[0][I+3]:o,I+=A}}}else{let A=0;for(let I=0;I<s;I+=4)E.data[I]=B[0][A],E.data[I+1]=B[1][A],E.data[I+2]=B[2][A],E.data[I+3]=4===B.length?B[3][A]:o,A++}else if(g.useChannelIndex<a&&g.useChannelIndex>=0){const A=1===B.length&&a>1,I=A?B[0]:B[g.useChannelIndex]??B[0],e=A?a:1;g.useAutoRange&&(g.colorScaleValueRange=this.getMinMax(I,g,e)),E.data.set(this.getColorValue(I,g,s,e))}else{console.log(`Defined channel(${I.useChannel}) or channel index(${I.useChannelIndex}) does not exist, choose a different channel or set the useChannel property to null if you want to visualize RGB(A) imagery`);this.getDefaultColor(s,g.nullColor).forEach((A,I)=>{E.data[I]=A})}Q.putImageData(E,0,0);return{map:await createImageBitmap(t),raw:B[0],width:e,height:C}}static getColorValue(A,I,g,B=1){const C=e.scale(I.colorScale?.map(A=>Array.isArray(A)?e(A):A)).domain(I.colorScaleValueRange??[0,255]),i=new Uint8ClampedArray(g),t=Math.floor(2.55*(I.alpha??100)),Q=I.colorScaleValueRange?.[0]??0,E=I.colorScaleValueRange?.[1]??255,s=Array.isArray(A),o=s?A[0]:A,a=I.useSwissRelief&&s&&A.length>=2,r=o instanceof Uint8Array||o instanceof Uint8ClampedArray,n=!r&&(o instanceof Float32Array||o instanceof Uint16Array||o instanceof Int16Array);if(a){const e=A[1],s=E-Q||1;let a=null;if(I.useHeatMap){const A=1024,g=`${Q}_${E}_${t}_${JSON.stringify(I.colorScale)}`;if(a=this._swissColorLUTCache.get(g)||null,!a){a=new Uint8ClampedArray(4*A);for(let I=0;I<A;I++){const g=C(Q+I/(A-1)*s).rgb();a[4*I]=g[0],a[4*I+1]=g[1],a[4*I+2]=g[2],a[4*I+3]=t}this._swissColorLUTCache.set(g,a)}}for(let A=0,E=I.useChannelIndex??0;A<g;A+=4,E+=B){const g=o[E],B=void 0!==I.noDataValue&&(Number.isNaN(I.noDataValue)?Number.isNaN(g):g===I.noDataValue);if(Number.isNaN(g)||B){i.set(I.nullColor,A);continue}let r;if(a){const A=(g-Q)/s,I=4*Math.min(1023,Math.max(0,Math.floor(1023*A)));r=[a[I],a[I+1],a[I+2],a[I+3]]}else r=this.calculateSingleColor(g,C,I,t);const n=.4+e[E]/255*.6;i[A]=Math.floor(r[0]*n),i[A+1]=Math.floor(r[1]*n),i[A+2]=Math.floor(r[2]*n),i[A+3]=r[3]}return i}if(r&&!I.useDataForOpacity){const A=I.useAutoRange?null:this.getLUTCacheKey(I,Q,E,t);let e=A?this._8bitLUTCache.get(A)??null:null;if(!e){e=new Uint8ClampedArray(1024);for(let A=0;A<256;A++)null!=I.clipLow&&A<=I.clipLow||null!=I.clipHigh&&A>=I.clipHigh?e.set(I.clippedColor,4*A):e.set(this.calculateSingleColor(A,C,I,t),4*A);A&&this._8bitLUTCache.set(A,e)}for(let A=0,C=I.useChannelIndex??0;A<g;A+=4,C+=B){const I=4*o[C];i[A]=e[I],i[A+1]=e[I+1],i[A+2]=e[I+2],i[A+3]=e[I+3]}return i}if(n&&I.useHeatMap&&!I.useSingleColor&&!I.useColorClasses&&!I.useColorsBasedOnValues&&!I.useDataForOpacity){const A=1024,e=E-Q||1,s=I.useAutoRange?null:this.getLUTCacheKey(I,Q,E,t);let a=s?this._floatLUTCache.get(s)??null:null;if(!a){a=new Uint8ClampedArray(4*A);for(let g=0;g<A;g++){const B=Q+g/(A-1)*e;if(null!=I.clipLow&&B<=I.clipLow||null!=I.clipHigh&&B>=I.clipHigh)a.set(I.clippedColor,4*g);else{const A=C(B).rgb();a[4*g]=A[0],a[4*g+1]=A[1],a[4*g+2]=A[2],a[4*g+3]=t}}s&&this._floatLUTCache.set(s,a)}for(let C=0,t=I.useChannelIndex??0;C<g;C+=4,t+=B){const g=o[t];if(this.isInvalid(g,I))i.set(this.getInvalidColor(g,I),C);else{const I=(g-Q)/e,B=4*Math.min(A-1,Math.max(0,Math.floor(I*(A-1))));i[C]=a[B],i[C+1]=a[B+1],i[C+2]=a[B+2],i[C+3]=a[B+3]}}return i}let h=I.useChannelIndex??0;for(let A=0;A<g;A+=4){const g=o[h];let e;e=null!=I.clipLow&&g<=I.clipLow||null!=I.clipHigh&&g>=I.clipHigh?I.clippedColor:this.calculateSingleColor(g,C,I,t),I.useDataForOpacity&&!this.isInvalid(g,I)&&(e[3]=RI(g,Q,E,0,255)),i.set(e,A),h+=B}return i}static getReliefGlazeRGBA(A,I,g){const B=A[0],e=(I.maxGlazeAlpha??128)/255,C=new Uint8Array(256);for(let A=0;A<256;A++)if(0===A)C[A]=0;else{const I=Math.abs(A-128)/128,g=A<128?.6:.8;C[A]=Math.floor(255*Math.pow(I,g)*e)}const i=new Uint8ClampedArray(g);let t=0;for(let A=0;A<g;A+=4){const I=B[t],g=I<128?0:255,e=C[I];i[A]=g,i[A+1]=g,i[A+2]=g,i[A+3]=e,t++}return i}static calculateSingleColor(A,I,g,B){if(this.isInvalid(A,g))return g.nullColor;if(g.useSingleColor)return g.color;if(g.useColorClasses){const I=this.findClassIndex(A,g);return I>-1?[...e(Array.isArray(g.colorClasses[I][0])?e(g.colorClasses[I][0]):g.colorClasses[I][0]).rgb(),B]:g.unidentifiedColor}if(g.useColorsBasedOnValues){const I=g.colorsBasedOnValues?.find(([I])=>I===A);return I?[...e(Array.isArray(I[1])?e(I[1]):I[1]).rgb(),B]:g.unidentifiedColor}return g.useHeatMap?[...I(A).rgb(),B]:g.unidentifiedColor}static findClassIndex(A,I){if(!I.colorClasses)return-1;for(let g=0;g<I.colorClasses.length;g++){const[,[B,e],C]=I.colorClasses[g],[i,t]=C||(g===I.colorClasses.length-1?[!0,!0]:[!0,!1]);if((i?A>=B:A>B)&&(t?A<=e:A<e))return g}return-1}static getDefaultColor(A,I){const g=new Uint8ClampedArray(A);for(let B=0;B<A;B+=4)[g[B],g[B+1],g[B+2],g[B+3]]=I;return g}static isInvalid(A,I){return Number.isNaN(A)||void 0!==I.noDataValue&&A===I.noDataValue}static getInvalidColor(A,I){return I.nullColor}static getMinMax(A,I,g=1){let B=-1/0,e=1/0;for(let C=I.useChannelIndex??0;C<A.length;C+=g){const g=A[C];this.isInvalid(g,I)||(g>B&&(B=g),g<e&&(e=g))}return B===-1/0?I.colorScaleValueRange||[0,255]:[e,B]}static getColorFromChromaType(A,I=255){return Array.isArray(A)&&4===A.length?A:[...e(A).rgb(),I]}static hasPixelsNoData(A,I){return void 0!==I&&A.every(A=>A===I)}}class UI{static computeGradients(A,I,g,B,e,C,i,t,Q,E=!0){return{dzdx:(g+2*e+t-(A+2*B+C))*Q,dzdy:E?(A+2*I+g-(C+2*i+t))*Q:(C+2*i+t-(A+2*I+g))*Q}}static calculateSlope(A,I,g=1,B){const e=256,C=258,i=new Float32Array(65536),t=1/(8*I),Q=180/Math.PI,E=void 0!==B&&Number.isNaN(B);for(let I=0;I<e;I++)for(let s=0;s<e;s++){const o=I*C+s,a=A[o+C+1];if(void 0!==B&&(E?Number.isNaN(a):a===B)){i[I*e+s]=NaN;continue}const r=A[o],n=A[o+1],h=A[o+2],l=A[o+C],c=A[o+C+2],D=A[o+516],w=A[o+516+1],y=A[o+516+2],{dzdx:d,dzdy:f}=this.computeGradients(r,n,h,l,c,D,w,y,t,!1),S=Math.atan(g*Math.sqrt(d*d+f*f));i[I*e+s]=S*Q}return i}static calculateHillshade(A,I,g=315,B=45,e=1,C){const i=256,t=258,Q=new Float32Array(65536),E=(90-B)*(Math.PI/180);let s=360-g+90;s>=360&&(s-=360);const o=s*(Math.PI/180),a=1/(8*I),r=void 0!==C&&Number.isNaN(C);for(let I=0;I<i;I++)for(let g=0;g<i;g++){const B=I*t+g,s=A[B+t+1];if(void 0!==C&&(r?Number.isNaN(s):s===C)){Q[I*i+g]=NaN;continue}const n=A[B],h=A[B+1],l=A[B+2],c=A[B+t],D=A[B+t+2],w=A[B+516],y=A[B+516+1],d=A[B+516+2],{dzdx:f,dzdy:S}=this.computeGradients(n,h,l,c,D,w,y,d,a,!0),u=Math.atan(e*Math.sqrt(f*f+S*S)),G=Math.atan2(S,-f),N=255*(Math.cos(E)*Math.cos(u)+Math.sin(E)*Math.sin(u)*Math.cos(o-G));Q[I*i+g]=Math.max(0,Math.min(255,N))}return Q}static calculateMultiHillshade(A,I,g=1,B){const e=256,C=258,i=new Float32Array(65536),t=1/(8*I),Q=void 0!==B&&Number.isNaN(B),E=[{az:315,alt:45,weight:.6},{az:225,alt:35,weight:.25},{az:0,alt:35,weight:.15}].map(A=>{const I=(90-A.alt)*(Math.PI/180);let g=360-A.az+90;return g>=360&&(g-=360),{zCos:Math.cos(I),zSin:Math.sin(I),aRad:g*(Math.PI/180),w:A.weight}});for(let I=0;I<e;I++)for(let s=0;s<e;s++){const o=I*C+s,a=A[o+C+1];if(void 0!==B&&(Q?Number.isNaN(a):a===B)){i[I*e+s]=NaN;continue}const r=A[o],n=A[o+1],h=A[o+2],l=A[o+C],c=A[o+C+2],D=A[o+516],w=A[o+516+1],y=A[o+516+2],{dzdx:d,dzdy:f}=this.computeGradients(r,n,h,l,c,D,w,y,t,!0),S=Math.atan(g*Math.sqrt(d*d+f*f)),u=Math.atan2(f,-d),G=Math.cos(S),N=Math.sin(S);let F=0;for(const A of E){const I=A.zCos*G+A.zSin*N*Math.cos(A.aRad-u);F+=Math.max(0,I)*A.w}i[I*e+s]=Math.min(255,255*F)}return i}}class pI{static _swissReliefLUT=null;static _lastWeight=null;static getSwissReliefLUT(A=.5){if(this._swissReliefLUT&&this._lastWeight===A)return this._swissReliefLUT;const I=new Float32Array(65536);for(let g=0;g<256;g++){const B=g/255;for(let e=0;e<256;e++){const C=1-e/255*A;I[g<<8|e]=Math.max(.01,B*C)}}return this._swissReliefLUT=I,this._lastWeight=A,I}static composeSwissRelief(A,I,g,B,e){const C=I.swissSlopeWeight??.5,i=UI.calculateSlope(A,g,I.zFactor??1,I.noDataValue),t=UI.calculateMultiHillshade(A,g,I.zFactor??1,I.noDataValue),Q=this.getSwissReliefLUT(C),E=new Uint8ClampedArray(B*e),s=255/90;for(let A=0;A<B*e;A++){if(isNaN(i[A])){E[A]=0;continue}const I=Math.max(0,Math.min(255,i[A]*s|0)),g=0|Math.max(0,Math.min(255,t[A]));E[A]=Math.max(1,255*Q[g<<8|I]|0)}return E}}class YI{static async generate(A,I,g){const{width:B,height:e}=A,i=258===B,t=this.computeTerrainData(A,I),Q=i?this.extractMeshRaster(t):t,E=i?257:B,s=i?257:e,{terrainSkirtHeight:o,verticalExaggeration:a=1}=I;let r;switch(I.tesselator){case"martini":default:r=this.getMartiniTileMesh(g,E,Q);break;case"delatin":r=this.getDelatinTileMesh(g,E,s,Q)}const{vertices:n}=r;let{triangles:h}=r,l=this.getMeshAttributes(n,Q,E,s,A.bounds,a);const c=C.getMeshBoundingBox(l);if(o){const A=o*a;if(A>0){const{attributes:I,triangles:g}=FI(l,h,A);l=I,h=g}}const D=257===E?257:E+1,w=257===s?257:s+1,y={map:{loaderData:{header:{}},header:{vertexCount:h.length,boundingBox:c},mode:4,indices:{value:Uint32Array.from(h),size:1},attributes:l},raw:Q,width:D,height:w};if(i&&I.useSwissRelief){const g=A.cellSizeMeters??(A.bounds[2]-A.bounds[0])/256,B=this.preserveNoDataForKernel(t,A.rasters[0],I.noDataValue),e=pI.composeSwissRelief(B,I,g,256,256);if(y.rawDerived=e,this.hasVisualizationOptions(I)){const A=this.cropRaster(Q,D,w,256,256),g=await LI.generate({width:256,height:256,rasters:[A,e]},{...I,type:"image"});y.texture=g.map}}else if(i&&(I.useSlope||I.useHillshade)){const g=A.cellSizeMeters??(A.bounds[2]-A.bounds[0])/256,B=I.zFactor??1;I.useSlope&&I.useHillshade&&console.warn("[TerrainGenerator] useSlope and useHillshade are mutually exclusive; useSlope takes precedence.");const e=this.preserveNoDataForKernel(t,A.rasters[0],I.noDataValue);let C;if(C=I.useSlope?UI.calculateSlope(e,g,B,I.noDataValue):UI.calculateHillshade(e,g,I.hillshadeAzimuth??315,I.hillshadeAltitude??45,B,I.noDataValue),y.rawDerived=C,this.hasVisualizationOptions(I)){const A=await LI.generate({width:256,height:256,rasters:[C]},{...I,type:"image"});y.texture=A.map}}else if(this.hasVisualizationOptions(I)){const A=this.cropRaster(Q,D,w,256,256),g=await LI.generate({width:256,height:256,rasters:[A]},{...I,type:"image"});y.texture=g.map}return y}static extractMeshRaster(A){const I=257,g=new Float32Array(66049);for(let B=0;B<I;B++)for(let e=0;e<I;e++)g[B*I+e]=A[258*(B+1)+(e+1)];return g}static hasVisualizationOptions(A){return!!(A.useSingleColor||A.useHeatMap||A.useSwissRelief||A.useColorsBasedOnValues||A.useColorClasses)}static preserveNoDataForKernel(A,I,g){const B=new Float32Array(A.length);if(null!=g&&I&&I.length===A.length){const e=Number.isNaN(g);for(let C=0;C<A.length;C++){const i=I[C],t=e?Number.isNaN(i):i===g;B[C]=t?g:A[C]}}else B.set(A);return B}static cropRaster(A,I,g,B,e){const C=new Float32Array(B*e);for(let g=0;g<e;g++)for(let e=0;e<B;e++)C[g*B+e]=A[g*I+e];return C}static computeTerrainData(A,I){const{width:g,height:B,rasters:e}=A,C={...I};C.useChannelIndex??=null==C.useChannel?null:C.useChannel-1;const i=e.length>1,t=i?e[C.useChannelIndex??0]??e[0]:e[0],Q=258===g,E=257===g,s=new Float32Array((Q?258:E?257:g+1)*(Q?258:E?257:B+1)),o=i?1:t.length/(g*B);let a=i?0:C.useChannelIndex??0;const r=I.terrainMinValue??0;for(let A=0;A<B;A++)for(let B=0;B<g;B++){const e=I.multiplier??1;let C=void 0!==I.noDataValue&&null!==I.noDataValue&&t[a]===I.noDataValue?r:t[a]*e;(Number.isNaN(C)||C<-34e37||C>34e37)&&(C=r);s[Q||E?A*g+B:A*(g+1)+B]=C,a+=o}if(!Q&&!E){for(let A=(g+1)*g,I=0;I<g;I++,A++)s[A]=s[A-g-1];for(let A=B,I=0;I<B+1;I++,A+=B+1)s[A]=s[A-1]}return s}static getMartiniTileMesh(A,I,g){const B=new SI(257===I?257:I+1).createTile(g),{vertices:e,triangles:C}=B.getMesh(A);return{vertices:e,triangles:C}}static getDelatinTileMesh(A,I,g,B){const e=new NI(B,257===I?257:I+1,257===g?257:g+1);e.run(A);const{coords:C,triangles:i}=e;return{vertices:C,triangles:i}}static getMeshAttributes(A,I,g,B,e,C=1){const i=257===g?257:g+1,t=A.length/2,Q=new Float32Array(3*t),E=new Float32Array(2*t),[s,o,a,r]=e||[0,0,g,B],n=257===g?g-1:g,h=257===B?B-1:B,l=(a-s)/n,c=(r-o)/h;for(let g=0;g<t;g++){const B=A[2*g],e=A[2*g+1],t=e*i+B;Q[3*g]=B*l+s,Q[3*g+1]=-e*c+r,Q[3*g+2]=I[t]*C,E[2*g]=B/n,E[2*g+1]=e/h}return{POSITION:{value:Q,size:3},TEXCOORD_0:{value:E,size:2}}}}class MI{data;async setUrl(A){const I=await fetch(A),g=await I.arrayBuffer(),B=await dI(g),e=await B.getImage(0);this.data=e}async getMap(A,I,g){const B=MI.resolveVisualizationMode({...fI,...I},I);switch(B.type){case"image":return this.getBitmap(A,B);case"terrain":return this.getHeightmap(A,B,g);default:return null}}static resolveVisualizationMode(A,I){const g=["useSingleColor","useColorClasses","useColorsBasedOnValues","useHeatMap"],B=g.filter(A=>!0===I[A]),e={...A};if(B.length>0){for(const A of g)e[A]=!1;for(const A of B)e[A]=!0}else if("terrain"===A.type){I.useSwissRelief||I.useSlope||I.useHillshade||(e.useHeatMap=!1,e.useSingleColor=!0,e.color=A.terrainColor)}return e}async getHeightmap(A,I,g){let B,e,C,i,t=[];return"string"==typeof A?(await this.setUrl(A),t=await this.data.readRasters(),B=this.data.getWidth(),e=this.data.getHeight(),C=this.data.getBoundingBox()):(t=A.rasters,B=A.width,e=A.height,C=A.bounds,i=A.cellSizeMeters),await YI.generate({width:B,height:e,rasters:t,bounds:C,cellSizeMeters:i},I,g)}async getBitmap(A,I){let g,B,e=[];return"string"==typeof A?(await this.setUrl(A),e=await this.data.readRasters(),g=this.data.getWidth(),B=this.data.getHeight()):(e=A.rasters,g=A.width,B=A.height),LI.generate({width:g,height:B,rasters:e},I)}}const mI=2*Math.PI*6378137,KI=mI/2,HI=[-20037508.342789244,20037508.342789244],JI={blurredTexture:!0};class bI{cog;cogZoomLookup=[];cogResolutionLookup=[];cogOrigin=[0,0];zoomRange=[0,0];tileSize=256;bounds=[0,0,0,0];geo=new MI;options;imageCache=new Map;initializePromise;constructor(A){this.options={...JI,...A}}async initializeCog(A){return this.initializePromise?this.initializePromise:this.cog?void 0:(this.initializePromise=(async()=>{try{const I=this.options.blockSize??65536;this.cog=await async function(A,I={},g){return yI.fromSource(iI(A,I),void 0,g)}(A,{blockSize:I});const g=this.cog.getImage();this.imageCache.set(0,g);const B=await g,e=B.fileDirectory;if(this.cogOrigin=B.getOrigin(),this.options.noDataValue??=await this.getNoDataValue(B),this.options.format??=await this.getDataTypeFromTags(e),this.options.numOfChannels=e.getValue("SamplesPerPixel"),this.options.planarConfig=e.getValue("PlanarConfiguration"),[this.cogZoomLookup,this.cogResolutionLookup]=await this.buildCogZoomResolutionLookup(this.cog),this.tileSize=B.getTileWidth(),!this.tileSize||!B.getTileHeight())throw new Error('GeoTIFF Error: The provided image is not tiled. Please use "rio cogeo create --web-optimized" to fix this.');this.zoomRange=this.calculateZoomRange(this.tileSize,B.getResolution()[0],await this.cog.getImageCount()),this.bounds=this.calculateBoundsAsLatLon(B.getBoundingBox())}catch(I){throw this.initializePromise=void 0,console.error(`[CogTiles] Failed to initialize COG from ${A}:`,I),I}})(),this.initializePromise)}getZoomRange(){return this.zoomRange}calculateZoomRange(A,I,g){const B=this.getZoomLevelFromResolution(A,I);return[B-(g-1),B]}calculateBoundsAsLatLon(A){const I=Math.min(A[0],A[2]),g=Math.max(A[0],A[2]),B=Math.min(A[1],A[3]),e=Math.max(A[1],A[3]),C=this.getLatLon([I,B]),i=this.getLatLon([g,e]);return[C[0],C[1],i[0],i[1]]}getZoomLevelFromResolution(A,I){return Math.round(Math.log2(mI/(I*A)))}getBoundsAsLatLon(){return this.bounds}getLatLon(A){const I=A[0],g=A[1],B=I/KI*180;let e=g/KI*180;return e=180/Math.PI*(2*Math.atan(Math.exp(e*Math.PI/180))-Math.PI/2),[B,e]}async buildCogZoomResolutionLookup(A){const I=await A.getImageCount(),g=await A.getImage(0),B=g.getResolution()[0],e=g.getWidth(),C=[],i=[];for(let g=0;g<I;g++){const I=B*(e/(await A.getImage(g)).getWidth()),t=Math.round(Math.log2(156543.03125/I));C[g]=t,i[g]=I}return[C,i]}getImageIndexForZoomLevel(A){const I=this.cogZoomLookup[this.cogZoomLookup.length-1];if(A>this.cogZoomLookup[0])return 0;if(A<I)return this.cogZoomLookup.length-1;const g=this.cogZoomLookup.indexOf(A);return-1===g&&console.log("getImageIndexForZoomLevel: error in retrieving image by zoom index"),g}async getTileFromImage(A,I,g,B,e){const C=new AbortController;e&&!e.aborted&&e.addEventListener("abort",()=>C.abort(),{once:!0});const i=C.signal;try{const e=this.getImageIndexForZoomLevel(g);let C=this.imageCache.get(e);C||(C=this.cog.getImage(e),this.imageCache.set(e,C));const t=await C,Q=this.cogResolutionLookup[e],E=t.getHeight(),s=t.getWidth(),[o,a]=this.cogOrigin,r=this.tileSize,n=mI/r/2**g,h=(HI[0]+A*r*n-o)/Q,l=(a-(HI[1]-I*r*n))/Q,c=B||r,D=Math.round(h),w=Math.round(l),y=D+c,d=w+c,f=Math.max(0,D),S=Math.max(0,w),u=Math.min(s,y),G=Math.min(E,d),N=u-f,F=G-S;if(N<=0||F<=0)return[this.createEmptyTile(c)];const k=f-D,R=S-w,L=[f,S,u,G];if(k>0||R>0||N<c||F<c){const A=this.options.numOfChannels||1,I=this.createTileBuffer(this.options.format||"Float32",c,A);void 0!==this.options.noDataValue&&I.fill(this.options.noDataValue);const g=await t.readRasters({window:L,signal:i});for(let B=0;B<g.length;B+=1){const e=this.createTileBuffer(this.options.format||"Float32",c);void 0!==this.options.noDataValue&&e.fill(this.options.noDataValue);for(let A=0;A<F;A+=1){const I=R+A,C=I*c,i=A*g.width;for(let A=0;A<N;A+=1){const t=k+A;I<c&&t<c?e[C+t]=g[B][i+A]:console.log(`error in assigning data to tile buffer: destRow ${I}, destCol ${t}, FETCH_SIZE ${c}`)}}for(let g=0;g<e.length;g+=1)I[g*A+B]=e[g]}return[I]}return[await t.readRasters({window:L,interleave:!0,signal:i})]}catch(A){if(i.aborted||A instanceof AggregateError&&A.errors?.some(A=>"AbortError"===A?.name||A?.message?.includes("aborted")||A?.message?.includes("abort"))||A instanceof DOMException&&"AbortError"===A.name||A instanceof Error&&"Request was aborted"===A.message)throw new DOMException("Tile request aborted","AbortError");throw A}}createEmptyTile(A){const I=A||this.tileSize,g=this.options.numOfChannels||1,B=new Float32Array(I*I*g);return void 0!==this.options.noDataValue&&B.fill(this.options.noDataValue),B}async getTile(A,I,g,B,e,C){let i=this.tileSize;if("terrain"===this.options.type){const A=this.options.useSlope||this.options.useHillshade||this.options.useSwissRelief;i=this.tileSize+(A?2:1)}else"image"===this.options.type&&this.options.useReliefGlaze&&(i=this.tileSize+2);const t=await this.getTileFromImage(A,I,g,i,C),Q=Math.atan(Math.sinh(Math.PI*(1-2*(I+.5)/Math.pow(2,g)))),E=mI/Math.pow(2,g)*Math.cos(Q)/this.tileSize;let s=[t[0]],o=i,a=i;if("image"===this.options.type&&this.options.useReliefGlaze){const A=t[0];s=[pI.composeSwissRelief(A,this.options,E,this.tileSize,this.tileSize)],o=this.tileSize,a=this.tileSize}return this.geo.getMap({rasters:s,width:o,height:a,bounds:B??[0,0,0,0],cellSizeMeters:E},this.options,e??4)}async getDataTypeFromTags(A){const I=A.hasTag("SampleFormat"),g=A.hasTag("BitsPerSample");if(!I||!g)return console.warn("Missing SampleFormat or BitsPerSample tags, defaulting to UInt8"),"UInt8";const B=A.getValue("SampleFormat"),e=A.getValue("BitsPerSample"),C=B&&"number"==typeof B.length&&B.length>0?B[0]:B;let i;return i=1===C?"UInt":2===C?"Int":3===C?"Float":"Unknown",`${i}${e&&"number"==typeof e.length&&e.length>0?e[0]:e}`}getNoDataValue(A){const I=A.getGDALNoData();if(null==I)return void console.warn("No noData value defined — raster might be rendered incorrectly.");const g=String(I).replace(/\0/g,"").trim();if(""===g)return void console.warn("noData value is an empty string after cleanup.");const B=Number(g);return"nan"===g.toLowerCase()?NaN:Number.isNaN(B)?void console.warn(`Failed to parse numeric noData value: '${g}'`):B}createTileBuffer(A,I,g=1){const B=I*I*g;switch(A){case"UInt8":return new Uint8Array(B);case"Int8":return new Int8Array(B);case"UInt16":return new Uint16Array(B);case"Int16":return new Int16Array(B);case"UInt32":return new Uint32Array(B);case"Int32":return new Int32Array(B);case"Float32":return new Float32Array(B);case"Float64":return new Float64Array(B);default:return console.warn(`Unsupported data type: ${A}, defaulting to Float32`),new Float32Array(B)}}}const qI={type:"object",value:null,validate:(A,I)=>I.optional&&null===A||"string"==typeof A||Array.isArray(A)&&A.every(A=>"string"==typeof A),equal:(A,I)=>{if(A===I)return!0;if(!Array.isArray(A)||!Array.isArray(I))return!1;const g=A.length;if(g!==I.length)return!1;for(let B=0;B<g;B++)if(A[B]!==I[B])return!1;return!0}},xI={...I.TileLayer.defaultProps,bounds:{type:"array",value:null,optional:!0,compare:!0},rasterData:qI,clampToTerrain:!1,workerUrl:""};class TI extends A.CompositeLayer{static defaultProps=xI;static layerName="CogBitmapLayer";async initializeState(A){super.initializeState(A),this.setState({bitmapCogTiles:this.props.cogTiles||new bI(this.props.cogBitmapOptions),initialized:!1}),await this.init()}async init(){await this.state.bitmapCogTiles.initializeCog(this.props.rasterData);const A=this.state.bitmapCogTiles.getZoomRange(),[I,g]=A;this.setState({initialized:!0,minZoom:I,maxZoom:g})}updateState({props:I,oldProps:g}){const B=I.rasterData!==g.rasterData;if(B){const{rasterData:A}=I,g=A&&(Array.isArray(A)||A.includes("{x}")&&A.includes("{y}")||this.props.isTiled);this.setState({isTiled:g})}B||(I.bounds,g.bounds);this.state.isTiled,I?.cogBitmapOptions?.useChannel!==g.cogBitmapOptions?.useChannel&&(this.state.bitmapCogTiles.options.useChannel=I.cogBitmapOptions.useChannel,this.state.bitmapCogTiles.options.useChannelIndex=null),I.workerUrl&&A.log.removed("workerUrl","loadOptions.terrain.workerUrl")()}async getTiledBitmapData(A){const I=await this.state.bitmapCogTiles.getTile(A.index.x,A.index.y,A.index.z,void 0,void 0,A.signal);return I&&!this.props.pickable&&(I.raw=null),I}renderSubLayers(A){const I=this.getSubLayerClass("image",g.BitmapLayer),{blurredTexture:e}=this.state.bitmapCogTiles.options,{clampToTerrain:C}=this.props,i="object"==typeof C&&null!==C&&"terrainDrawMode"in C,{data:t}=A;if(!t)return null;const{bbox:{west:Q,south:E,east:s,north:o}}=A.tile;return new I({...A,tileSize:this.state.bitmapCogTiles.tileSize},{data:[1],image:t.map,_instanced:!1,pickable:A.pickable,bounds:[Q,E,s,o],textureParameters:{minFilter:e?"linear":"nearest",magFilter:e?"linear":"nearest"},extensions:C?[new B._TerrainExtension]:[],...i?{terrainDrawMode:C.terrainDrawMode}:{}})}renderLayers(){const{clampToTerrain:A,maxRequests:g,onTileLoad:B,onTileUnload:e,onTileError:C,maxCacheSize:i,maxCacheByteSize:t,refinementStrategy:Q,cogBitmapOptions:E}=this.props;if(this.state.isTiled&&this.state.initialized){const{tileSize:s}=this.state.bitmapCogTiles;return new I.TileLayer(this.getSubLayerProps({id:"tiles"}),{getTileData:this.getTiledBitmapData.bind(this),renderSubLayers:this.renderSubLayers.bind(this),pickable:this.props.pickable,onClick:this.props.onClick,updateTriggers:{getTileData:[A,E.useChannel]},extent:this.state.bitmapCogTiles.getBoundsAsLatLon(),tileSize:s,minZoom:this.state.minZoom,maxZoom:this.state.maxZoom,maxRequests:g,onTileLoad:B,onTileUnload:e,onTileError:C,maxCacheSize:i,maxCacheByteSize:t,refinementStrategy:Q})}return null}}const OI={type:"object",value:null,validate:(A,I)=>I.optional&&null===A||"string"==typeof A||Array.isArray(A)&&A.every(A=>"string"==typeof A),equal:(A,I)=>{if(A===I)return!0;if(!Array.isArray(A)||!Array.isArray(I))return!1;const g=A.length;if(g!==I.length)return!1;for(let B=0;B<g;B++)if(A[B]!==I[B])return!1;return!0}},PI=[1],vI={...I.TileLayer.defaultProps,elevationData:OI,texture:{...OI,optional:!0},meshMaxError:{type:"number",value:4},bounds:{type:"array",value:null,optional:!0,compare:!0},color:{type:"color",value:[255,255,255]},elevationDecoder:{type:"object",value:{rScaler:1,gScaler:0,bScaler:0,offset:0}},workerUrl:"",wireframe:!1,material:!0};class VI extends A.CompositeLayer{static defaultProps=vI;static layerName="CogTerrainLayer";terrainUrl="";async initializeState(A){super.initializeState(A);const I=this.props.cogTiles||new bI(this.props.terrainOptions);if(this.setState({terrainCogTiles:I,initialized:!1}),I.cog){const A=I.getZoomRange(),[g,B]=A;this.setState({initialized:!0,minZoom:g,maxZoom:B})}else await this.init()}async init(){await this.state.terrainCogTiles.initializeCog(this.props.elevationData);const A=this.state.terrainCogTiles.getZoomRange(),[I,g]=A;this.setState({initialized:!0,minZoom:I,maxZoom:g})}updateState({props:I,oldProps:g}){const B=I.elevationData!==g.elevationData;if(B){const{elevationData:A}=I,g=A&&(Array.isArray(A)||A.includes("{x}")&&A.includes("{y}"))||this.props.isTiled;this.setState({isTiled:g})}B||I.meshMaxError!==g.meshMaxError||I.elevationDecoder!==g.elevationDecoder||(I.bounds,g.bounds);this.state.isTiled,I?.terrainOptions?.useChannel!==g.terrainOptions?.useChannel&&(this.state.terrainCogTiles.options.useChannel=I.terrainOptions.useChannel,this.state.terrainCogTiles.options.useChannelIndex=null),I.cogTiles&&I.cogTiles!==g.cogTiles&&this.setState({terrainCogTiles:I.cogTiles}),I.workerUrl&&A.log.removed("workerUrl","loadOptions.terrain.workerUrl")()}loadTerrain({elevationData:A,bounds:I,elevationDecoder:g,meshMaxError:B,signal:e}){if(!A)return null;let C=this.getLoadOptions();C={...C,_workerType:"test",terrain:{skirtHeight:this.state.isTiled?2*B:0,...C?.terrain,bounds:I,meshMaxError:B,elevationDecoder:g}};const{fetch:i}=this.props;return i(A,{propName:"elevationData",layer:this,loadOptions:C,signal:e,loaders:[]})}async getTiledTerrainData(A){const{viewport:I}=this.context;let g=[0,0],B=[0,0];if(I.isGeospatial){const e=A.bbox;g=I.projectFlat([e.west,e.south]),B=I.projectFlat([e.east,e.north])}else{const I=A.bbox;g=[I.left,I.bottom],B=[I.right,I.top]}const e=[g[0],g[1],B[0],B[1]],C=await this.state.terrainCogTiles.getTile(A.index.x,A.index.y,A.index.z,e,this.props.meshMaxError,A.signal);return C&&!this.props.pickable&&(C.raw=null),Promise.all([C,null])}renderSubLayers(I){const g=this.getSubLayerClass("mesh",t.SimpleMeshLayer),{color:B,wireframe:e,terrainOptions:C}=this.props,{data:i}=I;if(!i)return null;const[Q]=i,E=!this.props.disableTexture&&Q?.texture?Q.texture:null,s=C?.useSwissRelief,o=C?.disableLighting,a=s||o?{material:{ambient:1,diffuse:0,shininess:0,specularColor:[0,0,0]}}:{material:this.props.material};return new g({...I,tileSize:I.tileSize},{...a,data:PI,mesh:Q?.map,texture:E,_instanced:!1,pickable:I.pickable,coordinateSystem:A.COORDINATE_SYSTEM.CARTESIAN,getColor:E?[255,255,255]:B,wireframe:e})}onViewportLoad(A){if(!A)return;const{zRange:I}=this.state,g=A.map(A=>A.content).filter(A=>!!A&&!!A[0]).map(A=>{if(!A||!A[0])return;const I=A[0]?.map?.header?.boundingBox;return I?.map(A=>A[2])}).filter(A=>void 0!==A);if(0===g.length)return;const B=Math.min(...g.map(A=>A?.[0]??0).filter(A=>Number.isFinite(A))),e=Math.max(...g.map(A=>A?.[1]??0).filter(A=>Number.isFinite(A)));(!I||B<I[0]||e>I[1])&&this.setState({zRange:[Number.isFinite(B)?B:0,Number.isFinite(e)?e:0]})}renderLayers(){const{elevationData:A,meshMaxError:g,elevationDecoder:B,tileSize:e,extent:C,maxRequests:i,onTileLoad:t,onTileUnload:Q,onTileError:E,maxCacheSize:s,maxCacheByteSize:o,refinementStrategy:a}=this.props;return this.state.isTiled&&this.state.initialized?new I.TileLayer(this.getSubLayerProps({id:"tiles"}),{getTileData:this.getTiledTerrainData.bind(this),renderSubLayers:this.renderSubLayers.bind(this),pickable:this.props.pickable,onClick:this.props.onClick,updateTriggers:{getTileData:{elevationData:(r=A,Array.isArray(r)?r.join(";"):r||""),meshMaxError:g,elevationDecoder:B,terrainCogTiles:this.state.terrainCogTiles},renderSubLayers:{disableTexture:this.props.disableTexture,terrainOptions:this.props.terrainOptions}},onViewportLoad:this.onViewportLoad.bind(this),zRange:this.state.zRange||null,tileSize:e,minZoom:this.state.minZoom,maxZoom:this.state.maxZoom,extent:C,maxRequests:i,onTileLoad:t,onTileUnload:Q,onTileError:E,maxCacheSize:s,maxCacheByteSize:o,refinementStrategy:a}):null;var r}}E();var ZI=Object.freeze({__proto__:null,default:class extends lI{decodeBlock(A){return A}}});function jI(A,I){for(let g=I.length-1;g>=0;g--)A.push(I[g]);return A}function zI(A){const I=new Uint16Array(4093),g=new Uint8Array(4093);for(let A=0;A<=257;A++)I[A]=4096,g[A]=A;let B=258,e=9,C=0;function i(){B=258,e=9}function t(A){const I=function(A,I,g){const B=I%8,e=Math.floor(I/8),C=8-B,i=I+g-8*(e+1);let t=8*(e+2)-(I+g);const Q=8*(e+2)-I;if(t=Math.max(0,t),e>=A.length)return console.warn("ran off the end of the buffer before finding EOI_CODE (end on input code)"),257;let E=A[e]&2**(8-B)-1;E<<=g-C;let s=E;if(e+1<A.length){let I=A[e+1]>>>t;I<<=Math.max(0,g-Q),s+=I}if(i>8&&e+2<A.length){const B=8*(e+3)-(I+g);s+=A[e+2]>>>B}return s}(A,C,e);return C+=e,I}function Q(A,e){return g[B]=e,I[B]=A,B++,B-1}function E(A){const B=[];for(let e=A;4096!==e;e=I[e])B.push(g[e]);return B}const s=[];i();const o=new Uint8Array(A);let a,r=t(o);for(;257!==r;){if(256===r){for(i(),r=t(o);256===r;)r=t(o);if(257===r)break;if(r>256)throw new Error(`corrupted code at scanline ${r}`);jI(s,E(r)),a=r}else if(r<B){const A=E(r);jI(s,A),void 0!==a&&Q(a,A[A.length-1]),a=r}else{if(void 0===a)throw new Error(`Invalid LZW code: ${r} with no previous code`);const A=E(a);if(!A)throw new Error(`Bogus entry. Not in dictionary, ${a} / ${B}, position: ${C}`);jI(s,A),s.push(A[A.length-1]),Q(a,A[A.length-1]),a=r}B+1>=2**e&&(12===e?a=void 0:e++),r=t(o)}return new Uint8Array(s)}var WI=Object.freeze({__proto__:null,default:class extends lI{decodeBlock(A){return zI(A).buffer}}});const _I=new Int32Array([0,1,8,16,9,2,3,10,17,24,32,25,18,11,4,5,12,19,26,33,40,48,41,34,27,20,13,6,7,14,21,28,35,42,49,56,57,50,43,36,29,22,15,23,30,37,44,51,58,59,52,45,38,31,39,46,53,60,61,54,47,55,62,63]),XI=4017,$I=799,Ag=3406,Ig=2276,gg=1567,Bg=3784,eg=5793,Cg=2896;function ig(A,I){let g=0;const B=[];let e=16;for(;e>0&&!A[e-1];)--e;B.push({children:[],index:0});let C,i=B[0];for(let t=0;t<e;t++){for(let e=0;e<A[t];e++){if(i=B.pop(),!i)throw new Error("buildHuffmanTable: codeLength mismatch");for(i.children[i.index]=I[g];i.index>0;)if(i=B.pop(),!i)throw new Error("buildHuffmanTable: codeLength mismatch");for(i.index++,B.push(i);B.length<=t;)B.push(C={children:[],index:0}),i.children[i.index]=C.children,i=C;g++}t+1<e&&(B.push(C={children:[],index:0}),i.children[i.index]=C.children,i=C)}return B[0].children}function tg(A,I,g,B,e,C,i,t,Q){const{mcusPerLine:E,progressive:s}=g;if(B.length>1&&(void 0===E||void 0===g.mcusPerColumn))throw new Error("Missing MCU dimensions");if(1===B.length&&(void 0===B[0].blocksPerLine||void 0===B[0].blocksPerColumn))throw new Error("Missing block dimensions");const o=I;let a=I,r=0,n=0;function h(){if(n>0)return n--,r>>n&1;if(r=A[a++],255===r){const I=A[a++];if(I)throw new Error(`unexpected marker: ${(r<<8|I).toString(16)}`)}return n=7,r>>>7}function l(A){if(!A)throw new Error("Huffman table not found");let I,g=A;for(;null!==(I=h());){const A=g[I];if("number"==typeof A)return A;if("object"!=typeof A)throw new Error("invalid huffman sequence");g=A}return null}function c(A){let I=A,g=0;for(;I>0;){const A=h();if(null===A)return;g=g<<1|A,--I}return g}function D(A){const I=c(A);if(void 0!==I)return I>=1<<A-1?I:I+(-1<<A)+1}let w=0;let y,d=0;function f(A,I,g,B,e){const C=g%E,i=(g/E|0)*A.v+B,t=C*A.h+e;if(!A.blocks)throw new Error("Missing blocks");I(A,A.blocks[i][t])}function S(A,I,g){const B=g/A.blocksPerLine|0,e=g%A.blocksPerLine;if(!A.blocks)throw new Error("Missing blocks");I(A,A.blocks[B][e])}const u=B.length;let G,N,F,k,R,L;L=s?0===C?0===t?function(A,I){const g=l(A.huffmanTableDC);if(null===g)throw new Error("Huffman error");const B=D(g);if(void 0===B)throw new Error("Unexpected end of data in DC coefficient decoding");const e=0===g?0:B<<Q;void 0===A.pred&&(A.pred=0),A.pred+=e,I[0]=A.pred}:function(A,I){const g=h();if(null===g)throw new Error("Unexpected end of data in DC coefficient decoding");I[0]|=g<<Q}:0===t?function(A,I){if(w>0)return void w--;let g=C;const B=i;for(;g<=B;){const B=l(A.huffmanTableAC);if(null===B)throw new Error("Unexpected end of data in AC coefficient decoding");const e=15&B,C=B>>4;if(0===e){if(C<15){const A=c(C);if(void 0===A)throw new Error("Unexpected end of data in AC coefficient decoding");w=A+(1<<C)-1;break}g+=16}else{g+=C;const A=_I[g],B=D(e);if(void 0===B)throw new Error("Unexpected end of data in AC coefficient decoding");I[A]=B*(1<<Q),g++}}}:function(A,I){let g=C;const B=i;let e=0;for(;g<=B;){const B=_I[g],C=I[B]<0?-1:1;switch(d){case 0:{const I=l(A.huffmanTableAC);if(null===I)throw new Error("Unexpected end of data in AC coefficient decoding");const g=15&I;if(e=I>>4,0===g)if(e<15){const A=c(e);if(void 0===A)throw new Error("Unexpected end of data in AC coefficient decoding");w=A+(1<<e),d=4}else e=16,d=1;else{if(1!==g)throw new Error("invalid ACn encoding");const A=D(g);if(void 0===A)throw new Error("Unexpected end of data in AC coefficient decoding");y=A,d=e?2:3}continue}case 1:case 2:if(I[B]){const A=h();if(null===A)throw new Error("Unexpected end of data in AC coefficient decoding");I[B]+=(A<<Q)*C}else e--,0===e&&(d=2===d?3:0);break;case 3:if(I[B]){const A=h();if(null===A)throw new Error("Unexpected end of data in AC coefficient decoding");I[B]+=(A<<Q)*C}else I[B]=y<<Q,d=0;break;case 4:if(I[B]){const A=h();if(null===A)throw new Error("Unexpected end of data in AC coefficient decoding");I[B]+=(A<<Q)*C}}g++}4===d&&(w--,0===w&&(d=0))}:function(A,I){const g=l(A.huffmanTableDC);if(null===g)throw new Error("Huffman error");const B=0===g?0:D(g);if(void 0===B)throw new Error("Unexpected end of stream");void 0===A.pred&&(A.pred=0),A.pred+=B,I[0]=A.pred;let e=1;for(;e<64;){const g=l(A.huffmanTableAC);if(null===g)throw new Error("Unexpected end of data in AC coefficient decoding");const B=15&g,C=g>>4;if(0===B){if(C<15)break;e+=16}else{e+=C;const A=_I[e],g=D(B);if(void 0===g)throw new Error("Unexpected end of stream");I[A]=g,e++}}};let U,p,Y=0;p=1===u?B[0].blocksPerLine*B[0].blocksPerColumn:E*g.mcusPerColumn;const M=e||p;for(;Y<p;){for(N=0;N<u;N++)B[N].pred=0;if(w=0,1===u)for(G=B[0],R=0;R<M;R++)S(G,L,Y),Y++;else for(R=0;R<M;R++){for(N=0;N<u;N++){G=B[N];const{h:A,v:I}=G;for(F=0;F<I;F++)for(k=0;k<A;k++)f(G,L,Y,F,k)}if(Y++,Y===p)break}if(n=0,U=A[a]<<8|A[a+1],U<65280)throw new Error("marker was not found");if(!(U>=65488&&U<=65495))break;a+=2}return a-o}function Qg(A){const I=[],{blocksPerLine:g,blocksPerColumn:B}=A;if(!g||!B||!A.blocks)throw new Error("Missing component data");const e=g<<3,C=new Int32Array(64),i=new Uint8Array(64);function t(I,g,B){const e=A.quantizationTable;if(!e)throw new Error("No quantization table found");let C,i,t,Q,E,s,o,a,r;const n=B;let h;for(h=0;h<64;h++)n[h]=I[h]*e[h];for(h=0;h<8;++h){const A=8*h;0!==n[1+A]||0!==n[2+A]||0!==n[3+A]||0!==n[4+A]||0!==n[5+A]||0!==n[6+A]||0!==n[7+A]?(C=eg*n[0+A]+128>>8,i=eg*n[4+A]+128>>8,t=n[2+A],Q=n[6+A],E=Cg*(n[1+A]-n[7+A])+128>>8,a=Cg*(n[1+A]+n[7+A])+128>>8,s=n[3+A]<<4,o=n[5+A]<<4,r=C-i+1>>1,C=C+i+1>>1,i=r,r=t*Bg+Q*gg+128>>8,t=t*gg-Q*Bg+128>>8,Q=r,r=E-o+1>>1,E=E+o+1>>1,o=r,r=a+s+1>>1,s=a-s+1>>1,a=r,r=C-Q+1>>1,C=C+Q+1>>1,Q=r,r=i-t+1>>1,i=i+t+1>>1,t=r,r=E*Ig+a*Ag+2048>>12,E=E*Ag-a*Ig+2048>>12,a=r,r=s*$I+o*XI+2048>>12,s=s*XI-o*$I+2048>>12,o=r,n[0+A]=C+a,n[7+A]=C-a,n[1+A]=i+o,n[6+A]=i-o,n[2+A]=t+s,n[5+A]=t-s,n[3+A]=Q+E,n[4+A]=Q-E):(r=eg*n[0+A]+512>>10,n[0+A]=r,n[1+A]=r,n[2+A]=r,n[3+A]=r,n[4+A]=r,n[5+A]=r,n[6+A]=r,n[7+A]=r)}for(h=0;h<8;++h){const A=h;0!==n[8+A]||0!==n[16+A]||0!==n[24+A]||0!==n[32+A]||0!==n[40+A]||0!==n[48+A]||0!==n[56+A]?(C=eg*n[0+A]+2048>>12,i=eg*n[32+A]+2048>>12,t=n[16+A],Q=n[48+A],E=Cg*(n[8+A]-n[56+A])+2048>>12,a=Cg*(n[8+A]+n[56+A])+2048>>12,s=n[24+A],o=n[40+A],r=C-i+1>>1,C=C+i+1>>1,i=r,r=t*Bg+Q*gg+2048>>12,t=t*gg-Q*Bg+2048>>12,Q=r,r=E-o+1>>1,E=E+o+1>>1,o=r,r=a+s+1>>1,s=a-s+1>>1,a=r,r=C-Q+1>>1,C=C+Q+1>>1,Q=r,r=i-t+1>>1,i=i+t+1>>1,t=r,r=E*Ig+a*Ag+2048>>12,E=E*Ag-a*Ig+2048>>12,a=r,r=s*$I+o*XI+2048>>12,s=s*XI-o*$I+2048>>12,o=r,n[0+A]=C+a,n[56+A]=C-a,n[8+A]=i+o,n[48+A]=i-o,n[16+A]=t+s,n[40+A]=t-s,n[24+A]=Q+E,n[32+A]=Q-E):(r=eg*B[h+0]+8192>>14,n[0+A]=r,n[8+A]=r,n[16+A]=r,n[24+A]=r,n[32+A]=r,n[40+A]=r,n[48+A]=r,n[56+A]=r)}for(h=0;h<64;++h){const A=128+(n[h]+8>>4);g[h]=A<0?0:A>255?255:A}}for(let Q=0;Q<B;Q++){const B=Q<<3;for(let A=0;A<8;A++)I.push(new Uint8Array(e));for(let e=0;e<g;e++){t(A.blocks[Q][e],i,C);let g=0;const E=e<<3;for(let A=0;A<8;A++){const e=I[B+A];for(let A=0;A<8;A++)e[E+A]=i[g++]}}}return I}class Eg{constructor(){this.jfif=null,this.adobe=null,this.resetInterval=0,this.quantizationTables=[],this.huffmanTablesAC=[],this.huffmanTablesDC=[],this.frames=[]}resetFrames(){this.frames=[]}parse(A){let I=0;function g(){const g=A[I]<<8|A[I+1];return I+=2,g}function B(){const B=g(),e=A.subarray(I,I+B-2);return I+=e.length,e}function e(A){let I,g,B=0,e=0;for(g in A.components)A.components.hasOwnProperty(g)&&(I=A.components[g],B<I.h&&(B=I.h),e<I.v&&(e=I.v));const C=Math.ceil(A.samplesPerLine/8/B),i=Math.ceil(A.scanLines/8/e);for(g in A.components)if(A.components.hasOwnProperty(g)){I=A.components[g];const t=Math.ceil(Math.ceil(A.samplesPerLine/8)*I.h/B),Q=Math.ceil(Math.ceil(A.scanLines/8)*I.v/e),E=C*I.h,s=i*I.v,o=[];for(let A=0;A<s;A++){const A=[];for(let I=0;I<E;I++)A.push(new Int32Array(64));o.push(A)}I.blocksPerLine=t,I.blocksPerColumn=Q,I.blocks=o}A.maxH=B,A.maxV=e,A.mcusPerLine=C,A.mcusPerColumn=i}let C=g();if(65496!==C)throw new Error("SOI not found");for(C=g();65497!==C;){switch(C){case 65280:break;case 65504:case 65505:case 65506:case 65507:case 65508:case 65509:case 65510:case 65511:case 65512:case 65513:case 65514:case 65515:case 65516:case 65517:case 65518:case 65519:case 65534:{const A=B();65504===C&&74===A[0]&&70===A[1]&&73===A[2]&&70===A[3]&&0===A[4]&&(this.jfif={version:{major:A[5],minor:A[6]},densityUnits:A[7],xDensity:A[8]<<8|A[9],yDensity:A[10]<<8|A[11],thumbWidth:A[12],thumbHeight:A[13],thumbData:A.subarray(14,14+3*A[12]*A[13])}),65518===C&&65===A[0]&&100===A[1]&&111===A[2]&&98===A[3]&&101===A[4]&&0===A[5]&&(this.adobe={version:A[6],flags0:A[7]<<8|A[8],flags1:A[9]<<8|A[10],transformCode:A[11]});break}case 65499:{const B=g()+I-2;for(;I<B;){const B=A[I++],e=new Int32Array(64);if(B>>4){if(B>>4!=1)throw new Error("DQT: invalid table spec");for(let A=0;A<64;A++){e[_I[A]]=g()}}else for(let g=0;g<64;g++){e[_I[g]]=A[I++]}this.quantizationTables[15&B]=e}break}case 65472:case 65473:case 65474:{g();const B={extended:65473===C,progressive:65474===C,precision:A[I++],scanLines:g(),samplesPerLine:g(),components:{},componentsOrder:[],maxH:0,maxV:0,mcusPerLine:0,mcusPerColumn:0},i=A[I++];let t;for(let g=0;g<i;g++){t=A[I];const g=A[I+1]>>4,e=15&A[I+1],C=A[I+2];B.componentsOrder.push(t),B.components[t]={h:g,v:e,quantizationIdx:C,blocksPerLine:0,blocksPerColumn:0,blocks:[]},I+=3}e(B),this.frames.push(B);break}case 65476:{const B=g();for(let g=2;g<B;){const B=A[I++],e=new Uint8Array(16);let C=0;for(let g=0;g<16;g++,I++)e[g]=A[I],C+=e[g];const i=new Uint8Array(C);for(let g=0;g<C;g++,I++)i[g]=A[I];g+=17+C,B>>4?this.huffmanTablesAC[15&B]=ig(e,i):this.huffmanTablesDC[15&B]=ig(e,i)}break}case 65501:g(),this.resetInterval=g();break;case 65498:{g();const B=A[I++],e=[],C=this.frames[0];for(let g=0;g<B;g++){const g=C.components[A[I++]],B=A[I++];g.huffmanTableDC=this.huffmanTablesDC[B>>4],g.huffmanTableAC=this.huffmanTablesAC[15&B],e.push(g)}const i=A[I++],t=A[I++],Q=A[I++],E=tg(A,I,C,e,this.resetInterval,i,t,Q>>4,15&Q);I+=E;break}case 65535:255!==A[I]&&I--;break;default:if(255===A[I-3]&&A[I-2]>=192&&A[I-2]<=254){I-=3;break}throw new Error(`unknown JPEG marker ${C.toString(16)}`)}C=g()}}getResult(){const{frames:A}=this;if(0===this.frames.length)throw new Error("no frames were decoded");this.frames.length>1&&console.warn("more than one frame is not supported");for(let A=0;A<this.frames.length;A++){const I=this.frames[A].components;for(const A of Object.keys(I)){const g=I[A].quantizationIdx;"number"==typeof g&&(I[A].quantizationTable=this.quantizationTables[g],delete I[A].quantizationIdx)}}const I=A[0];if(!I.maxH||!I.maxV)throw new Error("Invalid frame dimensions");const{components:g,componentsOrder:B}=I,e=[],C=I.samplesPerLine,i=I.scanLines;for(let A=0;A<B.length;A++){const C=g[B[A]];e.push({lines:Qg(C),scaleX:C.h/I.maxH,scaleY:C.v/I.maxV})}const t=new Uint8Array(C*i*e.length);let Q=0;for(let A=0;A<i;++A)for(let I=0;I<C;++I)for(let g=0;g<e.length;++g){const B=e[g];t[Q]=B.lines[0|A*B.scaleY][0|I*B.scaleX],++Q}return t}}var sg=Object.freeze({__proto__:null,default:class extends lI{constructor(A){super(A),this.reader=new Eg,A.JPEGTables&&this.reader.parse(A.JPEGTables)}decodeBlock(A){return this.reader.resetFrames(),this.reader.parse(new Uint8Array(A)),this.reader.getResult().buffer}}});function og(A){let I=A.length;for(;--I>=0;)A[I]=0}og(new Array(576));og(new Array(60));og(new Array(512));og(new Array(256));og(new Array(29));og(new Array(30));var ag=(A,I,g,B)=>{let e=65535&A,C=A>>>16&65535,i=0;for(;0!==g;){i=g>2e3?2e3:g,g-=i;do{e=e+I[B++]|0,C=C+e|0}while(--i);e%=65521,C%=65521}return e|C<<16};const rg=new Uint32Array((()=>{let A,I=[];for(var g=0;g<256;g++){A=g;for(var B=0;B<8;B++)A=1&A?3988292384^A>>>1:A>>>1;I[g]=A}return I})());var ng=(A,I,g,B)=>{const e=rg,C=B+g;A^=-1;for(let g=B;g<C;g++)A=A>>>8^e[255&(A^I[g])];return-1^A},hg={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"},lg={Z_NO_FLUSH:0,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_DEFLATED:8};const cg=(A,I)=>Object.prototype.hasOwnProperty.call(A,I);var Dg=function(A){const I=Array.prototype.slice.call(arguments,1);for(;I.length;){const g=I.shift();if(g){if("object"!=typeof g)throw new TypeError(g+"must be non-object");for(const I in g)cg(g,I)&&(A[I]=g[I])}}return A},wg=A=>{let I=0;for(let g=0,B=A.length;g<B;g++)I+=A[g].length;const g=new Uint8Array(I);for(let I=0,B=0,e=A.length;I<e;I++){let e=A[I];g.set(e,B),B+=e.length}return g};let yg=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(A){yg=!1}const dg=new Uint8Array(256);for(let A=0;A<256;A++)dg[A]=A>=252?6:A>=248?5:A>=240?4:A>=224?3:A>=192?2:1;dg[254]=dg[254]=1;var fg=A=>{if("function"==typeof TextEncoder&&TextEncoder.prototype.encode)return(new TextEncoder).encode(A);let I,g,B,e,C,i=A.length,t=0;for(e=0;e<i;e++)g=A.charCodeAt(e),55296==(64512&g)&&e+1<i&&(B=A.charCodeAt(e+1),56320==(64512&B)&&(g=65536+(g-55296<<10)+(B-56320),e++)),t+=g<128?1:g<2048?2:g<65536?3:4;for(I=new Uint8Array(t),C=0,e=0;C<t;e++)g=A.charCodeAt(e),55296==(64512&g)&&e+1<i&&(B=A.charCodeAt(e+1),56320==(64512&B)&&(g=65536+(g-55296<<10)+(B-56320),e++)),g<128?I[C++]=g:g<2048?(I[C++]=192|g>>>6,I[C++]=128|63&g):g<65536?(I[C++]=224|g>>>12,I[C++]=128|g>>>6&63,I[C++]=128|63&g):(I[C++]=240|g>>>18,I[C++]=128|g>>>12&63,I[C++]=128|g>>>6&63,I[C++]=128|63&g);return I},Sg=(A,I)=>{const g=I||A.length;if("function"==typeof TextDecoder&&TextDecoder.prototype.decode)return(new TextDecoder).decode(A.subarray(0,I));let B,e;const C=new Array(2*g);for(e=0,B=0;B<g;){let I=A[B++];if(I<128){C[e++]=I;continue}let i=dg[I];if(i>4)C[e++]=65533,B+=i-1;else{for(I&=2===i?31:3===i?15:7;i>1&&B<g;)I=I<<6|63&A[B++],i--;i>1?C[e++]=65533:I<65536?C[e++]=I:(I-=65536,C[e++]=55296|I>>10&1023,C[e++]=56320|1023&I)}}return((A,I)=>{if(I<65534&&A.subarray&&yg)return String.fromCharCode.apply(null,A.length===I?A:A.subarray(0,I));let g="";for(let B=0;B<I;B++)g+=String.fromCharCode(A[B]);return g})(C,e)},ug=(A,I)=>{(I=I||A.length)>A.length&&(I=A.length);let g=I-1;for(;g>=0&&128==(192&A[g]);)g--;return g<0||0===g?I:g+dg[A[g]]>I?g:I};var Gg=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0};const Ng=16209;var Fg=function(A,I){let g,B,e,C,i,t,Q,E,s,o,a,r,n,h,l,c,D,w,y,d,f,S,u,G;const N=A.state;g=A.next_in,u=A.input,B=g+(A.avail_in-5),e=A.next_out,G=A.output,C=e-(I-A.avail_out),i=e+(A.avail_out-257),t=N.dmax,Q=N.wsize,E=N.whave,s=N.wnext,o=N.window,a=N.hold,r=N.bits,n=N.lencode,h=N.distcode,l=(1<<N.lenbits)-1,c=(1<<N.distbits)-1;A:do{r<15&&(a+=u[g++]<<r,r+=8,a+=u[g++]<<r,r+=8),D=n[a&l];I:for(;;){if(w=D>>>24,a>>>=w,r-=w,w=D>>>16&255,0===w)G[e++]=65535&D;else{if(!(16&w)){if(64&w){if(32&w){N.mode=16191;break A}A.msg="invalid literal/length code",N.mode=Ng;break A}D=n[(65535&D)+(a&(1<<w)-1)];continue I}for(y=65535&D,w&=15,w&&(r<w&&(a+=u[g++]<<r,r+=8),y+=a&(1<<w)-1,a>>>=w,r-=w),r<15&&(a+=u[g++]<<r,r+=8,a+=u[g++]<<r,r+=8),D=h[a&c];;){if(w=D>>>24,a>>>=w,r-=w,w=D>>>16&255,16&w){if(d=65535&D,w&=15,r<w&&(a+=u[g++]<<r,r+=8,r<w&&(a+=u[g++]<<r,r+=8)),d+=a&(1<<w)-1,d>t){A.msg="invalid distance too far back",N.mode=Ng;break A}if(a>>>=w,r-=w,w=e-C,d>w){if(w=d-w,w>E&&N.sane){A.msg="invalid distance too far back",N.mode=Ng;break A}if(f=0,S=o,0===s){if(f+=Q-w,w<y){y-=w;do{G[e++]=o[f++]}while(--w);f=e-d,S=G}}else if(s<w){if(f+=Q+s-w,w-=s,w<y){y-=w;do{G[e++]=o[f++]}while(--w);if(f=0,s<y){w=s,y-=w;do{G[e++]=o[f++]}while(--w);f=e-d,S=G}}}else if(f+=s-w,w<y){y-=w;do{G[e++]=o[f++]}while(--w);f=e-d,S=G}for(;y>2;)G[e++]=S[f++],G[e++]=S[f++],G[e++]=S[f++],y-=3;y&&(G[e++]=S[f++],y>1&&(G[e++]=S[f++]))}else{f=e-d;do{G[e++]=G[f++],G[e++]=G[f++],G[e++]=G[f++],y-=3}while(y>2);y&&(G[e++]=G[f++],y>1&&(G[e++]=G[f++]))}break}if(64&w){A.msg="invalid distance code",N.mode=Ng;break A}D=h[(65535&D)+(a&(1<<w)-1)]}}break}}while(g<B&&e<i);y=r>>3,g-=y,r-=y<<3,a&=(1<<r)-1,A.next_in=g,A.next_out=e,A.avail_in=g<B?B-g+5:5-(g-B),A.avail_out=e<i?i-e+257:257-(e-i),N.hold=a,N.bits=r};const kg=15,Rg=new Uint16Array([3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0]),Lg=new Uint8Array([16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78]),Ug=new Uint16Array([1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0]),pg=new Uint8Array([16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64]);var Yg=(A,I,g,B,e,C,i,t)=>{const Q=t.bits;let E,s,o,a,r,n,h=0,l=0,c=0,D=0,w=0,y=0,d=0,f=0,S=0,u=0,G=null;const N=new Uint16Array(16),F=new Uint16Array(16);let k,R,L,U=null;for(h=0;h<=kg;h++)N[h]=0;for(l=0;l<B;l++)N[I[g+l]]++;for(w=Q,D=kg;D>=1&&0===N[D];D--);if(w>D&&(w=D),0===D)return e[C++]=20971520,e[C++]=20971520,t.bits=1,0;for(c=1;c<D&&0===N[c];c++);for(w<c&&(w=c),f=1,h=1;h<=kg;h++)if(f<<=1,f-=N[h],f<0)return-1;if(f>0&&(0===A||1!==D))return-1;for(F[1]=0,h=1;h<kg;h++)F[h+1]=F[h]+N[h];for(l=0;l<B;l++)0!==I[g+l]&&(i[F[I[g+l]]++]=l);if(0===A?(G=U=i,n=20):1===A?(G=Rg,U=Lg,n=257):(G=Ug,U=pg,n=0),u=0,l=0,h=c,r=C,y=w,d=0,o=-1,S=1<<w,a=S-1,1===A&&S>852||2===A&&S>592)return 1;for(;;){k=h-d,i[l]+1<n?(R=0,L=i[l]):i[l]>=n?(R=U[i[l]-n],L=G[i[l]-n]):(R=96,L=0),E=1<<h-d,s=1<<y,c=s;do{s-=E,e[r+(u>>d)+s]=k<<24|R<<16|L}while(0!==s);for(E=1<<h-1;u&E;)E>>=1;if(0!==E?(u&=E-1,u+=E):u=0,l++,0===--N[h]){if(h===D)break;h=I[g+i[l]]}if(h>w&&(u&a)!==o){for(0===d&&(d=w),r+=c,y=h-d,f=1<<y;y+d<D&&(f-=N[y+d],!(f<=0));)y++,f<<=1;if(S+=1<<y,1===A&&S>852||2===A&&S>592)return 1;o=u&a,e[o]=w<<24|y<<16|r-C}}return 0!==u&&(e[r+u]=h-d<<24|64<<16),t.bits=w,0};const{Z_FINISH:Mg,Z_BLOCK:mg,Z_TREES:Kg,Z_OK:Hg,Z_STREAM_END:Jg,Z_NEED_DICT:bg,Z_STREAM_ERROR:qg,Z_DATA_ERROR:xg,Z_MEM_ERROR:Tg,Z_BUF_ERROR:Og,Z_DEFLATED:Pg}=lg,vg=16180,Vg=16190,Zg=16191,jg=16192,zg=16194,Wg=16199,_g=16200,Xg=16206,$g=16209,AB=A=>(A>>>24&255)+(A>>>8&65280)+((65280&A)<<8)+((255&A)<<24);function IB(){this.strm=null,this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}const gB=A=>{if(!A)return 1;const I=A.state;return!I||I.strm!==A||I.mode<vg||I.mode>16211?1:0},BB=A=>{if(gB(A))return qg;const I=A.state;return A.total_in=A.total_out=I.total=0,A.msg="",I.wrap&&(A.adler=1&I.wrap),I.mode=vg,I.last=0,I.havedict=0,I.flags=-1,I.dmax=32768,I.head=null,I.hold=0,I.bits=0,I.lencode=I.lendyn=new Int32Array(852),I.distcode=I.distdyn=new Int32Array(592),I.sane=1,I.back=-1,Hg},eB=A=>{if(gB(A))return qg;const I=A.state;return I.wsize=0,I.whave=0,I.wnext=0,BB(A)},CB=(A,I)=>{let g;if(gB(A))return qg;const B=A.state;return I<0?(g=0,I=-I):(g=5+(I>>4),I<48&&(I&=15)),I&&(I<8||I>15)?qg:(null!==B.window&&B.wbits!==I&&(B.window=null),B.wrap=g,B.wbits=I,eB(A))},iB=(A,I)=>{if(!A)return qg;const g=new IB;A.state=g,g.strm=A,g.window=null,g.mode=vg;const B=CB(A,I);return B!==Hg&&(A.state=null),B};let tB,QB,EB=!0;const sB=A=>{if(EB){tB=new Int32Array(512),QB=new Int32Array(32);let I=0;for(;I<144;)A.lens[I++]=8;for(;I<256;)A.lens[I++]=9;for(;I<280;)A.lens[I++]=7;for(;I<288;)A.lens[I++]=8;for(Yg(1,A.lens,0,288,tB,0,A.work,{bits:9}),I=0;I<32;)A.lens[I++]=5;Yg(2,A.lens,0,32,QB,0,A.work,{bits:5}),EB=!1}A.lencode=tB,A.lenbits=9,A.distcode=QB,A.distbits=5},oB=(A,I,g,B)=>{let e;const C=A.state;return null===C.window&&(C.wsize=1<<C.wbits,C.wnext=0,C.whave=0,C.window=new Uint8Array(C.wsize)),B>=C.wsize?(C.window.set(I.subarray(g-C.wsize,g),0),C.wnext=0,C.whave=C.wsize):(e=C.wsize-C.wnext,e>B&&(e=B),C.window.set(I.subarray(g-B,g-B+e),C.wnext),(B-=e)?(C.window.set(I.subarray(g-B,g),0),C.wnext=B,C.whave=C.wsize):(C.wnext+=e,C.wnext===C.wsize&&(C.wnext=0),C.whave<C.wsize&&(C.whave+=e))),0};var aB={inflateReset:eB,inflateReset2:CB,inflateResetKeep:BB,inflateInit:A=>iB(A,15),inflateInit2:iB,inflate:(A,I)=>{let g,B,e,C,i,t,Q,E,s,o,a,r,n,h,l,c,D,w,y,d,f,S,u=0;const G=new Uint8Array(4);let N,F;const k=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(gB(A)||!A.output||!A.input&&0!==A.avail_in)return qg;g=A.state,g.mode===Zg&&(g.mode=jg),i=A.next_out,e=A.output,Q=A.avail_out,C=A.next_in,B=A.input,t=A.avail_in,E=g.hold,s=g.bits,o=t,a=Q,S=Hg;A:for(;;)switch(g.mode){case vg:if(0===g.wrap){g.mode=jg;break}for(;s<16;){if(0===t)break A;t--,E+=B[C++]<<s,s+=8}if(2&g.wrap&&35615===E){0===g.wbits&&(g.wbits=15),g.check=0,G[0]=255&E,G[1]=E>>>8&255,g.check=ng(g.check,G,2,0),E=0,s=0,g.mode=16181;break}if(g.head&&(g.head.done=!1),!(1&g.wrap)||(((255&E)<<8)+(E>>8))%31){A.msg="incorrect header check",g.mode=$g;break}if((15&E)!==Pg){A.msg="unknown compression method",g.mode=$g;break}if(E>>>=4,s-=4,f=8+(15&E),0===g.wbits&&(g.wbits=f),f>15||f>g.wbits){A.msg="invalid window size",g.mode=$g;break}g.dmax=1<<g.wbits,g.flags=0,A.adler=g.check=1,g.mode=512&E?16189:Zg,E=0,s=0;break;case 16181:for(;s<16;){if(0===t)break A;t--,E+=B[C++]<<s,s+=8}if(g.flags=E,(255&g.flags)!==Pg){A.msg="unknown compression method",g.mode=$g;break}if(57344&g.flags){A.msg="unknown header flags set",g.mode=$g;break}g.head&&(g.head.text=E>>8&1),512&g.flags&&4&g.wrap&&(G[0]=255&E,G[1]=E>>>8&255,g.check=ng(g.check,G,2,0)),E=0,s=0,g.mode=16182;case 16182:for(;s<32;){if(0===t)break A;t--,E+=B[C++]<<s,s+=8}g.head&&(g.head.time=E),512&g.flags&&4&g.wrap&&(G[0]=255&E,G[1]=E>>>8&255,G[2]=E>>>16&255,G[3]=E>>>24&255,g.check=ng(g.check,G,4,0)),E=0,s=0,g.mode=16183;case 16183:for(;s<16;){if(0===t)break A;t--,E+=B[C++]<<s,s+=8}g.head&&(g.head.xflags=255&E,g.head.os=E>>8),512&g.flags&&4&g.wrap&&(G[0]=255&E,G[1]=E>>>8&255,g.check=ng(g.check,G,2,0)),E=0,s=0,g.mode=16184;case 16184:if(1024&g.flags){for(;s<16;){if(0===t)break A;t--,E+=B[C++]<<s,s+=8}g.length=E,g.head&&(g.head.extra_len=E),512&g.flags&&4&g.wrap&&(G[0]=255&E,G[1]=E>>>8&255,g.check=ng(g.check,G,2,0)),E=0,s=0}else g.head&&(g.head.extra=null);g.mode=16185;case 16185:if(1024&g.flags&&(r=g.length,r>t&&(r=t),r&&(g.head&&(f=g.head.extra_len-g.length,g.head.extra||(g.head.extra=new Uint8Array(g.head.extra_len)),g.head.extra.set(B.subarray(C,C+r),f)),512&g.flags&&4&g.wrap&&(g.check=ng(g.check,B,r,C)),t-=r,C+=r,g.length-=r),g.length))break A;g.length=0,g.mode=16186;case 16186:if(2048&g.flags){if(0===t)break A;r=0;do{f=B[C+r++],g.head&&f&&g.length<65536&&(g.head.name+=String.fromCharCode(f))}while(f&&r<t);if(512&g.flags&&4&g.wrap&&(g.check=ng(g.check,B,r,C)),t-=r,C+=r,f)break A}else g.head&&(g.head.name=null);g.length=0,g.mode=16187;case 16187:if(4096&g.flags){if(0===t)break A;r=0;do{f=B[C+r++],g.head&&f&&g.length<65536&&(g.head.comment+=String.fromCharCode(f))}while(f&&r<t);if(512&g.flags&&4&g.wrap&&(g.check=ng(g.check,B,r,C)),t-=r,C+=r,f)break A}else g.head&&(g.head.comment=null);g.mode=16188;case 16188:if(512&g.flags){for(;s<16;){if(0===t)break A;t--,E+=B[C++]<<s,s+=8}if(4&g.wrap&&E!==(65535&g.check)){A.msg="header crc mismatch",g.mode=$g;break}E=0,s=0}g.head&&(g.head.hcrc=g.flags>>9&1,g.head.done=!0),A.adler=g.check=0,g.mode=Zg;break;case 16189:for(;s<32;){if(0===t)break A;t--,E+=B[C++]<<s,s+=8}A.adler=g.check=AB(E),E=0,s=0,g.mode=Vg;case Vg:if(0===g.havedict)return A.next_out=i,A.avail_out=Q,A.next_in=C,A.avail_in=t,g.hold=E,g.bits=s,bg;A.adler=g.check=1,g.mode=Zg;case Zg:if(I===mg||I===Kg)break A;case jg:if(g.last){E>>>=7&s,s-=7&s,g.mode=Xg;break}for(;s<3;){if(0===t)break A;t--,E+=B[C++]<<s,s+=8}switch(g.last=1&E,E>>>=1,s-=1,3&E){case 0:g.mode=16193;break;case 1:if(sB(g),g.mode=Wg,I===Kg){E>>>=2,s-=2;break A}break;case 2:g.mode=16196;break;case 3:A.msg="invalid block type",g.mode=$g}E>>>=2,s-=2;break;case 16193:for(E>>>=7&s,s-=7&s;s<32;){if(0===t)break A;t--,E+=B[C++]<<s,s+=8}if((65535&E)!=(E>>>16^65535)){A.msg="invalid stored block lengths",g.mode=$g;break}if(g.length=65535&E,E=0,s=0,g.mode=zg,I===Kg)break A;case zg:g.mode=16195;case 16195:if(r=g.length,r){if(r>t&&(r=t),r>Q&&(r=Q),0===r)break A;e.set(B.subarray(C,C+r),i),t-=r,C+=r,Q-=r,i+=r,g.length-=r;break}g.mode=Zg;break;case 16196:for(;s<14;){if(0===t)break A;t--,E+=B[C++]<<s,s+=8}if(g.nlen=257+(31&E),E>>>=5,s-=5,g.ndist=1+(31&E),E>>>=5,s-=5,g.ncode=4+(15&E),E>>>=4,s-=4,g.nlen>286||g.ndist>30){A.msg="too many length or distance symbols",g.mode=$g;break}g.have=0,g.mode=16197;case 16197:for(;g.have<g.ncode;){for(;s<3;){if(0===t)break A;t--,E+=B[C++]<<s,s+=8}g.lens[k[g.have++]]=7&E,E>>>=3,s-=3}for(;g.have<19;)g.lens[k[g.have++]]=0;if(g.lencode=g.lendyn,g.lenbits=7,N={bits:g.lenbits},S=Yg(0,g.lens,0,19,g.lencode,0,g.work,N),g.lenbits=N.bits,S){A.msg="invalid code lengths set",g.mode=$g;break}g.have=0,g.mode=16198;case 16198:for(;g.have<g.nlen+g.ndist;){for(;u=g.lencode[E&(1<<g.lenbits)-1],l=u>>>24,c=u>>>16&255,D=65535&u,!(l<=s);){if(0===t)break A;t--,E+=B[C++]<<s,s+=8}if(D<16)E>>>=l,s-=l,g.lens[g.have++]=D;else{if(16===D){for(F=l+2;s<F;){if(0===t)break A;t--,E+=B[C++]<<s,s+=8}if(E>>>=l,s-=l,0===g.have){A.msg="invalid bit length repeat",g.mode=$g;break}f=g.lens[g.have-1],r=3+(3&E),E>>>=2,s-=2}else if(17===D){for(F=l+3;s<F;){if(0===t)break A;t--,E+=B[C++]<<s,s+=8}E>>>=l,s-=l,f=0,r=3+(7&E),E>>>=3,s-=3}else{for(F=l+7;s<F;){if(0===t)break A;t--,E+=B[C++]<<s,s+=8}E>>>=l,s-=l,f=0,r=11+(127&E),E>>>=7,s-=7}if(g.have+r>g.nlen+g.ndist){A.msg="invalid bit length repeat",g.mode=$g;break}for(;r--;)g.lens[g.have++]=f}}if(g.mode===$g)break;if(0===g.lens[256]){A.msg="invalid code -- missing end-of-block",g.mode=$g;break}if(g.lenbits=9,N={bits:g.lenbits},S=Yg(1,g.lens,0,g.nlen,g.lencode,0,g.work,N),g.lenbits=N.bits,S){A.msg="invalid literal/lengths set",g.mode=$g;break}if(g.distbits=6,g.distcode=g.distdyn,N={bits:g.distbits},S=Yg(2,g.lens,g.nlen,g.ndist,g.distcode,0,g.work,N),g.distbits=N.bits,S){A.msg="invalid distances set",g.mode=$g;break}if(g.mode=Wg,I===Kg)break A;case Wg:g.mode=_g;case _g:if(t>=6&&Q>=258){A.next_out=i,A.avail_out=Q,A.next_in=C,A.avail_in=t,g.hold=E,g.bits=s,Fg(A,a),i=A.next_out,e=A.output,Q=A.avail_out,C=A.next_in,B=A.input,t=A.avail_in,E=g.hold,s=g.bits,g.mode===Zg&&(g.back=-1);break}for(g.back=0;u=g.lencode[E&(1<<g.lenbits)-1],l=u>>>24,c=u>>>16&255,D=65535&u,!(l<=s);){if(0===t)break A;t--,E+=B[C++]<<s,s+=8}if(c&&!(240&c)){for(w=l,y=c,d=D;u=g.lencode[d+((E&(1<<w+y)-1)>>w)],l=u>>>24,c=u>>>16&255,D=65535&u,!(w+l<=s);){if(0===t)break A;t--,E+=B[C++]<<s,s+=8}E>>>=w,s-=w,g.back+=w}if(E>>>=l,s-=l,g.back+=l,g.length=D,0===c){g.mode=16205;break}if(32&c){g.back=-1,g.mode=Zg;break}if(64&c){A.msg="invalid literal/length code",g.mode=$g;break}g.extra=15&c,g.mode=16201;case 16201:if(g.extra){for(F=g.extra;s<F;){if(0===t)break A;t--,E+=B[C++]<<s,s+=8}g.length+=E&(1<<g.extra)-1,E>>>=g.extra,s-=g.extra,g.back+=g.extra}g.was=g.length,g.mode=16202;case 16202:for(;u=g.distcode[E&(1<<g.distbits)-1],l=u>>>24,c=u>>>16&255,D=65535&u,!(l<=s);){if(0===t)break A;t--,E+=B[C++]<<s,s+=8}if(!(240&c)){for(w=l,y=c,d=D;u=g.distcode[d+((E&(1<<w+y)-1)>>w)],l=u>>>24,c=u>>>16&255,D=65535&u,!(w+l<=s);){if(0===t)break A;t--,E+=B[C++]<<s,s+=8}E>>>=w,s-=w,g.back+=w}if(E>>>=l,s-=l,g.back+=l,64&c){A.msg="invalid distance code",g.mode=$g;break}g.offset=D,g.extra=15&c,g.mode=16203;case 16203:if(g.extra){for(F=g.extra;s<F;){if(0===t)break A;t--,E+=B[C++]<<s,s+=8}g.offset+=E&(1<<g.extra)-1,E>>>=g.extra,s-=g.extra,g.back+=g.extra}if(g.offset>g.dmax){A.msg="invalid distance too far back",g.mode=$g;break}g.mode=16204;case 16204:if(0===Q)break A;if(r=a-Q,g.offset>r){if(r=g.offset-r,r>g.whave&&g.sane){A.msg="invalid distance too far back",g.mode=$g;break}r>g.wnext?(r-=g.wnext,n=g.wsize-r):n=g.wnext-r,r>g.length&&(r=g.length),h=g.window}else h=e,n=i-g.offset,r=g.length;r>Q&&(r=Q),Q-=r,g.length-=r;do{e[i++]=h[n++]}while(--r);0===g.length&&(g.mode=_g);break;case 16205:if(0===Q)break A;e[i++]=g.length,Q--,g.mode=_g;break;case Xg:if(g.wrap){for(;s<32;){if(0===t)break A;t--,E|=B[C++]<<s,s+=8}if(a-=Q,A.total_out+=a,g.total+=a,4&g.wrap&&a&&(A.adler=g.check=g.flags?ng(g.check,e,a,i-a):ag(g.check,e,a,i-a)),a=Q,4&g.wrap&&(g.flags?E:AB(E))!==g.check){A.msg="incorrect data check",g.mode=$g;break}E=0,s=0}g.mode=16207;case 16207:if(g.wrap&&g.flags){for(;s<32;){if(0===t)break A;t--,E+=B[C++]<<s,s+=8}if(4&g.wrap&&E!==(4294967295&g.total)){A.msg="incorrect length check",g.mode=$g;break}E=0,s=0}g.mode=16208;case 16208:S=Jg;break A;case $g:S=xg;break A;case 16210:return Tg;default:return qg}return A.next_out=i,A.avail_out=Q,A.next_in=C,A.avail_in=t,g.hold=E,g.bits=s,(g.wsize||a!==A.avail_out&&g.mode<$g&&(g.mode<Xg||I!==Mg))&&oB(A,A.output,A.next_out,a-A.avail_out),o-=A.avail_in,a-=A.avail_out,A.total_in+=o,A.total_out+=a,g.total+=a,4&g.wrap&&a&&(A.adler=g.check=g.flags?ng(g.check,e,a,A.next_out-a):ag(g.check,e,a,A.next_out-a)),A.data_type=g.bits+(g.last?64:0)+(g.mode===Zg?128:0)+(g.mode===Wg||g.mode===zg?256:0),(0===o&&0===a||I===Mg)&&S===Hg&&(S=Og),S},inflateEnd:A=>{if(gB(A))return qg;let I=A.state;return I.window&&(I.window=null),A.state=null,Hg},inflateGetHeader:(A,I)=>{if(gB(A))return qg;const g=A.state;return 2&g.wrap?(g.head=I,I.done=!1,Hg):qg},inflateSetDictionary:(A,I)=>{const g=I.length;let B,e,C;return gB(A)?qg:(B=A.state,0!==B.wrap&&B.mode!==Vg?qg:B.mode===Vg&&(e=1,e=ag(e,I,g,0),e!==B.check)?xg:(C=oB(A,I,g,g),C?(B.mode=16210,Tg):(B.havedict=1,Hg)))},inflateInfo:"pako inflate (from Nodeca project)"};var rB=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1};const nB=Object.prototype.toString,{Z_NO_FLUSH:hB,Z_FINISH:lB,Z_OK:cB,Z_STREAM_END:DB,Z_NEED_DICT:wB,Z_STREAM_ERROR:yB,Z_DATA_ERROR:dB,Z_MEM_ERROR:fB}=lg;function SB(A){this.options=Dg({chunkSize:65536,windowBits:15,to:""},A||{});const I=this.options;I.raw&&I.windowBits>=0&&I.windowBits<16&&(I.windowBits=-I.windowBits,0===I.windowBits&&(I.windowBits=-15)),!(I.windowBits>=0&&I.windowBits<16)||A&&A.windowBits||(I.windowBits+=32),I.windowBits>15&&I.windowBits<48&&(15&I.windowBits||(I.windowBits|=15)),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new Gg,this.strm.avail_out=0;let g=aB.inflateInit2(this.strm,I.windowBits);if(g!==cB)throw new Error(hg[g]);if(this.header=new rB,aB.inflateGetHeader(this.strm,this.header),I.dictionary&&("string"==typeof I.dictionary?I.dictionary=fg(I.dictionary):"[object ArrayBuffer]"===nB.call(I.dictionary)&&(I.dictionary=new Uint8Array(I.dictionary)),I.raw&&(g=aB.inflateSetDictionary(this.strm,I.dictionary),g!==cB)))throw new Error(hg[g])}SB.prototype.push=function(A,I){const g=this.strm,B=this.options.chunkSize,e=this.options.dictionary;let C,i,t;if(this.ended)return!1;for(i=I===~~I?I:!0===I?lB:hB,"[object ArrayBuffer]"===nB.call(A)?g.input=new Uint8Array(A):g.input=A,g.next_in=0,g.avail_in=g.input.length;;){for(0===g.avail_out&&(g.output=new Uint8Array(B),g.next_out=0,g.avail_out=B),C=aB.inflate(g,i),C===wB&&e&&(C=aB.inflateSetDictionary(g,e),C===cB?C=aB.inflate(g,i):C===dB&&(C=wB));g.avail_in>0&&C===DB&&g.state.wrap>0&&0!==A[g.next_in];)aB.inflateReset(g),C=aB.inflate(g,i);switch(C){case yB:case dB:case wB:case fB:return this.onEnd(C),this.ended=!0,!1}if(t=g.avail_out,g.next_out&&(0===g.avail_out||C===DB))if("string"===this.options.to){let A=ug(g.output,g.next_out),I=g.next_out-A,e=Sg(g.output,A);g.next_out=I,g.avail_out=B-I,I&&g.output.set(g.output.subarray(A,A+I),0),this.onData(e)}else this.onData(g.output.length===g.next_out?g.output:g.output.subarray(0,g.next_out));if(C!==cB||0!==t){if(C===DB)return C=aB.inflateEnd(this.strm),this.onEnd(C),this.ended=!0,!0;if(0===g.avail_in)break}}return!0},SB.prototype.onData=function(A){this.chunks.push(A)},SB.prototype.onEnd=function(A){A===cB&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=wg(this.chunks)),this.chunks=[],this.err=A,this.msg=this.strm.msg};var uB={inflate:function(A,I){const g=new SB(I);if(g.push(A),g.err)throw g.msg||hg[g.err];return g.result}};const{inflate:GB}=uB;var NB=GB;var FB=Object.freeze({__proto__:null,default:class extends lI{decodeBlock(A){return NB(new Uint8Array(A)).buffer}}});var kB=Object.freeze({__proto__:null,default:class extends lI{decodeBlock(A){const I=new DataView(A),g=[];for(let B=0;B<A.byteLength;++B){let A=I.getInt8(B);if(A<0){const e=I.getUint8(B+1);A=-A;for(let I=0;I<=A;++I)g.push(e);B+=1}else{for(let e=0;e<=A;++e)g.push(I.getUint8(B+e+1));B+=A+1}}return new Uint8Array(g).buffer}}});function RB(A){return A&&A.__esModule&&Object.prototype.hasOwnProperty.call(A,"default")?A.default:A}var LB,UB={exports:{}};var pB,YB=(LB||(LB=1,pB=UB,
|
|
1
|
+
"use strict";var A=require("@deck.gl/core"),I=require("@deck.gl/geo-layers"),g=require("@deck.gl/layers"),e=require("@deck.gl/extensions"),B=require("chroma-js"),i=require("@loaders.gl/schema"),C=require("@loaders.gl/loader-utils"),t=require("@deck.gl/mesh-layers");let Q=!1;function E(){"undefined"==typeof window||Q||(window.addEventListener("unhandledrejection",A=>{A.reason&&"AbortError"===A.reason.name&&A.preventDefault()}),Q=!0)}function s(A){return(I,...g)=>a(A,I,g)}function o(A,I){return s(r(A,I).get)}const{apply:a,getOwnPropertyDescriptor:r,getPrototypeOf:n,ownKeys:h}=Reflect,{iterator:l,toStringTag:c}=Symbol,D=Object,{create:w,defineProperty:y}=D,d=Array.prototype[l],f=s(d),S=ArrayBuffer;o(S.prototype,"byteLength");const u="undefined"!=typeof SharedArrayBuffer?SharedArrayBuffer:null;u&&o(u.prototype,"byteLength");const G=n(Uint8Array);G.from;const N=G.prototype;N[l],s(N.keys),s(N.values),s(N.entries),s(N.set),s(N.reverse),s(N.fill),s(N.copyWithin),s(N.sort),s(N.slice),s(N.subarray),o(N,"buffer"),o(N,"byteOffset"),o(N,"length"),o(N,c);const F=Uint8Array,k=Uint16Array,R=Uint32Array,L=Float32Array,U=n([][l]()),p=s(U.next),Y=s(function*(){}().next),M=n(U),m=s(DataView.prototype.getUint16),K=WeakMap,H=K.prototype,J=s(H.get),b=s(H.set),q=new K,x=w(null,{next:{value:function(){const A=J(q,this);return p(A)}},[l]:{value:function(){return this}}});const T=new K,O=w(M,{next:{value:function(){const A=J(T,this);return Y(A)},writable:!0,configurable:!0}});for(const A of h(U))"next"!==A&&y(O,A,r(U,A));const P=new S(4),v=new L(P),V=new R(P),Z=new k(512),j=new F(512);for(let A=0;A<256;++A){const I=A-127;I<-24?(Z[A]=0,Z[256|A]=32768,j[A]=24,j[256|A]=24):I<-14?(Z[A]=1024>>-I-14,Z[256|A]=1024>>-I-14|32768,j[A]=-I-1,j[256|A]=-I-1):I<=15?(Z[A]=I+15<<10,Z[256|A]=I+15<<10|32768,j[A]=13,j[256|A]=13):I<128?(Z[A]=31744,Z[256|A]=64512,j[A]=24,j[256|A]=24):(Z[A]=31744,Z[256|A]=64512,j[A]=13,j[256|A]=13)}const z=new R(2048);for(let A=1;A<1024;++A){let I=A<<13,g=0;for(;!(8388608&I);)I<<=1,g-=8388608;I&=-8388609,g+=947912704,z[A]=I|g}for(let A=1024;A<2048;++A)z[A]=939524096+(A-1024<<13);const W=new R(64);for(let A=1;A<31;++A)W[A]=A<<23;W[31]=1199570944,W[32]=2147483648;for(let A=33;A<63;++A)W[A]=2147483648+(A-32<<23);W[63]=3347054592;const _=new k(64);for(let A=1;A<64;++A)32!==A&&(_[A]=1024);function X(A,I,...g){return function(A){const I=A>>10;return V[0]=z[_[I]+(1023&A)]+W[I],v[0]}(m(A,I,...function(A){if(A[l]===d&&U.next===p)return A;const I=w(x);return b(q,I,f(A)),I}(g)))}function $(A,I,g){const e="object"==typeof A?A.outer:A,B=e.slice(0,e.indexOf(">")+1),i=['"',"'"];for(let A=0;A<i.length;A++){const g=i[A],e=new RegExp(I+"\\="+g+"([^"+g+"]*)"+g).exec(B);if(e)return e[1]}}function AA(A,I,g){const e=new RegExp(I).exec(A.slice(g));return e?g+e.index+e[0].length-1:-1}function IA(A,I){const g=new RegExp(I,"g"),e=A.match(g);return e?e.length:0}function gA(A,I,g){const e=g&&g.debug||!1,B=!(g&&!1===typeof g.nested),i=g&&g.startIndex||0;e&&console.log("[xml-utils] starting findTagByName with",I," and ",g);const C=function(A,I,g){const e=new RegExp(I).exec(A.slice(g));return e?g+e.index:-1}(A,`<${I}[ \n>/]`,i);if(e&&console.log("[xml-utils] start:",C),-1===C)return;const t=A.slice(C+I.length);let Q=AA(t,"^[^<]*[ /]>",0);const E=-1!==Q&&"/"===t[Q-1];if(e&&console.log("[xml-utils] selfClosing:",E),!1===E)if(B){let A=0,g=1,e=0;for(;-1!==(Q=AA(t,"[ /]"+I+">",A));){const B=t.substring(A,Q+1);if(g+=IA(B,"<"+I+"[ \n\t>]"),e+=IA(B,"</"+I+">"),e>=g)break;A=Q}}else Q=AA(t,"[ /]"+I+">",0);const s=C+I.length+Q+1;if(e&&console.log("[xml-utils] end:",s),-1===s)return;const o=A.slice(C,s);let a;return a=E?null:o.slice(o.indexOf(">")+1,o.lastIndexOf("<")),{inner:a,outer:o,start:C,end:s}}const eA={BYTE:1,ASCII:2,SHORT:3,LONG:4,RATIONAL:5,SBYTE:6,UNDEFINED:7,SSHORT:8,SLONG:9,SRATIONAL:10,FLOAT:11,DOUBLE:12,IFD:13,LONG8:16,SLONG8:17,IFD8:18},BA={[eA.BYTE]:1,[eA.ASCII]:1,[eA.SBYTE]:1,[eA.UNDEFINED]:1,[eA.SHORT]:2,[eA.SSHORT]:2,[eA.LONG]:4,[eA.SLONG]:4,[eA.FLOAT]:4,[eA.IFD]:4,[eA.RATIONAL]:8,[eA.SRATIONAL]:8,[eA.DOUBLE]:8,[eA.LONG8]:8,[eA.SLONG8]:8,[eA.IFD8]:8};function iA(A){const I=BA[A];if(void 0===I)throw new RangeError(`Invalid field type: ${A}`);return I}const CA={NewSubfileType:{tag:254,type:eA.LONG,eager:!0},SubfileType:{tag:255,type:eA.SHORT,eager:!0},ImageWidth:{tag:256,type:eA.SHORT,eager:!0},ImageLength:{tag:257,type:eA.SHORT,eager:!0},BitsPerSample:{tag:258,type:eA.SHORT,isArray:!0,eager:!0},Compression:{tag:259,type:eA.SHORT,eager:!0},PhotometricInterpretation:{tag:262,type:eA.SHORT,eager:!0},Threshholding:{tag:263,type:eA.SHORT},CellWidth:{tag:264,type:eA.SHORT},CellLength:{tag:265,type:eA.SHORT},FillOrder:{tag:266,type:eA.SHORT},DocumentName:{tag:269,type:eA.ASCII},ImageDescription:{tag:270,type:eA.ASCII},Make:{tag:271,type:eA.ASCII},Model:{tag:272,type:eA.ASCII},StripOffsets:{tag:273,type:eA.SHORT,isArray:!0},Orientation:{tag:274,type:eA.SHORT},SamplesPerPixel:{tag:277,type:eA.SHORT,eager:!0},RowsPerStrip:{tag:278,type:eA.SHORT,eager:!0},StripByteCounts:{tag:279,type:eA.LONG,isArray:!0},MinSampleValue:{tag:280,type:eA.SHORT,isArray:!0},MaxSampleValue:{tag:281,type:eA.SHORT,isArray:!0},XResolution:{tag:282,type:eA.RATIONAL},YResolution:{tag:283,type:eA.RATIONAL},PlanarConfiguration:{tag:284,type:eA.SHORT,eager:!0},PageName:{tag:285,type:eA.ASCII},XPosition:{tag:286,type:eA.RATIONAL},YPosition:{tag:287,type:eA.RATIONAL},FreeOffsets:{tag:288,type:eA.LONG},FreeByteCounts:{tag:289,type:eA.LONG},GrayResponseUnit:{tag:290,type:eA.SHORT},GrayResponseCurve:{tag:291,type:eA.SHORT,isArray:!0},T4Options:{tag:292,type:eA.LONG},T6Options:{tag:293,type:eA.LONG},ResolutionUnit:{tag:296,type:eA.SHORT},PageNumber:{tag:297,type:eA.SHORT,isArray:!0},TransferFunction:{tag:301,type:eA.SHORT,isArray:!0},Software:{tag:305,type:eA.ASCII},DateTime:{tag:306,type:eA.ASCII},Artist:{tag:315,type:eA.ASCII},HostComputer:{tag:316,type:eA.ASCII},Predictor:{tag:317,type:eA.SHORT},WhitePoint:{tag:318,type:eA.RATIONAL,isArray:!0},PrimaryChromaticities:{tag:319,type:eA.RATIONAL,isArray:!0},ColorMap:{tag:320,type:eA.SHORT,isArray:!0},HalftoneHints:{tag:321,type:eA.SHORT,isArray:!0},TileWidth:{tag:322,type:eA.SHORT,eager:!0},TileLength:{tag:323,type:eA.SHORT,eager:!0},TileOffsets:{tag:324,type:eA.LONG,isArray:!0},TileByteCounts:{tag:325,type:eA.SHORT,isArray:!0},InkSet:{tag:332,type:eA.SHORT},InkNames:{tag:333,type:eA.ASCII},NumberOfInks:{tag:334,type:eA.SHORT},DotRange:{tag:336,type:eA.BYTE,isArray:!0},TargetPrinter:{tag:337,type:eA.ASCII},ExtraSamples:{tag:338,type:eA.BYTE,isArray:!0,eager:!0},SampleFormat:{tag:339,type:eA.SHORT,isArray:!0,eager:!0},SMinSampleValue:{tag:340,isArray:!0},SMaxSampleValue:{tag:341,isArray:!0},TransferRange:{tag:342,type:eA.SHORT,isArray:!0},JPEGProc:{tag:512,type:eA.SHORT},JPEGInterchangeFormat:{tag:513,type:eA.LONG},JPEGInterchangeFormatLngth:{tag:514,type:eA.LONG},JPEGRestartInterval:{tag:515,type:eA.SHORT},JPEGLosslessPredictors:{tag:517,type:eA.SHORT,isArray:!0},JPEGPointTransforms:{tag:518,type:eA.SHORT,isArray:!0},JPEGQTables:{tag:519,type:eA.LONG,isArray:!0},JPEGDCTables:{tag:520,type:eA.LONG,isArray:!0},JPEGACTables:{tag:521,type:eA.LONG,isArray:!0},YCbCrCoefficients:{tag:529,type:eA.RATIONAL,isArray:!0},YCbCrSubSampling:{tag:530,type:eA.SHORT,isArray:!0},YCbCrPositioning:{tag:531,type:eA.SHORT},ReferenceBlackWhite:{tag:532,type:eA.LONG,isArray:!0},Copyright:{tag:33432,type:eA.ASCII},BadFaxLines:{tag:326},CleanFaxData:{tag:327},ClipPath:{tag:343},ConsecutiveBadFaxLines:{tag:328},Decode:{tag:433},DefaultImageColor:{tag:434},Indexed:{tag:346},JPEGTables:{tag:347,isArray:!0,eager:!0},StripRowCounts:{tag:559,isArray:!0},SubIFDs:{tag:330,isArray:!0},XClipPathUnits:{tag:344},YClipPathUnits:{tag:345},ApertureValue:{tag:37378},ColorSpace:{tag:40961},DateTimeDigitized:{tag:36868},DateTimeOriginal:{tag:36867},ExifIFD:{tag:34665,name:"Exif IFD",type:eA.LONG},ExifVersion:{tag:36864},ExposureTime:{tag:33434},FileSource:{tag:41728},Flash:{tag:37385},FlashpixVersion:{tag:40960},FNumber:{tag:33437},ImageUniqueID:{tag:42016},LightSource:{tag:37384},MakerNote:{tag:37500},ShutterSpeedValue:{tag:37377},UserComment:{tag:37510},IPTC:{tag:33723},CZ_LSMINFO:{tag:34412},ICCProfile:{tag:34675,name:"ICC Profile"},XMP:{tag:700},GDAL_METADATA:{tag:42112},GDAL_NODATA:{tag:42113,type:eA.ASCII,eager:!0},Photoshop:{tag:34377},ModelPixelScale:{tag:33550,type:eA.DOUBLE,isArray:!0,eager:!0},ModelTiepoint:{tag:33922,type:eA.DOUBLE,isArray:!0,eager:!0},ModelTransformation:{tag:34264,type:eA.DOUBLE,isArray:!0,eager:!0},GeoKeyDirectory:{tag:34735,type:eA.SHORT,isArray:!0,eager:!0},GeoDoubleParams:{tag:34736,type:eA.DOUBLE,isArray:!0,eager:!0},GeoAsciiParams:{tag:34737,type:eA.ASCII,eager:!0},LercParameters:{tag:50674,eager:!0}},tA={},QA={};function EA(A,I,g,e=!1,B=!1){tA[I]=A,QA[A]={tag:A,name:I,type:"string"==typeof g?eA[g]:g,isArray:e,eager:B}}for(const[A,I]of Object.entries(CA)){const g=I;EA(g.tag,g.name||A,g.type,g.isArray,g.eager)}function sA(A){return"number"==typeof A?A:tA[A]}const oA=0,aA=1,rA=2,nA=3,hA=5,lA=6,cA=8,DA=0,wA=1,yA=0,dA=1,fA=2,SA={1024:"GTModelTypeGeoKey",1025:"GTRasterTypeGeoKey",1026:"GTCitationGeoKey",2048:"GeographicTypeGeoKey",2049:"GeogCitationGeoKey",2050:"GeogGeodeticDatumGeoKey",2051:"GeogPrimeMeridianGeoKey",2052:"GeogLinearUnitsGeoKey",2053:"GeogLinearUnitSizeGeoKey",2054:"GeogAngularUnitsGeoKey",2055:"GeogAngularUnitSizeGeoKey",2056:"GeogEllipsoidGeoKey",2057:"GeogSemiMajorAxisGeoKey",2058:"GeogSemiMinorAxisGeoKey",2059:"GeogInvFlatteningGeoKey",2060:"GeogAzimuthUnitsGeoKey",2061:"GeogPrimeMeridianLongGeoKey",2062:"GeogTOWGS84GeoKey",3072:"ProjectedCSTypeGeoKey",3073:"PCSCitationGeoKey",3074:"ProjectionGeoKey",3075:"ProjCoordTransGeoKey",3076:"ProjLinearUnitsGeoKey",3077:"ProjLinearUnitSizeGeoKey",3078:"ProjStdParallel1GeoKey",3079:"ProjStdParallel2GeoKey",3080:"ProjNatOriginLongGeoKey",3081:"ProjNatOriginLatGeoKey",3082:"ProjFalseEastingGeoKey",3083:"ProjFalseNorthingGeoKey",3084:"ProjFalseOriginLongGeoKey",3085:"ProjFalseOriginLatGeoKey",3086:"ProjFalseOriginEastingGeoKey",3087:"ProjFalseOriginNorthingGeoKey",3088:"ProjCenterLongGeoKey",3089:"ProjCenterLatGeoKey",3090:"ProjCenterEastingGeoKey",3091:"ProjCenterNorthingGeoKey",3092:"ProjScaleAtNatOriginGeoKey",3093:"ProjScaleAtCenterGeoKey",3094:"ProjAzimuthAngleGeoKey",3095:"ProjStraightVertPoleLongGeoKey",3096:"ProjRectifiedGridAngleGeoKey",4096:"VerticalCSTypeGeoKey",4097:"VerticalCitationGeoKey",4098:"VerticalDatumGeoKey",4099:"VerticalUnitsGeoKey"};for(const[A,I]of Object.entries(SA));const uA=new Map;async function GA(A){const I=!A.hasTag("StripOffsets");return{tileWidth:I?await A.loadValue("TileWidth"):await A.loadValue("ImageWidth"),tileHeight:I?await A.loadValue("TileLength"):await A.loadValue("RowsPerStrip")||await A.loadValue("ImageLength"),planarConfiguration:await A.loadValue("PlanarConfiguration"),bitsPerSample:await A.loadValue("BitsPerSample"),predictor:await A.loadValue("Predictor")||1}}function NA(A,I,g=GA,e=!0){Array.isArray(A)||(A=[A]),A.forEach(A=>{uA.set(A,{importFn:I,decoderParameterFn:g,preferWorker:e})})}const FA=[{cases:[void 0,1],importFn:()=>Promise.resolve().then(function(){return ZI}).then(A=>A.default),preferWorker:!1},{cases:5,importFn:()=>Promise.resolve().then(function(){return WI}).then(A=>A.default)},{cases:6,importFn:()=>{throw new Error("old style JPEG compression is not supported.")}},{cases:7,importFn:()=>Promise.resolve().then(function(){return sg}).then(A=>A.default),decoderParameterFn:async A=>({...await GA(A),JPEGTables:await A.loadValue("JPEGTables")})},{cases:[8,32946],importFn:()=>Promise.resolve().then(function(){return Fe}).then(A=>A.default)},{cases:32773,importFn:()=>Promise.resolve().then(function(){return ke}).then(A=>A.default)},{cases:34887,importFn:()=>Promise.resolve().then(function(){return xe}).then(async A=>(await A.zstd.init(),A)).then(A=>A.default),decoderParameterFn:async A=>({...await GA(A),LercParameters:await A.loadValue("LercParameters")})},{cases:5e4,importFn:()=>Promise.resolve().then(function(){return ze}).then(async A=>(await A.zstd.init(),A)).then(A=>A.default)},{cases:50001,importFn:()=>Promise.resolve().then(function(){return We}).then(A=>A.default),decoderParameterFn:async A=>({...await GA(A),samplesPerPixel:Number(await A.loadValue("SamplesPerPixel"))||4}),preferWorker:!1}];for(const A of FA){const{cases:I,importFn:g,decoderParameterFn:e,preferWorker:B}=A;NA(I,g,e,B)}function kA(A,I,g,e=1){return new(Object.getPrototypeOf(A).constructor)(I*g*e)}function RA(A,I,g){return(1-g)*A+g*I}function LA(A,I,g,e,B,i="nearest"){switch(i.toLowerCase()){case"nearest":return function(A,I,g,e,B){const i=I/e,C=g/B;return A.map(A=>{const t=kA(A,e,B);for(let Q=0;Q<B;++Q){const B=Math.min(Math.round(C*Q),g-1);for(let g=0;g<e;++g){const C=Math.min(Math.round(i*g),I-1),E=A[B*I+C];t[Q*e+g]=E}}return t})}(A,I,g,e,B);case"bilinear":case"linear":return function(A,I,g,e,B){const i=I/e,C=g/B;return A.map(A=>{const t=kA(A,e,B);for(let Q=0;Q<B;++Q){const B=C*Q,E=Math.floor(B),s=Math.min(Math.ceil(B),g-1);for(let g=0;g<e;++g){const C=i*g,o=C%1,a=Math.floor(C),r=Math.min(Math.ceil(C),I-1),n=A[E*I+a],h=A[E*I+r],l=A[s*I+a],c=A[s*I+r],D=RA(RA(n,h,o),RA(l,c,o),B%1);t[Q*e+g]=D}}return t})}(A,I,g,e,B);default:throw new Error(`Unsupported resampling method: '${i}'`)}}function UA(A,I,g,e,B,i,C="nearest"){switch(C.toLowerCase()){case"nearest":return function(A,I,g,e,B,i){const C=I/e,t=g/B,Q=kA(A,e,B,i);for(let E=0;E<B;++E){const B=Math.min(Math.round(t*E),g-1);for(let g=0;g<e;++g){const t=Math.min(Math.round(C*g),I-1);for(let C=0;C<i;++C){const s=A[B*I*i+t*i+C];Q[E*e*i+g*i+C]=s}}}return Q}(A,I,g,e,B,i);case"bilinear":case"linear":return function(A,I,g,e,B,i){const C=I/e,t=g/B,Q=kA(A,e,B,i);for(let E=0;E<B;++E){const B=t*E,s=Math.floor(B),o=Math.min(Math.ceil(B),g-1);for(let g=0;g<e;++g){const t=C*g,a=t%1,r=Math.floor(t),n=Math.min(Math.ceil(t),I-1);for(let C=0;C<i;++C){const t=A[s*I*i+r*i+C],h=A[s*I*i+n*i+C],l=A[o*I*i+r*i+C],c=A[o*I*i+n*i+C],D=RA(RA(t,h,a),RA(l,c,a),B%1);Q[E*e*i+g*i+C]=D}}}return Q}(A,I,g,e,B,i);default:throw new Error(`Unsupported resampling method: '${C}'`)}}function pA(A,I,g){let e=0;for(let B=I;B<g;++B)e+=A[B];return e}function YA(A,I,g){let e;switch(A){case 1:I<=8?e=Uint8Array:I<=16?e=Uint16Array:I<=32&&(e=Uint32Array);break;case 2:8===I?e=Int8Array:16===I?e=Int16Array:32===I&&(e=Int32Array);break;case 3:switch(I){case 16:case 32:e=Float32Array;break;case 64:e=Float64Array}}if(e){if("number"==typeof g)return new e(g);if(g instanceof ArrayBuffer)return new e(g)}throw Error("Unsupported data format/bitsPerSample")}class MA{constructor(A,I,g,e){this.fileDirectory=A,this.littleEndian=I,this.tiles=g?[]:null,this.isTiled=!A.hasTag("StripOffsets");const B=A.getValue("PlanarConfiguration")??1;if(1!==B&&2!==B)throw new Error("Invalid planar configuration.");this.planarConfiguration=B,this.source=e}getFileDirectory(){return this.fileDirectory}getGeoKeys(){return this.fileDirectory.parseGeoKeyDirectory()}getWidth(){return this.fileDirectory.getValue("ImageWidth")||0}getHeight(){return this.fileDirectory.getValue("ImageLength")||0}getSamplesPerPixel(){return this.fileDirectory.getValue("SamplesPerPixel")??1}getTileWidth(){return this.isTiled?this.fileDirectory.getValue("TileWidth")||0:this.getWidth()}getTileHeight(){if(this.isTiled)return this.fileDirectory.getValue("TileLength")||0;const A=this.fileDirectory.hasTag("RowsPerStrip")&&this.fileDirectory.getValue("RowsPerStrip");return A?Math.min(A,this.getHeight()):this.getHeight()}getBlockWidth(){return this.getTileWidth()}getBlockHeight(A){return this.isTiled||(A+1)*this.getTileHeight()<=this.getHeight()?this.getTileHeight():this.getHeight()-A*this.getTileHeight()}getBytesPerPixel(){let A=0;const I=this.fileDirectory.getValue("BitsPerSample")||[];for(let g=0;g<I.length;++g)A+=this.getSampleByteSize(g);return A}getSampleByteSize(A){const I=this.fileDirectory.getValue("BitsPerSample")||[];if(A>=I.length)throw new RangeError(`Sample index ${A} is out of range.`);return Math.ceil(I[A]/8)}getReaderForSample(A){const I=this.fileDirectory.getValue("SampleFormat"),g=I?I[A]:1,e=(this.fileDirectory.getValue("BitsPerSample")||[])[A];switch(g){case 1:if(e<=8)return DataView.prototype.getUint8;if(e<=16)return DataView.prototype.getUint16;if(e<=32)return DataView.prototype.getUint32;break;case 2:if(e<=8)return DataView.prototype.getInt8;if(e<=16)return DataView.prototype.getInt16;if(e<=32)return DataView.prototype.getInt32;break;case 3:switch(e){case 16:return function(A,I){return X(this,A,I)};case 32:return DataView.prototype.getFloat32;case 64:return DataView.prototype.getFloat64}}throw Error("Unsupported data format/bitsPerSample")}getSampleFormat(A=0){const I=this.fileDirectory.getValue("SampleFormat");return I?I[A]:1}getBitsPerSample(A=0){const I=this.fileDirectory.getValue("BitsPerSample");return I?I[A]:0}getArrayForSample(A,I){return YA(this.getSampleFormat(A),this.getBitsPerSample(A),I)}async getTileOrStrip(A,I,g,e,B){const i=Math.ceil(this.getWidth()/this.getTileWidth()),C=Math.ceil(this.getHeight()/this.getTileHeight());let t;const{tiles:Q}=this;if(1===this.planarConfiguration?t=I*i+A:2===this.planarConfiguration&&(t=g*i*C+I*i+A),void 0===t)throw new Error("Could not determine tile or strip index.");let E,s;if(this.isTiled?(E=Number(await this.fileDirectory.loadValueIndexed("TileOffsets",t)),s=Number(await this.fileDirectory.loadValueIndexed("TileByteCounts",t))):(E=Number(await this.fileDirectory.loadValueIndexed("StripOffsets",t)),s=Number(await this.fileDirectory.loadValueIndexed("StripByteCounts",t))),0===s){const e=this.getBlockHeight(I)*this.getTileWidth(),B=2===this.planarConfiguration?this.getSampleByteSize(g):this.getBytesPerPixel(),i=new ArrayBuffer(e*B);return this.getArrayForSample(g,i).fill(this.getGDALNoData()||0),{x:A,y:I,sample:g,data:i}}const o=(await this.source.fetch([{offset:E,length:s}],B))[0];let a;return null!==Q&&Q[t]?a=Q[t]:(a=(async()=>{let A=await e.decode(o);const g=this.getSampleFormat(),B=this.getBitsPerSample();return function(A,I){return(1!==A&&2!==A||!(I<=32)||I%8!=0)&&(3!==A||16!==I&&32!==I&&64!==I)}(g,B)&&(A=function(A,I,g,e,B,i,C){const t=new DataView(A),Q=2===g?1:e,E=YA(I,B,2===g?C*i:C*i*e),s=parseInt("1".repeat(B),2);if(1===I){let A;A=1===g?e*B:B;let I=i*A;7&I&&(I=I+7&-8);for(let A=0;A<C;++A){const g=A*I;for(let I=0;I<i;++I){const e=g+I*Q*B;for(let g=0;g<Q;++g){const C=e+g*B,o=(A*i+I)*Q+g,a=Math.floor(C/8),r=C%8;if(r+B<=8)E[o]=t.getUint8(a)>>8-B-r&s;else if(r+B<=16)E[o]=t.getUint16(a)>>16-B-r&s;else if(r+B<=24){const A=t.getUint16(a)<<8|t.getUint8(a+2);E[o]=A>>24-B-r&s}else E[o]=t.getUint32(a)>>32-B-r&s}}}}return E.buffer}(A,g,this.planarConfiguration,this.getSamplesPerPixel(),B,this.getTileWidth(),this.getBlockHeight(I))),A})(),null!==Q&&(Q[t]=a)),{x:A,y:I,sample:g,data:await a}}async _readRaster(A,I,g,e,B,i,C,t,Q){const E=this.getTileWidth(),s=this.getTileHeight(),o=this.getWidth(),a=this.getHeight(),r=Math.max(Math.floor(A[0]/E),0),n=Math.min(Math.ceil(A[2]/E),Math.ceil(o/E)),h=Math.max(Math.floor(A[1]/s),0),l=Math.min(Math.ceil(A[3]/s),Math.ceil(a/s)),c=A[2]-A[0];let D=this.getBytesPerPixel();const w=[],y=[];for(let A=0;A<I.length;++A){if(1===this.planarConfiguration){const g=await this.fileDirectory.loadValue("BitsPerSample");if("object"!=typeof g)throw new Error("Expected BitsPerSample to be an array or typed array.");w.push(pA(g,0,I[A])/8)}else w.push(0);y.push(this.getReaderForSample(I[A]))}const d=[],{littleEndian:f}=this;for(let i=h;i<l;++i)for(let C=r;C<n;++C){let t;1===this.planarConfiguration&&(t=this.getTileOrStrip(C,i,0,B,Q));for(let r=0;r<I.length;++r){const n=r,h=I[r];if(2===this.planarConfiguration&&(D=this.getSampleByteSize(h),t=this.getTileOrStrip(C,i,h,B,Q)),!t)throw new Error("Could not get tile or strip data.");const l=t.then(B=>{const i=B.data,C=new DataView(i),t=this.getBlockHeight(B.y),Q=B.y*s,r=B.x*E,h=Q+t,l=(B.x+1)*E,d=y[n],S=Math.min(t,t-(h-A[3]),a-Q),u=Math.min(E,E-(l-A[2]),o-r);for(let B=Math.max(0,A[1]-Q);B<S;++B)for(let i=Math.max(0,A[0]-r);i<u;++i){const t=(B*E+i)*D,s=d.call(C,t+w[n],f);let o;e?(o=(B+Q-A[1])*c*I.length+(i+r-A[0])*I.length+n,g[o]=s):(o=(B+Q-A[1])*c+i+r-A[0],g[n][o]=s)}});d.push(l)}}if(await Promise.all(d),i&&A[2]-A[0]!==i||C&&A[3]-A[1]!==C){let B;B=e?UA(g,A[2]-A[0],A[3]-A[1],i,C,I.length,t):LA(g,A[2]-A[0],A[3]-A[1],i,C,t);const Q=B;return Q.width=i??A[2]-A[0],Q.height=C??A[3]-A[1],Q}const S=g;return S.width=i||A[2]-A[0],S.height=C||A[3]-A[1],S}async readRasters(A={}){const{window:I,samples:g=[],pool:e=null,width:B,height:i,resampleMethod:C,fillValue:t,signal:Q}=A,E="interleave"in A&&A.interleave,s=I||[0,0,this.getWidth(),this.getHeight()];if(s[0]>s[2]||s[1]>s[3])throw new Error("Invalid subsets");const o=(s[2]-s[0])*(s[3]-s[1]),a=this.getSamplesPerPixel();if(g&&g.length){for(let A=0;A<g.length;++A)if(g[A]>=a)return Promise.reject(new RangeError(`Invalid sample index '${g[A]}'.`))}else for(let A=0;A<a;++A)g.push(A);let r;if(E){const{fileDirectory:A}=this,I=A.getValue("SampleFormat"),e=I?Math.max.apply(null,Array.from(I)):1;if(1!==e&&2!==e&&3!==e)throw new Error("Unsupported sample format for interleaved data. Must be 1, 2, or 3.");const B=A.getValue("BitsPerSample");if(r=YA(e,B?Math.max.apply(null,Array.from(B)):8,o*g.length),t){if(Array.isArray(t))throw new Error("When reading interleaved data, fillValue must be a single number.");r.fill(t)}}else{r=[];for(let A=0;A<g.length;++A){const I=this.getArrayForSample(g[A],o);Array.isArray(t)&&A<t.length?I.fill(t[A]):t&&!Array.isArray(t)&&I.fill(t),r.push(I)}}const n=this.fileDirectory.getValue("Compression")||1,h=await async function(A,I){if(!uA.has(A))throw new Error(`Unknown compression method identifier: ${A}`);const{decoderParameterFn:g}=uA.get(A);return g(I)}(n,this.fileDirectory),l=e?e.bindParameters(n,h):await async function(A,I){if(!uA.has(A))throw new Error(`Unknown compression method identifier: ${A}`);const{importFn:g}=uA.get(A);return new(await g())(I)}(n,h);return await this._readRaster(s,g,r,E,l,B,i,C,Q)}async readRGB(A={}){const{window:I,pool:g=null,width:e,height:B,resampleMethod:i,enableAlpha:C=!1,signal:t}=A,Q=("interleave"in A&&A.interleave)??!1,E=I||[0,0,this.getWidth(),this.getHeight()];if(E[0]>E[2]||E[1]>E[3])throw new Error("Invalid subsets");const s=this.fileDirectory.getValue("PhotometricInterpretation");if(s===rA){let A=[0,1,2];const E=this.fileDirectory.getValue("ExtraSamples");if(E&&E[0]!==DA&&C){A=[];const I=this.fileDirectory.getValue("BitsPerSample")||[];for(let g=0;g<I.length;g+=1)A.push(g)}return this.readRasters({window:I,interleave:Q,samples:A,pool:g,width:e,height:B,resampleMethod:i,signal:t})}let o;switch(s){case oA:case aA:case nA:o=[0];break;case hA:o=[0,1,2,3];break;case lA:case cA:o=[0,1,2];break;default:throw new Error("Invalid or unsupported photometric interpretation.")}const a={window:E,interleave:!0,samples:o,pool:g,width:e,height:B,resampleMethod:i,signal:t},{fileDirectory:r}=this,n=await this.readRasters(a),h=2**this.getBitsPerSample(0);let l;switch(s){case oA:l=function(A,I){const{width:g,height:e}=A,B=new Uint8Array(g*e*3);let i;for(let g=0,e=0;g<A.length;++g,e+=3)i=256-A[g]/I*256,B[e]=i,B[e+1]=i,B[e+2]=i;return B}(n,h);break;case aA:l=function(A,I){const{width:g,height:e}=A,B=new Uint8Array(g*e*3);let i;for(let g=0,e=0;g<A.length;++g,e+=3)i=A[g]/I*256,B[e]=i,B[e+1]=i,B[e+2]=i;return B}(n,h);break;case nA:l=function(A,I){const{width:g,height:e}=A,B=new Uint8Array(g*e*3),i=I.length/3,C=I.length/3*2;for(let g=0,e=0;g<A.length;++g,e+=3){const t=A[g];B[e]=I[t]/65536*256,B[e+1]=I[t+i]/65536*256,B[e+2]=I[t+C]/65536*256}return B}(n,await r.loadValue("ColorMap"));break;case hA:l=function(A){const{width:I,height:g}=A,e=new Uint8Array(I*g*3);for(let I=0,g=0;I<A.length;I+=4,g+=3){const B=A[I],i=A[I+1],C=A[I+2],t=A[I+3];e[g]=(255-B)/256*255*((255-t)/256),e[g+1]=(255-i)/256*255*((255-t)/256),e[g+2]=(255-C)/256*255*((255-t)/256)}return e}(n);break;case lA:l=function(A){const{width:I,height:g}=A,e=new Uint8ClampedArray(I*g*3);for(let I=0,g=0;I<A.length;I+=3,g+=3){const B=A[I],i=A[I+1],C=A[I+2];e[g]=B+1.402*(C-128),e[g+1]=B-.34414*(i-128)-.71414*(C-128),e[g+2]=B+1.772*(i-128)}return e}(n);break;case cA:l=function(A){const{width:I,height:g}=A,e=new Uint8Array(I*g*3);for(let I=0,g=0;I<A.length;I+=3,g+=3){let B,i,C,t=(A[I+0]+16)/116,Q=(A[I+1]<<24>>24)/500+t,E=t-(A[I+2]<<24>>24)/200;Q=.95047*(Q*Q*Q>.008856?Q*Q*Q:(Q-16/116)/7.787),t=1*(t*t*t>.008856?t*t*t:(t-16/116)/7.787),E=1.08883*(E*E*E>.008856?E*E*E:(E-16/116)/7.787),B=3.2406*Q+-1.5372*t+-.4986*E,i=-.9689*Q+1.8758*t+.0415*E,C=.0557*Q+-.204*t+1.057*E,B=B>.0031308?1.055*B**(1/2.4)-.055:12.92*B,i=i>.0031308?1.055*i**(1/2.4)-.055:12.92*i,C=C>.0031308?1.055*C**(1/2.4)-.055:12.92*C,e[g]=255*Math.max(0,Math.min(1,B)),e[g+1]=255*Math.max(0,Math.min(1,i)),e[g+2]=255*Math.max(0,Math.min(1,C))}return e}(n);break;default:throw new Error("Unsupported photometric interpretation.")}if(!Q){const A=new Uint8Array(l.length/3),I=new Uint8Array(l.length/3),g=new Uint8Array(l.length/3);for(let e=0,B=0;e<l.length;e+=3,++B)A[B]=l[e],I[B]=l[e+1],g[B]=l[e+2];l=[A,I,g]}const c=l;return c.width=n.width,c.height=n.height,c}async getTiePoints(){if(!this.fileDirectory.hasTag("ModelTiepoint"))return[];const A=await this.fileDirectory.loadValue("ModelTiepoint");if("object"!=typeof A)throw new Error("Expected ModelTiepoint to be an array or typed array.");const I=[];for(let g=0;g<A.length;g+=6)I.push({i:A[g],j:A[g+1],k:A[g+2],x:A[g+3],y:A[g+4],z:A[g+5]});return I}async getGDALMetadata(A=null){const I={};if(!this.fileDirectory.hasTag("GDAL_METADATA"))return null;let g=function(A,I){const g=[];let e,B=0;for(;e=gA(A,I,{debug:!1,startIndex:B});)B=e.start+1+I.length,g.push(e);return g}(await this.fileDirectory.loadValue("GDAL_METADATA"),"Item");g=null===A?g.filter(A=>void 0===$(A,"sample")):g.filter(I=>Number($(I,"sample"))===A);for(let A=0;A<g.length;++A){const e=g[A];I[$(e,"name")]=e.inner}return I}getGDALNoData(){const A=this.fileDirectory.hasTag("GDAL_NODATA")&&this.fileDirectory.getValue("GDAL_NODATA");return A?Number(A.substring(0,A.length-1)):null}getOrigin(){const A=this.fileDirectory.getValue("ModelTiepoint"),I=this.fileDirectory.getValue("ModelTransformation");if(A&&6===A.length)return[A[3],A[4],A[5]];if(I)return[I[3],I[7],I[11]];throw new Error("The image does not have an affine transformation.")}getResolution(A=null){const I=this.fileDirectory.getValue("ModelPixelScale"),g=this.fileDirectory.getValue("ModelTransformation");if(I)return[I[0],-I[1],I[2]];if(g)return 0===g[1]&&0===g[4]?[g[0],-g[5],g[10]]:[Math.sqrt(g[0]*g[0]+g[4]*g[4]),-Math.sqrt(g[1]*g[1]+g[5]*g[5]),g[10]];if(A){const[I,g,e]=A.getResolution();return[I*A.getWidth()/this.getWidth(),g*A.getHeight()/this.getHeight(),e*A.getWidth()/this.getWidth()]}throw new Error("The image does not have an affine transformation.")}pixelIsArea(){return 1===this.getGeoKeys()?.GTRasterTypeGeoKey}getBoundingBox(A=!1){const I=this.getHeight(),g=this.getWidth(),e=this.fileDirectory.getValue("ModelTransformation");if(e&&!A){const[A,B,,i,C,t,,Q]=e,E=[[0,0],[0,I],[g,0],[g,I]].map(([I,g])=>[i+A*I+B*g,Q+C*I+t*g]),s=E.map(A=>A[0]),o=E.map(A=>A[1]);return[Math.min(...s),Math.min(...o),Math.max(...s),Math.max(...o)]}{const A=this.getOrigin(),e=this.getResolution(),B=A[0],i=A[1],C=B+e[0]*g,t=i+e[1]*I;return[Math.min(B,C),Math.min(i,t),Math.max(B,C),Math.max(i,t)]}}}class mA{constructor(A){this._dataView=new DataView(A)}get buffer(){return this._dataView.buffer}getUint64(A,I){const g=this.getUint32(A,I),e=this.getUint32(A+4,I);let B;if(I){if(B=g+2**32*e,!Number.isSafeInteger(B))throw new Error(`${B} exceeds MAX_SAFE_INTEGER. Precision may be lost. Please report if you get this message to https://github.com/geotiffjs/geotiff.js/issues`);return B}if(B=2**32*g+e,!Number.isSafeInteger(B))throw new Error(`${B} exceeds MAX_SAFE_INTEGER. Precision may be lost. Please report if you get this message to https://github.com/geotiffjs/geotiff.js/issues`);return B}getInt64(A,I){let g=0;const e=(128&this._dataView.getUint8(A+(I?7:0)))>0;let B=!0;for(let i=0;i<8;i++){let C=this._dataView.getUint8(A+(I?i:7-i));e&&(B?0!==C&&(C=255&~(C-1),B=!1):C=255&~C),g+=C*256**i}return e&&(g=-g),g}getUint8(A){return this._dataView.getUint8(A)}getInt8(A){return this._dataView.getInt8(A)}getUint16(A,I){return this._dataView.getUint16(A,I)}getInt16(A,I){return this._dataView.getInt16(A,I)}getUint32(A,I){return this._dataView.getUint32(A,I)}getInt32(A,I){return this._dataView.getInt32(A,I)}getFloat16(A,I){return X(this._dataView,A,I)}getFloat32(A,I){return this._dataView.getFloat32(A,I)}getFloat64(A,I){return this._dataView.getFloat64(A,I)}}class KA{constructor(A,I,g,e){this._dataView=new DataView(A),this._sliceOffset=I,this._littleEndian=g,this._bigTiff=e}get sliceOffset(){return this._sliceOffset}get sliceTop(){return this._sliceOffset+this.buffer.byteLength}get littleEndian(){return this._littleEndian}get bigTiff(){return this._bigTiff}get buffer(){return this._dataView.buffer}covers(A,I){return this.sliceOffset<=A&&this.sliceTop>=A+I}readUint8(A){return this._dataView.getUint8(A-this._sliceOffset)}readInt8(A){return this._dataView.getInt8(A-this._sliceOffset)}readUint16(A){return this._dataView.getUint16(A-this._sliceOffset,this._littleEndian)}readInt16(A){return this._dataView.getInt16(A-this._sliceOffset,this._littleEndian)}readUint32(A){return this._dataView.getUint32(A-this._sliceOffset,this._littleEndian)}readInt32(A){return this._dataView.getInt32(A-this._sliceOffset,this._littleEndian)}readFloat32(A){return this._dataView.getFloat32(A-this._sliceOffset,this._littleEndian)}readFloat64(A){return this._dataView.getFloat64(A-this._sliceOffset,this._littleEndian)}readUint64(A){const I=this.readUint32(A),g=this.readUint32(A+4);let e;if(this._littleEndian){if(e=I+2**32*g,!Number.isSafeInteger(e))throw new Error(`${e} exceeds MAX_SAFE_INTEGER. Precision may be lost. Please report if you get this message to https://github.com/geotiffjs/geotiff.js/issues`);return e}if(e=2**32*I+g,!Number.isSafeInteger(e))throw new Error(`${e} exceeds MAX_SAFE_INTEGER. Precision may be lost. Please report if you get this message to https://github.com/geotiffjs/geotiff.js/issues`);return e}readInt64(A){let I=0;const g=(128&this._dataView.getUint8(A+(this._littleEndian?7:0)))>0;let e=!0;for(let B=0;B<8;B++){let i=this._dataView.getUint8(A+(this._littleEndian?B:7-B));g&&(e?0!==i&&(i=255&~(i-1),e=!1):i=255&~i),I+=i*256**B}return g&&(I=-I),I}readOffset(A){return this._bigTiff?this.readUint64(A):this.readUint32(A)}}const HA="\r\n\r\n";function JA(A){if(void 0!==Object.fromEntries)return Object.fromEntries(A);const I={};for(const[g,e]of A)I[g.toLowerCase()]=e;return I}function bA(A){return JA(A.split("\r\n").map(A=>{const I=A.split(":").map(A=>A.trim());return I[0]=I[0].toLowerCase(),I}))}function qA(A){let I=NaN,g=NaN,e=NaN;return A&&([,I,g,e]=(A.match(/bytes (\d+)-(\d+)\/(\d+)/)||[]).map(Number)),{start:I,end:g,total:e}}class xA{async fetch(A,I){return Promise.all(A.map(async A=>(await this.fetchSlice(A,I)).data))}async fetchSlice(A,I){throw new Error(`fetching of slice ${A} not possible, not implemented`)}get fileSize(){return null}async close(){}}class TA extends Map{constructor(A={}){if(super(),!(A.maxSize&&A.maxSize>0))throw new TypeError("`maxSize` must be a number greater than 0");if("number"==typeof A.maxAge&&0===A.maxAge)throw new TypeError("`maxAge` must be a number greater than 0");this.maxSize=A.maxSize,this.maxAge=A.maxAge||Number.POSITIVE_INFINITY,this.onEviction=A.onEviction,this.cache=new Map,this.oldCache=new Map,this._size=0}_emitEvictions(A){if("function"==typeof this.onEviction)for(const[I,g]of A)this.onEviction(I,g.value)}_deleteIfExpired(A,I){return"number"==typeof I.expiry&&I.expiry<=Date.now()&&("function"==typeof this.onEviction&&this.onEviction(A,I.value),this.delete(A))}_getOrDeleteIfExpired(A,I){if(!1===this._deleteIfExpired(A,I))return I.value}_getItemValue(A,I){return I.expiry?this._getOrDeleteIfExpired(A,I):I.value}_peek(A,I){const g=I.get(A);return this._getItemValue(A,g)}_set(A,I){this.cache.set(A,I),this._size++,this._size>=this.maxSize&&(this._size=0,this._emitEvictions(this.oldCache),this.oldCache=this.cache,this.cache=new Map)}_moveToRecent(A,I){this.oldCache.delete(A),this._set(A,I)}*_entriesAscending(){for(const A of this.oldCache){const[I,g]=A;if(!this.cache.has(I)){!1===this._deleteIfExpired(I,g)&&(yield A)}}for(const A of this.cache){const[I,g]=A;!1===this._deleteIfExpired(I,g)&&(yield A)}}get(A){if(this.cache.has(A)){const I=this.cache.get(A);return this._getItemValue(A,I)}if(this.oldCache.has(A)){const I=this.oldCache.get(A);if(!1===this._deleteIfExpired(A,I))return this._moveToRecent(A,I),I.value}}set(A,I,{maxAge:g=this.maxAge}={}){const e="number"==typeof g&&g!==Number.POSITIVE_INFINITY?Date.now()+g:void 0;return this.cache.has(A)?this.cache.set(A,{value:I,expiry:e}):this._set(A,{value:I,expiry:e}),this}has(A){return this.cache.has(A)?!this._deleteIfExpired(A,this.cache.get(A)):!!this.oldCache.has(A)&&!this._deleteIfExpired(A,this.oldCache.get(A))}peek(A){return this.cache.has(A)?this._peek(A,this.cache):this.oldCache.has(A)?this._peek(A,this.oldCache):void 0}delete(A){const I=this.cache.delete(A);return I&&this._size--,this.oldCache.delete(A)||I}clear(){this.cache.clear(),this.oldCache.clear(),this._size=0}resize(A){if(!(A&&A>0))throw new TypeError("`maxSize` must be a number greater than 0");const I=[...this._entriesAscending()],g=I.length-A;g<0?(this.cache=new Map(I),this.oldCache=new Map,this._size=I.length):(g>0&&this._emitEvictions(I.slice(0,g)),this.oldCache=new Map(I.slice(g)),this.cache=new Map,this._size=0),this.maxSize=A}*keys(){for(const[A]of this)yield A}*values(){for(const[,A]of this)yield A}*[Symbol.iterator](){for(const A of this.cache){const[I,g]=A;!1===this._deleteIfExpired(I,g)&&(yield[I,g.value])}for(const A of this.oldCache){const[I,g]=A;if(!this.cache.has(I)){!1===this._deleteIfExpired(I,g)&&(yield[I,g.value])}}}*entriesDescending(){let A=[...this.cache];for(let I=A.length-1;I>=0;--I){const g=A[I],[e,B]=g;!1===this._deleteIfExpired(e,B)&&(yield[e,B.value])}A=[...this.oldCache];for(let I=A.length-1;I>=0;--I){const g=A[I],[e,B]=g;if(!this.cache.has(e)){!1===this._deleteIfExpired(e,B)&&(yield[e,B.value])}}}*entriesAscending(){for(const[A,I]of this._entriesAscending())yield[A,I.value]}get size(){if(!this._size)return this.oldCache.size;let A=0;for(const I of this.oldCache.keys())this.cache.has(I)||A++;return Math.min(this._size+A,this.maxSize)}entries(){return this.entriesAscending()}forEach(A,I=this){for(const[g,e]of this.entriesAscending())A.call(I,e,g,this)}get[Symbol.toStringTag](){return JSON.stringify([...this.entriesAscending()])}}class OA extends Error{constructor(...A){super(...A),Error.captureStackTrace&&Error.captureStackTrace(this,OA),this.name="AbortError",this.signal=void 0}}class PA extends Error{constructor(A,I){super(I),this.errors=A,this.message=I,this.name="AggregateError"}}const vA=PA;class VA{constructor(A,I,g){this.offset=A,this.length=I,this.data=g}get top(){return this.offset+this.length}}class ZA{constructor(A,I,g){this.offset=A,this.length=I,this.blockIds=g}}class jA extends xA{constructor(A,{blockSize:I=65536,cacheSize:g=100}={}){super(),this.source=A,this.blockSize=I,this.blockCache=new TA({maxSize:g,onEviction:(A,I)=>{this.evictedBlocks.set(A,I)}}),this.evictedBlocks=new Map,this.blockRequests=new Map,this.blockIdsToFetch=new Set,this.abortedBlockIds=new Set}get fileSize(){return this.source.fileSize}async fetch(A,I){const g=[],e=[],B=[];this.evictedBlocks.clear();for(const{offset:I,length:i}of A){let A=I+i;const{fileSize:C}=this;null!==C&&(A=Math.min(A,C));for(let i=Math.floor(I/this.blockSize)*this.blockSize;i<A;i+=this.blockSize){const A=Math.floor(i/this.blockSize);this.blockCache.has(A)||this.blockRequests.has(A)||(this.blockIdsToFetch.add(A),e.push(A)),this.blockRequests.has(A)&&g.push(this.blockRequests.get(A)),B.push(A)}}await async function(A){return new Promise(I=>setTimeout(I,A))}(),this.fetchBlocks(I);const i=[];for(const A of e)this.blockRequests.has(A)&&i.push(this.blockRequests.get(A));await Promise.allSettled(g),await Promise.allSettled(i);const C=[],t=B.filter(A=>this.abortedBlockIds.has(A)||!this.blockCache.has(A));if(t.forEach(A=>this.blockIdsToFetch.add(A)),t.length>0&&I&&!I.aborted){this.fetchBlocks();for(const A of t){const I=this.blockRequests.get(A);if(!I)throw new Error(`Block ${A} is not in the block requests`);C.push(I)}await Promise.allSettled(C)}if(I&&I.aborted)throw new OA("Request was aborted");const Q=B.map(A=>this.blockCache.get(A)||this.evictedBlocks.get(A)),E=Q.filter(A=>!A);if(E.length)throw new vA(E,"Request failed");const s=new Map(function(A,I){const g=Array.isArray(A)?A:Array.from(A),e=Array.isArray(I)?I:Array.from(I);return g.map((A,I)=>[A,e[I]])}(B,Q));return this.readSliceData(A,s)}fetchBlocks(A){if(this.blockIdsToFetch.size>0){const I=this.groupBlocks(this.blockIdsToFetch),g=I.map(async I=>({...I,...await this.source.fetchSlice(I,A)}));for(let e=0;e<I.length;++e){const B=I[e];for(const I of B.blockIds)this.blockRequests.set(I,(async()=>{try{const A=(await Promise.all(g))[e],B=I*this.blockSize,i=B-A.offset,C=Math.min(i+this.blockSize,A.data.byteLength),t=A.data.slice(i,C),Q=new VA(B,t.byteLength,t);this.blockCache.set(I,Q),this.abortedBlockIds.delete(I)}catch(g){if(!(g instanceof OA&&"AbortError"===g.name))throw g;g.signal=A,this.blockCache.delete(I),this.abortedBlockIds.add(I)}finally{this.blockRequests.delete(I)}})())}this.blockIdsToFetch.clear()}}groupBlocks(A){const I=Array.from(A).sort((A,I)=>A-I);if(0===I.length)return[];let g=[],e=null;const B=[];for(const A of I)null===e||e+1===A?(g.push(A),e=A):(B.push(new ZA(g[0]*this.blockSize,g.length*this.blockSize,g)),g=[A],e=A);return B.push(new ZA(g[0]*this.blockSize,g.length*this.blockSize,g)),B}readSliceData(A,I){return A.map(A=>{let g=A.offset+A.length;null!==this.fileSize&&(g=Math.min(this.fileSize,g));const e=Math.floor(A.offset/this.blockSize),B=Math.floor((g-1)/this.blockSize),i=new ArrayBuffer(A.length),C=new Uint8Array(i);for(let i=e;i<=B;++i){const e=I.get(i);if(!e)continue;const B=e.offset-A.offset;let t,Q=0,E=0;B<0?Q=-B:B>0&&(E=B),t=e.top-g<0?e.length-Q:g-e.offset-Q;const s=new Uint8Array(e.data,Q,t);C.set(s,E)}return i})}}class zA{get ok(){return this.status>=200&&this.status<=299}get status(){throw new Error("not implemented")}getHeader(A){throw new Error("not implemented")}async getData(){throw new Error("not implemented")}}class WA{constructor(A){this.url=A}async request(A){throw new Error("request is not implemented")}}class _A extends zA{constructor(A){super(),this.response=A}get status(){return this.response.status}getHeader(A){return this.response.headers.get(A)||void 0}async getData(){return this.response.arrayBuffer?await this.response.arrayBuffer():(await this.response.buffer()).buffer}}class XA extends WA{constructor(A,I){super(A),this.credentials=I}async request({headers:A,signal:I}={}){const g=await fetch(this.url,{headers:A,credentials:this.credentials,signal:I});return new _A(g)}}class $A extends zA{constructor(A,I){super(),this.xhr=A,this.data=I}get status(){return this.xhr.status}getHeader(A){return this.xhr.getResponseHeader(A)||void 0}async getData(){return this.data}}class AI extends WA{constructRequest(A,I){return new Promise((g,e)=>{const B=new XMLHttpRequest;B.open("GET",this.url),B.responseType="arraybuffer";for(const[I,g]of Object.entries(A))B.setRequestHeader(I,g);B.onload=()=>{const A=B.response;g(new $A(B,A))},B.onerror=e,B.onabort=()=>e(new OA("Request aborted")),B.send(),I&&(I.aborted&&B.abort(),I.addEventListener("abort",()=>B.abort()))})}async request({headers:A={},signal:I}={}){return await this.constructRequest(A,I)}}var II={};class gI extends zA{constructor(A,I){super(),this.response=A,this.dataPromise=I}get status(){return this.response.statusCode}getHeader(A){const I=this.response.headers[A];return Array.isArray(I)?I.join(", "):I}async getData(){return await this.dataPromise}}class eI extends WA{constructor(A){super(A),this.parsedUrl=II.parse(this.url),this.httpApi=(this.parsedUrl.protocol,II)}constructRequest(A,I){return new Promise((g,e)=>{const B=this.httpApi.get({...this.parsedUrl,headers:A},A=>{const I=new Promise(I=>{const g=[];A.on("data",A=>{g.push(A)}),A.on("end",()=>{const A=Buffer.concat(g).buffer;I(A)}),A.on("error",e)});g(new gI(A,I))});B.on("error",e),I&&(I.aborted&&B.destroy(new OA("Request aborted")),I.addEventListener("abort",()=>B.destroy(new OA("Request aborted"))))})}async request({headers:A={},signal:I}={}){return await this.constructRequest(A,I)}}class BI extends xA{constructor(A,{headers:I,maxRanges:g=0,allowFullFile:e}={}){super(),this.client=A,this.headers=I,this.maxRanges=g,this.allowFullFile=e,this._fileSize=null}async fetch(A,I){return this.maxRanges>=A.length?this.fetchSlices(A,I).then(A=>A.map(A=>A.data)):(this.maxRanges>0&&A.length,Promise.all(A.map(async A=>(await this.fetchSlice(A,I)).data)))}async fetchSlices(A,I){const g=await this.client.request({headers:{...this.headers,Range:`bytes=${A.map(({offset:A,length:I})=>`${A}-${A+I-1}`).join(",")}`},signal:I});if(g.ok){if(206===g.status){const{type:e,params:B}=function(A){if(!A)return{type:null,params:{}};const[I,...g]=A.split(";").map(A=>A.trim());return{type:I,params:JA(g.map(A=>A.split("=")))}}(g.getHeader("content-type"));if("multipart/byteranges"===e){const A=function(A,I){let g=-1;const e=new TextDecoder("ascii"),B=[],i=`--${I}`,C=`${i}--`;for(let I=0;I<10;++I)e.decode(new Uint8Array(A,I,i.length))===i&&(g=I);if(-1===g)throw new Error("Could not find initial boundary");for(;g<A.byteLength;){const I=e.decode(new Uint8Array(A,g,Math.min(i.length+1024,A.byteLength-g)));if(0===I.length||I.startsWith(C))break;if(!I.startsWith(i))throw new Error("Part does not start with boundary");const t=I.substr(i.length+2);if(0===t.length)break;const Q=t.indexOf(HA),E=bA(t.substr(0,Q)),{start:s,end:o,total:a}=qA(E["content-range"]),r=g+i.length+Q+4,n=o+1-s;B.push({headers:E,data:A.slice(r,r+n),offset:s,length:n,fileSize:a}),g=r+n+4}return B}(await g.getData(),B.boundary);return this._fileSize=A[0].fileSize||null,A}const i=await g.getData(),{start:C,end:t,total:Q}=qA(g.getHeader("content-range"));this._fileSize=Q||null;const E=[{data:i,offset:C,length:t+1-C}];if(A.length>1){const g=await Promise.all(A.slice(1).map(A=>this.fetchSlice(A,I)));return E.concat(g)}return E}{if(!this.allowFullFile)throw new Error("Server responded with full file");const A=await g.getData();return this._fileSize=A.byteLength,[{data:A,offset:0,length:A.byteLength}]}}throw new Error("Error fetching data.")}async fetchSlice(A,I){const{offset:g,length:e}=A,B=await this.client.request({headers:{...this.headers,Range:`bytes=${g}-${g+e-1}`},signal:I});if(B.ok){if(206===B.status){const A=await B.getData(),{total:I}=qA(B.getHeader("content-range"));return this._fileSize=I||null,{data:A,offset:g,length:e}}{if(!this.allowFullFile)throw new Error("Server responded with full file");const A=await B.getData();return this._fileSize=A.byteLength,{data:A,offset:0,length:A.byteLength}}}throw new Error("Error fetching data.")}get fileSize(){return this._fileSize}}function iI(A,{blockSize:I,cacheSize:g}){return void 0===I?A:new jA(A,{blockSize:I,cacheSize:g})}function CI(A,{forceXHR:I=!1,...g}={}){return"function"!=typeof fetch||I?"undefined"!=typeof XMLHttpRequest?function(A,{headers:I={},maxRanges:g=0,allowFullFile:e=!1,...B}={}){const i=new AI(A);return iI(new BI(i,{headers:I,maxRanges:g,allowFullFile:e}),B)}(A,g):function(A,{headers:I={},maxRanges:g=0,allowFullFile:e=!1,...B}={}){const i=new eI(A);return iI(new BI(i,{headers:I,maxRanges:g,allowFullFile:e}),B)}(A,g):function(A,{headers:I={},credentials:g,maxRanges:e=0,allowFullFile:B=!1,...i}={}){const C=new XA(A,g);return iI(new BI(C,{headers:I,maxRanges:e,allowFullFile:B}),i)}(A,g)}class tI extends xA{constructor(A){super(),this.arrayBuffer=A}fetchSlice(A,I){if(I&&I.aborted)throw new OA("Request aborted");return Promise.resolve({data:this.arrayBuffer.slice(A.offset,A.offset+A.length),offset:A.offset,length:A.length})}}function QI(A,I){switch(A){case eA.BYTE:case eA.ASCII:case eA.UNDEFINED:return new Uint8Array(I);case eA.SBYTE:return new Int8Array(I);case eA.SHORT:return new Uint16Array(I);case eA.SSHORT:return new Int16Array(I);case eA.LONG:case eA.IFD:return new Uint32Array(I);case eA.SLONG:return new Int32Array(I);case eA.LONG8:case eA.IFD8:case eA.SLONG8:return new Array(I);case eA.RATIONAL:return new Uint32Array(2*I);case eA.SRATIONAL:return new Int32Array(2*I);case eA.FLOAT:return new Float32Array(I);case eA.DOUBLE:return new Float64Array(I);default:throw new RangeError(`Invalid field type: ${A}`)}}function EI(A,I){switch(I){case eA.BYTE:case eA.ASCII:case eA.UNDEFINED:return A.readUint8;case eA.SBYTE:return A.readInt8;case eA.SHORT:return A.readUint16;case eA.SSHORT:return A.readInt16;case eA.LONG:case eA.IFD:return A.readUint32;case eA.SLONG:return A.readInt32;case eA.LONG8:case eA.IFD8:return A.readUint64;case eA.SLONG8:return A.readInt64;case eA.RATIONAL:return A.readUint32;case eA.SRATIONAL:return A.readInt32;case eA.FLOAT:return A.readFloat32;case eA.DOUBLE:return A.readFloat64;default:throw new RangeError(`Invalid field type: ${I}`)}}function sI(A=null,I,g,e,B,i,C=!1){const t=iA(e),Q=A||QI(e,B),E=e===eA.RATIONAL||e===eA.SRATIONAL;if(E)for(let A=0;A<B;A+=2)Q[A]=I.call(g,i+A*t),Q[A+1]=I.call(g,i+(A*t+4));else for(let A=0;A<B;++A)Q[A]=I.call(g,i+A*t);return e===eA.ASCII?new TextDecoder("utf-8").decode(Q):1!==B||C||E?Q:Q[0]}class oI{constructor(A,I,g,e,B){this.source=A,this.arrayOffset=I,this.littleEndian=g,this.fieldType=e,this.length=B,this.data=QI(e,B),this.itemSize=iA(e),this.maskBitmap=new Uint8Array(Math.ceil(B/8)),this.fetchIndexPromises=new Map,this.fullFetchPromise=null}async loadAll(){return this.fullFetchPromise||(this.fullFetchPromise=this.source.fetch([{offset:this.arrayOffset,length:this.itemSize*this.length}]).then(A=>{const I=new KA(A[0],this.arrayOffset,!0,!1),g=sI(this.data,EI(I,this.fieldType),I,this.fieldType,this.length,this.arrayOffset,!0);return this.maskBitmap.fill(255),this.fetchIndexPromises.clear(),g})),this.fullFetchPromise}async get(A){if(A<0||A>=this.data.length)throw new RangeError(`Index ${A} out of bounds for length ${this.data.length}`);const I=Math.floor(A/8),g=1<<A%8,e=this.arrayOffset+A*this.itemSize;if(0===(this.maskBitmap[I]&g)){if(!this.fetchIndexPromises.has(A)){const B=this.source.fetch([{offset:e,length:this.itemSize}]).then(B=>{const i=new KA(B[0],this.arrayOffset+A*this.itemSize,!0,!1),C=EI(i,this.fieldType).call(i,e);return this.data[A]=C,this.maskBitmap[I]|=g,this.fetchIndexPromises.delete(A),C});this.fetchIndexPromises.set(A,B)}return this.fetchIndexPromises.get(A)}return this.data[A]}}class aI{constructor(A,I,g,e){this.actualizedFields=A,this.deferredFields=I,this.deferredFieldsBeingResolved=new Map,this.deferredArrays=g,this.nextIFDByteOffset=e}hasTag(A){const I=sA(A);return this.actualizedFields.has(I)||this.deferredFields.has(I)||this.deferredArrays.has(I)}getValue(A){const I=sA(A);if(this.deferredFields.has(I)||this.deferredArrays.has(I)){const A=QA[I];throw new Error(`Field '${A?.name||`Tag${I}`}' (${I}) is deferred. Use loadValue() to load it asynchronously.`)}if(this.actualizedFields.has(I))return this.actualizedFields.get(I)}async loadValue(A){const I=sA(A);if(this.actualizedFields.has(I))return this.actualizedFields.get(I);if(this.deferredFieldsBeingResolved.has(I))return this.deferredFieldsBeingResolved.get(I);const g=this.deferredFields.get(I);if(g){this.deferredFields.delete(I);const A=(async()=>{try{const A=await g();return this.actualizedFields.set(I,A),A}finally{this.deferredFieldsBeingResolved.delete(I)}})();return this.deferredFieldsBeingResolved.set(I,A),A}const e=this.deferredArrays.get(I);return e?e.loadAll():void 0}async loadValueIndexed(A,I){const g=sA(A);if(this.actualizedFields.has(g)){return this.actualizedFields.get(g)[I]}if(this.deferredArrays.has(g)){return this.deferredArrays.get(g).get(I)}if(this.hasTag(g)){const A=await this.loadValue(g);if(A&&"number"!=typeof A)return A[I]}}parseGeoKeyDirectory(){const A=this.getValue("GeoKeyDirectory");if(!A)return null;const I={};for(let g=4;g<=4*A[3];g+=4){const e=SA[A[g]],B=A[g+1]||null,i=A[g+2],C=A[g+3];let t=null;if(B){if(t=this.getValue(B),null==t)throw new Error(`Could not get value of geoKey '${e}'.`);"string"==typeof t?t=t.substring(C,C+i-1):t.subarray&&(t=t.subarray(C,C+i),1===i&&(t=t[0]))}else t=C;I[e]=t}return I}toObject(){const A={};for(const[I,g]of this.actualizedFields.entries()){const e="number"==typeof I?QA[I]:void 0;A[e?e.name:`Tag${I}`]=g}return A}}class rI{constructor(A,I,g,e=!1){this.source=A,this.littleEndian=I,this.bigTiff=g,this.eager=e}async getSlice(A,I){const g=this.bigTiff?4048:1024;return new KA((await this.source.fetch([{offset:A,length:void 0!==I?I:g}]))[0],A,this.littleEndian,this.bigTiff)}async parseFileDirectoryAt(A){const I=this.bigTiff?20:12,g=this.bigTiff?8:2;let e=await this.getSlice(A);const B=this.bigTiff?e.readUint64(A):e.readUint16(A),i=B*(I+(this.bigTiff?16:6));e.covers(A,i)||(e=await this.getSlice(A,i));const C=new Map,t=new Map,Q=new Map;let E=A+(this.bigTiff?8:2);for(let A=0;A<B;E+=I,++A){const A=e.readUint16(E),I=e.readUint16(E+2),g=this.bigTiff?e.readUint64(E+4):e.readUint32(E+4);let B=null,i=null,s=null;const o=iA(I),a=E+(this.bigTiff?12:8),r=QA[A]?.isArray,n=QA[A]?.eager||this.eager;if(o*g<=(this.bigTiff?8:4))B=sI(QI(I,g),EI(e,I),e,I,g,a,r);else{const A=e.readOffset(a),C=iA(I)*g;if(e.covers(A,C))B=sI(QI(I,g),EI(e,I),e,I,g,A,r);else if(n){const e=await this.getSlice(A,C);B=sI(QI(I,g),EI(e,I),e,I,g,A,r)}else r?s=new oI(this.source,A,this.littleEndian,I,g):i=async()=>{const e=await this.getSlice(A,C);return sI(QI(I,g),EI(e,I),e,I,g,A,r)}}null!==B?C.set(A,B):null!==i?t.set(A,i):null!==s&&Q.set(A,s)}const s=e.readOffset(A+g+I*B);return new aI(C,t,Q,s)}}function nI(A,I){let g=A.length-I,e=0;do{for(let g=I;g>0;g--)A[e+I]+=A[e],e++;g-=I}while(g>0)}function hI(A,I,g){let e=0,B=A.length;const i=B/g;for(;B>I;){for(let g=I;g>0;--g)A[e+I]+=A[e],++e;B-=I}const C=A.slice();for(let I=0;I<i;++I)for(let e=0;e<g;++e)A[g*I+e]=C[(g-e-1)*i+I]}class lI{constructor(A){this.parameters=A}decodeBlock(A){throw new Error("decodeBlock not implemented")}async decode(A){const I=await this.decodeBlock(A),{tileWidth:g,tileHeight:e,predictor:B,bitsPerSample:i,planarConfiguration:C}=this.parameters;if(1!==B){return function(A,I,g,e,B,i){if(!I||1===I)return A;for(let A=0;A<B.length;++A){if(B[A]%8!=0)throw new Error("When decoding with predictor, only multiple of 8 bits are supported.");if(B[A]!==B[0])throw new Error("When decoding with predictor, all samples must have the same size.")}const C=B[0]/8,t=2===i?1:B.length;for(let i=0;i<e&&!(i*t*g*C>=A.byteLength);++i){let e;if(2===I){switch(B[0]){case 8:e=new Uint8Array(A,i*t*g*C,t*g*C);break;case 16:e=new Uint16Array(A,i*t*g*C,t*g*C/2);break;case 32:e=new Uint32Array(A,i*t*g*C,t*g*C/4);break;default:throw new Error(`Predictor 2 not allowed with ${B[0]} bits per sample.`)}nI(e,t)}else 3===I&&(e=new Uint8Array(A,i*t*g*C,t*g*C),hI(e,t,C))}return A}(I,B,g,e,Array.isArray(i)||ArrayBuffer.isView(i)?Array.from(i):[i],C)}return I}}function cI(A,I,g,e){let B=null,i=null;const C=iA(I);switch(I){case eA.BYTE:case eA.ASCII:case eA.UNDEFINED:B=new Uint8Array(g),i=A.readUint8;break;case eA.SBYTE:B=new Int8Array(g),i=A.readInt8;break;case eA.SHORT:B=new Uint16Array(g),i=A.readUint16;break;case eA.SSHORT:B=new Int16Array(g),i=A.readInt16;break;case eA.LONG:case eA.IFD:B=new Uint32Array(g),i=A.readUint32;break;case eA.SLONG:B=new Int32Array(g),i=A.readInt32;break;case eA.LONG8:case eA.IFD8:B=new Array(g),i=A.readUint64;break;case eA.SLONG8:B=new Array(g),i=A.readInt64;break;case eA.RATIONAL:B=new Uint32Array(2*g),i=A.readUint32;break;case eA.SRATIONAL:B=new Int32Array(2*g),i=A.readInt32;break;case eA.FLOAT:B=new Float32Array(g),i=A.readFloat32;break;case eA.DOUBLE:B=new Float64Array(g),i=A.readFloat64}if(null===B||null===i)throw new RangeError(`Invalid field type: ${I}`);for(let I=0;I<g;++I)B[I]=i.call(A,e+I*C);return new TextDecoder("utf-8").decode(B)}class DI extends Error{constructor(A){super(`No image at index ${A}`),this.index=A}}class wI{async getImage(A=0){throw new Error("Not implemented")}async getImageCount(){throw new Error("Not implemented")}async readRasters(A={}){const{window:I,width:g,height:e}=A;let{resX:B,resY:i,bbox:C}=A;const t=await this.getImage();let Q=t;const E=await this.getImageCount(),s=t.getBoundingBox();if(I&&C)throw new Error('Both "bbox" and "window" passed.');if(g||e){if(I){const[A,g]=t.getOrigin(),[e,B]=t.getResolution();C=[A+I[0]*e,g+I[1]*B,A+I[2]*e,g+I[3]*B]}const A=C||s;if(g){if(B)throw new Error("Both width and resX passed");B=(A[2]-A[0])/g}if(e){if(i)throw new Error("Both width and resY passed");i=(A[3]-A[1])/e}}if(B||i){const A=[];for(let I=0;I<E;++I){const g=await this.getImage(I),e=g.fileDirectory.getValue("SubfileType"),B=g.fileDirectory.getValue("NewSubfileType");(0===I||2===e||1&(B||0))&&A.push(g)}A.sort((A,I)=>A.getWidth()-I.getWidth());for(let I=0;I<A.length;++I){const g=A[I],e=(s[2]-s[0])/g.getWidth(),C=(s[3]-s[1])/g.getHeight();if(Q=g,B&&B>e||i&&i>C)break}}let o=I;if(C){const[A,I]=t.getOrigin(),[g,e]=Q.getResolution(t);o=[Math.round((C[0]-A)/g),Math.round((C[1]-I)/e),Math.round((C[2]-A)/g),Math.round((C[3]-I)/e)],o=[Math.min(o[0],o[2]),Math.min(o[1],o[3]),Math.max(o[0],o[2]),Math.max(o[1],o[3])]}return Q.readRasters({...A,window:o})}}class yI extends wI{constructor(A,I,g,e,B={}){super(),this.source=A,this.parser=new rI(A,I,g,!1),this.littleEndian=I,this.bigTiff=g,this.firstIFDOffset=e,this.cache=B.cache||!1,this.ifdRequests=[],this.ghostValues=null}async getSlice(A,I){const g=this.bigTiff?4048:1024;return new KA((await this.source.fetch([{offset:A,length:void 0!==I?I:g}]))[0],A,this.littleEndian,this.bigTiff)}async requestIFD(A){if(this.ifdRequests[A])return this.ifdRequests[A];if(0===A)return this.ifdRequests[A]=this.parser.parseFileDirectoryAt(this.firstIFDOffset),this.ifdRequests[A];if(!this.ifdRequests[A-1])try{this.ifdRequests[A-1]=this.requestIFD(A-1)}catch(I){if(I instanceof DI)throw new DI(A);throw I}return this.ifdRequests[A]=(async()=>{const I=this.ifdRequests[A-1];if(!I)throw new Error("Previous IFD request missing");const g=await I;if(0===g.nextIFDByteOffset)throw new DI(A);return this.parser.parseFileDirectoryAt(g.nextIFDByteOffset)})(),this.ifdRequests[A]}async getImage(A=0){return new MA(await this.requestIFD(A),this.littleEndian,this.cache,this.source)}async getImageCount(){let A=0,I=!0;for(;I;)try{await this.requestIFD(A),++A}catch(A){if(!(A instanceof DI))throw A;I=!1}return A}async getGhostValues(){const A=this.bigTiff?16:8;if(null!==this.ghostValues)return this.ghostValues;const I="GDAL_STRUCTURAL_METADATA_SIZE=";let g=await this.getSlice(A,130);if(I===cI(g,eA.ASCII,30,A)){const I=cI(g,eA.ASCII,130,A).split("\n")[0],e=Number(I.split("=")[1].split(" ")[0])+I.length;e>130&&(g=await this.getSlice(A,e));const B=cI(g,eA.ASCII,e,A),i={};B.split("\n").filter(A=>A.length>0).map(A=>A.split("=")).forEach(([A,I])=>{i[A]=I}),this.ghostValues=i}return this.ghostValues}static async fromSource(A,I,g){const e=(await A.fetch([{offset:0,length:1024}],g))[0],B=new mA(e),i=B.getUint16(0,!1);let C;if(18761===i)C=!0;else{if(19789!==i)throw new TypeError("Invalid byte order value.");C=!1}const t=B.getUint16(2,C);let Q;if(42===t)Q=!1;else{if(43!==t)throw new TypeError("Invalid magic number.");Q=!0;if(8!==B.getUint16(4,C))throw new Error("Unsupported offset byte-size.")}const E=Q?B.getUint64(8,C):B.getUint32(4,C);return new yI(A,C,Q,E,I)}close(){return"function"==typeof this.source.close&&this.source.close()}}async function dI(A,I){return yI.fromSource(function(A){return new tI(A)}(A),void 0,I)}const fI={type:"image",blockSize:65536,format:void 0,useChannel:null,useChannelIndex:null,noDataValue:void 0,multiplier:1,verticalExaggeration:1,numOfChannels:void 0,planarConfig:void 0,tesselator:"martini",terrainColor:[200,200,200,255],terrainSkirtHeight:100,terrainMinValue:0,useHeatMap:!0,useColorsBasedOnValues:!1,useColorClasses:!1,useAutoRange:!1,useDataForOpacity:!1,useSingleColor:!1,blurredTexture:!0,clipLow:null,clipHigh:null,color:[255,0,255,255],colorScale:B.brewer.YlOrRd,colorScaleValueRange:[0,255],colorsBasedOnValues:void 0,colorClasses:void 0,alpha:100,maxGlazeAlpha:128,nullColor:[0,0,0,0],unidentifiedColor:[0,0,0,0],clippedColor:[0,0,0,0],useSlope:!1,useHillshade:!1,hillshadeAzimuth:315,hillshadeAltitude:45,zFactor:1,useSwissRelief:!1,swissSlopeWeight:.5,useReliefGlaze:!1,disableLighting:!1};class SI{constructor(A=257){this.gridSize=A;const I=A-1;if(I&I-1)throw new Error(`Expected grid size to be 2^n+1, got ${A}.`);this.numTriangles=I*I*2-2,this.numParentTriangles=this.numTriangles-I*I,this.indices=new Uint32Array(this.gridSize*this.gridSize),this.coords=new Uint16Array(4*this.numTriangles);for(let A=0;A<this.numTriangles;A++){let g=A+2,e=0,B=0,i=0,C=0,t=0,Q=0;for(1&g?i=C=t=I:e=B=Q=I;(g>>=1)>1;){const A=e+i>>1,I=B+C>>1;1&g?(i=e,C=B,e=t,B=Q):(e=i,B=C,i=t,C=Q),t=A,Q=I}const E=4*A;this.coords[E+0]=e,this.coords[E+1]=B,this.coords[E+2]=i,this.coords[E+3]=C}}createTile(A){return new uI(A,this)}}class uI{constructor(A,I){const g=I.gridSize;if(A.length!==g*g)throw new Error(`Expected terrain data of length ${g*g} (${g} x ${g}), got ${A.length}.`);this.terrain=A,this.martini=I,this.errors=new Float32Array(A.length),this.update()}update(){const{numTriangles:A,numParentTriangles:I,coords:g,gridSize:e}=this.martini,{terrain:B,errors:i}=this;for(let C=A-1;C>=0;C--){const A=4*C,t=g[A+0],Q=g[A+1],E=g[A+2],s=g[A+3],o=t+E>>1,a=Q+s>>1,r=o+a-Q,n=a+t-o,h=(B[Q*e+t]+B[s*e+E])/2,l=a*e+o,c=Math.abs(h-B[l]);if(i[l]=Math.max(i[l],c),C<I){const A=(Q+n>>1)*e+(t+r>>1),I=(s+n>>1)*e+(E+r>>1);i[l]=Math.max(i[l],i[A],i[I])}}}getMesh(A=0){const{gridSize:I,indices:g}=this.martini,{errors:e}=this;let B=0,i=0;const C=I-1;function t(C,Q,E,s,o,a){const r=C+E>>1,n=Q+s>>1;Math.abs(C-o)+Math.abs(Q-a)>1&&e[n*I+r]>A?(t(o,a,C,Q,r,n),t(E,s,o,a,r,n)):(g[Q*I+C]=g[Q*I+C]||++B,g[s*I+E]=g[s*I+E]||++B,g[a*I+o]=g[a*I+o]||++B,i++)}g.fill(0),t(0,0,C,C,C,0),t(C,C,0,0,0,C);const Q=new Uint16Array(2*B),E=new Uint32Array(3*i);let s=0;function o(B,i,C,t,a,r){const n=B+C>>1,h=i+t>>1;if(Math.abs(B-a)+Math.abs(i-r)>1&&e[h*I+n]>A)o(a,r,B,i,n,h),o(C,t,a,r,n,h);else{const A=g[i*I+B]-1,e=g[t*I+C]-1,o=g[r*I+a]-1;Q[2*A]=B,Q[2*A+1]=i,Q[2*e]=C,Q[2*e+1]=t,Q[2*o]=a,Q[2*o+1]=r,E[s++]=A,E[s++]=e,E[s++]=o}}return o(0,0,C,C,C,0),o(C,C,0,0,0,C),{vertices:Q,triangles:E}}}function GI(A,I,g,e,B,i){return(g-B)*(I-i)-(e-i)*(A-B)}class NI{constructor(A,I,g=I){this.data=A,this.width=I,this.height=g,this.coords=[],this.triangles=[],this._halfedges=[],this._candidates=[],this._queueIndices=[],this._queue=[],this._errors=[],this._rms=[],this._pending=[],this._pendingLen=0,this._rmsSum=0;const e=I-1,B=g-1,i=this._addPoint(0,0),C=this._addPoint(e,0),t=this._addPoint(0,B),Q=this._addPoint(e,B),E=this._addTriangle(Q,i,t,-1,-1,-1);this._addTriangle(i,Q,C,E,-1,-1),this._flush()}run(A=1){for(;this.getMaxError()>A;)this.refine()}refine(){this._step(),this._flush()}getMaxError(){return this._errors[0]}getRMSD(){return this._rmsSum>0?Math.sqrt(this._rmsSum/(this.width*this.height)):0}heightAt(A,I){return this.data[this.width*I+A]}_flush(){const{coords:A}=this;for(let I=0;I<this._pendingLen;I++){const g=this._pending[I],e=2*this.triangles[3*g+0],B=2*this.triangles[3*g+1],i=2*this.triangles[3*g+2];this._findCandidate(A[e],A[e+1],A[B],A[B+1],A[i],A[i+1],g)}this._pendingLen=0}_findCandidate(A,I,g,e,B,i,C){const t=Math.min(A,g,B),Q=Math.min(I,e,i),E=Math.max(A,g,B),s=Math.max(I,e,i);let o=GI(g,e,B,i,t,Q),a=GI(B,i,A,I,t,Q),r=GI(A,I,g,e,t,Q);const n=e-I,h=A-g,l=i-e,c=g-B,D=I-i,w=B-A,y=GI(A,I,g,e,B,i),d=this.heightAt(A,I)/y,f=this.heightAt(g,e)/y,S=this.heightAt(B,i)/y;let u=0,G=0,N=0,F=0;for(let A=Q;A<=s;A++){let I=0;o<0&&0!==l&&(I=Math.max(I,Math.floor(-o/l))),a<0&&0!==D&&(I=Math.max(I,Math.floor(-a/D))),r<0&&0!==n&&(I=Math.max(I,Math.floor(-r/n)));let g=o+l*I,e=a+D*I,B=r+n*I,i=!1;for(let C=t+I;C<=E;C++){if(g>=0&&e>=0&&B>=0){i=!0;const I=d*g+f*e+S*B,t=Math.abs(I-this.heightAt(C,A));F+=t*t,t>u&&(u=t,G=C,N=A)}else if(i)break;g+=l,e+=D,B+=n}o+=c,a+=w,r+=h}(G===A&&N===I||G===g&&N===e||G===B&&N===i)&&(u=0),this._candidates[2*C]=G,this._candidates[2*C+1]=N,this._rms[C]=F,this._queuePush(C,u,F)}_step(){const A=this._queuePop(),I=3*A+0,g=3*A+1,e=3*A+2,B=this.triangles[I],i=this.triangles[g],C=this.triangles[e],t=this.coords[2*B],Q=this.coords[2*B+1],E=this.coords[2*i],s=this.coords[2*i+1],o=this.coords[2*C],a=this.coords[2*C+1],r=this._candidates[2*A],n=this._candidates[2*A+1],h=this._addPoint(r,n);if(0===GI(t,Q,E,s,r,n))this._handleCollinear(h,I);else if(0===GI(E,s,o,a,r,n))this._handleCollinear(h,g);else if(0===GI(o,a,t,Q,r,n))this._handleCollinear(h,e);else{const A=this._halfedges[I],t=this._halfedges[g],Q=this._halfedges[e],E=this._addTriangle(B,i,h,A,-1,-1,I),s=this._addTriangle(i,C,h,t,-1,E+1),o=this._addTriangle(C,B,h,Q,E+2,s+1);this._legalize(E),this._legalize(s),this._legalize(o)}}_addPoint(A,I){const g=this.coords.length>>1;return this.coords.push(A,I),g}_addTriangle(A,I,g,e,B,i,C=this.triangles.length){const t=C/3;return this.triangles[C+0]=A,this.triangles[C+1]=I,this.triangles[C+2]=g,this._halfedges[C+0]=e,this._halfedges[C+1]=B,this._halfedges[C+2]=i,e>=0&&(this._halfedges[e]=C+0),B>=0&&(this._halfedges[B]=C+1),i>=0&&(this._halfedges[i]=C+2),this._candidates[2*t+0]=0,this._candidates[2*t+1]=0,this._queueIndices[t]=-1,this._rms[t]=0,this._pending[this._pendingLen++]=t,C}_legalize(A){const I=this._halfedges[A];if(I<0)return;const g=A-A%3,e=I-I%3,B=g+(A+1)%3,i=g+(A+2)%3,C=e+(I+2)%3,t=e+(I+1)%3,Q=this.triangles[i],E=this.triangles[A],s=this.triangles[B],o=this.triangles[C],{coords:a}=this;if(!function(A,I,g,e,B,i,C,t){const Q=A-C,E=I-t,s=g-C,o=e-t,a=B-C,r=i-t,n=s*s+o*o,h=a*a+r*r;return Q*(o*h-n*r)-E*(s*h-n*a)+(Q*Q+E*E)*(s*r-o*a)<0}(a[2*Q],a[2*Q+1],a[2*E],a[2*E+1],a[2*s],a[2*s+1],a[2*o],a[2*o+1]))return;const r=this._halfedges[B],n=this._halfedges[i],h=this._halfedges[C],l=this._halfedges[t];this._queueRemove(g/3),this._queueRemove(e/3);const c=this._addTriangle(Q,o,s,-1,h,r,g),D=this._addTriangle(o,Q,E,c,n,l,e);this._legalize(c+1),this._legalize(D+2)}_handleCollinear(A,I){const g=I-I%3,e=g+(I+1)%3,B=g+(I+2)%3,i=this.triangles[B],C=this.triangles[I],t=this.triangles[e],Q=this._halfedges[e],E=this._halfedges[B],s=this._halfedges[I];if(s<0){const I=this._addTriangle(A,i,C,-1,E,-1,g),e=this._addTriangle(i,A,t,I,-1,Q);return this._legalize(I+1),void this._legalize(e+2)}const o=s-s%3,a=o+(s+2)%3,r=o+(s+1)%3,n=this.triangles[a],h=this._halfedges[a],l=this._halfedges[r];this._queueRemove(o/3);const c=this._addTriangle(i,C,A,E,-1,-1,g),D=this._addTriangle(C,n,A,l,-1,c+1,o),w=this._addTriangle(n,t,A,h,-1,D+1),y=this._addTriangle(t,i,A,Q,c+2,w+1);this._legalize(c),this._legalize(D),this._legalize(w),this._legalize(y)}_queuePush(A,I,g){const e=this._queue.length;this._queueIndices[A]=e,this._queue.push(A),this._errors.push(I),this._rmsSum+=g,this._queueUp(e)}_queuePop(){const A=this._queue.length-1;return this._queueSwap(0,A),this._queueDown(0,A),this._queuePopBack()}_queuePopBack(){const A=this._queue.pop();return this._errors.pop(),this._rmsSum-=this._rms[A],this._queueIndices[A]=-1,A}_queueRemove(A){const I=this._queueIndices[A];if(I<0){const I=this._pending.indexOf(A);if(-1===I)throw new Error("Broken triangulation (something went wrong).");return void(this._pending[I]=this._pending[--this._pendingLen])}const g=this._queue.length-1;g!==I&&(this._queueSwap(I,g),this._queueDown(I,g)||this._queueUp(I)),this._queuePopBack()}_queueLess(A,I){return this._errors[A]>this._errors[I]}_queueSwap(A,I){const g=this._queue[A],e=this._queue[I];this._queue[A]=e,this._queue[I]=g,this._queueIndices[g]=I,this._queueIndices[e]=A;const B=this._errors[A];this._errors[A]=this._errors[I],this._errors[I]=B}_queueUp(A){let I=A;for(;;){const A=I-1>>1;if(A===I||!this._queueLess(I,A))break;this._queueSwap(A,I),I=A}}_queueDown(A,I){let g=A;for(;;){const A=2*g+1;if(A>=I||A<0)break;const e=A+1;let B=A;if(e<I&&this._queueLess(e,A)&&(B=e),!this._queueLess(B,g))break;this._queueSwap(g,B),g=B}return g>A}}function FI(A,I,g,e){const B=function(A){const I=new Map,g=(A,g)=>{const e=Math.min(A,g),B=Math.max(A,g),i=BigInt(e)<<32n|BigInt(B);I.has(i)?I.delete(i):I.set(i,[A,g])};for(let I=0;I<A.length;I+=3){const e=A[I],B=A[I+1],i=A[I+2];g(e,B),g(B,i),g(i,e)}return Array.from(I.values())}(I),i=new A.POSITION.value.constructor(6*B.length),t=new A.TEXCOORD_0.value.constructor(4*B.length),Q=new I.constructor(6*B.length);for(let I=0;I<B.length;I++){kI({edge:B[I],edgeIndex:I,attributes:A,skirtHeight:g,newPosition:i,newTexcoord0:t,newTriangles:Q})}A.POSITION.value=C.concatenateTypedArrays(A.POSITION.value,i),A.TEXCOORD_0.value=C.concatenateTypedArrays(A.TEXCOORD_0.value,t);return{attributes:A,triangles:I instanceof Array?I.concat(Q):C.concatenateTypedArrays(I,Q)}}function kI({edge:A,edgeIndex:I,attributes:g,skirtHeight:e,newPosition:B,newTexcoord0:i,newTriangles:C}){const t=g.POSITION.value.length,Q=2*I,E=2*I+1;B.set(g.POSITION.value.subarray(3*A[0],3*A[0]+3),3*Q),B[3*Q+2]=B[3*Q+2]-e,B.set(g.POSITION.value.subarray(3*A[1],3*A[1]+3),3*E),B[3*E+2]=B[3*E+2]-e,i.set(g.TEXCOORD_0.value.subarray(2*A[0],2*A[0]+2),2*Q),i.set(g.TEXCOORD_0.value.subarray(2*A[1],2*A[1]+2),2*E);const s=2*I*3;C[s]=A[0],C[s+1]=t/3+E,C[s+2]=A[1],C[s+3]=t/3+E,C[s+4]=A[0],C[s+5]=t/3+Q}function RI(A,I,g,e,B){return g===I?e:(A-I)*(B-e)/(g-I)+e}class LI{static _swissColorLUTCache=new Map;static _8bitLUTCache=new Map;static _floatLUTCache=new Map;static getLUTCacheKey(A,I,g,e){return`${I}_${g}_${e}_${JSON.stringify(A.colorScale)}_${A.useSingleColor}_${JSON.stringify(A.color)}_${A.useColorClasses}_${JSON.stringify(A.colorClasses)}_${A.useColorsBasedOnValues}_${JSON.stringify(A.colorsBasedOnValues)}_${A.useHeatMap}_${A.clipLow??""}_${A.clipHigh??""}_${JSON.stringify(A.clippedColor)}_${JSON.stringify(A.nullColor)}_${JSON.stringify(A.unidentifiedColor)}`}static async generate(A,I){const g={...I},{rasters:e,width:B,height:i}=A,C=1===e.length,t=document.createElement("canvas");t.width=B,t.height=i;const Q=t.getContext("2d"),E=Q.createImageData(B,i),s=B*i*4,o=Math.floor(2.55*g.alpha);g.unidentifiedColor=this.getColorFromChromaType(g.unidentifiedColor,o),g.nullColor=this.getColorFromChromaType(g.nullColor,o),g.clippedColor=this.getColorFromChromaType(g.clippedColor,o),g.color=this.getColorFromChromaType(g.color,o),g.useChannelIndex??=null==g.useChannel?null:g.useChannel-1;const a=g.numOfChannels??(1===e.length?e[0].length/(B*i):e.length);if(g.useReliefGlaze)if(e.length>=1)E.data.set(this.getReliefGlazeRGBA(e,g,s));else{const A=new Uint8ClampedArray(s);A.fill(0),E.data.set(A)}else if(g.useSwissRelief)if(2===e.length)E.data.set(this.getColorValue(e,g,s));else{this.getDefaultColor(s,g.nullColor).forEach((A,I)=>{E.data[I]=A})}else if(null==g.useChannelIndex)if(C){const A=e[0].length/(B*i);if(1===A)g.useAutoRange&&(g.colorScaleValueRange=this.getMinMax(e[0],g)),E.data.set(this.getColorValue(e[0],g,s));else if(3===A||4===A){let I=0;for(let B=0;B<s;B+=4){const i=[e[0][I],e[0][I+1],e[0][I+2]],C=this.hasPixelsNoData(i,g.noDataValue);E.data[B]=C?g.nullColor[0]:i[0],E.data[B+1]=C?g.nullColor[1]:i[1],E.data[B+2]=C?g.nullColor[2]:i[2],E.data[B+3]=C?g.nullColor[3]:4===A?e[0][I+3]:o,I+=A}}}else{let A=0;for(let I=0;I<s;I+=4)E.data[I]=e[0][A],E.data[I+1]=e[1][A],E.data[I+2]=e[2][A],E.data[I+3]=4===e.length?e[3][A]:o,A++}else if(g.useChannelIndex<a&&g.useChannelIndex>=0){const A=1===e.length&&a>1,I=A?e[0]:e[g.useChannelIndex]??e[0],B=A?a:1;g.useAutoRange&&(g.colorScaleValueRange=this.getMinMax(I,g,B)),E.data.set(this.getColorValue(I,g,s,B))}else{console.log(`Defined channel(${I.useChannel}) or channel index(${I.useChannelIndex}) does not exist, choose a different channel or set the useChannel property to null if you want to visualize RGB(A) imagery`);this.getDefaultColor(s,g.nullColor).forEach((A,I)=>{E.data[I]=A})}Q.putImageData(E,0,0);return{map:await createImageBitmap(t),raw:e[0],width:B,height:i}}static getColorValue(A,I,g,e=1){const i=B.scale(I.colorScale?.map(A=>Array.isArray(A)?B(A):A)).domain(I.colorScaleValueRange??[0,255]),C=new Uint8ClampedArray(g),t=Math.floor(2.55*(I.alpha??100)),Q=I.colorScaleValueRange?.[0]??0,E=I.colorScaleValueRange?.[1]??255,s=Array.isArray(A),o=s?A[0]:A,a=I.useSwissRelief&&s&&A.length>=2,r=o instanceof Uint8Array||o instanceof Uint8ClampedArray,n=!r&&(o instanceof Float32Array||o instanceof Uint16Array||o instanceof Int16Array);if(a){const B=A[1],s=E-Q||1;let a=null;if(I.useHeatMap){const A=1024,g=`${Q}_${E}_${t}_${JSON.stringify(I.colorScale)}`;if(a=this._swissColorLUTCache.get(g)||null,!a){a=new Uint8ClampedArray(4*A);for(let I=0;I<A;I++){const g=i(Q+I/(A-1)*s).rgb();a[4*I]=g[0],a[4*I+1]=g[1],a[4*I+2]=g[2],a[4*I+3]=t}this._swissColorLUTCache.set(g,a)}}for(let A=0,E=I.useChannelIndex??0;A<g;A+=4,E+=e){const g=o[E],e=void 0!==I.noDataValue&&(Number.isNaN(I.noDataValue)?Number.isNaN(g):g===I.noDataValue);if(Number.isNaN(g)||e){C.set(I.nullColor,A);continue}let r;if(a){const A=(g-Q)/s,I=4*Math.min(1023,Math.max(0,Math.floor(1023*A)));r=[a[I],a[I+1],a[I+2],a[I+3]]}else r=this.calculateSingleColor(g,i,I,t);const n=.4+B[E]/255*.6;C[A]=Math.floor(r[0]*n),C[A+1]=Math.floor(r[1]*n),C[A+2]=Math.floor(r[2]*n),C[A+3]=r[3]}return C}if(r&&!I.useDataForOpacity){const A=I.useAutoRange?null:this.getLUTCacheKey(I,Q,E,t);let B=A?this._8bitLUTCache.get(A)??null:null;if(!B){B=new Uint8ClampedArray(1024);for(let A=0;A<256;A++)null!=I.clipLow&&A<=I.clipLow||null!=I.clipHigh&&A>=I.clipHigh?B.set(I.clippedColor,4*A):B.set(this.calculateSingleColor(A,i,I,t),4*A);A&&this._8bitLUTCache.set(A,B)}for(let A=0,i=I.useChannelIndex??0;A<g;A+=4,i+=e){const I=4*o[i];C[A]=B[I],C[A+1]=B[I+1],C[A+2]=B[I+2],C[A+3]=B[I+3]}return C}if(n&&I.useHeatMap&&!I.useSingleColor&&!I.useColorClasses&&!I.useColorsBasedOnValues&&!I.useDataForOpacity){const A=1024,B=E-Q||1,s=I.useAutoRange?null:this.getLUTCacheKey(I,Q,E,t);let a=s?this._floatLUTCache.get(s)??null:null;if(!a){a=new Uint8ClampedArray(4*A);for(let g=0;g<A;g++){const e=Q+g/(A-1)*B;if(null!=I.clipLow&&e<=I.clipLow||null!=I.clipHigh&&e>=I.clipHigh)a.set(I.clippedColor,4*g);else{const A=i(e).rgb();a[4*g]=A[0],a[4*g+1]=A[1],a[4*g+2]=A[2],a[4*g+3]=t}}s&&this._floatLUTCache.set(s,a)}for(let i=0,t=I.useChannelIndex??0;i<g;i+=4,t+=e){const g=o[t];if(this.isInvalid(g,I))C.set(this.getInvalidColor(g,I),i);else{const I=(g-Q)/B,e=4*Math.min(A-1,Math.max(0,Math.floor(I*(A-1))));C[i]=a[e],C[i+1]=a[e+1],C[i+2]=a[e+2],C[i+3]=a[e+3]}}return C}let h=I.useChannelIndex??0;for(let A=0;A<g;A+=4){const g=o[h];let B;B=null!=I.clipLow&&g<=I.clipLow||null!=I.clipHigh&&g>=I.clipHigh?I.clippedColor:this.calculateSingleColor(g,i,I,t),I.useDataForOpacity&&!this.isInvalid(g,I)&&(B[3]=RI(g,Q,E,0,255)),C.set(B,A),h+=e}return C}static getReliefGlazeRGBA(A,I,g){const e=A[0],B=(I.maxGlazeAlpha??128)/255,i=new Uint8Array(256);for(let A=0;A<256;A++)if(0===A)i[A]=0;else{const I=Math.abs(A-128)/128,g=A<128?.6:.8;i[A]=Math.floor(255*Math.pow(I,g)*B)}const C=new Uint8ClampedArray(g);let t=0;for(let A=0;A<g;A+=4){const I=e[t],g=I<128?0:255,B=i[I];C[A]=g,C[A+1]=g,C[A+2]=g,C[A+3]=B,t++}return C}static calculateSingleColor(A,I,g,e){if(this.isInvalid(A,g))return g.nullColor;if(g.useSingleColor)return g.color;if(g.useColorClasses){const I=this.findClassIndex(A,g);return I>-1?[...B(Array.isArray(g.colorClasses[I][0])?B(g.colorClasses[I][0]):g.colorClasses[I][0]).rgb(),e]:g.unidentifiedColor}if(g.useColorsBasedOnValues){const I=g.colorsBasedOnValues?.find(([I])=>I===A);return I?[...B(Array.isArray(I[1])?B(I[1]):I[1]).rgb(),e]:g.unidentifiedColor}return g.useHeatMap?[...I(A).rgb(),e]:g.unidentifiedColor}static findClassIndex(A,I){if(!I.colorClasses)return-1;for(let g=0;g<I.colorClasses.length;g++){const[,[e,B],i]=I.colorClasses[g],[C,t]=i||(g===I.colorClasses.length-1?[!0,!0]:[!0,!1]);if((C?A>=e:A>e)&&(t?A<=B:A<B))return g}return-1}static getDefaultColor(A,I){const g=new Uint8ClampedArray(A);for(let e=0;e<A;e+=4)[g[e],g[e+1],g[e+2],g[e+3]]=I;return g}static isInvalid(A,I){return Number.isNaN(A)||void 0!==I.noDataValue&&A===I.noDataValue}static getInvalidColor(A,I){return I.nullColor}static getMinMax(A,I,g=1){let e=-1/0,B=1/0;for(let i=I.useChannelIndex??0;i<A.length;i+=g){const g=A[i];this.isInvalid(g,I)||(g>e&&(e=g),g<B&&(B=g))}return e===-1/0?I.colorScaleValueRange||[0,255]:[B,e]}static getColorFromChromaType(A,I=255){return Array.isArray(A)&&4===A.length?A:[...B(A).rgb(),I]}static hasPixelsNoData(A,I){return void 0!==I&&A.every(A=>A===I)}}class UI{static computeGradients(A,I,g,e,B,i,C,t,Q,E=!0){return{dzdx:(g+2*B+t-(A+2*e+i))*Q,dzdy:E?(A+2*I+g-(i+2*C+t))*Q:(i+2*C+t-(A+2*I+g))*Q}}static calculateSlope(A,I,g=1,e){const B=256,i=258,C=new Float32Array(65536),t=1/(8*I),Q=180/Math.PI,E=void 0!==e&&Number.isNaN(e);for(let I=0;I<B;I++)for(let s=0;s<B;s++){const o=I*i+s,a=A[o+i+1];if(void 0!==e&&(E?Number.isNaN(a):a===e)){C[I*B+s]=NaN;continue}const r=A[o],n=A[o+1],h=A[o+2],l=A[o+i],c=A[o+i+2],D=A[o+516],w=A[o+516+1],y=A[o+516+2],{dzdx:d,dzdy:f}=this.computeGradients(r,n,h,l,c,D,w,y,t,!1),S=Math.atan(g*Math.sqrt(d*d+f*f));C[I*B+s]=S*Q}return C}static calculateHillshade(A,I,g=315,e=45,B=1,i){const C=256,t=258,Q=new Float32Array(65536),E=(90-e)*(Math.PI/180);let s=360-g+90;s>=360&&(s-=360);const o=s*(Math.PI/180),a=1/(8*I),r=void 0!==i&&Number.isNaN(i);for(let I=0;I<C;I++)for(let g=0;g<C;g++){const e=I*t+g,s=A[e+t+1];if(void 0!==i&&(r?Number.isNaN(s):s===i)){Q[I*C+g]=NaN;continue}const n=A[e],h=A[e+1],l=A[e+2],c=A[e+t],D=A[e+t+2],w=A[e+516],y=A[e+516+1],d=A[e+516+2],{dzdx:f,dzdy:S}=this.computeGradients(n,h,l,c,D,w,y,d,a,!0),u=Math.atan(B*Math.sqrt(f*f+S*S)),G=Math.atan2(S,-f),N=255*(Math.cos(E)*Math.cos(u)+Math.sin(E)*Math.sin(u)*Math.cos(o-G));Q[I*C+g]=Math.max(0,Math.min(255,N))}return Q}static calculateMultiHillshade(A,I,g=1,e){const B=256,i=258,C=new Float32Array(65536),t=1/(8*I),Q=void 0!==e&&Number.isNaN(e),E=[{az:315,alt:45,weight:.6},{az:225,alt:35,weight:.25},{az:0,alt:35,weight:.15}].map(A=>{const I=(90-A.alt)*(Math.PI/180);let g=360-A.az+90;return g>=360&&(g-=360),{zCos:Math.cos(I),zSin:Math.sin(I),aRad:g*(Math.PI/180),w:A.weight}});for(let I=0;I<B;I++)for(let s=0;s<B;s++){const o=I*i+s,a=A[o+i+1];if(void 0!==e&&(Q?Number.isNaN(a):a===e)){C[I*B+s]=NaN;continue}const r=A[o],n=A[o+1],h=A[o+2],l=A[o+i],c=A[o+i+2],D=A[o+516],w=A[o+516+1],y=A[o+516+2],{dzdx:d,dzdy:f}=this.computeGradients(r,n,h,l,c,D,w,y,t,!0),S=Math.atan(g*Math.sqrt(d*d+f*f)),u=Math.atan2(f,-d),G=Math.cos(S),N=Math.sin(S);let F=0;for(const A of E){const I=A.zCos*G+A.zSin*N*Math.cos(A.aRad-u);F+=Math.max(0,I)*A.w}C[I*B+s]=Math.min(255,255*F)}return C}}class pI{static _swissReliefLUT=null;static _lastWeight=null;static getSwissReliefLUT(A=.5){if(this._swissReliefLUT&&this._lastWeight===A)return this._swissReliefLUT;const I=new Float32Array(65536);for(let g=0;g<256;g++){const e=g/255;for(let B=0;B<256;B++){const i=1-B/255*A;I[g<<8|B]=Math.max(.01,e*i)}}return this._swissReliefLUT=I,this._lastWeight=A,I}static composeSwissRelief(A,I,g,e,B){const i=I.swissSlopeWeight??.5,C=UI.calculateSlope(A,g,I.zFactor??1,I.noDataValue),t=UI.calculateMultiHillshade(A,g,I.zFactor??1,I.noDataValue),Q=this.getSwissReliefLUT(i),E=new Uint8ClampedArray(e*B),s=255/90;for(let A=0;A<e*B;A++){if(isNaN(C[A])){E[A]=0;continue}const I=Math.max(0,Math.min(255,C[A]*s|0)),g=0|Math.max(0,Math.min(255,t[A]));E[A]=Math.max(1,255*Q[g<<8|I]|0)}return E}}class YI{static async generate(A,I,g){const{width:e,height:B}=A,C=258===e,t=this.computeTerrainData(A,I),Q=C?this.extractMeshRaster(t):t,E=C?257:e,s=C?257:B,{terrainSkirtHeight:o,verticalExaggeration:a=1}=I;let r;switch(I.tesselator){case"martini":default:r=this.getMartiniTileMesh(g,E,Q);break;case"delatin":r=this.getDelatinTileMesh(g,E,s,Q)}const{vertices:n}=r;let{triangles:h}=r,l=this.getMeshAttributes(n,Q,E,s,A.bounds,a);const c=i.getMeshBoundingBox(l);if(o){const A=o*a;if(A>0){const{attributes:I,triangles:g}=FI(l,h,A);l=I,h=g}}const D=257===E?257:E+1,w=257===s?257:s+1,y={map:{loaderData:{header:{}},header:{vertexCount:h.length,boundingBox:c},mode:4,indices:{value:Uint32Array.from(h),size:1},attributes:l},raw:Q,width:D,height:w};if(C&&I.useSwissRelief){const g=A.cellSizeMeters??(A.bounds[2]-A.bounds[0])/256,e=this.preserveNoDataForKernel(t,A.rasters[0],I.noDataValue),B=pI.composeSwissRelief(e,I,g,256,256);if(y.rawDerived=B,this.hasVisualizationOptions(I)){const A=this.cropRaster(Q,D,w,256,256),g=await LI.generate({width:256,height:256,rasters:[A,B]},{...I,type:"image"});y.texture=g.map}}else if(C&&(I.useSlope||I.useHillshade)){const g=A.cellSizeMeters??(A.bounds[2]-A.bounds[0])/256,e=I.zFactor??1;I.useSlope&&I.useHillshade&&console.warn("[TerrainGenerator] useSlope and useHillshade are mutually exclusive; useSlope takes precedence.");const B=this.preserveNoDataForKernel(t,A.rasters[0],I.noDataValue);let i;if(i=I.useSlope?UI.calculateSlope(B,g,e,I.noDataValue):UI.calculateHillshade(B,g,I.hillshadeAzimuth??315,I.hillshadeAltitude??45,e,I.noDataValue),y.rawDerived=i,this.hasVisualizationOptions(I)){const A=await LI.generate({width:256,height:256,rasters:[i]},{...I,type:"image"});y.texture=A.map}}else if(this.hasVisualizationOptions(I)){const A=this.cropRaster(Q,D,w,256,256),g=await LI.generate({width:256,height:256,rasters:[A]},{...I,type:"image"});y.texture=g.map}return y}static extractMeshRaster(A){const I=257,g=new Float32Array(66049);for(let e=0;e<I;e++)for(let B=0;B<I;B++)g[e*I+B]=A[258*(e+1)+(B+1)];return g}static hasVisualizationOptions(A){return!!(A.useSingleColor||A.useHeatMap||A.useSwissRelief||A.useColorsBasedOnValues||A.useColorClasses)}static preserveNoDataForKernel(A,I,g){const e=new Float32Array(A.length);if(null!=g&&I&&I.length===A.length){const B=Number.isNaN(g);for(let i=0;i<A.length;i++){const C=I[i],t=B?Number.isNaN(C):C===g;e[i]=t?g:A[i]}}else e.set(A);return e}static cropRaster(A,I,g,e,B){const i=new Float32Array(e*B);for(let g=0;g<B;g++)for(let B=0;B<e;B++)i[g*e+B]=A[g*I+B];return i}static computeTerrainData(A,I){const{width:g,height:e,rasters:B}=A,i={...I};i.useChannelIndex??=null==i.useChannel?null:i.useChannel-1;const C=B.length>1,t=C?B[i.useChannelIndex??0]??B[0]:B[0],Q=258===g,E=257===g,s=new Float32Array((Q?258:E?257:g+1)*(Q?258:E?257:e+1)),o=C?1:t.length/(g*e);let a=C?0:i.useChannelIndex??0;const r=I.terrainMinValue??0;for(let A=0;A<e;A++)for(let e=0;e<g;e++){const B=I.multiplier??1;let i=void 0!==I.noDataValue&&null!==I.noDataValue&&t[a]===I.noDataValue?r:t[a]*B;(Number.isNaN(i)||i<-34e37||i>34e37)&&(i=r);s[Q||E?A*g+e:A*(g+1)+e]=i,a+=o}if(!Q&&!E){for(let A=(g+1)*g,I=0;I<g;I++,A++)s[A]=s[A-g-1];for(let A=e,I=0;I<e+1;I++,A+=e+1)s[A]=s[A-1]}return s}static getMartiniTileMesh(A,I,g){const e=new SI(257===I?257:I+1).createTile(g),{vertices:B,triangles:i}=e.getMesh(A);return{vertices:B,triangles:i}}static getDelatinTileMesh(A,I,g,e){const B=new NI(e,257===I?257:I+1,257===g?257:g+1);B.run(A);const{coords:i,triangles:C}=B;return{vertices:i,triangles:C}}static getMeshAttributes(A,I,g,e,B,i=1){const C=257===g?257:g+1,t=A.length/2,Q=new Float32Array(3*t),E=new Float32Array(2*t),[s,o,a,r]=B||[0,0,g,e],n=257===g?g-1:g,h=257===e?e-1:e,l=(a-s)/n,c=(r-o)/h;for(let g=0;g<t;g++){const e=A[2*g],B=A[2*g+1],t=B*C+e;Q[3*g]=e*l+s,Q[3*g+1]=-B*c+r,Q[3*g+2]=I[t]*i,E[2*g]=e/n,E[2*g+1]=B/h}return{POSITION:{value:Q,size:3},TEXCOORD_0:{value:E,size:2}}}}class MI{data;async setUrl(A){const I=await fetch(A),g=await I.arrayBuffer(),e=await dI(g),B=await e.getImage(0);this.data=B}async getMap(A,I,g){const e=MI.resolveVisualizationMode({...fI,...I},I);switch(e.type){case"image":return this.getBitmap(A,e);case"terrain":return this.getHeightmap(A,e,g);default:return null}}static resolveVisualizationMode(A,I){const g=["useSingleColor","useColorClasses","useColorsBasedOnValues","useHeatMap"],e=g.filter(A=>!0===I[A]),B={...A};if(e.length>0){for(const A of g)B[A]=!1;for(const A of e)B[A]=!0}else if("terrain"===A.type){I.useSwissRelief||I.useSlope||I.useHillshade||(B.useHeatMap=!1,B.useSingleColor=!0,B.color=A.terrainColor)}return B}async getHeightmap(A,I,g){let e,B,i,C,t=[];return"string"==typeof A?(await this.setUrl(A),t=await this.data.readRasters(),e=this.data.getWidth(),B=this.data.getHeight(),i=this.data.getBoundingBox()):(t=A.rasters,e=A.width,B=A.height,i=A.bounds,C=A.cellSizeMeters),await YI.generate({width:e,height:B,rasters:t,bounds:i,cellSizeMeters:C},I,g)}async getBitmap(A,I){let g,e,B=[];return"string"==typeof A?(await this.setUrl(A),B=await this.data.readRasters(),g=this.data.getWidth(),e=this.data.getHeight()):(B=A.rasters,g=A.width,e=A.height),LI.generate({width:g,height:e,rasters:B},I)}}const mI=2*Math.PI*6378137,KI=mI/2,HI=[-20037508.342789244,20037508.342789244],JI={blurredTexture:!0};class bI{cog;cogZoomLookup=[];cogResolutionLookup=[];cogOrigin=[0,0];zoomRange=[0,0];tileSize=256;bounds=[0,0,0,0];geo=new MI;options;rasterCache=new Map;maxCacheSize=256;getCachedRaster(A){const I=this.rasterCache.get(A);return void 0!==I&&(this.rasterCache.delete(A),this.rasterCache.set(A,I)),I}setCachedRaster(A,I){if(this.rasterCache.set(A,I),this.rasterCache.size>this.maxCacheSize){const A=this.rasterCache.keys().next().value;"string"==typeof A&&this.rasterCache.delete(A)}}imageCache=new Map;initializePromise;lastInitializedUrl;constructor(A){this.options={...JI,...A}}async initializeCog(A){return this.initializePromise?this.initializePromise:(this.lastInitializedUrl!==A&&this.rasterCache.clear(),this.cog?void 0:(this.initializePromise=(async()=>{try{const I=this.options.blockSize??65536;this.cog=await async function(A,I={},g){return yI.fromSource(CI(A,I),void 0,g)}(A,{blockSize:I});const g=this.cog.getImage();this.imageCache.set(0,g);const e=await g,B=e.fileDirectory;if(this.cogOrigin=e.getOrigin(),this.options.noDataValue??=await this.getNoDataValue(e),this.options.format??=await this.getDataTypeFromTags(B),this.options.numOfChannels=B.getValue("SamplesPerPixel"),this.options.planarConfig=B.getValue("PlanarConfiguration"),[this.cogZoomLookup,this.cogResolutionLookup]=await this.buildCogZoomResolutionLookup(this.cog),this.tileSize=e.getTileWidth(),!this.tileSize||!e.getTileHeight())throw new Error('GeoTIFF Error: The provided image is not tiled. Please use "rio cogeo create --web-optimized" to fix this.');this.zoomRange=this.calculateZoomRange(this.tileSize,e.getResolution()[0],await this.cog.getImageCount()),this.bounds=this.calculateBoundsAsLatLon(e.getBoundingBox()),this.lastInitializedUrl=A}catch(I){throw this.initializePromise=void 0,console.error(`[CogTiles] Failed to initialize COG from ${A}:`,I),I}})(),this.initializePromise))}getZoomRange(){return this.zoomRange}calculateZoomRange(A,I,g){const e=this.getZoomLevelFromResolution(A,I);return[e-(g-1),e]}calculateBoundsAsLatLon(A){const I=Math.min(A[0],A[2]),g=Math.max(A[0],A[2]),e=Math.min(A[1],A[3]),B=Math.max(A[1],A[3]),i=this.getLatLon([I,e]),C=this.getLatLon([g,B]);return[i[0],i[1],C[0],C[1]]}getZoomLevelFromResolution(A,I){return Math.round(Math.log2(mI/(I*A)))}getBoundsAsLatLon(){return this.bounds}getLatLon(A){const I=A[0],g=A[1],e=I/KI*180;let B=g/KI*180;return B=180/Math.PI*(2*Math.atan(Math.exp(B*Math.PI/180))-Math.PI/2),[e,B]}async buildCogZoomResolutionLookup(A){const I=await A.getImageCount(),g=await A.getImage(0),e=g.getResolution()[0],B=g.getWidth(),i=[],C=[];for(let g=0;g<I;g++){const I=e*(B/(await A.getImage(g)).getWidth()),t=Math.round(Math.log2(156543.03125/I));i[g]=t,C[g]=I}return[i,C]}getImageIndexForZoomLevel(A){const I=this.cogZoomLookup[this.cogZoomLookup.length-1];if(A>this.cogZoomLookup[0])return 0;if(A<I)return this.cogZoomLookup.length-1;const g=this.cogZoomLookup.indexOf(A);if(-1!==g)return g;let e=0,B=Math.abs(this.cogZoomLookup[0]-A);for(let I=1;I<this.cogZoomLookup.length;I+=1){const g=Math.abs(this.cogZoomLookup[I]-A);g<B&&(B=g,e=I)}return e}async getTileFromImage(A,I,g,e,B){const i=new AbortController;B&&!B.aborted&&B.addEventListener("abort",()=>i.abort(),{once:!0});const C=i.signal,t=`${g}/${A}/${I}/${e??this.tileSize}`,Q=this.getCachedRaster(t);if(Q)return[Q];try{const B=this.getImageIndexForZoomLevel(g);let i=this.imageCache.get(B);i||(i=this.cog.getImage(B),this.imageCache.set(B,i));const Q=await i,E=this.cogResolutionLookup[B],s=Q.getHeight(),o=Q.getWidth(),[a,r]=this.cogOrigin,n=this.tileSize,h=mI/n/2**g,l=(HI[0]+A*n*h-a)/E,c=(r-(HI[1]-I*n*h))/E,D=e||n,w=Math.round(l),y=Math.round(c),d=w+D,f=y+D,S=Math.max(0,w),u=Math.max(0,y),G=Math.min(o,d),N=Math.min(s,f),F=G-S,k=N-u;if(F<=0||k<=0)return[this.createEmptyTile(D)];const R=S-w,L=u-y,U=[S,u,G,N];if(R>0||L>0||F<D||k<D){const A=this.options.numOfChannels||1,I=this.createTileBuffer(this.options.format||"Float32",D,A);void 0!==this.options.noDataValue&&I.fill(this.options.noDataValue);const g=await Q.readRasters({window:U,signal:C});for(let e=0;e<g.length;e+=1){const B=this.createTileBuffer(this.options.format||"Float32",D);void 0!==this.options.noDataValue&&B.fill(this.options.noDataValue);for(let A=0;A<k;A+=1){const I=L+A,i=I*D,C=A*g.width;for(let A=0;A<F;A+=1){const t=R+A;I<D&&t<D?B[i+t]=g[e][C+A]:console.error(`[CogTiles] tile buffer bounds exceeded: destRow ${I}, destCol ${t}, FETCH_SIZE ${D}`)}}for(let g=0;g<B.length;g+=1)I[g*A+e]=B[g]}return this.setCachedRaster(t,I),[I]}const p=await Q.readRasters({window:U,interleave:!0,signal:C});return this.setCachedRaster(t,p),[p]}catch(A){if(C.aborted||A instanceof AggregateError&&A.errors?.some(A=>"AbortError"===A?.name||A?.message?.includes("aborted")||A?.message?.includes("abort"))||A instanceof DOMException&&"AbortError"===A.name||A instanceof Error&&"Request was aborted"===A.message)throw new DOMException("Tile request aborted","AbortError");throw A}}createEmptyTile(A){const I=A||this.tileSize,g=this.options.numOfChannels||1,e=new Float32Array(I*I*g);return void 0!==this.options.noDataValue&&e.fill(this.options.noDataValue),e}async getTile(A,I,g,e,B,i){let C=this.tileSize;if("terrain"===this.options.type){const A=this.options.useSlope||this.options.useHillshade||this.options.useSwissRelief;C=this.tileSize+(A?2:1)}else"image"===this.options.type&&this.options.useReliefGlaze&&(C=this.tileSize+2);const t=await this.getTileFromImage(A,I,g,C,i),Q=Math.atan(Math.sinh(Math.PI*(1-2*(I+.5)/Math.pow(2,g)))),E=mI/Math.pow(2,g)*Math.cos(Q)/this.tileSize;let s=[t[0]],o=C,a=C;if("image"===this.options.type&&this.options.useReliefGlaze){const A=t[0];s=[pI.composeSwissRelief(A,this.options,E,this.tileSize,this.tileSize)],o=this.tileSize,a=this.tileSize}return i?.aborted?null:this.geo.getMap({rasters:s,width:o,height:a,bounds:e??[0,0,0,0],cellSizeMeters:E},this.options,B??4)}async getDataTypeFromTags(A){const I=A.hasTag("SampleFormat"),g=A.hasTag("BitsPerSample");if(!I||!g)return console.warn("Missing SampleFormat or BitsPerSample tags, defaulting to UInt8"),"UInt8";const e=A.getValue("SampleFormat"),B=A.getValue("BitsPerSample"),i=e&&"number"==typeof e.length&&e.length>0?e[0]:e;let C;return C=1===i?"UInt":2===i?"Int":3===i?"Float":"Unknown",`${C}${B&&"number"==typeof B.length&&B.length>0?B[0]:B}`}getNoDataValue(A){const I=A.getGDALNoData();if(null==I)return void console.warn("No noData value defined — raster might be rendered incorrectly.");const g=String(I).replace(/\0/g,"").trim();if(""===g)return void console.warn("noData value is an empty string after cleanup.");const e=Number(g);return"nan"===g.toLowerCase()?NaN:Number.isNaN(e)?void console.warn(`Failed to parse numeric noData value: '${g}'`):e}createTileBuffer(A,I,g=1){const e=I*I*g;switch(A){case"UInt8":return new Uint8Array(e);case"Int8":return new Int8Array(e);case"UInt16":return new Uint16Array(e);case"Int16":return new Int16Array(e);case"UInt32":return new Uint32Array(e);case"Int32":return new Int32Array(e);case"Float32":return new Float32Array(e);case"Float64":return new Float64Array(e);default:return console.warn(`Unsupported data type: ${A}, defaulting to Float32`),new Float32Array(e)}}}const qI={type:"object",value:null,validate:(A,I)=>I.optional&&null===A||"string"==typeof A||Array.isArray(A)&&A.every(A=>"string"==typeof A),equal:(A,I)=>{if(A===I)return!0;if(!Array.isArray(A)||!Array.isArray(I))return!1;const g=A.length;if(g!==I.length)return!1;for(let e=0;e<g;e++)if(A[e]!==I[e])return!1;return!0}},xI={...I.TileLayer.defaultProps,bounds:{type:"array",value:null,optional:!0,compare:!0},rasterData:qI,clampToTerrain:!1,workerUrl:""};class TI extends A.CompositeLayer{static defaultProps=xI;static layerName="CogBitmapLayer";async initializeState(A){super.initializeState(A),this.setState({bitmapCogTiles:this.props.cogTiles||new bI(this.props.cogBitmapOptions),initialized:!1}),await this.init()}async init(){await this.state.bitmapCogTiles.initializeCog(this.props.rasterData);const A=this.state.bitmapCogTiles.getZoomRange(),[I,g]=A;this.setState({initialized:!0,minZoom:I,maxZoom:g})}updateState({props:I,oldProps:g}){const e=I.rasterData!==g.rasterData;if(e){const{rasterData:A}=I,g=A&&(Array.isArray(A)||A.includes("{x}")&&A.includes("{y}")||this.props.isTiled);this.setState({isTiled:g})}e||(I.bounds,g.bounds);this.state.isTiled,I?.cogBitmapOptions?.useChannel!==g.cogBitmapOptions?.useChannel&&(this.state.bitmapCogTiles.options.useChannel=I.cogBitmapOptions.useChannel,this.state.bitmapCogTiles.options.useChannelIndex=null),I.workerUrl&&A.log.removed("workerUrl","loadOptions.terrain.workerUrl")()}async getTiledBitmapData(A){const I=await this.state.bitmapCogTiles.getTile(A.index.x,A.index.y,A.index.z,void 0,void 0,A.signal);return I&&!this.props.pickable&&(I.raw=null),I}renderSubLayers(A){const I=this.getSubLayerClass("image",g.BitmapLayer),{blurredTexture:B}=this.state.bitmapCogTiles.options,{clampToTerrain:i}=this.props,C="object"==typeof i&&null!==i&&"terrainDrawMode"in i,{data:t}=A;if(!t)return null;const{bbox:{west:Q,south:E,east:s,north:o}}=A.tile;return new I({...A,tileSize:this.state.bitmapCogTiles.tileSize},{data:[1],image:t.map,_instanced:!1,pickable:A.pickable,bounds:[Q,E,s,o],textureParameters:{minFilter:B?"linear":"nearest",magFilter:B?"linear":"nearest"},extensions:i?[new e._TerrainExtension]:[],...C?{terrainDrawMode:i.terrainDrawMode}:{}})}renderLayers(){const{clampToTerrain:A,maxRequests:g,onTileLoad:e,onTileUnload:B,onTileError:i,maxCacheSize:C,maxCacheByteSize:t,refinementStrategy:Q,cogBitmapOptions:E}=this.props;if(this.state.isTiled&&this.state.initialized){const{tileSize:s}=this.state.bitmapCogTiles;return new I.TileLayer(this.getSubLayerProps({id:"tiles"}),{getTileData:this.getTiledBitmapData.bind(this),renderSubLayers:this.renderSubLayers.bind(this),pickable:this.props.pickable,onClick:this.props.onClick,updateTriggers:{getTileData:[A,E.useChannel]},extent:this.state.bitmapCogTiles.getBoundsAsLatLon(),tileSize:s,minZoom:this.state.minZoom,maxZoom:this.state.maxZoom,maxRequests:g,onTileLoad:e,onTileUnload:B,onTileError:i,maxCacheSize:C,maxCacheByteSize:t,refinementStrategy:Q})}return null}}const OI={type:"object",value:null,validate:(A,I)=>I.optional&&null===A||"string"==typeof A||Array.isArray(A)&&A.every(A=>"string"==typeof A),equal:(A,I)=>{if(A===I)return!0;if(!Array.isArray(A)||!Array.isArray(I))return!1;const g=A.length;if(g!==I.length)return!1;for(let e=0;e<g;e++)if(A[e]!==I[e])return!1;return!0}},PI=[1],vI={...I.TileLayer.defaultProps,elevationData:OI,texture:{...OI,optional:!0},meshMaxError:{type:"number",value:4},bounds:{type:"array",value:null,optional:!0,compare:!0},color:{type:"color",value:[255,255,255]},elevationDecoder:{type:"object",value:{rScaler:1,gScaler:0,bScaler:0,offset:0}},workerUrl:"",wireframe:!1,material:!0};class VI extends A.CompositeLayer{static defaultProps=vI;static layerName="CogTerrainLayer";terrainUrl="";async initializeState(A){super.initializeState(A);const I=this.props.cogTiles||new bI(this.props.terrainOptions);if(this.setState({terrainCogTiles:I,initialized:!1}),I.cog){const A=I.getZoomRange(),[g,e]=A;this.setState({initialized:!0,minZoom:g,maxZoom:e})}else await this.init()}async init(){await this.state.terrainCogTiles.initializeCog(this.props.elevationData);const A=this.state.terrainCogTiles.getZoomRange(),[I,g]=A;this.setState({initialized:!0,minZoom:I,maxZoom:g})}updateState({props:I,oldProps:g}){const e=I.elevationData!==g.elevationData;if(e){const{elevationData:A}=I,g=A&&(Array.isArray(A)||A.includes("{x}")&&A.includes("{y}"))||this.props.isTiled;this.setState({isTiled:g})}e||I.meshMaxError!==g.meshMaxError||I.elevationDecoder!==g.elevationDecoder||(I.bounds,g.bounds);this.state.isTiled,I?.terrainOptions?.useChannel!==g.terrainOptions?.useChannel&&(this.state.terrainCogTiles.options.useChannel=I.terrainOptions.useChannel,this.state.terrainCogTiles.options.useChannelIndex=null),I.cogTiles&&I.cogTiles!==g.cogTiles&&this.setState({terrainCogTiles:I.cogTiles}),I.workerUrl&&A.log.removed("workerUrl","loadOptions.terrain.workerUrl")()}loadTerrain({elevationData:A,bounds:I,elevationDecoder:g,meshMaxError:e,signal:B}){if(!A)return null;let i=this.getLoadOptions();i={...i,_workerType:"test",terrain:{skirtHeight:this.state.isTiled?2*e:0,...i?.terrain,bounds:I,meshMaxError:e,elevationDecoder:g}};const{fetch:C}=this.props;return C(A,{propName:"elevationData",layer:this,loadOptions:i,signal:B,loaders:[]})}async getTiledTerrainData(A){const{viewport:I}=this.context;let g=[0,0],e=[0,0];if(I.isGeospatial){const B=A.bbox;g=I.projectFlat([B.west,B.south]),e=I.projectFlat([B.east,B.north])}else{const I=A.bbox;g=[I.left,I.bottom],e=[I.right,I.top]}const B=[g[0],g[1],e[0],e[1]],i=await this.state.terrainCogTiles.getTile(A.index.x,A.index.y,A.index.z,B,this.props.meshMaxError,A.signal);return i&&!this.props.pickable&&(i.raw=null),Promise.all([i,null])}renderSubLayers(I){const g=this.getSubLayerClass("mesh",t.SimpleMeshLayer),{color:e,wireframe:B,terrainOptions:i}=this.props,{data:C}=I;if(!C)return null;const[Q]=C,E=!this.props.disableTexture&&Q?.texture?Q.texture:null,s=i?.useSwissRelief,o=i?.disableLighting,a=s||o?{material:{ambient:1,diffuse:0,shininess:0,specularColor:[0,0,0]}}:{material:this.props.material};return new g({...I,tileSize:I.tileSize},{...a,data:PI,mesh:Q?.map,texture:E,_instanced:!1,pickable:I.pickable,coordinateSystem:A.COORDINATE_SYSTEM.CARTESIAN,getColor:E?[255,255,255]:e,wireframe:B})}onViewportLoad(A){if(!A)return;const{zRange:I}=this.state,g=A.map(A=>A.content).filter(A=>!!A&&!!A[0]).map(A=>{if(!A||!A[0])return;const I=A[0]?.map?.header?.boundingBox;return I?.map(A=>A[2])}).filter(A=>void 0!==A);if(0===g.length)return;const e=Math.min(...g.map(A=>A?.[0]??0).filter(A=>Number.isFinite(A))),B=Math.max(...g.map(A=>A?.[1]??0).filter(A=>Number.isFinite(A)));(!I||e<I[0]||B>I[1])&&this.setState({zRange:[Number.isFinite(e)?e:0,Number.isFinite(B)?B:0]})}renderLayers(){const{elevationData:A,meshMaxError:g,elevationDecoder:e,tileSize:B,extent:i,maxRequests:C,onTileLoad:t,onTileUnload:Q,onTileError:E,maxCacheSize:s,maxCacheByteSize:o,refinementStrategy:a}=this.props;return this.state.isTiled&&this.state.initialized?new I.TileLayer(this.getSubLayerProps({id:"tiles"}),{getTileData:this.getTiledTerrainData.bind(this),renderSubLayers:this.renderSubLayers.bind(this),pickable:this.props.pickable,onClick:this.props.onClick,updateTriggers:{getTileData:{elevationData:(r=A,Array.isArray(r)?r.join(";"):r||""),meshMaxError:g,elevationDecoder:e,terrainCogTiles:this.state.terrainCogTiles},renderSubLayers:{disableTexture:this.props.disableTexture,terrainOptions:this.props.terrainOptions}},onViewportLoad:this.onViewportLoad.bind(this),zRange:this.state.zRange||null,tileSize:B,minZoom:this.state.minZoom,maxZoom:this.state.maxZoom,extent:i,maxRequests:C,onTileLoad:t,onTileUnload:Q,onTileError:E,maxCacheSize:s,maxCacheByteSize:o,refinementStrategy:a}):null;var r}}E();var ZI=Object.freeze({__proto__:null,default:class extends lI{decodeBlock(A){return A}}});function jI(A,I){for(let g=I.length-1;g>=0;g--)A.push(I[g]);return A}function zI(A){const I=new Uint16Array(4093),g=new Uint8Array(4093);for(let A=0;A<=257;A++)I[A]=4096,g[A]=A;let e=258,B=9,i=0;function C(){e=258,B=9}function t(A){const I=function(A,I,g){const e=I%8,B=Math.floor(I/8),i=8-e,C=I+g-8*(B+1);let t=8*(B+2)-(I+g);const Q=8*(B+2)-I;if(t=Math.max(0,t),B>=A.length)return console.warn("ran off the end of the buffer before finding EOI_CODE (end on input code)"),257;let E=A[B]&2**(8-e)-1;E<<=g-i;let s=E;if(B+1<A.length){let I=A[B+1]>>>t;I<<=Math.max(0,g-Q),s+=I}if(C>8&&B+2<A.length){const e=8*(B+3)-(I+g);s+=A[B+2]>>>e}return s}(A,i,B);return i+=B,I}function Q(A,B){return g[e]=B,I[e]=A,e++,e-1}function E(A){const e=[];for(let B=A;4096!==B;B=I[B])e.push(g[B]);return e}const s=[];C();const o=new Uint8Array(A);let a,r=t(o);for(;257!==r;){if(256===r){for(C(),r=t(o);256===r;)r=t(o);if(257===r)break;if(r>256)throw new Error(`corrupted code at scanline ${r}`);jI(s,E(r)),a=r}else if(r<e){const A=E(r);jI(s,A),void 0!==a&&Q(a,A[A.length-1]),a=r}else{if(void 0===a)throw new Error(`Invalid LZW code: ${r} with no previous code`);const A=E(a);if(!A)throw new Error(`Bogus entry. Not in dictionary, ${a} / ${e}, position: ${i}`);jI(s,A),s.push(A[A.length-1]),Q(a,A[A.length-1]),a=r}e+1>=2**B&&(12===B?a=void 0:B++),r=t(o)}return new Uint8Array(s)}var WI=Object.freeze({__proto__:null,default:class extends lI{decodeBlock(A){return zI(A).buffer}}});const _I=new Int32Array([0,1,8,16,9,2,3,10,17,24,32,25,18,11,4,5,12,19,26,33,40,48,41,34,27,20,13,6,7,14,21,28,35,42,49,56,57,50,43,36,29,22,15,23,30,37,44,51,58,59,52,45,38,31,39,46,53,60,61,54,47,55,62,63]),XI=4017,$I=799,Ag=3406,Ig=2276,gg=1567,eg=3784,Bg=5793,ig=2896;function Cg(A,I){let g=0;const e=[];let B=16;for(;B>0&&!A[B-1];)--B;e.push({children:[],index:0});let i,C=e[0];for(let t=0;t<B;t++){for(let B=0;B<A[t];B++){if(C=e.pop(),!C)throw new Error("buildHuffmanTable: codeLength mismatch");for(C.children[C.index]=I[g];C.index>0;)if(C=e.pop(),!C)throw new Error("buildHuffmanTable: codeLength mismatch");for(C.index++,e.push(C);e.length<=t;)e.push(i={children:[],index:0}),C.children[C.index]=i.children,C=i;g++}t+1<B&&(e.push(i={children:[],index:0}),C.children[C.index]=i.children,C=i)}return e[0].children}function tg(A,I,g,e,B,i,C,t,Q){const{mcusPerLine:E,progressive:s}=g;if(e.length>1&&(void 0===E||void 0===g.mcusPerColumn))throw new Error("Missing MCU dimensions");if(1===e.length&&(void 0===e[0].blocksPerLine||void 0===e[0].blocksPerColumn))throw new Error("Missing block dimensions");const o=I;let a=I,r=0,n=0;function h(){if(n>0)return n--,r>>n&1;if(r=A[a++],255===r){const I=A[a++];if(I)throw new Error(`unexpected marker: ${(r<<8|I).toString(16)}`)}return n=7,r>>>7}function l(A){if(!A)throw new Error("Huffman table not found");let I,g=A;for(;null!==(I=h());){const A=g[I];if("number"==typeof A)return A;if("object"!=typeof A)throw new Error("invalid huffman sequence");g=A}return null}function c(A){let I=A,g=0;for(;I>0;){const A=h();if(null===A)return;g=g<<1|A,--I}return g}function D(A){const I=c(A);if(void 0!==I)return I>=1<<A-1?I:I+(-1<<A)+1}let w=0;let y,d=0;function f(A,I,g,e,B){const i=g%E,C=(g/E|0)*A.v+e,t=i*A.h+B;if(!A.blocks)throw new Error("Missing blocks");I(A,A.blocks[C][t])}function S(A,I,g){const e=g/A.blocksPerLine|0,B=g%A.blocksPerLine;if(!A.blocks)throw new Error("Missing blocks");I(A,A.blocks[e][B])}const u=e.length;let G,N,F,k,R,L;L=s?0===i?0===t?function(A,I){const g=l(A.huffmanTableDC);if(null===g)throw new Error("Huffman error");const e=D(g);if(void 0===e)throw new Error("Unexpected end of data in DC coefficient decoding");const B=0===g?0:e<<Q;void 0===A.pred&&(A.pred=0),A.pred+=B,I[0]=A.pred}:function(A,I){const g=h();if(null===g)throw new Error("Unexpected end of data in DC coefficient decoding");I[0]|=g<<Q}:0===t?function(A,I){if(w>0)return void w--;let g=i;const e=C;for(;g<=e;){const e=l(A.huffmanTableAC);if(null===e)throw new Error("Unexpected end of data in AC coefficient decoding");const B=15&e,i=e>>4;if(0===B){if(i<15){const A=c(i);if(void 0===A)throw new Error("Unexpected end of data in AC coefficient decoding");w=A+(1<<i)-1;break}g+=16}else{g+=i;const A=_I[g],e=D(B);if(void 0===e)throw new Error("Unexpected end of data in AC coefficient decoding");I[A]=e*(1<<Q),g++}}}:function(A,I){let g=i;const e=C;let B=0;for(;g<=e;){const e=_I[g],i=I[e]<0?-1:1;switch(d){case 0:{const I=l(A.huffmanTableAC);if(null===I)throw new Error("Unexpected end of data in AC coefficient decoding");const g=15&I;if(B=I>>4,0===g)if(B<15){const A=c(B);if(void 0===A)throw new Error("Unexpected end of data in AC coefficient decoding");w=A+(1<<B),d=4}else B=16,d=1;else{if(1!==g)throw new Error("invalid ACn encoding");const A=D(g);if(void 0===A)throw new Error("Unexpected end of data in AC coefficient decoding");y=A,d=B?2:3}continue}case 1:case 2:if(I[e]){const A=h();if(null===A)throw new Error("Unexpected end of data in AC coefficient decoding");I[e]+=(A<<Q)*i}else B--,0===B&&(d=2===d?3:0);break;case 3:if(I[e]){const A=h();if(null===A)throw new Error("Unexpected end of data in AC coefficient decoding");I[e]+=(A<<Q)*i}else I[e]=y<<Q,d=0;break;case 4:if(I[e]){const A=h();if(null===A)throw new Error("Unexpected end of data in AC coefficient decoding");I[e]+=(A<<Q)*i}}g++}4===d&&(w--,0===w&&(d=0))}:function(A,I){const g=l(A.huffmanTableDC);if(null===g)throw new Error("Huffman error");const e=0===g?0:D(g);if(void 0===e)throw new Error("Unexpected end of stream");void 0===A.pred&&(A.pred=0),A.pred+=e,I[0]=A.pred;let B=1;for(;B<64;){const g=l(A.huffmanTableAC);if(null===g)throw new Error("Unexpected end of data in AC coefficient decoding");const e=15&g,i=g>>4;if(0===e){if(i<15)break;B+=16}else{B+=i;const A=_I[B],g=D(e);if(void 0===g)throw new Error("Unexpected end of stream");I[A]=g,B++}}};let U,p,Y=0;p=1===u?e[0].blocksPerLine*e[0].blocksPerColumn:E*g.mcusPerColumn;const M=B||p;for(;Y<p;){for(N=0;N<u;N++)e[N].pred=0;if(w=0,1===u)for(G=e[0],R=0;R<M;R++)S(G,L,Y),Y++;else for(R=0;R<M;R++){for(N=0;N<u;N++){G=e[N];const{h:A,v:I}=G;for(F=0;F<I;F++)for(k=0;k<A;k++)f(G,L,Y,F,k)}if(Y++,Y===p)break}if(n=0,U=A[a]<<8|A[a+1],U<65280)throw new Error("marker was not found");if(!(U>=65488&&U<=65495))break;a+=2}return a-o}function Qg(A){const I=[],{blocksPerLine:g,blocksPerColumn:e}=A;if(!g||!e||!A.blocks)throw new Error("Missing component data");const B=g<<3,i=new Int32Array(64),C=new Uint8Array(64);function t(I,g,e){const B=A.quantizationTable;if(!B)throw new Error("No quantization table found");let i,C,t,Q,E,s,o,a,r;const n=e;let h;for(h=0;h<64;h++)n[h]=I[h]*B[h];for(h=0;h<8;++h){const A=8*h;0!==n[1+A]||0!==n[2+A]||0!==n[3+A]||0!==n[4+A]||0!==n[5+A]||0!==n[6+A]||0!==n[7+A]?(i=Bg*n[0+A]+128>>8,C=Bg*n[4+A]+128>>8,t=n[2+A],Q=n[6+A],E=ig*(n[1+A]-n[7+A])+128>>8,a=ig*(n[1+A]+n[7+A])+128>>8,s=n[3+A]<<4,o=n[5+A]<<4,r=i-C+1>>1,i=i+C+1>>1,C=r,r=t*eg+Q*gg+128>>8,t=t*gg-Q*eg+128>>8,Q=r,r=E-o+1>>1,E=E+o+1>>1,o=r,r=a+s+1>>1,s=a-s+1>>1,a=r,r=i-Q+1>>1,i=i+Q+1>>1,Q=r,r=C-t+1>>1,C=C+t+1>>1,t=r,r=E*Ig+a*Ag+2048>>12,E=E*Ag-a*Ig+2048>>12,a=r,r=s*$I+o*XI+2048>>12,s=s*XI-o*$I+2048>>12,o=r,n[0+A]=i+a,n[7+A]=i-a,n[1+A]=C+o,n[6+A]=C-o,n[2+A]=t+s,n[5+A]=t-s,n[3+A]=Q+E,n[4+A]=Q-E):(r=Bg*n[0+A]+512>>10,n[0+A]=r,n[1+A]=r,n[2+A]=r,n[3+A]=r,n[4+A]=r,n[5+A]=r,n[6+A]=r,n[7+A]=r)}for(h=0;h<8;++h){const A=h;0!==n[8+A]||0!==n[16+A]||0!==n[24+A]||0!==n[32+A]||0!==n[40+A]||0!==n[48+A]||0!==n[56+A]?(i=Bg*n[0+A]+2048>>12,C=Bg*n[32+A]+2048>>12,t=n[16+A],Q=n[48+A],E=ig*(n[8+A]-n[56+A])+2048>>12,a=ig*(n[8+A]+n[56+A])+2048>>12,s=n[24+A],o=n[40+A],r=i-C+1>>1,i=i+C+1>>1,C=r,r=t*eg+Q*gg+2048>>12,t=t*gg-Q*eg+2048>>12,Q=r,r=E-o+1>>1,E=E+o+1>>1,o=r,r=a+s+1>>1,s=a-s+1>>1,a=r,r=i-Q+1>>1,i=i+Q+1>>1,Q=r,r=C-t+1>>1,C=C+t+1>>1,t=r,r=E*Ig+a*Ag+2048>>12,E=E*Ag-a*Ig+2048>>12,a=r,r=s*$I+o*XI+2048>>12,s=s*XI-o*$I+2048>>12,o=r,n[0+A]=i+a,n[56+A]=i-a,n[8+A]=C+o,n[48+A]=C-o,n[16+A]=t+s,n[40+A]=t-s,n[24+A]=Q+E,n[32+A]=Q-E):(r=Bg*e[h+0]+8192>>14,n[0+A]=r,n[8+A]=r,n[16+A]=r,n[24+A]=r,n[32+A]=r,n[40+A]=r,n[48+A]=r,n[56+A]=r)}for(h=0;h<64;++h){const A=128+(n[h]+8>>4);g[h]=A<0?0:A>255?255:A}}for(let Q=0;Q<e;Q++){const e=Q<<3;for(let A=0;A<8;A++)I.push(new Uint8Array(B));for(let B=0;B<g;B++){t(A.blocks[Q][B],C,i);let g=0;const E=B<<3;for(let A=0;A<8;A++){const B=I[e+A];for(let A=0;A<8;A++)B[E+A]=C[g++]}}}return I}class Eg{constructor(){this.jfif=null,this.adobe=null,this.resetInterval=0,this.quantizationTables=[],this.huffmanTablesAC=[],this.huffmanTablesDC=[],this.frames=[]}resetFrames(){this.frames=[]}parse(A){let I=0;function g(){const g=A[I]<<8|A[I+1];return I+=2,g}function e(){const e=g(),B=A.subarray(I,I+e-2);return I+=B.length,B}function B(A){let I,g,e=0,B=0;for(g in A.components)A.components.hasOwnProperty(g)&&(I=A.components[g],e<I.h&&(e=I.h),B<I.v&&(B=I.v));const i=Math.ceil(A.samplesPerLine/8/e),C=Math.ceil(A.scanLines/8/B);for(g in A.components)if(A.components.hasOwnProperty(g)){I=A.components[g];const t=Math.ceil(Math.ceil(A.samplesPerLine/8)*I.h/e),Q=Math.ceil(Math.ceil(A.scanLines/8)*I.v/B),E=i*I.h,s=C*I.v,o=[];for(let A=0;A<s;A++){const A=[];for(let I=0;I<E;I++)A.push(new Int32Array(64));o.push(A)}I.blocksPerLine=t,I.blocksPerColumn=Q,I.blocks=o}A.maxH=e,A.maxV=B,A.mcusPerLine=i,A.mcusPerColumn=C}let i=g();if(65496!==i)throw new Error("SOI not found");for(i=g();65497!==i;){switch(i){case 65280:break;case 65504:case 65505:case 65506:case 65507:case 65508:case 65509:case 65510:case 65511:case 65512:case 65513:case 65514:case 65515:case 65516:case 65517:case 65518:case 65519:case 65534:{const A=e();65504===i&&74===A[0]&&70===A[1]&&73===A[2]&&70===A[3]&&0===A[4]&&(this.jfif={version:{major:A[5],minor:A[6]},densityUnits:A[7],xDensity:A[8]<<8|A[9],yDensity:A[10]<<8|A[11],thumbWidth:A[12],thumbHeight:A[13],thumbData:A.subarray(14,14+3*A[12]*A[13])}),65518===i&&65===A[0]&&100===A[1]&&111===A[2]&&98===A[3]&&101===A[4]&&0===A[5]&&(this.adobe={version:A[6],flags0:A[7]<<8|A[8],flags1:A[9]<<8|A[10],transformCode:A[11]});break}case 65499:{const e=g()+I-2;for(;I<e;){const e=A[I++],B=new Int32Array(64);if(e>>4){if(e>>4!=1)throw new Error("DQT: invalid table spec");for(let A=0;A<64;A++){B[_I[A]]=g()}}else for(let g=0;g<64;g++){B[_I[g]]=A[I++]}this.quantizationTables[15&e]=B}break}case 65472:case 65473:case 65474:{g();const e={extended:65473===i,progressive:65474===i,precision:A[I++],scanLines:g(),samplesPerLine:g(),components:{},componentsOrder:[],maxH:0,maxV:0,mcusPerLine:0,mcusPerColumn:0},C=A[I++];let t;for(let g=0;g<C;g++){t=A[I];const g=A[I+1]>>4,B=15&A[I+1],i=A[I+2];e.componentsOrder.push(t),e.components[t]={h:g,v:B,quantizationIdx:i,blocksPerLine:0,blocksPerColumn:0,blocks:[]},I+=3}B(e),this.frames.push(e);break}case 65476:{const e=g();for(let g=2;g<e;){const e=A[I++],B=new Uint8Array(16);let i=0;for(let g=0;g<16;g++,I++)B[g]=A[I],i+=B[g];const C=new Uint8Array(i);for(let g=0;g<i;g++,I++)C[g]=A[I];g+=17+i,e>>4?this.huffmanTablesAC[15&e]=Cg(B,C):this.huffmanTablesDC[15&e]=Cg(B,C)}break}case 65501:g(),this.resetInterval=g();break;case 65498:{g();const e=A[I++],B=[],i=this.frames[0];for(let g=0;g<e;g++){const g=i.components[A[I++]],e=A[I++];g.huffmanTableDC=this.huffmanTablesDC[e>>4],g.huffmanTableAC=this.huffmanTablesAC[15&e],B.push(g)}const C=A[I++],t=A[I++],Q=A[I++],E=tg(A,I,i,B,this.resetInterval,C,t,Q>>4,15&Q);I+=E;break}case 65535:255!==A[I]&&I--;break;default:if(255===A[I-3]&&A[I-2]>=192&&A[I-2]<=254){I-=3;break}throw new Error(`unknown JPEG marker ${i.toString(16)}`)}i=g()}}getResult(){const{frames:A}=this;if(0===this.frames.length)throw new Error("no frames were decoded");this.frames.length>1&&console.warn("more than one frame is not supported");for(let A=0;A<this.frames.length;A++){const I=this.frames[A].components;for(const A of Object.keys(I)){const g=I[A].quantizationIdx;"number"==typeof g&&(I[A].quantizationTable=this.quantizationTables[g],delete I[A].quantizationIdx)}}const I=A[0];if(!I.maxH||!I.maxV)throw new Error("Invalid frame dimensions");const{components:g,componentsOrder:e}=I,B=[],i=I.samplesPerLine,C=I.scanLines;for(let A=0;A<e.length;A++){const i=g[e[A]];B.push({lines:Qg(i),scaleX:i.h/I.maxH,scaleY:i.v/I.maxV})}const t=new Uint8Array(i*C*B.length);let Q=0;for(let A=0;A<C;++A)for(let I=0;I<i;++I)for(let g=0;g<B.length;++g){const e=B[g];t[Q]=e.lines[0|A*e.scaleY][0|I*e.scaleX],++Q}return t}}var sg=Object.freeze({__proto__:null,default:class extends lI{constructor(A){super(A),this.reader=new Eg,A.JPEGTables&&this.reader.parse(A.JPEGTables)}decodeBlock(A){return this.reader.resetFrames(),this.reader.parse(new Uint8Array(A)),this.reader.getResult().buffer}}});function og(A){let I=A.length;for(;--I>=0;)A[I]=0}og(new Array(576));og(new Array(60));og(new Array(512));og(new Array(256));og(new Array(29));og(new Array(30));var ag=(A,I,g,e)=>{let B=65535&A,i=A>>>16&65535,C=0;for(;0!==g;){C=g>2e3?2e3:g,g-=C;do{B=B+I[e++]|0,i=i+B|0}while(--C);B%=65521,i%=65521}return B|i<<16};const rg=new Uint32Array((()=>{let A,I=[];for(var g=0;g<256;g++){A=g;for(var e=0;e<8;e++)A=1&A?3988292384^A>>>1:A>>>1;I[g]=A}return I})());var ng=(A,I,g,e)=>{const B=rg,i=e+g;A^=-1;for(let g=e;g<i;g++)A=A>>>8^B[255&(A^I[g])];return-1^A},hg={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"},lg={Z_NO_FLUSH:0,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_DEFLATED:8};const cg=(A,I)=>Object.prototype.hasOwnProperty.call(A,I);var Dg=function(A){const I=Array.prototype.slice.call(arguments,1);for(;I.length;){const g=I.shift();if(g){if("object"!=typeof g)throw new TypeError(g+"must be non-object");for(const I in g)cg(g,I)&&(A[I]=g[I])}}return A},wg=A=>{let I=0;for(let g=0,e=A.length;g<e;g++)I+=A[g].length;const g=new Uint8Array(I);for(let I=0,e=0,B=A.length;I<B;I++){let B=A[I];g.set(B,e),e+=B.length}return g};let yg=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(A){yg=!1}const dg=new Uint8Array(256);for(let A=0;A<256;A++)dg[A]=A>=252?6:A>=248?5:A>=240?4:A>=224?3:A>=192?2:1;dg[254]=dg[254]=1;var fg=A=>{if("function"==typeof TextEncoder&&TextEncoder.prototype.encode)return(new TextEncoder).encode(A);let I,g,e,B,i,C=A.length,t=0;for(B=0;B<C;B++)g=A.charCodeAt(B),55296==(64512&g)&&B+1<C&&(e=A.charCodeAt(B+1),56320==(64512&e)&&(g=65536+(g-55296<<10)+(e-56320),B++)),t+=g<128?1:g<2048?2:g<65536?3:4;for(I=new Uint8Array(t),i=0,B=0;i<t;B++)g=A.charCodeAt(B),55296==(64512&g)&&B+1<C&&(e=A.charCodeAt(B+1),56320==(64512&e)&&(g=65536+(g-55296<<10)+(e-56320),B++)),g<128?I[i++]=g:g<2048?(I[i++]=192|g>>>6,I[i++]=128|63&g):g<65536?(I[i++]=224|g>>>12,I[i++]=128|g>>>6&63,I[i++]=128|63&g):(I[i++]=240|g>>>18,I[i++]=128|g>>>12&63,I[i++]=128|g>>>6&63,I[i++]=128|63&g);return I},Sg=(A,I)=>{const g=I||A.length;if("function"==typeof TextDecoder&&TextDecoder.prototype.decode)return(new TextDecoder).decode(A.subarray(0,I));let e,B;const i=new Array(2*g);for(B=0,e=0;e<g;){let I=A[e++];if(I<128){i[B++]=I;continue}let C=dg[I];if(C>4)i[B++]=65533,e+=C-1;else{for(I&=2===C?31:3===C?15:7;C>1&&e<g;)I=I<<6|63&A[e++],C--;C>1?i[B++]=65533:I<65536?i[B++]=I:(I-=65536,i[B++]=55296|I>>10&1023,i[B++]=56320|1023&I)}}return((A,I)=>{if(I<65534&&A.subarray&&yg)return String.fromCharCode.apply(null,A.length===I?A:A.subarray(0,I));let g="";for(let e=0;e<I;e++)g+=String.fromCharCode(A[e]);return g})(i,B)},ug=(A,I)=>{(I=I||A.length)>A.length&&(I=A.length);let g=I-1;for(;g>=0&&128==(192&A[g]);)g--;return g<0||0===g?I:g+dg[A[g]]>I?g:I};var Gg=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0};const Ng=16209;var Fg=function(A,I){let g,e,B,i,C,t,Q,E,s,o,a,r,n,h,l,c,D,w,y,d,f,S,u,G;const N=A.state;g=A.next_in,u=A.input,e=g+(A.avail_in-5),B=A.next_out,G=A.output,i=B-(I-A.avail_out),C=B+(A.avail_out-257),t=N.dmax,Q=N.wsize,E=N.whave,s=N.wnext,o=N.window,a=N.hold,r=N.bits,n=N.lencode,h=N.distcode,l=(1<<N.lenbits)-1,c=(1<<N.distbits)-1;A:do{r<15&&(a+=u[g++]<<r,r+=8,a+=u[g++]<<r,r+=8),D=n[a&l];I:for(;;){if(w=D>>>24,a>>>=w,r-=w,w=D>>>16&255,0===w)G[B++]=65535&D;else{if(!(16&w)){if(64&w){if(32&w){N.mode=16191;break A}A.msg="invalid literal/length code",N.mode=Ng;break A}D=n[(65535&D)+(a&(1<<w)-1)];continue I}for(y=65535&D,w&=15,w&&(r<w&&(a+=u[g++]<<r,r+=8),y+=a&(1<<w)-1,a>>>=w,r-=w),r<15&&(a+=u[g++]<<r,r+=8,a+=u[g++]<<r,r+=8),D=h[a&c];;){if(w=D>>>24,a>>>=w,r-=w,w=D>>>16&255,16&w){if(d=65535&D,w&=15,r<w&&(a+=u[g++]<<r,r+=8,r<w&&(a+=u[g++]<<r,r+=8)),d+=a&(1<<w)-1,d>t){A.msg="invalid distance too far back",N.mode=Ng;break A}if(a>>>=w,r-=w,w=B-i,d>w){if(w=d-w,w>E&&N.sane){A.msg="invalid distance too far back",N.mode=Ng;break A}if(f=0,S=o,0===s){if(f+=Q-w,w<y){y-=w;do{G[B++]=o[f++]}while(--w);f=B-d,S=G}}else if(s<w){if(f+=Q+s-w,w-=s,w<y){y-=w;do{G[B++]=o[f++]}while(--w);if(f=0,s<y){w=s,y-=w;do{G[B++]=o[f++]}while(--w);f=B-d,S=G}}}else if(f+=s-w,w<y){y-=w;do{G[B++]=o[f++]}while(--w);f=B-d,S=G}for(;y>2;)G[B++]=S[f++],G[B++]=S[f++],G[B++]=S[f++],y-=3;y&&(G[B++]=S[f++],y>1&&(G[B++]=S[f++]))}else{f=B-d;do{G[B++]=G[f++],G[B++]=G[f++],G[B++]=G[f++],y-=3}while(y>2);y&&(G[B++]=G[f++],y>1&&(G[B++]=G[f++]))}break}if(64&w){A.msg="invalid distance code",N.mode=Ng;break A}D=h[(65535&D)+(a&(1<<w)-1)]}}break}}while(g<e&&B<C);y=r>>3,g-=y,r-=y<<3,a&=(1<<r)-1,A.next_in=g,A.next_out=B,A.avail_in=g<e?e-g+5:5-(g-e),A.avail_out=B<C?C-B+257:257-(B-C),N.hold=a,N.bits=r};const kg=15,Rg=new Uint16Array([3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0]),Lg=new Uint8Array([16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78]),Ug=new Uint16Array([1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0]),pg=new Uint8Array([16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64]);var Yg=(A,I,g,e,B,i,C,t)=>{const Q=t.bits;let E,s,o,a,r,n,h=0,l=0,c=0,D=0,w=0,y=0,d=0,f=0,S=0,u=0,G=null;const N=new Uint16Array(16),F=new Uint16Array(16);let k,R,L,U=null;for(h=0;h<=kg;h++)N[h]=0;for(l=0;l<e;l++)N[I[g+l]]++;for(w=Q,D=kg;D>=1&&0===N[D];D--);if(w>D&&(w=D),0===D)return B[i++]=20971520,B[i++]=20971520,t.bits=1,0;for(c=1;c<D&&0===N[c];c++);for(w<c&&(w=c),f=1,h=1;h<=kg;h++)if(f<<=1,f-=N[h],f<0)return-1;if(f>0&&(0===A||1!==D))return-1;for(F[1]=0,h=1;h<kg;h++)F[h+1]=F[h]+N[h];for(l=0;l<e;l++)0!==I[g+l]&&(C[F[I[g+l]]++]=l);if(0===A?(G=U=C,n=20):1===A?(G=Rg,U=Lg,n=257):(G=Ug,U=pg,n=0),u=0,l=0,h=c,r=i,y=w,d=0,o=-1,S=1<<w,a=S-1,1===A&&S>852||2===A&&S>592)return 1;for(;;){k=h-d,C[l]+1<n?(R=0,L=C[l]):C[l]>=n?(R=U[C[l]-n],L=G[C[l]-n]):(R=96,L=0),E=1<<h-d,s=1<<y,c=s;do{s-=E,B[r+(u>>d)+s]=k<<24|R<<16|L}while(0!==s);for(E=1<<h-1;u&E;)E>>=1;if(0!==E?(u&=E-1,u+=E):u=0,l++,0===--N[h]){if(h===D)break;h=I[g+C[l]]}if(h>w&&(u&a)!==o){for(0===d&&(d=w),r+=c,y=h-d,f=1<<y;y+d<D&&(f-=N[y+d],!(f<=0));)y++,f<<=1;if(S+=1<<y,1===A&&S>852||2===A&&S>592)return 1;o=u&a,B[o]=w<<24|y<<16|r-i}}return 0!==u&&(B[r+u]=h-d<<24|64<<16),t.bits=w,0};const{Z_FINISH:Mg,Z_BLOCK:mg,Z_TREES:Kg,Z_OK:Hg,Z_STREAM_END:Jg,Z_NEED_DICT:bg,Z_STREAM_ERROR:qg,Z_DATA_ERROR:xg,Z_MEM_ERROR:Tg,Z_BUF_ERROR:Og,Z_DEFLATED:Pg}=lg,vg=16180,Vg=16190,Zg=16191,jg=16192,zg=16194,Wg=16199,_g=16200,Xg=16206,$g=16209,Ae=A=>(A>>>24&255)+(A>>>8&65280)+((65280&A)<<8)+((255&A)<<24);function Ie(){this.strm=null,this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}const ge=A=>{if(!A)return 1;const I=A.state;return!I||I.strm!==A||I.mode<vg||I.mode>16211?1:0},ee=A=>{if(ge(A))return qg;const I=A.state;return A.total_in=A.total_out=I.total=0,A.msg="",I.wrap&&(A.adler=1&I.wrap),I.mode=vg,I.last=0,I.havedict=0,I.flags=-1,I.dmax=32768,I.head=null,I.hold=0,I.bits=0,I.lencode=I.lendyn=new Int32Array(852),I.distcode=I.distdyn=new Int32Array(592),I.sane=1,I.back=-1,Hg},Be=A=>{if(ge(A))return qg;const I=A.state;return I.wsize=0,I.whave=0,I.wnext=0,ee(A)},ie=(A,I)=>{let g;if(ge(A))return qg;const e=A.state;return I<0?(g=0,I=-I):(g=5+(I>>4),I<48&&(I&=15)),I&&(I<8||I>15)?qg:(null!==e.window&&e.wbits!==I&&(e.window=null),e.wrap=g,e.wbits=I,Be(A))},Ce=(A,I)=>{if(!A)return qg;const g=new Ie;A.state=g,g.strm=A,g.window=null,g.mode=vg;const e=ie(A,I);return e!==Hg&&(A.state=null),e};let te,Qe,Ee=!0;const se=A=>{if(Ee){te=new Int32Array(512),Qe=new Int32Array(32);let I=0;for(;I<144;)A.lens[I++]=8;for(;I<256;)A.lens[I++]=9;for(;I<280;)A.lens[I++]=7;for(;I<288;)A.lens[I++]=8;for(Yg(1,A.lens,0,288,te,0,A.work,{bits:9}),I=0;I<32;)A.lens[I++]=5;Yg(2,A.lens,0,32,Qe,0,A.work,{bits:5}),Ee=!1}A.lencode=te,A.lenbits=9,A.distcode=Qe,A.distbits=5},oe=(A,I,g,e)=>{let B;const i=A.state;return null===i.window&&(i.wsize=1<<i.wbits,i.wnext=0,i.whave=0,i.window=new Uint8Array(i.wsize)),e>=i.wsize?(i.window.set(I.subarray(g-i.wsize,g),0),i.wnext=0,i.whave=i.wsize):(B=i.wsize-i.wnext,B>e&&(B=e),i.window.set(I.subarray(g-e,g-e+B),i.wnext),(e-=B)?(i.window.set(I.subarray(g-e,g),0),i.wnext=e,i.whave=i.wsize):(i.wnext+=B,i.wnext===i.wsize&&(i.wnext=0),i.whave<i.wsize&&(i.whave+=B))),0};var ae={inflateReset:Be,inflateReset2:ie,inflateResetKeep:ee,inflateInit:A=>Ce(A,15),inflateInit2:Ce,inflate:(A,I)=>{let g,e,B,i,C,t,Q,E,s,o,a,r,n,h,l,c,D,w,y,d,f,S,u=0;const G=new Uint8Array(4);let N,F;const k=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(ge(A)||!A.output||!A.input&&0!==A.avail_in)return qg;g=A.state,g.mode===Zg&&(g.mode=jg),C=A.next_out,B=A.output,Q=A.avail_out,i=A.next_in,e=A.input,t=A.avail_in,E=g.hold,s=g.bits,o=t,a=Q,S=Hg;A:for(;;)switch(g.mode){case vg:if(0===g.wrap){g.mode=jg;break}for(;s<16;){if(0===t)break A;t--,E+=e[i++]<<s,s+=8}if(2&g.wrap&&35615===E){0===g.wbits&&(g.wbits=15),g.check=0,G[0]=255&E,G[1]=E>>>8&255,g.check=ng(g.check,G,2,0),E=0,s=0,g.mode=16181;break}if(g.head&&(g.head.done=!1),!(1&g.wrap)||(((255&E)<<8)+(E>>8))%31){A.msg="incorrect header check",g.mode=$g;break}if((15&E)!==Pg){A.msg="unknown compression method",g.mode=$g;break}if(E>>>=4,s-=4,f=8+(15&E),0===g.wbits&&(g.wbits=f),f>15||f>g.wbits){A.msg="invalid window size",g.mode=$g;break}g.dmax=1<<g.wbits,g.flags=0,A.adler=g.check=1,g.mode=512&E?16189:Zg,E=0,s=0;break;case 16181:for(;s<16;){if(0===t)break A;t--,E+=e[i++]<<s,s+=8}if(g.flags=E,(255&g.flags)!==Pg){A.msg="unknown compression method",g.mode=$g;break}if(57344&g.flags){A.msg="unknown header flags set",g.mode=$g;break}g.head&&(g.head.text=E>>8&1),512&g.flags&&4&g.wrap&&(G[0]=255&E,G[1]=E>>>8&255,g.check=ng(g.check,G,2,0)),E=0,s=0,g.mode=16182;case 16182:for(;s<32;){if(0===t)break A;t--,E+=e[i++]<<s,s+=8}g.head&&(g.head.time=E),512&g.flags&&4&g.wrap&&(G[0]=255&E,G[1]=E>>>8&255,G[2]=E>>>16&255,G[3]=E>>>24&255,g.check=ng(g.check,G,4,0)),E=0,s=0,g.mode=16183;case 16183:for(;s<16;){if(0===t)break A;t--,E+=e[i++]<<s,s+=8}g.head&&(g.head.xflags=255&E,g.head.os=E>>8),512&g.flags&&4&g.wrap&&(G[0]=255&E,G[1]=E>>>8&255,g.check=ng(g.check,G,2,0)),E=0,s=0,g.mode=16184;case 16184:if(1024&g.flags){for(;s<16;){if(0===t)break A;t--,E+=e[i++]<<s,s+=8}g.length=E,g.head&&(g.head.extra_len=E),512&g.flags&&4&g.wrap&&(G[0]=255&E,G[1]=E>>>8&255,g.check=ng(g.check,G,2,0)),E=0,s=0}else g.head&&(g.head.extra=null);g.mode=16185;case 16185:if(1024&g.flags&&(r=g.length,r>t&&(r=t),r&&(g.head&&(f=g.head.extra_len-g.length,g.head.extra||(g.head.extra=new Uint8Array(g.head.extra_len)),g.head.extra.set(e.subarray(i,i+r),f)),512&g.flags&&4&g.wrap&&(g.check=ng(g.check,e,r,i)),t-=r,i+=r,g.length-=r),g.length))break A;g.length=0,g.mode=16186;case 16186:if(2048&g.flags){if(0===t)break A;r=0;do{f=e[i+r++],g.head&&f&&g.length<65536&&(g.head.name+=String.fromCharCode(f))}while(f&&r<t);if(512&g.flags&&4&g.wrap&&(g.check=ng(g.check,e,r,i)),t-=r,i+=r,f)break A}else g.head&&(g.head.name=null);g.length=0,g.mode=16187;case 16187:if(4096&g.flags){if(0===t)break A;r=0;do{f=e[i+r++],g.head&&f&&g.length<65536&&(g.head.comment+=String.fromCharCode(f))}while(f&&r<t);if(512&g.flags&&4&g.wrap&&(g.check=ng(g.check,e,r,i)),t-=r,i+=r,f)break A}else g.head&&(g.head.comment=null);g.mode=16188;case 16188:if(512&g.flags){for(;s<16;){if(0===t)break A;t--,E+=e[i++]<<s,s+=8}if(4&g.wrap&&E!==(65535&g.check)){A.msg="header crc mismatch",g.mode=$g;break}E=0,s=0}g.head&&(g.head.hcrc=g.flags>>9&1,g.head.done=!0),A.adler=g.check=0,g.mode=Zg;break;case 16189:for(;s<32;){if(0===t)break A;t--,E+=e[i++]<<s,s+=8}A.adler=g.check=Ae(E),E=0,s=0,g.mode=Vg;case Vg:if(0===g.havedict)return A.next_out=C,A.avail_out=Q,A.next_in=i,A.avail_in=t,g.hold=E,g.bits=s,bg;A.adler=g.check=1,g.mode=Zg;case Zg:if(I===mg||I===Kg)break A;case jg:if(g.last){E>>>=7&s,s-=7&s,g.mode=Xg;break}for(;s<3;){if(0===t)break A;t--,E+=e[i++]<<s,s+=8}switch(g.last=1&E,E>>>=1,s-=1,3&E){case 0:g.mode=16193;break;case 1:if(se(g),g.mode=Wg,I===Kg){E>>>=2,s-=2;break A}break;case 2:g.mode=16196;break;case 3:A.msg="invalid block type",g.mode=$g}E>>>=2,s-=2;break;case 16193:for(E>>>=7&s,s-=7&s;s<32;){if(0===t)break A;t--,E+=e[i++]<<s,s+=8}if((65535&E)!=(E>>>16^65535)){A.msg="invalid stored block lengths",g.mode=$g;break}if(g.length=65535&E,E=0,s=0,g.mode=zg,I===Kg)break A;case zg:g.mode=16195;case 16195:if(r=g.length,r){if(r>t&&(r=t),r>Q&&(r=Q),0===r)break A;B.set(e.subarray(i,i+r),C),t-=r,i+=r,Q-=r,C+=r,g.length-=r;break}g.mode=Zg;break;case 16196:for(;s<14;){if(0===t)break A;t--,E+=e[i++]<<s,s+=8}if(g.nlen=257+(31&E),E>>>=5,s-=5,g.ndist=1+(31&E),E>>>=5,s-=5,g.ncode=4+(15&E),E>>>=4,s-=4,g.nlen>286||g.ndist>30){A.msg="too many length or distance symbols",g.mode=$g;break}g.have=0,g.mode=16197;case 16197:for(;g.have<g.ncode;){for(;s<3;){if(0===t)break A;t--,E+=e[i++]<<s,s+=8}g.lens[k[g.have++]]=7&E,E>>>=3,s-=3}for(;g.have<19;)g.lens[k[g.have++]]=0;if(g.lencode=g.lendyn,g.lenbits=7,N={bits:g.lenbits},S=Yg(0,g.lens,0,19,g.lencode,0,g.work,N),g.lenbits=N.bits,S){A.msg="invalid code lengths set",g.mode=$g;break}g.have=0,g.mode=16198;case 16198:for(;g.have<g.nlen+g.ndist;){for(;u=g.lencode[E&(1<<g.lenbits)-1],l=u>>>24,c=u>>>16&255,D=65535&u,!(l<=s);){if(0===t)break A;t--,E+=e[i++]<<s,s+=8}if(D<16)E>>>=l,s-=l,g.lens[g.have++]=D;else{if(16===D){for(F=l+2;s<F;){if(0===t)break A;t--,E+=e[i++]<<s,s+=8}if(E>>>=l,s-=l,0===g.have){A.msg="invalid bit length repeat",g.mode=$g;break}f=g.lens[g.have-1],r=3+(3&E),E>>>=2,s-=2}else if(17===D){for(F=l+3;s<F;){if(0===t)break A;t--,E+=e[i++]<<s,s+=8}E>>>=l,s-=l,f=0,r=3+(7&E),E>>>=3,s-=3}else{for(F=l+7;s<F;){if(0===t)break A;t--,E+=e[i++]<<s,s+=8}E>>>=l,s-=l,f=0,r=11+(127&E),E>>>=7,s-=7}if(g.have+r>g.nlen+g.ndist){A.msg="invalid bit length repeat",g.mode=$g;break}for(;r--;)g.lens[g.have++]=f}}if(g.mode===$g)break;if(0===g.lens[256]){A.msg="invalid code -- missing end-of-block",g.mode=$g;break}if(g.lenbits=9,N={bits:g.lenbits},S=Yg(1,g.lens,0,g.nlen,g.lencode,0,g.work,N),g.lenbits=N.bits,S){A.msg="invalid literal/lengths set",g.mode=$g;break}if(g.distbits=6,g.distcode=g.distdyn,N={bits:g.distbits},S=Yg(2,g.lens,g.nlen,g.ndist,g.distcode,0,g.work,N),g.distbits=N.bits,S){A.msg="invalid distances set",g.mode=$g;break}if(g.mode=Wg,I===Kg)break A;case Wg:g.mode=_g;case _g:if(t>=6&&Q>=258){A.next_out=C,A.avail_out=Q,A.next_in=i,A.avail_in=t,g.hold=E,g.bits=s,Fg(A,a),C=A.next_out,B=A.output,Q=A.avail_out,i=A.next_in,e=A.input,t=A.avail_in,E=g.hold,s=g.bits,g.mode===Zg&&(g.back=-1);break}for(g.back=0;u=g.lencode[E&(1<<g.lenbits)-1],l=u>>>24,c=u>>>16&255,D=65535&u,!(l<=s);){if(0===t)break A;t--,E+=e[i++]<<s,s+=8}if(c&&!(240&c)){for(w=l,y=c,d=D;u=g.lencode[d+((E&(1<<w+y)-1)>>w)],l=u>>>24,c=u>>>16&255,D=65535&u,!(w+l<=s);){if(0===t)break A;t--,E+=e[i++]<<s,s+=8}E>>>=w,s-=w,g.back+=w}if(E>>>=l,s-=l,g.back+=l,g.length=D,0===c){g.mode=16205;break}if(32&c){g.back=-1,g.mode=Zg;break}if(64&c){A.msg="invalid literal/length code",g.mode=$g;break}g.extra=15&c,g.mode=16201;case 16201:if(g.extra){for(F=g.extra;s<F;){if(0===t)break A;t--,E+=e[i++]<<s,s+=8}g.length+=E&(1<<g.extra)-1,E>>>=g.extra,s-=g.extra,g.back+=g.extra}g.was=g.length,g.mode=16202;case 16202:for(;u=g.distcode[E&(1<<g.distbits)-1],l=u>>>24,c=u>>>16&255,D=65535&u,!(l<=s);){if(0===t)break A;t--,E+=e[i++]<<s,s+=8}if(!(240&c)){for(w=l,y=c,d=D;u=g.distcode[d+((E&(1<<w+y)-1)>>w)],l=u>>>24,c=u>>>16&255,D=65535&u,!(w+l<=s);){if(0===t)break A;t--,E+=e[i++]<<s,s+=8}E>>>=w,s-=w,g.back+=w}if(E>>>=l,s-=l,g.back+=l,64&c){A.msg="invalid distance code",g.mode=$g;break}g.offset=D,g.extra=15&c,g.mode=16203;case 16203:if(g.extra){for(F=g.extra;s<F;){if(0===t)break A;t--,E+=e[i++]<<s,s+=8}g.offset+=E&(1<<g.extra)-1,E>>>=g.extra,s-=g.extra,g.back+=g.extra}if(g.offset>g.dmax){A.msg="invalid distance too far back",g.mode=$g;break}g.mode=16204;case 16204:if(0===Q)break A;if(r=a-Q,g.offset>r){if(r=g.offset-r,r>g.whave&&g.sane){A.msg="invalid distance too far back",g.mode=$g;break}r>g.wnext?(r-=g.wnext,n=g.wsize-r):n=g.wnext-r,r>g.length&&(r=g.length),h=g.window}else h=B,n=C-g.offset,r=g.length;r>Q&&(r=Q),Q-=r,g.length-=r;do{B[C++]=h[n++]}while(--r);0===g.length&&(g.mode=_g);break;case 16205:if(0===Q)break A;B[C++]=g.length,Q--,g.mode=_g;break;case Xg:if(g.wrap){for(;s<32;){if(0===t)break A;t--,E|=e[i++]<<s,s+=8}if(a-=Q,A.total_out+=a,g.total+=a,4&g.wrap&&a&&(A.adler=g.check=g.flags?ng(g.check,B,a,C-a):ag(g.check,B,a,C-a)),a=Q,4&g.wrap&&(g.flags?E:Ae(E))!==g.check){A.msg="incorrect data check",g.mode=$g;break}E=0,s=0}g.mode=16207;case 16207:if(g.wrap&&g.flags){for(;s<32;){if(0===t)break A;t--,E+=e[i++]<<s,s+=8}if(4&g.wrap&&E!==(4294967295&g.total)){A.msg="incorrect length check",g.mode=$g;break}E=0,s=0}g.mode=16208;case 16208:S=Jg;break A;case $g:S=xg;break A;case 16210:return Tg;default:return qg}return A.next_out=C,A.avail_out=Q,A.next_in=i,A.avail_in=t,g.hold=E,g.bits=s,(g.wsize||a!==A.avail_out&&g.mode<$g&&(g.mode<Xg||I!==Mg))&&oe(A,A.output,A.next_out,a-A.avail_out),o-=A.avail_in,a-=A.avail_out,A.total_in+=o,A.total_out+=a,g.total+=a,4&g.wrap&&a&&(A.adler=g.check=g.flags?ng(g.check,B,a,A.next_out-a):ag(g.check,B,a,A.next_out-a)),A.data_type=g.bits+(g.last?64:0)+(g.mode===Zg?128:0)+(g.mode===Wg||g.mode===zg?256:0),(0===o&&0===a||I===Mg)&&S===Hg&&(S=Og),S},inflateEnd:A=>{if(ge(A))return qg;let I=A.state;return I.window&&(I.window=null),A.state=null,Hg},inflateGetHeader:(A,I)=>{if(ge(A))return qg;const g=A.state;return 2&g.wrap?(g.head=I,I.done=!1,Hg):qg},inflateSetDictionary:(A,I)=>{const g=I.length;let e,B,i;return ge(A)?qg:(e=A.state,0!==e.wrap&&e.mode!==Vg?qg:e.mode===Vg&&(B=1,B=ag(B,I,g,0),B!==e.check)?xg:(i=oe(A,I,g,g),i?(e.mode=16210,Tg):(e.havedict=1,Hg)))},inflateInfo:"pako inflate (from Nodeca project)"};var re=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1};const ne=Object.prototype.toString,{Z_NO_FLUSH:he,Z_FINISH:le,Z_OK:ce,Z_STREAM_END:De,Z_NEED_DICT:we,Z_STREAM_ERROR:ye,Z_DATA_ERROR:de,Z_MEM_ERROR:fe}=lg;function Se(A){this.options=Dg({chunkSize:65536,windowBits:15,to:""},A||{});const I=this.options;I.raw&&I.windowBits>=0&&I.windowBits<16&&(I.windowBits=-I.windowBits,0===I.windowBits&&(I.windowBits=-15)),!(I.windowBits>=0&&I.windowBits<16)||A&&A.windowBits||(I.windowBits+=32),I.windowBits>15&&I.windowBits<48&&(15&I.windowBits||(I.windowBits|=15)),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new Gg,this.strm.avail_out=0;let g=ae.inflateInit2(this.strm,I.windowBits);if(g!==ce)throw new Error(hg[g]);if(this.header=new re,ae.inflateGetHeader(this.strm,this.header),I.dictionary&&("string"==typeof I.dictionary?I.dictionary=fg(I.dictionary):"[object ArrayBuffer]"===ne.call(I.dictionary)&&(I.dictionary=new Uint8Array(I.dictionary)),I.raw&&(g=ae.inflateSetDictionary(this.strm,I.dictionary),g!==ce)))throw new Error(hg[g])}Se.prototype.push=function(A,I){const g=this.strm,e=this.options.chunkSize,B=this.options.dictionary;let i,C,t;if(this.ended)return!1;for(C=I===~~I?I:!0===I?le:he,"[object ArrayBuffer]"===ne.call(A)?g.input=new Uint8Array(A):g.input=A,g.next_in=0,g.avail_in=g.input.length;;){for(0===g.avail_out&&(g.output=new Uint8Array(e),g.next_out=0,g.avail_out=e),i=ae.inflate(g,C),i===we&&B&&(i=ae.inflateSetDictionary(g,B),i===ce?i=ae.inflate(g,C):i===de&&(i=we));g.avail_in>0&&i===De&&g.state.wrap>0&&0!==A[g.next_in];)ae.inflateReset(g),i=ae.inflate(g,C);switch(i){case ye:case de:case we:case fe:return this.onEnd(i),this.ended=!0,!1}if(t=g.avail_out,g.next_out&&(0===g.avail_out||i===De))if("string"===this.options.to){let A=ug(g.output,g.next_out),I=g.next_out-A,B=Sg(g.output,A);g.next_out=I,g.avail_out=e-I,I&&g.output.set(g.output.subarray(A,A+I),0),this.onData(B)}else this.onData(g.output.length===g.next_out?g.output:g.output.subarray(0,g.next_out));if(i!==ce||0!==t){if(i===De)return i=ae.inflateEnd(this.strm),this.onEnd(i),this.ended=!0,!0;if(0===g.avail_in)break}}return!0},Se.prototype.onData=function(A){this.chunks.push(A)},Se.prototype.onEnd=function(A){A===ce&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=wg(this.chunks)),this.chunks=[],this.err=A,this.msg=this.strm.msg};var ue={inflate:function(A,I){const g=new Se(I);if(g.push(A),g.err)throw g.msg||hg[g.err];return g.result}};const{inflate:Ge}=ue;var Ne=Ge;var Fe=Object.freeze({__proto__:null,default:class extends lI{decodeBlock(A){return Ne(new Uint8Array(A)).buffer}}});var ke=Object.freeze({__proto__:null,default:class extends lI{decodeBlock(A){const I=new DataView(A),g=[];for(let e=0;e<A.byteLength;++e){let A=I.getInt8(e);if(A<0){const B=I.getUint8(e+1);A=-A;for(let I=0;I<=A;++I)g.push(B);e+=1}else{for(let B=0;B<=A;++B)g.push(I.getUint8(e+B+1));e+=A+1}}return new Uint8Array(g).buffer}}});function Re(A){return A&&A.__esModule&&Object.prototype.hasOwnProperty.call(A,"default")?A.default:A}var Le,Ue={exports:{}};var pe,Ye=(Le||(Le=1,pe=Ue,
|
|
2
2
|
/* Copyright 2015-2021 Esri. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 @preserve */
|
|
3
|
-
function(){var A,I,g,B,e,C,i,t,Q,E,s,o,a,r,n,h,l=(A={defaultNoDataValue:-34027999387901484e22,decode:function(C,i){var t=(i=i||{}).encodedMaskData||null===i.encodedMaskData,Q=e(C,i.inputOffset||0,t),E=null!==i.noDataValue?i.noDataValue:A.defaultNoDataValue,s=I(Q,i.pixelType||Float32Array,i.encodedMaskData,E,i.returnMask),o={width:Q.width,height:Q.height,pixelData:s.resultPixels,minValue:s.minValue,maxValue:Q.pixels.maxValue,noDataValue:E};return s.resultMask&&(o.maskData=s.resultMask),i.returnEncodedMask&&Q.mask&&(o.encodedMaskData=Q.mask.bitset?Q.mask.bitset:null),i.returnFileInfo&&(o.fileInfo=g(Q),i.computeUsedBitDepths&&(o.fileInfo.bitDepths=B(Q))),o}},I=function(A,I,g,B,e){var i,t,Q,E=0,s=A.pixels.numBlocksX,o=A.pixels.numBlocksY,a=Math.floor(A.width/s),r=Math.floor(A.height/o),n=2*A.maxZError,h=Number.MAX_VALUE;g=g||(A.mask?A.mask.bitset:null),t=new I(A.width*A.height),e&&g&&(Q=new Uint8Array(A.width*A.height));for(var l,c,D=new Float32Array(a*r),w=0;w<=o;w++){var y=w!==o?r:A.height%o;if(0!==y)for(var d=0;d<=s;d++){var f=d!==s?a:A.width%s;if(0!==f){var S,u,G,N,F=w*A.width*r+d*a,k=A.width-f,R=A.pixels.blocks[E];if(R.encoding<2?(0===R.encoding?S=R.rawData:(C(R.stuffedData,R.bitsPerPixel,R.numValidPixels,R.offset,n,D,A.pixels.maxValue),S=D),u=0):G=2===R.encoding?0:R.offset,g)for(c=0;c<y;c++){for(7&F&&(N=g[F>>3],N<<=7&F),l=0;l<f;l++)7&F||(N=g[F>>3]),128&N?(Q&&(Q[F]=1),h=h>(i=R.encoding<2?S[u++]:G)?i:h,t[F++]=i):(Q&&(Q[F]=0),t[F++]=B),N<<=1;F+=k}else if(R.encoding<2)for(c=0;c<y;c++){for(l=0;l<f;l++)h=h>(i=S[u++])?i:h,t[F++]=i;F+=k}else for(h=h>G?G:h,c=0;c<y;c++){for(l=0;l<f;l++)t[F++]=G;F+=k}if(1===R.encoding&&u!==R.numValidPixels)throw"Block and Mask do not match";E++}}}return{resultPixels:t,resultMask:Q,minValue:h}},g=function(A){return{fileIdentifierString:A.fileIdentifierString,fileVersion:A.fileVersion,imageType:A.imageType,height:A.height,width:A.width,maxZError:A.maxZError,eofOffset:A.eofOffset,mask:A.mask?{numBlocksX:A.mask.numBlocksX,numBlocksY:A.mask.numBlocksY,numBytes:A.mask.numBytes,maxValue:A.mask.maxValue}:null,pixels:{numBlocksX:A.pixels.numBlocksX,numBlocksY:A.pixels.numBlocksY,numBytes:A.pixels.numBytes,maxValue:A.pixels.maxValue,noDataValue:A.noDataValue}}},B=function(A){for(var I=A.pixels.numBlocksX*A.pixels.numBlocksY,g={},B=0;B<I;B++){var e=A.pixels.blocks[B];0===e.encoding?g.float32=!0:1===e.encoding?g[e.bitsPerPixel]=!0:g[0]=!0}return Object.keys(g)},e=function(A,I,g){var B={},e=new Uint8Array(A,I,10);if(B.fileIdentifierString=String.fromCharCode.apply(null,e),"CntZImage"!==B.fileIdentifierString.trim())throw"Unexpected file identifier string: "+B.fileIdentifierString;I+=10;var C=new DataView(A,I,24);if(B.fileVersion=C.getInt32(0,!0),B.imageType=C.getInt32(4,!0),B.height=C.getUint32(8,!0),B.width=C.getUint32(12,!0),B.maxZError=C.getFloat64(16,!0),I+=24,!g)if(C=new DataView(A,I,16),B.mask={},B.mask.numBlocksY=C.getUint32(0,!0),B.mask.numBlocksX=C.getUint32(4,!0),B.mask.numBytes=C.getUint32(8,!0),B.mask.maxValue=C.getFloat32(12,!0),I+=16,B.mask.numBytes>0){var i=new Uint8Array(Math.ceil(B.width*B.height/8)),t=(C=new DataView(A,I,B.mask.numBytes)).getInt16(0,!0),Q=2,E=0;do{if(t>0)for(;t--;)i[E++]=C.getUint8(Q++);else{var s=C.getUint8(Q++);for(t=-t;t--;)i[E++]=s}t=C.getInt16(Q,!0),Q+=2}while(Q<B.mask.numBytes);if(-32768!==t||E<i.length)throw"Unexpected end of mask RLE encoding";B.mask.bitset=i,I+=B.mask.numBytes}else 0===(B.mask.numBytes|B.mask.numBlocksY|B.mask.maxValue)&&(B.mask.bitset=new Uint8Array(Math.ceil(B.width*B.height/8)));C=new DataView(A,I,16),B.pixels={},B.pixels.numBlocksY=C.getUint32(0,!0),B.pixels.numBlocksX=C.getUint32(4,!0),B.pixels.numBytes=C.getUint32(8,!0),B.pixels.maxValue=C.getFloat32(12,!0),I+=16;var o=B.pixels.numBlocksX,a=B.pixels.numBlocksY,r=o+(B.width%o>0?1:0),n=a+(B.height%a>0?1:0);B.pixels.blocks=new Array(r*n);for(var h=0,l=0;l<n;l++)for(var c=0;c<r;c++){var D=0,w=A.byteLength-I;C=new DataView(A,I,Math.min(10,w));var y={};B.pixels.blocks[h++]=y;var d=C.getUint8(0);if(D++,y.encoding=63&d,y.encoding>3)throw"Invalid block encoding ("+y.encoding+")";if(2!==y.encoding){if(0!==d&&2!==d){if(d>>=6,y.offsetType=d,2===d)y.offset=C.getInt8(1),D++;else if(1===d)y.offset=C.getInt16(1,!0),D+=2;else{if(0!==d)throw"Invalid block offset type";y.offset=C.getFloat32(1,!0),D+=4}if(1===y.encoding)if(d=C.getUint8(D),D++,y.bitsPerPixel=63&d,d>>=6,y.numValidPixelsType=d,2===d)y.numValidPixels=C.getUint8(D),D++;else if(1===d)y.numValidPixels=C.getUint16(D,!0),D+=2;else{if(0!==d)throw"Invalid valid pixel count type";y.numValidPixels=C.getUint32(D,!0),D+=4}}var f;if(I+=D,3!==y.encoding)if(0===y.encoding){var S=(B.pixels.numBytes-1)/4;if(S!==Math.floor(S))throw"uncompressed block has invalid length";f=new ArrayBuffer(4*S),new Uint8Array(f).set(new Uint8Array(A,I,4*S));var u=new Float32Array(f);y.rawData=u,I+=4*S}else if(1===y.encoding){var G=Math.ceil(y.numValidPixels*y.bitsPerPixel/8),N=Math.ceil(G/4);f=new ArrayBuffer(4*N),new Uint8Array(f).set(new Uint8Array(A,I,G)),y.stuffedData=new Uint32Array(f),I+=G}}else I++}return B.eofOffset=I,B},C=function(A,I,g,B,e,C,i){var t,Q,E,s=(1<<I)-1,o=0,a=0,r=Math.ceil((i-B)/e),n=4*A.length-Math.ceil(I*g/8);for(A[A.length-1]<<=8*n,t=0;t<g;t++){if(0===a&&(E=A[o++],a=32),a>=I)Q=E>>>a-I&s,a-=I;else{var h=I-a;Q=(E&s)<<h&s,Q+=(E=A[o++])>>>(a=32-h)}C[t]=Q<r?B+Q*e:i}return C},A),c=(i=function(A,I,g,B,e,C,i,t){var Q,E,s,o,a,r=(1<<g)-1,n=0,h=0,l=4*A.length-Math.ceil(g*B/8);if(A[A.length-1]<<=8*l,e)for(Q=0;Q<B;Q++)0===h&&(s=A[n++],h=32),h>=g?(E=s>>>h-g&r,h-=g):(E=(s&r)<<(o=g-h)&r,E+=(s=A[n++])>>>(h=32-o)),I[Q]=e[E];else for(a=Math.ceil((t-C)/i),Q=0;Q<B;Q++)0===h&&(s=A[n++],h=32),h>=g?(E=s>>>h-g&r,h-=g):(E=(s&r)<<(o=g-h)&r,E+=(s=A[n++])>>>(h=32-o)),I[Q]=E<a?C+E*i:t},t=function(A,I,g,B,e,C){var i,t=(1<<I)-1,Q=0,E=0,s=0,o=0,a=0,r=[],n=4*A.length-Math.ceil(I*g/8);A[A.length-1]<<=8*n;var h=Math.ceil((C-B)/e);for(E=0;E<g;E++)0===o&&(i=A[Q++],o=32),o>=I?(a=i>>>o-I&t,o-=I):(a=(i&t)<<(s=I-o)&t,a+=(i=A[Q++])>>>(o=32-s)),r[E]=a<h?B+a*e:C;return r.unshift(B),r},Q=function(A,I,g,B,e,C,i,t){var Q,E,s,o,a=(1<<g)-1,r=0,n=0,h=0;if(e)for(Q=0;Q<B;Q++)0===n&&(s=A[r++],n=32,h=0),n>=g?(E=s>>>h&a,n-=g,h+=g):(E=s>>>h&a,n=32-(o=g-n),E|=((s=A[r++])&(1<<o)-1)<<g-o,h=o),I[Q]=e[E];else{var l=Math.ceil((t-C)/i);for(Q=0;Q<B;Q++)0===n&&(s=A[r++],n=32,h=0),n>=g?(E=s>>>h&a,n-=g,h+=g):(E=s>>>h&a,n=32-(o=g-n),E|=((s=A[r++])&(1<<o)-1)<<g-o,h=o),I[Q]=E<l?C+E*i:t}return I},E=function(A,I,g,B,e,C){var i,t=(1<<I)-1,Q=0,E=0,s=0,o=0,a=0,r=0,n=[],h=Math.ceil((C-B)/e);for(E=0;E<g;E++)0===o&&(i=A[Q++],o=32,r=0),o>=I?(a=i>>>r&t,o-=I,r+=I):(a=i>>>r&t,o=32-(s=I-o),a|=((i=A[Q++])&(1<<s)-1)<<I-s,r=s),n[E]=a<h?B+a*e:C;return n.unshift(B),n},s=function(A,I,g,B){var e,C,i,t,Q=(1<<g)-1,E=0,s=0,o=4*A.length-Math.ceil(g*B/8);for(A[A.length-1]<<=8*o,e=0;e<B;e++)0===s&&(i=A[E++],s=32),s>=g?(C=i>>>s-g&Q,s-=g):(C=(i&Q)<<(t=g-s)&Q,C+=(i=A[E++])>>>(s=32-t)),I[e]=C;return I},o=function(A,I,g,B){var e,C,i,t,Q=(1<<g)-1,E=0,s=0,o=0;for(e=0;e<B;e++)0===s&&(i=A[E++],s=32,o=0),s>=g?(C=i>>>o&Q,s-=g,o+=g):(C=i>>>o&Q,s=32-(t=g-s),C|=((i=A[E++])&(1<<t)-1)<<g-t,o=t),I[e]=C;return I},a={HUFFMAN_LUT_BITS_MAX:12,computeChecksumFletcher32:function(A){for(var I=65535,g=65535,B=A.length,e=Math.floor(B/2),C=0;e;){var i=e>=359?359:e;e-=i;do{I+=A[C++]<<8,g+=I+=A[C++]}while(--i);I=(65535&I)+(I>>>16),g=(65535&g)+(g>>>16)}return 1&B&&(g+=I+=A[C]<<8),((g=(65535&g)+(g>>>16))<<16|(I=(65535&I)+(I>>>16)))>>>0},readHeaderInfo:function(A,I){var g=I.ptr,B=new Uint8Array(A,g,6),e={};if(e.fileIdentifierString=String.fromCharCode.apply(null,B),0!==e.fileIdentifierString.lastIndexOf("Lerc2",0))throw"Unexpected file identifier string (expect Lerc2 ): "+e.fileIdentifierString;g+=6;var C,i=new DataView(A,g,8),t=i.getInt32(0,!0);if(e.fileVersion=t,g+=4,t>=3&&(e.checksum=i.getUint32(4,!0),g+=4),i=new DataView(A,g,12),e.height=i.getUint32(0,!0),e.width=i.getUint32(4,!0),g+=8,t>=4?(e.numDims=i.getUint32(8,!0),g+=4):e.numDims=1,i=new DataView(A,g,40),e.numValidPixel=i.getUint32(0,!0),e.microBlockSize=i.getInt32(4,!0),e.blobSize=i.getInt32(8,!0),e.imageType=i.getInt32(12,!0),e.maxZError=i.getFloat64(16,!0),e.zMin=i.getFloat64(24,!0),e.zMax=i.getFloat64(32,!0),g+=40,I.headerInfo=e,I.ptr=g,t>=3&&(C=t>=4?52:48,this.computeChecksumFletcher32(new Uint8Array(A,g-C,e.blobSize-14))!==e.checksum))throw"Checksum failed.";return!0},checkMinMaxRanges:function(A,I){var g=I.headerInfo,B=this.getDataTypeArray(g.imageType),e=g.numDims*this.getDataTypeSize(g.imageType),C=this.readSubArray(A,I.ptr,B,e),i=this.readSubArray(A,I.ptr+e,B,e);I.ptr+=2*e;var t,Q=!0;for(t=0;t<g.numDims;t++)if(C[t]!==i[t]){Q=!1;break}return g.minValues=C,g.maxValues=i,Q},readSubArray:function(A,I,g,B){var e;if(g===Uint8Array)e=new Uint8Array(A,I,B);else{var C=new ArrayBuffer(B);new Uint8Array(C).set(new Uint8Array(A,I,B)),e=new g(C)}return e},readMask:function(A,I){var g,B,e=I.ptr,C=I.headerInfo,i=C.width*C.height,t=C.numValidPixel,Q=new DataView(A,e,4),E={};if(E.numBytes=Q.getUint32(0,!0),e+=4,(0===t||i===t)&&0!==E.numBytes)throw"invalid mask";if(0===t)g=new Uint8Array(Math.ceil(i/8)),E.bitset=g,B=new Uint8Array(i),I.pixels.resultMask=B,e+=E.numBytes;else if(E.numBytes>0){g=new Uint8Array(Math.ceil(i/8));var s=(Q=new DataView(A,e,E.numBytes)).getInt16(0,!0),o=2,a=0,r=0;do{if(s>0)for(;s--;)g[a++]=Q.getUint8(o++);else for(r=Q.getUint8(o++),s=-s;s--;)g[a++]=r;s=Q.getInt16(o,!0),o+=2}while(o<E.numBytes);if(-32768!==s||a<g.length)throw"Unexpected end of mask RLE encoding";B=new Uint8Array(i);var n=0,h=0;for(h=0;h<i;h++)7&h?(n=g[h>>3],n<<=7&h):n=g[h>>3],128&n&&(B[h]=1);I.pixels.resultMask=B,E.bitset=g,e+=E.numBytes}return I.ptr=e,I.mask=E,!0},readDataOneSweep:function(A,I,g,B){var e,C=I.ptr,i=I.headerInfo,t=i.numDims,Q=i.width*i.height,E=i.imageType,s=i.numValidPixel*a.getDataTypeSize(E)*t,o=I.pixels.resultMask;if(g===Uint8Array)e=new Uint8Array(A,C,s);else{var r=new ArrayBuffer(s);new Uint8Array(r).set(new Uint8Array(A,C,s)),e=new g(r)}if(e.length===Q*t)I.pixels.resultPixels=B?a.swapDimensionOrder(e,Q,t,g,!0):e;else{I.pixels.resultPixels=new g(Q*t);var n=0,h=0,l=0,c=0;if(t>1){if(B){for(h=0;h<Q;h++)if(o[h])for(c=h,l=0;l<t;l++,c+=Q)I.pixels.resultPixels[c]=e[n++]}else for(h=0;h<Q;h++)if(o[h])for(c=h*t,l=0;l<t;l++)I.pixels.resultPixels[c+l]=e[n++]}else for(h=0;h<Q;h++)o[h]&&(I.pixels.resultPixels[h]=e[n++])}return C+=s,I.ptr=C,!0},readHuffmanTree:function(A,I){var g=this.HUFFMAN_LUT_BITS_MAX,B=new DataView(A,I.ptr,16);if(I.ptr+=16,B.getInt32(0,!0)<2)throw"unsupported Huffman version";var e=B.getInt32(4,!0),C=B.getInt32(8,!0),i=B.getInt32(12,!0);if(C>=i)return!1;var t=new Uint32Array(i-C);a.decodeBits(A,I,t);var Q,E,s,o,n=[];for(Q=C;Q<i;Q++)n[E=Q-(Q<e?0:e)]={first:t[Q-C],second:null};var h=A.byteLength-I.ptr,l=Math.ceil(h/4),c=new ArrayBuffer(4*l);new Uint8Array(c).set(new Uint8Array(A,I.ptr,h));var D,w=new Uint32Array(c),y=0,d=0;for(D=w[0],Q=C;Q<i;Q++)(o=n[E=Q-(Q<e?0:e)].first)>0&&(n[E].second=D<<y>>>32-o,32-y>=o?32===(y+=o)&&(y=0,D=w[++d]):(y+=o-32,D=w[++d],n[E].second|=D>>>32-y));var f=0,S=0,u=new r;for(Q=0;Q<n.length;Q++)void 0!==n[Q]&&(f=Math.max(f,n[Q].first));S=f>=g?g:f;var G,N,F,k,R,L=[];for(Q=C;Q<i;Q++)if((o=n[E=Q-(Q<e?0:e)].first)>0)if(G=[o,E],o<=S)for(N=n[E].second<<S-o,F=1<<S-o,s=0;s<F;s++)L[N|s]=G;else for(N=n[E].second,R=u,k=o-1;k>=0;k--)N>>>k&1?(R.right||(R.right=new r),R=R.right):(R.left||(R.left=new r),R=R.left),0!==k||R.val||(R.val=G[1]);return{decodeLut:L,numBitsLUTQick:S,numBitsLUT:f,tree:u,stuffedData:w,srcPtr:d,bitPos:y}},readHuffman:function(A,I,g,B){var e,C,i,t,Q,E,s,o,r,n=I.headerInfo.numDims,h=I.headerInfo.height,l=I.headerInfo.width,c=l*h,D=this.readHuffmanTree(A,I),w=D.decodeLut,y=D.tree,d=D.stuffedData,f=D.srcPtr,S=D.bitPos,u=D.numBitsLUTQick,G=D.numBitsLUT,N=0===I.headerInfo.imageType?128:0,F=I.pixels.resultMask,k=0;S>0&&(f++,S=0);var R,L=d[f],U=1===I.encodeMode,p=new g(c*n),Y=p;if(n<2||U){for(R=0;R<n;R++)if(n>1&&(Y=new g(p.buffer,c*R,c),k=0),I.headerInfo.numValidPixel===l*h)for(o=0,E=0;E<h;E++)for(s=0;s<l;s++,o++){if(C=0,Q=t=L<<S>>>32-u,32-S<u&&(Q=t|=d[f+1]>>>64-S-u),w[Q])C=w[Q][1],S+=w[Q][0];else for(Q=t=L<<S>>>32-G,32-S<G&&(Q=t|=d[f+1]>>>64-S-G),e=y,r=0;r<G;r++)if(!(e=t>>>G-r-1&1?e.right:e.left).left&&!e.right){C=e.val,S=S+r+1;break}S>=32&&(S-=32,L=d[++f]),i=C-N,U?(i+=s>0?k:E>0?Y[o-l]:k,i&=255,Y[o]=i,k=i):Y[o]=i}else for(o=0,E=0;E<h;E++)for(s=0;s<l;s++,o++)if(F[o]){if(C=0,Q=t=L<<S>>>32-u,32-S<u&&(Q=t|=d[f+1]>>>64-S-u),w[Q])C=w[Q][1],S+=w[Q][0];else for(Q=t=L<<S>>>32-G,32-S<G&&(Q=t|=d[f+1]>>>64-S-G),e=y,r=0;r<G;r++)if(!(e=t>>>G-r-1&1?e.right:e.left).left&&!e.right){C=e.val,S=S+r+1;break}S>=32&&(S-=32,L=d[++f]),i=C-N,U?(s>0&&F[o-1]?i+=k:E>0&&F[o-l]?i+=Y[o-l]:i+=k,i&=255,Y[o]=i,k=i):Y[o]=i}}else for(o=0,E=0;E<h;E++)for(s=0;s<l;s++)if(o=E*l+s,!F||F[o])for(R=0;R<n;R++,o+=c){if(C=0,Q=t=L<<S>>>32-u,32-S<u&&(Q=t|=d[f+1]>>>64-S-u),w[Q])C=w[Q][1],S+=w[Q][0];else for(Q=t=L<<S>>>32-G,32-S<G&&(Q=t|=d[f+1]>>>64-S-G),e=y,r=0;r<G;r++)if(!(e=t>>>G-r-1&1?e.right:e.left).left&&!e.right){C=e.val,S=S+r+1;break}S>=32&&(S-=32,L=d[++f]),i=C-N,Y[o]=i}I.ptr=I.ptr+4*(f+1)+(S>0?4:0),I.pixels.resultPixels=p,n>1&&!B&&(I.pixels.resultPixels=a.swapDimensionOrder(p,c,n,g))},decodeBits:function(A,I,g,B,e){var C=I.headerInfo,a=C.fileVersion,r=0,n=A.byteLength-I.ptr>=5?5:A.byteLength-I.ptr,h=new DataView(A,I.ptr,n),l=h.getUint8(0);r++;var c=l>>6,D=0===c?4:3-c,w=(32&l)>0,y=31&l,d=0;if(1===D)d=h.getUint8(r),r++;else if(2===D)d=h.getUint16(r,!0),r+=2;else{if(4!==D)throw"Invalid valid pixel count type";d=h.getUint32(r,!0),r+=4}var f,S,u,G,N,F,k,R,L,U=2*C.maxZError,p=C.numDims>1?C.maxValues[e]:C.zMax;if(w){for(I.counter.lut++,R=h.getUint8(r),r++,G=Math.ceil((R-1)*y/8),N=Math.ceil(G/4),S=new ArrayBuffer(4*N),u=new Uint8Array(S),I.ptr+=r,u.set(new Uint8Array(A,I.ptr,G)),k=new Uint32Array(S),I.ptr+=G,L=0;R-1>>>L;)L++;G=Math.ceil(d*L/8),N=Math.ceil(G/4),S=new ArrayBuffer(4*N),(u=new Uint8Array(S)).set(new Uint8Array(A,I.ptr,G)),f=new Uint32Array(S),I.ptr+=G,F=a>=3?E(k,y,R-1,B,U,p):t(k,y,R-1,B,U,p),a>=3?Q(f,g,L,d,F):i(f,g,L,d,F)}else I.counter.bitstuffer++,L=y,I.ptr+=r,L>0&&(G=Math.ceil(d*L/8),N=Math.ceil(G/4),S=new ArrayBuffer(4*N),(u=new Uint8Array(S)).set(new Uint8Array(A,I.ptr,G)),f=new Uint32Array(S),I.ptr+=G,a>=3?null==B?o(f,g,L,d):Q(f,g,L,d,!1,B,U,p):null==B?s(f,g,L,d):i(f,g,L,d,!1,B,U,p))},readTiles:function(A,I,g,B){var e=I.headerInfo,C=e.width,i=e.height,t=C*i,Q=e.microBlockSize,E=e.imageType,s=a.getDataTypeSize(E),o=Math.ceil(C/Q),r=Math.ceil(i/Q);I.pixels.numBlocksY=r,I.pixels.numBlocksX=o,I.pixels.ptr=0;var n,h,l,c,D,w,y,d,f,S,u=0,G=0,N=0,F=0,k=0,R=0,L=0,U=0,p=0,Y=0,M=0,m=0,K=0,H=0,J=0,b=new g(Q*Q),q=i%Q||Q,x=C%Q||Q,T=e.numDims,O=I.pixels.resultMask,P=I.pixels.resultPixels,v=e.fileVersion>=5?14:15,V=e.zMax;for(N=0;N<r;N++)for(k=N!==r-1?Q:q,F=0;F<o;F++)for(Y=N*C*Q+F*Q,M=C-(R=F!==o-1?Q:x),d=0;d<T;d++){if(T>1?(S=P,Y=N*C*Q+F*Q,P=new g(I.pixels.resultPixels.buffer,t*d*s,t),V=e.maxValues[d]):S=null,L=A.byteLength-I.ptr,h={},J=0,U=(n=new DataView(A,I.ptr,Math.min(10,L))).getUint8(0),J++,f=e.fileVersion>=5?4&U:0,p=U>>6&255,(U>>2&v)!=(F*Q>>3&v))throw"integrity issue";if(f&&0===d)throw"integrity issue";if((D=3&U)>3)throw I.ptr+=J,"Invalid block encoding ("+D+")";if(2!==D)if(0===D){if(f)throw"integrity issue";if(I.counter.uncompressed++,I.ptr+=J,m=(m=k*R*s)<(K=A.byteLength-I.ptr)?m:K,l=new ArrayBuffer(m%s===0?m:m+s-m%s),new Uint8Array(l).set(new Uint8Array(A,I.ptr,m)),c=new g(l),H=0,O)for(u=0;u<k;u++){for(G=0;G<R;G++)O[Y]&&(P[Y]=c[H++]),Y++;Y+=M}else for(u=0;u<k;u++){for(G=0;G<R;G++)P[Y++]=c[H++];Y+=M}I.ptr+=H*s}else if(w=a.getDataTypeUsed(f&&E<6?4:E,p),y=a.getOnePixel(h,J,w,n),J+=a.getDataTypeSize(w),3===D)if(I.ptr+=J,I.counter.constantoffset++,O)for(u=0;u<k;u++){for(G=0;G<R;G++)O[Y]&&(P[Y]=f?Math.min(V,S[Y]+y):y),Y++;Y+=M}else for(u=0;u<k;u++){for(G=0;G<R;G++)P[Y]=f?Math.min(V,S[Y]+y):y,Y++;Y+=M}else if(I.ptr+=J,a.decodeBits(A,I,b,y,d),J=0,f)if(O)for(u=0;u<k;u++){for(G=0;G<R;G++)O[Y]&&(P[Y]=b[J++]+S[Y]),Y++;Y+=M}else for(u=0;u<k;u++){for(G=0;G<R;G++)P[Y]=b[J++]+S[Y],Y++;Y+=M}else if(O)for(u=0;u<k;u++){for(G=0;G<R;G++)O[Y]&&(P[Y]=b[J++]),Y++;Y+=M}else for(u=0;u<k;u++){for(G=0;G<R;G++)P[Y++]=b[J++];Y+=M}else{if(f)if(O)for(u=0;u<k;u++)for(G=0;G<R;G++)O[Y]&&(P[Y]=S[Y]),Y++;else for(u=0;u<k;u++)for(G=0;G<R;G++)P[Y]=S[Y],Y++;I.counter.constant++,I.ptr+=J}}T>1&&!B&&(I.pixels.resultPixels=a.swapDimensionOrder(I.pixels.resultPixels,t,T,g))},formatFileInfo:function(A){return{fileIdentifierString:A.headerInfo.fileIdentifierString,fileVersion:A.headerInfo.fileVersion,imageType:A.headerInfo.imageType,height:A.headerInfo.height,width:A.headerInfo.width,numValidPixel:A.headerInfo.numValidPixel,microBlockSize:A.headerInfo.microBlockSize,blobSize:A.headerInfo.blobSize,maxZError:A.headerInfo.maxZError,pixelType:a.getPixelType(A.headerInfo.imageType),eofOffset:A.eofOffset,mask:A.mask?{numBytes:A.mask.numBytes}:null,pixels:{numBlocksX:A.pixels.numBlocksX,numBlocksY:A.pixels.numBlocksY,maxValue:A.headerInfo.zMax,minValue:A.headerInfo.zMin,noDataValue:A.noDataValue}}},constructConstantSurface:function(A,I){var g=A.headerInfo.zMax,B=A.headerInfo.zMin,e=A.headerInfo.maxValues,C=A.headerInfo.numDims,i=A.headerInfo.height*A.headerInfo.width,t=0,Q=0,E=0,s=A.pixels.resultMask,o=A.pixels.resultPixels;if(s)if(C>1){if(I)for(t=0;t<C;t++)for(E=t*i,g=e[t],Q=0;Q<i;Q++)s[Q]&&(o[E+Q]=g);else for(Q=0;Q<i;Q++)if(s[Q])for(E=Q*C,t=0;t<C;t++)o[E+C]=e[t]}else for(Q=0;Q<i;Q++)s[Q]&&(o[Q]=g);else if(C>1&&B!==g)if(I)for(t=0;t<C;t++)for(E=t*i,g=e[t],Q=0;Q<i;Q++)o[E+Q]=g;else for(Q=0;Q<i;Q++)for(E=Q*C,t=0;t<C;t++)o[E+t]=e[t];else for(Q=0;Q<i*C;Q++)o[Q]=g},getDataTypeArray:function(A){var I;switch(A){case 0:I=Int8Array;break;case 1:I=Uint8Array;break;case 2:I=Int16Array;break;case 3:I=Uint16Array;break;case 4:I=Int32Array;break;case 5:I=Uint32Array;break;case 6:default:I=Float32Array;break;case 7:I=Float64Array}return I},getPixelType:function(A){var I;switch(A){case 0:I="S8";break;case 1:I="U8";break;case 2:I="S16";break;case 3:I="U16";break;case 4:I="S32";break;case 5:I="U32";break;case 6:default:I="F32";break;case 7:I="F64"}return I},isValidPixelValue:function(A,I){if(null==I)return!1;var g;switch(A){case 0:g=I>=-128&&I<=127;break;case 1:g=I>=0&&I<=255;break;case 2:g=I>=-32768&&I<=32767;break;case 3:g=I>=0&&I<=65536;break;case 4:g=I>=-2147483648&&I<=2147483647;break;case 5:g=I>=0&&I<=4294967296;break;case 6:g=I>=-34027999387901484e22&&I<=34027999387901484e22;break;case 7:g=I>=-17976931348623157e292&&I<=17976931348623157e292;break;default:g=!1}return g},getDataTypeSize:function(A){var I=0;switch(A){case 0:case 1:I=1;break;case 2:case 3:I=2;break;case 4:case 5:case 6:I=4;break;case 7:I=8;break;default:I=A}return I},getDataTypeUsed:function(A,I){var g=A;switch(A){case 2:case 4:g=A-I;break;case 3:case 5:g=A-2*I;break;case 6:g=0===I?A:1===I?2:1;break;case 7:g=0===I?A:A-2*I+1;break;default:g=A}return g},getOnePixel:function(A,I,g,B){var e=0;switch(g){case 0:e=B.getInt8(I);break;case 1:e=B.getUint8(I);break;case 2:e=B.getInt16(I,!0);break;case 3:e=B.getUint16(I,!0);break;case 4:e=B.getInt32(I,!0);break;case 5:e=B.getUInt32(I,!0);break;case 6:e=B.getFloat32(I,!0);break;case 7:e=B.getFloat64(I,!0);break;default:throw"the decoder does not understand this pixel type"}return e},swapDimensionOrder:function(A,I,g,B,e){var C=0,i=0,t=0,Q=0,E=A;if(g>1)if(E=new B(I*g),e)for(C=0;C<I;C++)for(Q=C,t=0;t<g;t++,Q+=I)E[Q]=A[i++];else for(C=0;C<I;C++)for(Q=C,t=0;t<g;t++,Q+=I)E[i++]=A[Q];return E}},r=function(A,I,g){this.val=A,this.left=I,this.right=g},{decode:function(A,I){var g=(I=I||{}).noDataValue,B=0,e={};if(e.ptr=I.inputOffset||0,e.pixels={},a.readHeaderInfo(A,e)){var C=e.headerInfo,i=C.fileVersion,t=a.getDataTypeArray(C.imageType);if(i>5)throw"unsupported lerc version 2."+i;a.readMask(A,e),C.numValidPixel===C.width*C.height||e.pixels.resultMask||(e.pixels.resultMask=I.maskData);var Q=C.width*C.height;e.pixels.resultPixels=new t(Q*C.numDims),e.counter={onesweep:0,uncompressed:0,lut:0,bitstuffer:0,constant:0,constantoffset:0};var E,s=!I.returnPixelInterleavedDims;if(0!==C.numValidPixel)if(C.zMax===C.zMin)a.constructConstantSurface(e,s);else if(i>=4&&a.checkMinMaxRanges(A,e))a.constructConstantSurface(e,s);else{var o=new DataView(A,e.ptr,2),r=o.getUint8(0);if(e.ptr++,r)a.readDataOneSweep(A,e,t,s);else if(i>1&&C.imageType<=1&&Math.abs(C.maxZError-.5)<1e-5){var n=o.getUint8(1);if(e.ptr++,e.encodeMode=n,n>2||i<4&&n>1)throw"Invalid Huffman flag "+n;n?a.readHuffman(A,e,t,s):a.readTiles(A,e,t,s)}else a.readTiles(A,e,t,s)}e.eofOffset=e.ptr,I.inputOffset?(E=e.headerInfo.blobSize+I.inputOffset-e.ptr,Math.abs(E)>=1&&(e.eofOffset=I.inputOffset+e.headerInfo.blobSize)):(E=e.headerInfo.blobSize-e.ptr,Math.abs(E)>=1&&(e.eofOffset=e.headerInfo.blobSize));var h={width:C.width,height:C.height,pixelData:e.pixels.resultPixels,minValue:C.zMin,maxValue:C.zMax,validPixelCount:C.numValidPixel,dimCount:C.numDims,dimStats:{minValues:C.minValues,maxValues:C.maxValues},maskData:e.pixels.resultMask};if(e.pixels.resultMask&&a.isValidPixelValue(C.imageType,g)){var l=e.pixels.resultMask;for(B=0;B<Q;B++)l[B]||(h.pixelData[B]=g);h.noDataValue=g}return e.noDataValue=g,I.returnFileInfo&&(h.fileInfo=a.formatFileInfo(e)),h}},getBandCount:function(A){for(var I=0,g=0,B={ptr:0,pixels:{}};g<A.byteLength-58;)a.readHeaderInfo(A,B),g+=B.headerInfo.blobSize,I++,B.ptr=g;return I}}),D=(n=new ArrayBuffer(4),h=new Uint8Array(n),new Uint32Array(n)[0]=1,1===h[0]),w={decode:function(A,I){if(!D)throw"Big endian system is not supported.";var g,B,e=(I=I||{}).inputOffset||0,C=new Uint8Array(A,e,10),i=String.fromCharCode.apply(null,C);if("CntZImage"===i.trim())g=l,B=1;else{if("Lerc2"!==i.substring(0,5))throw"Unexpected file identifier string: "+i;g=c,B=2}for(var t,Q,E,s,o,a,r=0,n=A.byteLength-10,h=[],w={width:0,height:0,pixels:[],pixelType:I.pixelType,mask:null,statistics:[]},y=0;e<n;){var d=g.decode(A,{inputOffset:e,encodedMaskData:t,maskData:E,returnMask:0===r,returnEncodedMask:0===r,returnFileInfo:!0,returnPixelInterleavedDims:I.returnPixelInterleavedDims,pixelType:I.pixelType||null,noDataValue:I.noDataValue||null});e=d.fileInfo.eofOffset,E=d.maskData,0===r&&(t=d.encodedMaskData,w.width=d.width,w.height=d.height,w.dimCount=d.dimCount||1,w.pixelType=d.pixelType||d.fileInfo.pixelType,w.mask=E),B>1&&(E&&h.push(E),d.fileInfo.mask&&d.fileInfo.mask.numBytes>0&&y++),r++,w.pixels.push(d.pixelData),w.statistics.push({minValue:d.minValue,maxValue:d.maxValue,noDataValue:d.noDataValue,dimStats:d.dimStats})}if(B>1&&y>1){for(a=w.width*w.height,w.bandMasks=h,(E=new Uint8Array(a)).set(h[0]),s=1;s<h.length;s++)for(Q=h[s],o=0;o<a;o++)E[o]=E[o]&Q[o];w.maskData=E}return w}};pB.exports?pB.exports=w:this.Lerc=w}()),UB.exports),MB=RB(YB);let mB,KB,HB;const JB={env:{emscripten_notify_memory_growth:A=>{HB=new Uint8Array(KB.exports.memory.buffer)}}};const bB="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AikACDcACCAHIDo3AAAgEUEZSA0BIARBGGohBANAIAIpABAhOiAEIAIpABg3AAggBCA6NwAAIAIpACAhOiAEIAIpACg3ABggBCA6NwAQIAJBIGohAiAEQSBqIgQgCkkNAAsMAQsCQAJAIAUoAswCIhEgBUHgAWogJUEHcUEMbGoiDygCACICaiIHIBxLDQAgCSAPKAIEIgogAmoiBmogG0sNACAGQSBqIBQgCWtNDQELIAUgDygCCDYCoAEgBSAPKQIANwOYASAJIBQgBUGYAWogBUHMAmogHCALIBcgIhAgIQYMAQsgAiAJaiEEIA8oAgghFSARKQAAITogCSARKQAINwAIIAkgOjcAAAJAIAJBEUkNACARKQAQITogCSARKQAYNwAYIAkgOjcAECACQRBrQRFIDQAgEUEQaiECIAlBIGohEgNAIAIpABAhOiASIAIpABg3AAggEiA6NwAAIAIpACAhOiASIAIpACg3ABggEiA6NwAQIAJBIGohAiASQSBqIhIgBEkNAAsLIAQgFWshAiAFIAc2AswCIAQgC2sgFUkEQCAVIAQgF2tLDQwgIiAiIAIgC2siD2oiByAKak8EQCAKRQ0CIAQgByAK/AoAAAwCC0EAIA9rIgIEQCAEIAcgAvwKAAALIAogD2ohCiAEIA9rIQQgCyECCyAVQRBPBEAgAikAACE6IAQgAikACDcACCAEIDo3AAAgCkERSA0BIAQgCmohByAEQRBqIQQDQCACKQAQITogBCACKQAYNwAIIAQgOjcAACACKQAgITogBCACKQAoNwAYIAQgOjcAECACQSBqIQIgBEEgaiIEIAdJDQALDAELAkAgFUEHTQRAIAQgAi0AADoAACAEIAItAAE6AAEgBCACLQACOgACIAQgAi0AAzoAAyAEIAIgFUECdCIHQeAaaigCAGoiAigAADYABCACIAdBgBtqKAIAayECDAELIAQgAikAADcAAAsgCkEJSQ0AIAQgCmohDyAEQQhqIgcgAkEIaiICa0EPTARAA0AgByACKQAANwAAIAJBCGohAiAHQQhqIgcgD0kNAAwCCwALIAIpAAAhOiAHIAIpAAg3AAggByA6NwAAIApBGUgNACAEQRhqIQQDQCACKQAQITogBCACKQAYNwAIIAQgOjcAACACKQAgITogBCACKQAoNwAYIAQgOjcAECACQSBqIQIgBEEgaiIEIA9JDQALCyAGQYh/SwRAIAYhAwwLCyAFQeABaiAlQQdxQQxsaiICIA02AgggAiAMNgIEIAIgEDYCAAsgBiAJaiEJICVBAWohJSAQIC1qIAxqIS0MAQsLIAUoArABIAUoArQBRw0HIAUoAqwBQSBHDQcgDiAoayEQA0ACQCAOIBBMBEBBACECA0AgAkEDRg0CIDIgAkECdCIDaiADICZqKAIANgIAIAJBAWohAgwACwALIAVB4AFqIBBBB3FBDGxqIQoCfwJAIAgoAoTsAUECRgRAIAUoAswCIg8gCigCACIEaiIHIAgoAoDsASICSwRAIAIgD0cEQCACIA9rIgIgFCAJa0sNCyAJIA8gAhAfIAogBCACayIENgIAIAIgCWohCQsgBSAWNgLMAiAIQQA2AoTsAQJAAkACQCAEQYCABEoNACAJIAooAgQiDSAEaiIGaiAbSw0AIAZBIGogFCAJa00NAQsgBSAKKAIINgJQIAUgCikCADcDSCAJIBQgBUHIAGogBUHMAmogGSALIBcgIhAgIQYMAQsgBCAWaiEHIAQgCWohDCAKKAIIIQogFikAACE6IAkgFikACDcACCAJIDo3AAACQCAEQRFJDQAgHikAACE6IAkgHikACDcAGCAJIDo3ABAgBEEQa0ERSA0AIAlBIGohAiAeIQQDQCAEKQAQITogAiAEKQAYNwAIIAIgOjcAACAEKQAgITogAiAEKQAoNwAYIAIgOjcAECAEQSBqIQQgAkEgaiICIAxJDQALCyAMIAprIQIgBSAHNgLMAiAMIAtrIApJBEAgCiAMIBdrSw0PICIgIiACIAtrIgdqIgQgDWpPBEAgDUUNAiAMIAQgDfwKAAAMAgtBACAHayICBEAgDCAEIAL8CgAACyAHIA1qIQ0gDCAHayEMIAshAgsgCkEQTwRAIAIpAAAhOiAMIAIpAAg3AAggDCA6NwAAIA1BEUgNASAMIA1qIQcgDEEQaiEEA0AgAikAECE6IAQgAikAGDcACCAEIDo3AAAgAikAICE6IAQgAikAKDcAGCAEIDo3ABAgAkEgaiECIARBIGoiBCAHSQ0ACwwBCwJAIApBB00EQCAMIAItAAA6AAAgDCACLQABOgABIAwgAi0AAjoAAiAMIAItAAM6AAMgDCACIApBAnQiBEHgGmooAgBqIgIoAAA2AAQgAiAEQYAbaigCAGshAgwBCyAMIAIpAAA3AAALIA1BCUkNACAMIA1qIQcgDEEIaiIEIAJBCGoiAmtBD0wEQANAIAQgAikAADcAACACQQhqIQIgBEEIaiIEIAdJDQAMAgsACyACKQAAITogBCACKQAINwAIIAQgOjcAACANQRlIDQAgDEEYaiEEA0AgAikAECE6IAQgAikAGDcACCAEIDo3AAAgAikAICE6IAQgAikAKDcAGCAEIDo3ABAgAkEgaiECIARBIGoiBCAHSQ0ACwsgBkGJf08EQCAGIQMMDgsgGSEcIAYgCWoMAwsgB0EgayECAkACQCAHIBxLDQAgCSAKKAIEIhIgBGoiDGogAksNACAMQSBqIBQgCWtNDQELIAUgCigCCDYCYCAFIAopAgA3A1ggCSAUIAIgBUHYAGogBUHMAmogHCALIBcgIhAhIQwMAgsgBCAJaiEGIAooAgghCiAPKQAAITogCSAPKQAINwAIIAkgOjcAAAJAIARBEUkNACAPKQAQITogCSAPKQAYNwAYIAkgOjcAECAEQRBrQRFIDQAgD0EQaiECIAlBIGohBANAIAIpABAhOiAEIAIpABg3AAggBCA6NwAAIAIpACAhOiAEIAIpACg3ABggBCA6NwAQIAJBIGohAiAEQSBqIgQgBkkNAAsLIAYgCmshAiAFIAc2AswCIAYgC2sgCkkEQCAKIAYgF2tLDQ0gIiAiIAIgC2siB2oiBCASak8EQCASRQ0DIAYgBCAS/AoAAAwDC0EAIAdrIgIEQCAGIAQgAvwKAAALIAcgEmohEiAGIAdrIQYgCyECCyAKQRBPBEAgAikAACE6IAYgAikACDcACCAGIDo3AAAgEkERSA0CIAYgEmohByAGQRBqIQQDQCACKQAQITogBCACKQAYNwAIIAQgOjcAACACKQAgITogBCACKQAoNwAYIAQgOjcAECACQSBqIQIgBEEgaiIEIAdJDQALDAILAkAgCkEHTQRAIAYgAi0AADoAACAGIAItAAE6AAEgBiACLQACOgACIAYgAi0AAzoAAyAGIAIgCkECdCIEQeAaaigCAGoiAigAADYABCACIARBgBtqKAIAayECDAELIAYgAikAADcAAAsgEkEJSQ0BIAYgEmohByAGQQhqIgQgAkEIaiICa0EPTARAA0AgBCACKQAANwAAIAJBCGohAiAE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",qB=new class{init(){return mB||(mB="undefined"!=typeof fetch?fetch(`data:application/wasm;base64,${bB}`).then(A=>A.arrayBuffer()).then(A=>WebAssembly.instantiate(A,JB)).then(this._init):WebAssembly.instantiate(Buffer.from(bB,"base64"),JB).then(this._init),mB)}_init(A){KB=A.instance,JB.env.emscripten_notify_memory_growth(0)}decode(A,I=0){if(!KB)throw new Error("ZSTDDecoder: Await .init() before decoding.");const g=A.byteLength,B=KB.exports.malloc(g);HB.set(A,B),I=I||Number(KB.exports.ZSTD_findDecompressedSize(B,g));const e=KB.exports.malloc(I),C=KB.exports.ZSTD_decompress(e,I,B,g),i=HB.slice(e,e+C);return KB.exports.free(B),KB.exports.free(e),i}};var xB=Object.freeze({__proto__:null,default:class extends lI{decodeBlock(A){const I=this.parameters,g=I.LercParameters?.[wA];let B=A;switch(g){case yA:break;case dA:B=NB(new Uint8Array(B)).buffer;break;case fA:B=qB.decode(new Uint8Array(B)).buffer;break;default:throw new Error(`Unsupported LERC additional compression method identifier: ${g}`)}return MB.decode(B,{returnPixelInterleavedDims:1===this.parameters.planarConfiguration}).pixels[0].buffer}},zstd:qB});let TB,OB,PB,vB;const VB={env:{emscripten_notify_memory_growth:A=>{PB=new Uint8Array(OB.exports.memory.buffer),vB=new DataView(PB.buffer)}}};const ZB="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QQhyIQBBACEDA0AgACADTQ0DIANBQGshAwwACwALQWwhCiAOIA5B/ABqIA5B+ABqIAUgBhAGIgJBiH9LDQEgDigCeCIDIARLDQEgACAOIA4oAnwgByAIIAMgDRAlIAEgADYCACACIQoMAQtBbCEKCyAOQYABaiQAIAoLcAEEfyAAQgA3AgAgAgRAIAFBCmohBiABKAIEIQRBACECQQAhAQNAIAEgBHZFBEAgAiAGIAFBA3RqLQAAIgUgAiAFSxshAiABQQFqIQEgAyAFQRZLaiEDDAELCyAAIAI2AgQgACADQQggBGt0NgIACwuuAQEEfyABIAIoAgQiAyABKAIEaiIENgIEIAAgA0ECdEGwGWooAgAgASgCAEEAIARrdnE2AgACQCAEQSFPBEAgAUGwGjYCCAwBCyABKAIIIgMgASgCEE8EQCABEAwMAQsgAyABKAIMIgVGDQAgASADIAMgBWsgBEEDdiIGIAMgBmsgBUkbIgNrIgU2AgggASAEIANBA3RrNgIEIAEgBSgAADYCAAsgACACQQhqNgIEC40CAgN/AX4gACACaiEEAkACQCACQQhOBEAgACABayICQXlIDQELA0AgACAETw0CIAAgAS0AADoAACAAQQFqIQAgAUEBaiEBDAALAAsCQAJAIAJBb0sNACAAIARBIGsiAksNACABKQAAIQYgACABKQAINwAIIAAgBjcAACACIABrIgVBEU4EQCAAQRBqIQAgASEDA0AgAykAECEGIAAgAykAGDcACCAAIAY3AAAgAykAICEGIAAgAykAKDcAGCAAIAY3ABAgA0EgaiEDIABBIGoiACACSQ0ACwsgASAFaiEBDAELIAAhAgsDQCACIARPDQEgAiABLQAAOgAAIAJBAWohAiABQQFqIQEMAAsACwvfAQEGf0G6fyEKAkAgAigCBCIIIAIoAgAiCWoiDSABIABrSw0AQWwhCiAJIAQgAygCACILa0sNACAAIAlqIgQgAigCCCIMayECIAAgAUEgayIBIAsgCUEAEDMgAyAJIAtqNgIAAkACQCAEIAVrIAxPBEAgAiEFDAELIAwgBCAGa0sNAiAHIAcgAiAFayIDaiICIAhqTwRAIAhFDQIgBCACIAj8CgAADAILQQAgA2siAARAIAQgAiAA/AoAAAsgAyAIaiEIIAQgA2shBAsgBCABIAUgCEEBEDML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",jB=new class{init(){return TB||(TB="undefined"!=typeof fetch?fetch(`data:application/wasm;base64,${ZB}`).then(A=>A.arrayBuffer()).then(A=>WebAssembly.instantiate(A,VB)).then(this._init):WebAssembly.instantiate(Buffer.from(ZB,"base64"),VB).then(this._init),TB)}_init(A){OB=A.instance,VB.env.emscripten_notify_memory_growth(0)}decode(A,I=0){if(!OB)throw new Error("ZSTDDecoder: Await .init() before decoding.");const g=A.byteLength,B=OB.exports.malloc(g);if(PB.set(A,B),0===I&&(I=Number(OB.exports.ZSTD_findDecompressedSize(B,g))),-1===I){OB.exports.free(B);const I=[];for(const g of this.decodeStreaming([A]))I.push(g);if(1===I.length)return I[0];const g=I.reduce((A,I)=>A+I.byteLength,0),e=new Uint8Array(g);let C=0;for(const A of I)e.set(A,C),C+=A.byteLength;return e}const e=OB.exports.malloc(I),C=OB.exports.ZSTD_decompress(e,I,B,g),i=PB.slice(e,e+C);return OB.exports.free(B),OB.exports.free(e),i}*decodeStreaming(A){if(!OB)throw new Error("ZSTDDecoder: Await .init() before decoding.");const I=OB.exports.ZSTD_DStreamInSize(),g=OB.exports.malloc(I),B=OB.exports.ZSTD_DStreamOutSize(),e=OB.exports.malloc(B),C=OB.exports.ZSTD_createDCtx(),i=OB.exports.malloc(12),t=OB.exports.malloc(12);let Q=0;for(const I of A){const A=OB.exports.malloc(I.byteLength);for(PB.set(I,A),vB.setInt32(i,A,!0),vB.setInt32(i+4,I.byteLength,!0),vB.setInt32(i+4+4,0,!0);vB.getUint32(i+4+4,!0)<vB.getUint32(i+4,!0);){vB.setInt32(t,e,!0),vB.setInt32(t+4,B,!0),vB.setInt32(t+4+4,0,!0),Q=OB.exports.ZSTD_decompressStream(C,t,i);const A=vB.getUint32(t+4+4,!0);yield PB.slice(e,e+A)}OB.exports.free(A)}if(OB.exports.ZSTD_freeDCtx(C),OB.exports.free(g),OB.exports.free(e),OB.exports.free(i),OB.exports.free(t),0!==Q)throw new Error("Incomplete stream, more data expected.")}};var zB=Object.freeze({__proto__:null,default:class extends lI{decodeBlock(A){return jB.decode(new Uint8Array(A)).buffer}},zstd:jB});var WB=Object.freeze({__proto__:null,default:class extends lI{constructor(A){if(super(A),"undefined"==typeof createImageBitmap)throw new Error("Cannot decode WebImage as `createImageBitmap` is not available");if("undefined"==typeof document&&"undefined"==typeof OffscreenCanvas)throw new Error("Cannot decode WebImage as neither `document` nor `OffscreenCanvas` is not available")}async decodeBlock(A){const I=new Blob([A]),g=await createImageBitmap(I);let B;"undefined"!=typeof document?(B=document.createElement("canvas"),B.width=g.width,B.height=g.height):B=new OffscreenCanvas(g.width,g.height);const e=B.getContext("2d");e.drawImage(g,0,0);const C=e.getImageData(0,0,g.width,g.height).data,i=this.parameters.samplesPerPixel||4;if(4===i)return C.buffer;if(3===i){const A=new Uint8ClampedArray(g.width*g.height*3);for(let I=0,g=0;I<A.length;I+=3,g+=4)A[I]=C[g],A[I+1]=C[g+1],A[I+2]=C[g+2];return A.buffer}throw new Error(`Unsupported SamplesPerPixel value: ${i}`)}}});exports.CogBitmapLayer=TI,exports.CogTerrainLayer=VI,exports.CogTiles=bI,exports.GeoImage=MI,exports.suppressGlobalAbortErrors=E;
|
|
3
|
+
function(){var A,I,g,e,B,i,C,t,Q,E,s,o,a,r,n,h,l=(A={defaultNoDataValue:-34027999387901484e22,decode:function(i,C){var t=(C=C||{}).encodedMaskData||null===C.encodedMaskData,Q=B(i,C.inputOffset||0,t),E=null!==C.noDataValue?C.noDataValue:A.defaultNoDataValue,s=I(Q,C.pixelType||Float32Array,C.encodedMaskData,E,C.returnMask),o={width:Q.width,height:Q.height,pixelData:s.resultPixels,minValue:s.minValue,maxValue:Q.pixels.maxValue,noDataValue:E};return s.resultMask&&(o.maskData=s.resultMask),C.returnEncodedMask&&Q.mask&&(o.encodedMaskData=Q.mask.bitset?Q.mask.bitset:null),C.returnFileInfo&&(o.fileInfo=g(Q),C.computeUsedBitDepths&&(o.fileInfo.bitDepths=e(Q))),o}},I=function(A,I,g,e,B){var C,t,Q,E=0,s=A.pixels.numBlocksX,o=A.pixels.numBlocksY,a=Math.floor(A.width/s),r=Math.floor(A.height/o),n=2*A.maxZError,h=Number.MAX_VALUE;g=g||(A.mask?A.mask.bitset:null),t=new I(A.width*A.height),B&&g&&(Q=new Uint8Array(A.width*A.height));for(var l,c,D=new Float32Array(a*r),w=0;w<=o;w++){var y=w!==o?r:A.height%o;if(0!==y)for(var d=0;d<=s;d++){var f=d!==s?a:A.width%s;if(0!==f){var S,u,G,N,F=w*A.width*r+d*a,k=A.width-f,R=A.pixels.blocks[E];if(R.encoding<2?(0===R.encoding?S=R.rawData:(i(R.stuffedData,R.bitsPerPixel,R.numValidPixels,R.offset,n,D,A.pixels.maxValue),S=D),u=0):G=2===R.encoding?0:R.offset,g)for(c=0;c<y;c++){for(7&F&&(N=g[F>>3],N<<=7&F),l=0;l<f;l++)7&F||(N=g[F>>3]),128&N?(Q&&(Q[F]=1),h=h>(C=R.encoding<2?S[u++]:G)?C:h,t[F++]=C):(Q&&(Q[F]=0),t[F++]=e),N<<=1;F+=k}else if(R.encoding<2)for(c=0;c<y;c++){for(l=0;l<f;l++)h=h>(C=S[u++])?C:h,t[F++]=C;F+=k}else for(h=h>G?G:h,c=0;c<y;c++){for(l=0;l<f;l++)t[F++]=G;F+=k}if(1===R.encoding&&u!==R.numValidPixels)throw"Block and Mask do not match";E++}}}return{resultPixels:t,resultMask:Q,minValue:h}},g=function(A){return{fileIdentifierString:A.fileIdentifierString,fileVersion:A.fileVersion,imageType:A.imageType,height:A.height,width:A.width,maxZError:A.maxZError,eofOffset:A.eofOffset,mask:A.mask?{numBlocksX:A.mask.numBlocksX,numBlocksY:A.mask.numBlocksY,numBytes:A.mask.numBytes,maxValue:A.mask.maxValue}:null,pixels:{numBlocksX:A.pixels.numBlocksX,numBlocksY:A.pixels.numBlocksY,numBytes:A.pixels.numBytes,maxValue:A.pixels.maxValue,noDataValue:A.noDataValue}}},e=function(A){for(var I=A.pixels.numBlocksX*A.pixels.numBlocksY,g={},e=0;e<I;e++){var B=A.pixels.blocks[e];0===B.encoding?g.float32=!0:1===B.encoding?g[B.bitsPerPixel]=!0:g[0]=!0}return Object.keys(g)},B=function(A,I,g){var e={},B=new Uint8Array(A,I,10);if(e.fileIdentifierString=String.fromCharCode.apply(null,B),"CntZImage"!==e.fileIdentifierString.trim())throw"Unexpected file identifier string: "+e.fileIdentifierString;I+=10;var i=new DataView(A,I,24);if(e.fileVersion=i.getInt32(0,!0),e.imageType=i.getInt32(4,!0),e.height=i.getUint32(8,!0),e.width=i.getUint32(12,!0),e.maxZError=i.getFloat64(16,!0),I+=24,!g)if(i=new DataView(A,I,16),e.mask={},e.mask.numBlocksY=i.getUint32(0,!0),e.mask.numBlocksX=i.getUint32(4,!0),e.mask.numBytes=i.getUint32(8,!0),e.mask.maxValue=i.getFloat32(12,!0),I+=16,e.mask.numBytes>0){var C=new Uint8Array(Math.ceil(e.width*e.height/8)),t=(i=new DataView(A,I,e.mask.numBytes)).getInt16(0,!0),Q=2,E=0;do{if(t>0)for(;t--;)C[E++]=i.getUint8(Q++);else{var s=i.getUint8(Q++);for(t=-t;t--;)C[E++]=s}t=i.getInt16(Q,!0),Q+=2}while(Q<e.mask.numBytes);if(-32768!==t||E<C.length)throw"Unexpected end of mask RLE encoding";e.mask.bitset=C,I+=e.mask.numBytes}else 0===(e.mask.numBytes|e.mask.numBlocksY|e.mask.maxValue)&&(e.mask.bitset=new Uint8Array(Math.ceil(e.width*e.height/8)));i=new DataView(A,I,16),e.pixels={},e.pixels.numBlocksY=i.getUint32(0,!0),e.pixels.numBlocksX=i.getUint32(4,!0),e.pixels.numBytes=i.getUint32(8,!0),e.pixels.maxValue=i.getFloat32(12,!0),I+=16;var o=e.pixels.numBlocksX,a=e.pixels.numBlocksY,r=o+(e.width%o>0?1:0),n=a+(e.height%a>0?1:0);e.pixels.blocks=new Array(r*n);for(var h=0,l=0;l<n;l++)for(var c=0;c<r;c++){var D=0,w=A.byteLength-I;i=new DataView(A,I,Math.min(10,w));var y={};e.pixels.blocks[h++]=y;var d=i.getUint8(0);if(D++,y.encoding=63&d,y.encoding>3)throw"Invalid block encoding ("+y.encoding+")";if(2!==y.encoding){if(0!==d&&2!==d){if(d>>=6,y.offsetType=d,2===d)y.offset=i.getInt8(1),D++;else if(1===d)y.offset=i.getInt16(1,!0),D+=2;else{if(0!==d)throw"Invalid block offset type";y.offset=i.getFloat32(1,!0),D+=4}if(1===y.encoding)if(d=i.getUint8(D),D++,y.bitsPerPixel=63&d,d>>=6,y.numValidPixelsType=d,2===d)y.numValidPixels=i.getUint8(D),D++;else if(1===d)y.numValidPixels=i.getUint16(D,!0),D+=2;else{if(0!==d)throw"Invalid valid pixel count type";y.numValidPixels=i.getUint32(D,!0),D+=4}}var f;if(I+=D,3!==y.encoding)if(0===y.encoding){var S=(e.pixels.numBytes-1)/4;if(S!==Math.floor(S))throw"uncompressed block has invalid length";f=new ArrayBuffer(4*S),new Uint8Array(f).set(new Uint8Array(A,I,4*S));var u=new Float32Array(f);y.rawData=u,I+=4*S}else if(1===y.encoding){var G=Math.ceil(y.numValidPixels*y.bitsPerPixel/8),N=Math.ceil(G/4);f=new ArrayBuffer(4*N),new Uint8Array(f).set(new Uint8Array(A,I,G)),y.stuffedData=new Uint32Array(f),I+=G}}else I++}return e.eofOffset=I,e},i=function(A,I,g,e,B,i,C){var t,Q,E,s=(1<<I)-1,o=0,a=0,r=Math.ceil((C-e)/B),n=4*A.length-Math.ceil(I*g/8);for(A[A.length-1]<<=8*n,t=0;t<g;t++){if(0===a&&(E=A[o++],a=32),a>=I)Q=E>>>a-I&s,a-=I;else{var h=I-a;Q=(E&s)<<h&s,Q+=(E=A[o++])>>>(a=32-h)}i[t]=Q<r?e+Q*B:C}return i},A),c=(C=function(A,I,g,e,B,i,C,t){var Q,E,s,o,a,r=(1<<g)-1,n=0,h=0,l=4*A.length-Math.ceil(g*e/8);if(A[A.length-1]<<=8*l,B)for(Q=0;Q<e;Q++)0===h&&(s=A[n++],h=32),h>=g?(E=s>>>h-g&r,h-=g):(E=(s&r)<<(o=g-h)&r,E+=(s=A[n++])>>>(h=32-o)),I[Q]=B[E];else for(a=Math.ceil((t-i)/C),Q=0;Q<e;Q++)0===h&&(s=A[n++],h=32),h>=g?(E=s>>>h-g&r,h-=g):(E=(s&r)<<(o=g-h)&r,E+=(s=A[n++])>>>(h=32-o)),I[Q]=E<a?i+E*C:t},t=function(A,I,g,e,B,i){var C,t=(1<<I)-1,Q=0,E=0,s=0,o=0,a=0,r=[],n=4*A.length-Math.ceil(I*g/8);A[A.length-1]<<=8*n;var h=Math.ceil((i-e)/B);for(E=0;E<g;E++)0===o&&(C=A[Q++],o=32),o>=I?(a=C>>>o-I&t,o-=I):(a=(C&t)<<(s=I-o)&t,a+=(C=A[Q++])>>>(o=32-s)),r[E]=a<h?e+a*B:i;return r.unshift(e),r},Q=function(A,I,g,e,B,i,C,t){var Q,E,s,o,a=(1<<g)-1,r=0,n=0,h=0;if(B)for(Q=0;Q<e;Q++)0===n&&(s=A[r++],n=32,h=0),n>=g?(E=s>>>h&a,n-=g,h+=g):(E=s>>>h&a,n=32-(o=g-n),E|=((s=A[r++])&(1<<o)-1)<<g-o,h=o),I[Q]=B[E];else{var l=Math.ceil((t-i)/C);for(Q=0;Q<e;Q++)0===n&&(s=A[r++],n=32,h=0),n>=g?(E=s>>>h&a,n-=g,h+=g):(E=s>>>h&a,n=32-(o=g-n),E|=((s=A[r++])&(1<<o)-1)<<g-o,h=o),I[Q]=E<l?i+E*C:t}return I},E=function(A,I,g,e,B,i){var C,t=(1<<I)-1,Q=0,E=0,s=0,o=0,a=0,r=0,n=[],h=Math.ceil((i-e)/B);for(E=0;E<g;E++)0===o&&(C=A[Q++],o=32,r=0),o>=I?(a=C>>>r&t,o-=I,r+=I):(a=C>>>r&t,o=32-(s=I-o),a|=((C=A[Q++])&(1<<s)-1)<<I-s,r=s),n[E]=a<h?e+a*B:i;return n.unshift(e),n},s=function(A,I,g,e){var B,i,C,t,Q=(1<<g)-1,E=0,s=0,o=4*A.length-Math.ceil(g*e/8);for(A[A.length-1]<<=8*o,B=0;B<e;B++)0===s&&(C=A[E++],s=32),s>=g?(i=C>>>s-g&Q,s-=g):(i=(C&Q)<<(t=g-s)&Q,i+=(C=A[E++])>>>(s=32-t)),I[B]=i;return I},o=function(A,I,g,e){var B,i,C,t,Q=(1<<g)-1,E=0,s=0,o=0;for(B=0;B<e;B++)0===s&&(C=A[E++],s=32,o=0),s>=g?(i=C>>>o&Q,s-=g,o+=g):(i=C>>>o&Q,s=32-(t=g-s),i|=((C=A[E++])&(1<<t)-1)<<g-t,o=t),I[B]=i;return I},a={HUFFMAN_LUT_BITS_MAX:12,computeChecksumFletcher32:function(A){for(var I=65535,g=65535,e=A.length,B=Math.floor(e/2),i=0;B;){var C=B>=359?359:B;B-=C;do{I+=A[i++]<<8,g+=I+=A[i++]}while(--C);I=(65535&I)+(I>>>16),g=(65535&g)+(g>>>16)}return 1&e&&(g+=I+=A[i]<<8),((g=(65535&g)+(g>>>16))<<16|(I=(65535&I)+(I>>>16)))>>>0},readHeaderInfo:function(A,I){var g=I.ptr,e=new Uint8Array(A,g,6),B={};if(B.fileIdentifierString=String.fromCharCode.apply(null,e),0!==B.fileIdentifierString.lastIndexOf("Lerc2",0))throw"Unexpected file identifier string (expect Lerc2 ): "+B.fileIdentifierString;g+=6;var i,C=new DataView(A,g,8),t=C.getInt32(0,!0);if(B.fileVersion=t,g+=4,t>=3&&(B.checksum=C.getUint32(4,!0),g+=4),C=new DataView(A,g,12),B.height=C.getUint32(0,!0),B.width=C.getUint32(4,!0),g+=8,t>=4?(B.numDims=C.getUint32(8,!0),g+=4):B.numDims=1,C=new DataView(A,g,40),B.numValidPixel=C.getUint32(0,!0),B.microBlockSize=C.getInt32(4,!0),B.blobSize=C.getInt32(8,!0),B.imageType=C.getInt32(12,!0),B.maxZError=C.getFloat64(16,!0),B.zMin=C.getFloat64(24,!0),B.zMax=C.getFloat64(32,!0),g+=40,I.headerInfo=B,I.ptr=g,t>=3&&(i=t>=4?52:48,this.computeChecksumFletcher32(new Uint8Array(A,g-i,B.blobSize-14))!==B.checksum))throw"Checksum failed.";return!0},checkMinMaxRanges:function(A,I){var g=I.headerInfo,e=this.getDataTypeArray(g.imageType),B=g.numDims*this.getDataTypeSize(g.imageType),i=this.readSubArray(A,I.ptr,e,B),C=this.readSubArray(A,I.ptr+B,e,B);I.ptr+=2*B;var t,Q=!0;for(t=0;t<g.numDims;t++)if(i[t]!==C[t]){Q=!1;break}return g.minValues=i,g.maxValues=C,Q},readSubArray:function(A,I,g,e){var B;if(g===Uint8Array)B=new Uint8Array(A,I,e);else{var i=new ArrayBuffer(e);new Uint8Array(i).set(new Uint8Array(A,I,e)),B=new g(i)}return B},readMask:function(A,I){var g,e,B=I.ptr,i=I.headerInfo,C=i.width*i.height,t=i.numValidPixel,Q=new DataView(A,B,4),E={};if(E.numBytes=Q.getUint32(0,!0),B+=4,(0===t||C===t)&&0!==E.numBytes)throw"invalid mask";if(0===t)g=new Uint8Array(Math.ceil(C/8)),E.bitset=g,e=new Uint8Array(C),I.pixels.resultMask=e,B+=E.numBytes;else if(E.numBytes>0){g=new Uint8Array(Math.ceil(C/8));var s=(Q=new DataView(A,B,E.numBytes)).getInt16(0,!0),o=2,a=0,r=0;do{if(s>0)for(;s--;)g[a++]=Q.getUint8(o++);else for(r=Q.getUint8(o++),s=-s;s--;)g[a++]=r;s=Q.getInt16(o,!0),o+=2}while(o<E.numBytes);if(-32768!==s||a<g.length)throw"Unexpected end of mask RLE encoding";e=new Uint8Array(C);var n=0,h=0;for(h=0;h<C;h++)7&h?(n=g[h>>3],n<<=7&h):n=g[h>>3],128&n&&(e[h]=1);I.pixels.resultMask=e,E.bitset=g,B+=E.numBytes}return I.ptr=B,I.mask=E,!0},readDataOneSweep:function(A,I,g,e){var B,i=I.ptr,C=I.headerInfo,t=C.numDims,Q=C.width*C.height,E=C.imageType,s=C.numValidPixel*a.getDataTypeSize(E)*t,o=I.pixels.resultMask;if(g===Uint8Array)B=new Uint8Array(A,i,s);else{var r=new ArrayBuffer(s);new Uint8Array(r).set(new Uint8Array(A,i,s)),B=new g(r)}if(B.length===Q*t)I.pixels.resultPixels=e?a.swapDimensionOrder(B,Q,t,g,!0):B;else{I.pixels.resultPixels=new g(Q*t);var n=0,h=0,l=0,c=0;if(t>1){if(e){for(h=0;h<Q;h++)if(o[h])for(c=h,l=0;l<t;l++,c+=Q)I.pixels.resultPixels[c]=B[n++]}else for(h=0;h<Q;h++)if(o[h])for(c=h*t,l=0;l<t;l++)I.pixels.resultPixels[c+l]=B[n++]}else for(h=0;h<Q;h++)o[h]&&(I.pixels.resultPixels[h]=B[n++])}return i+=s,I.ptr=i,!0},readHuffmanTree:function(A,I){var g=this.HUFFMAN_LUT_BITS_MAX,e=new DataView(A,I.ptr,16);if(I.ptr+=16,e.getInt32(0,!0)<2)throw"unsupported Huffman version";var B=e.getInt32(4,!0),i=e.getInt32(8,!0),C=e.getInt32(12,!0);if(i>=C)return!1;var t=new Uint32Array(C-i);a.decodeBits(A,I,t);var Q,E,s,o,n=[];for(Q=i;Q<C;Q++)n[E=Q-(Q<B?0:B)]={first:t[Q-i],second:null};var h=A.byteLength-I.ptr,l=Math.ceil(h/4),c=new ArrayBuffer(4*l);new Uint8Array(c).set(new Uint8Array(A,I.ptr,h));var D,w=new Uint32Array(c),y=0,d=0;for(D=w[0],Q=i;Q<C;Q++)(o=n[E=Q-(Q<B?0:B)].first)>0&&(n[E].second=D<<y>>>32-o,32-y>=o?32===(y+=o)&&(y=0,D=w[++d]):(y+=o-32,D=w[++d],n[E].second|=D>>>32-y));var f=0,S=0,u=new r;for(Q=0;Q<n.length;Q++)void 0!==n[Q]&&(f=Math.max(f,n[Q].first));S=f>=g?g:f;var G,N,F,k,R,L=[];for(Q=i;Q<C;Q++)if((o=n[E=Q-(Q<B?0:B)].first)>0)if(G=[o,E],o<=S)for(N=n[E].second<<S-o,F=1<<S-o,s=0;s<F;s++)L[N|s]=G;else for(N=n[E].second,R=u,k=o-1;k>=0;k--)N>>>k&1?(R.right||(R.right=new r),R=R.right):(R.left||(R.left=new r),R=R.left),0!==k||R.val||(R.val=G[1]);return{decodeLut:L,numBitsLUTQick:S,numBitsLUT:f,tree:u,stuffedData:w,srcPtr:d,bitPos:y}},readHuffman:function(A,I,g,e){var B,i,C,t,Q,E,s,o,r,n=I.headerInfo.numDims,h=I.headerInfo.height,l=I.headerInfo.width,c=l*h,D=this.readHuffmanTree(A,I),w=D.decodeLut,y=D.tree,d=D.stuffedData,f=D.srcPtr,S=D.bitPos,u=D.numBitsLUTQick,G=D.numBitsLUT,N=0===I.headerInfo.imageType?128:0,F=I.pixels.resultMask,k=0;S>0&&(f++,S=0);var R,L=d[f],U=1===I.encodeMode,p=new g(c*n),Y=p;if(n<2||U){for(R=0;R<n;R++)if(n>1&&(Y=new g(p.buffer,c*R,c),k=0),I.headerInfo.numValidPixel===l*h)for(o=0,E=0;E<h;E++)for(s=0;s<l;s++,o++){if(i=0,Q=t=L<<S>>>32-u,32-S<u&&(Q=t|=d[f+1]>>>64-S-u),w[Q])i=w[Q][1],S+=w[Q][0];else for(Q=t=L<<S>>>32-G,32-S<G&&(Q=t|=d[f+1]>>>64-S-G),B=y,r=0;r<G;r++)if(!(B=t>>>G-r-1&1?B.right:B.left).left&&!B.right){i=B.val,S=S+r+1;break}S>=32&&(S-=32,L=d[++f]),C=i-N,U?(C+=s>0?k:E>0?Y[o-l]:k,C&=255,Y[o]=C,k=C):Y[o]=C}else for(o=0,E=0;E<h;E++)for(s=0;s<l;s++,o++)if(F[o]){if(i=0,Q=t=L<<S>>>32-u,32-S<u&&(Q=t|=d[f+1]>>>64-S-u),w[Q])i=w[Q][1],S+=w[Q][0];else for(Q=t=L<<S>>>32-G,32-S<G&&(Q=t|=d[f+1]>>>64-S-G),B=y,r=0;r<G;r++)if(!(B=t>>>G-r-1&1?B.right:B.left).left&&!B.right){i=B.val,S=S+r+1;break}S>=32&&(S-=32,L=d[++f]),C=i-N,U?(s>0&&F[o-1]?C+=k:E>0&&F[o-l]?C+=Y[o-l]:C+=k,C&=255,Y[o]=C,k=C):Y[o]=C}}else for(o=0,E=0;E<h;E++)for(s=0;s<l;s++)if(o=E*l+s,!F||F[o])for(R=0;R<n;R++,o+=c){if(i=0,Q=t=L<<S>>>32-u,32-S<u&&(Q=t|=d[f+1]>>>64-S-u),w[Q])i=w[Q][1],S+=w[Q][0];else for(Q=t=L<<S>>>32-G,32-S<G&&(Q=t|=d[f+1]>>>64-S-G),B=y,r=0;r<G;r++)if(!(B=t>>>G-r-1&1?B.right:B.left).left&&!B.right){i=B.val,S=S+r+1;break}S>=32&&(S-=32,L=d[++f]),C=i-N,Y[o]=C}I.ptr=I.ptr+4*(f+1)+(S>0?4:0),I.pixels.resultPixels=p,n>1&&!e&&(I.pixels.resultPixels=a.swapDimensionOrder(p,c,n,g))},decodeBits:function(A,I,g,e,B){var i=I.headerInfo,a=i.fileVersion,r=0,n=A.byteLength-I.ptr>=5?5:A.byteLength-I.ptr,h=new DataView(A,I.ptr,n),l=h.getUint8(0);r++;var c=l>>6,D=0===c?4:3-c,w=(32&l)>0,y=31&l,d=0;if(1===D)d=h.getUint8(r),r++;else if(2===D)d=h.getUint16(r,!0),r+=2;else{if(4!==D)throw"Invalid valid pixel count type";d=h.getUint32(r,!0),r+=4}var f,S,u,G,N,F,k,R,L,U=2*i.maxZError,p=i.numDims>1?i.maxValues[B]:i.zMax;if(w){for(I.counter.lut++,R=h.getUint8(r),r++,G=Math.ceil((R-1)*y/8),N=Math.ceil(G/4),S=new ArrayBuffer(4*N),u=new Uint8Array(S),I.ptr+=r,u.set(new Uint8Array(A,I.ptr,G)),k=new Uint32Array(S),I.ptr+=G,L=0;R-1>>>L;)L++;G=Math.ceil(d*L/8),N=Math.ceil(G/4),S=new ArrayBuffer(4*N),(u=new Uint8Array(S)).set(new Uint8Array(A,I.ptr,G)),f=new Uint32Array(S),I.ptr+=G,F=a>=3?E(k,y,R-1,e,U,p):t(k,y,R-1,e,U,p),a>=3?Q(f,g,L,d,F):C(f,g,L,d,F)}else I.counter.bitstuffer++,L=y,I.ptr+=r,L>0&&(G=Math.ceil(d*L/8),N=Math.ceil(G/4),S=new ArrayBuffer(4*N),(u=new Uint8Array(S)).set(new Uint8Array(A,I.ptr,G)),f=new Uint32Array(S),I.ptr+=G,a>=3?null==e?o(f,g,L,d):Q(f,g,L,d,!1,e,U,p):null==e?s(f,g,L,d):C(f,g,L,d,!1,e,U,p))},readTiles:function(A,I,g,e){var B=I.headerInfo,i=B.width,C=B.height,t=i*C,Q=B.microBlockSize,E=B.imageType,s=a.getDataTypeSize(E),o=Math.ceil(i/Q),r=Math.ceil(C/Q);I.pixels.numBlocksY=r,I.pixels.numBlocksX=o,I.pixels.ptr=0;var n,h,l,c,D,w,y,d,f,S,u=0,G=0,N=0,F=0,k=0,R=0,L=0,U=0,p=0,Y=0,M=0,m=0,K=0,H=0,J=0,b=new g(Q*Q),q=C%Q||Q,x=i%Q||Q,T=B.numDims,O=I.pixels.resultMask,P=I.pixels.resultPixels,v=B.fileVersion>=5?14:15,V=B.zMax;for(N=0;N<r;N++)for(k=N!==r-1?Q:q,F=0;F<o;F++)for(Y=N*i*Q+F*Q,M=i-(R=F!==o-1?Q:x),d=0;d<T;d++){if(T>1?(S=P,Y=N*i*Q+F*Q,P=new g(I.pixels.resultPixels.buffer,t*d*s,t),V=B.maxValues[d]):S=null,L=A.byteLength-I.ptr,h={},J=0,U=(n=new DataView(A,I.ptr,Math.min(10,L))).getUint8(0),J++,f=B.fileVersion>=5?4&U:0,p=U>>6&255,(U>>2&v)!=(F*Q>>3&v))throw"integrity issue";if(f&&0===d)throw"integrity issue";if((D=3&U)>3)throw I.ptr+=J,"Invalid block encoding ("+D+")";if(2!==D)if(0===D){if(f)throw"integrity issue";if(I.counter.uncompressed++,I.ptr+=J,m=(m=k*R*s)<(K=A.byteLength-I.ptr)?m:K,l=new ArrayBuffer(m%s===0?m:m+s-m%s),new Uint8Array(l).set(new Uint8Array(A,I.ptr,m)),c=new g(l),H=0,O)for(u=0;u<k;u++){for(G=0;G<R;G++)O[Y]&&(P[Y]=c[H++]),Y++;Y+=M}else for(u=0;u<k;u++){for(G=0;G<R;G++)P[Y++]=c[H++];Y+=M}I.ptr+=H*s}else if(w=a.getDataTypeUsed(f&&E<6?4:E,p),y=a.getOnePixel(h,J,w,n),J+=a.getDataTypeSize(w),3===D)if(I.ptr+=J,I.counter.constantoffset++,O)for(u=0;u<k;u++){for(G=0;G<R;G++)O[Y]&&(P[Y]=f?Math.min(V,S[Y]+y):y),Y++;Y+=M}else for(u=0;u<k;u++){for(G=0;G<R;G++)P[Y]=f?Math.min(V,S[Y]+y):y,Y++;Y+=M}else if(I.ptr+=J,a.decodeBits(A,I,b,y,d),J=0,f)if(O)for(u=0;u<k;u++){for(G=0;G<R;G++)O[Y]&&(P[Y]=b[J++]+S[Y]),Y++;Y+=M}else for(u=0;u<k;u++){for(G=0;G<R;G++)P[Y]=b[J++]+S[Y],Y++;Y+=M}else if(O)for(u=0;u<k;u++){for(G=0;G<R;G++)O[Y]&&(P[Y]=b[J++]),Y++;Y+=M}else for(u=0;u<k;u++){for(G=0;G<R;G++)P[Y++]=b[J++];Y+=M}else{if(f)if(O)for(u=0;u<k;u++)for(G=0;G<R;G++)O[Y]&&(P[Y]=S[Y]),Y++;else for(u=0;u<k;u++)for(G=0;G<R;G++)P[Y]=S[Y],Y++;I.counter.constant++,I.ptr+=J}}T>1&&!e&&(I.pixels.resultPixels=a.swapDimensionOrder(I.pixels.resultPixels,t,T,g))},formatFileInfo:function(A){return{fileIdentifierString:A.headerInfo.fileIdentifierString,fileVersion:A.headerInfo.fileVersion,imageType:A.headerInfo.imageType,height:A.headerInfo.height,width:A.headerInfo.width,numValidPixel:A.headerInfo.numValidPixel,microBlockSize:A.headerInfo.microBlockSize,blobSize:A.headerInfo.blobSize,maxZError:A.headerInfo.maxZError,pixelType:a.getPixelType(A.headerInfo.imageType),eofOffset:A.eofOffset,mask:A.mask?{numBytes:A.mask.numBytes}:null,pixels:{numBlocksX:A.pixels.numBlocksX,numBlocksY:A.pixels.numBlocksY,maxValue:A.headerInfo.zMax,minValue:A.headerInfo.zMin,noDataValue:A.noDataValue}}},constructConstantSurface:function(A,I){var g=A.headerInfo.zMax,e=A.headerInfo.zMin,B=A.headerInfo.maxValues,i=A.headerInfo.numDims,C=A.headerInfo.height*A.headerInfo.width,t=0,Q=0,E=0,s=A.pixels.resultMask,o=A.pixels.resultPixels;if(s)if(i>1){if(I)for(t=0;t<i;t++)for(E=t*C,g=B[t],Q=0;Q<C;Q++)s[Q]&&(o[E+Q]=g);else for(Q=0;Q<C;Q++)if(s[Q])for(E=Q*i,t=0;t<i;t++)o[E+i]=B[t]}else for(Q=0;Q<C;Q++)s[Q]&&(o[Q]=g);else if(i>1&&e!==g)if(I)for(t=0;t<i;t++)for(E=t*C,g=B[t],Q=0;Q<C;Q++)o[E+Q]=g;else for(Q=0;Q<C;Q++)for(E=Q*i,t=0;t<i;t++)o[E+t]=B[t];else for(Q=0;Q<C*i;Q++)o[Q]=g},getDataTypeArray:function(A){var I;switch(A){case 0:I=Int8Array;break;case 1:I=Uint8Array;break;case 2:I=Int16Array;break;case 3:I=Uint16Array;break;case 4:I=Int32Array;break;case 5:I=Uint32Array;break;case 6:default:I=Float32Array;break;case 7:I=Float64Array}return I},getPixelType:function(A){var I;switch(A){case 0:I="S8";break;case 1:I="U8";break;case 2:I="S16";break;case 3:I="U16";break;case 4:I="S32";break;case 5:I="U32";break;case 6:default:I="F32";break;case 7:I="F64"}return I},isValidPixelValue:function(A,I){if(null==I)return!1;var g;switch(A){case 0:g=I>=-128&&I<=127;break;case 1:g=I>=0&&I<=255;break;case 2:g=I>=-32768&&I<=32767;break;case 3:g=I>=0&&I<=65536;break;case 4:g=I>=-2147483648&&I<=2147483647;break;case 5:g=I>=0&&I<=4294967296;break;case 6:g=I>=-34027999387901484e22&&I<=34027999387901484e22;break;case 7:g=I>=-17976931348623157e292&&I<=17976931348623157e292;break;default:g=!1}return g},getDataTypeSize:function(A){var I=0;switch(A){case 0:case 1:I=1;break;case 2:case 3:I=2;break;case 4:case 5:case 6:I=4;break;case 7:I=8;break;default:I=A}return I},getDataTypeUsed:function(A,I){var g=A;switch(A){case 2:case 4:g=A-I;break;case 3:case 5:g=A-2*I;break;case 6:g=0===I?A:1===I?2:1;break;case 7:g=0===I?A:A-2*I+1;break;default:g=A}return g},getOnePixel:function(A,I,g,e){var B=0;switch(g){case 0:B=e.getInt8(I);break;case 1:B=e.getUint8(I);break;case 2:B=e.getInt16(I,!0);break;case 3:B=e.getUint16(I,!0);break;case 4:B=e.getInt32(I,!0);break;case 5:B=e.getUInt32(I,!0);break;case 6:B=e.getFloat32(I,!0);break;case 7:B=e.getFloat64(I,!0);break;default:throw"the decoder does not understand this pixel type"}return B},swapDimensionOrder:function(A,I,g,e,B){var i=0,C=0,t=0,Q=0,E=A;if(g>1)if(E=new e(I*g),B)for(i=0;i<I;i++)for(Q=i,t=0;t<g;t++,Q+=I)E[Q]=A[C++];else for(i=0;i<I;i++)for(Q=i,t=0;t<g;t++,Q+=I)E[C++]=A[Q];return E}},r=function(A,I,g){this.val=A,this.left=I,this.right=g},{decode:function(A,I){var g=(I=I||{}).noDataValue,e=0,B={};if(B.ptr=I.inputOffset||0,B.pixels={},a.readHeaderInfo(A,B)){var i=B.headerInfo,C=i.fileVersion,t=a.getDataTypeArray(i.imageType);if(C>5)throw"unsupported lerc version 2."+C;a.readMask(A,B),i.numValidPixel===i.width*i.height||B.pixels.resultMask||(B.pixels.resultMask=I.maskData);var Q=i.width*i.height;B.pixels.resultPixels=new t(Q*i.numDims),B.counter={onesweep:0,uncompressed:0,lut:0,bitstuffer:0,constant:0,constantoffset:0};var E,s=!I.returnPixelInterleavedDims;if(0!==i.numValidPixel)if(i.zMax===i.zMin)a.constructConstantSurface(B,s);else if(C>=4&&a.checkMinMaxRanges(A,B))a.constructConstantSurface(B,s);else{var o=new DataView(A,B.ptr,2),r=o.getUint8(0);if(B.ptr++,r)a.readDataOneSweep(A,B,t,s);else if(C>1&&i.imageType<=1&&Math.abs(i.maxZError-.5)<1e-5){var n=o.getUint8(1);if(B.ptr++,B.encodeMode=n,n>2||C<4&&n>1)throw"Invalid Huffman flag "+n;n?a.readHuffman(A,B,t,s):a.readTiles(A,B,t,s)}else a.readTiles(A,B,t,s)}B.eofOffset=B.ptr,I.inputOffset?(E=B.headerInfo.blobSize+I.inputOffset-B.ptr,Math.abs(E)>=1&&(B.eofOffset=I.inputOffset+B.headerInfo.blobSize)):(E=B.headerInfo.blobSize-B.ptr,Math.abs(E)>=1&&(B.eofOffset=B.headerInfo.blobSize));var h={width:i.width,height:i.height,pixelData:B.pixels.resultPixels,minValue:i.zMin,maxValue:i.zMax,validPixelCount:i.numValidPixel,dimCount:i.numDims,dimStats:{minValues:i.minValues,maxValues:i.maxValues},maskData:B.pixels.resultMask};if(B.pixels.resultMask&&a.isValidPixelValue(i.imageType,g)){var l=B.pixels.resultMask;for(e=0;e<Q;e++)l[e]||(h.pixelData[e]=g);h.noDataValue=g}return B.noDataValue=g,I.returnFileInfo&&(h.fileInfo=a.formatFileInfo(B)),h}},getBandCount:function(A){for(var I=0,g=0,e={ptr:0,pixels:{}};g<A.byteLength-58;)a.readHeaderInfo(A,e),g+=e.headerInfo.blobSize,I++,e.ptr=g;return I}}),D=(n=new ArrayBuffer(4),h=new Uint8Array(n),new Uint32Array(n)[0]=1,1===h[0]),w={decode:function(A,I){if(!D)throw"Big endian system is not supported.";var g,e,B=(I=I||{}).inputOffset||0,i=new Uint8Array(A,B,10),C=String.fromCharCode.apply(null,i);if("CntZImage"===C.trim())g=l,e=1;else{if("Lerc2"!==C.substring(0,5))throw"Unexpected file identifier string: "+C;g=c,e=2}for(var t,Q,E,s,o,a,r=0,n=A.byteLength-10,h=[],w={width:0,height:0,pixels:[],pixelType:I.pixelType,mask:null,statistics:[]},y=0;B<n;){var d=g.decode(A,{inputOffset:B,encodedMaskData:t,maskData:E,returnMask:0===r,returnEncodedMask:0===r,returnFileInfo:!0,returnPixelInterleavedDims:I.returnPixelInterleavedDims,pixelType:I.pixelType||null,noDataValue:I.noDataValue||null});B=d.fileInfo.eofOffset,E=d.maskData,0===r&&(t=d.encodedMaskData,w.width=d.width,w.height=d.height,w.dimCount=d.dimCount||1,w.pixelType=d.pixelType||d.fileInfo.pixelType,w.mask=E),e>1&&(E&&h.push(E),d.fileInfo.mask&&d.fileInfo.mask.numBytes>0&&y++),r++,w.pixels.push(d.pixelData),w.statistics.push({minValue:d.minValue,maxValue:d.maxValue,noDataValue:d.noDataValue,dimStats:d.dimStats})}if(e>1&&y>1){for(a=w.width*w.height,w.bandMasks=h,(E=new Uint8Array(a)).set(h[0]),s=1;s<h.length;s++)for(Q=h[s],o=0;o<a;o++)E[o]=E[o]&Q[o];w.maskData=E}return w}};pe.exports?pe.exports=w:this.Lerc=w}()),Ue.exports),Me=Re(Ye);let me,Ke,He;const Je={env:{emscripten_notify_memory_growth:A=>{He=new Uint8Array(Ke.exports.memory.buffer)}}};const be="AGFzbQEAAAABoAEUYAF/AGADf39/AGACf38AYAF/AX9gBX9/f39/AX9gA39/fwF/YAR/f39/AX9gAn9/AX9gAAF/YAd/f39/f39/AX9gB39/f39/f38AYAR/f39/AX5gAn9/AX5gBn9/f39/fwBgDn9/f39/f39/f39/f39/AX9gCH9/f39/f39/AX9gCX9/f39/f39/fwF/YAN+f38BfmAFf39/f38AYAAAAicBA2Vudh9lbXNjcmlwdGVuX25vdGlmeV9tZW1vcnlfZ3Jvd3RoAAADJyYDAAMACAQJBQEHBwADBgoLBAQDBAEABgUMBQ0OAQEBDxAREgYAEwQFAXABAgIFBwEBggKAgAIGCAF/AUGgnwQLB9MBCgZtZW1vcnkCAAxaU1REX2lzRXJyb3IADRlaU1REX2ZpbmREZWNvbXByZXNzZWRTaXplABkPWlNURF9kZWNvbXByZXNzACQGbWFsbG9jAAEEZnJlZQACGV9faW5kaXJlY3RfZnVuY3Rpb25fdGFibGUBABlfZW1zY3JpcHRlbl9zdGFja19yZXN0b3JlAAQcZW1zY3JpcHRlbl9zdGFja19nZXRfY3VycmVudAAFIl9fY3hhX2luY3JlbWVudF9leGNlcHRpb25fcmVmY291bnQAJQkHAQBBAQsBJgwBCgqtkgMm1ScBC38jAEEQayIKJAACQAJAAkACQAJAAkACQAJAAkACQCAAQfQBTQRAQagbKAIAIgRBECAAQQtqQfgDcSAAQQtJGyIGQQN2IgB2IgFBA3EEQAJAIAFBf3NBAXEgAGoiAkEDdCIBQdAbaiIAIAFB2BtqKAIAIgEoAggiBUYEQEGoGyAEQX4gAndxNgIADAELIAUgADYCDCAAIAU2AggLIAFBCGohACABIAJBA3QiAkEDcjYCBCABIAJqIgEgASgCBEEBcjYCBAwLCyAGQbAbKAIAIghNDQEgAQRAAkBBAiAAdCICQQAgAmtyIAEgAHRxaCIBQQN0IgBB0BtqIgIgAEHYG2ooAgAiACgCCCIFRgRAQagbIARBfiABd3EiBDYCAAwBCyAFIAI2AgwgAiAFNgIICyAAIAZBA3I2AgQgACAGaiIHIAFBA3QiASAGayIFQQFyNgIEIAAgAWogBTYCACAIBEAgCEF4cUHQG2ohAUG8GygCACECAn8gBEEBIAhBA3Z0IgNxRQRAQagbIAMgBHI2AgAgAQwBCyABKAIICyEDIAEgAjYCCCADIAI2AgwgAiABNgIMIAIgAzYCCAsgAEEIaiEAQbwbIAc2AgBBsBsgBTYCAAwLC0GsGygCACILRQ0BIAtoQQJ0QdgdaigCACICKAIEQXhxIAZrIQMgAiEBA0ACQCABKAIQIgBFBEAgASgCFCIARQ0BCyAAKAIEQXhxIAZrIgEgAyABIANJIgEbIQMgACACIAEbIQIgACEBDAELCyACKAIYIQkgAiACKAIMIgBHBEAgAigCCCIBIAA2AgwgACABNgIIDAoLIAIoAhQiAQR/IAJBFGoFIAIoAhAiAUUNAyACQRBqCyEFA0AgBSEHIAEiAEEUaiEFIAAoAhQiAQ0AIABBEGohBSAAKAIQIgENAAsgB0EANgIADAkLQX8hBiAAQb9/Sw0AIABBC2oiAUF4cSEGQawbKAIAIgdFDQBBHyEIQQAgBmshAyAAQfT//wdNBEAgBkEmIAFBCHZnIgBrdkEBcSAAQQF0a0E+aiEICwJAAkACQCAIQQJ0QdgdaigCACIBRQRAQQAhAAwBC0EAIQAgBkEZIAhBAXZrQQAgCEEfRxt0IQIDQAJAIAEoAgRBeHEgBmsiBCADTw0AIAEhBSAEIgMNAEEAIQMgASEADAMLIAAgASgCFCIEIAQgASACQR12QQRxaigCECIBRhsgACAEGyEAIAJBAXQhAiABDQALCyAAIAVyRQRAQQAhBUECIAh0IgBBACAAa3IgB3EiAEUNAyAAaEECdEHYHWooAgAhAAsgAEUNAQsDQCAAKAIEQXhxIAZrIgIgA0khASACIAMgARshAyAAIAUgARshBSAAKAIQIgEEfyABBSAAKAIUCyIADQALCyAFRQ0AIANBsBsoAgAgBmtPDQAgBSgCGCEIIAUgBSgCDCIARwRAIAUoAggiASAANgIMIAAgATYCCAwICyAFKAIUIgEEfyAFQRRqBSAFKAIQIgFFDQMgBUEQagshAgNAIAIhBCABIgBBFGohAiAAKAIUIgENACAAQRBqIQIgACgCECIBDQALIARBADYCAAwHCyAGQbAbKAIAIgVNBEBBvBsoAgAhAAJAIAUgBmsiAUEQTwRAIAAgBmoiAiABQQFyNgIEIAAgBWogATYCACAAIAZBA3I2AgQMAQsgACAFQQNyNgIEIAAgBWoiASABKAIEQQFyNgIEQQAhAkEAIQELQbAbIAE2AgBBvBsgAjYCACAAQQhqIQAMCQsgBkG0GygCACICSQRAQbQbIAIgBmsiATYCAEHAG0HAGygCACIAIAZqIgI2AgAgAiABQQFyNgIEIAAgBkEDcjYCBCAAQQhqIQAMCQtBACEAIAZBL2oiAwJ/QYAfKAIABEBBiB8oAgAMAQtBjB9CfzcCAEGEH0KAoICAgIAENwIAQYAfIApBDGpBcHFB2KrVqgVzNgIAQZQfQQA2AgBB5B5BADYCAEGAIAsiAWoiBEEAIAFrIgdxIgEgBk0NCEHgHigCACIFBEBB2B4oAgAiCCABaiIJIAhNIAUgCUlyDQkLAkBB5B4tAABBBHFFBEACQAJAAkACQEHAGygCACIFBEBB6B4hAANAIAAoAgAiCCAFTQRAIAUgCCAAKAIEakkNAwsgACgCCCIADQALC0EAEAMiAkF/Rg0DIAEhBEGEHygCACIAQQFrIgUgAnEEQCABIAJrIAIgBWpBACAAa3FqIQQLIAQgBk0NA0HgHigCACIABEBB2B4oAgAiBSAEaiIHIAVNIAAgB0lyDQQLIAQQAyIAIAJHDQEMBQsgBCACayAHcSIEEAMiAiAAKAIAIAAoAgRqRg0BIAIhAAsgAEF/Rg0BIAZBMGogBE0EQCAAIQIMBAtBiB8oAgAiAiADIARrakEAIAJrcSICEANBf0YNASACIARqIQQgACECDAMLIAJBf0cNAgtB5B5B5B4oAgBBBHI2AgALIAEQAyICQX9GQQAQAyIAQX9GciAAIAJNcg0FIAAgAmsiBCAGQShqTQ0FC0HYHkHYHigCACAEaiIANgIAQdweKAIAIABJBEBB3B4gADYCAAsCQEHAGygCACIDBEBB6B4hAANAIAIgACgCACIBIAAoAgQiBWpGDQIgACgCCCIADQALDAQLQbgbKAIAIgBBACAAIAJNG0UEQEG4GyACNgIAC0EAIQBB7B4gBDYCAEHoHiACNgIAQcgbQX82AgBBzBtBgB8oAgA2AgBB9B5BADYCAANAIABBA3QiAUHYG2ogAUHQG2oiBTYCACABQdwbaiAFNgIAIABBAWoiAEEgRw0AC0G0GyAEQShrIgBBeCACa0EHcSIBayIFNgIAQcAbIAEgAmoiATYCACABIAVBAXI2AgQgACACakEoNgIEQcQbQZAfKAIANgIADAQLIAIgA00gASADS3INAiAAKAIMQQhxDQIgACAEIAVqNgIEQcAbIANBeCADa0EHcSIAaiIBNgIAQbQbQbQbKAIAIARqIgIgAGsiADYCACABIABBAXI2AgQgAiADakEoNgIEQcQbQZAfKAIANgIADAMLQQAhAAwGC0EAIQAMBAtBuBsoAgAgAksEQEG4GyACNgIACyACIARqIQVB6B4hAAJAA0AgBSAAKAIAIgFHBEAgACgCCCIADQEMAgsLIAAtAAxBCHFFDQMLQegeIQADQAJAIAAoAgAiASADTQRAIAMgASAAKAIEaiIFSQ0BCyAAKAIIIQAMAQsLQbQbIARBKGsiAEF4IAJrQQdxIgFrIgc2AgBBwBsgASACaiIBNgIAIAEgB0EBcjYCBCAAIAJqQSg2AgRBxBtBkB8oAgA2AgAgAyAFQScgBWtBB3FqQS9rIgAgACADQRBqSRsiAUEbNgIEIAFB8B4pAgA3AhAgAUHoHikCADcCCEHwHiABQQhqNgIAQeweIAQ2AgBB6B4gAjYCAEH0HkEANgIAIAFBGGohAANAIABBBzYCBCAAQQhqIQIgAEEEaiEAIAIgBUkNAAsgASADRg0AIAEgASgCBEF+cTYCBCADIAEgA2siAkEBcjYCBCABIAI2AgACfyACQf8BTQRAIAJBeHFB0BtqIQACf0GoGygCACIBQQEgAkEDdnQiAnFFBEBBqBsgASACcjYCACAADAELIAAoAggLIQEgACADNgIIIAEgAzYCDEEMIQJBCAwBC0EfIQAgAkH///8HTQRAIAJBJiACQQh2ZyIAa3ZBAXEgAEEBdGtBPmohAAsgAyAANgIcIANCADcCECAAQQJ0QdgdaiEBAkACQEGsGygCACIFQQEgAHQiBHFFBEBBrBsgBCAFcjYCACABIAM2AgAMAQsgAkEZIABBAXZrQQAgAEEfRxt0IQAgASgCACEFA0AgBSIBKAIEQXhxIAJGDQIgAEEddiEFIABBAXQhACABIAVBBHFqIgQoAhAiBQ0ACyAEIAM2AhALIAMgATYCGEEIIQIgAyIBIQBBDAwBCyABKAIIIgAgAzYCDCABIAM2AgggAyAANgIIQQAhAEEYIQJBDAsgA2ogATYCACACIANqIAA2AgALQbQbKAIAIgAgBk0NAEG0GyAAIAZrIgE2AgBBwBtBwBsoAgAiACAGaiICNgIAIAIgAUEBcjYCBCAAIAZBA3I2AgQgAEEIaiEADAQLQaQbQTA2AgBBACEADAMLIAAgAjYCACAAIAAoAgQgBGo2AgQgAkF4IAJrQQdxaiIIIAZBA3I2AgQgAUF4IAFrQQdxaiIEIAYgCGoiA2shBwJAQcAbKAIAIARGBEBBwBsgAzYCAEG0G0G0GygCACAHaiIANgIAIAMgAEEBcjYCBAwBC0G8GygCACAERgRAQbwbIAM2AgBBsBtBsBsoAgAgB2oiADYCACADIABBAXI2AgQgACADaiAANgIADAELIAQoAgQiAEEDcUEBRgRAIABBeHEhCSAEKAIMIQICQCAAQf8BTQRAIAQoAggiASACRgRAQagbQagbKAIAQX4gAEEDdndxNgIADAILIAEgAjYCDCACIAE2AggMAQsgBCgCGCEGAkAgAiAERwRAIAQoAggiACACNgIMIAIgADYCCAwBCwJAIAQoAhQiAAR/IARBFGoFIAQoAhAiAEUNASAEQRBqCyEBA0AgASEFIAAiAkEUaiEBIAAoAhQiAA0AIAJBEGohASACKAIQIgANAAsgBUEANgIADAELQQAhAgsgBkUNAAJAIAQoAhwiAEECdEHYHWoiASgCACAERgRAIAEgAjYCACACDQFBrBtBrBsoAgBBfiAAd3E2AgAMAgsCQCAEIAYoAhBGBEAgBiACNgIQDAELIAYgAjYCFAsgAkUNAQsgAiAGNgIYIAQoAhAiAARAIAIgADYCECAAIAI2AhgLIAQoAhQiAEUNACACIAA2AhQgACACNgIYCyAHIAlqIQcgBCAJaiIEKAIEIQALIAQgAEF+cTYCBCADIAdBAXI2AgQgAyAHaiAHNgIAIAdB/wFNBEAgB0F4cUHQG2ohAAJ/QagbKAIAIgFBASAHQQN2dCICcUUEQEGoGyABIAJyNgIAIAAMAQsgACgCCAshASAAIAM2AgggASADNgIMIAMgADYCDCADIAE2AggMAQtBHyECIAdB////B00EQCAHQSYgB0EIdmciAGt2QQFxIABBAXRrQT5qIQILIAMgAjYCHCADQgA3AhAgAkECdEHYHWohAAJAAkBBrBsoAgAiAUEBIAJ0IgVxRQRAQawbIAEgBXI2AgAgACADNgIADAELIAdBGSACQQF2a0EAIAJBH0cbdCECIAAoAgAhAQNAIAEiACgCBEF4cSAHRg0CIAJBHXYhASACQQF0IQIgACABQQRxaiIFKAIQIgENAAsgBSADNgIQCyADIAA2AhggAyADNgIMIAMgAzYCCAwBCyAAKAIIIgEgAzYCDCAAIAM2AgggA0EANgIYIAMgADYCDCADIAE2AggLIAhBCGohAAwCCwJAIAhFDQACQCAFKAIcIgFBAnRB2B1qIgIoAgAgBUYEQCACIAA2AgAgAA0BQawbIAdBfiABd3EiBzYCAAwCCwJAIAUgCCgCEEYEQCAIIAA2AhAMAQsgCCAANgIUCyAARQ0BCyAAIAg2AhggBSgCECIBBEAgACABNgIQIAEgADYCGAsgBSgCFCIBRQ0AIAAgATYCFCABIAA2AhgLAkAgA0EPTQRAIAUgAyAGaiIAQQNyNgIEIAAgBWoiACAAKAIEQQFyNgIEDAELIAUgBkEDcjYCBCAFIAZqIgQgA0EBcjYCBCADIARqIAM2AgAgA0H/AU0EQCADQXhxQdAbaiEAAn9BqBsoAgAiAUEBIANBA3Z0IgJxRQRAQagbIAEgAnI2AgAgAAwBCyAAKAIICyEBIAAgBDYCCCABIAQ2AgwgBCAANgIMIAQgATYCCAwBC0EfIQAgA0H///8HTQRAIANBJiADQQh2ZyIAa3ZBAXEgAEEBdGtBPmohAAsgBCAANgIcIARCADcCECAAQQJ0QdgdaiEBAkACQCAHQQEgAHQiAnFFBEBBrBsgAiAHcjYCACABIAQ2AgAgBCABNgIYDAELIANBGSAAQQF2a0EAIABBH0cbdCEAIAEoAgAhAQNAIAEiAigCBEF4cSADRg0CIABBHXYhASAAQQF0IQAgAiABQQRxaiIHKAIQIgENAAsgByAENgIQIAQgAjYCGAsgBCAENgIMIAQgBDYCCAwBCyACKAIIIgAgBDYCDCACIAQ2AgggBEEANgIYIAQgAjYCDCAEIAA2AggLIAVBCGohAAwBCwJAIAlFDQACQCACKAIcIgFBAnRB2B1qIgUoAgAgAkYEQCAFIAA2AgAgAA0BQawbIAtBfiABd3E2AgAMAgsCQCACIAkoAhBGBEAgCSAANgIQDAELIAkgADYCFAsgAEUNAQsgACAJNgIYIAIoAhAiAQRAIAAgATYCECABIAA2AhgLIAIoAhQiAUUNACAAIAE2AhQgASAANgIYCwJAIANBD00EQCACIAMgBmoiAEEDcjYCBCAAIAJqIgAgACgCBEEBcjYCBAwBCyACIAZBA3I2AgQgAiAGaiIFIANBAXI2AgQgAyAFaiADNgIAIAgEQCAIQXhxQdAbaiEAQbwbKAIAIQECf0EBIAhBA3Z0IgcgBHFFBEBBqBsgBCAHcjYCACAADAELIAAoAggLIQQgACABNgIIIAQgATYCDCABIAA2AgwgASAENgIIC0G8GyAFNgIAQbAbIAM2AgALIAJBCGohAAsgCkEQaiQAIAAL3AsBCH8CQCAARQ0AIABBCGsiAyAAQQRrKAIAIgJBeHEiAGohBQJAIAJBAXENACACQQJxRQ0BIAMgAygCACIEayIDQbgbKAIASQ0BIAAgBGohAAJAAkACQEG8GygCACADRwRAIAMoAgwhASAEQf8BTQRAIAEgAygCCCICRw0CQagbQagbKAIAQX4gBEEDdndxNgIADAULIAMoAhghByABIANHBEAgAygCCCICIAE2AgwgASACNgIIDAQLIAMoAhQiAgR/IANBFGoFIAMoAhAiAkUNAyADQRBqCyEEA0AgBCEGIAIiAUEUaiEEIAEoAhQiAg0AIAFBEGohBCABKAIQIgINAAsgBkEANgIADAMLIAUoAgQiAkEDcUEDRw0DQbAbIAA2AgAgBSACQX5xNgIEIAMgAEEBcjYCBCAFIAA2AgAPCyACIAE2AgwgASACNgIIDAILQQAhAQsgB0UNAAJAIAMoAhwiBEECdEHYHWoiAigCACADRgRAIAIgATYCACABDQFBrBtBrBsoAgBBfiAEd3E2AgAMAgsCQCADIAcoAhBGBEAgByABNgIQDAELIAcgATYCFAsgAUUNAQsgASAHNgIYIAMoAhAiAgRAIAEgAjYCECACIAE2AhgLIAMoAhQiAkUNACABIAI2AhQgAiABNgIYCyADIAVPDQAgBSgCBCIEQQFxRQ0AAkACQAJAAkAgBEECcUUEQEHAGygCACAFRgRAQcAbIAM2AgBBtBtBtBsoAgAgAGoiADYCACADIABBAXI2AgQgA0G8GygCAEcNBkGwG0EANgIAQbwbQQA2AgAPC0G8GygCACIHIAVGBEBBvBsgAzYCAEGwG0GwGygCACAAaiIANgIAIAMgAEEBcjYCBCAAIANqIAA2AgAPCyAEQXhxIABqIQAgBSgCDCEBIARB/wFNBEAgBSgCCCICIAFGBEBBqBtBqBsoAgBBfiAEQQN2d3E2AgAMBQsgAiABNgIMIAEgAjYCCAwECyAFKAIYIQggASAFRwRAIAUoAggiAiABNgIMIAEgAjYCCAwDCyAFKAIUIgIEfyAFQRRqBSAFKAIQIgJFDQIgBUEQagshBANAIAQhBiACIgFBFGohBCABKAIUIgINACABQRBqIQQgASgCECICDQALIAZBADYCAAwCCyAFIARBfnE2AgQgAyAAQQFyNgIEIAAgA2ogADYCAAwDC0EAIQELIAhFDQACQCAFKAIcIgRBAnRB2B1qIgIoAgAgBUYEQCACIAE2AgAgAQ0BQawbQawbKAIAQX4gBHdxNgIADAILAkAgBSAIKAIQRgRAIAggATYCEAwBCyAIIAE2AhQLIAFFDQELIAEgCDYCGCAFKAIQIgIEQCABIAI2AhAgAiABNgIYCyAFKAIUIgJFDQAgASACNgIUIAIgATYCGAsgAyAAQQFyNgIEIAAgA2ogADYCACADIAdHDQBBsBsgADYCAA8LIABB/wFNBEAgAEF4cUHQG2ohAgJ/QagbKAIAIgRBASAAQQN2dCIAcUUEQEGoGyAAIARyNgIAIAIMAQsgAigCCAshACACIAM2AgggACADNgIMIAMgAjYCDCADIAA2AggPC0EfIQEgAEH///8HTQRAIABBJiAAQQh2ZyICa3ZBAXEgAkEBdGtBPmohAQsgAyABNgIcIANCADcCECABQQJ0QdgdaiEEAn8CQAJ/QawbKAIAIgZBASABdCICcUUEQEGsGyACIAZyNgIAIAQgAzYCAEEYIQFBCAwBCyAAQRkgAUEBdmtBACABQR9HG3QhASAEKAIAIQQDQCAEIgIoAgRBeHEgAEYNAiABQR12IQQgAUEBdCEBIAIgBEEEcWoiBigCECIEDQALIAYgAzYCEEEYIQEgAiEEQQgLIQAgAyICDAELIAIoAggiBCADNgIMIAIgAzYCCEEYIQBBCCEBQQALIQYgASADaiAENgIAIAMgAjYCDCAAIANqIAY2AgBByBtByBsoAgBBAWsiAEF/IAAbNgIACwtsAQJ/QaAbKAIAIgEgAEEHakF4cSICaiEAAkAgAkEAIAAgAU0bRQRAIAA/AEEQdE0NASAAPwBBEHRrQf//A2pBEHZAAEF/RgR/QQAFQQAQAEEBCw0BC0GkG0EwNgIAQX8PC0GgGyAANgIAIAELBgAgACQACwQAIwALuQUBDH8jAEEQayIMJAACQCAEQQdNBEAgDEIANwMIIAQEQCAMQQhqIAMgBPwKAAALQWwgACABIAIgDEEIakEIEAYiACAAIARLGyAAIABBiX9JGyEFDAELIAEoAgBBAWoiDkEBdCIIBEAgAEEAIAj8CwALIAMoAAAiBUEPcSIHQQpLBEBBVCEFDAELIAIgB0EFajYCACADIARqIgJBBGshCCACQQdrIQ0gB0EGaiEPQQQhBiAFQQR2IQVBICAHdCIJQQFyIQpBACECQQEhByADIQQDQAJAIAdBAXFFBEADQCAFQX9zQYCAgIB4cmgiB0EYSUUEQCACQSRqIQIgBCANTQR/IARBA2oFIAQgDWtBA3QgBmpBH3EhBiAICyIEKAAAIAZ2IQUMAQsLIAYgB0EecSILakECaiEGIAdBAXZBA2wgAmogBSALdkEDcWoiAiAOTw0BAn8gBCANSyAGQQN2IARqIgUgCEtxRQRAIAZBB3EhBiAFDAELIAQgCGtBA3QgBmpBH3EhBiAICyIEKAAAIAZ2IQULIAUgCUEBa3EiByAJQQF0QQFrIgsgCmsiEEkEfyAPQQFrBSAFIAtxIgUgEEEAIAUgCU4bayEHIA8LIQUgACACQQF0aiAHQQFrIgs7AQAgAkEBaiECIAUgBmohBiAJQQEgB2sgCyAHQQBKGyAKaiIKSgRAIApBAkgNAUEgIApnIgVrIQ9BASAFQR9zdCEJCyACIA5PDQAgC0EARyEHAn8gBCANSyAGQQN1IARqIgUgCEtxRQRAIAZBB3EhBiAFDAELIAYgBCAIa0EDdGpBH3EhBiAICyIEKAAAIAZ2IQUMAQsLQWwhBSAKQQFHDQAgAiAOSwRAQVAhBQwBCyAGQSBKDQAgASACQQFrNgIAIAQgBkEHakEDdWogA2shBQsgDEEQaiQAIAULrRkCEX8BfiMAQTBrIgckAEG4fyEIAkAgBUUNACAELAAAIglB/wFxIQ0CQAJAIAlBAEgEQCANQf4Aa0EBdiIGIAVPDQMgDUH/AGsiCEH/AUsNAiAEQQFqIQRBACEFA0AgBSAITwRAIAYhDQwDBSAAIAVqIg0gBCAFQQF2aiIJLQAAQQR2OgAAIA0gCS0AAEEPcToAASAFQQJqIQUMAQsACwALIAUgDU0NAiAHQf8BNgIEIAYgB0EEaiAHQQhqIARBAWoiCiANEAYiBEGIf0sEQCAEIQgMAwtBVCEIIAcoAggiC0EGSw0CIAcoAgQiBUEBdCIMQQJqrUIBIAuthiIYQQQgC3QiCUEIaq18fEILfEL8//////////8Ag0LoAlYNAkFSIQggBUH/AUsNAkHoAiAJa60gBUEBaiIQQQF0rSAYfEIIfFQNAiANIARrIRQgBCAKaiEVIAwgBkGABGoiDCAJakEEaiIWakECaiERIAZBhARqIRcgBkGGBGohE0GAgAIgC3RBEHYhCEEAIQVBASEOQQEgC3QiCkEBayISIQQDQCAFIBBGRQRAAkAgBiAFQQF0Ig9qLwEAIglB//8DRgRAIBMgBEECdGogBToAACAEQQFrIQRBASEJDAELIA5BACAIIAnBShshDgsgDyAWaiAJOwEAIAVBAWohBQwBCwsgBiAOOwGCBCAGIAs7AYAEAkAgBCASRgRAQgAhGEEAIQlBACEIA0AgCSAQRgRAIApBA3YgCkEBdmpBA2oiBkEBdCEJQQAhBEEAIQgDQCAIIApPDQQgCCARaiEQQQAhBQNAIAVBAkZFBEAgEyAFIAZsIARqIBJxQQJ0aiAFIBBqLQAAOgAAIAVBAWohBQwBCwsgCEECaiEIIAQgCWogEnEhBAwACwAFIAYgCUEBdGouAQAhBCAIIBFqIg8gGDcAAEEIIQUDQCAEIAVMRQRAIAUgD2ogGDcAACAFQQhqIQUMAQsLIBhCgYKEiJCgwIABfCEYIAlBAWohCSAEIAhqIQgMAQsACwALIApBA3YgCkEBdmpBA2ohEUEAIQhBACEFA0AgCCAQRkUEQEEAIQkgBiAIQQF0ai4BACIPQQAgD0EAShshDwNAIAkgD0ZFBEAgEyAFQQJ0aiAIOgAAA0AgBSARaiAScSIFIARLDQALIAlBAWohCQwBCwsgCEEBaiEIDAELC0F/IQggBQ0DCyALQR9rIQhBACEFA0AgBSAKRkUEQCAWIBcgBUECdGoiBC0AAkEBdGoiBiAGLwEAIgZBAWo7AQAgBCAIIAZnaiIJOgADIAQgBiAJdCAKazsBACAFQQFqIQUMAQsLAkACQCAOQf//A3EEQCAHQRxqIgQgFSAUEAgiCEGIf0sNAiAHQRRqIAQgDBAJIAdBDGogBCAMEAkgBygCICIIQSBLDQECQCAHAn8gBygCJCIEIAcoAixPBEAgByAEIAhBA3ZrIgU2AiQgCEEHcQwBCyAEIAcoAigiBUYNASAHIAQgBCAFayAIQQN2IgYgBCAGayAFSRsiBGsiBTYCJCAIIARBA3RrCyIINgIgIAcgBSgAADYCHAtBACEFA0ACQAJAIAhBIU8EQCAHQbAaNgIkDAELIAcCfyAHKAIkIgQgBygCLE8EQCAHIAQgCEEDdmsiBDYCJEEBIQkgCEEHcQwBCyAEIAcoAigiBkYNASAHIAQgCEEDdiIJIAQgBmsgBCAJayAGTyIJGyIGayIENgIkIAggBkEDdGsLNgIgIAcgBCgAADYCHCAJRSAFQfsBS3INACAAIAVqIgggB0EUaiAHQRxqIgQQCjoAACAIIAdBDGogBBAKOgABAkAgBygCICIGQSFPBEAgB0GwGjYCJAwBCyAHKAIkIgQgBygCLE8EQCAHIAZBB3E2AiAgByAEIAZBA3ZrIgQ2AiQgByAEKAAANgIcDAMLIAQgBygCKCIJRg0AIAcgBiAEIAlrIAZBA3YiBiAEIAZrIgYgCUkbIgpBA3RrNgIgIAcgBCAKayIENgIkIAcgBCgAADYCHCAGIAlPDQILIAVBAnIhBQsgAEEBaiEMAn8CQANAQbp/IQggBUH9AUsNByAAIAVqIgogB0EUaiAHQRxqEAo6AAAgBSAMaiELIAcoAiAiBkEgSw0BAkAgBwJ/IAcoAiQiBCAHKAIsTwRAIAcgBCAGQQN2ayIENgIkIAZBB3EMAQsgBCAHKAIoIglGDQEgByAEIAQgCWsgBkEDdiIOIAQgDmsgCUkbIglrIgQ2AiQgBiAJQQN0aws2AiAgByAEKAAANgIcCyAFQf0BRg0HIAsgB0EMaiAHQRxqEAo6AAAgBUECaiEFIAcoAiAiBkEgTQRAIAcCfyAHKAIkIgQgBygCLE8EQCAHIAQgBkEDdmsiCDYCJCAGQQdxDAELIAQgBygCKCIIRg0CIAcgBCAEIAhrIAZBA3YiCSAEIAlrIAhJGyIEayIINgIkIAYgBEEDdGsLNgIgIAcgCCgAADYCHAwBCwsgB0GwGjYCJCAAIAVqIAdBFGogB0EcahAKOgAAIApBA2oMAQsgB0GwGjYCJCALIAdBDGogB0EcahAKOgAAIApBAmoLIABrIQgMBAsgCCAHQRRqIAdBHGoiBBAKOgACIAggB0EMaiAEEAo6AAMgBUEEaiEFIAcoAiAhCAwACwALIAdBHGoiBCAVIBQQCCIIQYh/Sw0BIAdBFGogBCAMEAkgB0EMaiAEIAwQCSAHKAIgIghBIEsNAAJAIAcCfyAHKAIkIgQgBygCLE8EQCAHIAQgCEEDdmsiBTYCJCAIQQdxDAELIAQgBygCKCIFRg0BIAcgBCAEIAVrIAhBA3YiBiAEIAZrIAVJGyIEayIFNgIkIAggBEEDdGsLIgg2AiAgByAFKAAANgIcC0EAIQUDQAJAAkAgCEEhTwRAIAdBsBo2AiQMAQsgBwJ/IAcoAiQiBCAHKAIsTwRAIAcgBCAIQQN2ayIENgIkQQEhCSAIQQdxDAELIAQgBygCKCIGRg0BIAcgBCAIQQN2IgkgBCAGayAEIAlrIAZPIgkbIgZrIgQ2AiQgCCAGQQN0aws2AiAgByAEKAAANgIcIAlFIAVB+wFLcg0AIAAgBWoiCCAHQRRqIAdBHGoiBBALOgAAIAggB0EMaiAEEAs6AAECQCAHKAIgIgZBIU8EQCAHQbAaNgIkDAELIAcoAiQiBCAHKAIsTwRAIAcgBkEHcTYCICAHIAQgBkEDdmsiBDYCJCAHIAQoAAA2AhwMAwsgBCAHKAIoIglGDQAgByAGIAQgCWsgBkEDdiIGIAQgBmsiBiAJSRsiCkEDdGs2AiAgByAEIAprIgQ2AiQgByAEKAAANgIcIAYgCU8NAgsgBUECciEFCyAAQQFqIQwCfwJAA0BBun8hCCAFQf0BSw0GIAAgBWoiCiAHQRRqIAdBHGoQCzoAACAFIAxqIQsgBygCICIGQSBLDQECQCAHAn8gBygCJCIEIAcoAixPBEAgByAEIAZBA3ZrIgQ2AiQgBkEHcQwBCyAEIAcoAigiCUYNASAHIAQgBCAJayAGQQN2Ig4gBCAOayAJSRsiCWsiBDYCJCAGIAlBA3RrCzYCICAHIAQoAAA2AhwLIAVB/QFGDQYgCyAHQQxqIAdBHGoQCzoAACAFQQJqIQUgBygCICIGQSBNBEAgBwJ/IAcoAiQiBCAHKAIsTwRAIAcgBCAGQQN2ayIINgIkIAZBB3EMAQsgBCAHKAIoIghGDQIgByAEIAQgCGsgBkEDdiIJIAQgCWsgCEkbIgRrIgg2AiQgBiAEQQN0aws2AiAgByAIKAAANgIcDAELCyAHQbAaNgIkIAAgBWogB0EUaiAHQRxqEAs6AAAgCkEDagwBCyAHQbAaNgIkIAsgB0EMaiAHQRxqEAs6AAAgCkECagsgAGshCAwDCyAIIAdBFGogB0EcaiIEEAs6AAIgCCAHQQxqIAQQCzoAAyAFQQRqIQUgBygCICEIDAALAAtBbCEICyAIQYh/Sw0CC0EAIQUgAUEAQTT8CwAgCCEGQQAhBANAIAUgBkcEQCAAIAVqIggtAAAiCUEMSw0CIAEgCUECdGoiCSAJKAIAQQFqNgIAIAVBAWohBUEBIAgtAAB0QQF1IARqIQQMAQsLQWwhCCAERQ0BIARnIgVBHHNBC0sNASADQSAgBWsiAzYCAEGAgICAeEEBIAN0IARrIgNnIgR2IANHDQEgACAGakEgIARrIgA6AAAgASAAQQJ0aiIAIAAoAgBBAWo2AgAgASgCBCIAQQJJIABBAXFyDQEgAiAGQQFqNgIAIA1BAWohCAwBC0FsIQgLIAdBMGokACAIC/UBAQF/IAJFBEAgAEIANwIAIABBADYCECAAQgA3AghBuH8PCyAAIAE2AgwgACABQQRqNgIQIAJBBE8EQCAAIAEgAmoiAUEEayIDNgIIIAAgAygAADYCACABQQFrLQAAIgEEQCAAQQggAWdBH3NrNgIEIAIPCyAAQQA2AgRBfw8LIAAgATYCCCAAIAEtAAAiAzYCAAJAAkACQCACQQJrDgIBAAILIAAgAS0AAkEQdCADciIDNgIACyAAIAEtAAFBCHQgA2o2AgALIAEgAmpBAWstAAAiAUUEQCAAQQA2AgRBbA8LIAAgAWcgAkEDdGtBCWo2AgQgAguuAQEEfyABIAIvAQAiAyABKAIEaiIENgIEIAAgA0ECdEGwGWooAgAgASgCAEEAIARrdnE2AgACQCAEQSFPBEAgAUGwGjYCCAwBCyABKAIIIgMgASgCEE8EQCABEAwMAQsgAyABKAIMIgVGDQAgASADIAMgBWsgBEEDdiIGIAMgBmsgBUkbIgNrIgU2AgggASAEIANBA3RrNgIEIAEgBSgAADYCAAsgACACQQRqNgIEC0wBBH8gACgCBCAAKAIAQQJ0aiICLQACIQMgAi8BACEEIAEgASgCBCIFIAItAAMiAmo2AgQgACAEIAEoAgAgBXRBACACa3ZqNgIAIAMLVgEEfyAAKAIEIAAoAgBBAnRqIgItAAIhAyACLwEAIQQgASACLQADIgIgASgCBGoiBTYCBCAAIAQgAkECdEGwGWooAgAgASgCAEEAIAVrdnFqNgIAIAMLLwEBfyAAIAAoAgQiAUEHcTYCBCAAIAAoAgggAUEDdmsiATYCCCAAIAEoAAA2AgALCAAgAEGIf0sLxQkCDX8CfiMAQRBrIgskACALQQA2AgwgC0EANgIIAn8CQCADQdQJaiIFIAMgC0EIaiALQQxqIAEgAiADQegAahAHIhBBiH9LDQAgCygCCCEIQQogACgCACIJQf8BcSIHIAdBCk8bQQFqIgQgCygCDCIBTwRAAkAgASAETw0AIAQgAWshAkEAIQEDQCABIAhGBEAgBCEBA0AgASACTQRAA0AgAkUNBSADIAJBAnRqQQA2AgAgAkEBayECDAALAAUgAyABQQJ0aiADIAEgAmtBAnRqKAIANgIAIAFBAWshAQwBCwALAAUgASAFaiIKIAJBACAKLQAAIgobIApqOgAAIAFBAWohAQwBCwALAAsgBCEBC0FUIAEgB0EBaksNARogAEEEaiEKIAAgCUH/gYB4cSABQRB0QYCA/AdxcjYCACABQQFqIQ4gA0E0aiEEQQAhAUEAIQIDQCACIA5GRQRAIAMgAkECdCIAaigCACEHIAAgBGogATYCACACQQFqIQIgASAHaiEBDAELCyADQdQHaiEHIAhBA2shAUEAIQADQAJAQQAhAiAAIAFOBEADQCAAIAhODQIgBCAAIAVqLQAAQQJ0aiIBIAEoAgAiAUEBajYCACABIAdqIAA6AAAgAEEBaiEADAALAAUDQCACQQRGRQRAIAQgBSAAIAJyIglqLQAAQQJ0aiIMIAwoAgAiDEEBajYCACAHIAxqIAk6AAAgAkEBaiECDAELCyAAQQRqIQAMAgsACwsgAygCACEIQQAhAEEBIQkDQCAJIA5GDQEgDiAJayEEIAMgCUECdGooAgAhBQJAAkACQAJAAkACQEEBIAl0QQF1IgxBAWsOCAABBAIEBAQDBAtBACECIAVBACAFQQBKGyEGIAAhAQNAIAIgBkYNBSAKIAFBAXRqIg0gByACIAhqai0AADoAASANIAQ6AAAgAkEBaiECIAFBAWohAQwACwALQQAhAiAFQQAgBUEAShshDSAAIQEDQCACIA1GDQQgCiABQQF0aiIGIAcgAiAIamotAAAiDzoAAyAGIAQ6AAIgBiAPOgABIAYgBDoAACACQQFqIQIgAUECaiEBDAALAAtBACECIAVBACAFQQBKGyEGIARB/wFxrSERIAAhAQNAIAIgBkYNAyAKIAFBAXRqIAcgAiAIamoxAABCCIYgEYRCgYCEgJCAwAB+NwAAIAJBAWohAiABQQRqIQEMAAsAC0EAIQIgBUEAIAVBAEobIQYgBEH/AXGtIREgACEBA0AgAiAGRg0CIAogAUEBdGoiBCAHIAIgCGpqMQAAQgiGIBGEQoGAhICQgMAAfiISNwAIIAQgEjcAACACQQFqIQIgAUEIaiEBDAALAAtBACEBIAVBACAFQQBKGyENIARB/wFxrSESIAAhBANAIAEgDUYNASAKIARBAXRqIQ8gByABIAhqajEAAEIIhiAShEKBgISAkIDAAH4hEUEAIQIDQCACIAxORQRAIA8gAkEBdGoiBiARNwAYIAYgETcAECAGIBE3AAggBiARNwAAIAJBEGohAgwBCwsgAUEBaiEBIAQgDGohBAwACwALIAlBAWohCSAFIAhqIQggBSAMbCAAaiEADAALAAsgEAshAiALQRBqJAAgAgufAwIBfgF/AkACQAJAAkACQAJAQQEgBCADa3QiCEEBaw4IAAEEAgQEBAMECyAGQRh0IANBEHRqIQMDQCABIAJGDQUgACABLQAAIgQgBEEIdCAFciAGQQFGGyADcjYBACABQQFqIQEgAEEEaiEADAALAAsgBkEYdCADQRB0aiEDA0AgASACRg0EIAAgAS0AACIEIARBCHQgBXIgBkEBRhsgA3IiBDYBBCAAIAQ2AQAgAUEBaiEBIABBCGohAAwACwALA0AgASACRg0DIAAgAS0AACADIAUgBhAQIgc3AQggACAHNwEAIAFBAWohASAAQRBqIQAMAAsACwNAIAEgAkYNAiAAIAEtAAAgAyAFIAYQECIHNwEYIAAgBzcBECAAIAc3AQggACAHNwEAIAFBAWohASAAQSBqIQAMAAsACwNAIAEgAkYNASAAIAhBAnRqIQQgAS0AACADIAUgBhAQIQcDQCAAIARGRQRAIAAgBzcBGCAAIAc3ARAgACAHNwEIIAAgBzcBACAAQSBqIQAMAQsLIAFBAWohASAEIQAMAAsACwsmACADQRh0IAFBEHRqIAAgAEEIdCACciADQQFGG3KtQoGAgIAQfgu7BgEKfyMAQSBrIgUkACAELwECIQsgBUEMaiACIAMQCCIDQYh/TQRAIARBBGohCCAAIAFqIQkCQAJAAkAgAUEETwRAIAlBA2shDUEAIAtrQR9xIQwgBSgCFCEDIAUoAhghByAFKAIcIQ4gBSgCDCEGIAUoAhAhBANAIARBIEsEQEGwGiEDDAQLAkAgAyAOTwRAIARBB3EhAiAEQQN2IQZBASEEDAELIAMgB0YNBCAEIARBA3YiAiADIAdrIAMgAmsgB08iBBsiBkEDdGshAgsgAyAGayIDKAAAIQYgBEUgACANT3INAiAIIAYgAnQgDHZBAXRqIgQtAAAhCiAAIAQtAAE6AAAgCCAGIAIgCmoiAnQgDHZBAXRqIgQtAAAhCiAAIAQtAAE6AAEgAiAKaiEEIABBAmohAAwACwALIAUoAhAiBEEhTwRAIAVBsBo2AhQMAwsgBSgCFCIDIAUoAhxPBEAgBSAEQQdxIgI2AhAgBSADIARBA3ZrIgM2AhQgBSADKAAANgIMIAIhBAwDCyADIAUoAhgiAkYNAiAFIAQgAyACayAEQQN2IgQgAyAEayACSRsiAkEDdGsiBDYCECAFIAMgAmsiAjYCFCAFIAIoAAA2AgwMAgsgAiEECyAFIAQ2AhAgBSADNgIUIAUgBjYCDAtBACALa0EfcSEHA0ACQCAEQSFPBEAgBUGwGjYCFAwBCyAFAn8gBSgCFCICIAUoAhxPBEAgBSACIARBA3ZrIgM2AhRBASEGIARBB3EMAQsgAiAFKAIYIgNGDQEgBSACIARBA3YiBiACIANrIAIgBmsgA08iBhsiAmsiAzYCFCAEIAJBA3RrCyIENgIQIAUgAygAACICNgIMIAZFIAAgCU9yDQAgCCACIAR0IAd2QQF0aiICLQABIQMgBSAEIAItAABqNgIQIAAgAzoAACAAQQFqIQAgBSgCECEEDAELCwNAIAAgCU9FBEAgCCAFKAIMIAUoAhAiAnQgB3ZBAXRqIgMtAAEhBCAFIAIgAy0AAGo2AhAgACAEOgAAIABBAWohAAwBCwtBbEFsIAEgBSgCEEEgRxsgBSgCFCAFKAIYRxshAwsgBUEgaiQAIAML/SEBGX8jAEHQAGsiBSQAQWwhBgJAIAFBBkkgA0EKSXINAAJAIAMgAi8ABCIHIAIvAAAiCiACLwACIglqakEGaiILSQ0AIAAgAUEDakECdiIMaiIIIAxqIg0gDGoiDCAAIAFqIhFLDQAgBC8BAiEOIAVBPGogAkEGaiICIAoQCCIGQYh/Sw0BIAVBKGogAiAKaiICIAkQCCIGQYh/Sw0BIAVBFGogAiAJaiICIAcQCCIGQYh/Sw0BIAUgAiAHaiADIAtrEAgiBkGIf0sNASAEQQRqIQogEUEDayESAkAgESAMa0EESQRAIAwhAyANIQIgCCEEDAELQQAgDmtBH3EhBkEAIQkgDCEDIA0hAiAIIQQDQCAJQQFxIAMgEk9yDQEgACAKIAUoAjwiCSAFKAJAIgt0IAZ2QQJ0aiIHLwEAOwAAIActAAIhECAHLQADIQ8gBCAKIAUoAigiEyAFKAIsIhR0IAZ2QQJ0aiIHLwEAOwAAIActAAIhFSAHLQADIRYgAiAKIAUoAhQiFyAFKAIYIhh0IAZ2QQJ0aiIHLwEAOwAAIActAAIhGSAHLQADIRogAyAKIAUoAgAiGyAFKAIEIhx0IAZ2QQJ0aiIHLwEAOwAAIActAAIhHSAHLQADIQcgACAPaiIPIAogCSALIBBqIgl0IAZ2QQJ0aiIALwEAOwAAIAUgCSAALQACajYCQCAALQADIQkgBCAWaiIEIAogEyAUIBVqIgt0IAZ2QQJ0aiIALwEAOwAAIAUgCyAALQACajYCLCAALQADIQsgAiAaaiICIAogFyAYIBlqIhB0IAZ2QQJ0aiIALwEAOwAAIAUgECAALQACajYCGCAALQADIRAgAyAHaiIHIAogGyAcIB1qIgB0IAZ2QQJ0aiIDLwEAOwAAIAUgACADLQACajYCBCAJIA9qIQAgBCALaiEEIAIgEGohAiAHIAMtAANqIQMgBUE8ahATIAVBKGoQE3IgBUEUahATciAFEBNyQQBHIQkMAAsACyAAIAhLIAQgDUtyDQBBbCEGIAIgDEsNAQJAAkAgCCAAayIJQQRPBEAgCEEDayEQQQAgDmtBH3EhCyAFKAJAIQYDQCAGQSFPBEAgBUGwGjYCRAwDCyAFAn8gBSgCRCIHIAUoAkxPBEAgBSAHIAZBA3ZrIgk2AkRBASEHIAZBB3EMAQsgByAFKAJIIglGDQMgBSAHIAZBA3YiDyAHIAlrIAcgD2sgCU8iBxsiD2siCTYCRCAGIA9BA3RrCyIGNgJAIAUgCSgAACIJNgI8IAdFIAAgEE9yDQIgACAKIAkgBnQgC3ZBAnRqIgYvAQA7AAAgBSAFKAJAIAYtAAJqIgc2AkAgACAGLQADaiIJIAogBSgCPCAHdCALdkECdGoiAC8BADsAACAFIAUoAkAgAC0AAmoiBjYCQCAJIAAtAANqIQAMAAsACyAFKAJAIgZBIU8EQCAFQbAaNgJEDAILIAUoAkQiCyAFKAJMTwRAIAUgBkEHcSIHNgJAIAUgCyAGQQN2ayIGNgJEIAUgBigAADYCPCAHIQYMAgsgCyAFKAJIIgdGDQEgBSAGIAsgB2sgBkEDdiIGIAsgBmsgB0kbIgdBA3RrIgY2AkAgBSALIAdrIgc2AkQgBSAHKAAANgI8DAELIAggAGshCQsCQCAJQQJJDQAgCEECayELQQAgDmtBH3EhEANAAkAgBkEhTwRAIAVBsBo2AkQMAQsgBQJ/IAUoAkQiByAFKAJMTwRAIAUgByAGQQN2ayIJNgJEQQEhByAGQQdxDAELIAcgBSgCSCIJRg0BIAUgByAGQQN2Ig8gByAJayAHIA9rIAlPIgcbIg9rIgk2AkQgBiAPQQN0awsiBjYCQCAFIAkoAAAiCTYCPCAHRSAAIAtLcg0AIAAgCiAJIAZ0IBB2QQJ0aiIHLwEAOwAAIAUgBSgCQCAHLQACaiIGNgJAIAAgBy0AA2ohAAwBCwsDQCAAIAtLDQEgACAKIAUoAjwgBnQgEHZBAnRqIgcvAQA7AAAgBSAFKAJAIActAAJqIgY2AkAgACAHLQADaiEADAALAAsCQCAAIAhPDQAgACAKIAUoAjwgBnRBACAOa3ZBAnRqIgAtAAA6AAAgBQJ/IAAtAANBAUYEQCAFKAJAIAAtAAJqDAELIAUoAkAiCEEfSw0BQSAgCCAALQACaiIAIABBIE8bCzYCQAsCQAJAIA0gBGsiBkEETwRAIA1BA2shCUEAIA5rQR9xIQcgBSgCLCEAA0AgAEEhTwRAIAVBsBo2AjAMAwsgBQJ/IAUoAjAiCCAFKAI4TwRAIAUgCCAAQQN2ayIGNgIwQQEhCCAAQQdxDAELIAggBSgCNCIGRg0DIAUgCCAAQQN2IgsgCCAGayAIIAtrIAZPIggbIgtrIgY2AjAgACALQQN0awsiADYCLCAFIAYoAAAiBjYCKCAIRSAEIAlPcg0CIAQgCiAGIAB0IAd2QQJ0aiIALwEAOwAAIAUgBSgCLCAALQACaiIINgIsIAQgAC0AA2oiBiAKIAUoAiggCHQgB3ZBAnRqIgQvAQA7AAAgBSAFKAIsIAQtAAJqIgA2AiwgBiAELQADaiEEDAALAAsgBSgCLCIAQSFPBEAgBUGwGjYCMAwCCyAFKAIwIgcgBSgCOE8EQCAFIABBB3EiCDYCLCAFIAcgAEEDdmsiADYCMCAFIAAoAAA2AiggCCEADAILIAcgBSgCNCIIRg0BIAUgACAHIAhrIABBA3YiACAHIABrIAhJGyIIQQN0ayIANgIsIAUgByAIayIINgIwIAUgCCgAADYCKAwBCyANIARrIQYLAkAgBkECSQ0AIA1BAmshCUEAIA5rQR9xIQsDQAJAIABBIU8EQCAFQbAaNgIwDAELIAUCfyAFKAIwIgggBSgCOE8EQCAFIAggAEEDdmsiBjYCMEEBIQcgAEEHcQwBCyAIIAUoAjQiBkYNASAFIAggAEEDdiIHIAggBmsgCCAHayAGTyIHGyIIayIGNgIwIAAgCEEDdGsLIgA2AiwgBSAGKAAAIgg2AiggB0UgBCAJS3INACAEIAogCCAAdCALdkECdGoiCC8BADsAACAFIAUoAiwgCC0AAmoiADYCLCAEIAgtAANqIQQMAQsLA0AgBCAJSw0BIAQgCiAFKAIoIAB0IAt2QQJ0aiIILwEAOwAAIAUgBSgCLCAILQACaiIANgIsIAQgCC0AA2ohBAwACwALAkAgBCANTw0AIAQgCiAFKAIoIAB0QQAgDmt2QQJ0aiIALQAAOgAAIAUCfyAALQADQQFGBEAgBSgCLCAALQACagwBCyAFKAIsIgRBH0sNAUEgIAQgAC0AAmoiACAAQSBPGws2AiwLAkACQCAMIAJrIgZBBE8EQCAMQQNrIQdBACAOa0EfcSEIIAUoAhghAANAIABBIU8EQCAFQbAaNgIcDAMLIAUCfyAFKAIcIgQgBSgCJE8EQCAFIAQgAEEDdmsiBjYCHEEBIQkgAEEHcQwBCyAEIAUoAiAiDUYNAyAFIAQgAEEDdiIGIAQgDWsgBCAGayANTyIJGyIEayIGNgIcIAAgBEEDdGsLIgA2AhggBSAGKAAAIgQ2AhQgCUUgAiAHT3INAiACIAogBCAAdCAIdkECdGoiAC8BADsAACAFIAUoAhggAC0AAmoiBDYCGCACIAAtAANqIg0gCiAFKAIUIAR0IAh2QQJ0aiICLwEAOwAAIAUgBSgCGCACLQACaiIANgIYIA0gAi0AA2ohAgwACwALIAUoAhgiAEEhTwRAIAVBsBo2AhwMAgsgBSgCHCIIIAUoAiRPBEAgBSAAQQdxIgQ2AhggBSAIIABBA3ZrIgA2AhwgBSAAKAAANgIUIAQhAAwCCyAIIAUoAiAiBEYNASAFIAAgCCAEayAAQQN2IgAgCCAAayAESRsiBEEDdGsiADYCGCAFIAggBGsiBDYCHCAFIAQoAAA2AhQMAQsgDCACayEGCwJAIAZBAkkNACAMQQJrIQ1BACAOa0EfcSEHA0ACQCAAQSFPBEAgBUGwGjYCHAwBCyAFAn8gBSgCHCIEIAUoAiRPBEAgBSAEIABBA3ZrIgY2AhxBASEIIABBB3EMAQsgBCAFKAIgIghGDQEgBSAEIABBA3YiBiAEIAhrIAQgBmsgCE8iCBsiBGsiBjYCHCAAIARBA3RrCyIANgIYIAUgBigAACIENgIUIAhFIAIgDUtyDQAgAiAKIAQgAHQgB3ZBAnRqIgQvAQA7AAAgBSAFKAIYIAQtAAJqIgA2AhggAiAELQADaiECDAELCwNAIAIgDUsNASACIAogBSgCFCAAdCAHdkECdGoiBC8BADsAACAFIAUoAhggBC0AAmoiADYCGCACIAQtAANqIQIMAAsACwJAIAIgDE8NACACIAogBSgCFCAAdEEAIA5rdkECdGoiAC0AADoAACAFAn8gAC0AA0EBRgRAIAUoAhggAC0AAmoMAQsgBSgCGCICQR9LDQFBICACIAAtAAJqIgAgAEEgTxsLNgIYCwJAIBEgA2tBBE8EQEEAIA5rQR9xIQQgBSgCBCEAA0AgAEEhTwRAIAVBsBo2AggMAwsgBQJ/IAUoAggiAiAFKAIQTwRAIAUgAiAAQQN2ayIGNgIIQQEhAiAAQQdxDAELIAIgBSgCDCIMRg0DIAUgAiAAQQN2IgggAiAMayACIAhrIAxPIgIbIgxrIgY2AgggACAMQQN0awsiADYCBCAFIAYoAAAiDDYCACACRSADIBJPcg0CIAMgCiAMIAB0IAR2QQJ0aiIALwEAOwAAIAUgBSgCBCAALQACaiICNgIEIAMgAC0AA2oiAyAKIAUoAgAgAnQgBHZBAnRqIgIvAQA7AAAgBSAFKAIEIAItAAJqIgA2AgQgAyACLQADaiEDDAALAAsgBSgCBCIAQSFPBEAgBUGwGjYCCAwBCyAFKAIIIgQgBSgCEE8EQCAFIABBB3EiAjYCBCAFIAQgAEEDdmsiADYCCCAFIAAoAAA2AgAgAiEADAELIAQgBSgCDCICRg0AIAUgACAEIAJrIABBA3YiACAEIABrIAJJGyICQQN0ayIANgIEIAUgBCACayICNgIIIAUgAigAADYCAAsCQCARIANrQQJJDQAgEUECayEEQQAgDmtBH3EhDANAAkAgAEEhTwRAIAVBsBo2AggMAQsgBQJ/IAUoAggiAiAFKAIQTwRAIAUgAiAAQQN2ayIGNgIIQQEhCSAAQQdxDAELIAIgBSgCDCIIRg0BIAUgAiAAQQN2Ig0gAiAIayACIA1rIAhPIgkbIgJrIgY2AgggACACQQN0awsiADYCBCAFIAYoAAAiAjYCACAJRSADIARLcg0AIAMgCiACIAB0IAx2QQJ0aiICLwEAOwAAIAUgBSgCBCACLQACaiIANgIEIAMgAi0AA2ohAwwBCwsDQCADIARLDQEgAyAKIAUoAgAgAHQgDHZBAnRqIgIvAQA7AAAgBSAFKAIEIAItAAJqIgA2AgQgAyACLQADaiEDDAALAAsCQCADIBFPDQAgAyAKIAUoAgAgAHRBACAOa3ZBAnRqIgItAAA6AAAgAi0AA0EBRgRAIAUoAgQgAi0AAmohAAwBCyAFKAIEIgBBH0sNAEEgIAAgAi0AAmoiACAAQSBPGyEAC0FsQWxBbEFsQWxBbEFsQWwgASAAQSBHGyAFKAIIIAUoAgxHGyAFKAIYQSBHGyAFKAIcIAUoAiBHGyAFKAIsQSBHGyAFKAIwIAUoAjRHGyAFKAJAQSBHGyAFKAJEIAUoAkhHGyEGDAELQWwhBgsgBUHQAGokACAGCxkAIAAoAgggACgCEEkEQEEDDwsgABAMQQAL8xwBFn8jAEHQAGsiBSQAQWwhCAJAIAFBBkkgA0EKSXINAAJAIAMgAi8ABCIGIAIvAAAiCiACLwACIglqakEGaiISSQ0AIAAgAUEDakECdiILaiIHIAtqIg4gC2oiCyAAIAFqIg9LDQAgBC8BAiEMIAVBPGogAkEGaiICIAoQCCIIQYh/Sw0BIAVBKGogAiAKaiICIAkQCCIIQYh/Sw0BIAVBFGogAiAJaiICIAYQCCIIQYh/Sw0BIAUgAiAGaiADIBJrEAgiCEGIf0sNASAEQQRqIQogD0EDayESAkAgDyALa0EESQRAIAshAyAOIQIgByEEDAELQQAgDGtBH3EhCEEAIQYgCyEDIA4hAiAHIQQDQCAGQQFxIAMgEk9yDQEgCiAFKAI8IgYgBSgCQCIJdCAIdkEBdGoiDS0AACEQIAAgDS0AAToAACAKIAUoAigiDSAFKAIsIhF0IAh2QQF0aiITLQAAIRUgBCATLQABOgAAIAogBSgCFCITIAUoAhgiFnQgCHZBAXRqIhQtAAAhFyACIBQtAAE6AAAgCiAFKAIAIhQgBSgCBCIYdCAIdkEBdGoiGS0AACEaIAMgGS0AAToAACAKIAYgCSAQaiIGdCAIdkEBdGoiCS0AASEQIAUgBiAJLQAAajYCQCAAIBA6AAEgCiANIBEgFWoiBnQgCHZBAXRqIgktAAEhDSAFIAYgCS0AAGo2AiwgBCANOgABIAogEyAWIBdqIgZ0IAh2QQF0aiIJLQABIQ0gBSAGIAktAABqNgIYIAIgDToAASAKIBQgGCAaaiIGdCAIdkEBdGoiCS0AASENIAUgBiAJLQAAajYCBCADIA06AAEgA0ECaiEDIAJBAmohAiAEQQJqIQQgAEECaiEAIAVBPGoQEyAFQShqEBNyIAVBFGoQE3IgBRATckEARyEGDAALAAsgACAHSyAEIA5Lcg0AQWwhCCACIAtLDQECQCAHIABrQQROBEAgB0EDayEQQQAgDGtBH3EhDQNAIAUoAkAiBkEhTwRAIAVBsBo2AkQMAwsgBQJ/IAUoAkQiCCAFKAJMTwRAIAUgCCAGQQN2ayIINgJEQQEhCSAGQQdxDAELIAggBSgCSCIJRg0DIAUgCCAGQQN2IhEgCCAJayAIIBFrIAlPIgkbIhFrIgg2AkQgBiARQQN0awsiBjYCQCAFIAgoAAAiCDYCPCAJRSAAIBBPcg0CIAogCCAGdCANdkEBdGoiCC0AASEJIAUgBiAILQAAajYCQCAAIAk6AAAgCiAFKAI8IAUoAkAiBnQgDXZBAXRqIggtAAEhCSAFIAYgCC0AAGo2AkAgACAJOgABIABBAmohAAwACwALIAUoAkAiBkEhTwRAIAVBsBo2AkQMAQsgBSgCRCIJIAUoAkxPBEAgBSAGQQdxIgg2AkAgBSAJIAZBA3ZrIgY2AkQgBSAGKAAANgI8IAghBgwBCyAJIAUoAkgiCEYNACAFIAYgCSAIayAGQQN2IgYgCSAGayAISRsiCEEDdGsiBjYCQCAFIAkgCGsiCDYCRCAFIAgoAAA2AjwLQQAgDGtBH3EhCANAAkAgBkEhTwRAIAVBsBo2AkQMAQsgBQJ/IAUoAkQiCSAFKAJMTwRAIAUgCSAGQQN2ayIMNgJEQQEhCSAGQQdxDAELIAkgBSgCSCIMRg0BIAUgCSAGQQN2Ig0gCSAMayAJIA1rIAxPIgkbIg1rIgw2AkQgBiANQQN0awsiBjYCQCAFIAwoAAAiDDYCPCAJRSAAIAdPcg0AIAogDCAGdCAIdkEBdGoiCS0AASEMIAUgBiAJLQAAajYCQCAAIAw6AAAgAEEBaiEAIAUoAkAhBgwBCwsDQCAAIAdPRQRAIAogBSgCPCAFKAJAIgZ0IAh2QQF0aiIJLQABIQwgBSAGIAktAABqNgJAIAAgDDoAACAAQQFqIQAMAQsLAkAgDiAEa0EETgRAIA5BA2shCQNAIAUoAiwiAEEhTwRAIAVBsBo2AjAMAwsgBQJ/IAUoAjAiByAFKAI4TwRAIAUgByAAQQN2ayIGNgIwQQEhByAAQQdxDAELIAcgBSgCNCIGRg0DIAUgByAAQQN2IgwgByAGayAHIAxrIAZPIgcbIgxrIgY2AjAgACAMQQN0awsiADYCLCAFIAYoAAAiBjYCKCAHRSAEIAlPcg0CIAogBiAAdCAIdkEBdGoiBy0AASEGIAUgACAHLQAAajYCLCAEIAY6AAAgCiAFKAIoIAUoAiwiAHQgCHZBAXRqIgctAAEhBiAFIAAgBy0AAGo2AiwgBCAGOgABIARBAmohBAwACwALIAUoAiwiAEEhTwRAIAVBsBo2AjAMAQsgBSgCMCIGIAUoAjhPBEAgBSAAQQdxIgc2AiwgBSAGIABBA3ZrIgA2AjAgBSAAKAAANgIoIAchAAwBCyAGIAUoAjQiB0YNACAFIAAgBiAHayAAQQN2IgAgBiAAayAHSRsiB0EDdGsiADYCLCAFIAYgB2siBzYCMCAFIAcoAAA2AigLA0ACQCAAQSFPBEAgBUGwGjYCMAwBCyAFAn8gBSgCMCIHIAUoAjhPBEAgBSAHIABBA3ZrIgY2AjBBASEHIABBB3EMAQsgByAFKAI0IgZGDQEgBSAHIABBA3YiCSAHIAZrIAcgCWsgBk8iBxsiCWsiBjYCMCAAIAlBA3RrCyIANgIsIAUgBigAACIGNgIoIAdFIAQgDk9yDQAgCiAGIAB0IAh2QQF0aiIHLQABIQYgBSAAIActAABqNgIsIAQgBjoAACAEQQFqIQQgBSgCLCEADAELCwNAIAQgDk9FBEAgCiAFKAIoIAUoAiwiAHQgCHZBAXRqIgctAAEhBiAFIAAgBy0AAGo2AiwgBCAGOgAAIARBAWohBAwBCwsCQCALIAJrQQROBEAgC0EDayEOA0AgBSgCGCIAQSFPBEAgBUGwGjYCHAwDCyAFAn8gBSgCHCIEIAUoAiRPBEAgBSAEIABBA3ZrIgQ2AhxBASEGIABBB3EMAQsgBCAFKAIgIgdGDQMgBSAEIABBA3YiBiAEIAdrIAQgBmsgB08iBhsiB2siBDYCHCAAIAdBA3RrCyIANgIYIAUgBCgAACIENgIUIAZFIAIgDk9yDQIgCiAEIAB0IAh2QQF0aiIELQABIQcgBSAAIAQtAABqNgIYIAIgBzoAACAKIAUoAhQgBSgCGCIAdCAIdkEBdGoiBC0AASEHIAUgACAELQAAajYCGCACIAc6AAEgAkECaiECDAALAAsgBSgCGCIAQSFPBEAgBUGwGjYCHAwBCyAFKAIcIgcgBSgCJE8EQCAFIABBB3EiBDYCGCAFIAcgAEEDdmsiADYCHCAFIAAoAAA2AhQgBCEADAELIAcgBSgCICIERg0AIAUgACAHIARrIABBA3YiACAHIABrIARJGyIEQQN0ayIANgIYIAUgByAEayIENgIcIAUgBCgAADYCFAsDQAJAIABBIU8EQCAFQbAaNgIcDAELIAUCfyAFKAIcIgQgBSgCJE8EQCAFIAQgAEEDdmsiBDYCHEEBIQYgAEEHcQwBCyAEIAUoAiAiB0YNASAFIAQgAEEDdiIOIAQgB2sgBCAOayAHTyIGGyIHayIENgIcIAAgB0EDdGsLIgA2AhggBSAEKAAAIgQ2AhQgBkUgAiALT3INACAKIAQgAHQgCHZBAXRqIgQtAAEhByAFIAAgBC0AAGo2AhggAiAHOgAAIAJBAWohAiAFKAIYIQAMAQsLA0AgAiALT0UEQCAKIAUoAhQgBSgCGCIAdCAIdkEBdGoiBC0AASEHIAUgACAELQAAajYCGCACIAc6AAAgAkEBaiECDAELCwJAIA8gA2tBBE4EQANAIAUoAgQiAEEhTwRAIAVBsBo2AggMAwsgBQJ/IAUoAggiAiAFKAIQTwRAIAUgAiAAQQN2ayIENgIIQQEhAiAAQQdxDAELIAIgBSgCDCIERg0DIAUgAiAAQQN2IgsgAiAEayACIAtrIARPIgIbIgtrIgQ2AgggACALQQN0awsiADYCBCAFIAQoAAAiBDYCACACRSADIBJPcg0CIAogBCAAdCAIdkEBdGoiAi0AASEEIAUgACACLQAAajYCBCADIAQ6AAAgCiAFKAIAIAUoAgQiAHQgCHZBAXRqIgItAAEhBCAFIAAgAi0AAGo2AgQgAyAEOgABIANBAmohAwwACwALIAUoAgQiAEEhTwRAIAVBsBo2AggMAQsgBSgCCCIEIAUoAhBPBEAgBSAAQQdxIgI2AgQgBSAEIABBA3ZrIgA2AgggBSAAKAAANgIAIAIhAAwBCyAEIAUoAgwiAkYNACAFIAAgBCACayAAQQN2IgAgBCAAayACSRsiAkEDdGsiADYCBCAFIAQgAmsiAjYCCCAFIAIoAAA2AgALA0ACQCAAQSFPBEAgBUGwGjYCCAwBCyAFAn8gBSgCCCICIAUoAhBPBEAgBSACIABBA3ZrIgQ2AghBASECIABBB3EMAQsgAiAFKAIMIgRGDQEgBSACIABBA3YiCyACIARrIAIgC2sgBE8iAhsiC2siBDYCCCAAIAtBA3RrCyIANgIEIAUgBCgAACIENgIAIAJFIAMgD09yDQAgCiAEIAB0IAh2QQF0aiICLQABIQQgBSAAIAItAABqNgIEIAMgBDoAACADQQFqIQMgBSgCBCEADAELCwNAIAMgD09FBEAgCiAFKAIAIAUoAgQiAHQgCHZBAXRqIgItAAEhBCAFIAAgAi0AAGo2AgQgAyAEOgAAIANBAWohAwwBCwtBbEFsQWxBbEFsQWxBbEFsIAEgBSgCBEEgRxsgBSgCCCAFKAIMRxsgBSgCGEEgRxsgBSgCHCAFKAIgRxsgBSgCLEEgRxsgBSgCMCAFKAI0RxsgBSgCQEEgRxsgBSgCRCAFKAJIRxshCAwBC0FsIQgLIAVB0ABqJAAgCAsaACAABEAgAQRAIAIgACABEQIADwsgABACCwtSAQN/AkAgACgCmOsBIgFFDQAgASgCACABKAK01QEiAiABKAK41QEiAxAVIAIEQCADIAEgAhECAAwBCyABEAILIABBADYCqOsBIABCADcDmOsBC5QFAgR/An4jAEEQayIGJAACQCABIAJFckUEQEF/IQQMAQsCQEEBQQUgAxsiBCACSwRAIAJFIANBAUZyDQIgBkGo6r5pNgIMIAJFIgBFBEAgBkEMaiABIAL8CgAACyAGKAIMQajqvmlGDQIgBkHQ1LTCATYCDCAARQRAIAZBDGogASAC/AoAAAsgBigCDEFwcUHQ1LTCAUYNAgwBCyAAQQBBMPwLAEEBIQUCQCADQQFGDQAgAyEFIAEoAAAiA0Go6r5pRg0AIANBcHFB0NS0wgFHDQFBCCEEIAJBCEkNAiAAQQE2AhQgASgAACECIABBCDYCGCAAIAJB0NS0wgFrNgIcIAAgATUABDcDAEEAIQQMAgsgAiABIAIgBRAYIgJJBEAgAiEEDAILIAAgAjYCGCABIARqIgVBAWstAAAiAkEIcQRAQXIhBAwCCyACQSBxIgNFBEAgBS0AACIFQacBSwRAQXAhBAwDCyAFQQdxrUIBIAVBA3ZBCmqthiIIQgOIfiAIfCEJIARBAWohBAsgAkEGdiEFIAJBAnYhBwJAAkACQAJAIAJBA3EiAkEBaw4DAAECAwsgASAEai0AACECIARBAWohBAwCCyABIARqLwAAIQIgBEECaiEEDAELIAEgBGooAAAhAiAEQQRqIQQLIAdBAXEhBwJ+AkACQAJAAkAgBUEBaw4DAQIDAAtCfyADRQ0DGiABIARqMQAADAMLIAEgBGozAABCgAJ8DAILIAEgBGo1AAAMAQsgASAEaikAAAshCCAAIAc2AiAgACACNgIcIAAgCDcDAEEAIQQgAEEANgIUIAAgCCAJIAMbIgg3AwggAEKAgAggCCAIQoCACFobPgIQDAELQXYhBAsgBkEQaiQAIAQLXwEBf0G4fyEDIAFBAUEFIAIbIgFPBH8gACABakEBay0AACIAQQNxQQJ0QcAaaigCACABaiAAQQR2QQxxQdAaaigCAGogAEEgcSIBRWogAUEFdiAAQcAASXFqBUG4fwsLxAICBH8CfiMAQUBqIgQkAAJAA0AgAUEFTwRAAkAgACgAAEFwcUHQ1LTCAUYEQEJ+IQYgAUEISQ0EIAAoAAQiA0F3Sw0EIANBCGoiAiABSw0EIANBgX9JDQEMBAsgBEEQaiIDIAAgAUEAEBchAkJ+IAQpAxBCACAEKAIkQQFHGyACGyIGQn1WDQMgBiAHfCIHIAZUIQJCfiEGIAINAyADIAAgAUEAEBciAkGIf0sgAnINAyABIAQoAigiA2shAiAAIANqIQMDQCADIAIgBEEEahAaIgVBiH9LDQQgAiAFQQNqIgVJDQQgAiAFayECIAMgBWohAyAEKAIIRQ0ACyAEKAIwBH8gAkEESQ0EIANBBGoFIAMLIABrIgJBiH9LDQMLIAEgAmshASAAIAJqIQAMAQsLQn4gByABGyEGCyAEQUBrJAAgBgtkAQF/Qbh/IQMCQCABQQNJDQAgAC0AAiEBIAIgAC8AACIAQQFxNgIEIAIgAEEBdkEDcSIDNgIAIAIgACABQRB0ckEDdiIANgIIAkACQCADQQFrDgMCAQABC0FsDwsgACEDCyADC7ABAAJ/IAIgACgClOsBBH8gACgC0OkBBUGAgAgLIgIgA2pBQGtLBEAgACABIAJqQSBqIgE2AvzrAUEBIQIgASADagwBCyADQYCABE0EQCAAIABBiOwBaiIBNgL86wFBACECIAEgA2oMAQsgACABIARqIgEgA2siAkHg/wNqIgQgAiAFGzYC/OsBQQIhAiADIARqQYCABGsgASAFGwshAyAAIAI2AoTsASAAIAM2AoDsAQuyBwIEfwF+IwBBgAFrIg4kACAOIAM2AnwCQAJAAkACQAJAAkAgAkEBaw4DAAMCAQsgBkUEQEG4fyEKDAULIAMgBS0AACICSQ0DIAIgCGotAAAhAyAHIAJBAnRqKAIAIQIgAEEAOgALIABCADcCACAAIAI2AgwgACADOgAKIABBADsBCCABIAA2AgBBASEKDAQLIAEgCTYCAEEAIQoMAwsgCkUNAUEAIQogC0UgDEEZSXINAkEIIAR0QQhyIQBBACEDA0AgACADTQ0DIANBQGshAwwACwALQWwhCiAOIA5B/ABqIA5B+ABqIAUgBhAGIgNBiH9LDQEgDigCeCICIARLDQEgAEEMaiEMIA4oAnxBAWohEUGAgAIgAnRBEHYhEEEAIQRBASEFQQEgAnQiCkEBayILIQkDQCAEIBFHBEACQCAOIARBAXQiD2ovAQAiBkH//wNGBEAgDCAJQQN0aiAENgIAIAlBAWshCUEBIQYMAQsgBUEAIBAgBsFKGyEFCyANIA9qIAY7AQAgBEEBaiEEDAELCyAAIAI2AgQgACAFNgIAAkAgCSALRgRAIA1B6gBqIRBBACEJQQAhBQNAIAkgEUYEQCAKQQN2IApBAXZqQQNqIglBAXQhEUEAIQZBACEFA0AgBSAKTw0EIAUgEGohD0EAIQQDQCAEQQJHBEAgDCAEIAlsIAZqIAtxQQN0aiAEIA9qLQAANgIAIARBAWohBAwBCwsgBUECaiEFIAYgEWogC3EhBgwACwAFIA4gCUEBdGouAQAhBiAFIBBqIg8gEjcAAEEIIQQDQCAEIAZIBEAgBCAPaiASNwAAIARBCGohBAwBCwsgEkKBgoSIkKDAgAF8IRIgCUEBaiEJIAUgBmohBQwBCwALAAsgCkEDdiAKQQF2akEDaiEQQQAhBUEAIQYDQCAFIBFGDQFBACEEIA4gBUEBdGouAQAiD0EAIA9BAEobIQ8DQCAEIA9HBEAgDCAGQQN0aiAFNgIAA0AgBiAQaiALcSIGIAlLDQALIARBAWohBAwBCwsgBUEBaiEFDAALAAsgAEEIaiEJIAJBH2shC0EAIQYDQCAGIApHBEAgDSAJIAZBA3RqIgIoAgQiBEEBdGoiBSAFLwEAIgVBAWo7AQAgAiALIAVnaiIMOgADIAIgBSAMdCAKazsBACACIAQgCGotAAA6AAIgAiAHIARBAnRqKAIANgIEIAZBAWohBgwBCwsgASAANgIAIAMhCgwBC0FsIQoLIA5BgAFqJAAgCgtwAQR/IABCADcCACACBEAgAUEKaiEGIAEoAgQhBEEAIQJBACEBA0AgASAEdkUEQCACIAYgAUEDdGotAAAiBSACIAVLGyECIAFBAWohASADIAVBFktqIQMMAQsLIAAgAjYCBCAAIANBCCAEa3Q2AgALC64BAQR/IAEgAigCBCIDIAEoAgRqIgQ2AgQgACADQQJ0QbAZaigCACABKAIAQQAgBGt2cTYCAAJAIARBIU8EQCABQbAaNgIIDAELIAEoAggiAyABKAIQTwRAIAEQDAwBCyADIAEoAgwiBUYNACABIAMgAyAFayAEQQN2IgYgAyAGayAFSRsiA2siBTYCCCABIAQgA0EDdGs2AgQgASAFKAAANgIACyAAIAJBCGo2AgQLjQICA38BfiAAIAJqIQQCQAJAIAJBCE4EQCAAIAFrIgJBeUgNAQsDQCAAIARPDQIgACABLQAAOgAAIABBAWohACABQQFqIQEMAAsACwJAAkAgAkFvSw0AIAAgBEEgayICSw0AIAEpAAAhBiAAIAEpAAg3AAggACAGNwAAIAIgAGsiBUERTgRAIABBEGohACABIQMDQCADKQAQIQYgACADKQAYNwAIIAAgBjcAACADKQAgIQYgACADKQAoNwAYIAAgBjcAECADQSBqIQMgAEEgaiIAIAJJDQALCyABIAVqIQEMAQsgACECCwNAIAIgBE8NASACIAEtAAA6AAAgAkEBaiECIAFBAWohAQwACwALC98BAQZ/Qbp/IQoCQCACKAIEIgggAigCACIJaiINIAEgAGtLDQBBbCEKIAkgBCADKAIAIgtrSw0AIAAgCWoiBCACKAIIIgxrIQIgACABQSBrIgEgCyAJQQAQIyADIAkgC2o2AgACQAJAIAQgBWsgDE8EQCACIQUMAQsgDCAEIAZrSw0CIAcgByACIAVrIgNqIgIgCGpPBEAgCEUNAiAEIAIgCPwKAAAMAgtBACADayIABEAgBCACIAD8CgAACyADIAhqIQggBCADayEECyAEIAEgBSAIQQEQIwsgDSEKCyAKC+sBAQZ/Qbp/IQsCQCADKAIEIgkgAygCACIKaiINIAEgAGtLDQAgBSAEKAIAIgVrIApJBEBBbA8LIAMoAgghDCAAIAVLIAUgCmoiDiAAS3ENACAAIApqIgMgDGshASAAIAUgChAfIAQgDjYCAAJAAkAgAyAGayAMTwRAIAEhBgwBC0FsIQsgDCADIAdrSw0CIAggCCABIAZrIgBqIgEgCWpPBEAgCUUNAiADIAEgCfwKAAAMAgtBACAAayIEBEAgAyABIAT8CgAACyAAIAlqIQkgAyAAayEDCyADIAIgBiAJQQEQIwsgDSELCyALC6sCAQJ/IAJBH3EhAyABIQQDQCADQQhJRQRAIANBCGshAyAEKQAAQs/W077Sx6vZQn5CH4lCh5Wvr5i23puef34gAIVCG4lCh5Wvr5i23puef35CnaO16oOxjYr6AH0hACAEQQhqIQQMAQsLIAEgAkEYcWohASACQQdxIgNBBEkEfyABBSADQQRrIQMgATUAAEKHla+vmLbem55/fiAAhUIXiULP1tO+0ser2UJ+Qvnz3fGZ9pmrFnwhACABQQRqCyEEA0AgAwRAIANBAWshAyAEMQAAQsXP2bLx5brqJ34gAIVCC4lCh5Wvr5i23puef34hACAEQQFqIQQMAQsLIABCIYggAIVCz9bTvtLHq9lCfiIAQh2IIACFQvnz3fGZ9pmrFn4iAEIgiCAAhQvhBAIBfgJ/IAAgA2ohBwJAIANBB0wEQANAIAAgB08NAiAAIAItAAA6AAAgAEEBaiEAIAJBAWohAgwACwALIAQEQAJAIAAgAmsiBkEHTQRAIAAgAi0AADoAACAAIAItAAE6AAEgACACLQACOgACIAAgAi0AAzoAAyAAIAIgBkECdCIGQeAaaigCAGoiAigAADYABCACIAZBgBtqKAIAayECDAELIAAgAikAADcAAAsgA0EIayEDIAJBCGohAiAAQQhqIQALIAEgB08EQCAAIANqIQEgBEUgACACa0EPSnJFBEADQCAAIAIpAAA3AAAgAkEIaiECIABBCGoiACABSQ0ADAMLAAsgAikAACEFIAAgAikACDcACCAAIAU3AAAgA0ERSQ0BIABBEGohAANAIAIpABAhBSAAIAIpABg3AAggACAFNwAAIAIpACAhBSAAIAIpACg3ABggACAFNwAQIAJBIGohAiAAQSBqIgAgAUkNAAsMAQsCQCAAIAFLBEAgACEBDAELIAEgAGshBgJAIARFIAAgAmtBD0pyRQRAIAIhAwNAIAAgAykAADcAACADQQhqIQMgAEEIaiIAIAFJDQALDAELIAIpAAAhBSAAIAIpAAg3AAggACAFNwAAIAZBEUgNACAAQRBqIQAgAiEDA0AgAykAECEFIAAgAykAGDcACCAAIAU3AAAgAykAICEFIAAgAykAKDcAGCAAIAU3ABAgA0EgaiEDIABBIGoiACABSQ0ACwsgAiAGaiECCwNAIAEgB08NASABIAItAAA6AAAgAUEBaiEBIAJBAWohAgwACwALC6HFAQI2fwV+IwBBEGsiMSQAAkBBwOwFEAEiCEUEQEFAIQYMAQsgCEIANwL86gEgCEEANgKc6wEgCEEANgKQ6wEgCEEANgLU6wEgCEEANgLE6wEgCEIANwKk6wEgCEEANgK46QEgCEEANgK87AUgCEIANwK86wEgCEEANgKs6wEgCEIBNwKU6wEgCEIANwPo6wEgCEGBgIDAADYCzOsBIAhCADcC7OoBIAhCADcDsOsBIAhBADYCuOsBIAhBhOsBakEANgIAIAgQFiAIQbjqAWohNCAIQcDpAWohNiAIQZDqAWohNyAAISwCQAJAAkACQANAQQFBBSAIKALs6gEiCxshEwJAA0AgAyATSQ0BAkAgA0EESSALcg0AIAIoAABBcHFB0NS0wgFHDQBBuH8hBiADQQhJDQcgAigABCIHQXdLBEBBciEGDAgLIAMgB0EIaiIESQ0HIAdBgH9LBEAgBCEGDAgLIAMgBGshAyACIARqIQIMAQsLIAhCADcCrOkBIAhCADcD8OkBIAhBjICA4AA2AqhQIAhBADYCoOsBIAhCADcDiOoBIAhBATYClOsBIAhCAzcDgOoBIAhBtOkBakIANwIAIAhB+OkBakIANwMAIAhB9A4pAgA3AqzQASAIQbTQAWpB/A4oAgA2AgAgCCAIQRBqNgIAIAggCEGgMGo2AgQgCCAIQZggajYCCCAIIAhBqNAAajYCDCAIQQFBBSAIKALs6gEbNgK86QECQCABRQ0AICwgCCgCrOkBIgZGDQAgCCAGNgK46QEgCCAsNgKs6QEgCCgCsOkBIQQgCCAsNgKw6QEgCCAsIAQgBmtqNgK06QELQbh/IQYgA0EFQQkgCCgC7OoBIhMbSQ0FIAJBAUEFIBMbIBMQGCIEQYh/Sw0EIAMgBEEDakkNBSA2IAIgBCATEBciBkGIf0sEQCAGIQQMBQsgBg0DAkACQCAIKAKw6wFBAUcNACAIKAKs6wEiC0UNACAIKAKc6wFFDQAgCygCBCEGIDEgCCgC3OkBIgo2AgQgBkEBayIHQsnP2bLx5brqJyAxQQRqQQQQIqdxIRMgCygCACELA0AgCiALIBNBAnRqKAIAIgwEfyAMKAKo1QEFQQALIgZHBEAgByATcUEBaiETIAYNAQsLIAxFDQAgCBAWIAhBfzYCqOsBIAggDDYCnOsBIAggCCgC3OkBIhM2AqDrAQwBCyAIKALc6QEhEwsCQCATRQ0AIAgoAqDrASATRg0AQWAhBAwFCwJAIAgoAuDpAQRAIAggCCgC8OoBIgZFNgL06gEgBg0BIDdBAEHYAPwLACAIQvnq0NDnyaHk4QA3A7DqASAIQs/W077Sx6vZQjcDoOoBIAhC1uuC7ur9ifXgADcDmOoBDAELIAhBADYC9OoBCyAIIAgpA/DpASAErXw3A/DpASAIKAK46wEiEwRAIAggCCgC0OkBIgYgEyAGIBNJGzYC0OkBCyABICxqITUgAyAEayEDIAIgBGohAiAsIRMDQCACIAMgMUEEahAaIiBBiH9LBEAgICEEDAYLIANBA2siOCAgSQ0EIAJBA2oiHSA1IB0gNUkbIDUgEyAdTRshAkFsIQQCQAJAAkACQAJAAkACQAJAIDEoAgQOAwECAA0LIAIgE2shFEEAITMjAEHQAmsiBSQAAkACQCAIKAKU6wEiAgR/IAgoAtDpAQVBgIAICyAgSQ0AAkAgIEECSQ0AIB0tAAAiA0EDcSEaIAIEfyAIKALQ6QEFQYCACAshBgJAAkACQAJAAkACQAJAAkACQAJAIBpBAWsOAwMBAAILIAgoAojqAQ0AQWIhAwwLCyAgQQVJDQhBAyEMIB0oAAAhBAJ/An8CQAJAAkAgA0ECdkEDcSICQQJrDgIBAgALIARBDnZB/wdxIQ0gBEEEdkH/B3EhECACQQBHDAMLIARBEnYhDSAEQQR2Qf//AHEhEEEEDAELIB0tAARBCnQgBEEWdnIhDSAEQQR2Qf//D3EhEEEFCyEMQQELIQRBun8hAyATQQEgEBtFDQogBiAQSQ0IIBBBBkkgBHEEQEFoIQMMCwsgDCANaiIKICBLDQggBiAUIAYgFEkbIgIgEEkNCiAIIBMgFCAQIAJBABAbAkAgCCgCpOsBRSAQQYEGSXINAEEAIQMDQCADQYOAAUsNASADQUBrIQMMAAsACyAaQQNGBEAgDCAdaiEGIAgoAgwiCy0AAUEIdCECIAgoAvzrASEDIARFBEAgAgRAIAVB4AFqIAYgDRAIIg5BiH9LDQkgC0EEaiEZIAMgEGohESALLwECIQkgEEEETwRAIBFBA2shBkEAIAlrQR9xIQcgBSgC6AEhDCAFKALsASEPIAUoAvABIQQgBSgC4AEhDSAFKALkASEOA0AgDkEgSwRAQbAaIQwMCgsCQCAEIAxNBEAgDkEHcSESIA5BA3YhDUEBIQ4MAQsgDCAPRg0KIA4gDkEDdiICIAwgD2sgDCACayAPTyIOGyINQQN0ayESCyAMIA1rIgwoAAAhDSAORSADIAZPcg0IIAMgGSANIBJ0IAd2QQJ0aiICLwEAOwAAIAMgAi0AA2oiAyAZIA0gEiACLQACaiICdCAHdkECdGoiCy8BADsAACADIAstAANqIQMgAiALLQACaiEODAALAAsgBSgC5AEiDkEhTwRAIAVBsBo2AugBDAkLIAUoAugBIgYgBSgC8AFPBEAgBSAOQQdxIgI2AuQBIAUgBiAOQQN2ayIENgLoASAFIAQoAAA2AuABIAIhDgwJCyAGIAUoAuwBIgRGDQggBSAOIAYgBGsgDkEDdiICIAYgAmsgBEkbIgJBA3RrIg42AuQBIAUgBiACayICNgLoASAFIAIoAAA2AuABDAgLIAMgECAGIA0gCxARIQ4MCAsgAgRAIAMgECAGIA0gCxASIQ4MCAsgAyAQIAYgDSALEBQhDgwHCyAIQazVAWohFyAMIB1qISEgCEGo0ABqIQcgCCgC/OsBIRYgBEUEQCAHICEgDSAXEA4iDkGIf0sNByANIA5NDQMgFiAQIA4gIWogDSAOayAHEBEhDgwHCyAQRQRAQbp/IQ4MBwsgDUUEQEFsIQ4MBwsgEEEIdiIDIA0gEEkEfyANQQR0IBBuBUEPC0EEdCIEQYwIaigCAGwgBEGICGooAgBqIgJBBXYgAmogBEGACGooAgAgBEGECGooAgAgA2xqSQRAIwBBEGsiLSQAIAcoAgAhESAXQfAEaiIeQQBB8AD8CwBBVCEDAkAgEUH/AXEiL0EMSw0AIBdB4AdqIgkgHiAtQQhqIC1BDGogISANIBdB4AlqEAciBEGIf00EQCAtKAIMIgsgL0sNASAXQagFaiEZIBdBpAVqITAgB0EEaiEbIBFBgICAeHEhJCALQQFqIjIhAyALIQYDQCADIgJBAWshAyAGIgxBAWshBiAeIAxBAnRqKAIARQ0AC0EBIAIgAkEBTRshDkEAIQZBASEDA0AgAyAORwRAIB4gA0ECdCIPaigCACECIA8gGWogBjYCACADQQFqIQMgAiAGaiEGDAELCyAXIAY2AqgFIBkgDEEBaiIfQQJ0aiAGNgIAIBdB4AVqISZBACEDIC0oAgghBgNAIAMgBkcEQCAZIAMgCWotAABBAnRqIgIgAigCACICQQFqNgIAIAIgJmogAzoAACADQQFqIQMMAQsLQQAhBiAZQQA2AgBBCyAvIBFB/wFxQQxGGyAvIAtBDEkbIikgC0F/c2ohD0EBIQMDQCADIA5HBEAgHiADQQJ0IgtqKAIAIQIgCyAXaiAGNgIAIAIgAyAPanQgBmohBiADQQFqIQMMAQsLICkgMiAMayILa0EBaiEJIAshBgNAIAYgCUkEQCAXIAZBNGxqIQ9BASEDA0AgAyAORwRAIA8gA0ECdCICaiACIBdqKAIAIAZ2NgIAIANBAWohAwwBCwsgBkEBaiEGDAELCyAyIClrIRUgDEEAIAxBAEobQQFqISdBASEuA0AgJyAuRwRAIDIgLmshBiAXIC5BAnQiAmooAgAhJSACIDBqKAIAISogMCAuQQFqIi5BAnRqKAIAIRggCyApIAZrIgNNBEAgHyAGIBVqIgJBASACQQFKIhIbIgIgAiAfSBshHCAXIAZBNGxqIh4gAkECdGohGSAGIDJqIREgBkEQdEGAgIAIaiEOQQEgA3QiCUECayEPA0AgGCAqRg0DIBsgJUECdGohKCAmICpqLQAAISsgAiEDIBIEQCAOICtyrUKBgICAEH4hOiAZKAIAIQZBACEDAkACQAJAAkAgDw4DAQIAAgsgKCA6NwEICyAoIDo3AQAMAQsDQCADIAZODQEgKCADQQJ0aiIMIDo3ARggDCA6NwEQIAwgOjcBCCAMIDo3AQAgA0EIaiEDDAALAAsgAiEDCwNAIAMgHEcEQCARIANrIQwgKCAeIANBAnQiBmooAgBBAnRqICYgBiAwaigCAGogJiAwIANBAWoiA0ECdGooAgBqIAwgKSArQQIQDwwBCwsgKkEBaiEqIAkgJWohJQwACwAFIBsgJUECdGogJiAqaiAYICZqIAYgKUEAQQEQDwwCCwALCyAHIClBEHQgJHIgL3JBgAJyNgIACyAEIQMLIC1BEGokACADIg5BiH9LDQcgAyANTw0DIBYgECADICFqIA0gA2sgBxASIQ4MBwsgByAhIA0gFxAOIg5BiH9LDQYgDSAOTQ0CIBYgECAOICFqIA0gDmsgBxAUIQ4MBgtBAiEQAn8CQAJAAkAgA0ECdkEDcUEBaw4DAQACAAtBASEQIANBA3YMAgsgHS8AAEEEdgwBCyAgQQJGDQhBAyEQIB0vAAAgHS0AAkEQdHJBBHYLIQtBun8hAyATQQEgCxtFDQkgBiALSQ0HIAsgFEsNCSAIIBMgFCALIAYgFCAGIBRJG0EBEBsgICALIBBqIgpBIGpJBEAgCiAgSw0IIBAgHWohBCAIKAL86wEhAwJAIAgoAoTsAUECRgRAIAtBgIAEayICBEAgAyAEIAL8CgAACyAIQYjsAWogAiAEakGAgAT8CgAADAELIAtFDQAgAyAEIAv8CgAACyAIIAs2AojrASAIIAgoAvzrATYC+OoBDAcLIAhBADYChOwBIAggCzYCiOsBIAggECAdaiICNgL46gEgCCACIAtqNgKA7AEMBgsCfwJAAkACQCADQQJ2QQNxQQFrDgMBAAIAC0EBIRAgA0EDdgwCCyAgQQJGDQhBAiEQIB0vAABBBHYMAQsgIEEESQ0HQQMhECAdLwAAIB0tAAJBEHRyQQR2CyELQbp/IQMgE0EBIAsbRQ0IIAYgC0kNBiALIBRLDQggCCATIBQgCyAGIBQgBiAUSRtBARAbIBAgHWoiAy0AACEGIAgoAvzrASEEAkAgCCgChOwBQQJGBEAgC0GAgARrIgIEQCAEIAYgAvwLAAsgCEGI7AFqIAMtAABBgIAE/AsADAELIAtFDQAgBCAGIAv8CwALIAggCzYCiOsBIAggCCgC/OsBNgL46gEgEEEBaiEKDAULQbh/IQ4MAwsgEiEOCyAFIA42AuQBIAUgDDYC6AEgBSANNgLgAQsCQCARIANrQQJJDQAgEUECayELQQAgCWtBH3EhBgNAAkAgDkEhTwRAIAVBsBo2AugBDAELIAUCfyAFKALoASIHIAUoAvABTwRAIAUgByAOQQN2ayIMNgLoAUEBISUgDkEHcQwBCyAHIAUoAuwBIgRGDQEgBSAHIA5BA3YiAiAHIARrIAcgAmsgBE8iJRsiAmsiDDYC6AEgDiACQQN0awsiDjYC5AEgBSAMKAAAIgI2AuABICVFIAMgC0tyDQAgAyAZIAIgDnQgBnZBAnRqIgIvAQA7AAAgBSAFKALkASACLQACaiIONgLkASADIAItAANqIQMMAQsLA0AgAyALSw0BIAMgGSAFKALgASAOdCAGdkECdGoiAi8BADsAACAFIAUoAuQBIAItAAJqIg42AuQBIAMgAi0AA2ohAwwACwALAkAgAyARTw0AIAMgGSAFKALgASAOdEEAIAlrdkECdGoiAi0AADoAACACLQADQQFGBEAgBSgC5AEgAi0AAmohDgwBCyAFKALkASIOQR9LDQBBICAOIAItAAJqIgIgAkEgTxshDgtBbEFsIBAgDkEgRxsgBSgC6AEgBSgC7AFHGyEOCyAIKAKE7AFBAkYEQCAIQYjsAWogCCgCgOwBQYCABGtBgIAE/AoAACAQQYCABGsiAwRAIAgoAvzrASICQeD/A2ogAiAD/AoAAAsgCCAIKAL86wFB4P8DajYC/OsBIAggCCgCgOwBQSBrNgKA7AELIA5BiH9LDQEgCCAQNgKI6wEgCEEBNgKI6gEgCCAIKAL86wE2AvjqASAaQQJGBEAgCCAIQajQAGo2AgwLIAoiA0GIf0sNAwsgCCgClOsBBH8gCCgC0OkBBUGAgAgLIQwgCiAgRg0BICAgCmshCSAIKAK06QEhCyAdICBqIQ0gCCgCpOsBIQYCfwJAAn8gCiAdaiIRLQAAIg7AIgJBAE4EQCARQQFqDAELIAJBf0YEQCAJQQNJDQUgEUEDaiEEIBEvAAFBgP4BaiEODAILIAlBAUYNBCARLQABIA5BCHRyQYCAAmshDiARQQJqCyEEIA4NAEFsIQMgBCANRw0EQQAhDiAJDAELQbh/IQMgBEEBaiIPIA1LDQMgBC0AACIKQQNxDQEgCEEQaiAIIApBBnZBI0EJIA8gDSAPa0HADUHQDkGADyAIKAKM6gEgBiAOIAhBrNUBaiIHEBwiAkGIf0sNASAIQZggaiAIQQhqIApBBHZBA3FBH0EIIAIgD2oiBCANIARrQYAKQYALQZATIAgoAozqASAIKAKk6wEgDiAHEBwiAkGIf0sNAUFsIQMgCEGgMGogCEEEaiAKQQJ2QQNxQTRBCSACIARqIgQgDSAEa0GgC0GADUGgFSAIKAKM6gEgCCgCpOsBIA4gBxAcIgJBiH9LDQMgAiAEaiARawsiA0GIf0sNAgJAIBNBAEcgFEEAR3FFIA5BAEpxDQACQAJAIBMgFCAMIAwgFEsbIgJBACACQQBKG2ogC2siAkH8//8fTQRAIAYgAkGBgIAISXIgDkEJSHINAiAFQeABaiAIKAIIIA4QHQwBCyAFQeABaiAIKAIIIA4QHSAFKALkAUEZSyEzIAYNAQsgBSgC4AFBE0shBgsgCSADayEHIAMgEWohBCAIQQA2AqTrASAIKAKE7AEhAgJAIAYEQAJ/IAJBAUYEQCAIKAL86wEMAQsgEyAUQQAgFEEAShtqCyEUIAUgCCgC+OoBIgM2AswCIAgoAoDsASEcIA5FBEAgEyEJDAILIAgoArjpASEiIAgoArTpASEXIAgoArDpASELIAhBATYCjOoBIAhBrNABaiEyIAVB1AFqISZBACECA0AgAkEDRwRAICYgAkECdCIDaiADIDJqKAIANgIAIAJBAWohAgwBCwtBbCEDIAVBqAFqIgIgBCAHEAhBiH9LDQUgBUG8AWogAiAIKAIAEB4gBUHEAWogAiAIKAIIEB4gBUHMAWogAiAIKAIEEB5BCCAOIA5BCE4bIihBACAoQQBKGyElIA5BAWshGiATIAtrIS0gBSgCsAEhAiAFKALYASEGIAUoAtQBIRIgBSgCrAEhBCAFKAK0ASEjIAUoArgBISkgBSgCyAEhGCAFKALQASErIAUoAsABISQgBSgCqAEhCSAFKALEASEhIAUoAswBISogBSgCvAEhMCAzRSEVQQAhEANAIBIhESAQICVGBEAgBSAqNgLMASAFIDA2ArwBIAUgAjYCsAEgBSAhNgLEASAFIAk2AqgBIAhBmOwBaiEeIAhBiOwFaiEZIAhBiOwBaiEWIBRBIGshGyAzRSEnIBMhCQNAIA4gJUcEQCAFKALAASAFKAK8AUEDdGoiBi0AAiEfIAUoAtABIAUoAswBQQN0aiIELQACIRggBSgCyAEgBSgCxAFBA3RqIgItAAMhKyAELQADISQgBi0AAyEVIAIvAQAhEiAELwEAIREgBi8BACEKIAIoAgQhByAGKAIEIRAgBCgCBCEMAkAgAi0AAiINQQJPBEACQCAnIA1BGUlyRQRAIAcgBSgCqAEiDyAFKAKsASICdEEFIA1rdkEFdGohBwJAIAIgDWpBBWsiAkEhTwRAIAVBsBo2ArABDAELIAUoArABIgYgBSgCuAFPBEAgBSACQQdxIgQ2AqwBIAUgBiACQQN2ayICNgKwASAFIAIoAAAiDzYCqAEgBCECDAELIAYgBSgCtAEiBEYNACAFIAIgBiAEayACQQN2IgIgBiACayAESRsiBEEDdGsiAjYCrAEgBSAGIARrIgQ2ArABIAUgBCgAACIPNgKoAQsgBSACQQVqIgY2AqwBIAcgDyACdEEbdmohDQwBCyAFIAUoAqwBIgIgDWoiBjYCrAEgBSgCqAEgAnRBACANa3YgB2ohDSAGQSFPBEAgBUGwGjYCsAEMAQsgBSgCsAEiByAFKAK4AU8EQCAFIAZBB3EiAjYCrAEgBSAHIAZBA3ZrIgQ2ArABIAUgBCgAADYCqAEgAiEGDAELIAcgBSgCtAEiBEYNACAFIAYgByAEayAGQQN2IgIgByACayAESRsiAkEDdGsiBjYCrAEgBSAHIAJrIgI2ArABIAUgAigAADYCqAELIAUpAtQBITogBSANNgLUASAFIDo3AtgBDAELIBBFIQQgDUUEQCAmIBBBAEdBAnRqKAIAIQIgBSAmIARBAnRqKAIAIg02AtQBIAUgAjYC2AEgBSgCrAEhBgwBCyAFIAUoAqwBIgJBAWoiBjYCrAECQAJAIAQgB2ogBSgCqAEgAnRBH3ZqIgRBA0YEQCAFKALUAUEBayICQX8gAhshDQwBCyAmIARBAnRqKAIAIgJBfyACGyENIARBAUYNAQsgBSAFKALYATYC3AELIAUgBSgC1AE2AtgBIAUgDTYC1AELIBggH2ohBAJAIBhFBEAgBiECDAELIAUgBiAYaiICNgKsASAFKAKoASAGdEEAIBhrdiAMaiEMCwJAIARBFEkNACACQSFPBEAgBUGwGjYCsAEMAQsgBSgCsAEiBiAFKAK4AU8EQCAFIAJBB3EiBDYCrAEgBSAGIAJBA3ZrIgI2ArABIAUgAigAADYCqAEgBCECDAELIAYgBSgCtAEiBEYNACAFIAIgBiAEayACQQN2IgIgBiACayAESRsiBEEDdGsiAjYCrAEgBSAGIARrIgQ2ArABIAUgBCgAADYCqAELAkAgH0UEQCACIQQMAQsgBSACIB9qIgQ2AqwBIAUoAqgBIAJ0QQAgH2t2IBBqIRALAkAgBEEhTwRAQbAaIQIgBUGwGjYCsAEMAQsgBSgCsAEiAiAFKAK4AU8EQCAFIARBB3EiBjYCrAEgBSACIARBA3ZrIgI2ArABIAUgAigAADYCqAEgBiEEDAELIAIgBSgCtAEiB0YNACAFIAIgAiAHayAEQQN2IgYgAiAGayAHSRsiBmsiAjYCsAEgBSAEIAZBA3RrIgQ2AqwBIAUgAigAADYCqAELAkAgGiAlRg0AIAUgFUECdEGwGWooAgAgBSgCqAEiB0EAIAQgFWoiBGt2cSAKajYCvAEgBSAkQQJ0QbAZaigCACAHQQAgBCAkaiIEa3ZxIBFqNgLMAQJAIARBIU8EQEGwGiECIAVBsBo2ArABDAELIAUoArgBIAJNBEAgBSAEQQdxIgY2AqwBIAUgAiAEQQN2ayICNgKwASAFIAIoAAAiBzYCqAEgBiEEDAELIAIgBSgCtAEiCkYNACAFIAIgAiAKayAEQQN2IgYgAiAGayAKSRsiBmsiAjYCsAEgBSAEIAZBA3RrIgQ2AqwBIAUgAigAACIHNgKoAQsgBSAEICtqIgQ2AqwBIAUgK0ECdEGwGWooAgAgB0EAIARrdnEgEmo2AsQBIARBIU8EQCAFQbAaNgKwAQwBCyAFKAK4ASACTQRAIAUgBEEHcTYCrAEgBSACIARBA3ZrIgI2ArABIAUgAigAADYCqAEMAQsgAiAFKAK0ASIGRg0AIAUgBCACIAZrIARBA3YiBCACIARrIAZJGyIEQQN0azYCrAEgBSACIARrIgI2ArABIAUgAigAADYCqAELAkACQCAIKAKE7AFBAkYEQCAFKALMAiIHIAVB4AFqICVBB3FBDGxqIhUoAgAiAmoiCiAIKAKA7AEiBEsEQCAEIAdHBEAgBCAHayIEIBQgCWtLDQsgCSAHIAQQHyAVIAIgBGsiAjYCACAEIAlqIQkLIAUgFjYCzAIgCEEANgKE7AECQAJAAkAgAkGAgARKDQAgCSAVKAIEIhIgAmoiBmogG0sNACAGQSBqIBQgCWtNDQELIAUgFSgCCDYCgAEgBSAVKQIANwN4IAkgFCAFQfgAaiAFQcwCaiAZIAsgFyAiECAhBgwBCyACIBZqIQcgAiAJaiEEIBUoAgghESAWKQAAITogCSAWKQAINwAIIAkgOjcAAAJAIAJBEUkNACAeKQAAITogCSAeKQAINwAYIAkgOjcAECACQRBrQRFIDQAgCUEgaiECIB4hDwNAIA8pABAhOiACIA8pABg3AAggAiA6NwAAIA8pACAhOiACIA8pACg3ABggAiA6NwAQIA9BIGohDyACQSBqIgIgBEkNAAsLIAQgEWshAiAFIAc2AswCIAQgC2sgEUkEQCARIAQgF2tLDQ8gIiAiIAIgC2siCmoiByASak8EQCASRQ0CIAQgByAS/AoAAAwCC0EAIAprIgIEQCAEIAcgAvwKAAALIAogEmohEiAEIAprIQQgCyECCyARQRBPBEAgAikAACE6IAQgAikACDcACCAEIDo3AAAgEkERSA0BIAQgEmohByAEQRBqIQQDQCACKQAQITogBCACKQAYNwAIIAQgOjcAACACKQAgITogBCACKQAoNwAYIAQgOjcAECACQSBqIQIgBEEgaiIEIAdJDQALDAELAkAgEUEHTQRAIAQgAi0AADoAACAEIAItAAE6AAEgBCACLQACOgACIAQgAi0AAzoAAyAEIAIgEUECdCIHQeAaaigCAGoiAigAADYABCACIAdBgBtqKAIAayECDAELIAQgAikAADcAAAsgEkEJSQ0AIAQgEmohCiAEQQhqIgcgAkEIaiICa0EPTARAA0AgByACKQAANwAAIAJBCGohAiAHQQhqIgcgCkkNAAwCCwALIAIpAAAhOiAHIAIpAAg3AAggByA6NwAAIBJBGUgNACAEQRhqIQQDQCACKQAQITogBCACKQAYNwAIIAQgOjcAACACKQAgITogBCACKQAoNwAYIAQgOjcAECACQSBqIQIgBEEgaiIEIApJDQALCyAGQYh/SwRAIAYhAwwOCyAVIA02AgggFSAMNgIEIBUgEDYCACAZIRwMAwsgCkEgayEEAkACQCAKIBxLDQAgCSAVKAIEIhEgAmoiBmogBEsNACAGQSBqIBQgCWtNDQELIAUgFSgCCDYCkAEgBSAVKQIANwOIASAJIBQgBCAFQYgBaiAFQcwCaiAcIAsgFyAiECEhBgwCCyACIAlqIQQgFSgCCCEPIAcpAAAhOiAJIAcpAAg3AAggCSA6NwAAAkAgAkERSQ0AIAcpABAhOiAJIAcpABg3ABggCSA6NwAQIAJBEGtBEUgNACAHQRBqIQIgCUEgaiEHA0AgAikAECE6IAcgAikAGDcACCAHIDo3AAAgAikAICE6IAcgAikAKDcAGCAHIDo3ABAgAkEgaiECIAdBIGoiByAESQ0ACwsgBCAPayECIAUgCjYCzAIgBCALayAPSQRAIA8gBCAXa0sNDSAiICIgAiALayIKaiIHIBFqTwRAIBFFDQMgBCAHIBH8CgAADAMLQQAgCmsiAgRAIAQgByAC/AoAAAsgCiARaiERIAQgCmshBCALIQILIA9BEE8EQCACKQAAITogBCACKQAINwAIIAQgOjcAACARQRFIDQIgBCARaiEHIARBEGohBANAIAIpABAhOiAEIAIpABg3AAggBCA6NwAAIAIpACAhOiAEIAIpACg3ABggBCA6NwAQIAJBIGohAiAEQSBqIgQgB0kNAAsMAgsCQCAPQQdNBEAgBCACLQAAOgAAIAQgAi0AAToAASAEIAItAAI6AAIgBCACLQADOgADIAQgAiAPQQJ0IgdB4BpqKAIAaiICKAAANgAEIAIgB0GAG2ooAgBrIQIMAQsgBCACKQAANwAACyARQQlJDQEgBCARaiEKIARBCGoiByACQQhqIgJrQQ9MBEADQCAHIAIpAAA3AAAgAkEIaiECIAdBCGoiByAKSQ0ADAMLAAsgAikAACE6IAcgAikACDcACCAHIDo3AAAgEUEZSA0BIARBGGohBANAIAIpABAhOiAEIAIpABg3AAggBCA6NwAAIAIpACAhOiAEIAIpACg3ABggBCA6NwAQIAJBIGohAiAEQSBqIgQgCkkNAAsMAQsCQAJAIAUoAswCIhEgBUHgAWogJUEHcUEMbGoiDygCACICaiIHIBxLDQAgCSAPKAIEIgogAmoiBmogG0sNACAGQSBqIBQgCWtNDQELIAUgDygCCDYCoAEgBSAPKQIANwOYASAJIBQgBUGYAWogBUHMAmogHCALIBcgIhAgIQYMAQsgAiAJaiEEIA8oAgghFSARKQAAITogCSARKQAINwAIIAkgOjcAAAJAIAJBEUkNACARKQAQITogCSARKQAYNwAYIAkgOjcAECACQRBrQRFIDQAgEUEQaiECIAlBIGohEgNAIAIpABAhOiASIAIpABg3AAggEiA6NwAAIAIpACAhOiASIAIpACg3ABggEiA6NwAQIAJBIGohAiASQSBqIhIgBEkNAAsLIAQgFWshAiAFIAc2AswCIAQgC2sgFUkEQCAVIAQgF2tLDQwgIiAiIAIgC2siD2oiByAKak8EQCAKRQ0CIAQgByAK/AoAAAwCC0EAIA9rIgIEQCAEIAcgAvwKAAALIAogD2ohCiAEIA9rIQQgCyECCyAVQRBPBEAgAikAACE6IAQgAikACDcACCAEIDo3AAAgCkERSA0BIAQgCmohByAEQRBqIQQDQCACKQAQITogBCACKQAYNwAIIAQgOjcAACACKQAgITogBCACKQAoNwAYIAQgOjcAECACQSBqIQIgBEEgaiIEIAdJDQALDAELAkAgFUEHTQRAIAQgAi0AADoAACAEIAItAAE6AAEgBCACLQACOgACIAQgAi0AAzoAAyAEIAIgFUECdCIHQeAaaigCAGoiAigAADYABCACIAdBgBtqKAIAayECDAELIAQgAikAADcAAAsgCkEJSQ0AIAQgCmohDyAEQQhqIgcgAkEIaiICa0EPTARAA0AgByACKQAANwAAIAJBCGohAiAHQQhqIgcgD0kNAAwCCwALIAIpAAAhOiAHIAIpAAg3AAggByA6NwAAIApBGUgNACAEQRhqIQQDQCACKQAQITogBCACKQAYNwAIIAQgOjcAACACKQAgITogBCACKQAoNwAYIAQgOjcAECACQSBqIQIgBEEgaiIEIA9JDQALCyAGQYh/SwRAIAYhAwwLCyAFQeABaiAlQQdxQQxsaiICIA02AgggAiAMNgIEIAIgEDYCAAsgBiAJaiEJICVBAWohJSAQIC1qIAxqIS0MAQsLIAUoArABIAUoArQBRw0HIAUoAqwBQSBHDQcgDiAoayEQA0ACQCAOIBBMBEBBACECA0AgAkEDRg0CIDIgAkECdCIDaiADICZqKAIANgIAIAJBAWohAgwACwALIAVB4AFqIBBBB3FBDGxqIQoCfwJAIAgoAoTsAUECRgRAIAUoAswCIg8gCigCACIEaiIHIAgoAoDsASICSwRAIAIgD0cEQCACIA9rIgIgFCAJa0sNCyAJIA8gAhAfIAogBCACayIENgIAIAIgCWohCQsgBSAWNgLMAiAIQQA2AoTsAQJAAkACQCAEQYCABEoNACAJIAooAgQiDSAEaiIGaiAbSw0AIAZBIGogFCAJa00NAQsgBSAKKAIINgJQIAUgCikCADcDSCAJIBQgBUHIAGogBUHMAmogGSALIBcgIhAgIQYMAQsgBCAWaiEHIAQgCWohDCAKKAIIIQogFikAACE6IAkgFikACDcACCAJIDo3AAACQCAEQRFJDQAgHikAACE6IAkgHikACDcAGCAJIDo3ABAgBEEQa0ERSA0AIAlBIGohAiAeIQQDQCAEKQAQITogAiAEKQAYNwAIIAIgOjcAACAEKQAgITogAiAEKQAoNwAYIAIgOjcAECAEQSBqIQQgAkEgaiICIAxJDQALCyAMIAprIQIgBSAHNgLMAiAMIAtrIApJBEAgCiAMIBdrSw0PICIgIiACIAtrIgdqIgQgDWpPBEAgDUUNAiAMIAQgDfwKAAAMAgtBACAHayICBEAgDCAEIAL8CgAACyAHIA1qIQ0gDCAHayEMIAshAgsgCkEQTwRAIAIpAAAhOiAMIAIpAAg3AAggDCA6NwAAIA1BEUgNASAMIA1qIQcgDEEQaiEEA0AgAikAECE6IAQgAikAGDcACCAEIDo3AAAgAikAICE6IAQgAikAKDcAGCAEIDo3ABAgAkEgaiECIARBIGoiBCAHSQ0ACwwBCwJAIApBB00EQCAMIAItAAA6AAAgDCACLQABOgABIAwgAi0AAjoAAiAMIAItAAM6AAMgDCACIApBAnQiBEHgGmooAgBqIgIoAAA2AAQgAiAEQYAbaigCAGshAgwBCyAMIAIpAAA3AAALIA1BCUkNACAMIA1qIQcgDEEIaiIEIAJBCGoiAmtBD0wEQANAIAQgAikAADcAACACQQhqIQIgBEEIaiIEIAdJDQAMAgsACyACKQAAITogBCACKQAINwAIIAQgOjcAACANQRlIDQAgDEEYaiEEA0AgAikAECE6IAQgAikAGDcACCAEIDo3AAAgAikAICE6IAQgAikAKDcAGCAEIDo3ABAgAkEgaiECIARBIGoiBCAHSQ0ACwsgBkGJf08EQCAGIQMMDgsgGSEcIAYgCWoMAwsgB0EgayECAkACQCAHIBxLDQAgCSAKKAIEIhIgBGoiDGogAksNACAMQSBqIBQgCWtNDQELIAUgCigCCDYCYCAFIAopAgA3A1ggCSAUIAIgBUHYAGogBUHMAmogHCALIBcgIhAhIQwMAgsgBCAJaiEGIAooAgghCiAPKQAAITogCSAPKQAINwAIIAkgOjcAAAJAIARBEUkNACAPKQAQITogCSAPKQAYNwAYIAkgOjcAECAEQRBrQRFIDQAgD0EQaiECIAlBIGohBANAIAIpABAhOiAEIAIpABg3AAggBCA6NwAAIAIpACAhOiAEIAIpACg3ABggBCA6NwAQIAJBIGohAiAEQSBqIgQgBkkNAAsLIAYgCmshAiAFIAc2AswCIAYgC2sgCkkEQCAKIAYgF2tLDQ0gIiAiIAIgC2siB2oiBCASak8EQCASRQ0DIAYgBCAS/AoAAAwDC0EAIAdrIgIEQCAGIAQgAvwKAAALIAcgEmohEiAGIAdrIQYgCyECCyAKQRBPBEAgAikAACE6IAYgAikACDcACCAGIDo3AAAgEkERSA0CIAYgEmohByAGQRBqIQQDQCACKQAQITogBCACKQAYNwAIIAQgOjcAACACKQAgITogBCACKQAoNwAYIAQgOjcAECACQSBqIQIgBEEgaiIEIAdJDQALDAILAkAgCkEHTQRAIAYgAi0AADoAACAGIAItAAE6AAEgBiACLQACOgACIAYgAi0AAzoAAyAGIAIgCkECdCIEQeAaaigCAGoiAigAADYABCACIARBgBtqKAIAayECDAELIAYgAikAADcAAAsgEkEJSQ0BIAYgEmohByAGQQhqIgQgAkEIaiICa0EPTARAA0AgBCACKQAANwAAIAJBCGohAiAEQQhqIgQgB0kNAAwDCwALIAIpAAAhOiAEIAIpAAg3AAggBCA6NwAAIBJBGUgNASAGQRhqIQQDQCACKQAQITogBCACKQAYNwAIIAQgOjcAACACKQAgITogBCACKQAoNwAYIAQgOjcAECACQSBqIQIgBEEgaiIEIAdJDQALDAELAkACQCAFKALMAiIGIAooAgAiAmoiByAcSw0AIAkgCigCBCINIAJqIgxqIBtLDQAgDEEgaiAUIAlrTQ0BCyAFIAooAgg2AnAgBSAKKQIANwNoIAkgFCAFQegAaiAFQcwCaiAcIAsgFyAiECAhDAwBCyACIAlqIQQgCigCCCEKIAYpAAAhOiAJIAYpAAg3AAggCSA6NwAAAkAgAkERSQ0AIAYpABAhOiAJIAYpABg3ABggCSA6NwAQIAJBEGtBEUgNACAGQRBqIQIgCUEgaiEGA0AgAikAECE6IAYgAikAGDcACCAGIDo3AAAgAikAICE6IAYgAikAKDcAGCAGIDo3ABAgAkEgaiECIAZBIGoiBiAESQ0ACwsgBCAKayECIAUgBzYCzAIgBCALayAKSQRAIAogBCAXa0sNDCAiICIgAiALayIHaiIGIA1qTwRAIA1FDQIgBCAGIA38CgAADAILQQAgB2siAgRAIAQgBiAC/AoAAAsgByANaiENIAQgB2shBCALIQILIApBEE8EQCACKQAAITogBCACKQAINwAIIAQgOjcAACANQRFIDQEgBCANaiEGIARBEGohBANAIAIpABAhOiAEIAIpABg3AAggBCA6NwAAIAIpACAhOiAEIAIpACg3ABggBCA6NwAQIAJBIGohAiAEQSBqIgQgBkkNAAsMAQsCQCAKQQdNBEAgBCACLQAAOgAAIAQgAi0AAToAASAEIAItAAI6AAIgBCACLQADOgADIAQgAiAKQQJ0IgZB4BpqKAIAaiICKAAANgAEIAIgBkGAG2ooAgBrIQIMAQsgBCACKQAANwAACyANQQlJDQAgBCANaiEGIARBCGoiByACQQhqIgJrQQ9MBEADQCAHIAIpAAA3AAAgAkEIaiECIAdBCGoiByAGSQ0ADAILAAsgAikAACE6IAcgAikACDcACCAHIDo3AAAgDUEZSA0AIARBGGohBANAIAIpABAhOiAEIAIpABg3AAggBCA6NwAAIAIpACAhOiAEIAIpACg3ABggBCA6NwAQIAJBIGohAiAEQSBqIgQgBkkNAAsLIAxBiH9LBEAgDCEDDAsLIAkgDGoLIQkgEEEBaiEQDAELCyAIKAKE7AEhAiAFKALMAiEDDAMFICQgMEEDdGoiBy0AAiEuICsgKkEDdGoiCi0AAiEvIBggIUEDdGoiDC0AAyEWIAotAAMhGyAHLQADIR8gDC8BACEnIAovAQAhHiAHLwEAIRkgDCgCBCENIAcoAgQhByAKKAIEIQoCQAJAIAwtAAIiEkECTwRAIAkgBHQhDCAVIBJBGUlyRQRAIAxBBSASa3ZBBXQgDWohDQJAIAQgEmpBBWsiBEEgSwRAQbAaIQIMAQsgAiApTwRAIAUgBEEHcSIMNgKsASACIARBA3ZrIgIoAAAhCSAMIQQMAQsgAiAjRg0AIAUgBCACICNrIARBA3YiBCACIARrICNJGyIMQQN0ayIENgKsASACIAxrIgIoAAAhCQsgBSAEQQVqIg82AqwBIA0gCSAEdEEbdmohEgwCCyAFIAQgEmoiDzYCrAEgDEEAIBJrdiANaiESIA9BIEsEQEGwGiECDAILIAIgKU8EQCAFIA9BB3EiBDYCrAEgAiAPQQN2ayICKAAAIQkgBCEPDAILIAIgI0YNASAFIA8gAiAjayAPQQN2IgQgAiAEayAjSRsiBEEDdGsiDzYCrAEgAiAEayICKAAAIQkMAQsgB0UhDCASRQRAICYgDEECdGooAgAhEiAmIAdBAEdBAnRqKAIAIREgBCEPDAILIAUgBEEBaiIPNgKsASANIAkgBHRBH3ZqIAxqIgxBA0YEQCARQQFrIgRBfyAEGyESDAELICYgDEECdGooAgAiBEF/IAQbIRIgDEEBRg0BCyAFIAY2AtwBCyAuIC9qIQQgBSASNgLUASAFIBE2AtgBAkAgL0UEQCAPIQwMAQsgBSAPIC9qIgw2AqwBIAkgD3RBACAva3YgCmohCgsCQCAEQRRJDQAgDEEgSwRAQbAaIQIMAQsgAiApTwRAIAUgDEEHcSIENgKsASACIAxBA3ZrIgIoAAAhCSAEIQwMAQsgAiAjRg0AIAUgDCACICNrIAxBA3YiBCACIARrICNJGyIEQQN0ayIMNgKsASACIARrIgIoAAAhCQsCQCAuRQRAIAwhBAwBCyAFIAwgLmoiBDYCrAEgCSAMdEEAIC5rdiAHaiEHCwJAIARBIEsEQEGwGiECDAELIAIgKU8EQCAFIARBB3EiBjYCrAEgAiAEQQN2ayICKAAAIQkgBiEEDAELIAIgI0YNACAFIAQgAiAjayAEQQN2IgQgAiAEayAjSRsiBkEDdGsiBDYCrAEgAiAGayICKAAAIQkLAkAgECAaRg0AIB9BAnRBsBlqKAIAIAlBACAEIB9qIgRrdnEhDyAbQQJ0QbAZaigCACAJQQAgBCAbaiIEa3ZxIQYCQAJ/AkACQCAEQSBLBEBBsBohAgwBCyACIClPBEAgBSAEQQdxIgw2AqwBIAIgBEEDdmsMAwsgAiAjRw0BCyAEIQwMAgsgBSAEIAIgI2sgBEEDdiIEIAIgBGsgI0kbIgRBA3RrIgw2AqwBIAIgBGsLIgIoAAAhCQsgDyAZaiEwIAYgHmohKiAFIAwgFmoiBjYCrAEgFkECdEGwGWooAgAgCUEAIAZrdnEgJ2ohIQJ/AkACQCAGQSBLBEBBsBohAgwBCyACIClPBEAgBSAGQQdxIgQ2AqwBIAIgBkEDdmsMAwsgAiAjRw0BCyAGIQQMAgsgBSAGIAIgI2sgBkEDdiIEIAIgBGsgI0kbIgZBA3RrIgQ2AqwBIAIgBmsLIgIoAAAhCQsgBUHgAWogEEEMbGoiBiASNgIIIAYgCjYCBCAGIAc2AgAgEEEBaiEQIAcgLWogCmohLSARIQYMAQsACwALAn8CQAJAAkAgAg4DAQIAAgsgBSAIKAL46gEiAzYCzAJBACECIBMgFEEAIBRBAEobaiEaIAgoAoDsASERAn8CQCAORQRAIBMhBwwBCyAIKAK46QEhFiAIKAK06QEhHyAIKAKw6QEhCyAIQQE2AozqASAIQazQAWohKyAFQYwCaiEbA0AgAkEDRwRAIBsgAkECdCIDaiADICtqKAIANgIAIAJBAWohAgwBCwsgBUHgAWoiAiAEIAcQCEGIf0sNByAFQfQBaiACIAgoAgAQHiAFQfwBaiACIAgoAggQHiAFQYQCaiACIAgoAgQQHiAzRSEeIBMhBwJAA0AgDkUNASAFKAL4ASAFKAL0AUEDdGoiBC0AAiEkIAUoAogCIAUoAoQCQQN0aiIDLQACIRUgBSgCgAIgBSgC/AFBA3RqIgItAAMhJyADLQADIRIgBC0AAyEcIAIvAQAhGSADLwEAIQ8gBC8BACEMIAIoAgQhBiAEKAIEIQQgAygCBCEJAkAgAi0AAiINQQJPBEACQCAeIA1BGUlyRQRAIAUoAuABIiEgBSgC5AEiAnRBBSANa3ZBBXQgBmohBgJAIAIgDWpBBWsiAkEhTwRAIAVBsBo2AugBDAELIAUoAugBIgogBSgC8AFPBEAgBSACQQdxIgM2AuQBIAUgCiACQQN2ayICNgLoASAFIAIoAAAiITYC4AEgAyECDAELIAogBSgC7AEiA0YNACAFIAIgCiADayACQQN2IgIgCiACayADSRsiA0EDdGsiAjYC5AEgBSAKIANrIgM2AugBIAUgAygAACIhNgLgAQsgBSACQQVqIgo2AuQBIAYgISACdEEbdmohDQwBCyAFIAUoAuQBIgIgDWoiCjYC5AEgBSgC4AEgAnRBACANa3YgBmohDSAKQSFPBEAgBUGwGjYC6AEMAQsgBSgC6AEiBiAFKALwAU8EQCAFIApBB3EiAjYC5AEgBSAGIApBA3ZrIgM2AugBIAUgAygAADYC4AEgAiEKDAELIAYgBSgC7AEiA0YNACAFIAogBiADayAKQQN2IgIgBiACayADSRsiAkEDdGsiCjYC5AEgBSAGIAJrIgI2AugBIAUgAigAADYC4AELIAUpAowCITogBSANNgKMAiAFIDo3ApACDAELIARFIQMgDUUEQCAbIARBAEdBAnRqKAIAIQIgBSAbIANBAnRqKAIAIg02AowCIAUgAjYCkAIgBSgC5AEhCgwBCyAFIAUoAuQBIgJBAWoiCjYC5AECQAJAIAMgBmogBSgC4AEgAnRBH3ZqIgNBA0YEQCAFKAKMAkEBayICQX8gAhshDQwBCyAbIANBAnRqKAIAIgJBfyACGyENIANBAUYNAQsgBSAFKAKQAjYClAILIAUgBSgCjAI2ApACIAUgDTYCjAILIBUgJGohAwJAIBVFBEAgCiECDAELIAUgCiAVaiICNgLkASAFKALgASAKdEEAIBVrdiAJaiEJCwJAIANBFEkNACACQSFPBEAgBUGwGjYC6AEMAQsgBSgC6AEiBiAFKALwAU8EQCAFIAJBB3EiAzYC5AEgBSAGIAJBA3ZrIgI2AugBIAUgAigAADYC4AEgAyECDAELIAYgBSgC7AEiA0YNACAFIAIgBiADayACQQN2IgIgBiACayADSRsiA0EDdGsiAjYC5AEgBSAGIANrIgM2AugBIAUgAygAADYC4AELAkAgJEUEQCACIQMMAQsgBSACICRqIgM2AuQBIAUoAuABIAJ0QQAgJGt2IARqIQQLAkAgA0EhTwRAQbAaIQIgBUGwGjYC6AEMAQsgBSgC6AEiAiAFKALwAU8EQCAFIANBB3EiBjYC5AEgBSACIANBA3ZrIgI2AugBIAUgAigAADYC4AEgBiEDDAELIAIgBSgC7AEiCkYNACAFIAIgAiAKayADQQN2IgYgAiAGayAKSRsiBmsiAjYC6AEgBSADIAZBA3RrIgM2AuQBIAUgAigAADYC4AELAkAgDkEBRg0AIAUgHEECdEGwGWooAgAgBSgC4AEiBkEAIAMgHGoiA2t2cSAMajYC9AEgBSASQQJ0QbAZaigCACAGQQAgAyASaiIDa3ZxIA9qNgKEAgJAIANBIU8EQEGwGiECIAVBsBo2AugBDAELIAUoAvABIAJNBEAgBSADQQdxIgo2AuQBIAUgAiADQQN2ayICNgLoASAFIAIoAAAiBjYC4AEgCiEDDAELIAIgBSgC7AEiCkYNACAFIAIgAiAKayADQQN2IgYgAiAGayAKSRsiBmsiAjYC6AEgBSADIAZBA3RrIgM2AuQBIAUgAigAACIGNgLgAQsgBSADICdqIgM2AuQBIAUgJ0ECdEGwGWooAgAgBkEAIANrdnEgGWo2AvwBIANBIU8EQCAFQbAaNgLoAQwBCyAFKALwASACTQRAIAUgA0EHcTYC5AEgBSACIANBA3ZrIgI2AugBIAUgAigAADYC4AEMAQsgAiAFKALsASIGRg0AIAUgAyACIAZrIANBA3YiAyACIANrIAZJGyIDQQN0azYC5AEgBSACIANrIgI2AugBIAUgAigAADYC4AELIAUoAswCIgwgBGoiCiAIKAKA7AEiAk0EQCAKQSBrIQIgBSAENgKoASAFIAk2AqwBIAUgDTYCsAECQAJAAkAgCiARSw0AIAcgBCAJaiIDaiACSw0AIANBIGogGiAHa00NAQsgBUFAayAFKAKwATYCACAFIAUpA6gBNwM4IAcgGiACIAVBOGogBUHMAmogESALIB8gFhAhIQMMAQsgBCAHaiEGIAwpAAAhOiAHIAwpAAg3AAggByA6NwAAAkAgBEERSQ0AIAwpABAhOiAHIAwpABg3ABggByA6NwAQIARBEGtBEUgNACAMQRBqIQIgB0EgaiEEA0AgAikAECE6IAQgAikAGDcACCAEIDo3AAAgAikAICE6IAQgAikAKDcAGCAEIDo3ABAgAkEgaiECIARBIGoiBCAGSQ0ACwsgBiANayECIAUgCjYCzAIgBiALayANSQRAIA0gBiAfa0sNDCAWIBYgAiALayIKaiIEIAlqTwRAIAlFDQIgBiAEIAn8CgAADAILQQAgCmsiAgRAIAYgBCAC/AoAAAsgBSAJIApqIgk2AqwBIAYgCmshBiALIQILIA1BEE8EQCACKQAAITogBiACKQAINwAIIAYgOjcAACAJQRFIDQEgBiAJaiEKIAZBEGohBANAIAIpABAhOiAEIAIpABg3AAggBCA6NwAAIAIpACAhOiAEIAIpACg3ABggBCA6NwAQIAJBIGohAiAEQSBqIgQgCkkNAAsMAQsCQCANQQdNBEAgBiACLQAAOgAAIAYgAi0AAToAASAGIAItAAI6AAIgBiACLQADOgADIAYgAiANQQJ0IgRB4BpqKAIAaiICKAAANgAEIAIgBEGAG2ooAgBrIQIMAQsgBiACKQAANwAACyAJQQlJDQAgBiAJaiEKIAZBCGoiBCACQQhqIgJrQQ9MBEADQCAEIAIpAAA3AAAgAkEIaiECIARBCGoiBCAKSQ0ADAILAAsgAikAACE6IAQgAikACDcACCAEIDo3AAAgCUEZSA0AIAZBGGohBANAIAIpABAhOiAEIAIpABg3AAggBCA6NwAAIAIpACAhOiAEIAIpACg3ABggBCA6NwAQIAJBIGohAiAEQSBqIgQgCkkNAAsLIANBiH9LDQwgDkEBayEOIAMgB2ohBwwBCwsgDkEATA0IIAIgDEcEQEG6fyEDIAIgDGsiAiAaIAdrSw0LIAcgDCACEB8gAiAHaiEHIAQgAmshBAsgBSAIQYjsAWoiAjYCzAIgCEEANgKE7AEgCEGI7AVqIREgBSAENgKoASAFIAk2AqwBIAUgDTYCsAECQAJAAkAgBEGAgARKDQAgByAEIAlqIgNqIBpBIGtLDQAgA0EgaiAaIAdrTQ0BCyAFIAUoArABNgIwIAUgBSkDqAE3AyggByAaIAVBKGogBUHMAmogESALIB8gFhAgIQMMAQsgAiAEaiEKIAQgB2ohBiACKQAAITogByACKQAINwAIIAcgOjcAAAJAIARBEUkNACAIKQCY7AEhOiAHIAhBoOwBaikAADcAGCAHIDo3ABAgBEEQa0ERSA0AIAhBmOwBaiECIAdBIGohBANAIAIpABAhOiAEIAIpABg3AAggBCA6NwAAIAIpACAhOiAEIAIpACg3ABggBCA6NwAQIAJBIGohAiAEQSBqIgQgBkkNAAsLIAYgDWshAiAFIAo2AswCIAYgC2sgDUkEQCANIAYgH2tLDQogFiAWIAIgC2siCmoiBCAJak8EQCAJRQ0CIAYgBCAJ/AoAAAwCC0EAIAprIgIEQCAGIAQgAvwKAAALIAUgCSAKaiIJNgKsASAGIAprIQYgCyECCyANQRBPBEAgAikAACE6IAYgAikACDcACCAGIDo3AAAgCUERSA0BIAYgCWohCiAGQRBqIQQDQCACKQAQITogBCACKQAYNwAIIAQgOjcAACACKQAgITogBCACKQAoNwAYIAQgOjcAECACQSBqIQIgBEEgaiIEIApJDQALDAELAkAgDUEHTQRAIAYgAi0AADoAACAGIAItAAE6AAEgBiACLQACOgACIAYgAi0AAzoAAyAGIAIgDUECdCIEQeAaaigCAGoiAigAADYABCACIARBgBtqKAIAayECDAELIAYgAikAADcAAAsgCUEJSQ0AIAYgCWohCiAGQQhqIgQgAkEIaiICa0EPTARAA0AgBCACKQAANwAAIAJBCGohAiAEQQhqIgQgCkkNAAwCCwALIAIpAAAhOiAEIAIpAAg3AAggBCA6NwAAIAlBGUgNACAGQRhqIQQDQCACKQAQITogBCACKQAYNwAIIAQgOjcAACACKQAgITogBCACKQAoNwAYIAQgOjcAECACQSBqIQIgBEEgaiIEIApJDQALCyADQYh/Sw0KIAMgB2ohByAOQQFrIgpFDQAgGkEgayESIDNFIRwDQCAFKAL4ASAFKAL0AUEDdGoiBC0AAiEJIAUoAogCIAUoAoQCQQN0aiIDLQACIQwgBSgCgAIgBSgC/AFBA3RqIgItAAMhJCADLQADIRUgBC0AAyEnIAIvAQAhHiADLwEAIRkgBC8BACEPIAIoAgQhBiAEKAIEIQQgAygCBCEOAkAgAi0AAiIYQQJPBEACQCAcIBhBGUlyRQRAIAUoAuABIiogBSgC5AEiAnRBBSAYa3ZBBXQgBmohBgJAIAIgGGpBBWsiAkEhTwRAIAVBsBo2AugBDAELIAUoAugBIg0gBSgC8AFPBEAgBSACQQdxIgM2AuQBIAUgDSACQQN2ayICNgLoASAFIAIoAAAiKjYC4AEgAyECDAELIA0gBSgC7AEiA0YNACAFIAIgDSADayACQQN2IgIgDSACayADSRsiA0EDdGsiAjYC5AEgBSANIANrIgM2AugBIAUgAygAACIqNgLgAQsgBSACQQVqIg02AuQBIAYgKiACdEEbdmohBgwBCyAFIAUoAuQBIgIgGGoiDTYC5AEgBSgC4AEgAnRBACAYa3YgBmohBiANQSFPBEAgBUGwGjYC6AEMAQsgBSgC6AEiGCAFKALwAU8EQCAFIA1BB3EiAjYC5AEgBSAYIA1BA3ZrIgM2AugBIAUgAygAADYC4AEgAiENDAELIBggBSgC7AEiA0YNACAFIA0gGCADayANQQN2IgIgGCACayADSRsiAkEDdGsiDTYC5AEgBSAYIAJrIgI2AugBIAUgAigAADYC4AELIAUpAowCITogBSAGNgKMAiAFIDo3ApACDAELIARFIQMgGEUEQCAbIARBAEdBAnRqKAIAIQIgBSAbIANBAnRqKAIAIgY2AowCIAUgAjYCkAIgBSgC5AEhDQwBCyAFIAUoAuQBIgJBAWoiDTYC5AECQAJAIAMgBmogBSgC4AEgAnRBH3ZqIgNBA0YEQCAFKAKMAkEBayICQX8gAhshBgwBCyAbIANBAnRqKAIAIgJBfyACGyEGIANBAUYNAQsgBSAFKAKQAjYClAILIAUgBSgCjAI2ApACIAUgBjYCjAILIAkgDGohAwJAIAxFBEAgDSECDAELIAUgDCANaiICNgLkASAFKALgASANdEEAIAxrdiAOaiEOCwJAIANBFEkNACACQSFPBEAgBUGwGjYC6AEMAQsgBSgC6AEiDCAFKALwAU8EQCAFIAJBB3EiAzYC5AEgBSAMIAJBA3ZrIgI2AugBIAUgAigAADYC4AEgAyECDAELIAwgBSgC7AEiA0YNACAFIAIgDCADayACQQN2IgIgDCACayADSRsiA0EDdGsiAjYC5AEgBSAMIANrIgM2AugBIAUgAygAADYC4AELAkAgCUUEQCACIQMMAQsgBSACIAlqIgM2AuQBIAUoAuABIAJ0QQAgCWt2IARqIQQLAkAgA0EhTwRAQbAaIQIgBUGwGjYC6AEMAQsgBSgC6AEiAiAFKALwAU8EQCAFIANBB3EiDDYC5AEgBSACIANBA3ZrIgI2AugBIAUgAigAADYC4AEgDCEDDAELIAIgBSgC7AEiCUYNACAFIAIgAiAJayADQQN2IgwgAiAMayAJSRsiDGsiAjYC6AEgBSADIAxBA3RrIgM2AuQBIAUgAigAADYC4AELAkAgCkEBRg0AIAUgJ0ECdEGwGWooAgAgBSgC4AEiCUEAIAMgJ2oiA2t2cSAPajYC9AEgBSAVQQJ0QbAZaigCACAJQQAgAyAVaiIDa3ZxIBlqNgKEAgJAIANBIU8EQEGwGiECIAVBsBo2AugBDAELIAUoAvABIAJNBEAgBSADQQdxIgw2AuQBIAUgAiADQQN2ayICNgLoASAFIAIoAAAiCTYC4AEgDCEDDAELIAIgBSgC7AEiD0YNACAFIAIgAiAPayADQQN2IgwgAiAMayAPSRsiDGsiAjYC6AEgBSADIAxBA3RrIgM2AuQBIAUgAigAACIJNgLgAQsgBSADICRqIgM2AuQBIAUgJEECdEGwGWooAgAgCUEAIANrdnEgHmo2AvwBIANBIU8EQCAFQbAaNgLoAQwBCyAFKALwASACTQRAIAUgA0EHcTYC5AEgBSACIANBA3ZrIgI2AugBIAUgAigAADYC4AEMAQsgAiAFKALsASIMRg0AIAUgAyACIAxrIANBA3YiAyACIANrIAxJGyIDQQN0azYC5AEgBSACIANrIgI2AugBIAUgAigAADYC4AELIAUgBDYCqAEgBSAONgKsASAFIAY2ArABAkACQAJAIAUoAswCIgIgBGoiDCARSw0AIAcgBCAOaiIDaiASSw0AIANBIGogGiAHa00NAQsgBSAFKAKwATYCICAFIAUpA6gBNwMYIAcgGiAFQRhqIAVBzAJqIBEgCyAfIBYQICEDDAELIAQgB2ohCSACKQAAITogByACKQAINwAIIAcgOjcAAAJAIARBEUkNACACKQAQITogByACKQAYNwAYIAcgOjcAECAEQRBrQRFIDQAgAkEQaiECIAdBIGohBANAIAIpABAhOiAEIAIpABg3AAggBCA6NwAAIAIpACAhOiAEIAIpACg3ABggBCA6NwAQIAJBIGohAiAEQSBqIgQgCUkNAAsLIAkgBmshAiAFIAw2AswCIAkgC2sgBkkEQCAGIAkgH2tLDQsgFiAWIAIgC2siDGoiBCAOak8EQCAORQ0CIAkgBCAO/AoAAAwCC0EAIAxrIgIEQCAJIAQgAvwKAAALIAUgDCAOaiIONgKsASAJIAxrIQkgCyECCyAGQRBPBEAgAikAACE6IAkgAikACDcACCAJIDo3AAAgDkERSA0BIAkgDmohBiAJQRBqIQQDQCACKQAQITogBCACKQAYNwAIIAQgOjcAACACKQAgITogBCACKQAoNwAYIAQgOjcAECACQSBqIQIgBEEgaiIEIAZJDQALDAELAkAgBkEHTQRAIAkgAi0AADoAACAJIAItAAE6AAEgCSACLQACOgACIAkgAi0AAzoAAyAJIAIgBkECdCIEQeAaaigCAGoiAigAADYABCACIARBgBtqKAIAayECDAELIAkgAikAADcAAAsgDkEJSQ0AIAkgDmohBiAJQQhqIgQgAkEIaiICa0EPTARAA0AgBCACKQAANwAAIAJBCGohAiAEQQhqIgQgBkkNAAwCCwALIAIpAAAhOiAEIAIpAAg3AAggBCA6NwAAIA5BGUgNACAJQRhqIQQDQCACKQAQITogBCACKQAYNwAIIAQgOjcAACACKQAgITogBCACKQAoNwAYIAQgOjcAECACQSBqIQIgBEEgaiIEIAZJDQALCyADQYh/Sw0LIAMgB2ohByAKQQFrIgoNAAsLIAUoAugBIAUoAuwBRw0HQWwhAyAFKALkAUEgRw0JQQAhAgNAIAJBA0cEQCArIAJBAnQiA2ogAyAbaigCADYCACACQQFqIQIMAQsLIAUoAswCIgMgCCgChOwBQQJHDQEaCyARIANrIgIgGiAHa0sNBUEAIQQgBwRAIAIEQCAHIAMgAvwKAAALIAIgB2ohBAsgCEEANgKE7AEgCEGI7AVqIREgBCEHIAhBiOwBagshAiARIAJrIgMgGiAHa0sNBCAHBH8gAwRAIAcgAiAD/AoAAAsgAyAHagVBAAsgE2shAwwHCyATIBRBACAUQQBKG2oMAQsgCCgC/OsBCyEWIAUgCCgC+OoBIgI2AswCIAIgCCgCiOsBaiEfAkAgDkUEQCATIQkMAQsgCCgCuOkBIRggCCgCtOkBISsgCCgCsOkBIQwgCEEBNgKM6gEgCEGs0AFqISQgBUGMAmohGkEAIQIDQCACQQNHBEAgGiACQQJ0IgNqIAMgJGooAgA2AgAgAkEBaiECDAELC0FsIQMgBUHgAWoiAiAEIAcQCEGIf0sNBSAFQfQBaiACIAgoAgAQHiAFQfwBaiACIAgoAggQHiAFQYQCaiACIAgoAgQQHiAWQSBrIRwgM0UhHiATIQkDQCAOBEAgBSgC+AEgBSgC9AFBA3RqIgItAAIhGyAFKAKIAiAFKAKEAkEDdGoiBC0AAiENIAUoAoACIAUoAvwBQQN0aiIGLQADIRUgBC0AAyEnIAItAAMhEiAGLwEAIRkgBC8BACERIAIvAQAhDyAGKAIEIQcgAigCBCECIAQoAgQhBAJAIAYtAAIiKEECTwRAAkAgHiAoQRlJckUEQCAFKALgASIhIAUoAuQBIgZ0QQUgKGt2QQV0IAdqIQcCQCAGIChqQQVrIgZBIU8EQCAFQbAaNgLoAQwBCyAFKALoASIKIAUoAvABTwRAIAUgBkEHcSILNgLkASAFIAogBkEDdmsiBjYC6AEgBSAGKAAAIiE2AuABIAshBgwBCyAKIAUoAuwBIgtGDQAgBSAGIAogC2sgBkEDdiIGIAogBmsgC0kbIgtBA3RrIgY2AuQBIAUgCiALayILNgLoASAFIAsoAAAiITYC4AELIAUgBkEFaiIKNgLkASAHICEgBnRBG3ZqIRAMAQsgBSAFKALkASIGIChqIgo2AuQBIAUoAuABIAZ0QQAgKGt2IAdqIRAgCkEhTwRAIAVBsBo2AugBDAELIAUoAugBIgcgBSgC8AFPBEAgBSAKQQdxIgY2AuQBIAUgByAKQQN2ayILNgLoASAFIAsoAAA2AuABIAYhCgwBCyAHIAUoAuwBIgtGDQAgBSAKIAcgC2sgCkEDdiIGIAcgBmsgC0kbIgZBA3RrIgo2AuQBIAUgByAGayIGNgLoASAFIAYoAAA2AuABCyAFKQKMAiE6IAUgEDYCjAIgBSA6NwKQAgwBCyACRSELIChFBEAgGiACQQBHQQJ0aigCACEGIAUgGiALQQJ0aigCACIQNgKMAiAFIAY2ApACIAUoAuQBIQoMAQsgBSAFKALkASIGQQFqIgo2AuQBAkACQCAHIAtqIAUoAuABIAZ0QR92aiILQQNGBEAgBSgCjAJBAWsiBkF/IAYbIRAMAQsgGiALQQJ0aigCACIGQX8gBhshECALQQFGDQELIAUgBSgCkAI2ApQCCyAFIAUoAowCNgKQAiAFIBA2AowCCyANIBtqIQsCQCANRQRAIAohBgwBCyAFIAogDWoiBjYC5AEgBSgC4AEgCnRBACANa3YgBGohBAsCQCALQRRJDQAgBkEhTwRAIAVBsBo2AugBDAELIAUoAugBIgcgBSgC8AFPBEAgBSAGQQdxIgs2AuQBIAUgByAGQQN2ayIGNgLoASAFIAYoAAA2AuABIAshBgwBCyAHIAUoAuwBIgtGDQAgBSAGIAcgC2sgBkEDdiIGIAcgBmsgC0kbIgtBA3RrIgY2AuQBIAUgByALayILNgLoASAFIAsoAAA2AuABCwJAIBtFBEAgBiEHDAELIAUgBiAbaiIHNgLkASAFKALgASAGdEEAIBtrdiACaiECCwJAIAdBIU8EQEGwGiEGIAVBsBo2AugBDAELIAUoAugBIgYgBSgC8AFPBEAgBSAHQQdxIgs2AuQBIAUgBiAHQQN2ayIGNgLoASAFIAYoAAA2AuABIAshBwwBCyAGIAUoAuwBIgpGDQAgBSAGIAYgCmsgB0EDdiILIAYgC2sgCkkbIgtrIgY2AugBIAUgByALQQN0ayIHNgLkASAFIAYoAAA2AuABCwJAIA5BAUYNACAFIBJBAnRBsBlqKAIAIAUoAuABIg1BACAHIBJqIgtrdnEgD2o2AvQBIAUgJ0ECdEGwGWooAgAgDUEAIAsgJ2oiB2t2cSARajYChAICQCAHQSFPBEBBsBohBiAFQbAaNgLoAQwBCyAFKALwASAGTQRAIAUgB0EHcSILNgLkASAFIAYgB0EDdmsiBjYC6AEgBSAGKAAAIg02AuABIAshBwwBCyAGIAUoAuwBIgpGDQAgBSAGIAYgCmsgB0EDdiILIAYgC2sgCkkbIgtrIgY2AugBIAUgByALQQN0ayIHNgLkASAFIAYoAAAiDTYC4AELIAUgByAVaiILNgLkASAFIBVBAnRBsBlqKAIAIA1BACALa3ZxIBlqNgL8ASALQSFPBEAgBUGwGjYC6AEMAQsgBSgC8AEgBk0EQCAFIAtBB3E2AuQBIAUgBiALQQN2ayIGNgLoASAFIAYoAAA2AuABDAELIAYgBSgC7AEiB0YNACAFIAsgBiAHayALQQN2IgsgBiALayAHSRsiC0EDdGs2AuQBIAUgBiALayIGNgLoASAFIAYoAAA2AuABCyAFIAI2AqgBIAUgBDYCrAEgBSAQNgKwAQJAAkACQCAFKALMAiIGIAJqIgsgH0sNACAJIAIgBGoiDWogHEsNACANQSBqIBYgCWtNDQELIAUgBSgCsAE2AhAgBSAFKQOoATcDCCAJIBYgBUEIaiAFQcwCaiAfIAwgKyAYECAhDQwBCyACIAlqIQcgBikAACE6IAkgBikACDcACCAJIDo3AAACQCACQRFJDQAgBikAECE6IAkgBikAGDcAGCAJIDo3ABAgAkEQa0ERSA0AIAZBEGohBiAJQSBqIQIDQCAGKQAQITogAiAGKQAYNwAIIAIgOjcAACAGKQAgITogAiAGKQAoNwAYIAIgOjcAECAGQSBqIQYgAkEgaiICIAdJDQALCyAHIBBrIQYgBSALNgLMAiAHIAxrIBBJBEAgECAHICtrSw0JIBggGCAGIAxrIgtqIgYgBGpPBEAgBEUNAiAHIAYgBPwKAAAMAgtBACALayICBEAgByAGIAL8CgAACyAFIAQgC2oiBDYCrAEgByALayEHIAwhBgsgEEEQTwRAIAYpAAAhOiAHIAYpAAg3AAggByA6NwAAIARBEUgNASAEIAdqIQQgB0EQaiECA0AgBikAECE6IAIgBikAGDcACCACIDo3AAAgBikAICE6IAIgBikAKDcAGCACIDo3ABAgBkEgaiEGIAJBIGoiAiAESQ0ACwwBCwJAIBBBB00EQCAHIAYtAAA6AAAgByAGLQABOgABIAcgBi0AAjoAAiAHIAYtAAM6AAMgByAGIBBBAnQiC0HgGmooAgBqIgIoAAA2AAQgAiALQYAbaigCAGshBgwBCyAHIAYpAAA3AAALIARBCUkNACAEIAdqIQsgB0EIaiICIAZBCGoiBmtBD0wEQANAIAIgBikAADcAACAGQQhqIQYgAkEIaiICIAtJDQAMAgsACyAGKQAAITogAiAGKQAINwAIIAIgOjcAACAEQRlIDQAgB0EYaiECA0AgBikAECE6IAIgBikAGDcACCACIDo3AAAgBikAICE6IAIgBikAKDcAGCACIDo3ABAgBkEgaiEGIAJBIGoiAiALSQ0ACwsgDUGIf0sEQCANIQMMCAUgDkEBayEOIAkgDWohCQwCCwALCyAFKALoASAFKALsAUcNBSAFKALkAUEgRw0FQQAhBgNAIAZBA0cEQCAkIAZBAnQiAmogAiAaaigCADYCACAGQQFqIQYMAQsLIAUoAswCIQILQbp/IQMgHyACayIEIBYgCWtLDQQgCQR/IAQEQCAJIAIgBPwKAAALIAQgCWoFQQALIBNrIQMMBAsgAkECRgRAIBwgA2siAiAUIAlrSw0BIAkEfyACBEAgCSADIAL8CgAACyACIAlqBUEACyEJIAhBiOwFaiEcIAhBiOwBaiEDCyAcIANrIgIgFCAJa0sNACAJBH8gAgRAIAkgAyAC/AoAAAsgAiAJagVBAAsgE2shAwwDC0G6fyEDDAILQWwhAwwBC0G4fyEDCyAFQdACaiQAIAMhBAwECyAgIDUgE2tLDQkgE0UEQCAgDQIMBQsgICIERQ0FIBMgHSAE/AoAAAwFCyAxKAIMIgQgAiATa0sNCCATDQEgBEUNAwtBtn8hBAwJCyAERQ0AIBMgHS0AACAE/AsACyAEQYh/Sw0HDAELQQAhBAsCQCAIKAL06gFFIBNFcg0AIAggCCkDkOoBIAStfDcDkOoBIAgoAtjqASIGIARqQR9NBEAgBARAIAYgNGogEyAE/AoAAAsgCCAIKALY6gEgBGo2AtjqAQwBCyATIQMgBgRAQSAgBmsiAgRAIAYgNGogAyAC/AoAAAsgCCgC2OoBIQIgCEEANgLY6gEgCCAIKQOY6gEgCCkAuOoBQs/W077Sx6vZQn58Qh+JQoeVr6+Ytt6bnn9+NwOY6gEgCCAIKQOg6gEgCCkAwOoBQs/W077Sx6vZQn58Qh+JQoeVr6+Ytt6bnn9+NwOg6gEgCCAIKQOo6gEgCCkAyOoBQs/W077Sx6vZQn58Qh+JQoeVr6+Ytt6bnn9+NwOo6gEgCCAIKQOw6gEgCCkA0OoBQs/W077Sx6vZQn58Qh+JQoeVr6+Ytt6bnn9+NwOw6gEgEyACa0EgaiEDCyAEIBNqIgYgA0Egak8EQCAGQSBrIQIgCCkDsOoBITsgCCkDqOoBITwgCCkDoOoBIT0gCCkDmOoBIToDQCAIIAMpAABCz9bTvtLHq9lCfiA6fEIfiUKHla+vmLbem55/fiI6NwOY6gEgCCADKQAIQs/W077Sx6vZQn4gPXxCH4lCh5Wvr5i23puef34iPTcDoOoBIAggAykAEELP1tO+0ser2UJ+IDx8Qh+JQoeVr6+Ytt6bnn9+Ijw3A6jqASAIIAMpABhCz9bTvtLHq9lCfiA7fEIfiUKHla+vmLbem55/fiI7NwOw6gEgA0EgaiIDIAJNDQALCyADIAZPDQAgBiADayICBEAgNCADIAL8CgAACyAIIAI2AtjqAQsgOCAgayEDIB0gIGohAiAEIBNqIRMgMSgCCEUNAAsgNikDACI6Qn9RIDogEyAsa6xRckUEQEFsIQYMBgsgCCgC4OkBBEBBaiEGIANBBEkNBiAIKALw6gFFBEAgAigAAAJ+IDcpAwAiPkIgWgRAIAgpA6DqASI7QgeJIAgpA5jqASI8QgGJfCAIKQOo6gEiPUIMiXwgCCkDsOoBIjpCEol8IDxCz9bTvtLHq9lCfkIfiUKHla+vmLbem55/foVCh5Wvr5i23puef35CnaO16oOxjYr6AH0gO0LP1tO+0ser2UJ+Qh+JQoeVr6+Ytt6bnn9+hUKHla+vmLbem55/fkKdo7Xqg7GNivoAfSA9Qs/W077Sx6vZQn5CH4lCh5Wvr5i23puef36FQoeVr6+Ytt6bnn9+Qp2jteqDsY2K+gB9IDpCz9bTvtLHq9lCfkIfiUKHla+vmLbem55/foVCh5Wvr5i23puef35CnaO16oOxjYr6AH0MAQsgCCkDqOoBQsXP2bLx5brqJ3wLID58IDQgPqcQIqdHDQcLIANBBGshAyACQQRqIQILIBMgLGsiBEGJf08NBCABIARrIQEgBCAsaiEsQQEhOQwBCwsgAwRAQbh/IQYMBAsgLCAAayEGDAMLQbp/IQQMAQtBuH8hBAtBuH8gBCAEQXZGGyAEIDkbIQYLIAgoApDrAQ0AIAgoAoTrASECIAgoAoDrASEDIAgQFiAIKALA6wEgAyACEBUgCEEANgLA6wEgCCgCrOsBIgEEQAJAAkACQAJAIAEoAgAiAARAIANFDQIgAiAAIAMRAgAMAQsgA0UNAgsgAiABIAMRAgAMAgsgABACCyABEAILIAhBADYCrOsBCyADBEAgAiAIIAMRAgAMAQsgCBACCyAxQRBqJAAgBgsKACAABEAQJgALCwMAAAsLzRIKAEGICAsFAQAAAAEAQZgIC9sEAQAAAAEAAACWAAAA2AAAAH0BAAB3AAAAqgAAAM0AAAACAgAAcAAAALEAAADHAAAAGwIAAG4AAADFAAAAwgAAAIQCAABrAAAA3QAAAMAAAADfAgAAawAAAAABAAC9AAAAcQMAAGoAAABnAQAAvAAAAI8EAABtAAAARgIAALsAAAAiBgAAcgAAALACAAC7AAAAsAYAAHoAAAA5AwAAugAAAK0HAACIAAAA0AMAALkAAABTCAAAlgAAAJwEAAC6AAAAFggAAK8AAABhBQAAuQAAAMMGAADKAAAAhAUAALkAAACfBgAAygAAAAAAAAABAAAAAQAAAAUAAAANAAAAHQAAAD0AAAB9AAAA/QAAAP0BAAD9AwAA/QcAAP0PAAD9HwAA/T8AAP1/AAD9/wAA/f8BAP3/AwD9/wcA/f8PAP3/HwD9/z8A/f9/AP3//wD9//8B/f//A/3//wf9//8P/f//H/3//z/9//9/AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8DAAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAAAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAAABEAAAASAAAAEwAAABQAAAAVAAAAFgAAABcAAAAYAAAAGQAAABoAAAAbAAAAHAAAAB0AAAAeAAAAHwAAACAAAAAhAAAAIgAAACMAAAAlAAAAJwAAACkAAAArAAAALwAAADMAAAA7AAAAQwAAAFMAAABjAAAAgwAAAAMBAAADAgAAAwQAAAMIAAADEAAAAyAAAANAAAADgAAAAwABAEGgDQsVAQEBAQICAwMEBAUHCAkKCwwNDg8QAEHEDQuLAQEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQAAAAoAAAALAAAADAAAAA0AAAAOAAAADwAAABAAAAASAAAAFAAAABYAAAAYAAAAHAAAACAAAAAoAAAAMAAAAEAAAACAAAAAAAEAAAACAAAABAAAAAgAAAAQAAAAIAAAAEAAAACAAAAAAAEAQeAOC6YEAQEBAQICAwMEBgcICQoLDA0ODxABAAAABAAAAAgAAAABAAEBBgAAAAAAAAQAAAAAEAAABAAAAAAgAAAFAQAAAAAAAAUDAAAAAAAABQQAAAAAAAAFBgAAAAAAAAUHAAAAAAAABQkAAAAAAAAFCgAAAAAAAAUMAAAAAAAABg4AAAAAAAEFEAAAAAAAAQUUAAAAAAABBRYAAAAAAAIFHAAAAAAAAwUgAAAAAAAEBTAAAAAgAAYFQAAAAAAABwWAAAAAAAAIBgABAAAAAAoGAAQAAAAADAYAEAAAIAAABAAAAAAAAAAEAQAAAAAAAAUCAAAAIAAABQQAAAAAAAAFBQAAACAAAAUHAAAAAAAABQgAAAAgAAAFCgAAAAAAAAULAAAAAAAABg0AAAAgAAEFEAAAAAAAAQUSAAAAIAABBRYAAAAAAAIFGAAAACAAAwUgAAAAAAADBSgAAAAAAAYEQAAAABAABgRAAAAAIAAHBYAAAAAAAAkGAAIAAAAACwYACAAAMAAABAAAAAAQAAAEAQAAACAAAAUCAAAAIAAABQMAAAAgAAAFBQAAACAAAAUGAAAAIAAABQgAAAAgAAAFCQAAACAAAAULAAAAIAAABQwAAAAAAAAGDwAAACAAAQUSAAAAIAABBRQAAAAgAAIFGAAAACAAAgUcAAAAIAADBSgAAAAgAAQFMAAAAAAAEAYAAAEAAAAPBgCAAAAAAA4GAEAAAAAADQYAIABBkBMLhwIBAAEBBQAAAAAAAAUAAAAAAAAGBD0AAAAAAAkF/QEAAAAADwX9fwAAAAAVBf3/HwAAAAMFBQAAAAAABwR9AAAAAAAMBf0PAAAAABIF/f8DAAAAFwX9/38AAAAFBR0AAAAAAAgE/QAAAAAADgX9PwAAAAAUBf3/DwAAAAIFAQAAABAABwR9AAAAAAALBf0HAAAAABEF/f8BAAAAFgX9/z8AAAAEBQ0AAAAQAAgE/QAAAAAADQX9HwAAAAATBf3/BwAAAAEFAQAAABAABgQ9AAAAAAAKBf0DAAAAABAF/f8AAAAAHAX9//8PAAAbBf3//wcAABoF/f//AwAAGQX9//8BAAAYBf3//wBBoBULhgQBAAEBBgAAAAAAAAYDAAAAAAAABAQAAAAgAAAFBQAAAAAAAAUGAAAAAAAABQgAAAAAAAAFCQAAAAAAAAULAAAAAAAABg0AAAAAAAAGEAAAAAAAAAYTAAAAAAAABhYAAAAAAAAGGQAAAAAAAAYcAAAAAAAABh8AAAAAAAAGIgAAAAAAAQYlAAAAAAABBikAAAAAAAIGLwAAAAAAAwY7AAAAAAAEBlMAAAAAAAcGgwAAAAAACQYDAgAAEAAABAQAAAAAAAAEBQAAACAAAAUGAAAAAAAABQcAAAAgAAAFCQAAAAAAAAUKAAAAAAAABgwAAAAAAAAGDwAAAAAAAAYSAAAAAAAABhUAAAAAAAAGGAAAAAAAAAYbAAAAAAAABh4AAAAAAAAGIQAAAAAAAQYjAAAAAAABBicAAAAAAAIGKwAAAAAAAwYzAAAAAAAEBkMAAAAAAAUGYwAAAAAACAYDAQAAIAAABAQAAAAwAAAEBAAAABAAAAQFAAAAIAAABQcAAAAgAAAFCAAAACAAAAUKAAAAIAAABQsAAAAAAAAGDgAAAAAAAAYRAAAAAAAABhQAAAAAAAAGFwAAAAAAAAYaAAAAAAAABh0AAAAAAAAGIAAAAAAAEAYDAAEAAAAPBgOAAAAAAA4GA0AAAAAADQYDIAAAAAAMBgMQAAAAAAsGAwgAAAAACgYDBABBtBkLfAEAAAADAAAABwAAAA8AAAAfAAAAPwAAAH8AAAD/AAAA/wEAAP8DAAD/BwAA/w8AAP8fAAD/PwAA/38AAP//AAD//wEA//8DAP//BwD//w8A//8fAP//PwD//38A////AP///wH///8D////B////w////8f////P////38AQcQaC1kBAAAAAgAAAAQAAAAAAAAAAgAAAAQAAAAIAAAAAAAAAAEAAAACAAAAAQAAAAQAAAAEAAAABAAAAAQAAAAIAAAACAAAAAgAAAAHAAAACAAAAAkAAAAKAAAACwBBoBsLA6APAQ==",qe=new class{init(){return me||(me="undefined"!=typeof fetch?fetch(`data:application/wasm;base64,${be}`).then(A=>A.arrayBuffer()).then(A=>WebAssembly.instantiate(A,Je)).then(this._init):WebAssembly.instantiate(Buffer.from(be,"base64"),Je).then(this._init),me)}_init(A){Ke=A.instance,Je.env.emscripten_notify_memory_growth(0)}decode(A,I=0){if(!Ke)throw new Error("ZSTDDecoder: Await .init() before decoding.");const g=A.byteLength,e=Ke.exports.malloc(g);He.set(A,e),I=I||Number(Ke.exports.ZSTD_findDecompressedSize(e,g));const B=Ke.exports.malloc(I),i=Ke.exports.ZSTD_decompress(B,I,e,g),C=He.slice(B,B+i);return Ke.exports.free(e),Ke.exports.free(B),C}};var xe=Object.freeze({__proto__:null,default:class extends lI{decodeBlock(A){const I=this.parameters,g=I.LercParameters?.[wA];let e=A;switch(g){case yA:break;case dA:e=Ne(new Uint8Array(e)).buffer;break;case fA:e=qe.decode(new Uint8Array(e)).buffer;break;default:throw new Error(`Unsupported LERC additional compression method identifier: ${g}`)}return Me.decode(e,{returnPixelInterleavedDims:1===this.parameters.planarConfiguration}).pixels[0].buffer}},zstd:qe});let Te,Oe,Pe,ve;const Ve={env:{emscripten_notify_memory_growth:A=>{Pe=new Uint8Array(Oe.exports.memory.buffer),ve=new DataView(Pe.buffer)}}};const Ze="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QQhyIQBBACEDA0AgACADTQ0DIANBQGshAwwACwALQWwhCiAOIA5B/ABqIA5B+ABqIAUgBhAGIgJBiH9LDQEgDigCeCIDIARLDQEgACAOIA4oAnwgByAIIAMgDRAlIAEgADYCACACIQoMAQtBbCEKCyAOQYABaiQAIAoLcAEEfyAAQgA3AgAgAgRAIAFBCmohBiABKAIEIQRBACECQQAhAQNAIAEgBHZFBEAgAiAGIAFBA3RqLQAAIgUgAiAFSxshAiABQQFqIQEgAyAFQRZLaiEDDAELCyAAIAI2AgQgACADQQggBGt0NgIACwuuAQEEfyABIAIoAgQiAyABKAIEaiIENgIEIAAgA0ECdEGwGWooAgAgASgCAEEAIARrdnE2AgACQCAEQSFPBEAgAUGwGjYCCAwBCyABKAIIIgMgASgCEE8EQCABEAwMAQsgAyABKAIMIgVGDQAgASADIAMgBWsgBEEDdiIGIAMgBmsgBUkbIgNrIgU2AgggASAEIANBA3RrNgIEIAEgBSgAADYCAAsgACACQQhqNgIEC40CAgN/AX4gACACaiEEAkACQCACQQhOBEAgACABayICQXlIDQELA0AgACAETw0CIAAgAS0AADoAACAAQQFqIQAgAUEBaiEBDAALAAsCQAJAIAJBb0sNACAAIARBIGsiAksNACABKQAAIQYgACABKQAINwAIIAAgBjcAACACIABrIgVBEU4EQCAAQRBqIQAgASEDA0AgAykAECEGIAAgAykAGDcACCAAIAY3AAAgAykAICEGIAAgAykAKDcAGCAAIAY3ABAgA0EgaiEDIABBIGoiACACSQ0ACwsgASAFaiEBDAELIAAhAgsDQCACIARPDQEgAiABLQAAOgAAIAJBAWohAiABQQFqIQEMAAsACwvfAQEGf0G6fyEKAkAgAigCBCIIIAIoAgAiCWoiDSABIABrSw0AQWwhCiAJIAQgAygCACILa0sNACAAIAlqIgQgAigCCCIMayECIAAgAUEgayIBIAsgCUEAEDMgAyAJIAtqNgIAAkACQCAEIAVrIAxPBEAgAiEFDAELIAwgBCAGa0sNAiAHIAcgAiAFayIDaiICIAhqTwRAIAhFDQIgBCACIAj8CgAADAILQQAgA2siAARAIAQgAiAA/AoAAAsgAyAIaiEIIAQgA2shBAsgBCABIAUgCEEBEDML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",je=new class{init(){return Te||(Te="undefined"!=typeof fetch?fetch(`data:application/wasm;base64,${Ze}`).then(A=>A.arrayBuffer()).then(A=>WebAssembly.instantiate(A,Ve)).then(this._init):WebAssembly.instantiate(Buffer.from(Ze,"base64"),Ve).then(this._init),Te)}_init(A){Oe=A.instance,Ve.env.emscripten_notify_memory_growth(0)}decode(A,I=0){if(!Oe)throw new Error("ZSTDDecoder: Await .init() before decoding.");const g=A.byteLength,e=Oe.exports.malloc(g);if(Pe.set(A,e),0===I&&(I=Number(Oe.exports.ZSTD_findDecompressedSize(e,g))),-1===I){Oe.exports.free(e);const I=[];for(const g of this.decodeStreaming([A]))I.push(g);if(1===I.length)return I[0];const g=I.reduce((A,I)=>A+I.byteLength,0),B=new Uint8Array(g);let i=0;for(const A of I)B.set(A,i),i+=A.byteLength;return B}const B=Oe.exports.malloc(I),i=Oe.exports.ZSTD_decompress(B,I,e,g),C=Pe.slice(B,B+i);return Oe.exports.free(e),Oe.exports.free(B),C}*decodeStreaming(A){if(!Oe)throw new Error("ZSTDDecoder: Await .init() before decoding.");const I=Oe.exports.ZSTD_DStreamInSize(),g=Oe.exports.malloc(I),e=Oe.exports.ZSTD_DStreamOutSize(),B=Oe.exports.malloc(e),i=Oe.exports.ZSTD_createDCtx(),C=Oe.exports.malloc(12),t=Oe.exports.malloc(12);let Q=0;for(const I of A){const A=Oe.exports.malloc(I.byteLength);for(Pe.set(I,A),ve.setInt32(C,A,!0),ve.setInt32(C+4,I.byteLength,!0),ve.setInt32(C+4+4,0,!0);ve.getUint32(C+4+4,!0)<ve.getUint32(C+4,!0);){ve.setInt32(t,B,!0),ve.setInt32(t+4,e,!0),ve.setInt32(t+4+4,0,!0),Q=Oe.exports.ZSTD_decompressStream(i,t,C);const A=ve.getUint32(t+4+4,!0);yield Pe.slice(B,B+A)}Oe.exports.free(A)}if(Oe.exports.ZSTD_freeDCtx(i),Oe.exports.free(g),Oe.exports.free(B),Oe.exports.free(C),Oe.exports.free(t),0!==Q)throw new Error("Incomplete stream, more data expected.")}};var ze=Object.freeze({__proto__:null,default:class extends lI{decodeBlock(A){return je.decode(new Uint8Array(A)).buffer}},zstd:je});var We=Object.freeze({__proto__:null,default:class extends lI{constructor(A){if(super(A),"undefined"==typeof createImageBitmap)throw new Error("Cannot decode WebImage as `createImageBitmap` is not available");if("undefined"==typeof document&&"undefined"==typeof OffscreenCanvas)throw new Error("Cannot decode WebImage as neither `document` nor `OffscreenCanvas` is not available")}async decodeBlock(A){const I=new Blob([A]),g=await createImageBitmap(I);let e;"undefined"!=typeof document?(e=document.createElement("canvas"),e.width=g.width,e.height=g.height):e=new OffscreenCanvas(g.width,g.height);const B=e.getContext("2d");B.drawImage(g,0,0);const i=B.getImageData(0,0,g.width,g.height).data,C=this.parameters.samplesPerPixel||4;if(4===C)return i.buffer;if(3===C){const A=new Uint8ClampedArray(g.width*g.height*3);for(let I=0,g=0;I<A.length;I+=3,g+=4)A[I]=i[g],A[I+1]=i[g+1],A[I+2]=i[g+2];return A.buffer}throw new Error(`Unsupported SamplesPerPixel value: ${C}`)}}});exports.CogBitmapLayer=TI,exports.CogTerrainLayer=VI,exports.CogTiles=bI,exports.GeoImage=MI,exports.suppressGlobalAbortErrors=E;
|
|
4
4
|
//# sourceMappingURL=index.min.js.map
|