locar-tiler 0.7.1 → 0.7.2
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/locar-tiler.d.ts +6 -0
- package/dist/locar-tiler.mjs +36 -24
- package/dist/locar-tiler.umd.js +1 -1
- package/package.json +1 -1
package/dist/locar-tiler.d.ts
CHANGED
|
@@ -34,6 +34,12 @@ export declare class DEM {
|
|
|
34
34
|
getElevation(x: number, y: number): number;
|
|
35
35
|
/** Process the DEM data with a custom function. The function has access to all the key properties of the DEM. */
|
|
36
36
|
processData(fn: (elevs: number[], bottomLeft: EastNorth, ptWidth: number, ptHeight: number, xSpacing: number, ySpacing: number) => void): void;
|
|
37
|
+
/** Return the bottom left coordinate. */
|
|
38
|
+
getBottomLeft(): EastNorth;
|
|
39
|
+
/** Return the number of points in the x and y directions. */
|
|
40
|
+
getNPoints(): [number, number];
|
|
41
|
+
/** Return the spacing in Spherical Mercator units in the x and y directions. */
|
|
42
|
+
getSpacing(): [number, number];
|
|
37
43
|
}
|
|
38
44
|
|
|
39
45
|
/**
|
package/dist/locar-tiler.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
class
|
|
1
|
+
class N {
|
|
2
2
|
static EARTH = 4007501668e-2;
|
|
3
3
|
static HALF_EARTH = 2003750834e-2;
|
|
4
4
|
}
|
|
@@ -21,7 +21,7 @@ class q {
|
|
|
21
21
|
* @return {number} the number of Spherical Mercator "metres" in a given tile.
|
|
22
22
|
*/
|
|
23
23
|
getMetresInTile() {
|
|
24
|
-
return
|
|
24
|
+
return N.EARTH / Math.pow(2, this.z);
|
|
25
25
|
}
|
|
26
26
|
/**
|
|
27
27
|
* Get the bottom left coordinate of the tile.
|
|
@@ -29,7 +29,7 @@ class q {
|
|
|
29
29
|
*/
|
|
30
30
|
getBottomLeft() {
|
|
31
31
|
var e = this.getMetresInTile();
|
|
32
|
-
return { e: this.x * e -
|
|
32
|
+
return { e: this.x * e - N.HALF_EARTH, n: N.HALF_EARTH - (this.y + 1) * e };
|
|
33
33
|
}
|
|
34
34
|
/**
|
|
35
35
|
* Get the top right coordinate of the tile.
|
|
@@ -68,17 +68,17 @@ class Se {
|
|
|
68
68
|
return { longitude: this.#s(e[0]), latitude: this.#i(e[1]) };
|
|
69
69
|
}
|
|
70
70
|
#e(e) {
|
|
71
|
-
return e / 180 *
|
|
71
|
+
return e / 180 * N.HALF_EARTH;
|
|
72
72
|
}
|
|
73
73
|
#t(e) {
|
|
74
74
|
var t = Math.log(Math.tan((90 + e) * Math.PI / 360)) / (Math.PI / 180);
|
|
75
|
-
return t *
|
|
75
|
+
return t * N.HALF_EARTH / 180;
|
|
76
76
|
}
|
|
77
77
|
#s(e) {
|
|
78
|
-
return e /
|
|
78
|
+
return e / N.HALF_EARTH * 180;
|
|
79
79
|
}
|
|
80
80
|
#i(e) {
|
|
81
|
-
var t = e /
|
|
81
|
+
var t = e / N.HALF_EARTH * 180;
|
|
82
82
|
return t = 180 / Math.PI * (2 * Math.atan(Math.exp(t * Math.PI / 180)) - Math.PI / 2), t;
|
|
83
83
|
}
|
|
84
84
|
/**
|
|
@@ -88,7 +88,7 @@ class Se {
|
|
|
88
88
|
*/
|
|
89
89
|
getTile(e, t) {
|
|
90
90
|
var s = new q(-1, -1, t), a = s.getMetresInTile();
|
|
91
|
-
return s.x = Math.floor((
|
|
91
|
+
return s.x = Math.floor((N.HALF_EARTH + e.e) / a), s.y = Math.floor((N.HALF_EARTH - e.n) / a), s;
|
|
92
92
|
}
|
|
93
93
|
/**
|
|
94
94
|
* Obtains a tile from a given lon/lat and zoom.
|
|
@@ -739,13 +739,13 @@ function F(i) {
|
|
|
739
739
|
for (; --e >= 0; )
|
|
740
740
|
i[e] = 0;
|
|
741
741
|
}
|
|
742
|
-
const
|
|
742
|
+
const Ne = 3, De = 258, se = 29, Me = 256, Le = Me + 1 + se, ne = 30, Be = 512, $e = new Array((Le + 2) * 2);
|
|
743
743
|
F($e);
|
|
744
744
|
const Fe = new Array(ne * 2);
|
|
745
745
|
F(Fe);
|
|
746
746
|
const He = new Array(Be);
|
|
747
747
|
F(He);
|
|
748
|
-
const Ze = new Array(
|
|
748
|
+
const Ze = new Array(De - Ne + 1);
|
|
749
749
|
F(Ze);
|
|
750
750
|
const We = new Array(se);
|
|
751
751
|
F(We);
|
|
@@ -1198,7 +1198,7 @@ const fi = 0, he = 1, le = 2, {
|
|
|
1198
1198
|
Z_MEM_ERROR: ce,
|
|
1199
1199
|
Z_BUF_ERROR: _i,
|
|
1200
1200
|
Z_DEFLATED: Tt
|
|
1201
|
-
} = ae, tt = 16180, mt = 16181, vt = 16182, Ut = 16183, St = 16184, It = 16185, Ot = 16186, Rt = 16187, Ct = 16188,
|
|
1201
|
+
} = ae, tt = 16180, mt = 16181, vt = 16182, Ut = 16183, St = 16184, It = 16185, Ot = 16186, Rt = 16187, Ct = 16188, Nt = 16189, Q = 16190, C = 16191, st = 16192, Dt = 16193, nt = 16194, Mt = 16195, Lt = 16196, Bt = 16197, $t = 16198, j = 16199, X = 16200, Ft = 16201, Ht = 16202, Zt = 16203, Wt = 16204, zt = 16205, at = 16206, Pt = 16207, Gt = 16208, v = 16209, de = 16210, ue = 16211, pi = 852, wi = 592, gi = 15, bi = gi, Kt = (i) => (i >>> 24 & 255) + (i >>> 8 & 65280) + ((i & 65280) << 8) + ((i & 255) << 24);
|
|
1202
1202
|
function xi() {
|
|
1203
1203
|
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;
|
|
1204
1204
|
}
|
|
@@ -1294,7 +1294,7 @@ const ki = (i) => {
|
|
|
1294
1294
|
i.msg = "invalid window size", t.mode = v;
|
|
1295
1295
|
break;
|
|
1296
1296
|
}
|
|
1297
|
-
t.dmax = 1 << t.wbits, t.flags = 0, i.adler = t.check = 1, t.mode = r & 512 ?
|
|
1297
|
+
t.dmax = 1 << t.wbits, t.flags = 0, i.adler = t.check = 1, t.mode = r & 512 ? Nt : C, r = 0, o = 0;
|
|
1298
1298
|
break;
|
|
1299
1299
|
case mt:
|
|
1300
1300
|
for (; o < 16; ) {
|
|
@@ -1394,7 +1394,7 @@ const ki = (i) => {
|
|
|
1394
1394
|
}
|
|
1395
1395
|
t.head && (t.head.hcrc = t.flags >> 9 & 1, t.head.done = !0), i.adler = t.check = 0, t.mode = C;
|
|
1396
1396
|
break;
|
|
1397
|
-
case
|
|
1397
|
+
case Nt:
|
|
1398
1398
|
for (; o < 32; ) {
|
|
1399
1399
|
if (h === 0)
|
|
1400
1400
|
break t;
|
|
@@ -1423,7 +1423,7 @@ const ki = (i) => {
|
|
|
1423
1423
|
}
|
|
1424
1424
|
switch (t.last = r & 1, r >>>= 1, o -= 1, r & 3) {
|
|
1425
1425
|
case 0:
|
|
1426
|
-
t.mode =
|
|
1426
|
+
t.mode = Dt;
|
|
1427
1427
|
break;
|
|
1428
1428
|
case 1:
|
|
1429
1429
|
if (ki(t), t.mode = j, e === Y) {
|
|
@@ -1439,7 +1439,7 @@ const ki = (i) => {
|
|
|
1439
1439
|
}
|
|
1440
1440
|
r >>>= 2, o -= 2;
|
|
1441
1441
|
break;
|
|
1442
|
-
case
|
|
1442
|
+
case Dt:
|
|
1443
1443
|
for (r >>>= o & 7, o -= o & 7; o < 32; ) {
|
|
1444
1444
|
if (h === 0)
|
|
1445
1445
|
break t;
|
|
@@ -1718,7 +1718,7 @@ const ki = (i) => {
|
|
|
1718
1718
|
let s, a, n;
|
|
1719
1719
|
return B(i) || (s = i.state, s.wrap !== 0 && s.mode !== Q) ? O : s.mode === Q && (a = 1, a = ut(a, e, t, 0), a !== s.check) ? fe : (n = be(i, e, t, t), n ? (s.mode = de, ce) : (s.havedict = 1, L));
|
|
1720
1720
|
};
|
|
1721
|
-
var vi = pe, Ui = we, Si = _e, Ii = yi, Oi = ge, Ri = Ei, Ci = Ai,
|
|
1721
|
+
var vi = pe, Ui = we, Si = _e, Ii = yi, Oi = ge, Ri = Ei, Ci = Ai, Ni = Ti, Di = mi, Mi = "pako inflate (from Nodeca project)", D = {
|
|
1722
1722
|
inflateReset: vi,
|
|
1723
1723
|
inflateReset2: Ui,
|
|
1724
1724
|
inflateResetKeep: Si,
|
|
@@ -1726,8 +1726,8 @@ var vi = pe, Ui = we, Si = _e, Ii = yi, Oi = ge, Ri = Ei, Ci = Ai, Di = Ti, Ni =
|
|
|
1726
1726
|
inflateInit2: Oi,
|
|
1727
1727
|
inflate: Ri,
|
|
1728
1728
|
inflateEnd: Ci,
|
|
1729
|
-
inflateGetHeader:
|
|
1730
|
-
inflateSetDictionary:
|
|
1729
|
+
inflateGetHeader: Ni,
|
|
1730
|
+
inflateSetDictionary: Di,
|
|
1731
1731
|
inflateInfo: Mi
|
|
1732
1732
|
};
|
|
1733
1733
|
function Li() {
|
|
@@ -1752,13 +1752,13 @@ function z(i) {
|
|
|
1752
1752
|
}, i || {});
|
|
1753
1753
|
const e = this.options;
|
|
1754
1754
|
e.raw && e.windowBits >= 0 && e.windowBits < 16 && (e.windowBits = -e.windowBits, e.windowBits === 0 && (e.windowBits = -15)), e.windowBits >= 0 && e.windowBits < 16 && !(i && i.windowBits) && (e.windowBits += 32), e.windowBits > 15 && e.windowBits < 48 && (e.windowBits & 15) === 0 && (e.windowBits |= 15), this.err = 0, this.msg = "", this.ended = !1, this.chunks = [], this.strm = new ii(), this.strm.avail_out = 0;
|
|
1755
|
-
let t =
|
|
1755
|
+
let t = D.inflateInit2(
|
|
1756
1756
|
this.strm,
|
|
1757
1757
|
e.windowBits
|
|
1758
1758
|
);
|
|
1759
1759
|
if (t !== W)
|
|
1760
1760
|
throw new Error(_t[t]);
|
|
1761
|
-
if (this.header = new Bi(),
|
|
1761
|
+
if (this.header = new Bi(), D.inflateGetHeader(this.strm, this.header), e.dictionary && (typeof e.dictionary == "string" ? e.dictionary = pt.string2buf(e.dictionary) : xe.call(e.dictionary) === "[object ArrayBuffer]" && (e.dictionary = new Uint8Array(e.dictionary)), e.raw && (t = D.inflateSetDictionary(this.strm, e.dictionary), t !== W)))
|
|
1762
1762
|
throw new Error(_t[t]);
|
|
1763
1763
|
}
|
|
1764
1764
|
z.prototype.push = function(i, e) {
|
|
@@ -1766,8 +1766,8 @@ z.prototype.push = function(i, e) {
|
|
|
1766
1766
|
let n, l, h;
|
|
1767
1767
|
if (this.ended) return !1;
|
|
1768
1768
|
for (e === ~~e ? l = e : l = e === !0 ? Fi : $i, xe.call(i) === "[object ArrayBuffer]" ? t.input = new Uint8Array(i) : t.input = i, t.next_in = 0, t.avail_in = t.input.length; ; ) {
|
|
1769
|
-
for (t.avail_out === 0 && (t.output = new Uint8Array(s), t.next_out = 0, t.avail_out = s), n =
|
|
1770
|
-
|
|
1769
|
+
for (t.avail_out === 0 && (t.output = new Uint8Array(s), t.next_out = 0, t.avail_out = s), n = D.inflate(t, l), n === lt && a && (n = D.inflateSetDictionary(t, a), n === W ? n = D.inflate(t, l) : n === jt && (n = lt)); t.avail_in > 0 && n === ht && t.state.wrap > 0 && i[t.next_in] !== 0; )
|
|
1770
|
+
D.inflateReset(t), n = D.inflate(t, l);
|
|
1771
1771
|
switch (n) {
|
|
1772
1772
|
case Hi:
|
|
1773
1773
|
case jt:
|
|
@@ -1783,7 +1783,7 @@ z.prototype.push = function(i, e) {
|
|
|
1783
1783
|
this.onData(t.output.length === t.next_out ? t.output : t.output.subarray(0, t.next_out));
|
|
1784
1784
|
if (!(n === W && h === 0)) {
|
|
1785
1785
|
if (n === ht)
|
|
1786
|
-
return n =
|
|
1786
|
+
return n = D.inflateEnd(this.strm), this.onEnd(n), this.ended = !0, !0;
|
|
1787
1787
|
if (t.avail_in === 0) break;
|
|
1788
1788
|
}
|
|
1789
1789
|
}
|
|
@@ -2458,6 +2458,18 @@ class ys {
|
|
|
2458
2458
|
processData(e) {
|
|
2459
2459
|
e(this.elevs, this.#e, this.#t, this.#s, this.#i, this.#n);
|
|
2460
2460
|
}
|
|
2461
|
+
/** Return the bottom left coordinate. */
|
|
2462
|
+
getBottomLeft() {
|
|
2463
|
+
return this.#e;
|
|
2464
|
+
}
|
|
2465
|
+
/** Return the number of points in the x and y directions. */
|
|
2466
|
+
getNPoints() {
|
|
2467
|
+
return [this.#t, this.#s];
|
|
2468
|
+
}
|
|
2469
|
+
/** Return the spacing in Spherical Mercator units in the x and y directions. */
|
|
2470
|
+
getSpacing() {
|
|
2471
|
+
return [this.#i, this.#n];
|
|
2472
|
+
}
|
|
2461
2473
|
}
|
|
2462
2474
|
class ks extends ie {
|
|
2463
2475
|
/**
|
|
@@ -2633,7 +2645,7 @@ class Ts {
|
|
|
2633
2645
|
}
|
|
2634
2646
|
}
|
|
2635
2647
|
export {
|
|
2636
|
-
|
|
2648
|
+
N as Constants,
|
|
2637
2649
|
ys as DEM,
|
|
2638
2650
|
Ts as DemApplier,
|
|
2639
2651
|
ks as DemTiler,
|
package/dist/locar-tiler.umd.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(I,O){typeof exports=="object"&&typeof module<"u"?O(exports):typeof define=="function"&&define.amd?define(["exports"],O):(I=typeof globalThis<"u"?globalThis:I||self,O(I["locar-tiler"]={}))})(this,(function(I){"use strict";class O{static EARTH=4007501668e-2;static HALF_EARTH=2003750834e-2}class Z{x;y;z;constructor(e,t,n){this.x=e,this.y=t,this.z=n}getMetresInTile(){return O.EARTH/Math.pow(2,this.z)}getBottomLeft(){var e=this.getMetresInTile();return{e:this.x*e-O.HALF_EARTH,n:O.HALF_EARTH-(this.y+1)*e}}getTopRight(){var e=this.getBottomLeft(),t=this.getMetresInTile();return e.e+=t,e.n+=t,e}getIndex(){return`${this.z}/${this.x}/${this.y}`}toString(){return this.getIndex()}}class yt{project(e){return{e:this.#e(e.longitude),n:this.#t(e.latitude)}}unproject(e){return{longitude:this.#n(e[0]),latitude:this.#i(e[1])}}#e(e){return e/180*O.HALF_EARTH}#t(e){var t=Math.log(Math.tan((90+e)*Math.PI/360))/(Math.PI/180);return t*O.HALF_EARTH/180}#n(e){return e/O.HALF_EARTH*180}#i(e){var t=e/O.HALF_EARTH*180;return t=180/Math.PI*(2*Math.atan(Math.exp(t*Math.PI/180))-Math.PI/2),t}getTile(e,t){var n=new Z(-1,-1,t),a=n.getMetresInTile();return n.x=Math.floor((O.HALF_EARTH+e.e)/a),n.y=Math.floor((O.HALF_EARTH-e.n)/a),n}getTileFromLonLat(e,t){return this.getTile(this.project(e),t)}getID(){return"epsg:3857"}}class it{tile;url;sphMerc;dataTiles;constructor(e){this.tile=new Z(0,0,13),this.url=e,this.sphMerc=new yt,this.dataTiles=new Map}setZoom(e){this.tile.z=e}lonLatToSphMerc(e){return this.sphMerc.project(e)}getTile(e,t){return this.sphMerc.getTile(e,t)}async update(e){const t=[];let n=null;if(n=this.#e(e)){this.tile=n;const a=[n.x,n.x-1,n.x+1],s=[n.y,n.y-1,n.y+1];for(let l=0;l<a.length;l++)for(let h=0;h<s.length;h++){const d=new Z(a[l],s[h],n.z),r=await this.#t(d);r!==null&&t.push({data:r.data,tile:d})}}return t}async updateByLonLat(e){return this.update(this.lonLatToSphMerc(e))}getCurrentTiles(){const e=[],t=[this.tile.x,this.tile.x-1,this.tile.x+1],n=[this.tile.y,this.tile.y-1,this.tile.y+1];for(let a=0;a<t.length;a++)for(let s=0;s<n.length;s++){const l=new Z(t[a],n[s],this.tile.z),h=this.dataTiles.get(l.getIndex());h!==null&&e.push({data:h,tile:l})}return e}#e(e){if(this.tile){const t=this.sphMerc.getTile(e,this.tile.z);return t.x!=this.tile.x||t.y!=this.tile.y?t:null}return null}async#t(e){const t=e.getIndex();if(this.dataTiles.get(t)===void 0){const n=await this.readTile(this.url.replace("{x}",e.x.toString()).replace("{y}",e.y.toString()).replace("{z}",e.z.toString()));return this.dataTiles.set(t,this.rawTileToStoredTile(e,n)),this.dataTiles.get(t)}return null}async getData(e,t=13){await this.update(e);const n=this.sphMerc.getTile(e,t);return this.dataTiles.get(`${t}/${n.x}/${n.y}`)}rawTileToStoredTile(e,t){return{tile:e,data:t}}}function kt(i,e="utf8"){return new TextDecoder(e).decode(i)}const Re=new TextEncoder;function Ce(i){return Re.encode(i)}const De=1024*8,Ne=(()=>{const i=new Uint8Array(4),e=new Uint32Array(i.buffer);return!((e[0]=1)&i[0])})(),nt={int8:globalThis.Int8Array,uint8:globalThis.Uint8Array,int16:globalThis.Int16Array,uint16:globalThis.Uint16Array,int32:globalThis.Int32Array,uint32:globalThis.Uint32Array,uint64:globalThis.BigUint64Array,int64:globalThis.BigInt64Array,float32:globalThis.Float32Array,float64:globalThis.Float64Array};class st{buffer;byteLength;byteOffset;length;offset;lastWrittenByte;littleEndian;_data;_mark;_marks;constructor(e=De,t={}){let n=!1;typeof e=="number"?e=new ArrayBuffer(e):(n=!0,this.lastWrittenByte=e.byteLength);const a=t.offset?t.offset>>>0:0,s=e.byteLength-a;let l=a;(ArrayBuffer.isView(e)||e instanceof st)&&(e.byteLength!==e.buffer.byteLength&&(l=e.byteOffset+a),e=e.buffer),n?this.lastWrittenByte=s:this.lastWrittenByte=0,this.buffer=e,this.length=s,this.byteLength=s,this.byteOffset=l,this.offset=0,this.littleEndian=!0,this._data=new DataView(this.buffer,l,s),this._mark=0,this._marks=[]}available(e=1){return this.offset+e<=this.length}isLittleEndian(){return this.littleEndian}setLittleEndian(){return this.littleEndian=!0,this}isBigEndian(){return!this.littleEndian}setBigEndian(){return this.littleEndian=!1,this}skip(e=1){return this.offset+=e,this}back(e=1){return this.offset-=e,this}seek(e){return this.offset=e,this}mark(){return this._mark=this.offset,this}reset(){return this.offset=this._mark,this}pushMark(){return this._marks.push(this.offset),this}popMark(){const e=this._marks.pop();if(e===void 0)throw new Error("Mark stack empty");return this.seek(e),this}rewind(){return this.offset=0,this}ensureAvailable(e=1){if(!this.available(e)){const n=(this.offset+e)*2,a=new Uint8Array(n);a.set(new Uint8Array(this.buffer)),this.buffer=a.buffer,this.length=n,this.byteLength=n,this._data=new DataView(this.buffer)}return this}readBoolean(){return this.readUint8()!==0}readInt8(){return this._data.getInt8(this.offset++)}readUint8(){return this._data.getUint8(this.offset++)}readByte(){return this.readUint8()}readBytes(e=1){return this.readArray(e,"uint8")}readArray(e,t){const n=nt[t].BYTES_PER_ELEMENT*e,a=this.byteOffset+this.offset,s=this.buffer.slice(a,a+n);if(this.littleEndian===Ne&&t!=="uint8"&&t!=="int8"){const h=new Uint8Array(this.buffer.slice(a,a+n));h.reverse();const d=new nt[t](h.buffer);return this.offset+=n,d.reverse(),d}const l=new nt[t](s);return this.offset+=n,l}readInt16(){const e=this._data.getInt16(this.offset,this.littleEndian);return this.offset+=2,e}readUint16(){const e=this._data.getUint16(this.offset,this.littleEndian);return this.offset+=2,e}readInt32(){const e=this._data.getInt32(this.offset,this.littleEndian);return this.offset+=4,e}readUint32(){const e=this._data.getUint32(this.offset,this.littleEndian);return this.offset+=4,e}readFloat32(){const e=this._data.getFloat32(this.offset,this.littleEndian);return this.offset+=4,e}readFloat64(){const e=this._data.getFloat64(this.offset,this.littleEndian);return this.offset+=8,e}readBigInt64(){const e=this._data.getBigInt64(this.offset,this.littleEndian);return this.offset+=8,e}readBigUint64(){const e=this._data.getBigUint64(this.offset,this.littleEndian);return this.offset+=8,e}readChar(){return String.fromCharCode(this.readInt8())}readChars(e=1){let t="";for(let n=0;n<e;n++)t+=this.readChar();return t}readUtf8(e=1){return kt(this.readBytes(e))}decodeText(e=1,t="utf8"){return kt(this.readBytes(e),t)}writeBoolean(e){return this.writeUint8(e?255:0),this}writeInt8(e){return this.ensureAvailable(1),this._data.setInt8(this.offset++,e),this._updateLastWrittenByte(),this}writeUint8(e){return this.ensureAvailable(1),this._data.setUint8(this.offset++,e),this._updateLastWrittenByte(),this}writeByte(e){return this.writeUint8(e)}writeBytes(e){this.ensureAvailable(e.length);for(let t=0;t<e.length;t++)this._data.setUint8(this.offset++,e[t]);return this._updateLastWrittenByte(),this}writeInt16(e){return this.ensureAvailable(2),this._data.setInt16(this.offset,e,this.littleEndian),this.offset+=2,this._updateLastWrittenByte(),this}writeUint16(e){return this.ensureAvailable(2),this._data.setUint16(this.offset,e,this.littleEndian),this.offset+=2,this._updateLastWrittenByte(),this}writeInt32(e){return this.ensureAvailable(4),this._data.setInt32(this.offset,e,this.littleEndian),this.offset+=4,this._updateLastWrittenByte(),this}writeUint32(e){return this.ensureAvailable(4),this._data.setUint32(this.offset,e,this.littleEndian),this.offset+=4,this._updateLastWrittenByte(),this}writeFloat32(e){return this.ensureAvailable(4),this._data.setFloat32(this.offset,e,this.littleEndian),this.offset+=4,this._updateLastWrittenByte(),this}writeFloat64(e){return this.ensureAvailable(8),this._data.setFloat64(this.offset,e,this.littleEndian),this.offset+=8,this._updateLastWrittenByte(),this}writeBigInt64(e){return this.ensureAvailable(8),this._data.setBigInt64(this.offset,e,this.littleEndian),this.offset+=8,this._updateLastWrittenByte(),this}writeBigUint64(e){return this.ensureAvailable(8),this._data.setBigUint64(this.offset,e,this.littleEndian),this.offset+=8,this._updateLastWrittenByte(),this}writeChar(e){return this.writeUint8(e.charCodeAt(0))}writeChars(e){for(let t=0;t<e.length;t++)this.writeUint8(e.charCodeAt(t));return this}writeUtf8(e){return this.writeBytes(Ce(e))}toArray(){return new Uint8Array(this.buffer,this.byteOffset,this.lastWrittenByte)}getWrittenByteLength(){return this.lastWrittenByte-this.byteOffset}_updateLastWrittenByte(){this.offset>this.lastWrittenByte&&(this.lastWrittenByte=this.offset)}}function F(i){let e=i.length;for(;--e>=0;)i[e]=0}const Me=3,Le=258,Et=29,Be=256+1+Et,At=30,$e=512,Fe=new Array((Be+2)*2);F(Fe);const He=new Array(At*2);F(He);const Ze=new Array($e);F(Ze);const We=new Array(Le-Me+1);F(We);const Pe=new Array(Et);F(Pe);const ze=new Array(At);F(ze);var at=(i,e,t,n)=>{let a=i&65535|0,s=i>>>16&65535|0,l=0;for(;t!==0;){l=t>2e3?2e3:t,t-=l;do a=a+e[n++]|0,s=s+a|0;while(--l);a%=65521,s%=65521}return a|s<<16|0};const Ge=()=>{let i,e=[];for(var t=0;t<256;t++){i=t;for(var n=0;n<8;n++)i=i&1?3988292384^i>>>1:i>>>1;e[t]=i}return e},je=new Uint32Array(Ge());var D=(i,e,t,n)=>{const a=je,s=n+t;i^=-1;for(let l=n;l<s;l++)i=i>>>8^a[(i^e[l])&255];return i^-1},rt={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"},Tt={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 Ke=(i,e)=>Object.prototype.hasOwnProperty.call(i,e);var Ye=function(i){const e=Array.prototype.slice.call(arguments,1);for(;e.length;){const t=e.shift();if(t){if(typeof t!="object")throw new TypeError(t+"must be non-object");for(const n in t)Ke(t,n)&&(i[n]=t[n])}}return i},Xe=i=>{let e=0;for(let n=0,a=i.length;n<a;n++)e+=i[n].length;const t=new Uint8Array(e);for(let n=0,a=0,s=i.length;n<s;n++){let l=i[n];t.set(l,a),a+=l.length}return t},mt={assign:Ye,flattenChunks:Xe};let vt=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch{vt=!1}const W=new Uint8Array(256);for(let i=0;i<256;i++)W[i]=i>=252?6:i>=248?5:i>=240?4:i>=224?3:i>=192?2:1;W[254]=W[254]=1;var Ve=i=>{if(typeof TextEncoder=="function"&&TextEncoder.prototype.encode)return new TextEncoder().encode(i);let e,t,n,a,s,l=i.length,h=0;for(a=0;a<l;a++)t=i.charCodeAt(a),(t&64512)===55296&&a+1<l&&(n=i.charCodeAt(a+1),(n&64512)===56320&&(t=65536+(t-55296<<10)+(n-56320),a++)),h+=t<128?1:t<2048?2:t<65536?3:4;for(e=new Uint8Array(h),s=0,a=0;s<h;a++)t=i.charCodeAt(a),(t&64512)===55296&&a+1<l&&(n=i.charCodeAt(a+1),(n&64512)===56320&&(t=65536+(t-55296<<10)+(n-56320),a++)),t<128?e[s++]=t:t<2048?(e[s++]=192|t>>>6,e[s++]=128|t&63):t<65536?(e[s++]=224|t>>>12,e[s++]=128|t>>>6&63,e[s++]=128|t&63):(e[s++]=240|t>>>18,e[s++]=128|t>>>12&63,e[s++]=128|t>>>6&63,e[s++]=128|t&63);return e};const qe=(i,e)=>{if(e<65534&&i.subarray&&vt)return String.fromCharCode.apply(null,i.length===e?i:i.subarray(0,e));let t="";for(let n=0;n<e;n++)t+=String.fromCharCode(i[n]);return t};var Je=(i,e)=>{const t=e||i.length;if(typeof TextDecoder=="function"&&TextDecoder.prototype.decode)return new TextDecoder().decode(i.subarray(0,e));let n,a;const s=new Array(t*2);for(a=0,n=0;n<t;){let l=i[n++];if(l<128){s[a++]=l;continue}let h=W[l];if(h>4){s[a++]=65533,n+=h-1;continue}for(l&=h===2?31:h===3?15:7;h>1&&n<t;)l=l<<6|i[n++]&63,h--;if(h>1){s[a++]=65533;continue}l<65536?s[a++]=l:(l-=65536,s[a++]=55296|l>>10&1023,s[a++]=56320|l&1023)}return qe(s,a)},Qe=(i,e)=>{e=e||i.length,e>i.length&&(e=i.length);let t=e-1;for(;t>=0&&(i[t]&192)===128;)t--;return t<0||t===0?e:t+W[i[t]]>e?t:e},ot={string2buf:Ve,buf2string:Je,utf8border:Qe};function ti(){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}var ei=ti;const j=16209,ii=16191;var ni=function(e,t){let n,a,s,l,h,d,r,o,w,u,f,_,U,x,g,T,y,c,E,S,p,m,A,b;const k=e.state;n=e.next_in,A=e.input,a=n+(e.avail_in-5),s=e.next_out,b=e.output,l=s-(t-e.avail_out),h=s+(e.avail_out-257),d=k.dmax,r=k.wsize,o=k.whave,w=k.wnext,u=k.window,f=k.hold,_=k.bits,U=k.lencode,x=k.distcode,g=(1<<k.lenbits)-1,T=(1<<k.distbits)-1;t:do{_<15&&(f+=A[n++]<<_,_+=8,f+=A[n++]<<_,_+=8),y=U[f&g];e:for(;;){if(c=y>>>24,f>>>=c,_-=c,c=y>>>16&255,c===0)b[s++]=y&65535;else if(c&16){E=y&65535,c&=15,c&&(_<c&&(f+=A[n++]<<_,_+=8),E+=f&(1<<c)-1,f>>>=c,_-=c),_<15&&(f+=A[n++]<<_,_+=8,f+=A[n++]<<_,_+=8),y=x[f&T];i:for(;;){if(c=y>>>24,f>>>=c,_-=c,c=y>>>16&255,c&16){if(S=y&65535,c&=15,_<c&&(f+=A[n++]<<_,_+=8,_<c&&(f+=A[n++]<<_,_+=8)),S+=f&(1<<c)-1,S>d){e.msg="invalid distance too far back",k.mode=j;break t}if(f>>>=c,_-=c,c=s-l,S>c){if(c=S-c,c>o&&k.sane){e.msg="invalid distance too far back",k.mode=j;break t}if(p=0,m=u,w===0){if(p+=r-c,c<E){E-=c;do b[s++]=u[p++];while(--c);p=s-S,m=b}}else if(w<c){if(p+=r+w-c,c-=w,c<E){E-=c;do b[s++]=u[p++];while(--c);if(p=0,w<E){c=w,E-=c;do b[s++]=u[p++];while(--c);p=s-S,m=b}}}else if(p+=w-c,c<E){E-=c;do b[s++]=u[p++];while(--c);p=s-S,m=b}for(;E>2;)b[s++]=m[p++],b[s++]=m[p++],b[s++]=m[p++],E-=3;E&&(b[s++]=m[p++],E>1&&(b[s++]=m[p++]))}else{p=s-S;do b[s++]=b[p++],b[s++]=b[p++],b[s++]=b[p++],E-=3;while(E>2);E&&(b[s++]=b[p++],E>1&&(b[s++]=b[p++]))}}else if((c&64)===0){y=x[(y&65535)+(f&(1<<c)-1)];continue i}else{e.msg="invalid distance code",k.mode=j;break t}break}}else if((c&64)===0){y=U[(y&65535)+(f&(1<<c)-1)];continue e}else if(c&32){k.mode=ii;break t}else{e.msg="invalid literal/length code",k.mode=j;break t}break}}while(n<a&&s<h);E=_>>3,n-=E,_-=E<<3,f&=(1<<_)-1,e.next_in=n,e.next_out=s,e.avail_in=n<a?5+(a-n):5-(n-a),e.avail_out=s<h?257+(h-s):257-(s-h),k.hold=f,k.bits=_};const H=15,Ut=852,St=592,It=0,ht=1,Ot=2,si=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]),ai=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]),ri=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]),oi=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 P=(i,e,t,n,a,s,l,h)=>{const d=h.bits;let r=0,o=0,w=0,u=0,f=0,_=0,U=0,x=0,g=0,T=0,y,c,E,S,p,m=null,A;const b=new Uint16Array(H+1),k=new Uint16Array(H+1);let $=null,Oe,tt,et;for(r=0;r<=H;r++)b[r]=0;for(o=0;o<n;o++)b[e[t+o]]++;for(f=d,u=H;u>=1&&b[u]===0;u--);if(f>u&&(f=u),u===0)return a[s++]=1<<24|64<<16|0,a[s++]=1<<24|64<<16|0,h.bits=1,0;for(w=1;w<u&&b[w]===0;w++);for(f<w&&(f=w),x=1,r=1;r<=H;r++)if(x<<=1,x-=b[r],x<0)return-1;if(x>0&&(i===It||u!==1))return-1;for(k[1]=0,r=1;r<H;r++)k[r+1]=k[r]+b[r];for(o=0;o<n;o++)e[t+o]!==0&&(l[k[e[t+o]]++]=o);if(i===It?(m=$=l,A=20):i===ht?(m=si,$=ai,A=257):(m=ri,$=oi,A=0),T=0,o=0,r=w,p=s,_=f,U=0,E=-1,g=1<<f,S=g-1,i===ht&&g>Ut||i===Ot&&g>St)return 1;for(;;){Oe=r-U,l[o]+1<A?(tt=0,et=l[o]):l[o]>=A?(tt=$[l[o]-A],et=m[l[o]-A]):(tt=96,et=0),y=1<<r-U,c=1<<_,w=c;do c-=y,a[p+(T>>U)+c]=Oe<<24|tt<<16|et|0;while(c!==0);for(y=1<<r-1;T&y;)y>>=1;if(y!==0?(T&=y-1,T+=y):T=0,o++,--b[r]===0){if(r===u)break;r=e[t+l[o]]}if(r>f&&(T&S)!==E){for(U===0&&(U=f),p+=w,_=r-U,x=1<<_;_+U<u&&(x-=b[_+U],!(x<=0));)_++,x<<=1;if(g+=1<<_,i===ht&&g>Ut||i===Ot&&g>St)return 1;E=T&S,a[E]=f<<24|_<<16|p-s|0}}return T!==0&&(a[p+T]=r-U<<24|64<<16|0),h.bits=f,0};const hi=0,Rt=1,Ct=2,{Z_FINISH:Dt,Z_BLOCK:li,Z_TREES:K,Z_OK:L,Z_STREAM_END:fi,Z_NEED_DICT:ci,Z_STREAM_ERROR:C,Z_DATA_ERROR:Nt,Z_MEM_ERROR:Mt,Z_BUF_ERROR:di,Z_DEFLATED:Lt}=Tt,Y=16180,Bt=16181,$t=16182,Ft=16183,Ht=16184,Zt=16185,Wt=16186,Pt=16187,zt=16188,Gt=16189,X=16190,N=16191,lt=16192,jt=16193,ft=16194,Kt=16195,Yt=16196,Xt=16197,Vt=16198,V=16199,q=16200,qt=16201,Jt=16202,Qt=16203,te=16204,ee=16205,ct=16206,ie=16207,ne=16208,v=16209,se=16210,ae=16211,ui=852,_i=592,pi=15,re=i=>(i>>>24&255)+(i>>>8&65280)+((i&65280)<<8)+((i&255)<<24);function wi(){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 B=i=>{if(!i)return 1;const e=i.state;return!e||e.strm!==i||e.mode<Y||e.mode>ae?1:0},oe=i=>{if(B(i))return C;const e=i.state;return i.total_in=i.total_out=e.total=0,i.msg="",e.wrap&&(i.adler=e.wrap&1),e.mode=Y,e.last=0,e.havedict=0,e.flags=-1,e.dmax=32768,e.head=null,e.hold=0,e.bits=0,e.lencode=e.lendyn=new Int32Array(ui),e.distcode=e.distdyn=new Int32Array(_i),e.sane=1,e.back=-1,L},he=i=>{if(B(i))return C;const e=i.state;return e.wsize=0,e.whave=0,e.wnext=0,oe(i)},le=(i,e)=>{let t;if(B(i))return C;const n=i.state;return e<0?(t=0,e=-e):(t=(e>>4)+5,e<48&&(e&=15)),e&&(e<8||e>15)?C:(n.window!==null&&n.wbits!==e&&(n.window=null),n.wrap=t,n.wbits=e,he(i))},fe=(i,e)=>{if(!i)return C;const t=new wi;i.state=t,t.strm=i,t.window=null,t.mode=Y;const n=le(i,e);return n!==L&&(i.state=null),n},gi=i=>fe(i,pi);let ce=!0,dt,ut;const bi=i=>{if(ce){dt=new Int32Array(512),ut=new Int32Array(32);let e=0;for(;e<144;)i.lens[e++]=8;for(;e<256;)i.lens[e++]=9;for(;e<280;)i.lens[e++]=7;for(;e<288;)i.lens[e++]=8;for(P(Rt,i.lens,0,288,dt,0,i.work,{bits:9}),e=0;e<32;)i.lens[e++]=5;P(Ct,i.lens,0,32,ut,0,i.work,{bits:5}),ce=!1}i.lencode=dt,i.lenbits=9,i.distcode=ut,i.distbits=5},de=(i,e,t,n)=>{let a;const s=i.state;return s.window===null&&(s.wsize=1<<s.wbits,s.wnext=0,s.whave=0,s.window=new Uint8Array(s.wsize)),n>=s.wsize?(s.window.set(e.subarray(t-s.wsize,t),0),s.wnext=0,s.whave=s.wsize):(a=s.wsize-s.wnext,a>n&&(a=n),s.window.set(e.subarray(t-n,t-n+a),s.wnext),n-=a,n?(s.window.set(e.subarray(t-n,t),0),s.wnext=n,s.whave=s.wsize):(s.wnext+=a,s.wnext===s.wsize&&(s.wnext=0),s.whave<s.wsize&&(s.whave+=a))),0},xi=(i,e)=>{let t,n,a,s,l,h,d,r,o,w,u,f,_,U,x=0,g,T,y,c,E,S,p,m;const A=new Uint8Array(4);let b,k;const $=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(B(i)||!i.output||!i.input&&i.avail_in!==0)return C;t=i.state,t.mode===N&&(t.mode=lt),l=i.next_out,a=i.output,d=i.avail_out,s=i.next_in,n=i.input,h=i.avail_in,r=t.hold,o=t.bits,w=h,u=d,m=L;t:for(;;)switch(t.mode){case Y:if(t.wrap===0){t.mode=lt;break}for(;o<16;){if(h===0)break t;h--,r+=n[s++]<<o,o+=8}if(t.wrap&2&&r===35615){t.wbits===0&&(t.wbits=15),t.check=0,A[0]=r&255,A[1]=r>>>8&255,t.check=D(t.check,A,2,0),r=0,o=0,t.mode=Bt;break}if(t.head&&(t.head.done=!1),!(t.wrap&1)||(((r&255)<<8)+(r>>8))%31){i.msg="incorrect header check",t.mode=v;break}if((r&15)!==Lt){i.msg="unknown compression method",t.mode=v;break}if(r>>>=4,o-=4,p=(r&15)+8,t.wbits===0&&(t.wbits=p),p>15||p>t.wbits){i.msg="invalid window size",t.mode=v;break}t.dmax=1<<t.wbits,t.flags=0,i.adler=t.check=1,t.mode=r&512?Gt:N,r=0,o=0;break;case Bt:for(;o<16;){if(h===0)break t;h--,r+=n[s++]<<o,o+=8}if(t.flags=r,(t.flags&255)!==Lt){i.msg="unknown compression method",t.mode=v;break}if(t.flags&57344){i.msg="unknown header flags set",t.mode=v;break}t.head&&(t.head.text=r>>8&1),t.flags&512&&t.wrap&4&&(A[0]=r&255,A[1]=r>>>8&255,t.check=D(t.check,A,2,0)),r=0,o=0,t.mode=$t;case $t:for(;o<32;){if(h===0)break t;h--,r+=n[s++]<<o,o+=8}t.head&&(t.head.time=r),t.flags&512&&t.wrap&4&&(A[0]=r&255,A[1]=r>>>8&255,A[2]=r>>>16&255,A[3]=r>>>24&255,t.check=D(t.check,A,4,0)),r=0,o=0,t.mode=Ft;case Ft:for(;o<16;){if(h===0)break t;h--,r+=n[s++]<<o,o+=8}t.head&&(t.head.xflags=r&255,t.head.os=r>>8),t.flags&512&&t.wrap&4&&(A[0]=r&255,A[1]=r>>>8&255,t.check=D(t.check,A,2,0)),r=0,o=0,t.mode=Ht;case Ht:if(t.flags&1024){for(;o<16;){if(h===0)break t;h--,r+=n[s++]<<o,o+=8}t.length=r,t.head&&(t.head.extra_len=r),t.flags&512&&t.wrap&4&&(A[0]=r&255,A[1]=r>>>8&255,t.check=D(t.check,A,2,0)),r=0,o=0}else t.head&&(t.head.extra=null);t.mode=Zt;case Zt:if(t.flags&1024&&(f=t.length,f>h&&(f=h),f&&(t.head&&(p=t.head.extra_len-t.length,t.head.extra||(t.head.extra=new Uint8Array(t.head.extra_len)),t.head.extra.set(n.subarray(s,s+f),p)),t.flags&512&&t.wrap&4&&(t.check=D(t.check,n,f,s)),h-=f,s+=f,t.length-=f),t.length))break t;t.length=0,t.mode=Wt;case Wt:if(t.flags&2048){if(h===0)break t;f=0;do p=n[s+f++],t.head&&p&&t.length<65536&&(t.head.name+=String.fromCharCode(p));while(p&&f<h);if(t.flags&512&&t.wrap&4&&(t.check=D(t.check,n,f,s)),h-=f,s+=f,p)break t}else t.head&&(t.head.name=null);t.length=0,t.mode=Pt;case Pt:if(t.flags&4096){if(h===0)break t;f=0;do p=n[s+f++],t.head&&p&&t.length<65536&&(t.head.comment+=String.fromCharCode(p));while(p&&f<h);if(t.flags&512&&t.wrap&4&&(t.check=D(t.check,n,f,s)),h-=f,s+=f,p)break t}else t.head&&(t.head.comment=null);t.mode=zt;case zt:if(t.flags&512){for(;o<16;){if(h===0)break t;h--,r+=n[s++]<<o,o+=8}if(t.wrap&4&&r!==(t.check&65535)){i.msg="header crc mismatch",t.mode=v;break}r=0,o=0}t.head&&(t.head.hcrc=t.flags>>9&1,t.head.done=!0),i.adler=t.check=0,t.mode=N;break;case Gt:for(;o<32;){if(h===0)break t;h--,r+=n[s++]<<o,o+=8}i.adler=t.check=re(r),r=0,o=0,t.mode=X;case X:if(t.havedict===0)return i.next_out=l,i.avail_out=d,i.next_in=s,i.avail_in=h,t.hold=r,t.bits=o,ci;i.adler=t.check=1,t.mode=N;case N:if(e===li||e===K)break t;case lt:if(t.last){r>>>=o&7,o-=o&7,t.mode=ct;break}for(;o<3;){if(h===0)break t;h--,r+=n[s++]<<o,o+=8}switch(t.last=r&1,r>>>=1,o-=1,r&3){case 0:t.mode=jt;break;case 1:if(bi(t),t.mode=V,e===K){r>>>=2,o-=2;break t}break;case 2:t.mode=Yt;break;case 3:i.msg="invalid block type",t.mode=v}r>>>=2,o-=2;break;case jt:for(r>>>=o&7,o-=o&7;o<32;){if(h===0)break t;h--,r+=n[s++]<<o,o+=8}if((r&65535)!==(r>>>16^65535)){i.msg="invalid stored block lengths",t.mode=v;break}if(t.length=r&65535,r=0,o=0,t.mode=ft,e===K)break t;case ft:t.mode=Kt;case Kt:if(f=t.length,f){if(f>h&&(f=h),f>d&&(f=d),f===0)break t;a.set(n.subarray(s,s+f),l),h-=f,s+=f,d-=f,l+=f,t.length-=f;break}t.mode=N;break;case Yt:for(;o<14;){if(h===0)break t;h--,r+=n[s++]<<o,o+=8}if(t.nlen=(r&31)+257,r>>>=5,o-=5,t.ndist=(r&31)+1,r>>>=5,o-=5,t.ncode=(r&15)+4,r>>>=4,o-=4,t.nlen>286||t.ndist>30){i.msg="too many length or distance symbols",t.mode=v;break}t.have=0,t.mode=Xt;case Xt:for(;t.have<t.ncode;){for(;o<3;){if(h===0)break t;h--,r+=n[s++]<<o,o+=8}t.lens[$[t.have++]]=r&7,r>>>=3,o-=3}for(;t.have<19;)t.lens[$[t.have++]]=0;if(t.lencode=t.lendyn,t.lenbits=7,b={bits:t.lenbits},m=P(hi,t.lens,0,19,t.lencode,0,t.work,b),t.lenbits=b.bits,m){i.msg="invalid code lengths set",t.mode=v;break}t.have=0,t.mode=Vt;case Vt:for(;t.have<t.nlen+t.ndist;){for(;x=t.lencode[r&(1<<t.lenbits)-1],g=x>>>24,T=x>>>16&255,y=x&65535,!(g<=o);){if(h===0)break t;h--,r+=n[s++]<<o,o+=8}if(y<16)r>>>=g,o-=g,t.lens[t.have++]=y;else{if(y===16){for(k=g+2;o<k;){if(h===0)break t;h--,r+=n[s++]<<o,o+=8}if(r>>>=g,o-=g,t.have===0){i.msg="invalid bit length repeat",t.mode=v;break}p=t.lens[t.have-1],f=3+(r&3),r>>>=2,o-=2}else if(y===17){for(k=g+3;o<k;){if(h===0)break t;h--,r+=n[s++]<<o,o+=8}r>>>=g,o-=g,p=0,f=3+(r&7),r>>>=3,o-=3}else{for(k=g+7;o<k;){if(h===0)break t;h--,r+=n[s++]<<o,o+=8}r>>>=g,o-=g,p=0,f=11+(r&127),r>>>=7,o-=7}if(t.have+f>t.nlen+t.ndist){i.msg="invalid bit length repeat",t.mode=v;break}for(;f--;)t.lens[t.have++]=p}}if(t.mode===v)break;if(t.lens[256]===0){i.msg="invalid code -- missing end-of-block",t.mode=v;break}if(t.lenbits=9,b={bits:t.lenbits},m=P(Rt,t.lens,0,t.nlen,t.lencode,0,t.work,b),t.lenbits=b.bits,m){i.msg="invalid literal/lengths set",t.mode=v;break}if(t.distbits=6,t.distcode=t.distdyn,b={bits:t.distbits},m=P(Ct,t.lens,t.nlen,t.ndist,t.distcode,0,t.work,b),t.distbits=b.bits,m){i.msg="invalid distances set",t.mode=v;break}if(t.mode=V,e===K)break t;case V:t.mode=q;case q:if(h>=6&&d>=258){i.next_out=l,i.avail_out=d,i.next_in=s,i.avail_in=h,t.hold=r,t.bits=o,ni(i,u),l=i.next_out,a=i.output,d=i.avail_out,s=i.next_in,n=i.input,h=i.avail_in,r=t.hold,o=t.bits,t.mode===N&&(t.back=-1);break}for(t.back=0;x=t.lencode[r&(1<<t.lenbits)-1],g=x>>>24,T=x>>>16&255,y=x&65535,!(g<=o);){if(h===0)break t;h--,r+=n[s++]<<o,o+=8}if(T&&(T&240)===0){for(c=g,E=T,S=y;x=t.lencode[S+((r&(1<<c+E)-1)>>c)],g=x>>>24,T=x>>>16&255,y=x&65535,!(c+g<=o);){if(h===0)break t;h--,r+=n[s++]<<o,o+=8}r>>>=c,o-=c,t.back+=c}if(r>>>=g,o-=g,t.back+=g,t.length=y,T===0){t.mode=ee;break}if(T&32){t.back=-1,t.mode=N;break}if(T&64){i.msg="invalid literal/length code",t.mode=v;break}t.extra=T&15,t.mode=qt;case qt:if(t.extra){for(k=t.extra;o<k;){if(h===0)break t;h--,r+=n[s++]<<o,o+=8}t.length+=r&(1<<t.extra)-1,r>>>=t.extra,o-=t.extra,t.back+=t.extra}t.was=t.length,t.mode=Jt;case Jt:for(;x=t.distcode[r&(1<<t.distbits)-1],g=x>>>24,T=x>>>16&255,y=x&65535,!(g<=o);){if(h===0)break t;h--,r+=n[s++]<<o,o+=8}if((T&240)===0){for(c=g,E=T,S=y;x=t.distcode[S+((r&(1<<c+E)-1)>>c)],g=x>>>24,T=x>>>16&255,y=x&65535,!(c+g<=o);){if(h===0)break t;h--,r+=n[s++]<<o,o+=8}r>>>=c,o-=c,t.back+=c}if(r>>>=g,o-=g,t.back+=g,T&64){i.msg="invalid distance code",t.mode=v;break}t.offset=y,t.extra=T&15,t.mode=Qt;case Qt:if(t.extra){for(k=t.extra;o<k;){if(h===0)break t;h--,r+=n[s++]<<o,o+=8}t.offset+=r&(1<<t.extra)-1,r>>>=t.extra,o-=t.extra,t.back+=t.extra}if(t.offset>t.dmax){i.msg="invalid distance too far back",t.mode=v;break}t.mode=te;case te:if(d===0)break t;if(f=u-d,t.offset>f){if(f=t.offset-f,f>t.whave&&t.sane){i.msg="invalid distance too far back",t.mode=v;break}f>t.wnext?(f-=t.wnext,_=t.wsize-f):_=t.wnext-f,f>t.length&&(f=t.length),U=t.window}else U=a,_=l-t.offset,f=t.length;f>d&&(f=d),d-=f,t.length-=f;do a[l++]=U[_++];while(--f);t.length===0&&(t.mode=q);break;case ee:if(d===0)break t;a[l++]=t.length,d--,t.mode=q;break;case ct:if(t.wrap){for(;o<32;){if(h===0)break t;h--,r|=n[s++]<<o,o+=8}if(u-=d,i.total_out+=u,t.total+=u,t.wrap&4&&u&&(i.adler=t.check=t.flags?D(t.check,a,u,l-u):at(t.check,a,u,l-u)),u=d,t.wrap&4&&(t.flags?r:re(r))!==t.check){i.msg="incorrect data check",t.mode=v;break}r=0,o=0}t.mode=ie;case ie:if(t.wrap&&t.flags){for(;o<32;){if(h===0)break t;h--,r+=n[s++]<<o,o+=8}if(t.wrap&4&&r!==(t.total&4294967295)){i.msg="incorrect length check",t.mode=v;break}r=0,o=0}t.mode=ne;case ne:m=fi;break t;case v:m=Nt;break t;case se:return Mt;case ae:default:return C}return i.next_out=l,i.avail_out=d,i.next_in=s,i.avail_in=h,t.hold=r,t.bits=o,(t.wsize||u!==i.avail_out&&t.mode<v&&(t.mode<ct||e!==Dt))&&de(i,i.output,i.next_out,u-i.avail_out),w-=i.avail_in,u-=i.avail_out,i.total_in+=w,i.total_out+=u,t.total+=u,t.wrap&4&&u&&(i.adler=t.check=t.flags?D(t.check,a,u,i.next_out-u):at(t.check,a,u,i.next_out-u)),i.data_type=t.bits+(t.last?64:0)+(t.mode===N?128:0)+(t.mode===V||t.mode===ft?256:0),(w===0&&u===0||e===Dt)&&m===L&&(m=di),m},yi=i=>{if(B(i))return C;let e=i.state;return e.window&&(e.window=null),i.state=null,L},ki=(i,e)=>{if(B(i))return C;const t=i.state;return(t.wrap&2)===0?C:(t.head=e,e.done=!1,L)},Ei=(i,e)=>{const t=e.length;let n,a,s;return B(i)||(n=i.state,n.wrap!==0&&n.mode!==X)?C:n.mode===X&&(a=1,a=at(a,e,t,0),a!==n.check)?Nt:(s=de(i,e,t,t),s?(n.mode=se,Mt):(n.havedict=1,L))};var Ai=he,Ti=le,mi=oe,vi=gi,Ui=fe,Si=xi,Ii=yi,Oi=ki,Ri=Ei,Ci="pako inflate (from Nodeca project)",M={inflateReset:Ai,inflateReset2:Ti,inflateResetKeep:mi,inflateInit:vi,inflateInit2:Ui,inflate:Si,inflateEnd:Ii,inflateGetHeader:Oi,inflateSetDictionary:Ri,inflateInfo:Ci};function Di(){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}var Ni=Di;const ue=Object.prototype.toString,{Z_NO_FLUSH:Mi,Z_FINISH:Li,Z_OK:z,Z_STREAM_END:_t,Z_NEED_DICT:pt,Z_STREAM_ERROR:Bi,Z_DATA_ERROR:_e,Z_MEM_ERROR:$i}=Tt;function G(i){this.options=mt.assign({chunkSize:1024*64,windowBits:15,to:""},i||{});const e=this.options;e.raw&&e.windowBits>=0&&e.windowBits<16&&(e.windowBits=-e.windowBits,e.windowBits===0&&(e.windowBits=-15)),e.windowBits>=0&&e.windowBits<16&&!(i&&i.windowBits)&&(e.windowBits+=32),e.windowBits>15&&e.windowBits<48&&(e.windowBits&15)===0&&(e.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new ei,this.strm.avail_out=0;let t=M.inflateInit2(this.strm,e.windowBits);if(t!==z)throw new Error(rt[t]);if(this.header=new Ni,M.inflateGetHeader(this.strm,this.header),e.dictionary&&(typeof e.dictionary=="string"?e.dictionary=ot.string2buf(e.dictionary):ue.call(e.dictionary)==="[object ArrayBuffer]"&&(e.dictionary=new Uint8Array(e.dictionary)),e.raw&&(t=M.inflateSetDictionary(this.strm,e.dictionary),t!==z)))throw new Error(rt[t])}G.prototype.push=function(i,e){const t=this.strm,n=this.options.chunkSize,a=this.options.dictionary;let s,l,h;if(this.ended)return!1;for(e===~~e?l=e:l=e===!0?Li:Mi,ue.call(i)==="[object ArrayBuffer]"?t.input=new Uint8Array(i):t.input=i,t.next_in=0,t.avail_in=t.input.length;;){for(t.avail_out===0&&(t.output=new Uint8Array(n),t.next_out=0,t.avail_out=n),s=M.inflate(t,l),s===pt&&a&&(s=M.inflateSetDictionary(t,a),s===z?s=M.inflate(t,l):s===_e&&(s=pt));t.avail_in>0&&s===_t&&t.state.wrap>0&&i[t.next_in]!==0;)M.inflateReset(t),s=M.inflate(t,l);switch(s){case Bi:case _e:case pt:case $i:return this.onEnd(s),this.ended=!0,!1}if(h=t.avail_out,t.next_out&&(t.avail_out===0||s===_t))if(this.options.to==="string"){let d=ot.utf8border(t.output,t.next_out),r=t.next_out-d,o=ot.buf2string(t.output,d);t.next_out=r,t.avail_out=n-r,r&&t.output.set(t.output.subarray(d,d+r),0),this.onData(o)}else this.onData(t.output.length===t.next_out?t.output:t.output.subarray(0,t.next_out));if(!(s===z&&h===0)){if(s===_t)return s=M.inflateEnd(this.strm),this.onEnd(s),this.ended=!0,!0;if(t.avail_in===0)break}}return!0},G.prototype.onData=function(i){this.chunks.push(i)},G.prototype.onEnd=function(i){i===z&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=mt.flattenChunks(this.chunks)),this.chunks=[],this.err=i,this.msg=this.strm.msg};function Fi(i,e){const t=new G(e);if(t.push(i),t.err)throw t.msg||rt[t.err];return t.result}var Hi=G,Zi=Fi,Wi={Inflate:Hi,inflate:Zi};const{Inflate:Pi,inflate:zi}=Wi;var pe=Pi,Gi=zi;const we=[];for(let i=0;i<256;i++){let e=i;for(let t=0;t<8;t++)e&1?e=3988292384^e>>>1:e=e>>>1;we[i]=e}const ge=4294967295;function ji(i,e,t){let n=i;for(let a=0;a<t;a++)n=we[(n^e[a])&255]^n>>>8;return n}function Ki(i,e){return(ji(ge,i,e)^ge)>>>0}function be(i,e,t){const n=i.readUint32(),a=Ki(new Uint8Array(i.buffer,i.byteOffset+i.offset-e-4,e),e);if(a!==n)throw new Error(`CRC mismatch for chunk ${t}. Expected ${n}, found ${a}`)}function xe(i,e,t){for(let n=0;n<t;n++)e[n]=i[n]}function ye(i,e,t,n){let a=0;for(;a<n;a++)e[a]=i[a];for(;a<t;a++)e[a]=i[a]+e[a-n]&255}function ke(i,e,t,n){let a=0;if(t.length===0)for(;a<n;a++)e[a]=i[a];else for(;a<n;a++)e[a]=i[a]+t[a]&255}function Ee(i,e,t,n,a){let s=0;if(t.length===0){for(;s<a;s++)e[s]=i[s];for(;s<n;s++)e[s]=i[s]+(e[s-a]>>1)&255}else{for(;s<a;s++)e[s]=i[s]+(t[s]>>1)&255;for(;s<n;s++)e[s]=i[s]+(e[s-a]+t[s]>>1)&255}}function Ae(i,e,t,n,a){let s=0;if(t.length===0){for(;s<a;s++)e[s]=i[s];for(;s<n;s++)e[s]=i[s]+e[s-a]&255}else{for(;s<a;s++)e[s]=i[s]+t[s]&255;for(;s<n;s++)e[s]=i[s]+Yi(e[s-a],t[s],t[s-a])&255}}function Yi(i,e,t){const n=i+e-t,a=Math.abs(n-i),s=Math.abs(n-e),l=Math.abs(n-t);return a<=s&&a<=l?i:s<=l?e:t}function Xi(i,e,t,n,a,s){switch(i){case 0:xe(e,t,a);break;case 1:ye(e,t,a,s);break;case 2:ke(e,t,n,a);break;case 3:Ee(e,t,n,a,s);break;case 4:Ae(e,t,n,a,s);break;default:throw new Error(`Unsupported filter: ${i}`)}}const Vi=new Uint16Array([255]),qi=new Uint8Array(Vi.buffer)[0]===255;function Ji(i){const{data:e,width:t,height:n,channels:a,depth:s}=i,l=[{x:0,y:0,xStep:8,yStep:8},{x:4,y:0,xStep:8,yStep:8},{x:0,y:4,xStep:4,yStep:8},{x:2,y:0,xStep:4,yStep:4},{x:0,y:2,xStep:2,yStep:4},{x:1,y:0,xStep:2,yStep:2},{x:0,y:1,xStep:1,yStep:2}],h=Math.ceil(s/8)*a,d=new Uint8Array(n*t*h);let r=0;for(let o=0;o<7;o++){const w=l[o],u=Math.ceil((t-w.x)/w.xStep),f=Math.ceil((n-w.y)/w.yStep);if(u<=0||f<=0)continue;const _=u*h,U=new Uint8Array(_);for(let x=0;x<f;x++){const g=e[r++],T=e.subarray(r,r+_);r+=_;const y=new Uint8Array(_);Xi(g,T,y,U,_,h),U.set(y);for(let c=0;c<u;c++){const E=w.x+c*w.xStep,S=w.y+x*w.yStep;if(!(E>=t||S>=n))for(let p=0;p<h;p++)d[(S*t+E)*h+p]=y[c*h+p]}}}if(s===16){const o=new Uint16Array(d.buffer);if(qi)for(let w=0;w<o.length;w++)o[w]=Qi(o[w]);return o}else return d}function Qi(i){return(i&255)<<8|i>>8&255}const tn=new Uint16Array([255]),en=new Uint8Array(tn.buffer)[0]===255,nn=new Uint8Array(0);function Te(i){const{data:e,width:t,height:n,channels:a,depth:s}=i,l=Math.ceil(s/8)*a,h=Math.ceil(s/8*a*t),d=new Uint8Array(n*h);let r=nn,o=0,w,u;for(let f=0;f<n;f++){switch(w=e.subarray(o+1,o+1+h),u=d.subarray(f*h,(f+1)*h),e[o]){case 0:xe(w,u,h);break;case 1:ye(w,u,h,l);break;case 2:ke(w,u,r,h);break;case 3:Ee(w,u,r,h,l);break;case 4:Ae(w,u,r,h,l);break;default:throw new Error(`Unsupported filter: ${e[o]}`)}r=u,o+=h+1}if(s===16){const f=new Uint16Array(d.buffer);if(en)for(let _=0;_<f.length;_++)f[_]=sn(f[_]);return f}else return d}function sn(i){return(i&255)<<8|i>>8&255}const J=Uint8Array.of(137,80,78,71,13,10,26,10);function me(i){if(!an(i.readBytes(J.length)))throw new Error("wrong PNG signature")}function an(i){if(i.length<J.length)return!1;for(let e=0;e<J.length;e++)if(i[e]!==J[e])return!1;return!0}const rn="tEXt",on=0,ve=new TextDecoder("latin1");function hn(i){if(fn(i),i.length===0||i.length>79)throw new Error("keyword length must be between 1 and 79")}const ln=/^[\u0000-\u00FF]*$/;function fn(i){if(!ln.test(i))throw new Error("invalid latin1 text")}function cn(i,e,t){const n=Ue(e);i[n]=dn(e,t-n.length-1)}function Ue(i){for(i.mark();i.readByte()!==on;);const e=i.offset;i.reset();const t=ve.decode(i.readBytes(e-i.offset-1));return i.skip(1),hn(t),t}function dn(i,e){return ve.decode(i.readBytes(e))}const R={UNKNOWN:-1,GREYSCALE:0,TRUECOLOUR:2,INDEXED_COLOUR:3,GREYSCALE_ALPHA:4,TRUECOLOUR_ALPHA:6},wt={UNKNOWN:-1,DEFLATE:0},Se={UNKNOWN:-1,ADAPTIVE:0},gt={UNKNOWN:-1,NO_INTERLACE:0,ADAM7:1},Q={NONE:0,BACKGROUND:1,PREVIOUS:2},bt={SOURCE:0,OVER:1};class un extends st{_checkCrc;_inflator;_png;_apng;_end;_hasPalette;_palette;_hasTransparency;_transparency;_compressionMethod;_filterMethod;_interlaceMethod;_colorType;_isAnimated;_numberOfFrames;_numberOfPlays;_frames;_writingDataChunks;constructor(e,t={}){super(e);const{checkCrc:n=!1}=t;this._checkCrc=n,this._inflator=new pe,this._png={width:-1,height:-1,channels:-1,data:new Uint8Array(0),depth:1,text:{}},this._apng={width:-1,height:-1,channels:-1,depth:1,numberOfFrames:1,numberOfPlays:0,text:{},frames:[]},this._end=!1,this._hasPalette=!1,this._palette=[],this._hasTransparency=!1,this._transparency=new Uint16Array(0),this._compressionMethod=wt.UNKNOWN,this._filterMethod=Se.UNKNOWN,this._interlaceMethod=gt.UNKNOWN,this._colorType=R.UNKNOWN,this._isAnimated=!1,this._numberOfFrames=1,this._numberOfPlays=0,this._frames=[],this._writingDataChunks=!1,this.setBigEndian()}decode(){for(me(this);!this._end;){const e=this.readUint32(),t=this.readChars(4);this.decodeChunk(e,t)}return this.decodeImage(),this._png}decodeApng(){for(me(this);!this._end;){const e=this.readUint32(),t=this.readChars(4);this.decodeApngChunk(e,t)}return this.decodeApngImage(),this._apng}decodeChunk(e,t){const n=this.offset;switch(t){case"IHDR":this.decodeIHDR();break;case"PLTE":this.decodePLTE(e);break;case"IDAT":this.decodeIDAT(e);break;case"IEND":this._end=!0;break;case"tRNS":this.decodetRNS(e);break;case"iCCP":this.decodeiCCP(e);break;case rn:cn(this._png.text,this,e);break;case"pHYs":this.decodepHYs();break;default:this.skip(e);break}if(this.offset-n!==e)throw new Error(`Length mismatch while decoding chunk ${t}`);this._checkCrc?be(this,e+4,t):this.skip(4)}decodeApngChunk(e,t){const n=this.offset;switch(t!=="fdAT"&&t!=="IDAT"&&this._writingDataChunks&&this.pushDataToFrame(),t){case"acTL":this.decodeACTL();break;case"fcTL":this.decodeFCTL();break;case"fdAT":this.decodeFDAT(e);break;default:this.decodeChunk(e,t),this.offset=n+e;break}if(this.offset-n!==e)throw new Error(`Length mismatch while decoding chunk ${t}`);this._checkCrc?be(this,e+4,t):this.skip(4)}decodeIHDR(){const e=this._png;e.width=this.readUint32(),e.height=this.readUint32(),e.depth=_n(this.readUint8());const t=this.readUint8();this._colorType=t;let n;switch(t){case R.GREYSCALE:n=1;break;case R.TRUECOLOUR:n=3;break;case R.INDEXED_COLOUR:n=1;break;case R.GREYSCALE_ALPHA:n=2;break;case R.TRUECOLOUR_ALPHA:n=4;break;case R.UNKNOWN:default:throw new Error(`Unknown color type: ${t}`)}if(this._png.channels=n,this._compressionMethod=this.readUint8(),this._compressionMethod!==wt.DEFLATE)throw new Error(`Unsupported compression method: ${this._compressionMethod}`);this._filterMethod=this.readUint8(),this._interlaceMethod=this.readUint8()}decodeACTL(){this._numberOfFrames=this.readUint32(),this._numberOfPlays=this.readUint32(),this._isAnimated=!0}decodeFCTL(){const e={sequenceNumber:this.readUint32(),width:this.readUint32(),height:this.readUint32(),xOffset:this.readUint32(),yOffset:this.readUint32(),delayNumber:this.readUint16(),delayDenominator:this.readUint16(),disposeOp:this.readUint8(),blendOp:this.readUint8(),data:new Uint8Array(0)};this._frames.push(e)}decodePLTE(e){if(e%3!==0)throw new RangeError(`PLTE field length must be a multiple of 3. Got ${e}`);const t=e/3;this._hasPalette=!0;const n=[];this._palette=n;for(let a=0;a<t;a++)n.push([this.readUint8(),this.readUint8(),this.readUint8()])}decodeIDAT(e){this._writingDataChunks=!0;const t=e,n=this.offset+this.byteOffset;if(this._inflator.push(new Uint8Array(this.buffer,n,t)),this._inflator.err)throw new Error(`Error while decompressing the data: ${this._inflator.err}`);this.skip(e)}decodeFDAT(e){this._writingDataChunks=!0;let t=e,n=this.offset+this.byteOffset;if(n+=4,t-=4,this._inflator.push(new Uint8Array(this.buffer,n,t)),this._inflator.err)throw new Error(`Error while decompressing the data: ${this._inflator.err}`);this.skip(e)}decodetRNS(e){switch(this._colorType){case R.GREYSCALE:case R.TRUECOLOUR:{if(e%2!==0)throw new RangeError(`tRNS chunk length must be a multiple of 2. Got ${e}`);if(e/2>this._png.width*this._png.height)throw new Error(`tRNS chunk contains more alpha values than there are pixels (${e/2} vs ${this._png.width*this._png.height})`);this._hasTransparency=!0,this._transparency=new Uint16Array(e/2);for(let t=0;t<e/2;t++)this._transparency[t]=this.readUint16();break}case R.INDEXED_COLOUR:{if(e>this._palette.length)throw new Error(`tRNS chunk contains more alpha values than there are palette colors (${e} vs ${this._palette.length})`);let t=0;for(;t<e;t++){const n=this.readByte();this._palette[t].push(n)}for(;t<this._palette.length;t++)this._palette[t].push(255);break}case R.UNKNOWN:case R.GREYSCALE_ALPHA:case R.TRUECOLOUR_ALPHA:default:throw new Error(`tRNS chunk is not supported for color type ${this._colorType}`)}}decodeiCCP(e){const t=Ue(this),n=this.readUint8();if(n!==wt.DEFLATE)throw new Error(`Unsupported iCCP compression method: ${n}`);const a=this.readBytes(e-t.length-2);this._png.iccEmbeddedProfile={name:t,profile:Gi(a)}}decodepHYs(){const e=this.readUint32(),t=this.readUint32(),n=this.readByte();this._png.resolution={x:e,y:t,unit:n}}decodeApngImage(){this._apng.width=this._png.width,this._apng.height=this._png.height,this._apng.channels=this._png.channels,this._apng.depth=this._png.depth,this._apng.numberOfFrames=this._numberOfFrames,this._apng.numberOfPlays=this._numberOfPlays,this._apng.text=this._png.text,this._apng.resolution=this._png.resolution;for(let e=0;e<this._numberOfFrames;e++){const t={sequenceNumber:this._frames[e].sequenceNumber,delayNumber:this._frames[e].delayNumber,delayDenominator:this._frames[e].delayDenominator,data:this._apng.depth===8?new Uint8Array(this._apng.width*this._apng.height*this._apng.channels):new Uint16Array(this._apng.width*this._apng.height*this._apng.channels)},n=this._frames.at(e);if(n){if(n.data=Te({data:n.data,width:n.width,height:n.height,channels:this._apng.channels,depth:this._apng.depth}),this._hasPalette&&(this._apng.palette=this._palette),this._hasTransparency&&(this._apng.transparency=this._transparency),e===0||n.xOffset===0&&n.yOffset===0&&n.width===this._png.width&&n.height===this._png.height)t.data=n.data;else{const a=this._apng.frames.at(e-1);this.disposeFrame(n,a,t),this.addFrameDataToCanvas(t,n)}this._apng.frames.push(t)}}return this._apng}disposeFrame(e,t,n){switch(e.disposeOp){case Q.NONE:break;case Q.BACKGROUND:for(let a=0;a<this._png.height;a++)for(let s=0;s<this._png.width;s++){const l=(a*e.width+s)*this._png.channels;for(let h=0;h<this._png.channels;h++)n.data[l+h]=0}break;case Q.PREVIOUS:n.data.set(t.data);break;default:throw new Error("Unknown disposeOp")}}addFrameDataToCanvas(e,t){const n=1<<this._png.depth,a=(s,l)=>{const h=((s+t.yOffset)*this._png.width+t.xOffset+l)*this._png.channels,d=(s*t.width+l)*this._png.channels;return{index:h,frameIndex:d}};switch(t.blendOp){case bt.SOURCE:for(let s=0;s<t.height;s++)for(let l=0;l<t.width;l++){const{index:h,frameIndex:d}=a(s,l);for(let r=0;r<this._png.channels;r++)e.data[h+r]=t.data[d+r]}break;case bt.OVER:for(let s=0;s<t.height;s++)for(let l=0;l<t.width;l++){const{index:h,frameIndex:d}=a(s,l);for(let r=0;r<this._png.channels;r++){const o=t.data[d+this._png.channels-1]/n,w=r%(this._png.channels-1)===0?1:t.data[d+r],u=Math.floor(o*w+(1-o)*e.data[h+r]);e.data[h+r]+=u}}break;default:throw new Error("Unknown blendOp")}}decodeImage(){if(this._inflator.err)throw new Error(`Error while decompressing the data: ${this._inflator.err}`);const e=this._isAnimated?(this._frames?.at(0)).data:this._inflator.result;if(this._filterMethod!==Se.ADAPTIVE)throw new Error(`Filter method ${this._filterMethod} not supported`);if(this._interlaceMethod===gt.NO_INTERLACE)this._png.data=Te({data:e,width:this._png.width,height:this._png.height,channels:this._png.channels,depth:this._png.depth});else if(this._interlaceMethod===gt.ADAM7)this._png.data=Ji({data:e,width:this._png.width,height:this._png.height,channels:this._png.channels,depth:this._png.depth});else throw new Error(`Interlace method ${this._interlaceMethod} not supported`);this._hasPalette&&(this._png.palette=this._palette),this._hasTransparency&&(this._png.transparency=this._transparency)}pushDataToFrame(){const e=this._inflator.result,t=this._frames.at(-1);t?t.data=e:this._frames.push({sequenceNumber:0,width:this._png.width,height:this._png.height,xOffset:0,yOffset:0,delayNumber:0,delayDenominator:0,disposeOp:Q.NONE,blendOp:bt.SOURCE,data:e}),this._inflator=new pe,this._writingDataChunks=!1}}function _n(i){if(i!==1&&i!==2&&i!==4&&i!==8&&i!==16)throw new Error(`invalid bit depth: ${i}`);return i}function pn(i,e){return new un(i,e).decode()}class Ie{#e;#t;#n;#i;#s;elevs;constructor(e,t,n,a,s,l){this.#e=t,this.#t=n,this.#n=a,this.elevs=e,this.#i=s,this.#s=l}getElevation(e,t){let n=[e,t],a=Math.floor((n[0]-this.#e.e)/this.#i),s=this.#n-Math.ceil((n[1]-this.#e.n)/this.#s),l,h,d,r,o,w,u,f=null;if(a>=0&&s>=0&&a<this.#t-1&&s<this.#n-1){r=this.elevs[s*this.#t+a],o=this.elevs[s*this.#t+a+1],w=this.elevs[s*this.#t+a+this.#t],u=this.elevs[s*this.#t+a+this.#t+1],l=this.#e.e+a*this.#i,l+this.#i,h=this.#e.n+(this.#n-1-s)*this.#s,d=h-this.#s;let _=(n[0]-l)/this.#i,U=r*(1-_)+o*_,x=w*(1-_)+u*_,g=(n[1]-d)/this.#s;f=x*(1-g)+U*g}return f}processData(e){e(this.elevs,this.#e,this.#t,this.#n,this.#i,this.#s)}}class wn extends it{constructor(e){super(e)}async readTile(e){const n=await(await fetch(e,{signal:AbortSignal.timeout(3e4)})).arrayBuffer(),a=pn(n);let s,l=0;const h=new Array(a.width*a.height);for(let d=0;d<a.height;d++)for(let r=0;r<a.width;r++)s=(d*a.width+r)*a.channels,h[l++]=Math.round(a.data[s]*256+a.data[s+1]+a.data[s+2]/256-32768);return{w:a.width,h:a.height,elevs:h}}getElevation(e){const t=this.getTile(e,this.tile.z),n=this.dataTiles.get(`${t.z}/${t.x}/${t.y}`);return n?n.data.getElevation(e.e,e.n):null}getElevationFromLonLat(e){return this.getElevation(this.sphMerc.project(e))}rawTileToStoredTile(e,t){const n=e.getTopRight(),a=e.getBottomLeft(),s=(n.e-a.e)/(t.w-1),l=(n.n-a.n)/(t.h-1),h=new Ie(t.elevs,a,t.w,t.h,s,l);return{tile:e,data:h}}}class gn extends it{constructor(e){super(e)}async readTile(e){return await(await fetch(e,{signal:AbortSignal.timeout(3e4)})).json()}}class bn{e;n;constructor(e,t){this.e=e,this.n=t}toString(){return`e: ${this.e}, n: ${this.n}`}}class xt{longitude;latitude;constructor(e,t){this.longitude=e,this.latitude=t}toString(){return`longitude: ${this.longitude}, latitude: ${this.latitude}`}}class xn{demTiler;jsonTiler;constructor(e,t){this.demTiler=e,this.jsonTiler=t}async updateByLonLat(e){const t=this.demTiler.sphMerc.project(e),n=await this.demTiler.update(t),a=await this.jsonTiler.update(t);return n.forEach((s,l)=>{this.#e(s,a[l])}),a}async#e(e,t){t.data.features.forEach((a,s)=>{switch(a.geometry.type){case"LineString":const l=a.geometry;l.coordinates.length>=2&&this.#t(e,l.coordinates);break;case"MultiLineString":const h=a.geometry;for(let o of h.coordinates)o.length>=2&&this.#t(e,o);break;case"Point":a.geometry;const d=this.demTiler.sphMerc.project(new xt(a.geometry.coordinates[0],a.geometry.coordinates[1])),r=e.data?e.data.getElevation(d.e,d.n):0;r>Number.NEGATIVE_INFINITY&&(a.geometry.coordinates[2]=r)}})}#t(e,t){t.forEach(n=>{const a=this.demTiler.sphMerc.project(new xt(n[0],n[1])),s=e.data?.getElevation(a.e,a.n)??0;s>Number.NEGATIVE_INFINITY&&(n[2]=s)})}}I.Constants=O,I.DEM=Ie,I.DemApplier=xn,I.DemTiler=wn,I.EastNorth=bn,I.JsonTiler=gn,I.LonLat=xt,I.SphMercProjection=yt,I.Tile=Z,I.Tiler=it,Object.defineProperty(I,Symbol.toStringTag,{value:"Module"})}));
|
|
1
|
+
(function(I,O){typeof exports=="object"&&typeof module<"u"?O(exports):typeof define=="function"&&define.amd?define(["exports"],O):(I=typeof globalThis<"u"?globalThis:I||self,O(I["locar-tiler"]={}))})(this,(function(I){"use strict";class O{static EARTH=4007501668e-2;static HALF_EARTH=2003750834e-2}class Z{x;y;z;constructor(e,t,n){this.x=e,this.y=t,this.z=n}getMetresInTile(){return O.EARTH/Math.pow(2,this.z)}getBottomLeft(){var e=this.getMetresInTile();return{e:this.x*e-O.HALF_EARTH,n:O.HALF_EARTH-(this.y+1)*e}}getTopRight(){var e=this.getBottomLeft(),t=this.getMetresInTile();return e.e+=t,e.n+=t,e}getIndex(){return`${this.z}/${this.x}/${this.y}`}toString(){return this.getIndex()}}class yt{project(e){return{e:this.#e(e.longitude),n:this.#t(e.latitude)}}unproject(e){return{longitude:this.#n(e[0]),latitude:this.#i(e[1])}}#e(e){return e/180*O.HALF_EARTH}#t(e){var t=Math.log(Math.tan((90+e)*Math.PI/360))/(Math.PI/180);return t*O.HALF_EARTH/180}#n(e){return e/O.HALF_EARTH*180}#i(e){var t=e/O.HALF_EARTH*180;return t=180/Math.PI*(2*Math.atan(Math.exp(t*Math.PI/180))-Math.PI/2),t}getTile(e,t){var n=new Z(-1,-1,t),a=n.getMetresInTile();return n.x=Math.floor((O.HALF_EARTH+e.e)/a),n.y=Math.floor((O.HALF_EARTH-e.n)/a),n}getTileFromLonLat(e,t){return this.getTile(this.project(e),t)}getID(){return"epsg:3857"}}class it{tile;url;sphMerc;dataTiles;constructor(e){this.tile=new Z(0,0,13),this.url=e,this.sphMerc=new yt,this.dataTiles=new Map}setZoom(e){this.tile.z=e}lonLatToSphMerc(e){return this.sphMerc.project(e)}getTile(e,t){return this.sphMerc.getTile(e,t)}async update(e){const t=[];let n=null;if(n=this.#e(e)){this.tile=n;const a=[n.x,n.x-1,n.x+1],s=[n.y,n.y-1,n.y+1];for(let l=0;l<a.length;l++)for(let h=0;h<s.length;h++){const d=new Z(a[l],s[h],n.z),r=await this.#t(d);r!==null&&t.push({data:r.data,tile:d})}}return t}async updateByLonLat(e){return this.update(this.lonLatToSphMerc(e))}getCurrentTiles(){const e=[],t=[this.tile.x,this.tile.x-1,this.tile.x+1],n=[this.tile.y,this.tile.y-1,this.tile.y+1];for(let a=0;a<t.length;a++)for(let s=0;s<n.length;s++){const l=new Z(t[a],n[s],this.tile.z),h=this.dataTiles.get(l.getIndex());h!==null&&e.push({data:h,tile:l})}return e}#e(e){if(this.tile){const t=this.sphMerc.getTile(e,this.tile.z);return t.x!=this.tile.x||t.y!=this.tile.y?t:null}return null}async#t(e){const t=e.getIndex();if(this.dataTiles.get(t)===void 0){const n=await this.readTile(this.url.replace("{x}",e.x.toString()).replace("{y}",e.y.toString()).replace("{z}",e.z.toString()));return this.dataTiles.set(t,this.rawTileToStoredTile(e,n)),this.dataTiles.get(t)}return null}async getData(e,t=13){await this.update(e);const n=this.sphMerc.getTile(e,t);return this.dataTiles.get(`${t}/${n.x}/${n.y}`)}rawTileToStoredTile(e,t){return{tile:e,data:t}}}function kt(i,e="utf8"){return new TextDecoder(e).decode(i)}const Re=new TextEncoder;function Ce(i){return Re.encode(i)}const De=1024*8,Ne=(()=>{const i=new Uint8Array(4),e=new Uint32Array(i.buffer);return!((e[0]=1)&i[0])})(),nt={int8:globalThis.Int8Array,uint8:globalThis.Uint8Array,int16:globalThis.Int16Array,uint16:globalThis.Uint16Array,int32:globalThis.Int32Array,uint32:globalThis.Uint32Array,uint64:globalThis.BigUint64Array,int64:globalThis.BigInt64Array,float32:globalThis.Float32Array,float64:globalThis.Float64Array};class st{buffer;byteLength;byteOffset;length;offset;lastWrittenByte;littleEndian;_data;_mark;_marks;constructor(e=De,t={}){let n=!1;typeof e=="number"?e=new ArrayBuffer(e):(n=!0,this.lastWrittenByte=e.byteLength);const a=t.offset?t.offset>>>0:0,s=e.byteLength-a;let l=a;(ArrayBuffer.isView(e)||e instanceof st)&&(e.byteLength!==e.buffer.byteLength&&(l=e.byteOffset+a),e=e.buffer),n?this.lastWrittenByte=s:this.lastWrittenByte=0,this.buffer=e,this.length=s,this.byteLength=s,this.byteOffset=l,this.offset=0,this.littleEndian=!0,this._data=new DataView(this.buffer,l,s),this._mark=0,this._marks=[]}available(e=1){return this.offset+e<=this.length}isLittleEndian(){return this.littleEndian}setLittleEndian(){return this.littleEndian=!0,this}isBigEndian(){return!this.littleEndian}setBigEndian(){return this.littleEndian=!1,this}skip(e=1){return this.offset+=e,this}back(e=1){return this.offset-=e,this}seek(e){return this.offset=e,this}mark(){return this._mark=this.offset,this}reset(){return this.offset=this._mark,this}pushMark(){return this._marks.push(this.offset),this}popMark(){const e=this._marks.pop();if(e===void 0)throw new Error("Mark stack empty");return this.seek(e),this}rewind(){return this.offset=0,this}ensureAvailable(e=1){if(!this.available(e)){const n=(this.offset+e)*2,a=new Uint8Array(n);a.set(new Uint8Array(this.buffer)),this.buffer=a.buffer,this.length=n,this.byteLength=n,this._data=new DataView(this.buffer)}return this}readBoolean(){return this.readUint8()!==0}readInt8(){return this._data.getInt8(this.offset++)}readUint8(){return this._data.getUint8(this.offset++)}readByte(){return this.readUint8()}readBytes(e=1){return this.readArray(e,"uint8")}readArray(e,t){const n=nt[t].BYTES_PER_ELEMENT*e,a=this.byteOffset+this.offset,s=this.buffer.slice(a,a+n);if(this.littleEndian===Ne&&t!=="uint8"&&t!=="int8"){const h=new Uint8Array(this.buffer.slice(a,a+n));h.reverse();const d=new nt[t](h.buffer);return this.offset+=n,d.reverse(),d}const l=new nt[t](s);return this.offset+=n,l}readInt16(){const e=this._data.getInt16(this.offset,this.littleEndian);return this.offset+=2,e}readUint16(){const e=this._data.getUint16(this.offset,this.littleEndian);return this.offset+=2,e}readInt32(){const e=this._data.getInt32(this.offset,this.littleEndian);return this.offset+=4,e}readUint32(){const e=this._data.getUint32(this.offset,this.littleEndian);return this.offset+=4,e}readFloat32(){const e=this._data.getFloat32(this.offset,this.littleEndian);return this.offset+=4,e}readFloat64(){const e=this._data.getFloat64(this.offset,this.littleEndian);return this.offset+=8,e}readBigInt64(){const e=this._data.getBigInt64(this.offset,this.littleEndian);return this.offset+=8,e}readBigUint64(){const e=this._data.getBigUint64(this.offset,this.littleEndian);return this.offset+=8,e}readChar(){return String.fromCharCode(this.readInt8())}readChars(e=1){let t="";for(let n=0;n<e;n++)t+=this.readChar();return t}readUtf8(e=1){return kt(this.readBytes(e))}decodeText(e=1,t="utf8"){return kt(this.readBytes(e),t)}writeBoolean(e){return this.writeUint8(e?255:0),this}writeInt8(e){return this.ensureAvailable(1),this._data.setInt8(this.offset++,e),this._updateLastWrittenByte(),this}writeUint8(e){return this.ensureAvailable(1),this._data.setUint8(this.offset++,e),this._updateLastWrittenByte(),this}writeByte(e){return this.writeUint8(e)}writeBytes(e){this.ensureAvailable(e.length);for(let t=0;t<e.length;t++)this._data.setUint8(this.offset++,e[t]);return this._updateLastWrittenByte(),this}writeInt16(e){return this.ensureAvailable(2),this._data.setInt16(this.offset,e,this.littleEndian),this.offset+=2,this._updateLastWrittenByte(),this}writeUint16(e){return this.ensureAvailable(2),this._data.setUint16(this.offset,e,this.littleEndian),this.offset+=2,this._updateLastWrittenByte(),this}writeInt32(e){return this.ensureAvailable(4),this._data.setInt32(this.offset,e,this.littleEndian),this.offset+=4,this._updateLastWrittenByte(),this}writeUint32(e){return this.ensureAvailable(4),this._data.setUint32(this.offset,e,this.littleEndian),this.offset+=4,this._updateLastWrittenByte(),this}writeFloat32(e){return this.ensureAvailable(4),this._data.setFloat32(this.offset,e,this.littleEndian),this.offset+=4,this._updateLastWrittenByte(),this}writeFloat64(e){return this.ensureAvailable(8),this._data.setFloat64(this.offset,e,this.littleEndian),this.offset+=8,this._updateLastWrittenByte(),this}writeBigInt64(e){return this.ensureAvailable(8),this._data.setBigInt64(this.offset,e,this.littleEndian),this.offset+=8,this._updateLastWrittenByte(),this}writeBigUint64(e){return this.ensureAvailable(8),this._data.setBigUint64(this.offset,e,this.littleEndian),this.offset+=8,this._updateLastWrittenByte(),this}writeChar(e){return this.writeUint8(e.charCodeAt(0))}writeChars(e){for(let t=0;t<e.length;t++)this.writeUint8(e.charCodeAt(t));return this}writeUtf8(e){return this.writeBytes(Ce(e))}toArray(){return new Uint8Array(this.buffer,this.byteOffset,this.lastWrittenByte)}getWrittenByteLength(){return this.lastWrittenByte-this.byteOffset}_updateLastWrittenByte(){this.offset>this.lastWrittenByte&&(this.lastWrittenByte=this.offset)}}function F(i){let e=i.length;for(;--e>=0;)i[e]=0}const Me=3,Le=258,Et=29,Be=256+1+Et,At=30,$e=512,Fe=new Array((Be+2)*2);F(Fe);const He=new Array(At*2);F(He);const Ze=new Array($e);F(Ze);const Pe=new Array(Le-Me+1);F(Pe);const We=new Array(Et);F(We);const ze=new Array(At);F(ze);var at=(i,e,t,n)=>{let a=i&65535|0,s=i>>>16&65535|0,l=0;for(;t!==0;){l=t>2e3?2e3:t,t-=l;do a=a+e[n++]|0,s=s+a|0;while(--l);a%=65521,s%=65521}return a|s<<16|0};const Ge=()=>{let i,e=[];for(var t=0;t<256;t++){i=t;for(var n=0;n<8;n++)i=i&1?3988292384^i>>>1:i>>>1;e[t]=i}return e},je=new Uint32Array(Ge());var D=(i,e,t,n)=>{const a=je,s=n+t;i^=-1;for(let l=n;l<s;l++)i=i>>>8^a[(i^e[l])&255];return i^-1},rt={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"},Tt={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 Ke=(i,e)=>Object.prototype.hasOwnProperty.call(i,e);var Ye=function(i){const e=Array.prototype.slice.call(arguments,1);for(;e.length;){const t=e.shift();if(t){if(typeof t!="object")throw new TypeError(t+"must be non-object");for(const n in t)Ke(t,n)&&(i[n]=t[n])}}return i},Xe=i=>{let e=0;for(let n=0,a=i.length;n<a;n++)e+=i[n].length;const t=new Uint8Array(e);for(let n=0,a=0,s=i.length;n<s;n++){let l=i[n];t.set(l,a),a+=l.length}return t},mt={assign:Ye,flattenChunks:Xe};let vt=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch{vt=!1}const P=new Uint8Array(256);for(let i=0;i<256;i++)P[i]=i>=252?6:i>=248?5:i>=240?4:i>=224?3:i>=192?2:1;P[254]=P[254]=1;var Ve=i=>{if(typeof TextEncoder=="function"&&TextEncoder.prototype.encode)return new TextEncoder().encode(i);let e,t,n,a,s,l=i.length,h=0;for(a=0;a<l;a++)t=i.charCodeAt(a),(t&64512)===55296&&a+1<l&&(n=i.charCodeAt(a+1),(n&64512)===56320&&(t=65536+(t-55296<<10)+(n-56320),a++)),h+=t<128?1:t<2048?2:t<65536?3:4;for(e=new Uint8Array(h),s=0,a=0;s<h;a++)t=i.charCodeAt(a),(t&64512)===55296&&a+1<l&&(n=i.charCodeAt(a+1),(n&64512)===56320&&(t=65536+(t-55296<<10)+(n-56320),a++)),t<128?e[s++]=t:t<2048?(e[s++]=192|t>>>6,e[s++]=128|t&63):t<65536?(e[s++]=224|t>>>12,e[s++]=128|t>>>6&63,e[s++]=128|t&63):(e[s++]=240|t>>>18,e[s++]=128|t>>>12&63,e[s++]=128|t>>>6&63,e[s++]=128|t&63);return e};const qe=(i,e)=>{if(e<65534&&i.subarray&&vt)return String.fromCharCode.apply(null,i.length===e?i:i.subarray(0,e));let t="";for(let n=0;n<e;n++)t+=String.fromCharCode(i[n]);return t};var Je=(i,e)=>{const t=e||i.length;if(typeof TextDecoder=="function"&&TextDecoder.prototype.decode)return new TextDecoder().decode(i.subarray(0,e));let n,a;const s=new Array(t*2);for(a=0,n=0;n<t;){let l=i[n++];if(l<128){s[a++]=l;continue}let h=P[l];if(h>4){s[a++]=65533,n+=h-1;continue}for(l&=h===2?31:h===3?15:7;h>1&&n<t;)l=l<<6|i[n++]&63,h--;if(h>1){s[a++]=65533;continue}l<65536?s[a++]=l:(l-=65536,s[a++]=55296|l>>10&1023,s[a++]=56320|l&1023)}return qe(s,a)},Qe=(i,e)=>{e=e||i.length,e>i.length&&(e=i.length);let t=e-1;for(;t>=0&&(i[t]&192)===128;)t--;return t<0||t===0?e:t+P[i[t]]>e?t:e},ot={string2buf:Ve,buf2string:Je,utf8border:Qe};function ti(){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}var ei=ti;const j=16209,ii=16191;var ni=function(e,t){let n,a,s,l,h,d,r,o,w,u,f,_,U,x,g,T,y,c,E,S,p,m,A,b;const k=e.state;n=e.next_in,A=e.input,a=n+(e.avail_in-5),s=e.next_out,b=e.output,l=s-(t-e.avail_out),h=s+(e.avail_out-257),d=k.dmax,r=k.wsize,o=k.whave,w=k.wnext,u=k.window,f=k.hold,_=k.bits,U=k.lencode,x=k.distcode,g=(1<<k.lenbits)-1,T=(1<<k.distbits)-1;t:do{_<15&&(f+=A[n++]<<_,_+=8,f+=A[n++]<<_,_+=8),y=U[f&g];e:for(;;){if(c=y>>>24,f>>>=c,_-=c,c=y>>>16&255,c===0)b[s++]=y&65535;else if(c&16){E=y&65535,c&=15,c&&(_<c&&(f+=A[n++]<<_,_+=8),E+=f&(1<<c)-1,f>>>=c,_-=c),_<15&&(f+=A[n++]<<_,_+=8,f+=A[n++]<<_,_+=8),y=x[f&T];i:for(;;){if(c=y>>>24,f>>>=c,_-=c,c=y>>>16&255,c&16){if(S=y&65535,c&=15,_<c&&(f+=A[n++]<<_,_+=8,_<c&&(f+=A[n++]<<_,_+=8)),S+=f&(1<<c)-1,S>d){e.msg="invalid distance too far back",k.mode=j;break t}if(f>>>=c,_-=c,c=s-l,S>c){if(c=S-c,c>o&&k.sane){e.msg="invalid distance too far back",k.mode=j;break t}if(p=0,m=u,w===0){if(p+=r-c,c<E){E-=c;do b[s++]=u[p++];while(--c);p=s-S,m=b}}else if(w<c){if(p+=r+w-c,c-=w,c<E){E-=c;do b[s++]=u[p++];while(--c);if(p=0,w<E){c=w,E-=c;do b[s++]=u[p++];while(--c);p=s-S,m=b}}}else if(p+=w-c,c<E){E-=c;do b[s++]=u[p++];while(--c);p=s-S,m=b}for(;E>2;)b[s++]=m[p++],b[s++]=m[p++],b[s++]=m[p++],E-=3;E&&(b[s++]=m[p++],E>1&&(b[s++]=m[p++]))}else{p=s-S;do b[s++]=b[p++],b[s++]=b[p++],b[s++]=b[p++],E-=3;while(E>2);E&&(b[s++]=b[p++],E>1&&(b[s++]=b[p++]))}}else if((c&64)===0){y=x[(y&65535)+(f&(1<<c)-1)];continue i}else{e.msg="invalid distance code",k.mode=j;break t}break}}else if((c&64)===0){y=U[(y&65535)+(f&(1<<c)-1)];continue e}else if(c&32){k.mode=ii;break t}else{e.msg="invalid literal/length code",k.mode=j;break t}break}}while(n<a&&s<h);E=_>>3,n-=E,_-=E<<3,f&=(1<<_)-1,e.next_in=n,e.next_out=s,e.avail_in=n<a?5+(a-n):5-(n-a),e.avail_out=s<h?257+(h-s):257-(s-h),k.hold=f,k.bits=_};const H=15,Ut=852,St=592,It=0,ht=1,Ot=2,si=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]),ai=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]),ri=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]),oi=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 W=(i,e,t,n,a,s,l,h)=>{const d=h.bits;let r=0,o=0,w=0,u=0,f=0,_=0,U=0,x=0,g=0,T=0,y,c,E,S,p,m=null,A;const b=new Uint16Array(H+1),k=new Uint16Array(H+1);let $=null,Oe,tt,et;for(r=0;r<=H;r++)b[r]=0;for(o=0;o<n;o++)b[e[t+o]]++;for(f=d,u=H;u>=1&&b[u]===0;u--);if(f>u&&(f=u),u===0)return a[s++]=1<<24|64<<16|0,a[s++]=1<<24|64<<16|0,h.bits=1,0;for(w=1;w<u&&b[w]===0;w++);for(f<w&&(f=w),x=1,r=1;r<=H;r++)if(x<<=1,x-=b[r],x<0)return-1;if(x>0&&(i===It||u!==1))return-1;for(k[1]=0,r=1;r<H;r++)k[r+1]=k[r]+b[r];for(o=0;o<n;o++)e[t+o]!==0&&(l[k[e[t+o]]++]=o);if(i===It?(m=$=l,A=20):i===ht?(m=si,$=ai,A=257):(m=ri,$=oi,A=0),T=0,o=0,r=w,p=s,_=f,U=0,E=-1,g=1<<f,S=g-1,i===ht&&g>Ut||i===Ot&&g>St)return 1;for(;;){Oe=r-U,l[o]+1<A?(tt=0,et=l[o]):l[o]>=A?(tt=$[l[o]-A],et=m[l[o]-A]):(tt=96,et=0),y=1<<r-U,c=1<<_,w=c;do c-=y,a[p+(T>>U)+c]=Oe<<24|tt<<16|et|0;while(c!==0);for(y=1<<r-1;T&y;)y>>=1;if(y!==0?(T&=y-1,T+=y):T=0,o++,--b[r]===0){if(r===u)break;r=e[t+l[o]]}if(r>f&&(T&S)!==E){for(U===0&&(U=f),p+=w,_=r-U,x=1<<_;_+U<u&&(x-=b[_+U],!(x<=0));)_++,x<<=1;if(g+=1<<_,i===ht&&g>Ut||i===Ot&&g>St)return 1;E=T&S,a[E]=f<<24|_<<16|p-s|0}}return T!==0&&(a[p+T]=r-U<<24|64<<16|0),h.bits=f,0};const hi=0,Rt=1,Ct=2,{Z_FINISH:Dt,Z_BLOCK:li,Z_TREES:K,Z_OK:L,Z_STREAM_END:fi,Z_NEED_DICT:ci,Z_STREAM_ERROR:C,Z_DATA_ERROR:Nt,Z_MEM_ERROR:Mt,Z_BUF_ERROR:di,Z_DEFLATED:Lt}=Tt,Y=16180,Bt=16181,$t=16182,Ft=16183,Ht=16184,Zt=16185,Pt=16186,Wt=16187,zt=16188,Gt=16189,X=16190,N=16191,lt=16192,jt=16193,ft=16194,Kt=16195,Yt=16196,Xt=16197,Vt=16198,V=16199,q=16200,qt=16201,Jt=16202,Qt=16203,te=16204,ee=16205,ct=16206,ie=16207,ne=16208,v=16209,se=16210,ae=16211,ui=852,_i=592,pi=15,re=i=>(i>>>24&255)+(i>>>8&65280)+((i&65280)<<8)+((i&255)<<24);function wi(){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 B=i=>{if(!i)return 1;const e=i.state;return!e||e.strm!==i||e.mode<Y||e.mode>ae?1:0},oe=i=>{if(B(i))return C;const e=i.state;return i.total_in=i.total_out=e.total=0,i.msg="",e.wrap&&(i.adler=e.wrap&1),e.mode=Y,e.last=0,e.havedict=0,e.flags=-1,e.dmax=32768,e.head=null,e.hold=0,e.bits=0,e.lencode=e.lendyn=new Int32Array(ui),e.distcode=e.distdyn=new Int32Array(_i),e.sane=1,e.back=-1,L},he=i=>{if(B(i))return C;const e=i.state;return e.wsize=0,e.whave=0,e.wnext=0,oe(i)},le=(i,e)=>{let t;if(B(i))return C;const n=i.state;return e<0?(t=0,e=-e):(t=(e>>4)+5,e<48&&(e&=15)),e&&(e<8||e>15)?C:(n.window!==null&&n.wbits!==e&&(n.window=null),n.wrap=t,n.wbits=e,he(i))},fe=(i,e)=>{if(!i)return C;const t=new wi;i.state=t,t.strm=i,t.window=null,t.mode=Y;const n=le(i,e);return n!==L&&(i.state=null),n},gi=i=>fe(i,pi);let ce=!0,dt,ut;const bi=i=>{if(ce){dt=new Int32Array(512),ut=new Int32Array(32);let e=0;for(;e<144;)i.lens[e++]=8;for(;e<256;)i.lens[e++]=9;for(;e<280;)i.lens[e++]=7;for(;e<288;)i.lens[e++]=8;for(W(Rt,i.lens,0,288,dt,0,i.work,{bits:9}),e=0;e<32;)i.lens[e++]=5;W(Ct,i.lens,0,32,ut,0,i.work,{bits:5}),ce=!1}i.lencode=dt,i.lenbits=9,i.distcode=ut,i.distbits=5},de=(i,e,t,n)=>{let a;const s=i.state;return s.window===null&&(s.wsize=1<<s.wbits,s.wnext=0,s.whave=0,s.window=new Uint8Array(s.wsize)),n>=s.wsize?(s.window.set(e.subarray(t-s.wsize,t),0),s.wnext=0,s.whave=s.wsize):(a=s.wsize-s.wnext,a>n&&(a=n),s.window.set(e.subarray(t-n,t-n+a),s.wnext),n-=a,n?(s.window.set(e.subarray(t-n,t),0),s.wnext=n,s.whave=s.wsize):(s.wnext+=a,s.wnext===s.wsize&&(s.wnext=0),s.whave<s.wsize&&(s.whave+=a))),0},xi=(i,e)=>{let t,n,a,s,l,h,d,r,o,w,u,f,_,U,x=0,g,T,y,c,E,S,p,m;const A=new Uint8Array(4);let b,k;const $=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(B(i)||!i.output||!i.input&&i.avail_in!==0)return C;t=i.state,t.mode===N&&(t.mode=lt),l=i.next_out,a=i.output,d=i.avail_out,s=i.next_in,n=i.input,h=i.avail_in,r=t.hold,o=t.bits,w=h,u=d,m=L;t:for(;;)switch(t.mode){case Y:if(t.wrap===0){t.mode=lt;break}for(;o<16;){if(h===0)break t;h--,r+=n[s++]<<o,o+=8}if(t.wrap&2&&r===35615){t.wbits===0&&(t.wbits=15),t.check=0,A[0]=r&255,A[1]=r>>>8&255,t.check=D(t.check,A,2,0),r=0,o=0,t.mode=Bt;break}if(t.head&&(t.head.done=!1),!(t.wrap&1)||(((r&255)<<8)+(r>>8))%31){i.msg="incorrect header check",t.mode=v;break}if((r&15)!==Lt){i.msg="unknown compression method",t.mode=v;break}if(r>>>=4,o-=4,p=(r&15)+8,t.wbits===0&&(t.wbits=p),p>15||p>t.wbits){i.msg="invalid window size",t.mode=v;break}t.dmax=1<<t.wbits,t.flags=0,i.adler=t.check=1,t.mode=r&512?Gt:N,r=0,o=0;break;case Bt:for(;o<16;){if(h===0)break t;h--,r+=n[s++]<<o,o+=8}if(t.flags=r,(t.flags&255)!==Lt){i.msg="unknown compression method",t.mode=v;break}if(t.flags&57344){i.msg="unknown header flags set",t.mode=v;break}t.head&&(t.head.text=r>>8&1),t.flags&512&&t.wrap&4&&(A[0]=r&255,A[1]=r>>>8&255,t.check=D(t.check,A,2,0)),r=0,o=0,t.mode=$t;case $t:for(;o<32;){if(h===0)break t;h--,r+=n[s++]<<o,o+=8}t.head&&(t.head.time=r),t.flags&512&&t.wrap&4&&(A[0]=r&255,A[1]=r>>>8&255,A[2]=r>>>16&255,A[3]=r>>>24&255,t.check=D(t.check,A,4,0)),r=0,o=0,t.mode=Ft;case Ft:for(;o<16;){if(h===0)break t;h--,r+=n[s++]<<o,o+=8}t.head&&(t.head.xflags=r&255,t.head.os=r>>8),t.flags&512&&t.wrap&4&&(A[0]=r&255,A[1]=r>>>8&255,t.check=D(t.check,A,2,0)),r=0,o=0,t.mode=Ht;case Ht:if(t.flags&1024){for(;o<16;){if(h===0)break t;h--,r+=n[s++]<<o,o+=8}t.length=r,t.head&&(t.head.extra_len=r),t.flags&512&&t.wrap&4&&(A[0]=r&255,A[1]=r>>>8&255,t.check=D(t.check,A,2,0)),r=0,o=0}else t.head&&(t.head.extra=null);t.mode=Zt;case Zt:if(t.flags&1024&&(f=t.length,f>h&&(f=h),f&&(t.head&&(p=t.head.extra_len-t.length,t.head.extra||(t.head.extra=new Uint8Array(t.head.extra_len)),t.head.extra.set(n.subarray(s,s+f),p)),t.flags&512&&t.wrap&4&&(t.check=D(t.check,n,f,s)),h-=f,s+=f,t.length-=f),t.length))break t;t.length=0,t.mode=Pt;case Pt:if(t.flags&2048){if(h===0)break t;f=0;do p=n[s+f++],t.head&&p&&t.length<65536&&(t.head.name+=String.fromCharCode(p));while(p&&f<h);if(t.flags&512&&t.wrap&4&&(t.check=D(t.check,n,f,s)),h-=f,s+=f,p)break t}else t.head&&(t.head.name=null);t.length=0,t.mode=Wt;case Wt:if(t.flags&4096){if(h===0)break t;f=0;do p=n[s+f++],t.head&&p&&t.length<65536&&(t.head.comment+=String.fromCharCode(p));while(p&&f<h);if(t.flags&512&&t.wrap&4&&(t.check=D(t.check,n,f,s)),h-=f,s+=f,p)break t}else t.head&&(t.head.comment=null);t.mode=zt;case zt:if(t.flags&512){for(;o<16;){if(h===0)break t;h--,r+=n[s++]<<o,o+=8}if(t.wrap&4&&r!==(t.check&65535)){i.msg="header crc mismatch",t.mode=v;break}r=0,o=0}t.head&&(t.head.hcrc=t.flags>>9&1,t.head.done=!0),i.adler=t.check=0,t.mode=N;break;case Gt:for(;o<32;){if(h===0)break t;h--,r+=n[s++]<<o,o+=8}i.adler=t.check=re(r),r=0,o=0,t.mode=X;case X:if(t.havedict===0)return i.next_out=l,i.avail_out=d,i.next_in=s,i.avail_in=h,t.hold=r,t.bits=o,ci;i.adler=t.check=1,t.mode=N;case N:if(e===li||e===K)break t;case lt:if(t.last){r>>>=o&7,o-=o&7,t.mode=ct;break}for(;o<3;){if(h===0)break t;h--,r+=n[s++]<<o,o+=8}switch(t.last=r&1,r>>>=1,o-=1,r&3){case 0:t.mode=jt;break;case 1:if(bi(t),t.mode=V,e===K){r>>>=2,o-=2;break t}break;case 2:t.mode=Yt;break;case 3:i.msg="invalid block type",t.mode=v}r>>>=2,o-=2;break;case jt:for(r>>>=o&7,o-=o&7;o<32;){if(h===0)break t;h--,r+=n[s++]<<o,o+=8}if((r&65535)!==(r>>>16^65535)){i.msg="invalid stored block lengths",t.mode=v;break}if(t.length=r&65535,r=0,o=0,t.mode=ft,e===K)break t;case ft:t.mode=Kt;case Kt:if(f=t.length,f){if(f>h&&(f=h),f>d&&(f=d),f===0)break t;a.set(n.subarray(s,s+f),l),h-=f,s+=f,d-=f,l+=f,t.length-=f;break}t.mode=N;break;case Yt:for(;o<14;){if(h===0)break t;h--,r+=n[s++]<<o,o+=8}if(t.nlen=(r&31)+257,r>>>=5,o-=5,t.ndist=(r&31)+1,r>>>=5,o-=5,t.ncode=(r&15)+4,r>>>=4,o-=4,t.nlen>286||t.ndist>30){i.msg="too many length or distance symbols",t.mode=v;break}t.have=0,t.mode=Xt;case Xt:for(;t.have<t.ncode;){for(;o<3;){if(h===0)break t;h--,r+=n[s++]<<o,o+=8}t.lens[$[t.have++]]=r&7,r>>>=3,o-=3}for(;t.have<19;)t.lens[$[t.have++]]=0;if(t.lencode=t.lendyn,t.lenbits=7,b={bits:t.lenbits},m=W(hi,t.lens,0,19,t.lencode,0,t.work,b),t.lenbits=b.bits,m){i.msg="invalid code lengths set",t.mode=v;break}t.have=0,t.mode=Vt;case Vt:for(;t.have<t.nlen+t.ndist;){for(;x=t.lencode[r&(1<<t.lenbits)-1],g=x>>>24,T=x>>>16&255,y=x&65535,!(g<=o);){if(h===0)break t;h--,r+=n[s++]<<o,o+=8}if(y<16)r>>>=g,o-=g,t.lens[t.have++]=y;else{if(y===16){for(k=g+2;o<k;){if(h===0)break t;h--,r+=n[s++]<<o,o+=8}if(r>>>=g,o-=g,t.have===0){i.msg="invalid bit length repeat",t.mode=v;break}p=t.lens[t.have-1],f=3+(r&3),r>>>=2,o-=2}else if(y===17){for(k=g+3;o<k;){if(h===0)break t;h--,r+=n[s++]<<o,o+=8}r>>>=g,o-=g,p=0,f=3+(r&7),r>>>=3,o-=3}else{for(k=g+7;o<k;){if(h===0)break t;h--,r+=n[s++]<<o,o+=8}r>>>=g,o-=g,p=0,f=11+(r&127),r>>>=7,o-=7}if(t.have+f>t.nlen+t.ndist){i.msg="invalid bit length repeat",t.mode=v;break}for(;f--;)t.lens[t.have++]=p}}if(t.mode===v)break;if(t.lens[256]===0){i.msg="invalid code -- missing end-of-block",t.mode=v;break}if(t.lenbits=9,b={bits:t.lenbits},m=W(Rt,t.lens,0,t.nlen,t.lencode,0,t.work,b),t.lenbits=b.bits,m){i.msg="invalid literal/lengths set",t.mode=v;break}if(t.distbits=6,t.distcode=t.distdyn,b={bits:t.distbits},m=W(Ct,t.lens,t.nlen,t.ndist,t.distcode,0,t.work,b),t.distbits=b.bits,m){i.msg="invalid distances set",t.mode=v;break}if(t.mode=V,e===K)break t;case V:t.mode=q;case q:if(h>=6&&d>=258){i.next_out=l,i.avail_out=d,i.next_in=s,i.avail_in=h,t.hold=r,t.bits=o,ni(i,u),l=i.next_out,a=i.output,d=i.avail_out,s=i.next_in,n=i.input,h=i.avail_in,r=t.hold,o=t.bits,t.mode===N&&(t.back=-1);break}for(t.back=0;x=t.lencode[r&(1<<t.lenbits)-1],g=x>>>24,T=x>>>16&255,y=x&65535,!(g<=o);){if(h===0)break t;h--,r+=n[s++]<<o,o+=8}if(T&&(T&240)===0){for(c=g,E=T,S=y;x=t.lencode[S+((r&(1<<c+E)-1)>>c)],g=x>>>24,T=x>>>16&255,y=x&65535,!(c+g<=o);){if(h===0)break t;h--,r+=n[s++]<<o,o+=8}r>>>=c,o-=c,t.back+=c}if(r>>>=g,o-=g,t.back+=g,t.length=y,T===0){t.mode=ee;break}if(T&32){t.back=-1,t.mode=N;break}if(T&64){i.msg="invalid literal/length code",t.mode=v;break}t.extra=T&15,t.mode=qt;case qt:if(t.extra){for(k=t.extra;o<k;){if(h===0)break t;h--,r+=n[s++]<<o,o+=8}t.length+=r&(1<<t.extra)-1,r>>>=t.extra,o-=t.extra,t.back+=t.extra}t.was=t.length,t.mode=Jt;case Jt:for(;x=t.distcode[r&(1<<t.distbits)-1],g=x>>>24,T=x>>>16&255,y=x&65535,!(g<=o);){if(h===0)break t;h--,r+=n[s++]<<o,o+=8}if((T&240)===0){for(c=g,E=T,S=y;x=t.distcode[S+((r&(1<<c+E)-1)>>c)],g=x>>>24,T=x>>>16&255,y=x&65535,!(c+g<=o);){if(h===0)break t;h--,r+=n[s++]<<o,o+=8}r>>>=c,o-=c,t.back+=c}if(r>>>=g,o-=g,t.back+=g,T&64){i.msg="invalid distance code",t.mode=v;break}t.offset=y,t.extra=T&15,t.mode=Qt;case Qt:if(t.extra){for(k=t.extra;o<k;){if(h===0)break t;h--,r+=n[s++]<<o,o+=8}t.offset+=r&(1<<t.extra)-1,r>>>=t.extra,o-=t.extra,t.back+=t.extra}if(t.offset>t.dmax){i.msg="invalid distance too far back",t.mode=v;break}t.mode=te;case te:if(d===0)break t;if(f=u-d,t.offset>f){if(f=t.offset-f,f>t.whave&&t.sane){i.msg="invalid distance too far back",t.mode=v;break}f>t.wnext?(f-=t.wnext,_=t.wsize-f):_=t.wnext-f,f>t.length&&(f=t.length),U=t.window}else U=a,_=l-t.offset,f=t.length;f>d&&(f=d),d-=f,t.length-=f;do a[l++]=U[_++];while(--f);t.length===0&&(t.mode=q);break;case ee:if(d===0)break t;a[l++]=t.length,d--,t.mode=q;break;case ct:if(t.wrap){for(;o<32;){if(h===0)break t;h--,r|=n[s++]<<o,o+=8}if(u-=d,i.total_out+=u,t.total+=u,t.wrap&4&&u&&(i.adler=t.check=t.flags?D(t.check,a,u,l-u):at(t.check,a,u,l-u)),u=d,t.wrap&4&&(t.flags?r:re(r))!==t.check){i.msg="incorrect data check",t.mode=v;break}r=0,o=0}t.mode=ie;case ie:if(t.wrap&&t.flags){for(;o<32;){if(h===0)break t;h--,r+=n[s++]<<o,o+=8}if(t.wrap&4&&r!==(t.total&4294967295)){i.msg="incorrect length check",t.mode=v;break}r=0,o=0}t.mode=ne;case ne:m=fi;break t;case v:m=Nt;break t;case se:return Mt;case ae:default:return C}return i.next_out=l,i.avail_out=d,i.next_in=s,i.avail_in=h,t.hold=r,t.bits=o,(t.wsize||u!==i.avail_out&&t.mode<v&&(t.mode<ct||e!==Dt))&&de(i,i.output,i.next_out,u-i.avail_out),w-=i.avail_in,u-=i.avail_out,i.total_in+=w,i.total_out+=u,t.total+=u,t.wrap&4&&u&&(i.adler=t.check=t.flags?D(t.check,a,u,i.next_out-u):at(t.check,a,u,i.next_out-u)),i.data_type=t.bits+(t.last?64:0)+(t.mode===N?128:0)+(t.mode===V||t.mode===ft?256:0),(w===0&&u===0||e===Dt)&&m===L&&(m=di),m},yi=i=>{if(B(i))return C;let e=i.state;return e.window&&(e.window=null),i.state=null,L},ki=(i,e)=>{if(B(i))return C;const t=i.state;return(t.wrap&2)===0?C:(t.head=e,e.done=!1,L)},Ei=(i,e)=>{const t=e.length;let n,a,s;return B(i)||(n=i.state,n.wrap!==0&&n.mode!==X)?C:n.mode===X&&(a=1,a=at(a,e,t,0),a!==n.check)?Nt:(s=de(i,e,t,t),s?(n.mode=se,Mt):(n.havedict=1,L))};var Ai=he,Ti=le,mi=oe,vi=gi,Ui=fe,Si=xi,Ii=yi,Oi=ki,Ri=Ei,Ci="pako inflate (from Nodeca project)",M={inflateReset:Ai,inflateReset2:Ti,inflateResetKeep:mi,inflateInit:vi,inflateInit2:Ui,inflate:Si,inflateEnd:Ii,inflateGetHeader:Oi,inflateSetDictionary:Ri,inflateInfo:Ci};function Di(){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}var Ni=Di;const ue=Object.prototype.toString,{Z_NO_FLUSH:Mi,Z_FINISH:Li,Z_OK:z,Z_STREAM_END:_t,Z_NEED_DICT:pt,Z_STREAM_ERROR:Bi,Z_DATA_ERROR:_e,Z_MEM_ERROR:$i}=Tt;function G(i){this.options=mt.assign({chunkSize:1024*64,windowBits:15,to:""},i||{});const e=this.options;e.raw&&e.windowBits>=0&&e.windowBits<16&&(e.windowBits=-e.windowBits,e.windowBits===0&&(e.windowBits=-15)),e.windowBits>=0&&e.windowBits<16&&!(i&&i.windowBits)&&(e.windowBits+=32),e.windowBits>15&&e.windowBits<48&&(e.windowBits&15)===0&&(e.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new ei,this.strm.avail_out=0;let t=M.inflateInit2(this.strm,e.windowBits);if(t!==z)throw new Error(rt[t]);if(this.header=new Ni,M.inflateGetHeader(this.strm,this.header),e.dictionary&&(typeof e.dictionary=="string"?e.dictionary=ot.string2buf(e.dictionary):ue.call(e.dictionary)==="[object ArrayBuffer]"&&(e.dictionary=new Uint8Array(e.dictionary)),e.raw&&(t=M.inflateSetDictionary(this.strm,e.dictionary),t!==z)))throw new Error(rt[t])}G.prototype.push=function(i,e){const t=this.strm,n=this.options.chunkSize,a=this.options.dictionary;let s,l,h;if(this.ended)return!1;for(e===~~e?l=e:l=e===!0?Li:Mi,ue.call(i)==="[object ArrayBuffer]"?t.input=new Uint8Array(i):t.input=i,t.next_in=0,t.avail_in=t.input.length;;){for(t.avail_out===0&&(t.output=new Uint8Array(n),t.next_out=0,t.avail_out=n),s=M.inflate(t,l),s===pt&&a&&(s=M.inflateSetDictionary(t,a),s===z?s=M.inflate(t,l):s===_e&&(s=pt));t.avail_in>0&&s===_t&&t.state.wrap>0&&i[t.next_in]!==0;)M.inflateReset(t),s=M.inflate(t,l);switch(s){case Bi:case _e:case pt:case $i:return this.onEnd(s),this.ended=!0,!1}if(h=t.avail_out,t.next_out&&(t.avail_out===0||s===_t))if(this.options.to==="string"){let d=ot.utf8border(t.output,t.next_out),r=t.next_out-d,o=ot.buf2string(t.output,d);t.next_out=r,t.avail_out=n-r,r&&t.output.set(t.output.subarray(d,d+r),0),this.onData(o)}else this.onData(t.output.length===t.next_out?t.output:t.output.subarray(0,t.next_out));if(!(s===z&&h===0)){if(s===_t)return s=M.inflateEnd(this.strm),this.onEnd(s),this.ended=!0,!0;if(t.avail_in===0)break}}return!0},G.prototype.onData=function(i){this.chunks.push(i)},G.prototype.onEnd=function(i){i===z&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=mt.flattenChunks(this.chunks)),this.chunks=[],this.err=i,this.msg=this.strm.msg};function Fi(i,e){const t=new G(e);if(t.push(i),t.err)throw t.msg||rt[t.err];return t.result}var Hi=G,Zi=Fi,Pi={Inflate:Hi,inflate:Zi};const{Inflate:Wi,inflate:zi}=Pi;var pe=Wi,Gi=zi;const we=[];for(let i=0;i<256;i++){let e=i;for(let t=0;t<8;t++)e&1?e=3988292384^e>>>1:e=e>>>1;we[i]=e}const ge=4294967295;function ji(i,e,t){let n=i;for(let a=0;a<t;a++)n=we[(n^e[a])&255]^n>>>8;return n}function Ki(i,e){return(ji(ge,i,e)^ge)>>>0}function be(i,e,t){const n=i.readUint32(),a=Ki(new Uint8Array(i.buffer,i.byteOffset+i.offset-e-4,e),e);if(a!==n)throw new Error(`CRC mismatch for chunk ${t}. Expected ${n}, found ${a}`)}function xe(i,e,t){for(let n=0;n<t;n++)e[n]=i[n]}function ye(i,e,t,n){let a=0;for(;a<n;a++)e[a]=i[a];for(;a<t;a++)e[a]=i[a]+e[a-n]&255}function ke(i,e,t,n){let a=0;if(t.length===0)for(;a<n;a++)e[a]=i[a];else for(;a<n;a++)e[a]=i[a]+t[a]&255}function Ee(i,e,t,n,a){let s=0;if(t.length===0){for(;s<a;s++)e[s]=i[s];for(;s<n;s++)e[s]=i[s]+(e[s-a]>>1)&255}else{for(;s<a;s++)e[s]=i[s]+(t[s]>>1)&255;for(;s<n;s++)e[s]=i[s]+(e[s-a]+t[s]>>1)&255}}function Ae(i,e,t,n,a){let s=0;if(t.length===0){for(;s<a;s++)e[s]=i[s];for(;s<n;s++)e[s]=i[s]+e[s-a]&255}else{for(;s<a;s++)e[s]=i[s]+t[s]&255;for(;s<n;s++)e[s]=i[s]+Yi(e[s-a],t[s],t[s-a])&255}}function Yi(i,e,t){const n=i+e-t,a=Math.abs(n-i),s=Math.abs(n-e),l=Math.abs(n-t);return a<=s&&a<=l?i:s<=l?e:t}function Xi(i,e,t,n,a,s){switch(i){case 0:xe(e,t,a);break;case 1:ye(e,t,a,s);break;case 2:ke(e,t,n,a);break;case 3:Ee(e,t,n,a,s);break;case 4:Ae(e,t,n,a,s);break;default:throw new Error(`Unsupported filter: ${i}`)}}const Vi=new Uint16Array([255]),qi=new Uint8Array(Vi.buffer)[0]===255;function Ji(i){const{data:e,width:t,height:n,channels:a,depth:s}=i,l=[{x:0,y:0,xStep:8,yStep:8},{x:4,y:0,xStep:8,yStep:8},{x:0,y:4,xStep:4,yStep:8},{x:2,y:0,xStep:4,yStep:4},{x:0,y:2,xStep:2,yStep:4},{x:1,y:0,xStep:2,yStep:2},{x:0,y:1,xStep:1,yStep:2}],h=Math.ceil(s/8)*a,d=new Uint8Array(n*t*h);let r=0;for(let o=0;o<7;o++){const w=l[o],u=Math.ceil((t-w.x)/w.xStep),f=Math.ceil((n-w.y)/w.yStep);if(u<=0||f<=0)continue;const _=u*h,U=new Uint8Array(_);for(let x=0;x<f;x++){const g=e[r++],T=e.subarray(r,r+_);r+=_;const y=new Uint8Array(_);Xi(g,T,y,U,_,h),U.set(y);for(let c=0;c<u;c++){const E=w.x+c*w.xStep,S=w.y+x*w.yStep;if(!(E>=t||S>=n))for(let p=0;p<h;p++)d[(S*t+E)*h+p]=y[c*h+p]}}}if(s===16){const o=new Uint16Array(d.buffer);if(qi)for(let w=0;w<o.length;w++)o[w]=Qi(o[w]);return o}else return d}function Qi(i){return(i&255)<<8|i>>8&255}const tn=new Uint16Array([255]),en=new Uint8Array(tn.buffer)[0]===255,nn=new Uint8Array(0);function Te(i){const{data:e,width:t,height:n,channels:a,depth:s}=i,l=Math.ceil(s/8)*a,h=Math.ceil(s/8*a*t),d=new Uint8Array(n*h);let r=nn,o=0,w,u;for(let f=0;f<n;f++){switch(w=e.subarray(o+1,o+1+h),u=d.subarray(f*h,(f+1)*h),e[o]){case 0:xe(w,u,h);break;case 1:ye(w,u,h,l);break;case 2:ke(w,u,r,h);break;case 3:Ee(w,u,r,h,l);break;case 4:Ae(w,u,r,h,l);break;default:throw new Error(`Unsupported filter: ${e[o]}`)}r=u,o+=h+1}if(s===16){const f=new Uint16Array(d.buffer);if(en)for(let _=0;_<f.length;_++)f[_]=sn(f[_]);return f}else return d}function sn(i){return(i&255)<<8|i>>8&255}const J=Uint8Array.of(137,80,78,71,13,10,26,10);function me(i){if(!an(i.readBytes(J.length)))throw new Error("wrong PNG signature")}function an(i){if(i.length<J.length)return!1;for(let e=0;e<J.length;e++)if(i[e]!==J[e])return!1;return!0}const rn="tEXt",on=0,ve=new TextDecoder("latin1");function hn(i){if(fn(i),i.length===0||i.length>79)throw new Error("keyword length must be between 1 and 79")}const ln=/^[\u0000-\u00FF]*$/;function fn(i){if(!ln.test(i))throw new Error("invalid latin1 text")}function cn(i,e,t){const n=Ue(e);i[n]=dn(e,t-n.length-1)}function Ue(i){for(i.mark();i.readByte()!==on;);const e=i.offset;i.reset();const t=ve.decode(i.readBytes(e-i.offset-1));return i.skip(1),hn(t),t}function dn(i,e){return ve.decode(i.readBytes(e))}const R={UNKNOWN:-1,GREYSCALE:0,TRUECOLOUR:2,INDEXED_COLOUR:3,GREYSCALE_ALPHA:4,TRUECOLOUR_ALPHA:6},wt={UNKNOWN:-1,DEFLATE:0},Se={UNKNOWN:-1,ADAPTIVE:0},gt={UNKNOWN:-1,NO_INTERLACE:0,ADAM7:1},Q={NONE:0,BACKGROUND:1,PREVIOUS:2},bt={SOURCE:0,OVER:1};class un extends st{_checkCrc;_inflator;_png;_apng;_end;_hasPalette;_palette;_hasTransparency;_transparency;_compressionMethod;_filterMethod;_interlaceMethod;_colorType;_isAnimated;_numberOfFrames;_numberOfPlays;_frames;_writingDataChunks;constructor(e,t={}){super(e);const{checkCrc:n=!1}=t;this._checkCrc=n,this._inflator=new pe,this._png={width:-1,height:-1,channels:-1,data:new Uint8Array(0),depth:1,text:{}},this._apng={width:-1,height:-1,channels:-1,depth:1,numberOfFrames:1,numberOfPlays:0,text:{},frames:[]},this._end=!1,this._hasPalette=!1,this._palette=[],this._hasTransparency=!1,this._transparency=new Uint16Array(0),this._compressionMethod=wt.UNKNOWN,this._filterMethod=Se.UNKNOWN,this._interlaceMethod=gt.UNKNOWN,this._colorType=R.UNKNOWN,this._isAnimated=!1,this._numberOfFrames=1,this._numberOfPlays=0,this._frames=[],this._writingDataChunks=!1,this.setBigEndian()}decode(){for(me(this);!this._end;){const e=this.readUint32(),t=this.readChars(4);this.decodeChunk(e,t)}return this.decodeImage(),this._png}decodeApng(){for(me(this);!this._end;){const e=this.readUint32(),t=this.readChars(4);this.decodeApngChunk(e,t)}return this.decodeApngImage(),this._apng}decodeChunk(e,t){const n=this.offset;switch(t){case"IHDR":this.decodeIHDR();break;case"PLTE":this.decodePLTE(e);break;case"IDAT":this.decodeIDAT(e);break;case"IEND":this._end=!0;break;case"tRNS":this.decodetRNS(e);break;case"iCCP":this.decodeiCCP(e);break;case rn:cn(this._png.text,this,e);break;case"pHYs":this.decodepHYs();break;default:this.skip(e);break}if(this.offset-n!==e)throw new Error(`Length mismatch while decoding chunk ${t}`);this._checkCrc?be(this,e+4,t):this.skip(4)}decodeApngChunk(e,t){const n=this.offset;switch(t!=="fdAT"&&t!=="IDAT"&&this._writingDataChunks&&this.pushDataToFrame(),t){case"acTL":this.decodeACTL();break;case"fcTL":this.decodeFCTL();break;case"fdAT":this.decodeFDAT(e);break;default:this.decodeChunk(e,t),this.offset=n+e;break}if(this.offset-n!==e)throw new Error(`Length mismatch while decoding chunk ${t}`);this._checkCrc?be(this,e+4,t):this.skip(4)}decodeIHDR(){const e=this._png;e.width=this.readUint32(),e.height=this.readUint32(),e.depth=_n(this.readUint8());const t=this.readUint8();this._colorType=t;let n;switch(t){case R.GREYSCALE:n=1;break;case R.TRUECOLOUR:n=3;break;case R.INDEXED_COLOUR:n=1;break;case R.GREYSCALE_ALPHA:n=2;break;case R.TRUECOLOUR_ALPHA:n=4;break;case R.UNKNOWN:default:throw new Error(`Unknown color type: ${t}`)}if(this._png.channels=n,this._compressionMethod=this.readUint8(),this._compressionMethod!==wt.DEFLATE)throw new Error(`Unsupported compression method: ${this._compressionMethod}`);this._filterMethod=this.readUint8(),this._interlaceMethod=this.readUint8()}decodeACTL(){this._numberOfFrames=this.readUint32(),this._numberOfPlays=this.readUint32(),this._isAnimated=!0}decodeFCTL(){const e={sequenceNumber:this.readUint32(),width:this.readUint32(),height:this.readUint32(),xOffset:this.readUint32(),yOffset:this.readUint32(),delayNumber:this.readUint16(),delayDenominator:this.readUint16(),disposeOp:this.readUint8(),blendOp:this.readUint8(),data:new Uint8Array(0)};this._frames.push(e)}decodePLTE(e){if(e%3!==0)throw new RangeError(`PLTE field length must be a multiple of 3. Got ${e}`);const t=e/3;this._hasPalette=!0;const n=[];this._palette=n;for(let a=0;a<t;a++)n.push([this.readUint8(),this.readUint8(),this.readUint8()])}decodeIDAT(e){this._writingDataChunks=!0;const t=e,n=this.offset+this.byteOffset;if(this._inflator.push(new Uint8Array(this.buffer,n,t)),this._inflator.err)throw new Error(`Error while decompressing the data: ${this._inflator.err}`);this.skip(e)}decodeFDAT(e){this._writingDataChunks=!0;let t=e,n=this.offset+this.byteOffset;if(n+=4,t-=4,this._inflator.push(new Uint8Array(this.buffer,n,t)),this._inflator.err)throw new Error(`Error while decompressing the data: ${this._inflator.err}`);this.skip(e)}decodetRNS(e){switch(this._colorType){case R.GREYSCALE:case R.TRUECOLOUR:{if(e%2!==0)throw new RangeError(`tRNS chunk length must be a multiple of 2. Got ${e}`);if(e/2>this._png.width*this._png.height)throw new Error(`tRNS chunk contains more alpha values than there are pixels (${e/2} vs ${this._png.width*this._png.height})`);this._hasTransparency=!0,this._transparency=new Uint16Array(e/2);for(let t=0;t<e/2;t++)this._transparency[t]=this.readUint16();break}case R.INDEXED_COLOUR:{if(e>this._palette.length)throw new Error(`tRNS chunk contains more alpha values than there are palette colors (${e} vs ${this._palette.length})`);let t=0;for(;t<e;t++){const n=this.readByte();this._palette[t].push(n)}for(;t<this._palette.length;t++)this._palette[t].push(255);break}case R.UNKNOWN:case R.GREYSCALE_ALPHA:case R.TRUECOLOUR_ALPHA:default:throw new Error(`tRNS chunk is not supported for color type ${this._colorType}`)}}decodeiCCP(e){const t=Ue(this),n=this.readUint8();if(n!==wt.DEFLATE)throw new Error(`Unsupported iCCP compression method: ${n}`);const a=this.readBytes(e-t.length-2);this._png.iccEmbeddedProfile={name:t,profile:Gi(a)}}decodepHYs(){const e=this.readUint32(),t=this.readUint32(),n=this.readByte();this._png.resolution={x:e,y:t,unit:n}}decodeApngImage(){this._apng.width=this._png.width,this._apng.height=this._png.height,this._apng.channels=this._png.channels,this._apng.depth=this._png.depth,this._apng.numberOfFrames=this._numberOfFrames,this._apng.numberOfPlays=this._numberOfPlays,this._apng.text=this._png.text,this._apng.resolution=this._png.resolution;for(let e=0;e<this._numberOfFrames;e++){const t={sequenceNumber:this._frames[e].sequenceNumber,delayNumber:this._frames[e].delayNumber,delayDenominator:this._frames[e].delayDenominator,data:this._apng.depth===8?new Uint8Array(this._apng.width*this._apng.height*this._apng.channels):new Uint16Array(this._apng.width*this._apng.height*this._apng.channels)},n=this._frames.at(e);if(n){if(n.data=Te({data:n.data,width:n.width,height:n.height,channels:this._apng.channels,depth:this._apng.depth}),this._hasPalette&&(this._apng.palette=this._palette),this._hasTransparency&&(this._apng.transparency=this._transparency),e===0||n.xOffset===0&&n.yOffset===0&&n.width===this._png.width&&n.height===this._png.height)t.data=n.data;else{const a=this._apng.frames.at(e-1);this.disposeFrame(n,a,t),this.addFrameDataToCanvas(t,n)}this._apng.frames.push(t)}}return this._apng}disposeFrame(e,t,n){switch(e.disposeOp){case Q.NONE:break;case Q.BACKGROUND:for(let a=0;a<this._png.height;a++)for(let s=0;s<this._png.width;s++){const l=(a*e.width+s)*this._png.channels;for(let h=0;h<this._png.channels;h++)n.data[l+h]=0}break;case Q.PREVIOUS:n.data.set(t.data);break;default:throw new Error("Unknown disposeOp")}}addFrameDataToCanvas(e,t){const n=1<<this._png.depth,a=(s,l)=>{const h=((s+t.yOffset)*this._png.width+t.xOffset+l)*this._png.channels,d=(s*t.width+l)*this._png.channels;return{index:h,frameIndex:d}};switch(t.blendOp){case bt.SOURCE:for(let s=0;s<t.height;s++)for(let l=0;l<t.width;l++){const{index:h,frameIndex:d}=a(s,l);for(let r=0;r<this._png.channels;r++)e.data[h+r]=t.data[d+r]}break;case bt.OVER:for(let s=0;s<t.height;s++)for(let l=0;l<t.width;l++){const{index:h,frameIndex:d}=a(s,l);for(let r=0;r<this._png.channels;r++){const o=t.data[d+this._png.channels-1]/n,w=r%(this._png.channels-1)===0?1:t.data[d+r],u=Math.floor(o*w+(1-o)*e.data[h+r]);e.data[h+r]+=u}}break;default:throw new Error("Unknown blendOp")}}decodeImage(){if(this._inflator.err)throw new Error(`Error while decompressing the data: ${this._inflator.err}`);const e=this._isAnimated?(this._frames?.at(0)).data:this._inflator.result;if(this._filterMethod!==Se.ADAPTIVE)throw new Error(`Filter method ${this._filterMethod} not supported`);if(this._interlaceMethod===gt.NO_INTERLACE)this._png.data=Te({data:e,width:this._png.width,height:this._png.height,channels:this._png.channels,depth:this._png.depth});else if(this._interlaceMethod===gt.ADAM7)this._png.data=Ji({data:e,width:this._png.width,height:this._png.height,channels:this._png.channels,depth:this._png.depth});else throw new Error(`Interlace method ${this._interlaceMethod} not supported`);this._hasPalette&&(this._png.palette=this._palette),this._hasTransparency&&(this._png.transparency=this._transparency)}pushDataToFrame(){const e=this._inflator.result,t=this._frames.at(-1);t?t.data=e:this._frames.push({sequenceNumber:0,width:this._png.width,height:this._png.height,xOffset:0,yOffset:0,delayNumber:0,delayDenominator:0,disposeOp:Q.NONE,blendOp:bt.SOURCE,data:e}),this._inflator=new pe,this._writingDataChunks=!1}}function _n(i){if(i!==1&&i!==2&&i!==4&&i!==8&&i!==16)throw new Error(`invalid bit depth: ${i}`);return i}function pn(i,e){return new un(i,e).decode()}class Ie{#e;#t;#n;#i;#s;elevs;constructor(e,t,n,a,s,l){this.#e=t,this.#t=n,this.#n=a,this.elevs=e,this.#i=s,this.#s=l}getElevation(e,t){let n=[e,t],a=Math.floor((n[0]-this.#e.e)/this.#i),s=this.#n-Math.ceil((n[1]-this.#e.n)/this.#s),l,h,d,r,o,w,u,f=null;if(a>=0&&s>=0&&a<this.#t-1&&s<this.#n-1){r=this.elevs[s*this.#t+a],o=this.elevs[s*this.#t+a+1],w=this.elevs[s*this.#t+a+this.#t],u=this.elevs[s*this.#t+a+this.#t+1],l=this.#e.e+a*this.#i,l+this.#i,h=this.#e.n+(this.#n-1-s)*this.#s,d=h-this.#s;let _=(n[0]-l)/this.#i,U=r*(1-_)+o*_,x=w*(1-_)+u*_,g=(n[1]-d)/this.#s;f=x*(1-g)+U*g}return f}processData(e){e(this.elevs,this.#e,this.#t,this.#n,this.#i,this.#s)}getBottomLeft(){return this.#e}getNPoints(){return[this.#t,this.#n]}getSpacing(){return[this.#i,this.#s]}}class wn extends it{constructor(e){super(e)}async readTile(e){const n=await(await fetch(e,{signal:AbortSignal.timeout(3e4)})).arrayBuffer(),a=pn(n);let s,l=0;const h=new Array(a.width*a.height);for(let d=0;d<a.height;d++)for(let r=0;r<a.width;r++)s=(d*a.width+r)*a.channels,h[l++]=Math.round(a.data[s]*256+a.data[s+1]+a.data[s+2]/256-32768);return{w:a.width,h:a.height,elevs:h}}getElevation(e){const t=this.getTile(e,this.tile.z),n=this.dataTiles.get(`${t.z}/${t.x}/${t.y}`);return n?n.data.getElevation(e.e,e.n):null}getElevationFromLonLat(e){return this.getElevation(this.sphMerc.project(e))}rawTileToStoredTile(e,t){const n=e.getTopRight(),a=e.getBottomLeft(),s=(n.e-a.e)/(t.w-1),l=(n.n-a.n)/(t.h-1),h=new Ie(t.elevs,a,t.w,t.h,s,l);return{tile:e,data:h}}}class gn extends it{constructor(e){super(e)}async readTile(e){return await(await fetch(e,{signal:AbortSignal.timeout(3e4)})).json()}}class bn{e;n;constructor(e,t){this.e=e,this.n=t}toString(){return`e: ${this.e}, n: ${this.n}`}}class xt{longitude;latitude;constructor(e,t){this.longitude=e,this.latitude=t}toString(){return`longitude: ${this.longitude}, latitude: ${this.latitude}`}}class xn{demTiler;jsonTiler;constructor(e,t){this.demTiler=e,this.jsonTiler=t}async updateByLonLat(e){const t=this.demTiler.sphMerc.project(e),n=await this.demTiler.update(t),a=await this.jsonTiler.update(t);return n.forEach((s,l)=>{this.#e(s,a[l])}),a}async#e(e,t){t.data.features.forEach((a,s)=>{switch(a.geometry.type){case"LineString":const l=a.geometry;l.coordinates.length>=2&&this.#t(e,l.coordinates);break;case"MultiLineString":const h=a.geometry;for(let o of h.coordinates)o.length>=2&&this.#t(e,o);break;case"Point":a.geometry;const d=this.demTiler.sphMerc.project(new xt(a.geometry.coordinates[0],a.geometry.coordinates[1])),r=e.data?e.data.getElevation(d.e,d.n):0;r>Number.NEGATIVE_INFINITY&&(a.geometry.coordinates[2]=r)}})}#t(e,t){t.forEach(n=>{const a=this.demTiler.sphMerc.project(new xt(n[0],n[1])),s=e.data?.getElevation(a.e,a.n)??0;s>Number.NEGATIVE_INFINITY&&(n[2]=s)})}}I.Constants=O,I.DEM=Ie,I.DemApplier=xn,I.DemTiler=wn,I.EastNorth=bn,I.JsonTiler=gn,I.LonLat=xt,I.SphMercProjection=yt,I.Tile=Z,I.Tiler=it,Object.defineProperty(I,Symbol.toStringTag,{value:"Module"})}));
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "locar-tiler",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.2",
|
|
4
4
|
"description": "Tiling system for downloading geodata from APIs by Spherical Mercator XYZ tile. Particularly useful for location-based augmented reality applications as it comes with JSON and Digital Elevation Model (Terrarium DEM) support by default; works nicely with LocAR.js.",
|
|
5
5
|
"dependencies": {
|
|
6
6
|
"fast-png": "^7.0.1",
|