@eodash/eodash 5.0.0-alpha.2.8 → 5.0.0-processing

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (138) hide show
  1. package/README.md +1 -1
  2. package/core/client/App.vue +13 -1
  3. package/core/client/asWebComponent.js +13 -3
  4. package/core/client/components/DashboardLayout.vue +6 -2
  5. package/core/client/composables/DefineEodash.js +1 -1
  6. package/core/client/composables/EodashMap.js +349 -0
  7. package/core/client/composables/EodashProcess.js +575 -0
  8. package/core/client/composables/index.js +107 -24
  9. package/core/client/eodash.js +83 -10
  10. package/core/client/plugins/axios.js +8 -0
  11. package/core/client/plugins/index.js +2 -1
  12. package/core/client/store/Actions.js +63 -12
  13. package/core/client/store/States.js +19 -0
  14. package/core/client/store/stac.js +98 -8
  15. package/core/client/types.d.ts +25 -18
  16. package/core/client/utils/createLayers.js +313 -0
  17. package/core/client/utils/eodashSTAC.js +320 -170
  18. package/core/client/utils/helpers.js +369 -9
  19. package/core/client/utils/keys.js +2 -0
  20. package/core/client/utils/states.js +17 -0
  21. package/core/client/views/Dashboard.vue +17 -46
  22. package/core/client/vite-env.d.ts +1 -9
  23. package/dist/client/DashboardLayout-CVMJ4l8M.js +87 -0
  24. package/dist/client/DynamicWebComponent-Cv8n457T.js +88 -0
  25. package/dist/client/EodashDatePicker-VVkiPmpc.js +394 -0
  26. package/dist/client/EodashItemFilter-CugWNQ86.js +194 -0
  27. package/dist/client/EodashLayerControl-53WghA8G.js +110 -0
  28. package/dist/client/EodashMap-CQnOePpy.js +486 -0
  29. package/dist/client/EodashMapBtns-uaRwFtfB.js +66 -0
  30. package/dist/client/EodashProcess-cF0unIy8.js +1477 -0
  31. package/dist/client/ExportState-BT8MLAW7.js +644 -0
  32. package/dist/client/Footer-C6GUG84G.js +141 -0
  33. package/dist/client/Header-D2dtCWp8.js +437 -0
  34. package/dist/client/IframeWrapper-BgM9aU8f.js +28 -0
  35. package/dist/client/MobileLayout-BAo8Wr8T.js +1210 -0
  36. package/dist/client/PopUp-Bm01q7Ko.js +389 -0
  37. package/dist/client/VImg-B8AbetCE.js +384 -0
  38. package/dist/client/VMain-DnGlQUyr.js +43 -0
  39. package/dist/client/VOverlay-B8Qj7LRG.js +1453 -0
  40. package/dist/client/WidgetsContainer-CwXRRLS1.js +83 -0
  41. package/dist/client/asWebComponent-DUUoR7MZ.js +11621 -0
  42. package/dist/client/eo-dash.js +2 -6
  43. package/dist/client/forwardRefs-CZJhEAKW.js +245 -0
  44. package/dist/client/index-DlIO7sJ3.js +199 -0
  45. package/dist/client/ssrBoot-BP7SYRyC.js +22 -0
  46. package/dist/client/style.css +2 -2
  47. package/dist/client/transition-BiR8wMn1.js +37 -0
  48. package/dist/node/cli.js +4 -4
  49. package/dist/node/types.d.ts +2 -0
  50. package/dist/types/core/client/App.vue.d.ts +7 -0
  51. package/dist/types/core/client/asWebComponent.d.ts +9 -0
  52. package/dist/types/core/client/components/DashboardLayout.vue.d.ts +2 -0
  53. package/dist/types/core/client/components/DynamicWebComponent.vue.d.ts +18 -0
  54. package/dist/types/core/client/components/ErrorAlert.vue.d.ts +2 -0
  55. package/dist/types/core/client/components/Footer.vue.d.ts +2 -0
  56. package/dist/types/core/client/components/Header.vue.d.ts +2 -0
  57. package/dist/types/core/client/components/IframeWrapper.vue.d.ts +7 -0
  58. package/dist/types/core/client/components/Loading.vue.d.ts +2 -0
  59. package/dist/types/core/client/components/MobileLayout.vue.d.ts +2 -0
  60. package/dist/types/core/client/composables/DefineEodash.d.ts +2 -0
  61. package/dist/types/core/client/composables/DefineTemplate.d.ts +15 -0
  62. package/dist/types/core/client/composables/DefineWidgets.d.ts +14 -0
  63. package/dist/types/core/client/composables/EodashMap.d.ts +5 -0
  64. package/dist/types/core/client/composables/index.d.ts +30 -0
  65. package/dist/types/core/client/eodash.d.ts +8 -0
  66. package/dist/types/core/client/main.d.ts +2 -0
  67. package/dist/types/core/client/plugins/axios.d.ts +2 -0
  68. package/dist/types/core/client/plugins/index.d.ts +3 -0
  69. package/dist/types/core/client/plugins/vuetify.d.ts +82 -0
  70. package/dist/types/core/client/render.d.ts +1 -0
  71. package/dist/types/core/client/store/Actions.d.ts +12 -0
  72. package/dist/types/core/client/store/States.d.ts +22 -0
  73. package/dist/types/core/client/store/index.d.ts +2 -0
  74. package/dist/types/core/client/store/stac.d.ts +25 -0
  75. package/dist/types/core/client/types.d.ts +279 -0
  76. package/dist/types/core/client/utils/createLayers.d.ts +45 -0
  77. package/dist/types/core/client/utils/eodashSTAC.d.ts +82 -0
  78. package/dist/types/core/client/utils/helpers.d.ts +84 -0
  79. package/dist/types/core/client/utils/index.d.ts +2 -0
  80. package/dist/types/core/client/utils/keys.d.ts +6 -0
  81. package/dist/types/core/client/utils/states.d.ts +14 -0
  82. package/dist/types/core/client/views/Dashboard.vue.d.ts +9 -0
  83. package/dist/types/widgets/EodashDatePicker.vue.d.ts +7 -0
  84. package/dist/types/widgets/EodashItemFilter.vue.d.ts +42 -0
  85. package/dist/types/widgets/EodashLayerControl.vue.d.ts +11 -0
  86. package/dist/types/widgets/EodashLayoutSwitcher.vue.d.ts +9 -0
  87. package/dist/types/widgets/EodashMap.vue.d.ts +7 -0
  88. package/dist/types/widgets/EodashMapBtns.vue.d.ts +11 -0
  89. package/dist/types/widgets/EodashStacInfo.vue.d.ts +21 -0
  90. package/dist/types/widgets/EodashTools.vue.d.ts +15 -0
  91. package/dist/types/widgets/ExportState.vue.d.ts +7 -0
  92. package/dist/types/widgets/PopUp.vue.d.ts +22 -0
  93. package/dist/types/widgets/WidgetsContainer.vue.d.ts +7 -0
  94. package/package.json +58 -37
  95. package/widgets/EodashDatePicker.vue +128 -100
  96. package/widgets/EodashItemFilter.vue +149 -47
  97. package/widgets/EodashLayerControl.vue +98 -0
  98. package/widgets/EodashMap.vue +98 -122
  99. package/widgets/EodashMapBtns.vue +24 -7
  100. package/widgets/EodashProcess.vue +151 -0
  101. package/widgets/ExportState.vue +15 -11
  102. package/core/client/SuspensedDashboard.ce.vue +0 -105
  103. package/dist/client/DashboardLayout-CKOExc7r.js +0 -156
  104. package/dist/client/DynamicWebComponent-m1Zbbw6n.js +0 -57
  105. package/dist/client/EodashDatePicker-CGdJRGZJ.js +0 -252
  106. package/dist/client/EodashItemFilter-BjM_LHaE.js +0 -63
  107. package/dist/client/EodashMap-61UMC8sv.js +0 -86917
  108. package/dist/client/EodashMapBtns-DVITfAFx.js +0 -36
  109. package/dist/client/ExportState-DhpK09GR.js +0 -558
  110. package/dist/client/Footer-CIwjaddz.js +0 -115
  111. package/dist/client/Header-BcM-pZFi.js +0 -350
  112. package/dist/client/IframeWrapper-CAe6HPqe.js +0 -19
  113. package/dist/client/MobileLayout-DcZOQX8r.js +0 -945
  114. package/dist/client/PopUp-DCaITceG.js +0 -300
  115. package/dist/client/VImg-C-I_7puM.js +0 -291
  116. package/dist/client/VMain-Cd3P0YTG.js +0 -39
  117. package/dist/client/VOverlay-AcvFgk39.js +0 -967
  118. package/dist/client/WidgetsContainer-B0-q0EMO.js +0 -129
  119. package/dist/client/_commonjsHelpers-DaMA6jEr.js +0 -8
  120. package/dist/client/asWebComponent-zuKR9I1w.js +0 -20361
  121. package/dist/client/basedecoder-DHcBySSe-BmCFNFnw.js +0 -88
  122. package/dist/client/decoder-CP4lv0Kb-DdKalImK.js +0 -10
  123. package/dist/client/deflate-BXt-9JA_-CWfClgpK.js +0 -10
  124. package/dist/client/eodashSTAC-DGB50vNk.js +0 -2788
  125. package/dist/client/eox-itemfilter-TaBxgqq_.js +0 -7565
  126. package/dist/client/eox-stacinfo-l7ALSV90.js +0 -13969
  127. package/dist/client/forwardRefs-BnxE4iKQ.js +0 -185
  128. package/dist/client/index-hSIi5Ygk.js +0 -153
  129. package/dist/client/jpeg-BAgeD1d3-oeHbFPUL.js +0 -514
  130. package/dist/client/lerc-DzVumYtB-cTUap6k_.js +0 -1027
  131. package/dist/client/lzw-LAGDNbSC-DkP96qO9.js +0 -84
  132. package/dist/client/packbits-BlDR4Kj5-C66n1-zr.js +0 -24
  133. package/dist/client/pako.esm-CB1uQYY0-DB0PYm1P.js +0 -1081
  134. package/dist/client/raw-CMGvRjfu-BRi6E4i1.js +0 -9
  135. package/dist/client/ssrBoot-D3KF5Thc.js +0 -17
  136. package/dist/client/transition-D3a4tiJv.js +0 -34
  137. package/dist/client/webfontloader-qotgY98I.js +0 -435
  138. package/dist/client/webimage-BM_pbLN3-L2cGWK5l.js +0 -19
@@ -1,1027 +0,0 @@
1
- import { b as tA } from "./pako.esm-CB1uQYY0-DB0PYm1P.js";
2
- import { z as sA, B as gA, K as rA } from "./EodashMap-61UMC8sv.js";
3
- import { g as DA } from "./basedecoder-DHcBySSe-BmCFNFnw.js";
4
- var iA = { exports: {} };
5
- (function(W) {
6
- /* Copyright 2015-2021 Esri. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 @preserve */
7
- (function() {
8
- var u = function() {
9
- var N = {};
10
- N.defaultNoDataValue = -34027999387901484e22, N.decode = function(I, a) {
11
- a = a || {};
12
- var Q = a.encodedMaskData || a.encodedMaskData === null, g = E(I, a.inputOffset || 0, Q), r = a.noDataValue !== null ? a.noDataValue : N.defaultNoDataValue, B = d(
13
- g,
14
- a.pixelType || Float32Array,
15
- a.encodedMaskData,
16
- r,
17
- a.returnMask
18
- ), C = {
19
- width: g.width,
20
- height: g.height,
21
- pixelData: B.resultPixels,
22
- minValue: B.minValue,
23
- maxValue: g.pixels.maxValue,
24
- noDataValue: r
25
- };
26
- return B.resultMask && (C.maskData = B.resultMask), a.returnEncodedMask && g.mask && (C.encodedMaskData = g.mask.bitset ? g.mask.bitset : null), a.returnFileInfo && (C.fileInfo = m(g), a.computeUsedBitDepths && (C.fileInfo.bitDepths = z(g))), C;
27
- };
28
- var d = function(I, a, Q, g, r) {
29
- var B = 0, C = I.pixels.numBlocksX, t = I.pixels.numBlocksY, o = Math.floor(I.width / C), s = Math.floor(I.height / t), n = 2 * I.maxZError, e = Number.MAX_VALUE, i;
30
- Q = Q || (I.mask ? I.mask.bitset : null);
31
- var h, y;
32
- h = new a(I.width * I.height), r && Q && (y = new Uint8Array(I.width * I.height));
33
- for (var S = new Float32Array(o * s), f, c, G = 0; G <= t; G++) {
34
- var M = G !== t ? s : I.height % t;
35
- if (M !== 0)
36
- for (var w = 0; w <= C; w++) {
37
- var D = w !== C ? o : I.width % C;
38
- if (D !== 0) {
39
- var l = G * I.width * s + w * o, F = I.width - D, k = I.pixels.blocks[B], R, U, L;
40
- k.encoding < 2 ? (k.encoding === 0 ? R = k.rawData : (A(k.stuffedData, k.bitsPerPixel, k.numValidPixels, k.offset, n, S, I.pixels.maxValue), R = S), U = 0) : k.encoding === 2 ? L = 0 : L = k.offset;
41
- var J;
42
- if (Q)
43
- for (c = 0; c < M; c++) {
44
- for (l & 7 && (J = Q[l >> 3], J <<= l & 7), f = 0; f < D; f++)
45
- l & 7 || (J = Q[l >> 3]), J & 128 ? (y && (y[l] = 1), i = k.encoding < 2 ? R[U++] : L, e = e > i ? i : e, h[l++] = i) : (y && (y[l] = 0), h[l++] = g), J <<= 1;
46
- l += F;
47
- }
48
- else if (k.encoding < 2)
49
- for (c = 0; c < M; c++) {
50
- for (f = 0; f < D; f++)
51
- i = R[U++], e = e > i ? i : e, h[l++] = i;
52
- l += F;
53
- }
54
- else
55
- for (e = e > L ? L : e, c = 0; c < M; c++) {
56
- for (f = 0; f < D; f++)
57
- h[l++] = L;
58
- l += F;
59
- }
60
- if (k.encoding === 1 && U !== k.numValidPixels)
61
- throw "Block and Mask do not match";
62
- B++;
63
- }
64
- }
65
- }
66
- return {
67
- resultPixels: h,
68
- resultMask: y,
69
- minValue: e
70
- };
71
- }, m = function(I) {
72
- return {
73
- fileIdentifierString: I.fileIdentifierString,
74
- fileVersion: I.fileVersion,
75
- imageType: I.imageType,
76
- height: I.height,
77
- width: I.width,
78
- maxZError: I.maxZError,
79
- eofOffset: I.eofOffset,
80
- mask: I.mask ? {
81
- numBlocksX: I.mask.numBlocksX,
82
- numBlocksY: I.mask.numBlocksY,
83
- numBytes: I.mask.numBytes,
84
- maxValue: I.mask.maxValue
85
- } : null,
86
- pixels: {
87
- numBlocksX: I.pixels.numBlocksX,
88
- numBlocksY: I.pixels.numBlocksY,
89
- numBytes: I.pixels.numBytes,
90
- maxValue: I.pixels.maxValue,
91
- noDataValue: I.noDataValue
92
- }
93
- };
94
- }, z = function(I) {
95
- for (var a = I.pixels.numBlocksX * I.pixels.numBlocksY, Q = {}, g = 0; g < a; g++) {
96
- var r = I.pixels.blocks[g];
97
- r.encoding === 0 ? Q.float32 = !0 : r.encoding === 1 ? Q[r.bitsPerPixel] = !0 : Q[0] = !0;
98
- }
99
- return Object.keys(Q);
100
- }, E = function(I, a, Q) {
101
- var g = {}, r = new Uint8Array(I, a, 10);
102
- if (g.fileIdentifierString = String.fromCharCode.apply(null, r), g.fileIdentifierString.trim() !== "CntZImage")
103
- throw "Unexpected file identifier string: " + g.fileIdentifierString;
104
- a += 10;
105
- var B = new DataView(I, a, 24);
106
- if (g.fileVersion = B.getInt32(0, !0), g.imageType = B.getInt32(4, !0), g.height = B.getUint32(8, !0), g.width = B.getUint32(12, !0), g.maxZError = B.getFloat64(16, !0), a += 24, !Q)
107
- if (B = new DataView(I, a, 16), g.mask = {}, g.mask.numBlocksY = B.getUint32(0, !0), g.mask.numBlocksX = B.getUint32(4, !0), g.mask.numBytes = B.getUint32(8, !0), g.mask.maxValue = B.getFloat32(12, !0), a += 16, g.mask.numBytes > 0) {
108
- var C = new Uint8Array(Math.ceil(g.width * g.height / 8));
109
- B = new DataView(I, a, g.mask.numBytes);
110
- var t = B.getInt16(0, !0), o = 2, s = 0;
111
- do {
112
- if (t > 0)
113
- for (; t--; )
114
- C[s++] = B.getUint8(o++);
115
- else {
116
- var n = B.getUint8(o++);
117
- for (t = -t; t--; )
118
- C[s++] = n;
119
- }
120
- t = B.getInt16(o, !0), o += 2;
121
- } while (o < g.mask.numBytes);
122
- if (t !== -32768 || s < C.length)
123
- throw "Unexpected end of mask RLE encoding";
124
- g.mask.bitset = C, a += g.mask.numBytes;
125
- } else g.mask.numBytes | g.mask.numBlocksY | g.mask.maxValue || (g.mask.bitset = new Uint8Array(Math.ceil(g.width * g.height / 8)));
126
- B = new DataView(I, a, 16), g.pixels = {}, g.pixels.numBlocksY = B.getUint32(0, !0), g.pixels.numBlocksX = B.getUint32(4, !0), g.pixels.numBytes = B.getUint32(8, !0), g.pixels.maxValue = B.getFloat32(12, !0), a += 16;
127
- var e = g.pixels.numBlocksX, i = g.pixels.numBlocksY, h = e + (g.width % e > 0 ? 1 : 0), y = i + (g.height % i > 0 ? 1 : 0);
128
- g.pixels.blocks = new Array(h * y);
129
- for (var S = 0, f = 0; f < y; f++)
130
- for (var c = 0; c < h; c++) {
131
- var G = 0, M = I.byteLength - a;
132
- B = new DataView(I, a, Math.min(10, M));
133
- var w = {};
134
- g.pixels.blocks[S++] = w;
135
- var D = B.getUint8(0);
136
- if (G++, w.encoding = D & 63, w.encoding > 3)
137
- throw "Invalid block encoding (" + w.encoding + ")";
138
- if (w.encoding === 2) {
139
- a++;
140
- continue;
141
- }
142
- if (D !== 0 && D !== 2) {
143
- if (D >>= 6, w.offsetType = D, D === 2)
144
- w.offset = B.getInt8(1), G++;
145
- else if (D === 1)
146
- w.offset = B.getInt16(1, !0), G += 2;
147
- else if (D === 0)
148
- w.offset = B.getFloat32(1, !0), G += 4;
149
- else
150
- throw "Invalid block offset type";
151
- if (w.encoding === 1)
152
- if (D = B.getUint8(G), G++, w.bitsPerPixel = D & 63, D >>= 6, w.numValidPixelsType = D, D === 2)
153
- w.numValidPixels = B.getUint8(G), G++;
154
- else if (D === 1)
155
- w.numValidPixels = B.getUint16(G, !0), G += 2;
156
- else if (D === 0)
157
- w.numValidPixels = B.getUint32(G, !0), G += 4;
158
- else
159
- throw "Invalid valid pixel count type";
160
- }
161
- if (a += G, w.encoding !== 3) {
162
- var l, F;
163
- if (w.encoding === 0) {
164
- var k = (g.pixels.numBytes - 1) / 4;
165
- if (k !== Math.floor(k))
166
- throw "uncompressed block has invalid length";
167
- l = new ArrayBuffer(k * 4), F = new Uint8Array(l), F.set(new Uint8Array(I, a, k * 4));
168
- var R = new Float32Array(l);
169
- w.rawData = R, a += k * 4;
170
- } else if (w.encoding === 1) {
171
- var U = Math.ceil(w.numValidPixels * w.bitsPerPixel / 8), L = Math.ceil(U / 4);
172
- l = new ArrayBuffer(L * 4), F = new Uint8Array(l), F.set(new Uint8Array(I, a, U)), w.stuffedData = new Uint32Array(l), a += U;
173
- }
174
- }
175
- }
176
- return g.eofOffset = a, g;
177
- }, A = function(I, a, Q, g, r, B, C) {
178
- var t = (1 << a) - 1, o = 0, s, n = 0, e, i, h = Math.ceil((C - g) / r), y = I.length * 4 - Math.ceil(a * Q / 8);
179
- for (I[I.length - 1] <<= 8 * y, s = 0; s < Q; s++) {
180
- if (n === 0 && (i = I[o++], n = 32), n >= a)
181
- e = i >>> n - a & t, n -= a;
182
- else {
183
- var S = a - n;
184
- e = (i & t) << S & t, i = I[o++], n = 32 - S, e += i >>> n;
185
- }
186
- B[s] = e < h ? g + e * r : C;
187
- }
188
- return B;
189
- };
190
- return N;
191
- }(), P = /* @__PURE__ */ function() {
192
- var N = {
193
- //methods ending with 2 are for the new byte order used by Lerc2.3 and above.
194
- //originalUnstuff is used to unpack Huffman code table. code is duplicated to unstuffx for performance reasons.
195
- unstuff: function(E, A, I, a, Q, g, r, B) {
196
- var C = (1 << I) - 1, t = 0, o, s = 0, n, e, i, h, y = E.length * 4 - Math.ceil(I * a / 8);
197
- if (E[E.length - 1] <<= 8 * y, Q)
198
- for (o = 0; o < a; o++)
199
- s === 0 && (e = E[t++], s = 32), s >= I ? (n = e >>> s - I & C, s -= I) : (i = I - s, n = (e & C) << i & C, e = E[t++], s = 32 - i, n += e >>> s), A[o] = Q[n];
200
- else
201
- for (h = Math.ceil((B - g) / r), o = 0; o < a; o++)
202
- s === 0 && (e = E[t++], s = 32), s >= I ? (n = e >>> s - I & C, s -= I) : (i = I - s, n = (e & C) << i & C, e = E[t++], s = 32 - i, n += e >>> s), A[o] = n < h ? g + n * r : B;
203
- },
204
- unstuffLUT: function(E, A, I, a, Q, g) {
205
- var r = (1 << A) - 1, B = 0, C = 0, t = 0, o = 0, s = 0, n, e = [], i = E.length * 4 - Math.ceil(A * I / 8);
206
- E[E.length - 1] <<= 8 * i;
207
- var h = Math.ceil((g - a) / Q);
208
- for (C = 0; C < I; C++)
209
- o === 0 && (n = E[B++], o = 32), o >= A ? (s = n >>> o - A & r, o -= A) : (t = A - o, s = (n & r) << t & r, n = E[B++], o = 32 - t, s += n >>> o), e[C] = s < h ? a + s * Q : g;
210
- return e.unshift(a), e;
211
- },
212
- unstuff2: function(E, A, I, a, Q, g, r, B) {
213
- var C = (1 << I) - 1, t = 0, o, s = 0, n = 0, e, i, h;
214
- if (Q)
215
- for (o = 0; o < a; o++)
216
- s === 0 && (i = E[t++], s = 32, n = 0), s >= I ? (e = i >>> n & C, s -= I, n += I) : (h = I - s, e = i >>> n & C, i = E[t++], s = 32 - h, e |= (i & (1 << h) - 1) << I - h, n = h), A[o] = Q[e];
217
- else {
218
- var y = Math.ceil((B - g) / r);
219
- for (o = 0; o < a; o++)
220
- s === 0 && (i = E[t++], s = 32, n = 0), s >= I ? (e = i >>> n & C, s -= I, n += I) : (h = I - s, e = i >>> n & C, i = E[t++], s = 32 - h, e |= (i & (1 << h) - 1) << I - h, n = h), A[o] = e < y ? g + e * r : B;
221
- }
222
- return A;
223
- },
224
- unstuffLUT2: function(E, A, I, a, Q, g) {
225
- var r = (1 << A) - 1, B = 0, C = 0, t = 0, o = 0, s = 0, n = 0, e, i = [], h = Math.ceil((g - a) / Q);
226
- for (C = 0; C < I; C++)
227
- o === 0 && (e = E[B++], o = 32, n = 0), o >= A ? (s = e >>> n & r, o -= A, n += A) : (t = A - o, s = e >>> n & r, e = E[B++], o = 32 - t, s |= (e & (1 << t) - 1) << A - t, n = t), i[C] = s < h ? a + s * Q : g;
228
- return i.unshift(a), i;
229
- },
230
- originalUnstuff: function(E, A, I, a) {
231
- var Q = (1 << I) - 1, g = 0, r, B = 0, C, t, o, s = E.length * 4 - Math.ceil(I * a / 8);
232
- for (E[E.length - 1] <<= 8 * s, r = 0; r < a; r++)
233
- B === 0 && (t = E[g++], B = 32), B >= I ? (C = t >>> B - I & Q, B -= I) : (o = I - B, C = (t & Q) << o & Q, t = E[g++], B = 32 - o, C += t >>> B), A[r] = C;
234
- return A;
235
- },
236
- originalUnstuff2: function(E, A, I, a) {
237
- var Q = (1 << I) - 1, g = 0, r, B = 0, C = 0, t, o, s;
238
- for (r = 0; r < a; r++)
239
- B === 0 && (o = E[g++], B = 32, C = 0), B >= I ? (t = o >>> C & Q, B -= I, C += I) : (s = I - B, t = o >>> C & Q, o = E[g++], B = 32 - s, t |= (o & (1 << s) - 1) << I - s, C = s), A[r] = t;
240
- return A;
241
- }
242
- }, d = {
243
- HUFFMAN_LUT_BITS_MAX: 12,
244
- //use 2^12 lut, treat it like constant
245
- computeChecksumFletcher32: function(E) {
246
- for (var A = 65535, I = 65535, a = E.length, Q = Math.floor(a / 2), g = 0; Q; ) {
247
- var r = Q >= 359 ? 359 : Q;
248
- Q -= r;
249
- do
250
- A += E[g++] << 8, I += A += E[g++];
251
- while (--r);
252
- A = (A & 65535) + (A >>> 16), I = (I & 65535) + (I >>> 16);
253
- }
254
- return a & 1 && (I += A += E[g] << 8), A = (A & 65535) + (A >>> 16), I = (I & 65535) + (I >>> 16), (I << 16 | A) >>> 0;
255
- },
256
- readHeaderInfo: function(E, A) {
257
- var I = A.ptr, a = new Uint8Array(E, I, 6), Q = {};
258
- if (Q.fileIdentifierString = String.fromCharCode.apply(null, a), Q.fileIdentifierString.lastIndexOf("Lerc2", 0) !== 0)
259
- throw "Unexpected file identifier string (expect Lerc2 ): " + Q.fileIdentifierString;
260
- I += 6;
261
- var g = new DataView(E, I, 8), r = g.getInt32(0, !0);
262
- Q.fileVersion = r, I += 4, r >= 3 && (Q.checksum = g.getUint32(4, !0), I += 4), g = new DataView(E, I, 12), Q.height = g.getUint32(0, !0), Q.width = g.getUint32(4, !0), I += 8, r >= 4 ? (Q.numDims = g.getUint32(8, !0), I += 4) : Q.numDims = 1, g = new DataView(E, I, 40), Q.numValidPixel = g.getUint32(0, !0), Q.microBlockSize = g.getInt32(4, !0), Q.blobSize = g.getInt32(8, !0), Q.imageType = g.getInt32(12, !0), Q.maxZError = g.getFloat64(16, !0), Q.zMin = g.getFloat64(24, !0), Q.zMax = g.getFloat64(32, !0), I += 40, A.headerInfo = Q, A.ptr = I;
263
- var B, C;
264
- if (r >= 3 && (C = r >= 4 ? 52 : 48, B = this.computeChecksumFletcher32(new Uint8Array(E, I - C, Q.blobSize - 14)), B !== Q.checksum))
265
- throw "Checksum failed.";
266
- return !0;
267
- },
268
- checkMinMaxRanges: function(E, A) {
269
- var I = A.headerInfo, a = this.getDataTypeArray(I.imageType), Q = I.numDims * this.getDataTypeSize(I.imageType), g = this.readSubArray(E, A.ptr, a, Q), r = this.readSubArray(E, A.ptr + Q, a, Q);
270
- A.ptr += 2 * Q;
271
- var B, C = !0;
272
- for (B = 0; B < I.numDims; B++)
273
- if (g[B] !== r[B]) {
274
- C = !1;
275
- break;
276
- }
277
- return I.minValues = g, I.maxValues = r, C;
278
- },
279
- readSubArray: function(E, A, I, a) {
280
- var Q;
281
- if (I === Uint8Array)
282
- Q = new Uint8Array(E, A, a);
283
- else {
284
- var g = new ArrayBuffer(a), r = new Uint8Array(g);
285
- r.set(new Uint8Array(E, A, a)), Q = new I(g);
286
- }
287
- return Q;
288
- },
289
- readMask: function(E, A) {
290
- var I = A.ptr, a = A.headerInfo, Q = a.width * a.height, g = a.numValidPixel, r = new DataView(E, I, 4), B = {};
291
- if (B.numBytes = r.getUint32(0, !0), I += 4, (g === 0 || Q === g) && B.numBytes !== 0)
292
- throw "invalid mask";
293
- var C, t;
294
- if (g === 0)
295
- C = new Uint8Array(Math.ceil(Q / 8)), B.bitset = C, t = new Uint8Array(Q), A.pixels.resultMask = t, I += B.numBytes;
296
- else if (B.numBytes > 0) {
297
- C = new Uint8Array(Math.ceil(Q / 8)), r = new DataView(E, I, B.numBytes);
298
- var o = r.getInt16(0, !0), s = 2, n = 0, e = 0;
299
- do {
300
- if (o > 0)
301
- for (; o--; )
302
- C[n++] = r.getUint8(s++);
303
- else
304
- for (e = r.getUint8(s++), o = -o; o--; )
305
- C[n++] = e;
306
- o = r.getInt16(s, !0), s += 2;
307
- } while (s < B.numBytes);
308
- if (o !== -32768 || n < C.length)
309
- throw "Unexpected end of mask RLE encoding";
310
- t = new Uint8Array(Q);
311
- var i = 0, h = 0;
312
- for (h = 0; h < Q; h++)
313
- h & 7 ? (i = C[h >> 3], i <<= h & 7) : i = C[h >> 3], i & 128 && (t[h] = 1);
314
- A.pixels.resultMask = t, B.bitset = C, I += B.numBytes;
315
- }
316
- return A.ptr = I, A.mask = B, !0;
317
- },
318
- readDataOneSweep: function(E, A, I, a) {
319
- var Q = A.ptr, g = A.headerInfo, r = g.numDims, B = g.width * g.height, C = g.imageType, t = g.numValidPixel * d.getDataTypeSize(C) * r, o, s = A.pixels.resultMask;
320
- if (I === Uint8Array)
321
- o = new Uint8Array(E, Q, t);
322
- else {
323
- var n = new ArrayBuffer(t), e = new Uint8Array(n);
324
- e.set(new Uint8Array(E, Q, t)), o = new I(n);
325
- }
326
- if (o.length === B * r)
327
- a ? A.pixels.resultPixels = d.swapDimensionOrder(o, B, r, I, !0) : A.pixels.resultPixels = o;
328
- else {
329
- A.pixels.resultPixels = new I(B * r);
330
- var i = 0, h = 0, y = 0, S = 0;
331
- if (r > 1) {
332
- if (a) {
333
- for (h = 0; h < B; h++)
334
- if (s[h])
335
- for (S = h, y = 0; y < r; y++, S += B)
336
- A.pixels.resultPixels[S] = o[i++];
337
- } else
338
- for (h = 0; h < B; h++)
339
- if (s[h])
340
- for (S = h * r, y = 0; y < r; y++)
341
- A.pixels.resultPixels[S + y] = o[i++];
342
- } else
343
- for (h = 0; h < B; h++)
344
- s[h] && (A.pixels.resultPixels[h] = o[i++]);
345
- }
346
- return Q += t, A.ptr = Q, !0;
347
- },
348
- readHuffmanTree: function(E, A) {
349
- var I = this.HUFFMAN_LUT_BITS_MAX, a = new DataView(E, A.ptr, 16);
350
- A.ptr += 16;
351
- var Q = a.getInt32(0, !0);
352
- if (Q < 2)
353
- throw "unsupported Huffman version";
354
- var g = a.getInt32(4, !0), r = a.getInt32(8, !0), B = a.getInt32(12, !0);
355
- if (r >= B)
356
- return !1;
357
- var C = new Uint32Array(B - r);
358
- d.decodeBits(E, A, C);
359
- var t = [], o, s, n, e;
360
- for (o = r; o < B; o++)
361
- s = o - (o < g ? 0 : g), t[s] = { first: C[o - r], second: null };
362
- var i = E.byteLength - A.ptr, h = Math.ceil(i / 4), y = new ArrayBuffer(h * 4), S = new Uint8Array(y);
363
- S.set(new Uint8Array(E, A.ptr, i));
364
- var f = new Uint32Array(y), c = 0, G, M = 0;
365
- for (G = f[0], o = r; o < B; o++)
366
- s = o - (o < g ? 0 : g), e = t[s].first, e > 0 && (t[s].second = G << c >>> 32 - e, 32 - c >= e ? (c += e, c === 32 && (c = 0, M++, G = f[M])) : (c += e - 32, M++, G = f[M], t[s].second |= G >>> 32 - c));
367
- var w = 0, D = 0, l = new m();
368
- for (o = 0; o < t.length; o++)
369
- t[o] !== void 0 && (w = Math.max(w, t[o].first));
370
- w >= I ? D = I : D = w;
371
- var F = [], k, R, U, L, J, q;
372
- for (o = r; o < B; o++)
373
- if (s = o - (o < g ? 0 : g), e = t[s].first, e > 0)
374
- if (k = [e, s], e <= D)
375
- for (R = t[s].second << D - e, U = 1 << D - e, n = 0; n < U; n++)
376
- F[R | n] = k;
377
- else
378
- for (R = t[s].second, q = l, L = e - 1; L >= 0; L--)
379
- J = R >>> L & 1, J ? (q.right || (q.right = new m()), q = q.right) : (q.left || (q.left = new m()), q = q.left), L === 0 && !q.val && (q.val = k[1]);
380
- return {
381
- decodeLut: F,
382
- numBitsLUTQick: D,
383
- numBitsLUT: w,
384
- tree: l,
385
- stuffedData: f,
386
- srcPtr: M,
387
- bitPos: c
388
- };
389
- },
390
- readHuffman: function(E, A, I, a) {
391
- var Q = A.headerInfo, g = Q.numDims, r = A.headerInfo.height, B = A.headerInfo.width, C = B * r, t = this.readHuffmanTree(E, A), o = t.decodeLut, s = t.tree, n = t.stuffedData, e = t.srcPtr, i = t.bitPos, h = t.numBitsLUTQick, y = t.numBitsLUT, S = A.headerInfo.imageType === 0 ? 128 : 0, f, c, G, M = A.pixels.resultMask, w, D, l, F, k, R, U, L = 0;
392
- i > 0 && (e++, i = 0);
393
- var J = n[e], q = A.encodeMode === 1, O = new I(C * g), p = O, Y;
394
- if (g < 2 || q) {
395
- for (Y = 0; Y < g; Y++)
396
- if (g > 1 && (p = new I(O.buffer, C * Y, C), L = 0), A.headerInfo.numValidPixel === B * r)
397
- for (R = 0, F = 0; F < r; F++)
398
- for (k = 0; k < B; k++, R++) {
399
- if (c = 0, w = J << i >>> 32 - h, D = w, 32 - i < h && (w |= n[e + 1] >>> 64 - i - h, D = w), o[D])
400
- c = o[D][1], i += o[D][0];
401
- else
402
- for (w = J << i >>> 32 - y, D = w, 32 - i < y && (w |= n[e + 1] >>> 64 - i - y, D = w), f = s, U = 0; U < y; U++)
403
- if (l = w >>> y - U - 1 & 1, f = l ? f.right : f.left, !(f.left || f.right)) {
404
- c = f.val, i = i + U + 1;
405
- break;
406
- }
407
- i >= 32 && (i -= 32, e++, J = n[e]), G = c - S, q ? (k > 0 ? G += L : F > 0 ? G += p[R - B] : G += L, G &= 255, p[R] = G, L = G) : p[R] = G;
408
- }
409
- else
410
- for (R = 0, F = 0; F < r; F++)
411
- for (k = 0; k < B; k++, R++)
412
- if (M[R]) {
413
- if (c = 0, w = J << i >>> 32 - h, D = w, 32 - i < h && (w |= n[e + 1] >>> 64 - i - h, D = w), o[D])
414
- c = o[D][1], i += o[D][0];
415
- else
416
- for (w = J << i >>> 32 - y, D = w, 32 - i < y && (w |= n[e + 1] >>> 64 - i - y, D = w), f = s, U = 0; U < y; U++)
417
- if (l = w >>> y - U - 1 & 1, f = l ? f.right : f.left, !(f.left || f.right)) {
418
- c = f.val, i = i + U + 1;
419
- break;
420
- }
421
- i >= 32 && (i -= 32, e++, J = n[e]), G = c - S, q ? (k > 0 && M[R - 1] ? G += L : F > 0 && M[R - B] ? G += p[R - B] : G += L, G &= 255, p[R] = G, L = G) : p[R] = G;
422
- }
423
- } else
424
- for (R = 0, F = 0; F < r; F++)
425
- for (k = 0; k < B; k++)
426
- if (R = F * B + k, !M || M[R])
427
- for (Y = 0; Y < g; Y++, R += C) {
428
- if (c = 0, w = J << i >>> 32 - h, D = w, 32 - i < h && (w |= n[e + 1] >>> 64 - i - h, D = w), o[D])
429
- c = o[D][1], i += o[D][0];
430
- else
431
- for (w = J << i >>> 32 - y, D = w, 32 - i < y && (w |= n[e + 1] >>> 64 - i - y, D = w), f = s, U = 0; U < y; U++)
432
- if (l = w >>> y - U - 1 & 1, f = l ? f.right : f.left, !(f.left || f.right)) {
433
- c = f.val, i = i + U + 1;
434
- break;
435
- }
436
- i >= 32 && (i -= 32, e++, J = n[e]), G = c - S, p[R] = G;
437
- }
438
- A.ptr = A.ptr + (e + 1) * 4 + (i > 0 ? 4 : 0), A.pixels.resultPixels = O, g > 1 && !a && (A.pixels.resultPixels = d.swapDimensionOrder(O, C, g, I));
439
- },
440
- decodeBits: function(E, A, I, a, Q) {
441
- {
442
- var g = A.headerInfo, r = g.fileVersion, B = 0, C = E.byteLength - A.ptr >= 5 ? 5 : E.byteLength - A.ptr, t = new DataView(E, A.ptr, C), o = t.getUint8(0);
443
- B++;
444
- var s = o >> 6, n = s === 0 ? 4 : 3 - s, e = (o & 32) > 0, i = o & 31, h = 0;
445
- if (n === 1)
446
- h = t.getUint8(B), B++;
447
- else if (n === 2)
448
- h = t.getUint16(B, !0), B += 2;
449
- else if (n === 4)
450
- h = t.getUint32(B, !0), B += 4;
451
- else
452
- throw "Invalid valid pixel count type";
453
- var y = 2 * g.maxZError, S, f, c, G, M, w, D, l, F, k = g.numDims > 1 ? g.maxValues[Q] : g.zMax;
454
- if (e) {
455
- for (A.counter.lut++, l = t.getUint8(B), B++, G = Math.ceil((l - 1) * i / 8), M = Math.ceil(G / 4), f = new ArrayBuffer(M * 4), c = new Uint8Array(f), A.ptr += B, c.set(new Uint8Array(E, A.ptr, G)), D = new Uint32Array(f), A.ptr += G, F = 0; l - 1 >>> F; )
456
- F++;
457
- G = Math.ceil(h * F / 8), M = Math.ceil(G / 4), f = new ArrayBuffer(M * 4), c = new Uint8Array(f), c.set(new Uint8Array(E, A.ptr, G)), S = new Uint32Array(f), A.ptr += G, r >= 3 ? w = N.unstuffLUT2(D, i, l - 1, a, y, k) : w = N.unstuffLUT(D, i, l - 1, a, y, k), r >= 3 ? N.unstuff2(S, I, F, h, w) : N.unstuff(S, I, F, h, w);
458
- } else
459
- A.counter.bitstuffer++, F = i, A.ptr += B, F > 0 && (G = Math.ceil(h * F / 8), M = Math.ceil(G / 4), f = new ArrayBuffer(M * 4), c = new Uint8Array(f), c.set(new Uint8Array(E, A.ptr, G)), S = new Uint32Array(f), A.ptr += G, r >= 3 ? a == null ? N.originalUnstuff2(S, I, F, h) : N.unstuff2(S, I, F, h, !1, a, y, k) : a == null ? N.originalUnstuff(S, I, F, h) : N.unstuff(S, I, F, h, !1, a, y, k));
460
- }
461
- },
462
- readTiles: function(E, A, I, a) {
463
- var Q = A.headerInfo, g = Q.width, r = Q.height, B = g * r, C = Q.microBlockSize, t = Q.imageType, o = d.getDataTypeSize(t), s = Math.ceil(g / C), n = Math.ceil(r / C);
464
- A.pixels.numBlocksY = n, A.pixels.numBlocksX = s, A.pixels.ptr = 0;
465
- var e = 0, i = 0, h = 0, y = 0, S = 0, f = 0, c = 0, G = 0, M = 0, w = 0, D = 0, l = 0, F = 0, k = 0, R = 0, U = 0, L, J, q, O, p, Y, j = new I(C * C), eA = r % C || C, aA = g % C || C, AA, T, _ = Q.numDims, X, H = A.pixels.resultMask, x = A.pixels.resultPixels, oA = Q.fileVersion, CA = oA >= 5 ? 14 : 15, V, IA = Q.zMax, b;
466
- for (h = 0; h < n; h++)
467
- for (S = h !== n - 1 ? C : eA, y = 0; y < s; y++)
468
- for (f = y !== s - 1 ? C : aA, D = h * g * C + y * C, l = g - f, X = 0; X < _; X++) {
469
- if (_ > 1 ? (b = x, D = h * g * C + y * C, x = new I(A.pixels.resultPixels.buffer, B * X * o, B), IA = Q.maxValues[X]) : b = null, c = E.byteLength - A.ptr, L = new DataView(E, A.ptr, Math.min(10, c)), J = {}, U = 0, G = L.getUint8(0), U++, V = Q.fileVersion >= 5 ? G & 4 : 0, M = G >> 6 & 255, w = G >> 2 & CA, w !== (y * C >> 3 & CA) || V && X === 0)
470
- throw "integrity issue";
471
- if (Y = G & 3, Y > 3)
472
- throw A.ptr += U, "Invalid block encoding (" + Y + ")";
473
- if (Y === 2) {
474
- if (V)
475
- if (H)
476
- for (e = 0; e < S; e++)
477
- for (i = 0; i < f; i++)
478
- H[D] && (x[D] = b[D]), D++;
479
- else
480
- for (e = 0; e < S; e++)
481
- for (i = 0; i < f; i++)
482
- x[D] = b[D], D++;
483
- A.counter.constant++, A.ptr += U;
484
- continue;
485
- } else if (Y === 0) {
486
- if (V)
487
- throw "integrity issue";
488
- if (A.counter.uncompressed++, A.ptr += U, F = S * f * o, k = E.byteLength - A.ptr, F = F < k ? F : k, q = new ArrayBuffer(F % o === 0 ? F : F + o - F % o), O = new Uint8Array(q), O.set(new Uint8Array(E, A.ptr, F)), p = new I(q), R = 0, H)
489
- for (e = 0; e < S; e++) {
490
- for (i = 0; i < f; i++)
491
- H[D] && (x[D] = p[R++]), D++;
492
- D += l;
493
- }
494
- else
495
- for (e = 0; e < S; e++) {
496
- for (i = 0; i < f; i++)
497
- x[D++] = p[R++];
498
- D += l;
499
- }
500
- A.ptr += R * o;
501
- } else if (AA = d.getDataTypeUsed(V && t < 6 ? 4 : t, M), T = d.getOnePixel(J, U, AA, L), U += d.getDataTypeSize(AA), Y === 3)
502
- if (A.ptr += U, A.counter.constantoffset++, H)
503
- for (e = 0; e < S; e++) {
504
- for (i = 0; i < f; i++)
505
- H[D] && (x[D] = V ? Math.min(IA, b[D] + T) : T), D++;
506
- D += l;
507
- }
508
- else
509
- for (e = 0; e < S; e++) {
510
- for (i = 0; i < f; i++)
511
- x[D] = V ? Math.min(IA, b[D] + T) : T, D++;
512
- D += l;
513
- }
514
- else if (A.ptr += U, d.decodeBits(E, A, j, T, X), U = 0, V)
515
- if (H)
516
- for (e = 0; e < S; e++) {
517
- for (i = 0; i < f; i++)
518
- H[D] && (x[D] = j[U++] + b[D]), D++;
519
- D += l;
520
- }
521
- else
522
- for (e = 0; e < S; e++) {
523
- for (i = 0; i < f; i++)
524
- x[D] = j[U++] + b[D], D++;
525
- D += l;
526
- }
527
- else if (H)
528
- for (e = 0; e < S; e++) {
529
- for (i = 0; i < f; i++)
530
- H[D] && (x[D] = j[U++]), D++;
531
- D += l;
532
- }
533
- else
534
- for (e = 0; e < S; e++) {
535
- for (i = 0; i < f; i++)
536
- x[D++] = j[U++];
537
- D += l;
538
- }
539
- }
540
- _ > 1 && !a && (A.pixels.resultPixels = d.swapDimensionOrder(A.pixels.resultPixels, B, _, I));
541
- },
542
- /*****************
543
- * private methods (helper methods)
544
- *****************/
545
- formatFileInfo: function(E) {
546
- return {
547
- fileIdentifierString: E.headerInfo.fileIdentifierString,
548
- fileVersion: E.headerInfo.fileVersion,
549
- imageType: E.headerInfo.imageType,
550
- height: E.headerInfo.height,
551
- width: E.headerInfo.width,
552
- numValidPixel: E.headerInfo.numValidPixel,
553
- microBlockSize: E.headerInfo.microBlockSize,
554
- blobSize: E.headerInfo.blobSize,
555
- maxZError: E.headerInfo.maxZError,
556
- pixelType: d.getPixelType(E.headerInfo.imageType),
557
- eofOffset: E.eofOffset,
558
- mask: E.mask ? {
559
- numBytes: E.mask.numBytes
560
- } : null,
561
- pixels: {
562
- numBlocksX: E.pixels.numBlocksX,
563
- numBlocksY: E.pixels.numBlocksY,
564
- //"numBytes": data.pixels.numBytes,
565
- maxValue: E.headerInfo.zMax,
566
- minValue: E.headerInfo.zMin,
567
- noDataValue: E.noDataValue
568
- }
569
- };
570
- },
571
- constructConstantSurface: function(E, A) {
572
- var I = E.headerInfo.zMax, a = E.headerInfo.zMin, Q = E.headerInfo.maxValues, g = E.headerInfo.numDims, r = E.headerInfo.height * E.headerInfo.width, B = 0, C = 0, t = 0, o = E.pixels.resultMask, s = E.pixels.resultPixels;
573
- if (o)
574
- if (g > 1) {
575
- if (A)
576
- for (B = 0; B < g; B++)
577
- for (t = B * r, I = Q[B], C = 0; C < r; C++)
578
- o[C] && (s[t + C] = I);
579
- else
580
- for (C = 0; C < r; C++)
581
- if (o[C])
582
- for (t = C * g, B = 0; B < g; B++)
583
- s[t + g] = Q[B];
584
- } else
585
- for (C = 0; C < r; C++)
586
- o[C] && (s[C] = I);
587
- else if (g > 1 && a !== I)
588
- if (A)
589
- for (B = 0; B < g; B++)
590
- for (t = B * r, I = Q[B], C = 0; C < r; C++)
591
- s[t + C] = I;
592
- else
593
- for (C = 0; C < r; C++)
594
- for (t = C * g, B = 0; B < g; B++)
595
- s[t + B] = Q[B];
596
- else
597
- for (C = 0; C < r * g; C++)
598
- s[C] = I;
599
- },
600
- getDataTypeArray: function(E) {
601
- var A;
602
- switch (E) {
603
- case 0:
604
- A = Int8Array;
605
- break;
606
- case 1:
607
- A = Uint8Array;
608
- break;
609
- case 2:
610
- A = Int16Array;
611
- break;
612
- case 3:
613
- A = Uint16Array;
614
- break;
615
- case 4:
616
- A = Int32Array;
617
- break;
618
- case 5:
619
- A = Uint32Array;
620
- break;
621
- case 6:
622
- A = Float32Array;
623
- break;
624
- case 7:
625
- A = Float64Array;
626
- break;
627
- default:
628
- A = Float32Array;
629
- }
630
- return A;
631
- },
632
- getPixelType: function(E) {
633
- var A;
634
- switch (E) {
635
- case 0:
636
- A = "S8";
637
- break;
638
- case 1:
639
- A = "U8";
640
- break;
641
- case 2:
642
- A = "S16";
643
- break;
644
- case 3:
645
- A = "U16";
646
- break;
647
- case 4:
648
- A = "S32";
649
- break;
650
- case 5:
651
- A = "U32";
652
- break;
653
- case 6:
654
- A = "F32";
655
- break;
656
- case 7:
657
- A = "F64";
658
- break;
659
- default:
660
- A = "F32";
661
- }
662
- return A;
663
- },
664
- isValidPixelValue: function(E, A) {
665
- if (A == null)
666
- return !1;
667
- var I;
668
- switch (E) {
669
- case 0:
670
- I = A >= -128 && A <= 127;
671
- break;
672
- case 1:
673
- I = A >= 0 && A <= 255;
674
- break;
675
- case 2:
676
- I = A >= -32768 && A <= 32767;
677
- break;
678
- case 3:
679
- I = A >= 0 && A <= 65536;
680
- break;
681
- case 4:
682
- I = A >= -2147483648 && A <= 2147483647;
683
- break;
684
- case 5:
685
- I = A >= 0 && A <= 4294967296;
686
- break;
687
- case 6:
688
- I = A >= -34027999387901484e22 && A <= 34027999387901484e22;
689
- break;
690
- case 7:
691
- I = A >= -17976931348623157e292 && A <= 17976931348623157e292;
692
- break;
693
- default:
694
- I = !1;
695
- }
696
- return I;
697
- },
698
- getDataTypeSize: function(E) {
699
- var A = 0;
700
- switch (E) {
701
- case 0:
702
- case 1:
703
- A = 1;
704
- break;
705
- case 2:
706
- case 3:
707
- A = 2;
708
- break;
709
- case 4:
710
- case 5:
711
- case 6:
712
- A = 4;
713
- break;
714
- case 7:
715
- A = 8;
716
- break;
717
- default:
718
- A = E;
719
- }
720
- return A;
721
- },
722
- getDataTypeUsed: function(E, A) {
723
- var I = E;
724
- switch (E) {
725
- case 2:
726
- case 4:
727
- I = E - A;
728
- break;
729
- case 3:
730
- case 5:
731
- I = E - 2 * A;
732
- break;
733
- case 6:
734
- A === 0 ? I = E : A === 1 ? I = 2 : I = 1;
735
- break;
736
- case 7:
737
- A === 0 ? I = E : I = E - 2 * A + 1;
738
- break;
739
- default:
740
- I = E;
741
- break;
742
- }
743
- return I;
744
- },
745
- getOnePixel: function(E, A, I, a) {
746
- var Q = 0;
747
- switch (I) {
748
- case 0:
749
- Q = a.getInt8(A);
750
- break;
751
- case 1:
752
- Q = a.getUint8(A);
753
- break;
754
- case 2:
755
- Q = a.getInt16(A, !0);
756
- break;
757
- case 3:
758
- Q = a.getUint16(A, !0);
759
- break;
760
- case 4:
761
- Q = a.getInt32(A, !0);
762
- break;
763
- case 5:
764
- Q = a.getUInt32(A, !0);
765
- break;
766
- case 6:
767
- Q = a.getFloat32(A, !0);
768
- break;
769
- case 7:
770
- Q = a.getFloat64(A, !0);
771
- break;
772
- default:
773
- throw "the decoder does not understand this pixel type";
774
- }
775
- return Q;
776
- },
777
- swapDimensionOrder: function(E, A, I, a, Q) {
778
- var g = 0, r = 0, B = 0, C = 0, t = E;
779
- if (I > 1)
780
- if (t = new a(A * I), Q)
781
- for (g = 0; g < A; g++)
782
- for (C = g, B = 0; B < I; B++, C += A)
783
- t[C] = E[r++];
784
- else
785
- for (g = 0; g < A; g++)
786
- for (C = g, B = 0; B < I; B++, C += A)
787
- t[r++] = E[C];
788
- return t;
789
- }
790
- }, m = function(E, A, I) {
791
- this.val = E, this.left = A, this.right = I;
792
- }, z = {
793
- /*
794
- * ********removed options compared to LERC1. We can bring some of them back if needed.
795
- * removed pixel type. LERC2 is typed and doesn't require user to give pixel type
796
- * changed encodedMaskData to maskData. LERC2 's js version make it faster to use maskData directly.
797
- * removed returnMask. mask is used by LERC2 internally and is cost free. In case of user input mask, it's returned as well and has neglible cost.
798
- * removed nodatavalue. Because LERC2 pixels are typed, nodatavalue will sacrify a useful value for many types (8bit, 16bit) etc,
799
- * user has to be knowledgable enough about raster and their data to avoid usability issues. so nodata value is simply removed now.
800
- * We can add it back later if their's a clear requirement.
801
- * removed encodedMask. This option was not implemented in LercDecode. It can be done after decoding (less efficient)
802
- * removed computeUsedBitDepths.
803
- *
804
- *
805
- * response changes compared to LERC1
806
- * 1. encodedMaskData is not available
807
- * 2. noDataValue is optional (returns only if user's noDataValue is with in the valid data type range)
808
- * 3. maskData is always available
809
- */
810
- /*****************
811
- * public properties
812
- ******************/
813
- //HUFFMAN_LUT_BITS_MAX: 12, //use 2^12 lut, not configurable
814
- /*****************
815
- * public methods
816
- *****************/
817
- /**
818
- * Decode a LERC2 byte stream and return an object containing the pixel data and optional metadata.
819
- *
820
- * @param {ArrayBuffer} input The LERC input byte stream
821
- * @param {object} [options] options Decoding options
822
- * @param {number} [options.inputOffset] The number of bytes to skip in the input byte stream. A valid LERC file is expected at that position
823
- * @param {boolean} [options.returnFileInfo] If true, the return value will have a fileInfo property that contains metadata obtained from the LERC headers and the decoding process
824
- * @param {boolean} [options.returnPixelInterleavedDims] If true, returned dimensions are pixel-interleaved, a.k.a [p1_dim0, p1_dim1, p1_dimn, p2_dim0...], default is [p1_dim0, p2_dim0, ..., p1_dim1, p2_dim1...]
825
- */
826
- decode: function(E, A) {
827
- A = A || {};
828
- var I = A.noDataValue, a = 0, Q = {};
829
- if (Q.ptr = A.inputOffset || 0, Q.pixels = {}, !!d.readHeaderInfo(E, Q)) {
830
- var g = Q.headerInfo, r = g.fileVersion, B = d.getDataTypeArray(g.imageType);
831
- if (r > 5)
832
- throw "unsupported lerc version 2." + r;
833
- d.readMask(E, Q), g.numValidPixel !== g.width * g.height && !Q.pixels.resultMask && (Q.pixels.resultMask = A.maskData);
834
- var C = g.width * g.height;
835
- Q.pixels.resultPixels = new B(C * g.numDims), Q.counter = {
836
- onesweep: 0,
837
- uncompressed: 0,
838
- lut: 0,
839
- bitstuffer: 0,
840
- constant: 0,
841
- constantoffset: 0
842
- };
843
- var t = !A.returnPixelInterleavedDims;
844
- if (g.numValidPixel !== 0)
845
- if (g.zMax === g.zMin)
846
- d.constructConstantSurface(Q, t);
847
- else if (r >= 4 && d.checkMinMaxRanges(E, Q))
848
- d.constructConstantSurface(Q, t);
849
- else {
850
- var o = new DataView(E, Q.ptr, 2), s = o.getUint8(0);
851
- if (Q.ptr++, s)
852
- d.readDataOneSweep(E, Q, B, t);
853
- else if (r > 1 && g.imageType <= 1 && Math.abs(g.maxZError - 0.5) < 1e-5) {
854
- var n = o.getUint8(1);
855
- if (Q.ptr++, Q.encodeMode = n, n > 2 || r < 4 && n > 1)
856
- throw "Invalid Huffman flag " + n;
857
- n ? d.readHuffman(E, Q, B, t) : d.readTiles(E, Q, B, t);
858
- } else
859
- d.readTiles(E, Q, B, t);
860
- }
861
- Q.eofOffset = Q.ptr;
862
- var e;
863
- A.inputOffset ? (e = Q.headerInfo.blobSize + A.inputOffset - Q.ptr, Math.abs(e) >= 1 && (Q.eofOffset = A.inputOffset + Q.headerInfo.blobSize)) : (e = Q.headerInfo.blobSize - Q.ptr, Math.abs(e) >= 1 && (Q.eofOffset = Q.headerInfo.blobSize));
864
- var i = {
865
- width: g.width,
866
- height: g.height,
867
- pixelData: Q.pixels.resultPixels,
868
- minValue: g.zMin,
869
- maxValue: g.zMax,
870
- validPixelCount: g.numValidPixel,
871
- dimCount: g.numDims,
872
- dimStats: {
873
- minValues: g.minValues,
874
- maxValues: g.maxValues
875
- },
876
- maskData: Q.pixels.resultMask
877
- //noDataValue: noDataValue
878
- };
879
- if (Q.pixels.resultMask && d.isValidPixelValue(g.imageType, I)) {
880
- var h = Q.pixels.resultMask;
881
- for (a = 0; a < C; a++)
882
- h[a] || (i.pixelData[a] = I);
883
- i.noDataValue = I;
884
- }
885
- return Q.noDataValue = I, A.returnFileInfo && (i.fileInfo = d.formatFileInfo(Q)), i;
886
- }
887
- },
888
- getBandCount: function(E) {
889
- var A = 0, I = 0, a = {};
890
- for (a.ptr = 0, a.pixels = {}; I < E.byteLength - 58; )
891
- d.readHeaderInfo(E, a), I += a.headerInfo.blobSize, A++, a.ptr = I;
892
- return A;
893
- }
894
- };
895
- return z;
896
- }(), Z = function() {
897
- var N = new ArrayBuffer(4), d = new Uint8Array(N), m = new Uint32Array(N);
898
- return m[0] = 1, d[0] === 1;
899
- }(), v = {
900
- /************wrapper**********************************************/
901
- /**
902
- * A wrapper for decoding both LERC1 and LERC2 byte streams capable of handling multiband pixel blocks for various pixel types.
903
- *
904
- * @alias module:Lerc
905
- * @param {ArrayBuffer} input The LERC input byte stream
906
- * @param {object} [options] The decoding options below are optional.
907
- * @param {number} [options.inputOffset] The number of bytes to skip in the input byte stream. A valid Lerc file is expected at that position.
908
- * @param {string} [options.pixelType] (LERC1 only) Default value is F32. Valid pixel types for input are U8/S8/S16/U16/S32/U32/F32.
909
- * @param {number} [options.noDataValue] (LERC1 only). It is recommended to use the returned mask instead of setting this value.
910
- * @param {boolean} [options.returnPixelInterleavedDims] (nDim LERC2 only) If true, returned dimensions are pixel-interleaved, a.k.a [p1_dim0, p1_dim1, p1_dimn, p2_dim0...], default is [p1_dim0, p2_dim0, ..., p1_dim1, p2_dim1...]
911
- * @returns {{width, height, pixels, pixelType, mask, statistics}}
912
- * @property {number} width Width of decoded image.
913
- * @property {number} height Height of decoded image.
914
- * @property {array} pixels [band1, band2, …] Each band is a typed array of width*height.
915
- * @property {string} pixelType The type of pixels represented in the output.
916
- * @property {mask} mask Typed array with a size of width*height, or null if all pixels are valid.
917
- * @property {array} statistics [statistics_band1, statistics_band2, …] Each element is a statistics object representing min and max values
918
- **/
919
- decode: function(N, d) {
920
- if (!Z)
921
- throw "Big endian system is not supported.";
922
- d = d || {};
923
- var m = d.inputOffset || 0, z = new Uint8Array(N, m, 10), E = String.fromCharCode.apply(null, z), A, I;
924
- if (E.trim() === "CntZImage")
925
- A = u, I = 1;
926
- else if (E.substring(0, 5) === "Lerc2")
927
- A = P, I = 2;
928
- else
929
- throw "Unexpected file identifier string: " + E;
930
- for (var a = 0, Q = N.byteLength - 10, g, r = [], B, C, t = {
931
- width: 0,
932
- height: 0,
933
- pixels: [],
934
- pixelType: d.pixelType,
935
- mask: null,
936
- statistics: []
937
- }, o = 0; m < Q; ) {
938
- var s = A.decode(N, {
939
- inputOffset: m,
940
- //for both lerc1 and lerc2
941
- encodedMaskData: g,
942
- //lerc1 only
943
- maskData: C,
944
- //lerc2 only
945
- returnMask: a === 0,
946
- //lerc1 only
947
- returnEncodedMask: a === 0,
948
- //lerc1 only
949
- returnFileInfo: !0,
950
- //for both lerc1 and lerc2
951
- returnPixelInterleavedDims: d.returnPixelInterleavedDims,
952
- //for ndim lerc2 only
953
- pixelType: d.pixelType || null,
954
- //lerc1 only
955
- noDataValue: d.noDataValue || null
956
- //lerc1 only
957
- });
958
- m = s.fileInfo.eofOffset, C = s.maskData, a === 0 && (g = s.encodedMaskData, t.width = s.width, t.height = s.height, t.dimCount = s.dimCount || 1, t.pixelType = s.pixelType || s.fileInfo.pixelType, t.mask = C), I > 1 && (C && r.push(C), s.fileInfo.mask && s.fileInfo.mask.numBytes > 0 && o++), a++, t.pixels.push(s.pixelData), t.statistics.push({
959
- minValue: s.minValue,
960
- maxValue: s.maxValue,
961
- noDataValue: s.noDataValue,
962
- dimStats: s.dimStats
963
- });
964
- }
965
- var n, e, i;
966
- if (I > 1 && o > 1) {
967
- for (i = t.width * t.height, t.bandMasks = r, C = new Uint8Array(i), C.set(r[0]), n = 1; n < r.length; n++)
968
- for (B = r[n], e = 0; e < i; e++)
969
- C[e] = C[e] & B[e];
970
- t.maskData = C;
971
- }
972
- return t;
973
- }
974
- };
975
- W.exports ? W.exports = v : this.Lerc = v;
976
- })();
977
- })(iA);
978
- var nA = iA.exports;
979
- const hA = /* @__PURE__ */ rA(nA);
980
- let $, K, QA;
981
- const BA = {
982
- env: {
983
- emscripten_notify_memory_growth: function(W) {
984
- QA = new Uint8Array(K.exports.memory.buffer);
985
- }
986
- }
987
- };
988
- class wA {
989
- init() {
990
- return $ || (typeof fetch < "u" ? $ = fetch("data:application/wasm;base64," + EA).then((u) => u.arrayBuffer()).then((u) => WebAssembly.instantiate(u, BA)).then(this._init) : $ = WebAssembly.instantiate(Buffer.from(EA, "base64"), BA).then(this._init), $);
991
- }
992
- _init(u) {
993
- K = u.instance, BA.env.emscripten_notify_memory_growth(0);
994
- }
995
- decode(u, P = 0) {
996
- if (!K) throw new Error("ZSTDDecoder: Await .init() before decoding.");
997
- const Z = u.byteLength, v = K.exports.malloc(Z);
998
- QA.set(u, v), P = P || Number(K.exports.ZSTD_findDecompressedSize(v, Z));
999
- const N = K.exports.malloc(P), d = K.exports.ZSTD_decompress(N, P, v, Z), m = QA.slice(N, N + d);
1000
- return K.exports.free(v), K.exports.free(N), m;
1001
- }
1002
- }
1003
- const EA = "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IAMNACAEQQNxBEADQCACRQ0FIAAgAkF/aiICaiIDIAEgAmotAAA6AAAgA0EDcQ0ACwsgAkEDTQ0AA0AgACACQXxqIgJqIAEgAmooAgA2AgAgAkEDSw0ACwsgAkUNAgNAIAAgAkF/aiICaiABIAJqLQAAOgAAIAINAAsMAgsgAkEDTQ0AIAIhBANAIAMgASgCADYCACABQQRqIQEgA0EEaiEDIARBfGoiBEEDSw0ACyACQQNxIQILIAJFDQADQCADIAEtAAA6AAAgA0EBaiEDIAFBAWohASACQX9qIgINAAsLIAAL8wICAn8BfgJAIAJFDQAgACACaiIDQX9qIAE6AAAgACABOgAAIAJBA0kNACADQX5qIAE6AAAgACABOgABIANBfWogAToAACAAIAE6AAIgAkEHSQ0AIANBfGogAToAACAAIAE6AAMgAkEJSQ0AIABBACAAa0EDcSIEaiIDIAFB/wFxQYGChAhsIgE2AgAgAyACIARrQXxxIgRqIgJBfGogATYCACAEQQlJDQAgAyABNgIIIAMgATYCBCACQXhqIAE2AgAgAkF0aiABNgIAIARBGUkNACADIAE2AhggAyABNgIUIAMgATYCECADIAE2AgwgAkFwaiABNgIAIAJBbGogATYCACACQWhqIAE2AgAgAkFkaiABNgIAIAQgA0EEcUEYciIEayICQSBJDQAgAa0iBUIghiAFhCEFIAMgBGohAQNAIAEgBTcDGCABIAU3AxAgASAFNwMIIAEgBTcDACABQSBqIQEgAkFgaiICQR9LDQALCyAACy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAIajYCACADCy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAFajYCACADCx8AIAAgASACKAIEEAg2AgAgARAEGiAAIAJBCGo2AgQLCAAgAGdBH3MLugUBDX8jAEEQayIKJAACfyAEQQNNBEAgCkEANgIMIApBDGogAyAEEAsaIAAgASACIApBDGpBBBAVIgBBbCAAEAMbIAAgACAESxsMAQsgAEEAIAEoAgBBAXRBAmoQECENQVQgAygAACIGQQ9xIgBBCksNABogAiAAQQVqNgIAIAMgBGoiAkF8aiEMIAJBeWohDiACQXtqIRAgAEEGaiELQQQh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ASIDNgLE4AEgACgCvOABIQQgACABNgK84AEgACABIAJqNgK44AEgACABIAQgA2tqNgLA4AELpgEBAX8gACAAKALs4QEQFjYCyOABIABCADcD+OABIABCADcDuOABIABBwOABakIANwMAIABBqNAAaiIBQYyAgOAANgIAIABBADYCmOIBIABCADcDiOEBIABCAzcDgOEBIABBrNABakHgEikCADcCACAAQbTQAWpB6BIoAgA2AgAgACABNgIMIAAgAEGYIGo2AgggACAAQaAwajYCBCAAIABBEGo2AgALYQEBf0G4fyEDAkAgAUEDSQ0AIAIgABAhIgFBA3YiADYCCCACIAFBAXE2AgQgAiABQQF2QQNxIgM2AgACQCADQX9qIgFBAksNAAJAIAFBAWsOAgEAAgtBbA8LIAAhAwsgAwsMACAAIAEgAkEAEC4LiAQCA38CfiADEBYhBCAAQQBBKBAQIQAgBCACSwRAIAQPCyABRQRAQX8PCwJAAkAgA0EBRg0AIAEoAAAiBkGo6r5pRg0AQXYhAyAGQXBxQdDUtMIBRw0BQQghAyACQQhJDQEgAEEAQSgQECEAIAEoAAQhASAAQQE2AhQgACABrTcDAEEADwsgASACIAMQLyIDIAJLDQAgACADNgIYQXIhAyABIARqIgVBf2otAAAiAkEIcQ0AIAJBIHEiBkUEQEFwIQMgBS0AACIFQacBSw0BIAVBB3GtQgEgBUEDdkEKaq2GIgdCA4h+IAd8IQggBEEBaiEECyACQQZ2IQMgAkECdiEFAkAgAkEDcUF/aiICQQJLBEBBACECDAELAkACQAJAIAJBAWsOAgECAAsgASAEai0AACECIARBAWohBAwCCyABIARqLwAAIQIgBEECaiEEDAELIAEgBGooAAAhAiAEQQRqIQQLIAVBAXEhBQJ+AkACQAJAIANBf2oiA0ECTQRAIANBAWsOAgIDAQtCfyAGRQ0DGiABIARqMQAADAMLIAEgBGovAACtQoACfAwCCyABIARqKAAArQwBCyABIARqKQAACyEHIAAgBTYCICAAIAI2AhwgACAHNwMAQQAhAyAAQQA2AhQgACAHIAggBhsiBzcDCCAAIAdCgIAIIAdCgIAIVBs+AhALIAMLWwEBf0G4fyEDIAIQFiICIAFNBH8gACACakF/ai0AACIAQQNxQQJ0QaAeaigC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C0Egak8NAQsgByAHKQNoNwMQIAcgBykDYDcDCCAEIA0gB0EIaiAHQdwAaiAPIA4gESAQEB4hCwwBCyACIARqIQggBCAKEAcgAkERTwRAIARBEGohAgNAIAIgCkEQaiIKEAcgAkEQaiICIAhJDQALCyAIIAlrIQIgByATNgJcIAkgCCAOa0sEQCAJIAggEWtLBEBBbCELDAILIBAgAiAOayICaiIKIANqIBBNBEAgCCAKIAMQDxoMAgsgCCAKQQAgAmsQDyEIIAcgAiADaiIDNgJkIAggAmshCCAOIQILIAlBEE8EQCADIAhqIQMDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALDAELAkAgCUEHTQRAIAggAi0AADoAACAIIAItAAE6AAEgCCACLQACOgACIAggAi0AAzoAAyAIQQRqIAIgCUECdCIDQcAeaigCAGoiAhAXIAIgA0HgHmooAgBrIQIgBygCZCEDDAELIAggAhAMCyADQQlJDQAgAyAIaiEDIAhBCGoiCCACQQhqIgJrQQ9MBEADQCAIIAIQDCACQQhqIQIgCEEIaiIIIANJDQAMAgALAAsDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALCyAHQRhqEAQaIAsgDCALEAMiAhshDCAEIAQgC2ogAhshBCAFQX9qIgUNAAsgDBADDQFBbCEMIAdBGGoQBEECSQ0BQQAhCANAIAhBA0cEQCAAIAhBAnQiAmpBrNABaiACIAdqKAJENgIAIAhBAWohCAwBCwsgBygCXCEIC0G6fyEMIA8gCGsiACANIARrSw0AIAQEfyAEIAggABALIABqBUEACyABayEMCyAHQfAAaiQAIAwLkRcCFn8FfiMAQdABayIHJAAgByAAKALw4QEiCDYCvAEgASACaiESIAggACgCgOIBaiETAkACQCAFRQRAIAEhAwwBCyAAKALE4AEhESAAKALA4AEhFSAAKAK84AEhDyAAQQE2AozhAUEAIQgDQCAIQQNHBEAgByAIQQJ0IgJqIAAgAmpBrNABaigCADYCVCAIQQFqIQgMAQsLIAcgETYCZCAHIA82AmAgByABIA9rNgJoQWwhECAHQShqIAMgBBAGEAMNASAFQQQgBUEESBshFyAHQTxqIAdBKGogACgCABATIAdBxABqIAdBKGogACgCCBATIAdBzABqIAdB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IAdB0AFqJAAgEAslACAAQgA3AgAgAEEAOwEIIABBADoACyAAIAE2AgwgACACOgAKC7QFAQN/IwBBMGsiBCQAIABB/wFqIgVBfWohBgJAIAMvAQIEQCAEQRhqIAEgAhAGIgIQAw0BIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahASOgAAIAMgBEEIaiAEQRhqEBI6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0FIAEgBEEQaiAEQRhqEBI6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBSABIARBCGogBEEYahASOgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEjoAACABIAJqIABrIQIMAwsgAyAEQRBqIARBGGoQEjoAAiADIARBCGogBEEYahASOgADIANBBGohAwwAAAsACyAEQRhqIAEgAhAGIgIQAw0AIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahAROgAAIAMgBEEIaiAEQRhqEBE6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0EIAEgBEEQaiAEQRhqEBE6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBCABIARBCGogBEEYahAROgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEToAACABIAJqIABrIQIMAgsgAyAEQRBqIARBGGoQEToAAiADIARBCGogBEEYahAROgADIANBBGohAwwAAAsACyAEQTBqJAAgAgtpAQF/An8CQAJAIAJBB00NACABKAAAQbfIwuF+Rw0AIAAgASgABDYCmOIBQWIgAEEQaiABIAIQPiIDEAMNAhogAEKBgICAEDcDiOEBIAAgASADaiACIANrECoMAQsgACABIAIQKgtBAAsLrQMBBn8jAEGAAWsiAyQAQWIhCAJAIAJBCUkNACAAQZjQAGogAUEIaiIEIAJBeGogAEGY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wOABCwutAgIEfwF+IwBBQGoiBCQAAkACQCACQQhJDQAgASgAAEFwcUHQ1LTCAUcNACABIAIQIiEBIABCADcDCCAAQQA2AgQgACABNgIADAELIARBGGogASACEC0iAxADBEAgACADEBoMAQsgAwRAIABBuH8QGgwBCyACIAQoAjAiA2shAiABIANqIQMDQAJAIAAgAyACIARBCGoQLCIFEAMEfyAFBSACIAVBA2oiBU8NAUG4fwsQGgwCCyAGQQFqIQYgAiAFayECIAMgBWohAyAEKAIMRQ0ACyAEKAI4BEAgAkEDTQRAIABBuH8QGgwCCyADQQRqIQMLIAQoAighAiAEKQMYIQcgAEEANgIEIAAgAyABazYCACAAIAIgBmytIAcgB0J/URs3AwgLIARBQGskAAslAQF/IwBBEGsiAiQAIAIgACABEFEgAigCACEAIAJBEGokACAAC30BBH8jAEGQBGsiBCQAIARB/wE2AggCQCAEQRBqIARBCGogBEEMaiABIAIQFSIGEAMEQCAGIQUMAQtBVCEFIAQoAgwiB0EGSw0AIAMgBEEQaiAEKAIIIAcQQSIFEAMNACAAIAEgBmogAiAGayADEDwhBQsgBEGQBGokACAFC4cBAgJ/An5BABAWIQMCQANAIAEgA08EQAJAIAAoAABBcHFB0NS0wgFGBEAgACABECIiAhADRQ0BQn4PCyAAIAEQVSIEQn1WDQMgBCAFfCIFIARUIQJCfiEEIAINAyAAIAEQUiICEAMNAwsgASACayEBIAAgAmohAAwBCwtCfiAFIAEbIQQLIAQLPwIBfwF+IwBBMGsiAiQAAn5CfiACQQhqIAAgARAtDQAaQgAgAigCHEEBRg0AGiACKQMICyEDIAJBMGokACADC40BAQJ/IwBBMGsiASQAAkAgAEUNACAAKAKI4gENACABIABB/OEBaigCADYCKCABIAApAvThATcDICAAEDAgACgCqOIBIQIgASABKAIoNgIYIAEgASkDIDcDECACIAFBEGoQGyAAQQA2AqjiASABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALKgECfyMAQRBrIgAkACAAQQA2AgggAEIANwMAIAAQWCEBIABBEGokACABC4cBAQN/IwBBEGsiAiQAAkAgACgCAEUgACgCBEVzDQAgAiAAKAIINgIIIAIgACkCADcDAAJ/IAIoAgAiAQRAIAIoAghBqOMJIAERBQAMAQtBqOMJECgLIgFFDQAgASAAKQIANwL04QEgAUH84QFqIAAoAgg2AgAgARBZIAEhAwsgAkEQaiQAIAMLywEBAn8jAEEgayIBJAAgAEGBgIDAADYCtOIBIABBADYCiOIBIABBADYC7OEBIABCADcDkOIBIABBADYCpOMJIABBADYC3OIBIABCADcCzOIBIABBADYCvOIBIABBADYCxOABIABCADcCnOIBIABBpOIBakIANwIAIABBrOIBakEANgIAIAFCADcCECABQgA3AhggASABKQMYNwMIIAEgASkDEDcDACABKAIIQQh2QQFxIQIgAEEANgLg4gEgACACNgKM4gEgAUEgaiQAC3YBA38jAEEwayIBJAAgAARAIAEgAEHE0AFqIgIoAgA2AiggASAAKQK80AE3AyAgACgCACEDIAEgAigCADYCGCABIAApArzQATcDECADIAFBEGoQGyABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALzAEBAX8gACABKAK00AE2ApjiASAAIAEoAgQiAjYCwOABIAAgAjYCvOABIAAgAiABKAIIaiICNgK44AEgACACNgLE4AEgASgCuNABBEAgAEKBgICAEDcDiOEBIAAgAUGk0ABqNgIMIAAgAUGUIGo2AgggACABQZwwajYCBCAAIAFBDGo2AgAgAEGs0AFqIAFBqNABaigCADYCACAAQbDQAWogAUGs0AFqKAIANgIAIABBtNABaiABQbDQAWooAgA2AgAPCyAAQgA3A4jhAQs7ACACRQRAQbp/DwsgBEUEQEFsDwsgAiAEEGAEQCAAIAEgAiADIAQgBRBhDwsgACABIAIgAyAEIAUQZQtGAQF/IwBBEGsiBSQAIAVBCGogBBAOAn8gBS0ACQRAIAAgASACIAMgBBAyDAELIAAgASACIAMgBBA0CyEAIAVBEGokACAACzQAIAAgAyAEIAUQNiIFEAMEQCAFDwsgBSAESQR/IAEgAiADIAVqIAQgBWsgABA1BUG4fwsLRgEBfyMAQRBrIgUkACAFQQhqIAQQDgJ/IAUtAAkEQCAAIAEgAiADIAQQYgwBCyAAIAEgAiADIAQQNQshACAFQRBqJAAgAAtZAQF/QQ8hAiABIABJBEAgAUEE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", fA = new wA();
1004
- class lA extends DA {
1005
- constructor(u) {
1006
- super(), this.planarConfiguration = typeof u.PlanarConfiguration < "u" ? u.PlanarConfiguration : 1, this.samplesPerPixel = typeof u.SamplesPerPixel < "u" ? u.SamplesPerPixel : 1, this.addCompression = u.LercParameters[sA.AddCompression];
1007
- }
1008
- decodeBlock(u) {
1009
- switch (this.addCompression) {
1010
- case gA.None:
1011
- break;
1012
- case gA.Deflate:
1013
- u = tA(new Uint8Array(u)).buffer;
1014
- break;
1015
- case gA.Zstandard:
1016
- u = fA.decode(new Uint8Array(u)).buffer;
1017
- break;
1018
- default:
1019
- throw new Error(`Unsupported LERC additional compression method identifier: ${this.addCompression}`);
1020
- }
1021
- return hA.decode(u, { returnPixelInterleavedDims: this.planarConfiguration === 1 }).pixels[0].buffer;
1022
- }
1023
- }
1024
- export {
1025
- lA as default,
1026
- fA as zstd
1027
- };