blue-chestnut-solar-expert 0.0.70 → 0.0.72
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/stencil-library/{decoder-CuK4bYyT.js → decoder-CPVEW_Ka.js} +5 -5
- package/dist/stencil-library/{decoder-CuK4bYyT.js.map → decoder-CPVEW_Ka.js.map} +1 -1
- package/dist/stencil-library/{decoder-DO85tL09.js → decoder-DUMy4-YU.js} +5 -5
- package/dist/stencil-library/{decoder-DO85tL09.js.map → decoder-DUMy4-YU.js.map} +1 -1
- package/dist/stencil-library/{deflate-B_19Wwe5.js → deflate-B57bxEA2.js} +5 -5
- package/dist/stencil-library/{deflate-B_19Wwe5.js.map → deflate-B57bxEA2.js.map} +1 -1
- package/dist/stencil-library/{deflate-BnZRAamW.js → deflate-BtBNkkuY.js} +5 -5
- package/dist/stencil-library/{deflate-BnZRAamW.js.map → deflate-BtBNkkuY.js.map} +1 -1
- package/dist/stencil-library/eraser-icon.entry.js +1 -1
- package/dist/stencil-library/house-icon.entry.js +1 -1
- package/dist/stencil-library/icon-selector.entry.js +1 -1
- package/dist/stencil-library/{index-ICfDNUMe.js → index-CtdQ2GTJ.js} +3 -3
- package/dist/stencil-library/{index-ICfDNUMe.js.map → index-CtdQ2GTJ.js.map} +1 -1
- package/dist/stencil-library/index-DzvFVH7F.js +4172 -0
- package/dist/stencil-library/index-DzvFVH7F.js.map +1 -0
- package/dist/stencil-library/{jpeg-BYwBjmYM.js → jpeg-CZDb06H8.js} +5 -5
- package/dist/stencil-library/{jpeg-BYwBjmYM.js.map → jpeg-CZDb06H8.js.map} +1 -1
- package/dist/stencil-library/{jpeg-Carqigwf.js → jpeg-CbHhI4Ax.js} +5 -5
- package/dist/stencil-library/{jpeg-Carqigwf.js.map → jpeg-CbHhI4Ax.js.map} +1 -1
- package/dist/stencil-library/{lerc-C23gVCZY.js → lerc-CnIv8e0A.js} +5 -5
- package/dist/stencil-library/{lerc-BrKFrpOl.js.map → lerc-CnIv8e0A.js.map} +1 -1
- package/dist/stencil-library/{lerc-BrKFrpOl.js → lerc-yI_Z-vIH.js} +5 -5
- package/dist/stencil-library/{lerc-C23gVCZY.js.map → lerc-yI_Z-vIH.js.map} +1 -1
- package/dist/stencil-library/loading-widget.entry.js +2 -2
- package/dist/stencil-library/{lzw-Cv4Jzqw8.js → lzw-By0Ly-Um.js} +5 -5
- package/dist/stencil-library/{lzw-Cv4Jzqw8.js.map → lzw-By0Ly-Um.js.map} +1 -1
- package/dist/stencil-library/{lzw-CyjveJk_.js → lzw-uwOJU9LC.js} +5 -5
- package/dist/stencil-library/{lzw-CyjveJk_.js.map → lzw-uwOJU9LC.js.map} +1 -1
- package/dist/stencil-library/{map-draw-I6HehGjN.js → map-draw-BJErx7pC.js} +21 -21
- package/dist/stencil-library/{map-draw-I6HehGjN.js.map → map-draw-BJErx7pC.js.map} +1 -1
- package/dist/stencil-library/{map-draw-s4wyOrpW.js → map-draw-CdjJ0lhL.js} +21 -22
- package/dist/stencil-library/{map-draw-s4wyOrpW.js.map → map-draw-CdjJ0lhL.js.map} +1 -1
- package/dist/stencil-library/map-draw.entry.js +3 -3
- package/dist/stencil-library/map-selector.entry.js +2 -2
- package/dist/stencil-library/marker-icon.entry.js +1 -1
- package/dist/stencil-library/move-icon.entry.js +1 -1
- package/dist/stencil-library/octagon-minus-icon.entry.js +1 -1
- package/dist/stencil-library/{packbits-DYI_WQMn.js → packbits-CAMElV0D.js} +5 -5
- package/dist/stencil-library/{packbits-DYI_WQMn.js.map → packbits-CAMElV0D.js.map} +1 -1
- package/dist/stencil-library/{packbits-DZ08I0fK.js → packbits-z_b-uE9I.js} +5 -5
- package/dist/stencil-library/{packbits-DZ08I0fK.js.map → packbits-z_b-uE9I.js.map} +1 -1
- package/dist/stencil-library/polygon-buttons.entry.js +2 -2
- package/dist/stencil-library/polygon-information.entry.js +2 -2
- package/dist/stencil-library/{raw-DmgLt5Xw.js → raw-Czhh0DXR.js} +5 -5
- package/dist/stencil-library/{raw-DmgLt5Xw.js.map → raw-Czhh0DXR.js.map} +1 -1
- package/dist/stencil-library/{raw-DxHWSwjD.js → raw-DWOUVxSa.js} +5 -5
- package/dist/stencil-library/{raw-DxHWSwjD.js.map → raw-DWOUVxSa.js.map} +1 -1
- package/dist/stencil-library/search-icon.entry.js +1 -1
- package/dist/stencil-library/settings-icon.entry.js +1 -1
- package/dist/stencil-library/settings-modal.entry.js +2 -2
- package/dist/stencil-library/solar-expert.entry.esm.js.map +1 -1
- package/dist/stencil-library/solar-expert.entry.js +4 -4
- package/dist/stencil-library/solar-expert.entry.js.map +1 -1
- package/dist/stencil-library/solar-system-form.entry.esm.js.map +1 -1
- package/dist/stencil-library/solar-system-form.entry.js +143 -209
- package/dist/stencil-library/solar-system-form.entry.js.map +1 -1
- package/dist/stencil-library/stencil-library.esm.js +3 -3
- package/dist/stencil-library/{store-CcqrFuBK.js → store-CAMVyEnv.js} +3 -3
- package/dist/stencil-library/{store-CcqrFuBK.js.map → store-CAMVyEnv.js.map} +1 -1
- package/dist/stencil-library/store-nKI4l4pt.js +758 -0
- package/dist/stencil-library/store-nKI4l4pt.js.map +1 -0
- package/dist/stencil-library/toast-notification.entry.js +1 -1
- package/dist/stencil-library/tool-box.entry.js +2 -2
- package/dist/stencil-library/tutorial-component.entry.js +2 -2
- package/dist/stencil-library/undo-icon.entry.js +1 -1
- package/dist/stencil-library/{webimage-DjTbF9dC.js → webimage-22q9OHrk.js} +5 -5
- package/dist/stencil-library/{webimage-DjTbF9dC.js.map → webimage-22q9OHrk.js.map} +1 -1
- package/dist/stencil-library/{webimage-DpQLhKY4.js → webimage-Dsu3knYw.js} +5 -5
- package/dist/stencil-library/{webimage-DpQLhKY4.js.map → webimage-Dsu3knYw.js.map} +1 -1
- package/dist/types/components/solar-system-form/solar-system-form.d.ts +10 -6
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lerc-C23gVCZY.js","sources":["../../node_modules/lerc/LercDecode.js","../../node_modules/zstddec/dist/zstddec.modern.js","../../node_modules/geotiff/dist-module/compression/lerc.js"],"sourcesContent":["/* jshint forin: false, bitwise: false */\n/*\nCopyright 2015-2021 Esri\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\nhttp://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\nA copy of the license and additional notices are located with the\nsource distribution at:\n\nhttp://github.com/Esri/lerc/\n\nContributors: Johannes Schmid, (LERC v1)\n Chayanika Khatua, (LERC v1)\n Wenxue Ju (LERC v1, v2.x)\n*/\n\n/* 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 */\n\n/**\n * a module for decoding LERC blobs\n * @module Lerc\n */\n(function() {\n //this decoder supports all lerc versions, each version has its own class (LercDecode and Lerc2Decode). \n //the exported module handles format variation autoamtically.\n\n //the original LercDecode for Version 1\n var LercDecode = (function() {\n\n // Note: currently, this module only has an implementation for decoding LERC data, not encoding. The name of\n // the class was chosen to be future proof.\n\n var CntZImage = {};\n\n CntZImage.defaultNoDataValue = -3.4027999387901484e+38; // smallest Float32 value\n\n /**\n * Decode a LERC byte stream and return an object containing the pixel data and some required and optional\n * information about it, such as the image's width and height.\n *\n * @param {ArrayBuffer} input The LERC input byte stream\n * @param {object} [options] Decoding options, containing any of the following properties:\n * @config {number} [inputOffset = 0]\n * Skip the first inputOffset bytes of the input byte stream. A valid LERC file is expected at that position.\n * @config {Uint8Array} [encodedMask = null]\n * If specified, the decoder will not read mask information from the input and use the specified encoded\n * mask data instead. Mask header/data must not be present in the LERC byte stream in this case.\n * @config {number} [noDataValue = LercCode.defaultNoDataValue]\n * Pixel value to use for masked pixels.\n * @config {ArrayBufferView|Array} [pixelType = Float32Array]\n * The desired type of the pixelData array in the return value. Note that it is the caller's responsibility to\n * provide an appropriate noDataValue if the default pixelType is overridden.\n * @config {boolean} [returnMask = false]\n * If true, the return value will contain a maskData property of type Uint8Array which has one element per\n * pixel, the value of which is 1 or 0 depending on whether that pixel's data is present or masked. If the\n * input LERC data does not contain a mask, maskData will not be returned.\n * @config {boolean} [returnEncodedMask = false]\n * If true, the return value will contain a encodedMaskData property, which can be passed into encode() as\n * encodedMask.\n * @config {boolean} [returnFileInfo = false]\n * If true, the return value will have a fileInfo property that contains metadata obtained from the\n * LERC headers and the decoding process.\n * @config {boolean} [computeUsedBitDepths = false]\n * If true, the fileInfo property in the return value will contain the set of all block bit depths\n * encountered during decoding. Will only have an effect if returnFileInfo option is true.\n * @returns {{width, height, pixelData, minValue, maxValue, noDataValue, maskData, encodedMaskData, fileInfo}}\n */\n CntZImage.decode = function(input, options) {\n options = options || {};\n\n var skipMask = options.encodedMaskData || (options.encodedMaskData === null);\n var parsedData = parse(input, options.inputOffset || 0, skipMask);\n\n var noDataValue = (options.noDataValue !== null) ? options.noDataValue : CntZImage.defaultNoDataValue;\n\n var uncompressedData = uncompressPixelValues(parsedData, options.pixelType || Float32Array,\n options.encodedMaskData, noDataValue, options.returnMask);\n\n var result = {\n width: parsedData.width,\n height: parsedData.height,\n pixelData: uncompressedData.resultPixels,\n minValue: uncompressedData.minValue,\n maxValue: parsedData.pixels.maxValue,\n noDataValue: noDataValue\n };\n\n if (uncompressedData.resultMask) {\n result.maskData = uncompressedData.resultMask;\n }\n\n if (options.returnEncodedMask && parsedData.mask) {\n result.encodedMaskData = parsedData.mask.bitset ? parsedData.mask.bitset : null;\n }\n\n if (options.returnFileInfo) {\n result.fileInfo = formatFileInfo(parsedData);\n if (options.computeUsedBitDepths) {\n result.fileInfo.bitDepths = computeUsedBitDepths(parsedData);\n }\n }\n\n return result;\n };\n\n var uncompressPixelValues = function(data, TypedArrayClass, maskBitset, noDataValue, storeDecodedMask) {\n var blockIdx = 0;\n var numX = data.pixels.numBlocksX;\n var numY = data.pixels.numBlocksY;\n var blockWidth = Math.floor(data.width / numX);\n var blockHeight = Math.floor(data.height / numY);\n var scale = 2 * data.maxZError;\n var minValue = Number.MAX_VALUE, currentValue;\n maskBitset = maskBitset || ((data.mask) ? data.mask.bitset : null);\n\n var resultPixels, resultMask;\n resultPixels = new TypedArrayClass(data.width * data.height);\n if (storeDecodedMask && maskBitset) {\n resultMask = new Uint8Array(data.width * data.height);\n }\n var blockDataBuffer = new Float32Array(blockWidth * blockHeight);\n\n var xx, yy;\n for (var y = 0; y <= numY; y++) {\n var thisBlockHeight = (y !== numY) ? blockHeight : (data.height % numY);\n if (thisBlockHeight === 0) {\n continue;\n }\n for (var x = 0; x <= numX; x++) {\n var thisBlockWidth = (x !== numX) ? blockWidth : (data.width % numX);\n if (thisBlockWidth === 0) {\n continue;\n }\n\n var outPtr = y * data.width * blockHeight + x * blockWidth;\n var outStride = data.width - thisBlockWidth;\n\n var block = data.pixels.blocks[blockIdx];\n\n var blockData, blockPtr, constValue;\n if (block.encoding < 2) {\n // block is either uncompressed or bit-stuffed (encodings 0 and 1)\n if (block.encoding === 0) {\n // block is uncompressed\n blockData = block.rawData;\n } else {\n // block is bit-stuffed\n unstuff(block.stuffedData, block.bitsPerPixel, block.numValidPixels, block.offset, scale, blockDataBuffer, data.pixels.maxValue);\n blockData = blockDataBuffer;\n }\n blockPtr = 0;\n }\n else if (block.encoding === 2) {\n // block is all 0\n constValue = 0;\n }\n else {\n // block has constant value (encoding === 3)\n constValue = block.offset;\n }\n\n var maskByte;\n if (maskBitset) {\n for (yy = 0; yy < thisBlockHeight; yy++) {\n if (outPtr & 7) {\n //\n maskByte = maskBitset[outPtr >> 3];\n maskByte <<= outPtr & 7;\n }\n for (xx = 0; xx < thisBlockWidth; xx++) {\n if (!(outPtr & 7)) {\n // read next byte from mask\n maskByte = maskBitset[outPtr >> 3];\n }\n if (maskByte & 128) {\n // pixel data present\n if (resultMask) {\n resultMask[outPtr] = 1;\n }\n currentValue = (block.encoding < 2) ? blockData[blockPtr++] : constValue;\n minValue = minValue > currentValue ? currentValue : minValue;\n resultPixels[outPtr++] = currentValue;\n } else {\n // pixel data not present\n if (resultMask) {\n resultMask[outPtr] = 0;\n }\n resultPixels[outPtr++] = noDataValue;\n }\n maskByte <<= 1;\n }\n outPtr += outStride;\n }\n } else {\n // mask not present, simply copy block over\n if (block.encoding < 2) {\n // duplicating this code block for performance reasons\n // blockData case:\n for (yy = 0; yy < thisBlockHeight; yy++) {\n for (xx = 0; xx < thisBlockWidth; xx++) {\n currentValue = blockData[blockPtr++];\n minValue = minValue > currentValue ? currentValue : minValue;\n resultPixels[outPtr++] = currentValue;\n }\n outPtr += outStride;\n }\n }\n else {\n // constValue case:\n minValue = minValue > constValue ? constValue : minValue;\n for (yy = 0; yy < thisBlockHeight; yy++) {\n for (xx = 0; xx < thisBlockWidth; xx++) {\n resultPixels[outPtr++] = constValue;\n }\n outPtr += outStride;\n }\n }\n }\n if ((block.encoding === 1) && (blockPtr !== block.numValidPixels)) {\n throw \"Block and Mask do not match\";\n }\n blockIdx++;\n }\n }\n\n return {\n resultPixels: resultPixels,\n resultMask: resultMask,\n minValue: minValue\n };\n };\n\n var formatFileInfo = function(data) {\n return {\n \"fileIdentifierString\": data.fileIdentifierString,\n \"fileVersion\": data.fileVersion,\n \"imageType\": data.imageType,\n \"height\": data.height,\n \"width\": data.width,\n \"maxZError\": data.maxZError,\n \"eofOffset\": data.eofOffset,\n \"mask\": data.mask ? {\n \"numBlocksX\": data.mask.numBlocksX,\n \"numBlocksY\": data.mask.numBlocksY,\n \"numBytes\": data.mask.numBytes,\n \"maxValue\": data.mask.maxValue\n } : null,\n \"pixels\": {\n \"numBlocksX\": data.pixels.numBlocksX,\n \"numBlocksY\": data.pixels.numBlocksY,\n \"numBytes\": data.pixels.numBytes,\n \"maxValue\": data.pixels.maxValue,\n \"noDataValue\": data.noDataValue\n }\n };\n };\n\n var computeUsedBitDepths = function(data) {\n var numBlocks = data.pixels.numBlocksX * data.pixels.numBlocksY;\n var bitDepths = {};\n for (var i = 0; i < numBlocks; i++) {\n var block = data.pixels.blocks[i];\n if (block.encoding === 0) {\n bitDepths.float32 = true;\n } else if (block.encoding === 1) {\n bitDepths[block.bitsPerPixel] = true;\n } else {\n bitDepths[0] = true;\n }\n }\n\n return Object.keys(bitDepths);\n };\n\n var parse = function(input, fp, skipMask) {\n var data = {};\n\n // File header\n var fileIdView = new Uint8Array(input, fp, 10);\n data.fileIdentifierString = String.fromCharCode.apply(null, fileIdView);\n if (data.fileIdentifierString.trim() !== \"CntZImage\") {\n throw \"Unexpected file identifier string: \" + data.fileIdentifierString;\n }\n fp += 10;\n var view = new DataView(input, fp, 24);\n data.fileVersion = view.getInt32(0, true);\n data.imageType = view.getInt32(4, true);\n data.height = view.getUint32(8, true);\n data.width = view.getUint32(12, true);\n data.maxZError = view.getFloat64(16, true);\n fp += 24;\n\n // Mask Header\n if (!skipMask) {\n view = new DataView(input, fp, 16);\n data.mask = {};\n data.mask.numBlocksY = view.getUint32(0, true);\n data.mask.numBlocksX = view.getUint32(4, true);\n data.mask.numBytes = view.getUint32(8, true);\n data.mask.maxValue = view.getFloat32(12, true);\n fp += 16;\n\n // Mask Data\n if (data.mask.numBytes > 0) {\n var bitset = new Uint8Array(Math.ceil(data.width * data.height / 8));\n view = new DataView(input, fp, data.mask.numBytes);\n var cnt = view.getInt16(0, true);\n var ip = 2, op = 0;\n do {\n if (cnt > 0) {\n while (cnt--) { bitset[op++] = view.getUint8(ip++); }\n } else {\n var val = view.getUint8(ip++);\n cnt = -cnt;\n while (cnt--) { bitset[op++] = val; }\n }\n cnt = view.getInt16(ip, true);\n ip += 2;\n } while (ip < data.mask.numBytes);\n if ((cnt !== -32768) || (op < bitset.length)) {\n throw \"Unexpected end of mask RLE encoding\";\n }\n data.mask.bitset = bitset;\n fp += data.mask.numBytes;\n }\n else if ((data.mask.numBytes | data.mask.numBlocksY | data.mask.maxValue) === 0) { // Special case, all nodata\n data.mask.bitset = new Uint8Array(Math.ceil(data.width * data.height / 8));\n }\n }\n\n // Pixel Header\n view = new DataView(input, fp, 16);\n data.pixels = {};\n data.pixels.numBlocksY = view.getUint32(0, true);\n data.pixels.numBlocksX = view.getUint32(4, true);\n data.pixels.numBytes = view.getUint32(8, true);\n data.pixels.maxValue = view.getFloat32(12, true);\n fp += 16;\n\n var numBlocksX = data.pixels.numBlocksX;\n var numBlocksY = data.pixels.numBlocksY;\n // the number of blocks specified in the header does not take into account the blocks at the end of\n // each row/column with a special width/height that make the image complete in case the width is not\n // evenly divisible by the number of blocks.\n var actualNumBlocksX = numBlocksX + ((data.width % numBlocksX) > 0 ? 1 : 0);\n var actualNumBlocksY = numBlocksY + ((data.height % numBlocksY) > 0 ? 1 : 0);\n data.pixels.blocks = new Array(actualNumBlocksX * actualNumBlocksY);\n var blockI = 0;\n for (var blockY = 0; blockY < actualNumBlocksY; blockY++) {\n for (var blockX = 0; blockX < actualNumBlocksX; blockX++) {\n\n // Block\n var size = 0;\n var bytesLeft = input.byteLength - fp;\n view = new DataView(input, fp, Math.min(10, bytesLeft));\n var block = {};\n data.pixels.blocks[blockI++] = block;\n var headerByte = view.getUint8(0); size++;\n block.encoding = headerByte & 63;\n if (block.encoding > 3) {\n throw \"Invalid block encoding (\" + block.encoding + \")\";\n }\n if (block.encoding === 2) {\n fp++;\n continue;\n }\n if ((headerByte !== 0) && (headerByte !== 2)) {\n headerByte >>= 6;\n block.offsetType = headerByte;\n if (headerByte === 2) {\n block.offset = view.getInt8(1); size++;\n } else if (headerByte === 1) {\n block.offset = view.getInt16(1, true); size += 2;\n } else if (headerByte === 0) {\n block.offset = view.getFloat32(1, true); size += 4;\n } else {\n throw \"Invalid block offset type\";\n }\n\n if (block.encoding === 1) {\n headerByte = view.getUint8(size); size++;\n block.bitsPerPixel = headerByte & 63;\n headerByte >>= 6;\n block.numValidPixelsType = headerByte;\n if (headerByte === 2) {\n block.numValidPixels = view.getUint8(size); size++;\n } else if (headerByte === 1) {\n block.numValidPixels = view.getUint16(size, true); size += 2;\n } else if (headerByte === 0) {\n block.numValidPixels = view.getUint32(size, true); size += 4;\n } else {\n throw \"Invalid valid pixel count type\";\n }\n }\n }\n fp += size;\n\n if (block.encoding === 3) {\n continue;\n }\n\n var arrayBuf, store8;\n if (block.encoding === 0) {\n var numPixels = (data.pixels.numBytes - 1) / 4;\n if (numPixels !== Math.floor(numPixels)) {\n throw \"uncompressed block has invalid length\";\n }\n arrayBuf = new ArrayBuffer(numPixels * 4);\n store8 = new Uint8Array(arrayBuf);\n store8.set(new Uint8Array(input, fp, numPixels * 4));\n var rawData = new Float32Array(arrayBuf);\n block.rawData = rawData;\n fp += numPixels * 4;\n } else if (block.encoding === 1) {\n var dataBytes = Math.ceil(block.numValidPixels * block.bitsPerPixel / 8);\n var dataWords = Math.ceil(dataBytes / 4);\n arrayBuf = new ArrayBuffer(dataWords * 4);\n store8 = new Uint8Array(arrayBuf);\n store8.set(new Uint8Array(input, fp, dataBytes));\n block.stuffedData = new Uint32Array(arrayBuf);\n fp += dataBytes;\n }\n }\n }\n data.eofOffset = fp;\n return data;\n };\n\n var unstuff = function(src, bitsPerPixel, numPixels, offset, scale, dest, maxValue) {\n var bitMask = (1 << bitsPerPixel) - 1;\n var i = 0, o;\n var bitsLeft = 0;\n var n, buffer;\n var nmax = Math.ceil((maxValue - offset) / scale);\n // get rid of trailing bytes that are already part of next block\n var numInvalidTailBytes = src.length * 4 - Math.ceil(bitsPerPixel * numPixels / 8);\n src[src.length - 1] <<= 8 * numInvalidTailBytes;\n\n for (o = 0; o < numPixels; o++) {\n if (bitsLeft === 0) {\n buffer = src[i++];\n bitsLeft = 32;\n }\n if (bitsLeft >= bitsPerPixel) {\n n = (buffer >>> (bitsLeft - bitsPerPixel)) & bitMask;\n bitsLeft -= bitsPerPixel;\n } else {\n var missingBits = (bitsPerPixel - bitsLeft);\n n = ((buffer & bitMask) << missingBits) & bitMask;\n buffer = src[i++];\n bitsLeft = 32 - missingBits;\n n += (buffer >>> bitsLeft);\n }\n //pixel values may exceed max due to quantization\n dest[o] = n < nmax ? offset + n * scale : maxValue;\n }\n return dest;\n };\n\n return CntZImage;\n })();\n\n //version 2. Supports 2.1, 2.2, 2.3\n var Lerc2Decode = (function() {\n \"use strict\";\n // Note: currently, this module only has an implementation for decoding LERC data, not encoding. The name of\n // the class was chosen to be future proof, following LercDecode.\n\n /*****************************************\n * private static class bitsutffer used by Lerc2Decode\n *******************************************/\n var BitStuffer = {\n //methods ending with 2 are for the new byte order used by Lerc2.3 and above.\n //originalUnstuff is used to unpack Huffman code table. code is duplicated to unstuffx for performance reasons.\n unstuff: function(src, dest, bitsPerPixel, numPixels, lutArr, offset, scale, maxValue) {\n var bitMask = (1 << bitsPerPixel) - 1;\n var i = 0, o;\n var bitsLeft = 0;\n var n, buffer, missingBits, nmax;\n\n // get rid of trailing bytes that are already part of next block\n var numInvalidTailBytes = src.length * 4 - Math.ceil(bitsPerPixel * numPixels / 8);\n src[src.length - 1] <<= 8 * numInvalidTailBytes;\n if (lutArr) {\n for (o = 0; o < numPixels; o++) {\n if (bitsLeft === 0) {\n buffer = src[i++];\n bitsLeft = 32;\n }\n if (bitsLeft >= bitsPerPixel) {\n n = (buffer >>> (bitsLeft - bitsPerPixel)) & bitMask;\n bitsLeft -= bitsPerPixel;\n }\n else {\n missingBits = (bitsPerPixel - bitsLeft);\n n = ((buffer & bitMask) << missingBits) & bitMask;\n buffer = src[i++];\n bitsLeft = 32 - missingBits;\n n += (buffer >>> bitsLeft);\n }\n dest[o] = lutArr[n];//offset + lutArr[n] * scale;\n }\n }\n else {\n nmax = Math.ceil((maxValue - offset) / scale);\n for (o = 0; o < numPixels; o++) {\n if (bitsLeft === 0) {\n buffer = src[i++];\n bitsLeft = 32;\n }\n if (bitsLeft >= bitsPerPixel) {\n n = (buffer >>> (bitsLeft - bitsPerPixel)) & bitMask;\n bitsLeft -= bitsPerPixel;\n }\n else {\n missingBits = (bitsPerPixel - bitsLeft);\n n = ((buffer & bitMask) << missingBits) & bitMask;\n buffer = src[i++];\n bitsLeft = 32 - missingBits;\n n += (buffer >>> bitsLeft);\n }\n //pixel values may exceed max due to quantization\n dest[o] = n < nmax ? offset + n * scale : maxValue;\n }\n }\n },\n\n unstuffLUT: function(src, bitsPerPixel, numPixels, offset, scale, maxValue) {\n var bitMask = (1 << bitsPerPixel) - 1;\n var i = 0, o = 0, missingBits = 0, bitsLeft = 0, n = 0;\n var buffer;\n var dest = [];\n\n // get rid of trailing bytes that are already part of next block\n var numInvalidTailBytes = src.length * 4 - Math.ceil(bitsPerPixel * numPixels / 8);\n src[src.length - 1] <<= 8 * numInvalidTailBytes;\n\n var nmax = Math.ceil((maxValue - offset) / scale);\n for (o = 0; o < numPixels; o++) {\n if (bitsLeft === 0) {\n buffer = src[i++];\n bitsLeft = 32;\n }\n if (bitsLeft >= bitsPerPixel) {\n n = (buffer >>> (bitsLeft - bitsPerPixel)) & bitMask;\n bitsLeft -= bitsPerPixel;\n } else {\n missingBits = (bitsPerPixel - bitsLeft);\n n = ((buffer & bitMask) << missingBits) & bitMask;\n buffer = src[i++];\n bitsLeft = 32 - missingBits;\n n += (buffer >>> bitsLeft);\n }\n //dest.push(n);\n dest[o] = n < nmax ? offset + n * scale : maxValue;\n }\n dest.unshift(offset);//1st one\n return dest;\n },\n\n unstuff2: function(src, dest, bitsPerPixel, numPixels, lutArr, offset, scale, maxValue) {\n var bitMask = (1 << bitsPerPixel) - 1;\n var i = 0, o;\n var bitsLeft = 0, bitPos = 0;\n var n, buffer, missingBits;\n if (lutArr) {\n for (o = 0; o < numPixels; o++) {\n if (bitsLeft === 0) {\n buffer = src[i++];\n bitsLeft = 32;\n bitPos = 0;\n }\n if (bitsLeft >= bitsPerPixel) {\n n = ((buffer >>> bitPos) & bitMask);\n bitsLeft -= bitsPerPixel;\n bitPos += bitsPerPixel;\n } else {\n missingBits = (bitsPerPixel - bitsLeft);\n n = (buffer >>> bitPos) & bitMask;\n buffer = src[i++];\n bitsLeft = 32 - missingBits;\n n |= (buffer & ((1 << missingBits) - 1)) << (bitsPerPixel - missingBits);\n bitPos = missingBits;\n }\n dest[o] = lutArr[n];\n }\n }\n else {\n var nmax = Math.ceil((maxValue - offset) / scale);\n for (o = 0; o < numPixels; o++) {\n if (bitsLeft === 0) {\n buffer = src[i++];\n bitsLeft = 32;\n bitPos = 0;\n }\n if (bitsLeft >= bitsPerPixel) {\n //no unsigned left shift\n n = ((buffer >>> bitPos) & bitMask);\n bitsLeft -= bitsPerPixel;\n bitPos += bitsPerPixel;\n } else {\n missingBits = (bitsPerPixel - bitsLeft);\n n = (buffer >>> bitPos) & bitMask;//((buffer & bitMask) << missingBits) & bitMask;\n buffer = src[i++];\n bitsLeft = 32 - missingBits;\n n |= (buffer & ((1 << missingBits) - 1)) << (bitsPerPixel - missingBits);\n bitPos = missingBits;\n }\n //pixel values may exceed max due to quantization\n dest[o] = n < nmax ? offset + n * scale : maxValue;\n }\n }\n return dest;\n },\n\n unstuffLUT2: function(src, bitsPerPixel, numPixels, offset, scale, maxValue) {\n var bitMask = (1 << bitsPerPixel) - 1;\n var i = 0, o = 0, missingBits = 0, bitsLeft = 0, n = 0, bitPos = 0;\n var buffer;\n var dest = [];\n var nmax = Math.ceil((maxValue - offset) / scale);\n for (o = 0; o < numPixels; o++) {\n if (bitsLeft === 0) {\n buffer = src[i++];\n bitsLeft = 32;\n bitPos = 0;\n }\n if (bitsLeft >= bitsPerPixel) {\n //no unsigned left shift\n n = ((buffer >>> bitPos) & bitMask);\n bitsLeft -= bitsPerPixel;\n bitPos += bitsPerPixel;\n } else {\n missingBits = (bitsPerPixel - bitsLeft);\n n = (buffer >>> bitPos) & bitMask;//((buffer & bitMask) << missingBits) & bitMask;\n buffer = src[i++];\n bitsLeft = 32 - missingBits;\n n |= (buffer & ((1 << missingBits) - 1)) << (bitsPerPixel - missingBits);\n bitPos = missingBits;\n }\n //dest.push(n);\n dest[o] = n < nmax ? offset + n * scale : maxValue;\n }\n dest.unshift(offset);\n return dest;\n },\n\n originalUnstuff: function(src, dest, bitsPerPixel, numPixels) {\n var bitMask = (1 << bitsPerPixel) - 1;\n var i = 0, o;\n var bitsLeft = 0;\n var n, buffer, missingBits;\n\n // get rid of trailing bytes that are already part of next block\n var numInvalidTailBytes = src.length * 4 - Math.ceil(bitsPerPixel * numPixels / 8);\n src[src.length - 1] <<= 8 * numInvalidTailBytes;\n\n for (o = 0; o < numPixels; o++) {\n if (bitsLeft === 0) {\n buffer = src[i++];\n bitsLeft = 32;\n }\n if (bitsLeft >= bitsPerPixel) {\n n = (buffer >>> (bitsLeft - bitsPerPixel)) & bitMask;\n bitsLeft -= bitsPerPixel;\n }\n else {\n missingBits = (bitsPerPixel - bitsLeft);\n n = ((buffer & bitMask) << missingBits) & bitMask;\n buffer = src[i++];\n bitsLeft = 32 - missingBits;\n n += (buffer >>> bitsLeft);\n }\n dest[o] = n;\n }\n return dest;\n },\n\n originalUnstuff2: function(src, dest, bitsPerPixel, numPixels) {\n var bitMask = (1 << bitsPerPixel) - 1;\n var i = 0, o;\n var bitsLeft = 0, bitPos = 0;\n var n, buffer, missingBits;\n //micro-optimizations\n for (o = 0; o < numPixels; o++) {\n if (bitsLeft === 0) {\n buffer = src[i++];\n bitsLeft = 32;\n bitPos = 0;\n }\n if (bitsLeft >= bitsPerPixel) {\n //no unsigned left shift\n n = ((buffer >>> bitPos) & bitMask);\n bitsLeft -= bitsPerPixel;\n bitPos += bitsPerPixel;\n } else {\n missingBits = (bitsPerPixel - bitsLeft);\n n = (buffer >>> bitPos) & bitMask;//((buffer & bitMask) << missingBits) & bitMask;\n buffer = src[i++];\n bitsLeft = 32 - missingBits;\n n |= (buffer & ((1 << missingBits) - 1)) << (bitsPerPixel - missingBits);\n bitPos = missingBits;\n }\n dest[o] = n;\n }\n return dest;\n }\n };\n\n /*****************************************\n *private static class used by Lerc2Decode\n ******************************************/\n var Lerc2Helpers = {\n HUFFMAN_LUT_BITS_MAX: 12, //use 2^12 lut, treat it like constant\n computeChecksumFletcher32: function(input) {\n\n var sum1 = 0xffff, sum2 = 0xffff;\n var len = input.length;\n var words = Math.floor(len / 2);\n var i = 0;\n while (words) {\n var tlen = (words >= 359) ? 359 : words;\n words -= tlen;\n do {\n sum1 += (input[i++] << 8);\n sum2 += sum1 += input[i++];\n } while (--tlen);\n\n sum1 = (sum1 & 0xffff) + (sum1 >>> 16);\n sum2 = (sum2 & 0xffff) + (sum2 >>> 16);\n }\n\n // add the straggler byte if it exists\n if (len & 1) {\n sum2 += sum1 += (input[i] << 8);\n }\n // second reduction step to reduce sums to 16 bits\n sum1 = (sum1 & 0xffff) + (sum1 >>> 16);\n sum2 = (sum2 & 0xffff) + (sum2 >>> 16);\n\n return (sum2 << 16 | sum1) >>> 0;\n },\n\n readHeaderInfo: function(input, data) {\n var ptr = data.ptr;\n var fileIdView = new Uint8Array(input, ptr, 6);\n var headerInfo = {};\n headerInfo.fileIdentifierString = String.fromCharCode.apply(null, fileIdView);\n if (headerInfo.fileIdentifierString.lastIndexOf(\"Lerc2\", 0) !== 0) {\n throw \"Unexpected file identifier string (expect Lerc2 ): \" + headerInfo.fileIdentifierString;\n }\n ptr += 6;\n var view = new DataView(input, ptr, 8);\n var fileVersion = view.getInt32(0, true);\n headerInfo.fileVersion = fileVersion;\n ptr += 4;\n if (fileVersion >= 3) {\n headerInfo.checksum = view.getUint32(4, true); //nrows\n ptr += 4;\n }\n\n //keys start from here\n view = new DataView(input, ptr, 12);\n headerInfo.height = view.getUint32(0, true); //nrows\n headerInfo.width = view.getUint32(4, true); //ncols\n ptr += 8;\n if (fileVersion >= 4) {\n headerInfo.numDims = view.getUint32(8, true);\n ptr += 4;\n }\n else {\n headerInfo.numDims = 1;\n }\n\n view = new DataView(input, ptr, 40);\n headerInfo.numValidPixel = view.getUint32(0, true);\n headerInfo.microBlockSize = view.getInt32(4, true);\n headerInfo.blobSize = view.getInt32(8, true);\n headerInfo.imageType = view.getInt32(12, true);\n\n headerInfo.maxZError = view.getFloat64(16, true);\n headerInfo.zMin = view.getFloat64(24, true);\n headerInfo.zMax = view.getFloat64(32, true);\n ptr += 40;\n data.headerInfo = headerInfo;\n data.ptr = ptr;\n\n var checksum, keyLength;\n if (fileVersion >= 3) {\n keyLength = fileVersion >= 4 ? 52 : 48;\n checksum = this.computeChecksumFletcher32(new Uint8Array(input, ptr - keyLength, headerInfo.blobSize - 14));\n if (checksum !== headerInfo.checksum) {\n throw \"Checksum failed.\";\n }\n }\n return true;\n },\n\n checkMinMaxRanges: function(input, data) {\n var headerInfo = data.headerInfo;\n var OutPixelTypeArray = this.getDataTypeArray(headerInfo.imageType);\n var rangeBytes = headerInfo.numDims * this.getDataTypeSize(headerInfo.imageType);\n var minValues = this.readSubArray(input, data.ptr, OutPixelTypeArray, rangeBytes);\n var maxValues = this.readSubArray(input, data.ptr + rangeBytes, OutPixelTypeArray, rangeBytes);\n data.ptr += (2 * rangeBytes);\n var i, equal = true;\n for (i = 0; i < headerInfo.numDims; i++) {\n if (minValues[i] !== maxValues[i]) {\n equal = false;\n break;\n }\n }\n headerInfo.minValues = minValues;\n headerInfo.maxValues = maxValues;\n return equal;\n },\n\n readSubArray: function(input, ptr, OutPixelTypeArray, numBytes) {\n var rawData;\n if (OutPixelTypeArray === Uint8Array) {\n rawData = new Uint8Array(input, ptr, numBytes);\n }\n else {\n var arrayBuf = new ArrayBuffer(numBytes);\n var store8 = new Uint8Array(arrayBuf);\n store8.set(new Uint8Array(input, ptr, numBytes));\n rawData = new OutPixelTypeArray(arrayBuf);\n }\n return rawData;\n },\n\n readMask: function(input, data) {\n var ptr = data.ptr;\n var headerInfo = data.headerInfo;\n var numPixels = headerInfo.width * headerInfo.height;\n var numValidPixel = headerInfo.numValidPixel;\n\n var view = new DataView(input, ptr, 4);\n var mask = {};\n mask.numBytes = view.getUint32(0, true);\n ptr += 4;\n\n // Mask Data\n if ((0 === numValidPixel || numPixels === numValidPixel) && 0 !== mask.numBytes) {\n throw (\"invalid mask\");\n }\n var bitset, resultMask;\n if (numValidPixel === 0) {\n bitset = new Uint8Array(Math.ceil(numPixels / 8));\n mask.bitset = bitset;\n resultMask = new Uint8Array(numPixels);\n data.pixels.resultMask = resultMask;\n ptr += mask.numBytes;\n }// ????? else if (data.mask.numBytes > 0 && data.mask.numBytes< data.numValidPixel) {\n else if (mask.numBytes > 0) {\n bitset = new Uint8Array(Math.ceil(numPixels / 8));\n view = new DataView(input, ptr, mask.numBytes);\n var cnt = view.getInt16(0, true);\n var ip = 2, op = 0, val = 0;\n do {\n if (cnt > 0) {\n while (cnt--) { bitset[op++] = view.getUint8(ip++); }\n } else {\n val = view.getUint8(ip++);\n cnt = -cnt;\n while (cnt--) { bitset[op++] = val; }\n }\n cnt = view.getInt16(ip, true);\n ip += 2;\n } while (ip < mask.numBytes);\n if ((cnt !== -32768) || (op < bitset.length)) {\n throw \"Unexpected end of mask RLE encoding\";\n }\n\n resultMask = new Uint8Array(numPixels);\n var mb = 0, k = 0;\n\n for (k = 0; k < numPixels; k++) {\n if (k & 7) {\n mb = bitset[k >> 3];\n mb <<= k & 7;\n }\n else {\n mb = bitset[k >> 3];\n }\n if (mb & 128) {\n resultMask[k] = 1;\n }\n }\n data.pixels.resultMask = resultMask;\n\n mask.bitset = bitset;\n ptr += mask.numBytes;\n }\n data.ptr = ptr;\n data.mask = mask;\n return true;\n },\n\n readDataOneSweep: function(input, data, OutPixelTypeArray, useBSQForOutputDim) {\n var ptr = data.ptr;\n var headerInfo = data.headerInfo;\n var numDims = headerInfo.numDims;\n var numPixels = headerInfo.width * headerInfo.height;\n var imageType = headerInfo.imageType;\n var numBytes = headerInfo.numValidPixel * Lerc2Helpers.getDataTypeSize(imageType) * numDims;\n //data.pixels.numBytes = numBytes;\n var rawData;\n var mask = data.pixels.resultMask;\n if (OutPixelTypeArray === Uint8Array) {\n rawData = new Uint8Array(input, ptr, numBytes);\n }\n else {\n var arrayBuf = new ArrayBuffer(numBytes);\n var store8 = new Uint8Array(arrayBuf);\n store8.set(new Uint8Array(input, ptr, numBytes));\n rawData = new OutPixelTypeArray(arrayBuf);\n }\n if (rawData.length === numPixels * numDims) {\n if (useBSQForOutputDim) {\n data.pixels.resultPixels = Lerc2Helpers.swapDimensionOrder(rawData, numPixels, numDims, OutPixelTypeArray, true);\n }\n else {\n data.pixels.resultPixels = rawData;\n }\n }\n else //mask\n {\n data.pixels.resultPixels = new OutPixelTypeArray(numPixels * numDims);\n var z = 0, k = 0, i = 0, nStart = 0;\n if (numDims > 1) {\n if (useBSQForOutputDim) {\n for (k = 0; k < numPixels; k++) {\n if (mask[k]) {\n nStart = k;\n for (i = 0; i < numDims; i++, nStart+=numPixels) {\n data.pixels.resultPixels[nStart] = rawData[z++];\n }\n }\n }\n }\n else {\n for (k = 0; k < numPixels; k++) {\n if (mask[k]) {\n nStart = k * numDims;\n for (i = 0; i < numDims; i++) {\n data.pixels.resultPixels[nStart + i] = rawData[z++];\n }\n }\n }\n }\n }\n else {\n for (k = 0; k < numPixels; k++) {\n if (mask[k]) {\n data.pixels.resultPixels[k] = rawData[z++];\n }\n }\n }\n }\n ptr += numBytes;\n data.ptr = ptr; //return data;\n return true;\n },\n\n readHuffmanTree: function(input, data) {\n var BITS_MAX = this.HUFFMAN_LUT_BITS_MAX; //8 is slow for the large test image\n //var size_max = 1 << BITS_MAX;\n /* ************************\n * reading code table\n *************************/\n var view = new DataView(input, data.ptr, 16);\n data.ptr += 16;\n var version = view.getInt32(0, true);\n if (version < 2) {\n throw \"unsupported Huffman version\";\n }\n var size = view.getInt32(4, true);\n var i0 = view.getInt32(8, true);\n var i1 = view.getInt32(12, true);\n if (i0 >= i1) {\n return false;\n }\n var blockDataBuffer = new Uint32Array(i1 - i0);\n Lerc2Helpers.decodeBits(input, data, blockDataBuffer);\n var codeTable = []; //size\n var i, j, k, len;\n\n for (i = i0; i < i1; i++) {\n j = i - (i < size ? 0 : size);//wrap around\n codeTable[j] = { first: blockDataBuffer[i - i0], second: null };\n }\n\n var dataBytes = input.byteLength - data.ptr;\n var dataWords = Math.ceil(dataBytes / 4);\n var arrayBuf = new ArrayBuffer(dataWords * 4);\n var store8 = new Uint8Array(arrayBuf);\n store8.set(new Uint8Array(input, data.ptr, dataBytes));\n var stuffedData = new Uint32Array(arrayBuf); //must start from x*4\n var bitPos = 0, word, srcPtr = 0;\n word = stuffedData[0];\n for (i = i0; i < i1; i++) {\n j = i - (i < size ? 0 : size);//wrap around\n len = codeTable[j].first;\n if (len > 0) {\n codeTable[j].second = (word << bitPos) >>> (32 - len);\n\n if (32 - bitPos >= len) {\n bitPos += len;\n if (bitPos === 32) {\n bitPos = 0;\n srcPtr++;\n word = stuffedData[srcPtr];\n }\n }\n else {\n bitPos += len - 32;\n srcPtr++;\n word = stuffedData[srcPtr];\n codeTable[j].second |= word >>> (32 - bitPos);\n }\n }\n }\n\n //finished reading code table\n\n /* ************************\n * building lut\n *************************/\n var numBitsLUT = 0, numBitsLUTQick = 0;\n var tree = new TreeNode();\n for (i = 0; i < codeTable.length; i++) {\n if (codeTable[i] !== undefined) {\n numBitsLUT = Math.max(numBitsLUT, codeTable[i].first);\n }\n }\n if (numBitsLUT >= BITS_MAX) {\n numBitsLUTQick = BITS_MAX;\n }\n else {\n numBitsLUTQick = numBitsLUT;\n }\n // for debugging purpose\n // if (numBitsLUT >= 30) {\n // console.log(\"WARning, large NUM LUT BITS IS \" + numBitsLUT);\n // }\n var decodeLut = [], entry, code, numEntries, jj, currentBit, node;\n for (i = i0; i < i1; i++) {\n j = i - (i < size ? 0 : size);//wrap around\n len = codeTable[j].first;\n if (len > 0) {\n entry = [len, j];\n if (len <= numBitsLUTQick) {\n code = codeTable[j].second << (numBitsLUTQick - len);\n numEntries = 1 << (numBitsLUTQick - len);\n for (k = 0; k < numEntries; k++) {\n decodeLut[code | k] = entry;\n }\n }\n else {\n //build tree\n code = codeTable[j].second;\n node = tree;\n for (jj = len - 1; jj >= 0; jj--) {\n currentBit = code >>> jj & 1; //no left shift as length could be 30,31\n if (currentBit) {\n if (!node.right) {\n node.right = new TreeNode();\n }\n node = node.right;\n }\n else {\n if (!node.left) {\n node.left = new TreeNode();\n }\n node = node.left;\n }\n if (jj === 0 && !node.val) {\n node.val = entry[1];\n }\n }\n }\n }\n }\n return {\n decodeLut: decodeLut,\n numBitsLUTQick: numBitsLUTQick,\n numBitsLUT: numBitsLUT,\n tree: tree,\n stuffedData: stuffedData,\n srcPtr: srcPtr,\n bitPos: bitPos\n };\n },\n\n readHuffman: function(input, data, OutPixelTypeArray, useBSQForOutputDim) {\n var headerInfo = data.headerInfo;\n var numDims = headerInfo.numDims;\n var height = data.headerInfo.height;\n var width = data.headerInfo.width;\n var numPixels = width * height;\n //var size_max = 1 << BITS_MAX;\n /* ************************\n * reading huffman structure info\n *************************/\n var huffmanInfo = this.readHuffmanTree(input, data);\n var decodeLut = huffmanInfo.decodeLut;\n var tree = huffmanInfo.tree;\n //stuffedData includes huffman headers\n var stuffedData = huffmanInfo.stuffedData;\n var srcPtr = huffmanInfo.srcPtr;\n var bitPos = huffmanInfo.bitPos;\n var numBitsLUTQick = huffmanInfo.numBitsLUTQick;\n var numBitsLUT = huffmanInfo.numBitsLUT;\n var offset = data.headerInfo.imageType === 0 ? 128 : 0;\n /*************************\n * decode\n ***************************/\n var node, val, delta, mask = data.pixels.resultMask, valTmp, valTmpQuick, currentBit;\n var i, j, k, ii;\n var prevVal = 0;\n if (bitPos > 0) {\n srcPtr++;\n bitPos = 0;\n }\n var word = stuffedData[srcPtr];\n var deltaEncode = data.encodeMode === 1;\n var resultPixelsAllDim = new OutPixelTypeArray(numPixels * numDims);\n var resultPixels = resultPixelsAllDim;\n var iDim;\n // TODO: reevaluate the need to keep inlined decoding code as IE support is phasing out\n if (numDims < 2 || deltaEncode) {\n for (iDim = 0; iDim < numDims; iDim++) {\n if (numDims > 1) {\n //get the mem block of current dimension\n resultPixels = new OutPixelTypeArray(resultPixelsAllDim.buffer, numPixels * iDim, numPixels);\n prevVal = 0;\n }\n if (data.headerInfo.numValidPixel === width * height) { //all valid\n for (k = 0, i = 0; i < height; i++) {\n for (j = 0; j < width; j++, k++) {\n val = 0;\n valTmp = (word << bitPos) >>> (32 - numBitsLUTQick);\n valTmpQuick = valTmp;// >>> deltaBits;\n if (32 - bitPos < numBitsLUTQick) {\n valTmp |= ((stuffedData[srcPtr + 1]) >>> (64 - bitPos - numBitsLUTQick));\n valTmpQuick = valTmp;// >>> deltaBits;\n }\n if (decodeLut[valTmpQuick]) // if there, move the correct number of bits and done\n {\n val = decodeLut[valTmpQuick][1];\n bitPos += decodeLut[valTmpQuick][0];\n }\n else {\n valTmp = (word << bitPos) >>> (32 - numBitsLUT);\n valTmpQuick = valTmp;// >>> deltaBits;\n if (32 - bitPos < numBitsLUT) {\n valTmp |= ((stuffedData[srcPtr + 1]) >>> (64 - bitPos - numBitsLUT));\n valTmpQuick = valTmp;// >>> deltaBits;\n }\n node = tree;\n for (ii = 0; ii < numBitsLUT; ii++) {\n currentBit = valTmp >>> (numBitsLUT - ii - 1) & 1;\n node = currentBit ? node.right : node.left;\n if (!(node.left || node.right)) {\n val = node.val;\n bitPos = bitPos + ii + 1;\n break;\n }\n }\n }\n \n if (bitPos >= 32) {\n bitPos -= 32;\n srcPtr++;\n word = stuffedData[srcPtr];\n }\n \n delta = val - offset;\n if (deltaEncode) {\n if (j > 0) {\n delta += prevVal; // use overflow\n }\n else if (i > 0) {\n delta += resultPixels[k - width];\n }\n else {\n delta += prevVal;\n }\n delta &= 0xFF; //overflow\n resultPixels[k] = delta;//overflow\n prevVal = delta;\n }\n else {\n resultPixels[k] = delta;\n }\n }\n }\n }\n else { //not all valid, use mask\n for (k = 0, i = 0; i < height; i++) {\n for (j = 0; j < width; j++, k++) {\n if (mask[k]) {\n val = 0;\n valTmp = (word << bitPos) >>> (32 - numBitsLUTQick);\n valTmpQuick = valTmp;// >>> deltaBits;\n if (32 - bitPos < numBitsLUTQick) {\n valTmp |= ((stuffedData[srcPtr + 1]) >>> (64 - bitPos - numBitsLUTQick));\n valTmpQuick = valTmp;// >>> deltaBits;\n }\n if (decodeLut[valTmpQuick]) // if there, move the correct number of bits and done\n {\n val = decodeLut[valTmpQuick][1];\n bitPos += decodeLut[valTmpQuick][0];\n }\n else {\n valTmp = (word << bitPos) >>> (32 - numBitsLUT);\n valTmpQuick = valTmp;// >>> deltaBits;\n if (32 - bitPos < numBitsLUT) {\n valTmp |= ((stuffedData[srcPtr + 1]) >>> (64 - bitPos - numBitsLUT));\n valTmpQuick = valTmp;// >>> deltaBits;\n }\n node = tree;\n for (ii = 0; ii < numBitsLUT; ii++) {\n currentBit = valTmp >>> (numBitsLUT - ii - 1) & 1;\n node = currentBit ? node.right : node.left;\n if (!(node.left || node.right)) {\n val = node.val;\n bitPos = bitPos + ii + 1;\n break;\n }\n }\n }\n \n if (bitPos >= 32) {\n bitPos -= 32;\n srcPtr++;\n word = stuffedData[srcPtr];\n }\n \n delta = val - offset;\n if (deltaEncode) {\n if (j > 0 && mask[k - 1]) {\n delta += prevVal; // use overflow\n }\n else if (i > 0 && mask[k - width]) {\n delta += resultPixels[k - width];\n }\n else {\n delta += prevVal;\n }\n \n delta &= 0xFF; //overflow\n resultPixels[k] = delta;//overflow\n prevVal = delta;\n }\n else {\n resultPixels[k] = delta;\n }\n }\n }\n }\n }\n }\n }\n else {\n for (k = 0, i = 0; i < height; i++) {\n for (j = 0; j < width; j++) {\n k = i * width + j;\n if (!mask || mask[k]) {\n for (iDim = 0; iDim < numDims; iDim++, k+=numPixels) {\n val = 0;\n valTmp = (word << bitPos) >>> (32 - numBitsLUTQick);\n valTmpQuick = valTmp;\n if (32 - bitPos < numBitsLUTQick) {\n valTmp |= ((stuffedData[srcPtr + 1]) >>> (64 - bitPos - numBitsLUTQick));\n valTmpQuick = valTmp;\n }\n if (decodeLut[valTmpQuick])\n {\n val = decodeLut[valTmpQuick][1];\n bitPos += decodeLut[valTmpQuick][0];\n }\n else {\n valTmp = (word << bitPos) >>> (32 - numBitsLUT);\n valTmpQuick = valTmp;\n if (32 - bitPos < numBitsLUT) {\n valTmp |= ((stuffedData[srcPtr + 1]) >>> (64 - bitPos - numBitsLUT));\n valTmpQuick = valTmp;\n }\n node = tree;\n for (ii = 0; ii < numBitsLUT; ii++) {\n currentBit = valTmp >>> (numBitsLUT - ii - 1) & 1;\n node = currentBit ? node.right : node.left;\n if (!(node.left || node.right)) {\n val = node.val;\n bitPos = bitPos + ii + 1;\n break;\n }\n }\n }\n\n if (bitPos >= 32) {\n bitPos -= 32;\n srcPtr++;\n word = stuffedData[srcPtr];\n }\n\n delta = val - offset;\n resultPixels[k] = delta;\n }\n }\n }\n }\n }\n data.ptr = data.ptr + (srcPtr + 1) * 4 + (bitPos > 0 ? 4 : 0);\n data.pixels.resultPixels = resultPixelsAllDim;\n //swap for BIP layout\n if (numDims > 1 && !useBSQForOutputDim) {\n data.pixels.resultPixels = Lerc2Helpers.swapDimensionOrder(resultPixelsAllDim, numPixels, numDims, OutPixelTypeArray);\n }\n },\n\n decodeBits: function(input, data, blockDataBuffer, offset, iDim) {\n {\n //bitstuff encoding is 3\n var headerInfo = data.headerInfo;\n var fileVersion = headerInfo.fileVersion;\n //var block = {};\n var blockPtr = 0;\n var viewByteLength = ((input.byteLength - data.ptr) >= 5) ? 5 : (input.byteLength - data.ptr);\n var view = new DataView(input, data.ptr, viewByteLength);\n var headerByte = view.getUint8(0);\n blockPtr++;\n var bits67 = headerByte >> 6;\n var n = (bits67 === 0) ? 4 : 3 - bits67;\n var doLut = (headerByte & 32) > 0 ? true : false;//5th bit\n var numBits = headerByte & 31;\n var numElements = 0;\n if (n === 1) {\n numElements = view.getUint8(blockPtr); blockPtr++;\n } else if (n === 2) {\n numElements = view.getUint16(blockPtr, true); blockPtr += 2;\n } else if (n === 4) {\n numElements = view.getUint32(blockPtr, true); blockPtr += 4;\n } else {\n throw \"Invalid valid pixel count type\";\n }\n //fix: huffman codes are bit stuffed, but not bound by data's max value, so need to use originalUnstuff\n //offset = offset || 0;\n var scale = 2 * headerInfo.maxZError;\n var stuffedData, arrayBuf, store8, dataBytes, dataWords;\n var lutArr, lutData, lutBytes, lutBitsPerElement, bitsPerPixel;\n var zMax = headerInfo.numDims > 1 ? headerInfo.maxValues[iDim] : headerInfo.zMax;\n if (doLut) {\n data.counter.lut++;\n lutBytes = view.getUint8(blockPtr);\n lutBitsPerElement = numBits;\n blockPtr++;\n dataBytes = Math.ceil((lutBytes - 1) * numBits / 8);\n dataWords = Math.ceil(dataBytes / 4);\n arrayBuf = new ArrayBuffer(dataWords * 4);\n store8 = new Uint8Array(arrayBuf);\n\n data.ptr += blockPtr;\n store8.set(new Uint8Array(input, data.ptr, dataBytes));\n\n lutData = new Uint32Array(arrayBuf);\n data.ptr += dataBytes;\n\n bitsPerPixel = 0;\n while ((lutBytes - 1) >>> bitsPerPixel) {\n bitsPerPixel++;\n }\n dataBytes = Math.ceil(numElements * bitsPerPixel / 8);\n dataWords = Math.ceil(dataBytes / 4);\n arrayBuf = new ArrayBuffer(dataWords * 4);\n store8 = new Uint8Array(arrayBuf);\n store8.set(new Uint8Array(input, data.ptr, dataBytes));\n stuffedData = new Uint32Array(arrayBuf);\n data.ptr += dataBytes;\n if (fileVersion >= 3) {\n lutArr = BitStuffer.unstuffLUT2(lutData, numBits, lutBytes - 1, offset, scale, zMax);\n }\n else {\n lutArr = BitStuffer.unstuffLUT(lutData, numBits, lutBytes - 1, offset, scale, zMax);\n }\n //lutArr.unshift(0);\n if (fileVersion >= 3) {\n //BitStuffer.unstuff2(block, blockDataBuffer, headerInfo.zMax);\n BitStuffer.unstuff2(stuffedData, blockDataBuffer, bitsPerPixel, numElements, lutArr);\n }\n else {\n BitStuffer.unstuff(stuffedData, blockDataBuffer, bitsPerPixel, numElements, lutArr);\n }\n }\n else {\n //console.debug(\"bitstuffer\");\n data.counter.bitstuffer++;\n bitsPerPixel = numBits;\n data.ptr += blockPtr;\n if (bitsPerPixel > 0) {\n dataBytes = Math.ceil(numElements * bitsPerPixel / 8);\n dataWords = Math.ceil(dataBytes / 4);\n arrayBuf = new ArrayBuffer(dataWords * 4);\n store8 = new Uint8Array(arrayBuf);\n store8.set(new Uint8Array(input, data.ptr, dataBytes));\n stuffedData = new Uint32Array(arrayBuf);\n data.ptr += dataBytes;\n if (fileVersion >= 3) {\n if (offset == null) {\n BitStuffer.originalUnstuff2(stuffedData, blockDataBuffer, bitsPerPixel, numElements);\n }\n else {\n BitStuffer.unstuff2(stuffedData, blockDataBuffer, bitsPerPixel, numElements, false, offset, scale, zMax);\n }\n }\n else {\n if (offset == null) {\n BitStuffer.originalUnstuff(stuffedData, blockDataBuffer, bitsPerPixel, numElements);\n }\n else {\n BitStuffer.unstuff(stuffedData, blockDataBuffer, bitsPerPixel, numElements, false, offset, scale, zMax);\n }\n }\n }\n }\n }\n\n },\n\n readTiles: function(input, data, OutPixelTypeArray, useBSQForOutputDim) {\n var headerInfo = data.headerInfo;\n var width = headerInfo.width;\n var height = headerInfo.height;\n var numPixels = width * height;\n var microBlockSize = headerInfo.microBlockSize;\n var imageType = headerInfo.imageType;\n var dataTypeSize = Lerc2Helpers.getDataTypeSize(imageType);\n var numBlocksX = Math.ceil(width / microBlockSize);\n var numBlocksY = Math.ceil(height / microBlockSize);\n data.pixels.numBlocksY = numBlocksY;\n data.pixels.numBlocksX = numBlocksX;\n data.pixels.ptr = 0;\n var row = 0, col = 0, blockY = 0, blockX = 0, thisBlockHeight = 0, thisBlockWidth = 0, bytesLeft = 0, headerByte = 0, bits67 = 0, testCode = 0, outPtr = 0, outStride = 0, numBytes = 0, bytesleft = 0, z = 0, blockPtr = 0;\n var view, block, arrayBuf, store8, rawData;\n var blockEncoding;\n var blockDataBuffer = new OutPixelTypeArray(microBlockSize * microBlockSize);\n var lastBlockHeight = (height % microBlockSize) || microBlockSize;\n var lastBlockWidth = (width % microBlockSize) || microBlockSize;\n var offsetType, offset;\n var numDims = headerInfo.numDims, iDim;\n var mask = data.pixels.resultMask;\n var resultPixels = data.pixels.resultPixels;\n var fileVersion = headerInfo.fileVersion;\n var fileVersionCheckNum = fileVersion >= 5 ? 14 : 15;\n var isDiffEncoding;\n var zMax = headerInfo.zMax;\n //var resultPixelsAllDim = resultPixels;\n var resultPixelsPrevDim;\n for (blockY = 0; blockY < numBlocksY; blockY++) {\n thisBlockHeight = (blockY !== numBlocksY - 1) ? microBlockSize : lastBlockHeight;\n for (blockX = 0; blockX < numBlocksX; blockX++) {\n //console.debug(\"y\" + blockY + \" x\" + blockX);\n thisBlockWidth = (blockX !== numBlocksX - 1) ? microBlockSize : lastBlockWidth;\n\n outPtr = blockY * width * microBlockSize + blockX * microBlockSize;\n outStride = width - thisBlockWidth;\n\n for (iDim = 0; iDim < numDims; iDim++) {\n if (numDims > 1) {\n resultPixelsPrevDim = resultPixels;\n outPtr = blockY * width * microBlockSize + blockX * microBlockSize;\n resultPixels = new OutPixelTypeArray(data.pixels.resultPixels.buffer, numPixels * iDim * dataTypeSize, numPixels);\n zMax = headerInfo.maxValues[iDim];\n } else {\n resultPixelsPrevDim = null;\n }\n bytesLeft = input.byteLength - data.ptr;\n view = new DataView(input, data.ptr, Math.min(10, bytesLeft));\n block = {};\n blockPtr = 0;\n headerByte = view.getUint8(0);\n blockPtr++;\n isDiffEncoding = headerInfo.fileVersion >= 5 ? headerByte & 4 : 0;\n bits67 = (headerByte >> 6) & 0xFF;\n testCode = (headerByte >> 2) & fileVersionCheckNum; // use bits 2345 for integrity check\n if (testCode !== (((blockX * microBlockSize) >> 3) & fileVersionCheckNum)) {\n throw \"integrity issue\";\n }\n\n if (isDiffEncoding && iDim === 0) {\n throw \"integrity issue\";\n }\n\n blockEncoding = headerByte & 3;\n if (blockEncoding > 3) {\n data.ptr += blockPtr;\n throw \"Invalid block encoding (\" + blockEncoding + \")\";\n }\n else if (blockEncoding === 2) { //constant 0\n if (isDiffEncoding) {\n if (mask) {\n for (row = 0; row < thisBlockHeight; row++) {\n for (col = 0; col < thisBlockWidth; col++) {\n if (mask[outPtr]) {\n resultPixels[outPtr] = resultPixelsPrevDim[outPtr];\n }\n outPtr++;\n }\n }\n }\n else {\n for (row = 0; row < thisBlockHeight; row++) {\n for (col = 0; col < thisBlockWidth; col++) {\n resultPixels[outPtr] = resultPixelsPrevDim[outPtr];\n outPtr++;\n }\n }\n }\n }\n data.counter.constant++;\n data.ptr += blockPtr;\n continue;\n }\n else if (blockEncoding === 0) { //uncompressed\n if (isDiffEncoding) {\n // doesn't make sense, should not happen\n throw \"integrity issue\";\n }\n data.counter.uncompressed++;\n data.ptr += blockPtr;\n numBytes = thisBlockHeight * thisBlockWidth * dataTypeSize;\n bytesleft = input.byteLength - data.ptr;\n numBytes = numBytes < bytesleft ? numBytes : bytesleft;\n //bit alignment\n arrayBuf = new ArrayBuffer((numBytes % dataTypeSize) === 0 ? numBytes : (numBytes + dataTypeSize - numBytes % dataTypeSize));\n store8 = new Uint8Array(arrayBuf);\n store8.set(new Uint8Array(input, data.ptr, numBytes));\n rawData = new OutPixelTypeArray(arrayBuf);\n z = 0;\n if (mask) {\n for (row = 0; row < thisBlockHeight; row++) {\n for (col = 0; col < thisBlockWidth; col++) {\n if (mask[outPtr]) {\n resultPixels[outPtr] = rawData[z++];\n }\n outPtr++;\n }\n outPtr += outStride;\n }\n }\n else {//all valid\n for (row = 0; row < thisBlockHeight; row++) {\n for (col = 0; col < thisBlockWidth; col++) {\n resultPixels[outPtr++] = rawData[z++];\n }\n outPtr += outStride;\n }\n }\n data.ptr += z * dataTypeSize;\n }\n else { //1 or 3\n offsetType = Lerc2Helpers.getDataTypeUsed((isDiffEncoding && imageType < 6) ? 4 : imageType, bits67);\n offset = Lerc2Helpers.getOnePixel(block, blockPtr, offsetType, view);\n blockPtr += Lerc2Helpers.getDataTypeSize(offsetType);\n if (blockEncoding === 3) //constant offset value\n {\n data.ptr += blockPtr;\n data.counter.constantoffset++;\n //you can delete the following resultMask case in favor of performance because val is constant and users use nodata mask, otherwise nodatavalue post processing handles it too.\n //while the above statement is true, we're not doing it as we want to keep invalid pixel value at 0 rather than arbitrary values\n if (mask) {\n for (row = 0; row < thisBlockHeight; row++) {\n for (col = 0; col < thisBlockWidth; col++) {\n if (mask[outPtr]) {\n resultPixels[outPtr] = isDiffEncoding ? Math.min(zMax, resultPixelsPrevDim[outPtr] + offset) : offset;\n }\n outPtr++;\n }\n outPtr += outStride;\n }\n }\n else {\n for (row = 0; row < thisBlockHeight; row++) {\n for (col = 0; col < thisBlockWidth; col++) {\n resultPixels[outPtr] = isDiffEncoding ? Math.min(zMax, resultPixelsPrevDim[outPtr] + offset) : offset;\n outPtr++;\n }\n outPtr += outStride;\n }\n }\n }\n else { //bitstuff encoding is 3\n data.ptr += blockPtr;\n //heavy lifting\n Lerc2Helpers.decodeBits(input, data, blockDataBuffer, offset, iDim);\n blockPtr = 0;\n // duplicate code to favor performance, diff encoding is for multidimension only\n if (isDiffEncoding) {\n if (mask) {\n for (row = 0; row < thisBlockHeight; row++) {\n for (col = 0; col < thisBlockWidth; col++) {\n if (mask[outPtr]) {\n resultPixels[outPtr] = blockDataBuffer[blockPtr++] + resultPixelsPrevDim[outPtr];\n }\n outPtr++;\n }\n outPtr += outStride;\n }\n }\n else {\n for (row = 0; row < thisBlockHeight; row++) {\n for (col = 0; col < thisBlockWidth; col++) {\n resultPixels[outPtr] = blockDataBuffer[blockPtr++] + resultPixelsPrevDim[outPtr];\n outPtr++;\n }\n outPtr += outStride;\n }\n }\n }\n else if (mask) {\n for (row = 0; row < thisBlockHeight; row++) {\n for (col = 0; col < thisBlockWidth; col++) {\n if (mask[outPtr]) {\n resultPixels[outPtr] = blockDataBuffer[blockPtr++];\n }\n outPtr++;\n }\n outPtr += outStride;\n }\n }\n else {\n for (row = 0; row < thisBlockHeight; row++) {\n for (col = 0; col < thisBlockWidth; col++) {\n resultPixels[outPtr++] = blockDataBuffer[blockPtr++];\n }\n outPtr += outStride;\n }\n }\n }\n }\n }\n }\n }\n //swap for BIP: it's always easier for clients to handle BSQ so we keep existing logic and introduce a swap here to minimze changes\n if (numDims > 1 && !useBSQForOutputDim) {\n data.pixels.resultPixels = Lerc2Helpers.swapDimensionOrder(data.pixels.resultPixels, numPixels, numDims, OutPixelTypeArray);\n }\n },\n\n /*****************\n * private methods (helper methods)\n *****************/\n\n formatFileInfo: function(data) {\n return {\n \"fileIdentifierString\": data.headerInfo.fileIdentifierString,\n \"fileVersion\": data.headerInfo.fileVersion,\n \"imageType\": data.headerInfo.imageType,\n \"height\": data.headerInfo.height,\n \"width\": data.headerInfo.width,\n \"numValidPixel\": data.headerInfo.numValidPixel,\n \"microBlockSize\": data.headerInfo.microBlockSize,\n \"blobSize\": data.headerInfo.blobSize,\n \"maxZError\": data.headerInfo.maxZError,\n \"pixelType\": Lerc2Helpers.getPixelType(data.headerInfo.imageType),\n \"eofOffset\": data.eofOffset,\n \"mask\": data.mask ? {\n \"numBytes\": data.mask.numBytes\n } : null,\n \"pixels\": {\n \"numBlocksX\": data.pixels.numBlocksX,\n \"numBlocksY\": data.pixels.numBlocksY,\n //\"numBytes\": data.pixels.numBytes,\n \"maxValue\": data.headerInfo.zMax,\n \"minValue\": data.headerInfo.zMin,\n \"noDataValue\": data.noDataValue\n }\n };\n },\n\n constructConstantSurface: function(data, useBSQForOutputDim) {\n var val = data.headerInfo.zMax;\n var valMin = data.headerInfo.zMin;\n var maxValues = data.headerInfo.maxValues;\n var numDims = data.headerInfo.numDims;\n var numPixels = data.headerInfo.height * data.headerInfo.width;\n var i = 0, k = 0, nStart = 0;\n var mask = data.pixels.resultMask;\n var resultPixels = data.pixels.resultPixels;\n if (mask) {\n if (numDims > 1) {\n if (useBSQForOutputDim) {\n for (i = 0; i < numDims; i++) {\n nStart = i * numPixels;\n val = maxValues[i];\n for (k = 0; k < numPixels; k++) {\n if (mask[k]) {\n resultPixels[nStart + k] = val;\n }\n }\n } \n }\n else {\n for (k = 0; k < numPixels; k++) {\n if (mask[k]) {\n nStart = k * numDims;\n for (i = 0; i < numDims; i++) {\n resultPixels[nStart + numDims] = maxValues[i];\n }\n }\n }\n }\n }\n else {\n for (k = 0; k < numPixels; k++) {\n if (mask[k]) {\n resultPixels[k] = val;\n }\n }\n }\n }\n else {\n if (numDims > 1 && valMin !== val) {\n if (useBSQForOutputDim) {\n for (i = 0; i < numDims; i++) {\n nStart = i * numPixels;\n val = maxValues[i];\n for (k = 0; k < numPixels; k++) {\n resultPixels[nStart + k] = val;\n }\n }\n }\n else {\n for (k = 0; k < numPixels; k++) {\n nStart = k * numDims;\n for (i = 0; i < numDims; i++) {\n resultPixels[nStart + i] = maxValues[i];\n }\n }\n }\n }\n else {\n for (k = 0; k < numPixels * numDims; k++) {\n resultPixels[k] = val;\n }\n }\n }\n return;\n },\n\n getDataTypeArray: function(t) {\n var tp;\n switch (t) {\n case 0: //char\n tp = Int8Array;\n break;\n case 1: //byte\n tp = Uint8Array;\n break;\n case 2: //short\n tp = Int16Array;\n break;\n case 3: //ushort\n tp = Uint16Array;\n break;\n case 4:\n tp = Int32Array;\n break;\n case 5:\n tp = Uint32Array;\n break;\n case 6:\n tp = Float32Array;\n break;\n case 7:\n tp = Float64Array;\n break;\n default:\n tp = Float32Array;\n }\n return tp;\n },\n\n getPixelType: function(t) {\n var tp;\n switch (t) {\n case 0: //char\n tp = \"S8\";\n break;\n case 1: //byte\n tp = \"U8\";\n break;\n case 2: //short\n tp = \"S16\";\n break;\n case 3: //ushort\n tp = \"U16\";\n break;\n case 4:\n tp = \"S32\";\n break;\n case 5:\n tp = \"U32\";\n break;\n case 6:\n tp = \"F32\";\n break;\n case 7:\n tp = \"F64\";\n break;\n default:\n tp = \"F32\";\n }\n return tp;\n },\n\n isValidPixelValue: function(t, val) {\n if (val == null) {\n return false;\n }\n var isValid;\n switch (t) {\n case 0: //char\n isValid = val >= -128 && val <= 127;\n break;\n case 1: //byte (unsigned char)\n isValid = val >= 0 && val <= 255;\n break;\n case 2: //short\n isValid = val >= -32768 && val <= 32767;\n break;\n case 3: //ushort\n isValid = val >= 0 && val <= 65536;\n break;\n case 4: //int 32\n isValid = val >= -2147483648 && val <= 2147483647;\n break;\n case 5: //uinit 32\n isValid = val >= 0 && val <= 4294967296;\n break;\n case 6:\n isValid = val >= -3.4027999387901484e+38 && val <= 3.4027999387901484e+38;\n break;\n case 7:\n isValid = val >= -1.7976931348623157e+308 && val <= 1.7976931348623157e+308;\n break;\n default:\n isValid = false;\n }\n return isValid;\n },\n\n getDataTypeSize: function(t) {\n var s = 0;\n switch (t) {\n case 0: //ubyte\n case 1: //byte\n s = 1;\n break;\n case 2: //short\n case 3: //ushort\n s = 2;\n break;\n case 4:\n case 5:\n case 6:\n s = 4;\n break;\n case 7:\n s = 8;\n break;\n default:\n s = t;\n }\n return s;\n },\n\n getDataTypeUsed: function(dt, tc) {\n var t = dt;\n switch (dt) {\n case 2: //short\n case 4: //long\n t = dt - tc;\n break;\n case 3: //ushort\n case 5: //ulong\n t = dt - 2 * tc;\n break;\n case 6: //float\n if (0 === tc) {\n t = dt;\n }\n else if (1 === tc) {\n t = 2;\n }\n else {\n t = 1;//byte\n }\n break;\n case 7: //double\n if (0 === tc) {\n t = dt;\n }\n else {\n t = dt - 2 * tc + 1;\n }\n break;\n default:\n t = dt;\n break;\n }\n return t;\n },\n\n getOnePixel: function(block, blockPtr, offsetType, view) {\n var temp = 0;\n switch (offsetType) {\n case 0: //char\n temp = view.getInt8(blockPtr);\n break;\n case 1: //byte\n temp = view.getUint8(blockPtr);\n break;\n case 2:\n temp = view.getInt16(blockPtr, true);\n break;\n case 3:\n temp = view.getUint16(blockPtr, true);\n break;\n case 4:\n temp = view.getInt32(blockPtr, true);\n break;\n case 5:\n temp = view.getUInt32(blockPtr, true);\n break;\n case 6:\n temp = view.getFloat32(blockPtr, true);\n break;\n case 7:\n temp = view.getFloat64(blockPtr, true);\n break;\n default:\n throw (\"the decoder does not understand this pixel type\");\n }\n return temp;\n },\n\n swapDimensionOrder: function(pixels, numPixels, numDims, OutPixelTypeArray, inputIsBIP) {\n var i = 0, j = 0, iDim = 0, temp = 0, swap = pixels;\n if (numDims > 1) {\n swap = new OutPixelTypeArray(numPixels * numDims);\n if (inputIsBIP) {\n for (i=0; i<numPixels; i++) {\n temp = i;\n for (iDim=0; iDim < numDims; iDim++, temp += numPixels) {\n swap[temp] = pixels[j++];\n }\n } \n }\n else {\n for (i=0; i<numPixels; i++) {\n temp = i;\n for (iDim=0; iDim < numDims; iDim++, temp += numPixels) {\n swap[j++] = pixels[temp];\n }\n }\n }\n }\n return swap;\n }\n };\n\n /***************************************************\n *private class for a tree node. Huffman code is in Lerc2Helpers\n ****************************************************/\n var TreeNode = function(val, left, right) {\n this.val = val;\n this.left = left;\n this.right = right;\n };\n\n var Lerc2Decode = {\n /*\n * ********removed options compared to LERC1. We can bring some of them back if needed.\n * removed pixel type. LERC2 is typed and doesn't require user to give pixel type\n * changed encodedMaskData to maskData. LERC2 's js version make it faster to use maskData directly.\n * 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.\n * removed nodatavalue. Because LERC2 pixels are typed, nodatavalue will sacrify a useful value for many types (8bit, 16bit) etc,\n * user has to be knowledgable enough about raster and their data to avoid usability issues. so nodata value is simply removed now.\n * We can add it back later if their's a clear requirement.\n * removed encodedMask. This option was not implemented in LercDecode. It can be done after decoding (less efficient)\n * removed computeUsedBitDepths.\n *\n *\n * response changes compared to LERC1\n * 1. encodedMaskData is not available\n * 2. noDataValue is optional (returns only if user's noDataValue is with in the valid data type range)\n * 3. maskData is always available\n */\n /*****************\n * public properties\n ******************/\n //HUFFMAN_LUT_BITS_MAX: 12, //use 2^12 lut, not configurable\n\n /*****************\n * public methods\n *****************/\n\n /**\n * Decode a LERC2 byte stream and return an object containing the pixel data and optional metadata.\n *\n * @param {ArrayBuffer} input The LERC input byte stream\n * @param {object} [options] options Decoding options\n * @param {number} [options.inputOffset] The number of bytes to skip in the input byte stream. A valid LERC file is expected at that position\n * @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\n * @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...]\n */\n decode: function(/*byte array*/ input, /*object*/ options) {\n //currently there's a bug in the sparse array, so please do not set to false\n options = options || {};\n var noDataValue = options.noDataValue;\n\n //initialize\n var i = 0, data = {};\n data.ptr = options.inputOffset || 0;\n data.pixels = {};\n\n // File header\n if (!Lerc2Helpers.readHeaderInfo(input, data)) {\n return;\n }\n\n var headerInfo = data.headerInfo;\n var fileVersion = headerInfo.fileVersion;\n var OutPixelTypeArray = Lerc2Helpers.getDataTypeArray(headerInfo.imageType);\n\n // version check\n if (fileVersion > 5) {\n throw \"unsupported lerc version 2.\" + fileVersion;\n }\n\n // Mask Header\n Lerc2Helpers.readMask(input, data);\n if (headerInfo.numValidPixel !== headerInfo.width * headerInfo.height && !data.pixels.resultMask) {\n data.pixels.resultMask = options.maskData;\n }\n\n var numPixels = headerInfo.width * headerInfo.height;\n data.pixels.resultPixels = new OutPixelTypeArray(numPixels * headerInfo.numDims);\n\n data.counter = {\n onesweep: 0,\n uncompressed: 0,\n lut: 0,\n bitstuffer: 0,\n constant: 0,\n constantoffset: 0\n };\n var useBSQForOutputDim = !options.returnPixelInterleavedDims;\n if (headerInfo.numValidPixel !== 0) {\n //not tested\n if (headerInfo.zMax === headerInfo.zMin) //constant surface\n {\n Lerc2Helpers.constructConstantSurface(data, useBSQForOutputDim);\n }\n else if (fileVersion >= 4 && Lerc2Helpers.checkMinMaxRanges(input, data)) {\n Lerc2Helpers.constructConstantSurface(data, useBSQForOutputDim);\n }\n else {\n var view = new DataView(input, data.ptr, 2);\n var bReadDataOneSweep = view.getUint8(0);\n data.ptr++;\n if (bReadDataOneSweep) {\n //console.debug(\"OneSweep\");\n Lerc2Helpers.readDataOneSweep(input, data, OutPixelTypeArray, useBSQForOutputDim);\n }\n else {\n //lerc2.1: //bitstuffing + lut\n //lerc2.2: //bitstuffing + lut + huffman\n //lerc2.3: new bitstuffer\n if (fileVersion > 1 && headerInfo.imageType <= 1 && Math.abs(headerInfo.maxZError - 0.5) < 0.00001) {\n //this is 2.x plus 8 bit (unsigned and signed) data, possiblity of Huffman\n var flagHuffman = view.getUint8(1);\n data.ptr++;\n data.encodeMode = flagHuffman;\n if (flagHuffman > 2 || (fileVersion < 4 && flagHuffman > 1)) {\n throw \"Invalid Huffman flag \" + flagHuffman;\n }\n if (flagHuffman) {//1 - delta Huffman, 2 - Huffman\n //console.log(\"Huffman\");\n Lerc2Helpers.readHuffman(input, data, OutPixelTypeArray, useBSQForOutputDim);\n }\n else {\n //console.log(\"Tiles\");\n Lerc2Helpers.readTiles(input, data, OutPixelTypeArray, useBSQForOutputDim);\n }\n }\n else { //lerc2.x non-8 bit data\n //console.log(\"Tiles\");\n Lerc2Helpers.readTiles(input, data, OutPixelTypeArray, useBSQForOutputDim);\n }\n }\n }\n }\n\n data.eofOffset = data.ptr;\n var diff;\n if (options.inputOffset) {\n diff = data.headerInfo.blobSize + options.inputOffset - data.ptr;\n if (Math.abs(diff) >= 1) {\n //console.debug(\"incorrect eof: dataptr \" + data.ptr + \" offset \" + options.inputOffset + \" blobsize \" + data.headerInfo.blobSize + \" diff: \" + diff);\n data.eofOffset = options.inputOffset + data.headerInfo.blobSize;\n }\n }\n else {\n diff = data.headerInfo.blobSize - data.ptr;\n if (Math.abs(diff) >= 1) {\n //console.debug(\"incorrect first band eof: dataptr \" + data.ptr + \" blobsize \" + data.headerInfo.blobSize + \" diff: \" + diff);\n data.eofOffset = data.headerInfo.blobSize;\n }\n }\n\n var result = {\n width: headerInfo.width,\n height: headerInfo.height,\n pixelData: data.pixels.resultPixels,\n minValue: headerInfo.zMin,\n maxValue: headerInfo.zMax,\n validPixelCount: headerInfo.numValidPixel,\n dimCount: headerInfo.numDims,\n dimStats: {\n minValues: headerInfo.minValues,\n maxValues: headerInfo.maxValues\n },\n maskData: data.pixels.resultMask\n //noDataValue: noDataValue\n };\n\n //we should remove this if there's no existing client\n //optional noDataValue processing, it's user's responsiblity\n if (data.pixels.resultMask && Lerc2Helpers.isValidPixelValue(headerInfo.imageType, noDataValue)) {\n var mask = data.pixels.resultMask;\n for (i = 0; i < numPixels; i++) {\n if (!mask[i]) {\n result.pixelData[i] = noDataValue;\n }\n }\n result.noDataValue = noDataValue;\n }\n data.noDataValue = noDataValue;\n if (options.returnFileInfo) {\n result.fileInfo = Lerc2Helpers.formatFileInfo(data);\n }\n return result;\n },\n\n getBandCount: function(/*byte array*/ input) {\n var count = 0;\n var i = 0;\n var temp = {};\n temp.ptr = 0;\n temp.pixels = {};\n while (i < input.byteLength - 58) {\n Lerc2Helpers.readHeaderInfo(input, temp);\n i += temp.headerInfo.blobSize;\n count++;\n temp.ptr = i;\n }\n return count;\n }\n };\n\n return Lerc2Decode;\n })();\n\n var isPlatformLittleEndian = (function() {\n var a = new ArrayBuffer(4);\n var b = new Uint8Array(a);\n var c = new Uint32Array(a);\n c[0] = 1;\n return b[0] === 1;\n })();\n\n var Lerc = {\n /************wrapper**********************************************/\n /**\n * A wrapper for decoding both LERC1 and LERC2 byte streams capable of handling multiband pixel blocks for various pixel types.\n *\n * @alias module:Lerc\n * @param {ArrayBuffer} input The LERC input byte stream\n * @param {object} [options] The decoding options below are optional.\n * @param {number} [options.inputOffset] The number of bytes to skip in the input byte stream. A valid Lerc file is expected at that position.\n * @param {string} [options.pixelType] (LERC1 only) Default value is F32. Valid pixel types for input are U8/S8/S16/U16/S32/U32/F32.\n * @param {number} [options.noDataValue] (LERC1 only). It is recommended to use the returned mask instead of setting this value.\n * @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...]\n * @returns {{width, height, pixels, pixelType, mask, statistics}}\n * @property {number} width Width of decoded image.\n * @property {number} height Height of decoded image.\n * @property {array} pixels [band1, band2, …] Each band is a typed array of width*height.\n * @property {string} pixelType The type of pixels represented in the output.\n * @property {mask} mask Typed array with a size of width*height, or null if all pixels are valid.\n * @property {array} statistics [statistics_band1, statistics_band2, …] Each element is a statistics object representing min and max values\n **/\n decode: function(encodedData, options) {\n if (!isPlatformLittleEndian) {\n throw \"Big endian system is not supported.\";\n }\n options = options || {};\n var inputOffset = options.inputOffset || 0;\n var fileIdView = new Uint8Array(encodedData, inputOffset, 10);\n var fileIdentifierString = String.fromCharCode.apply(null, fileIdView);\n var lerc, majorVersion;\n if (fileIdentifierString.trim() === \"CntZImage\") {\n lerc = LercDecode;\n majorVersion = 1;\n }\n else if (fileIdentifierString.substring(0, 5) === \"Lerc2\") {\n lerc = Lerc2Decode;\n majorVersion = 2;\n }\n else {\n throw \"Unexpected file identifier string: \" + fileIdentifierString;\n }\n\n var iPlane = 0, eof = encodedData.byteLength - 10, encodedMaskData, bandMasks = [], bandMask, maskData;\n var decodedPixelBlock = {\n width: 0,\n height: 0,\n pixels: [],\n pixelType: options.pixelType,\n mask: null,\n statistics: []\n };\n var uniqueBandMaskCount = 0;\n\n while (inputOffset < eof) {\n var result = lerc.decode(encodedData, {\n inputOffset: inputOffset,//for both lerc1 and lerc2\n encodedMaskData: encodedMaskData,//lerc1 only\n maskData: maskData,//lerc2 only\n returnMask: iPlane === 0 ? true : false,//lerc1 only\n returnEncodedMask: iPlane === 0 ? true : false,//lerc1 only\n returnFileInfo: true,//for both lerc1 and lerc2\n returnPixelInterleavedDims: options.returnPixelInterleavedDims,//for ndim lerc2 only\n pixelType: options.pixelType || null,//lerc1 only\n noDataValue: options.noDataValue || null//lerc1 only\n });\n\n inputOffset = result.fileInfo.eofOffset;\n maskData = result.maskData;//lerc2\n if (iPlane === 0) {\n encodedMaskData = result.encodedMaskData;//lerc1\n decodedPixelBlock.width = result.width;\n decodedPixelBlock.height = result.height;\n decodedPixelBlock.dimCount = result.dimCount || 1;\n //decodedPixelBlock.dimStats = decodedPixelBlock.dimStats;\n decodedPixelBlock.pixelType = result.pixelType || result.fileInfo.pixelType;\n decodedPixelBlock.mask = maskData;\n }\n if (majorVersion > 1) {\n if (maskData) {\n bandMasks.push(maskData);\n }\n if (result.fileInfo.mask && result.fileInfo.mask.numBytes > 0) {\n uniqueBandMaskCount++;\n }\n }\n\n iPlane++;\n decodedPixelBlock.pixels.push(result.pixelData);\n decodedPixelBlock.statistics.push({\n minValue: result.minValue,\n maxValue: result.maxValue,\n noDataValue: result.noDataValue,\n dimStats: result.dimStats\n });\n }\n var i, j, numPixels;\n if (majorVersion > 1 && uniqueBandMaskCount > 1) {\n numPixels = decodedPixelBlock.width * decodedPixelBlock.height;\n decodedPixelBlock.bandMasks = bandMasks;\n maskData = new Uint8Array(numPixels);\n maskData.set(bandMasks[0]);\n for (i = 1; i < bandMasks.length; i++) {\n bandMask = bandMasks[i];\n for (j = 0; j < numPixels; j++) {\n maskData[j] = maskData[j] & bandMask[j];\n }\n }\n decodedPixelBlock.maskData = maskData;\n }\n\n return decodedPixelBlock;\n }\n };\n\n if (typeof define === \"function\" && define.amd) {/* jshint ignore:line */\n //amd loaders such as dojo and requireJS\n //http://wiki.commonjs.org/wiki/Modules/AsynchronousDefinition\n define([], function() { return Lerc; });/* jshint ignore:line */\n }\n else if (typeof module !== \"undefined\" && module.exports) {/* jshint ignore:line */\n //commonJS module 1.0/1.1/1.1.1 systems, such as nodeJS\n //http://wiki.commonjs.org/wiki/Modules\n module.exports = Lerc;/* jshint ignore:line */\n }\n else {\n //assign to this, most likely window\n this.Lerc = Lerc;\n }\n\n})();\n","let init;\nlet instance;\nlet heap;\nconst IMPORT_OBJECT = {\n env: {\n emscripten_notify_memory_growth: function (index) {\n heap = new Uint8Array(instance.exports.memory.buffer);\n }\n }\n};\n/**\r\n * ZSTD (Zstandard) decoder.\r\n */\nclass ZSTDDecoder {\n init() {\n if (init) return init;\n if (typeof fetch !== 'undefined') {\n // Web.\n init = fetch('data:application/wasm;base64,' + wasm).then(response => response.arrayBuffer()).then(arrayBuffer => WebAssembly.instantiate(arrayBuffer, IMPORT_OBJECT)).then(this._init);\n } else {\n // Node.js.\n init = WebAssembly.instantiate(Buffer.from(wasm, 'base64'), IMPORT_OBJECT).then(this._init);\n }\n return init;\n }\n _init(result) {\n instance = result.instance;\n IMPORT_OBJECT.env.emscripten_notify_memory_growth(0); // initialize heap.\n }\n\n decode(array, uncompressedSize = 0) {\n if (!instance) throw new Error(`ZSTDDecoder: Await .init() before decoding.`);\n // Write compressed data into WASM memory.\n const compressedSize = array.byteLength;\n const compressedPtr = instance.exports.malloc(compressedSize);\n heap.set(array, compressedPtr);\n // Decompress into WASM memory.\n uncompressedSize = uncompressedSize || Number(instance.exports.ZSTD_findDecompressedSize(compressedPtr, compressedSize));\n const uncompressedPtr = instance.exports.malloc(uncompressedSize);\n const actualSize = instance.exports.ZSTD_decompress(uncompressedPtr, uncompressedSize, compressedPtr, compressedSize);\n // Read decompressed data and free WASM memory.\n const dec = heap.slice(uncompressedPtr, uncompressedPtr + actualSize);\n instance.exports.free(compressedPtr);\n instance.exports.free(uncompressedPtr);\n return dec;\n }\n}\n/**\r\n * BSD License\r\n *\r\n * For Zstandard software\r\n *\r\n * Copyright (c) 2016-present, Yann Collet, Facebook, Inc. All rights reserved.\r\n *\r\n * Redistribution and use in source and binary forms, with or without modification,\r\n * are permitted provided that the following conditions are met:\r\n *\r\n * * Redistributions of source code must retain the above copyright notice, this\r\n * list of conditions and the following disclaimer.\r\n *\r\n * * Redistributions in binary form must reproduce the above copyright notice,\r\n * this list of conditions and the following disclaimer in the documentation\r\n * and/or other materials provided with the distribution.\r\n *\r\n * * Neither the name Facebook nor the names of its contributors may be used to\r\n * endorse or promote products derived from this software without specific\r\n * prior written permission.\r\n *\r\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\r\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\r\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\r\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR\r\n * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\r\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\r\n * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\r\n * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\r\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\r\n * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r\n */\n// wasm:begin\nconst wasm = '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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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';\n// wasm:end\n\nexport { ZSTDDecoder };\n//# sourceMappingURL=zstddec.modern.js.map\n","import { inflate } from 'pako';\nimport Lerc from 'lerc';\nimport { ZSTDDecoder } from 'zstddec';\nimport BaseDecoder from './basedecoder.js';\nimport { LercParameters, LercAddCompression } from '../globals.js';\n\nexport const zstd = new ZSTDDecoder();\n\nexport default class LercDecoder extends BaseDecoder {\n constructor(fileDirectory) {\n super();\n\n this.planarConfiguration = typeof fileDirectory.PlanarConfiguration !== 'undefined' ? fileDirectory.PlanarConfiguration : 1;\n this.samplesPerPixel = typeof fileDirectory.SamplesPerPixel !== 'undefined' ? fileDirectory.SamplesPerPixel : 1;\n\n this.addCompression = fileDirectory.LercParameters[LercParameters.AddCompression];\n }\n\n decodeBlock(buffer) {\n switch (this.addCompression) {\n case LercAddCompression.None:\n break;\n case LercAddCompression.Deflate:\n buffer = inflate(new Uint8Array(buffer)).buffer; // eslint-disable-line no-param-reassign, prefer-destructuring\n break;\n case LercAddCompression.Zstandard:\n buffer = zstd.decode(new Uint8Array(buffer)).buffer; // eslint-disable-line no-param-reassign, prefer-destructuring\n break;\n default:\n throw new Error(`Unsupported LERC additional compression method identifier: ${this.addCompression}`);\n }\n\n const lercResult = Lerc.decode(buffer, { returnPixelInterleavedDims: this.planarConfiguration === 1 });\n const lercData = lercResult.pixels[0];\n return lercData.buffer;\n }\n}\n"],"names":["define","inflate","Lerc"],"mappings":"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","x_google_ignoreList":[0,1,2]}
|
|
1
|
+
{"version":3,"file":"lerc-yI_Z-vIH.js","sources":["../../node_modules/lerc/LercDecode.js","../../node_modules/zstddec/dist/zstddec.modern.js","../../node_modules/geotiff/dist-module/compression/lerc.js"],"sourcesContent":["/* jshint forin: false, bitwise: false */\n/*\nCopyright 2015-2021 Esri\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\nhttp://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\nA copy of the license and additional notices are located with the\nsource distribution at:\n\nhttp://github.com/Esri/lerc/\n\nContributors: Johannes Schmid, (LERC v1)\n Chayanika Khatua, (LERC v1)\n Wenxue Ju (LERC v1, v2.x)\n*/\n\n/* 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 */\n\n/**\n * a module for decoding LERC blobs\n * @module Lerc\n */\n(function() {\n //this decoder supports all lerc versions, each version has its own class (LercDecode and Lerc2Decode). \n //the exported module handles format variation autoamtically.\n\n //the original LercDecode for Version 1\n var LercDecode = (function() {\n\n // Note: currently, this module only has an implementation for decoding LERC data, not encoding. The name of\n // the class was chosen to be future proof.\n\n var CntZImage = {};\n\n CntZImage.defaultNoDataValue = -3.4027999387901484e+38; // smallest Float32 value\n\n /**\n * Decode a LERC byte stream and return an object containing the pixel data and some required and optional\n * information about it, such as the image's width and height.\n *\n * @param {ArrayBuffer} input The LERC input byte stream\n * @param {object} [options] Decoding options, containing any of the following properties:\n * @config {number} [inputOffset = 0]\n * Skip the first inputOffset bytes of the input byte stream. A valid LERC file is expected at that position.\n * @config {Uint8Array} [encodedMask = null]\n * If specified, the decoder will not read mask information from the input and use the specified encoded\n * mask data instead. Mask header/data must not be present in the LERC byte stream in this case.\n * @config {number} [noDataValue = LercCode.defaultNoDataValue]\n * Pixel value to use for masked pixels.\n * @config {ArrayBufferView|Array} [pixelType = Float32Array]\n * The desired type of the pixelData array in the return value. Note that it is the caller's responsibility to\n * provide an appropriate noDataValue if the default pixelType is overridden.\n * @config {boolean} [returnMask = false]\n * If true, the return value will contain a maskData property of type Uint8Array which has one element per\n * pixel, the value of which is 1 or 0 depending on whether that pixel's data is present or masked. If the\n * input LERC data does not contain a mask, maskData will not be returned.\n * @config {boolean} [returnEncodedMask = false]\n * If true, the return value will contain a encodedMaskData property, which can be passed into encode() as\n * encodedMask.\n * @config {boolean} [returnFileInfo = false]\n * If true, the return value will have a fileInfo property that contains metadata obtained from the\n * LERC headers and the decoding process.\n * @config {boolean} [computeUsedBitDepths = false]\n * If true, the fileInfo property in the return value will contain the set of all block bit depths\n * encountered during decoding. Will only have an effect if returnFileInfo option is true.\n * @returns {{width, height, pixelData, minValue, maxValue, noDataValue, maskData, encodedMaskData, fileInfo}}\n */\n CntZImage.decode = function(input, options) {\n options = options || {};\n\n var skipMask = options.encodedMaskData || (options.encodedMaskData === null);\n var parsedData = parse(input, options.inputOffset || 0, skipMask);\n\n var noDataValue = (options.noDataValue !== null) ? options.noDataValue : CntZImage.defaultNoDataValue;\n\n var uncompressedData = uncompressPixelValues(parsedData, options.pixelType || Float32Array,\n options.encodedMaskData, noDataValue, options.returnMask);\n\n var result = {\n width: parsedData.width,\n height: parsedData.height,\n pixelData: uncompressedData.resultPixels,\n minValue: uncompressedData.minValue,\n maxValue: parsedData.pixels.maxValue,\n noDataValue: noDataValue\n };\n\n if (uncompressedData.resultMask) {\n result.maskData = uncompressedData.resultMask;\n }\n\n if (options.returnEncodedMask && parsedData.mask) {\n result.encodedMaskData = parsedData.mask.bitset ? parsedData.mask.bitset : null;\n }\n\n if (options.returnFileInfo) {\n result.fileInfo = formatFileInfo(parsedData);\n if (options.computeUsedBitDepths) {\n result.fileInfo.bitDepths = computeUsedBitDepths(parsedData);\n }\n }\n\n return result;\n };\n\n var uncompressPixelValues = function(data, TypedArrayClass, maskBitset, noDataValue, storeDecodedMask) {\n var blockIdx = 0;\n var numX = data.pixels.numBlocksX;\n var numY = data.pixels.numBlocksY;\n var blockWidth = Math.floor(data.width / numX);\n var blockHeight = Math.floor(data.height / numY);\n var scale = 2 * data.maxZError;\n var minValue = Number.MAX_VALUE, currentValue;\n maskBitset = maskBitset || ((data.mask) ? data.mask.bitset : null);\n\n var resultPixels, resultMask;\n resultPixels = new TypedArrayClass(data.width * data.height);\n if (storeDecodedMask && maskBitset) {\n resultMask = new Uint8Array(data.width * data.height);\n }\n var blockDataBuffer = new Float32Array(blockWidth * blockHeight);\n\n var xx, yy;\n for (var y = 0; y <= numY; y++) {\n var thisBlockHeight = (y !== numY) ? blockHeight : (data.height % numY);\n if (thisBlockHeight === 0) {\n continue;\n }\n for (var x = 0; x <= numX; x++) {\n var thisBlockWidth = (x !== numX) ? blockWidth : (data.width % numX);\n if (thisBlockWidth === 0) {\n continue;\n }\n\n var outPtr = y * data.width * blockHeight + x * blockWidth;\n var outStride = data.width - thisBlockWidth;\n\n var block = data.pixels.blocks[blockIdx];\n\n var blockData, blockPtr, constValue;\n if (block.encoding < 2) {\n // block is either uncompressed or bit-stuffed (encodings 0 and 1)\n if (block.encoding === 0) {\n // block is uncompressed\n blockData = block.rawData;\n } else {\n // block is bit-stuffed\n unstuff(block.stuffedData, block.bitsPerPixel, block.numValidPixels, block.offset, scale, blockDataBuffer, data.pixels.maxValue);\n blockData = blockDataBuffer;\n }\n blockPtr = 0;\n }\n else if (block.encoding === 2) {\n // block is all 0\n constValue = 0;\n }\n else {\n // block has constant value (encoding === 3)\n constValue = block.offset;\n }\n\n var maskByte;\n if (maskBitset) {\n for (yy = 0; yy < thisBlockHeight; yy++) {\n if (outPtr & 7) {\n //\n maskByte = maskBitset[outPtr >> 3];\n maskByte <<= outPtr & 7;\n }\n for (xx = 0; xx < thisBlockWidth; xx++) {\n if (!(outPtr & 7)) {\n // read next byte from mask\n maskByte = maskBitset[outPtr >> 3];\n }\n if (maskByte & 128) {\n // pixel data present\n if (resultMask) {\n resultMask[outPtr] = 1;\n }\n currentValue = (block.encoding < 2) ? blockData[blockPtr++] : constValue;\n minValue = minValue > currentValue ? currentValue : minValue;\n resultPixels[outPtr++] = currentValue;\n } else {\n // pixel data not present\n if (resultMask) {\n resultMask[outPtr] = 0;\n }\n resultPixels[outPtr++] = noDataValue;\n }\n maskByte <<= 1;\n }\n outPtr += outStride;\n }\n } else {\n // mask not present, simply copy block over\n if (block.encoding < 2) {\n // duplicating this code block for performance reasons\n // blockData case:\n for (yy = 0; yy < thisBlockHeight; yy++) {\n for (xx = 0; xx < thisBlockWidth; xx++) {\n currentValue = blockData[blockPtr++];\n minValue = minValue > currentValue ? currentValue : minValue;\n resultPixels[outPtr++] = currentValue;\n }\n outPtr += outStride;\n }\n }\n else {\n // constValue case:\n minValue = minValue > constValue ? constValue : minValue;\n for (yy = 0; yy < thisBlockHeight; yy++) {\n for (xx = 0; xx < thisBlockWidth; xx++) {\n resultPixels[outPtr++] = constValue;\n }\n outPtr += outStride;\n }\n }\n }\n if ((block.encoding === 1) && (blockPtr !== block.numValidPixels)) {\n throw \"Block and Mask do not match\";\n }\n blockIdx++;\n }\n }\n\n return {\n resultPixels: resultPixels,\n resultMask: resultMask,\n minValue: minValue\n };\n };\n\n var formatFileInfo = function(data) {\n return {\n \"fileIdentifierString\": data.fileIdentifierString,\n \"fileVersion\": data.fileVersion,\n \"imageType\": data.imageType,\n \"height\": data.height,\n \"width\": data.width,\n \"maxZError\": data.maxZError,\n \"eofOffset\": data.eofOffset,\n \"mask\": data.mask ? {\n \"numBlocksX\": data.mask.numBlocksX,\n \"numBlocksY\": data.mask.numBlocksY,\n \"numBytes\": data.mask.numBytes,\n \"maxValue\": data.mask.maxValue\n } : null,\n \"pixels\": {\n \"numBlocksX\": data.pixels.numBlocksX,\n \"numBlocksY\": data.pixels.numBlocksY,\n \"numBytes\": data.pixels.numBytes,\n \"maxValue\": data.pixels.maxValue,\n \"noDataValue\": data.noDataValue\n }\n };\n };\n\n var computeUsedBitDepths = function(data) {\n var numBlocks = data.pixels.numBlocksX * data.pixels.numBlocksY;\n var bitDepths = {};\n for (var i = 0; i < numBlocks; i++) {\n var block = data.pixels.blocks[i];\n if (block.encoding === 0) {\n bitDepths.float32 = true;\n } else if (block.encoding === 1) {\n bitDepths[block.bitsPerPixel] = true;\n } else {\n bitDepths[0] = true;\n }\n }\n\n return Object.keys(bitDepths);\n };\n\n var parse = function(input, fp, skipMask) {\n var data = {};\n\n // File header\n var fileIdView = new Uint8Array(input, fp, 10);\n data.fileIdentifierString = String.fromCharCode.apply(null, fileIdView);\n if (data.fileIdentifierString.trim() !== \"CntZImage\") {\n throw \"Unexpected file identifier string: \" + data.fileIdentifierString;\n }\n fp += 10;\n var view = new DataView(input, fp, 24);\n data.fileVersion = view.getInt32(0, true);\n data.imageType = view.getInt32(4, true);\n data.height = view.getUint32(8, true);\n data.width = view.getUint32(12, true);\n data.maxZError = view.getFloat64(16, true);\n fp += 24;\n\n // Mask Header\n if (!skipMask) {\n view = new DataView(input, fp, 16);\n data.mask = {};\n data.mask.numBlocksY = view.getUint32(0, true);\n data.mask.numBlocksX = view.getUint32(4, true);\n data.mask.numBytes = view.getUint32(8, true);\n data.mask.maxValue = view.getFloat32(12, true);\n fp += 16;\n\n // Mask Data\n if (data.mask.numBytes > 0) {\n var bitset = new Uint8Array(Math.ceil(data.width * data.height / 8));\n view = new DataView(input, fp, data.mask.numBytes);\n var cnt = view.getInt16(0, true);\n var ip = 2, op = 0;\n do {\n if (cnt > 0) {\n while (cnt--) { bitset[op++] = view.getUint8(ip++); }\n } else {\n var val = view.getUint8(ip++);\n cnt = -cnt;\n while (cnt--) { bitset[op++] = val; }\n }\n cnt = view.getInt16(ip, true);\n ip += 2;\n } while (ip < data.mask.numBytes);\n if ((cnt !== -32768) || (op < bitset.length)) {\n throw \"Unexpected end of mask RLE encoding\";\n }\n data.mask.bitset = bitset;\n fp += data.mask.numBytes;\n }\n else if ((data.mask.numBytes | data.mask.numBlocksY | data.mask.maxValue) === 0) { // Special case, all nodata\n data.mask.bitset = new Uint8Array(Math.ceil(data.width * data.height / 8));\n }\n }\n\n // Pixel Header\n view = new DataView(input, fp, 16);\n data.pixels = {};\n data.pixels.numBlocksY = view.getUint32(0, true);\n data.pixels.numBlocksX = view.getUint32(4, true);\n data.pixels.numBytes = view.getUint32(8, true);\n data.pixels.maxValue = view.getFloat32(12, true);\n fp += 16;\n\n var numBlocksX = data.pixels.numBlocksX;\n var numBlocksY = data.pixels.numBlocksY;\n // the number of blocks specified in the header does not take into account the blocks at the end of\n // each row/column with a special width/height that make the image complete in case the width is not\n // evenly divisible by the number of blocks.\n var actualNumBlocksX = numBlocksX + ((data.width % numBlocksX) > 0 ? 1 : 0);\n var actualNumBlocksY = numBlocksY + ((data.height % numBlocksY) > 0 ? 1 : 0);\n data.pixels.blocks = new Array(actualNumBlocksX * actualNumBlocksY);\n var blockI = 0;\n for (var blockY = 0; blockY < actualNumBlocksY; blockY++) {\n for (var blockX = 0; blockX < actualNumBlocksX; blockX++) {\n\n // Block\n var size = 0;\n var bytesLeft = input.byteLength - fp;\n view = new DataView(input, fp, Math.min(10, bytesLeft));\n var block = {};\n data.pixels.blocks[blockI++] = block;\n var headerByte = view.getUint8(0); size++;\n block.encoding = headerByte & 63;\n if (block.encoding > 3) {\n throw \"Invalid block encoding (\" + block.encoding + \")\";\n }\n if (block.encoding === 2) {\n fp++;\n continue;\n }\n if ((headerByte !== 0) && (headerByte !== 2)) {\n headerByte >>= 6;\n block.offsetType = headerByte;\n if (headerByte === 2) {\n block.offset = view.getInt8(1); size++;\n } else if (headerByte === 1) {\n block.offset = view.getInt16(1, true); size += 2;\n } else if (headerByte === 0) {\n block.offset = view.getFloat32(1, true); size += 4;\n } else {\n throw \"Invalid block offset type\";\n }\n\n if (block.encoding === 1) {\n headerByte = view.getUint8(size); size++;\n block.bitsPerPixel = headerByte & 63;\n headerByte >>= 6;\n block.numValidPixelsType = headerByte;\n if (headerByte === 2) {\n block.numValidPixels = view.getUint8(size); size++;\n } else if (headerByte === 1) {\n block.numValidPixels = view.getUint16(size, true); size += 2;\n } else if (headerByte === 0) {\n block.numValidPixels = view.getUint32(size, true); size += 4;\n } else {\n throw \"Invalid valid pixel count type\";\n }\n }\n }\n fp += size;\n\n if (block.encoding === 3) {\n continue;\n }\n\n var arrayBuf, store8;\n if (block.encoding === 0) {\n var numPixels = (data.pixels.numBytes - 1) / 4;\n if (numPixels !== Math.floor(numPixels)) {\n throw \"uncompressed block has invalid length\";\n }\n arrayBuf = new ArrayBuffer(numPixels * 4);\n store8 = new Uint8Array(arrayBuf);\n store8.set(new Uint8Array(input, fp, numPixels * 4));\n var rawData = new Float32Array(arrayBuf);\n block.rawData = rawData;\n fp += numPixels * 4;\n } else if (block.encoding === 1) {\n var dataBytes = Math.ceil(block.numValidPixels * block.bitsPerPixel / 8);\n var dataWords = Math.ceil(dataBytes / 4);\n arrayBuf = new ArrayBuffer(dataWords * 4);\n store8 = new Uint8Array(arrayBuf);\n store8.set(new Uint8Array(input, fp, dataBytes));\n block.stuffedData = new Uint32Array(arrayBuf);\n fp += dataBytes;\n }\n }\n }\n data.eofOffset = fp;\n return data;\n };\n\n var unstuff = function(src, bitsPerPixel, numPixels, offset, scale, dest, maxValue) {\n var bitMask = (1 << bitsPerPixel) - 1;\n var i = 0, o;\n var bitsLeft = 0;\n var n, buffer;\n var nmax = Math.ceil((maxValue - offset) / scale);\n // get rid of trailing bytes that are already part of next block\n var numInvalidTailBytes = src.length * 4 - Math.ceil(bitsPerPixel * numPixels / 8);\n src[src.length - 1] <<= 8 * numInvalidTailBytes;\n\n for (o = 0; o < numPixels; o++) {\n if (bitsLeft === 0) {\n buffer = src[i++];\n bitsLeft = 32;\n }\n if (bitsLeft >= bitsPerPixel) {\n n = (buffer >>> (bitsLeft - bitsPerPixel)) & bitMask;\n bitsLeft -= bitsPerPixel;\n } else {\n var missingBits = (bitsPerPixel - bitsLeft);\n n = ((buffer & bitMask) << missingBits) & bitMask;\n buffer = src[i++];\n bitsLeft = 32 - missingBits;\n n += (buffer >>> bitsLeft);\n }\n //pixel values may exceed max due to quantization\n dest[o] = n < nmax ? offset + n * scale : maxValue;\n }\n return dest;\n };\n\n return CntZImage;\n })();\n\n //version 2. Supports 2.1, 2.2, 2.3\n var Lerc2Decode = (function() {\n \"use strict\";\n // Note: currently, this module only has an implementation for decoding LERC data, not encoding. The name of\n // the class was chosen to be future proof, following LercDecode.\n\n /*****************************************\n * private static class bitsutffer used by Lerc2Decode\n *******************************************/\n var BitStuffer = {\n //methods ending with 2 are for the new byte order used by Lerc2.3 and above.\n //originalUnstuff is used to unpack Huffman code table. code is duplicated to unstuffx for performance reasons.\n unstuff: function(src, dest, bitsPerPixel, numPixels, lutArr, offset, scale, maxValue) {\n var bitMask = (1 << bitsPerPixel) - 1;\n var i = 0, o;\n var bitsLeft = 0;\n var n, buffer, missingBits, nmax;\n\n // get rid of trailing bytes that are already part of next block\n var numInvalidTailBytes = src.length * 4 - Math.ceil(bitsPerPixel * numPixels / 8);\n src[src.length - 1] <<= 8 * numInvalidTailBytes;\n if (lutArr) {\n for (o = 0; o < numPixels; o++) {\n if (bitsLeft === 0) {\n buffer = src[i++];\n bitsLeft = 32;\n }\n if (bitsLeft >= bitsPerPixel) {\n n = (buffer >>> (bitsLeft - bitsPerPixel)) & bitMask;\n bitsLeft -= bitsPerPixel;\n }\n else {\n missingBits = (bitsPerPixel - bitsLeft);\n n = ((buffer & bitMask) << missingBits) & bitMask;\n buffer = src[i++];\n bitsLeft = 32 - missingBits;\n n += (buffer >>> bitsLeft);\n }\n dest[o] = lutArr[n];//offset + lutArr[n] * scale;\n }\n }\n else {\n nmax = Math.ceil((maxValue - offset) / scale);\n for (o = 0; o < numPixels; o++) {\n if (bitsLeft === 0) {\n buffer = src[i++];\n bitsLeft = 32;\n }\n if (bitsLeft >= bitsPerPixel) {\n n = (buffer >>> (bitsLeft - bitsPerPixel)) & bitMask;\n bitsLeft -= bitsPerPixel;\n }\n else {\n missingBits = (bitsPerPixel - bitsLeft);\n n = ((buffer & bitMask) << missingBits) & bitMask;\n buffer = src[i++];\n bitsLeft = 32 - missingBits;\n n += (buffer >>> bitsLeft);\n }\n //pixel values may exceed max due to quantization\n dest[o] = n < nmax ? offset + n * scale : maxValue;\n }\n }\n },\n\n unstuffLUT: function(src, bitsPerPixel, numPixels, offset, scale, maxValue) {\n var bitMask = (1 << bitsPerPixel) - 1;\n var i = 0, o = 0, missingBits = 0, bitsLeft = 0, n = 0;\n var buffer;\n var dest = [];\n\n // get rid of trailing bytes that are already part of next block\n var numInvalidTailBytes = src.length * 4 - Math.ceil(bitsPerPixel * numPixels / 8);\n src[src.length - 1] <<= 8 * numInvalidTailBytes;\n\n var nmax = Math.ceil((maxValue - offset) / scale);\n for (o = 0; o < numPixels; o++) {\n if (bitsLeft === 0) {\n buffer = src[i++];\n bitsLeft = 32;\n }\n if (bitsLeft >= bitsPerPixel) {\n n = (buffer >>> (bitsLeft - bitsPerPixel)) & bitMask;\n bitsLeft -= bitsPerPixel;\n } else {\n missingBits = (bitsPerPixel - bitsLeft);\n n = ((buffer & bitMask) << missingBits) & bitMask;\n buffer = src[i++];\n bitsLeft = 32 - missingBits;\n n += (buffer >>> bitsLeft);\n }\n //dest.push(n);\n dest[o] = n < nmax ? offset + n * scale : maxValue;\n }\n dest.unshift(offset);//1st one\n return dest;\n },\n\n unstuff2: function(src, dest, bitsPerPixel, numPixels, lutArr, offset, scale, maxValue) {\n var bitMask = (1 << bitsPerPixel) - 1;\n var i = 0, o;\n var bitsLeft = 0, bitPos = 0;\n var n, buffer, missingBits;\n if (lutArr) {\n for (o = 0; o < numPixels; o++) {\n if (bitsLeft === 0) {\n buffer = src[i++];\n bitsLeft = 32;\n bitPos = 0;\n }\n if (bitsLeft >= bitsPerPixel) {\n n = ((buffer >>> bitPos) & bitMask);\n bitsLeft -= bitsPerPixel;\n bitPos += bitsPerPixel;\n } else {\n missingBits = (bitsPerPixel - bitsLeft);\n n = (buffer >>> bitPos) & bitMask;\n buffer = src[i++];\n bitsLeft = 32 - missingBits;\n n |= (buffer & ((1 << missingBits) - 1)) << (bitsPerPixel - missingBits);\n bitPos = missingBits;\n }\n dest[o] = lutArr[n];\n }\n }\n else {\n var nmax = Math.ceil((maxValue - offset) / scale);\n for (o = 0; o < numPixels; o++) {\n if (bitsLeft === 0) {\n buffer = src[i++];\n bitsLeft = 32;\n bitPos = 0;\n }\n if (bitsLeft >= bitsPerPixel) {\n //no unsigned left shift\n n = ((buffer >>> bitPos) & bitMask);\n bitsLeft -= bitsPerPixel;\n bitPos += bitsPerPixel;\n } else {\n missingBits = (bitsPerPixel - bitsLeft);\n n = (buffer >>> bitPos) & bitMask;//((buffer & bitMask) << missingBits) & bitMask;\n buffer = src[i++];\n bitsLeft = 32 - missingBits;\n n |= (buffer & ((1 << missingBits) - 1)) << (bitsPerPixel - missingBits);\n bitPos = missingBits;\n }\n //pixel values may exceed max due to quantization\n dest[o] = n < nmax ? offset + n * scale : maxValue;\n }\n }\n return dest;\n },\n\n unstuffLUT2: function(src, bitsPerPixel, numPixels, offset, scale, maxValue) {\n var bitMask = (1 << bitsPerPixel) - 1;\n var i = 0, o = 0, missingBits = 0, bitsLeft = 0, n = 0, bitPos = 0;\n var buffer;\n var dest = [];\n var nmax = Math.ceil((maxValue - offset) / scale);\n for (o = 0; o < numPixels; o++) {\n if (bitsLeft === 0) {\n buffer = src[i++];\n bitsLeft = 32;\n bitPos = 0;\n }\n if (bitsLeft >= bitsPerPixel) {\n //no unsigned left shift\n n = ((buffer >>> bitPos) & bitMask);\n bitsLeft -= bitsPerPixel;\n bitPos += bitsPerPixel;\n } else {\n missingBits = (bitsPerPixel - bitsLeft);\n n = (buffer >>> bitPos) & bitMask;//((buffer & bitMask) << missingBits) & bitMask;\n buffer = src[i++];\n bitsLeft = 32 - missingBits;\n n |= (buffer & ((1 << missingBits) - 1)) << (bitsPerPixel - missingBits);\n bitPos = missingBits;\n }\n //dest.push(n);\n dest[o] = n < nmax ? offset + n * scale : maxValue;\n }\n dest.unshift(offset);\n return dest;\n },\n\n originalUnstuff: function(src, dest, bitsPerPixel, numPixels) {\n var bitMask = (1 << bitsPerPixel) - 1;\n var i = 0, o;\n var bitsLeft = 0;\n var n, buffer, missingBits;\n\n // get rid of trailing bytes that are already part of next block\n var numInvalidTailBytes = src.length * 4 - Math.ceil(bitsPerPixel * numPixels / 8);\n src[src.length - 1] <<= 8 * numInvalidTailBytes;\n\n for (o = 0; o < numPixels; o++) {\n if (bitsLeft === 0) {\n buffer = src[i++];\n bitsLeft = 32;\n }\n if (bitsLeft >= bitsPerPixel) {\n n = (buffer >>> (bitsLeft - bitsPerPixel)) & bitMask;\n bitsLeft -= bitsPerPixel;\n }\n else {\n missingBits = (bitsPerPixel - bitsLeft);\n n = ((buffer & bitMask) << missingBits) & bitMask;\n buffer = src[i++];\n bitsLeft = 32 - missingBits;\n n += (buffer >>> bitsLeft);\n }\n dest[o] = n;\n }\n return dest;\n },\n\n originalUnstuff2: function(src, dest, bitsPerPixel, numPixels) {\n var bitMask = (1 << bitsPerPixel) - 1;\n var i = 0, o;\n var bitsLeft = 0, bitPos = 0;\n var n, buffer, missingBits;\n //micro-optimizations\n for (o = 0; o < numPixels; o++) {\n if (bitsLeft === 0) {\n buffer = src[i++];\n bitsLeft = 32;\n bitPos = 0;\n }\n if (bitsLeft >= bitsPerPixel) {\n //no unsigned left shift\n n = ((buffer >>> bitPos) & bitMask);\n bitsLeft -= bitsPerPixel;\n bitPos += bitsPerPixel;\n } else {\n missingBits = (bitsPerPixel - bitsLeft);\n n = (buffer >>> bitPos) & bitMask;//((buffer & bitMask) << missingBits) & bitMask;\n buffer = src[i++];\n bitsLeft = 32 - missingBits;\n n |= (buffer & ((1 << missingBits) - 1)) << (bitsPerPixel - missingBits);\n bitPos = missingBits;\n }\n dest[o] = n;\n }\n return dest;\n }\n };\n\n /*****************************************\n *private static class used by Lerc2Decode\n ******************************************/\n var Lerc2Helpers = {\n HUFFMAN_LUT_BITS_MAX: 12, //use 2^12 lut, treat it like constant\n computeChecksumFletcher32: function(input) {\n\n var sum1 = 0xffff, sum2 = 0xffff;\n var len = input.length;\n var words = Math.floor(len / 2);\n var i = 0;\n while (words) {\n var tlen = (words >= 359) ? 359 : words;\n words -= tlen;\n do {\n sum1 += (input[i++] << 8);\n sum2 += sum1 += input[i++];\n } while (--tlen);\n\n sum1 = (sum1 & 0xffff) + (sum1 >>> 16);\n sum2 = (sum2 & 0xffff) + (sum2 >>> 16);\n }\n\n // add the straggler byte if it exists\n if (len & 1) {\n sum2 += sum1 += (input[i] << 8);\n }\n // second reduction step to reduce sums to 16 bits\n sum1 = (sum1 & 0xffff) + (sum1 >>> 16);\n sum2 = (sum2 & 0xffff) + (sum2 >>> 16);\n\n return (sum2 << 16 | sum1) >>> 0;\n },\n\n readHeaderInfo: function(input, data) {\n var ptr = data.ptr;\n var fileIdView = new Uint8Array(input, ptr, 6);\n var headerInfo = {};\n headerInfo.fileIdentifierString = String.fromCharCode.apply(null, fileIdView);\n if (headerInfo.fileIdentifierString.lastIndexOf(\"Lerc2\", 0) !== 0) {\n throw \"Unexpected file identifier string (expect Lerc2 ): \" + headerInfo.fileIdentifierString;\n }\n ptr += 6;\n var view = new DataView(input, ptr, 8);\n var fileVersion = view.getInt32(0, true);\n headerInfo.fileVersion = fileVersion;\n ptr += 4;\n if (fileVersion >= 3) {\n headerInfo.checksum = view.getUint32(4, true); //nrows\n ptr += 4;\n }\n\n //keys start from here\n view = new DataView(input, ptr, 12);\n headerInfo.height = view.getUint32(0, true); //nrows\n headerInfo.width = view.getUint32(4, true); //ncols\n ptr += 8;\n if (fileVersion >= 4) {\n headerInfo.numDims = view.getUint32(8, true);\n ptr += 4;\n }\n else {\n headerInfo.numDims = 1;\n }\n\n view = new DataView(input, ptr, 40);\n headerInfo.numValidPixel = view.getUint32(0, true);\n headerInfo.microBlockSize = view.getInt32(4, true);\n headerInfo.blobSize = view.getInt32(8, true);\n headerInfo.imageType = view.getInt32(12, true);\n\n headerInfo.maxZError = view.getFloat64(16, true);\n headerInfo.zMin = view.getFloat64(24, true);\n headerInfo.zMax = view.getFloat64(32, true);\n ptr += 40;\n data.headerInfo = headerInfo;\n data.ptr = ptr;\n\n var checksum, keyLength;\n if (fileVersion >= 3) {\n keyLength = fileVersion >= 4 ? 52 : 48;\n checksum = this.computeChecksumFletcher32(new Uint8Array(input, ptr - keyLength, headerInfo.blobSize - 14));\n if (checksum !== headerInfo.checksum) {\n throw \"Checksum failed.\";\n }\n }\n return true;\n },\n\n checkMinMaxRanges: function(input, data) {\n var headerInfo = data.headerInfo;\n var OutPixelTypeArray = this.getDataTypeArray(headerInfo.imageType);\n var rangeBytes = headerInfo.numDims * this.getDataTypeSize(headerInfo.imageType);\n var minValues = this.readSubArray(input, data.ptr, OutPixelTypeArray, rangeBytes);\n var maxValues = this.readSubArray(input, data.ptr + rangeBytes, OutPixelTypeArray, rangeBytes);\n data.ptr += (2 * rangeBytes);\n var i, equal = true;\n for (i = 0; i < headerInfo.numDims; i++) {\n if (minValues[i] !== maxValues[i]) {\n equal = false;\n break;\n }\n }\n headerInfo.minValues = minValues;\n headerInfo.maxValues = maxValues;\n return equal;\n },\n\n readSubArray: function(input, ptr, OutPixelTypeArray, numBytes) {\n var rawData;\n if (OutPixelTypeArray === Uint8Array) {\n rawData = new Uint8Array(input, ptr, numBytes);\n }\n else {\n var arrayBuf = new ArrayBuffer(numBytes);\n var store8 = new Uint8Array(arrayBuf);\n store8.set(new Uint8Array(input, ptr, numBytes));\n rawData = new OutPixelTypeArray(arrayBuf);\n }\n return rawData;\n },\n\n readMask: function(input, data) {\n var ptr = data.ptr;\n var headerInfo = data.headerInfo;\n var numPixels = headerInfo.width * headerInfo.height;\n var numValidPixel = headerInfo.numValidPixel;\n\n var view = new DataView(input, ptr, 4);\n var mask = {};\n mask.numBytes = view.getUint32(0, true);\n ptr += 4;\n\n // Mask Data\n if ((0 === numValidPixel || numPixels === numValidPixel) && 0 !== mask.numBytes) {\n throw (\"invalid mask\");\n }\n var bitset, resultMask;\n if (numValidPixel === 0) {\n bitset = new Uint8Array(Math.ceil(numPixels / 8));\n mask.bitset = bitset;\n resultMask = new Uint8Array(numPixels);\n data.pixels.resultMask = resultMask;\n ptr += mask.numBytes;\n }// ????? else if (data.mask.numBytes > 0 && data.mask.numBytes< data.numValidPixel) {\n else if (mask.numBytes > 0) {\n bitset = new Uint8Array(Math.ceil(numPixels / 8));\n view = new DataView(input, ptr, mask.numBytes);\n var cnt = view.getInt16(0, true);\n var ip = 2, op = 0, val = 0;\n do {\n if (cnt > 0) {\n while (cnt--) { bitset[op++] = view.getUint8(ip++); }\n } else {\n val = view.getUint8(ip++);\n cnt = -cnt;\n while (cnt--) { bitset[op++] = val; }\n }\n cnt = view.getInt16(ip, true);\n ip += 2;\n } while (ip < mask.numBytes);\n if ((cnt !== -32768) || (op < bitset.length)) {\n throw \"Unexpected end of mask RLE encoding\";\n }\n\n resultMask = new Uint8Array(numPixels);\n var mb = 0, k = 0;\n\n for (k = 0; k < numPixels; k++) {\n if (k & 7) {\n mb = bitset[k >> 3];\n mb <<= k & 7;\n }\n else {\n mb = bitset[k >> 3];\n }\n if (mb & 128) {\n resultMask[k] = 1;\n }\n }\n data.pixels.resultMask = resultMask;\n\n mask.bitset = bitset;\n ptr += mask.numBytes;\n }\n data.ptr = ptr;\n data.mask = mask;\n return true;\n },\n\n readDataOneSweep: function(input, data, OutPixelTypeArray, useBSQForOutputDim) {\n var ptr = data.ptr;\n var headerInfo = data.headerInfo;\n var numDims = headerInfo.numDims;\n var numPixels = headerInfo.width * headerInfo.height;\n var imageType = headerInfo.imageType;\n var numBytes = headerInfo.numValidPixel * Lerc2Helpers.getDataTypeSize(imageType) * numDims;\n //data.pixels.numBytes = numBytes;\n var rawData;\n var mask = data.pixels.resultMask;\n if (OutPixelTypeArray === Uint8Array) {\n rawData = new Uint8Array(input, ptr, numBytes);\n }\n else {\n var arrayBuf = new ArrayBuffer(numBytes);\n var store8 = new Uint8Array(arrayBuf);\n store8.set(new Uint8Array(input, ptr, numBytes));\n rawData = new OutPixelTypeArray(arrayBuf);\n }\n if (rawData.length === numPixels * numDims) {\n if (useBSQForOutputDim) {\n data.pixels.resultPixels = Lerc2Helpers.swapDimensionOrder(rawData, numPixels, numDims, OutPixelTypeArray, true);\n }\n else {\n data.pixels.resultPixels = rawData;\n }\n }\n else //mask\n {\n data.pixels.resultPixels = new OutPixelTypeArray(numPixels * numDims);\n var z = 0, k = 0, i = 0, nStart = 0;\n if (numDims > 1) {\n if (useBSQForOutputDim) {\n for (k = 0; k < numPixels; k++) {\n if (mask[k]) {\n nStart = k;\n for (i = 0; i < numDims; i++, nStart+=numPixels) {\n data.pixels.resultPixels[nStart] = rawData[z++];\n }\n }\n }\n }\n else {\n for (k = 0; k < numPixels; k++) {\n if (mask[k]) {\n nStart = k * numDims;\n for (i = 0; i < numDims; i++) {\n data.pixels.resultPixels[nStart + i] = rawData[z++];\n }\n }\n }\n }\n }\n else {\n for (k = 0; k < numPixels; k++) {\n if (mask[k]) {\n data.pixels.resultPixels[k] = rawData[z++];\n }\n }\n }\n }\n ptr += numBytes;\n data.ptr = ptr; //return data;\n return true;\n },\n\n readHuffmanTree: function(input, data) {\n var BITS_MAX = this.HUFFMAN_LUT_BITS_MAX; //8 is slow for the large test image\n //var size_max = 1 << BITS_MAX;\n /* ************************\n * reading code table\n *************************/\n var view = new DataView(input, data.ptr, 16);\n data.ptr += 16;\n var version = view.getInt32(0, true);\n if (version < 2) {\n throw \"unsupported Huffman version\";\n }\n var size = view.getInt32(4, true);\n var i0 = view.getInt32(8, true);\n var i1 = view.getInt32(12, true);\n if (i0 >= i1) {\n return false;\n }\n var blockDataBuffer = new Uint32Array(i1 - i0);\n Lerc2Helpers.decodeBits(input, data, blockDataBuffer);\n var codeTable = []; //size\n var i, j, k, len;\n\n for (i = i0; i < i1; i++) {\n j = i - (i < size ? 0 : size);//wrap around\n codeTable[j] = { first: blockDataBuffer[i - i0], second: null };\n }\n\n var dataBytes = input.byteLength - data.ptr;\n var dataWords = Math.ceil(dataBytes / 4);\n var arrayBuf = new ArrayBuffer(dataWords * 4);\n var store8 = new Uint8Array(arrayBuf);\n store8.set(new Uint8Array(input, data.ptr, dataBytes));\n var stuffedData = new Uint32Array(arrayBuf); //must start from x*4\n var bitPos = 0, word, srcPtr = 0;\n word = stuffedData[0];\n for (i = i0; i < i1; i++) {\n j = i - (i < size ? 0 : size);//wrap around\n len = codeTable[j].first;\n if (len > 0) {\n codeTable[j].second = (word << bitPos) >>> (32 - len);\n\n if (32 - bitPos >= len) {\n bitPos += len;\n if (bitPos === 32) {\n bitPos = 0;\n srcPtr++;\n word = stuffedData[srcPtr];\n }\n }\n else {\n bitPos += len - 32;\n srcPtr++;\n word = stuffedData[srcPtr];\n codeTable[j].second |= word >>> (32 - bitPos);\n }\n }\n }\n\n //finished reading code table\n\n /* ************************\n * building lut\n *************************/\n var numBitsLUT = 0, numBitsLUTQick = 0;\n var tree = new TreeNode();\n for (i = 0; i < codeTable.length; i++) {\n if (codeTable[i] !== undefined) {\n numBitsLUT = Math.max(numBitsLUT, codeTable[i].first);\n }\n }\n if (numBitsLUT >= BITS_MAX) {\n numBitsLUTQick = BITS_MAX;\n }\n else {\n numBitsLUTQick = numBitsLUT;\n }\n // for debugging purpose\n // if (numBitsLUT >= 30) {\n // console.log(\"WARning, large NUM LUT BITS IS \" + numBitsLUT);\n // }\n var decodeLut = [], entry, code, numEntries, jj, currentBit, node;\n for (i = i0; i < i1; i++) {\n j = i - (i < size ? 0 : size);//wrap around\n len = codeTable[j].first;\n if (len > 0) {\n entry = [len, j];\n if (len <= numBitsLUTQick) {\n code = codeTable[j].second << (numBitsLUTQick - len);\n numEntries = 1 << (numBitsLUTQick - len);\n for (k = 0; k < numEntries; k++) {\n decodeLut[code | k] = entry;\n }\n }\n else {\n //build tree\n code = codeTable[j].second;\n node = tree;\n for (jj = len - 1; jj >= 0; jj--) {\n currentBit = code >>> jj & 1; //no left shift as length could be 30,31\n if (currentBit) {\n if (!node.right) {\n node.right = new TreeNode();\n }\n node = node.right;\n }\n else {\n if (!node.left) {\n node.left = new TreeNode();\n }\n node = node.left;\n }\n if (jj === 0 && !node.val) {\n node.val = entry[1];\n }\n }\n }\n }\n }\n return {\n decodeLut: decodeLut,\n numBitsLUTQick: numBitsLUTQick,\n numBitsLUT: numBitsLUT,\n tree: tree,\n stuffedData: stuffedData,\n srcPtr: srcPtr,\n bitPos: bitPos\n };\n },\n\n readHuffman: function(input, data, OutPixelTypeArray, useBSQForOutputDim) {\n var headerInfo = data.headerInfo;\n var numDims = headerInfo.numDims;\n var height = data.headerInfo.height;\n var width = data.headerInfo.width;\n var numPixels = width * height;\n //var size_max = 1 << BITS_MAX;\n /* ************************\n * reading huffman structure info\n *************************/\n var huffmanInfo = this.readHuffmanTree(input, data);\n var decodeLut = huffmanInfo.decodeLut;\n var tree = huffmanInfo.tree;\n //stuffedData includes huffman headers\n var stuffedData = huffmanInfo.stuffedData;\n var srcPtr = huffmanInfo.srcPtr;\n var bitPos = huffmanInfo.bitPos;\n var numBitsLUTQick = huffmanInfo.numBitsLUTQick;\n var numBitsLUT = huffmanInfo.numBitsLUT;\n var offset = data.headerInfo.imageType === 0 ? 128 : 0;\n /*************************\n * decode\n ***************************/\n var node, val, delta, mask = data.pixels.resultMask, valTmp, valTmpQuick, currentBit;\n var i, j, k, ii;\n var prevVal = 0;\n if (bitPos > 0) {\n srcPtr++;\n bitPos = 0;\n }\n var word = stuffedData[srcPtr];\n var deltaEncode = data.encodeMode === 1;\n var resultPixelsAllDim = new OutPixelTypeArray(numPixels * numDims);\n var resultPixels = resultPixelsAllDim;\n var iDim;\n // TODO: reevaluate the need to keep inlined decoding code as IE support is phasing out\n if (numDims < 2 || deltaEncode) {\n for (iDim = 0; iDim < numDims; iDim++) {\n if (numDims > 1) {\n //get the mem block of current dimension\n resultPixels = new OutPixelTypeArray(resultPixelsAllDim.buffer, numPixels * iDim, numPixels);\n prevVal = 0;\n }\n if (data.headerInfo.numValidPixel === width * height) { //all valid\n for (k = 0, i = 0; i < height; i++) {\n for (j = 0; j < width; j++, k++) {\n val = 0;\n valTmp = (word << bitPos) >>> (32 - numBitsLUTQick);\n valTmpQuick = valTmp;// >>> deltaBits;\n if (32 - bitPos < numBitsLUTQick) {\n valTmp |= ((stuffedData[srcPtr + 1]) >>> (64 - bitPos - numBitsLUTQick));\n valTmpQuick = valTmp;// >>> deltaBits;\n }\n if (decodeLut[valTmpQuick]) // if there, move the correct number of bits and done\n {\n val = decodeLut[valTmpQuick][1];\n bitPos += decodeLut[valTmpQuick][0];\n }\n else {\n valTmp = (word << bitPos) >>> (32 - numBitsLUT);\n valTmpQuick = valTmp;// >>> deltaBits;\n if (32 - bitPos < numBitsLUT) {\n valTmp |= ((stuffedData[srcPtr + 1]) >>> (64 - bitPos - numBitsLUT));\n valTmpQuick = valTmp;// >>> deltaBits;\n }\n node = tree;\n for (ii = 0; ii < numBitsLUT; ii++) {\n currentBit = valTmp >>> (numBitsLUT - ii - 1) & 1;\n node = currentBit ? node.right : node.left;\n if (!(node.left || node.right)) {\n val = node.val;\n bitPos = bitPos + ii + 1;\n break;\n }\n }\n }\n \n if (bitPos >= 32) {\n bitPos -= 32;\n srcPtr++;\n word = stuffedData[srcPtr];\n }\n \n delta = val - offset;\n if (deltaEncode) {\n if (j > 0) {\n delta += prevVal; // use overflow\n }\n else if (i > 0) {\n delta += resultPixels[k - width];\n }\n else {\n delta += prevVal;\n }\n delta &= 0xFF; //overflow\n resultPixels[k] = delta;//overflow\n prevVal = delta;\n }\n else {\n resultPixels[k] = delta;\n }\n }\n }\n }\n else { //not all valid, use mask\n for (k = 0, i = 0; i < height; i++) {\n for (j = 0; j < width; j++, k++) {\n if (mask[k]) {\n val = 0;\n valTmp = (word << bitPos) >>> (32 - numBitsLUTQick);\n valTmpQuick = valTmp;// >>> deltaBits;\n if (32 - bitPos < numBitsLUTQick) {\n valTmp |= ((stuffedData[srcPtr + 1]) >>> (64 - bitPos - numBitsLUTQick));\n valTmpQuick = valTmp;// >>> deltaBits;\n }\n if (decodeLut[valTmpQuick]) // if there, move the correct number of bits and done\n {\n val = decodeLut[valTmpQuick][1];\n bitPos += decodeLut[valTmpQuick][0];\n }\n else {\n valTmp = (word << bitPos) >>> (32 - numBitsLUT);\n valTmpQuick = valTmp;// >>> deltaBits;\n if (32 - bitPos < numBitsLUT) {\n valTmp |= ((stuffedData[srcPtr + 1]) >>> (64 - bitPos - numBitsLUT));\n valTmpQuick = valTmp;// >>> deltaBits;\n }\n node = tree;\n for (ii = 0; ii < numBitsLUT; ii++) {\n currentBit = valTmp >>> (numBitsLUT - ii - 1) & 1;\n node = currentBit ? node.right : node.left;\n if (!(node.left || node.right)) {\n val = node.val;\n bitPos = bitPos + ii + 1;\n break;\n }\n }\n }\n \n if (bitPos >= 32) {\n bitPos -= 32;\n srcPtr++;\n word = stuffedData[srcPtr];\n }\n \n delta = val - offset;\n if (deltaEncode) {\n if (j > 0 && mask[k - 1]) {\n delta += prevVal; // use overflow\n }\n else if (i > 0 && mask[k - width]) {\n delta += resultPixels[k - width];\n }\n else {\n delta += prevVal;\n }\n \n delta &= 0xFF; //overflow\n resultPixels[k] = delta;//overflow\n prevVal = delta;\n }\n else {\n resultPixels[k] = delta;\n }\n }\n }\n }\n }\n }\n }\n else {\n for (k = 0, i = 0; i < height; i++) {\n for (j = 0; j < width; j++) {\n k = i * width + j;\n if (!mask || mask[k]) {\n for (iDim = 0; iDim < numDims; iDim++, k+=numPixels) {\n val = 0;\n valTmp = (word << bitPos) >>> (32 - numBitsLUTQick);\n valTmpQuick = valTmp;\n if (32 - bitPos < numBitsLUTQick) {\n valTmp |= ((stuffedData[srcPtr + 1]) >>> (64 - bitPos - numBitsLUTQick));\n valTmpQuick = valTmp;\n }\n if (decodeLut[valTmpQuick])\n {\n val = decodeLut[valTmpQuick][1];\n bitPos += decodeLut[valTmpQuick][0];\n }\n else {\n valTmp = (word << bitPos) >>> (32 - numBitsLUT);\n valTmpQuick = valTmp;\n if (32 - bitPos < numBitsLUT) {\n valTmp |= ((stuffedData[srcPtr + 1]) >>> (64 - bitPos - numBitsLUT));\n valTmpQuick = valTmp;\n }\n node = tree;\n for (ii = 0; ii < numBitsLUT; ii++) {\n currentBit = valTmp >>> (numBitsLUT - ii - 1) & 1;\n node = currentBit ? node.right : node.left;\n if (!(node.left || node.right)) {\n val = node.val;\n bitPos = bitPos + ii + 1;\n break;\n }\n }\n }\n\n if (bitPos >= 32) {\n bitPos -= 32;\n srcPtr++;\n word = stuffedData[srcPtr];\n }\n\n delta = val - offset;\n resultPixels[k] = delta;\n }\n }\n }\n }\n }\n data.ptr = data.ptr + (srcPtr + 1) * 4 + (bitPos > 0 ? 4 : 0);\n data.pixels.resultPixels = resultPixelsAllDim;\n //swap for BIP layout\n if (numDims > 1 && !useBSQForOutputDim) {\n data.pixels.resultPixels = Lerc2Helpers.swapDimensionOrder(resultPixelsAllDim, numPixels, numDims, OutPixelTypeArray);\n }\n },\n\n decodeBits: function(input, data, blockDataBuffer, offset, iDim) {\n {\n //bitstuff encoding is 3\n var headerInfo = data.headerInfo;\n var fileVersion = headerInfo.fileVersion;\n //var block = {};\n var blockPtr = 0;\n var viewByteLength = ((input.byteLength - data.ptr) >= 5) ? 5 : (input.byteLength - data.ptr);\n var view = new DataView(input, data.ptr, viewByteLength);\n var headerByte = view.getUint8(0);\n blockPtr++;\n var bits67 = headerByte >> 6;\n var n = (bits67 === 0) ? 4 : 3 - bits67;\n var doLut = (headerByte & 32) > 0 ? true : false;//5th bit\n var numBits = headerByte & 31;\n var numElements = 0;\n if (n === 1) {\n numElements = view.getUint8(blockPtr); blockPtr++;\n } else if (n === 2) {\n numElements = view.getUint16(blockPtr, true); blockPtr += 2;\n } else if (n === 4) {\n numElements = view.getUint32(blockPtr, true); blockPtr += 4;\n } else {\n throw \"Invalid valid pixel count type\";\n }\n //fix: huffman codes are bit stuffed, but not bound by data's max value, so need to use originalUnstuff\n //offset = offset || 0;\n var scale = 2 * headerInfo.maxZError;\n var stuffedData, arrayBuf, store8, dataBytes, dataWords;\n var lutArr, lutData, lutBytes, lutBitsPerElement, bitsPerPixel;\n var zMax = headerInfo.numDims > 1 ? headerInfo.maxValues[iDim] : headerInfo.zMax;\n if (doLut) {\n data.counter.lut++;\n lutBytes = view.getUint8(blockPtr);\n lutBitsPerElement = numBits;\n blockPtr++;\n dataBytes = Math.ceil((lutBytes - 1) * numBits / 8);\n dataWords = Math.ceil(dataBytes / 4);\n arrayBuf = new ArrayBuffer(dataWords * 4);\n store8 = new Uint8Array(arrayBuf);\n\n data.ptr += blockPtr;\n store8.set(new Uint8Array(input, data.ptr, dataBytes));\n\n lutData = new Uint32Array(arrayBuf);\n data.ptr += dataBytes;\n\n bitsPerPixel = 0;\n while ((lutBytes - 1) >>> bitsPerPixel) {\n bitsPerPixel++;\n }\n dataBytes = Math.ceil(numElements * bitsPerPixel / 8);\n dataWords = Math.ceil(dataBytes / 4);\n arrayBuf = new ArrayBuffer(dataWords * 4);\n store8 = new Uint8Array(arrayBuf);\n store8.set(new Uint8Array(input, data.ptr, dataBytes));\n stuffedData = new Uint32Array(arrayBuf);\n data.ptr += dataBytes;\n if (fileVersion >= 3) {\n lutArr = BitStuffer.unstuffLUT2(lutData, numBits, lutBytes - 1, offset, scale, zMax);\n }\n else {\n lutArr = BitStuffer.unstuffLUT(lutData, numBits, lutBytes - 1, offset, scale, zMax);\n }\n //lutArr.unshift(0);\n if (fileVersion >= 3) {\n //BitStuffer.unstuff2(block, blockDataBuffer, headerInfo.zMax);\n BitStuffer.unstuff2(stuffedData, blockDataBuffer, bitsPerPixel, numElements, lutArr);\n }\n else {\n BitStuffer.unstuff(stuffedData, blockDataBuffer, bitsPerPixel, numElements, lutArr);\n }\n }\n else {\n //console.debug(\"bitstuffer\");\n data.counter.bitstuffer++;\n bitsPerPixel = numBits;\n data.ptr += blockPtr;\n if (bitsPerPixel > 0) {\n dataBytes = Math.ceil(numElements * bitsPerPixel / 8);\n dataWords = Math.ceil(dataBytes / 4);\n arrayBuf = new ArrayBuffer(dataWords * 4);\n store8 = new Uint8Array(arrayBuf);\n store8.set(new Uint8Array(input, data.ptr, dataBytes));\n stuffedData = new Uint32Array(arrayBuf);\n data.ptr += dataBytes;\n if (fileVersion >= 3) {\n if (offset == null) {\n BitStuffer.originalUnstuff2(stuffedData, blockDataBuffer, bitsPerPixel, numElements);\n }\n else {\n BitStuffer.unstuff2(stuffedData, blockDataBuffer, bitsPerPixel, numElements, false, offset, scale, zMax);\n }\n }\n else {\n if (offset == null) {\n BitStuffer.originalUnstuff(stuffedData, blockDataBuffer, bitsPerPixel, numElements);\n }\n else {\n BitStuffer.unstuff(stuffedData, blockDataBuffer, bitsPerPixel, numElements, false, offset, scale, zMax);\n }\n }\n }\n }\n }\n\n },\n\n readTiles: function(input, data, OutPixelTypeArray, useBSQForOutputDim) {\n var headerInfo = data.headerInfo;\n var width = headerInfo.width;\n var height = headerInfo.height;\n var numPixels = width * height;\n var microBlockSize = headerInfo.microBlockSize;\n var imageType = headerInfo.imageType;\n var dataTypeSize = Lerc2Helpers.getDataTypeSize(imageType);\n var numBlocksX = Math.ceil(width / microBlockSize);\n var numBlocksY = Math.ceil(height / microBlockSize);\n data.pixels.numBlocksY = numBlocksY;\n data.pixels.numBlocksX = numBlocksX;\n data.pixels.ptr = 0;\n var row = 0, col = 0, blockY = 0, blockX = 0, thisBlockHeight = 0, thisBlockWidth = 0, bytesLeft = 0, headerByte = 0, bits67 = 0, testCode = 0, outPtr = 0, outStride = 0, numBytes = 0, bytesleft = 0, z = 0, blockPtr = 0;\n var view, block, arrayBuf, store8, rawData;\n var blockEncoding;\n var blockDataBuffer = new OutPixelTypeArray(microBlockSize * microBlockSize);\n var lastBlockHeight = (height % microBlockSize) || microBlockSize;\n var lastBlockWidth = (width % microBlockSize) || microBlockSize;\n var offsetType, offset;\n var numDims = headerInfo.numDims, iDim;\n var mask = data.pixels.resultMask;\n var resultPixels = data.pixels.resultPixels;\n var fileVersion = headerInfo.fileVersion;\n var fileVersionCheckNum = fileVersion >= 5 ? 14 : 15;\n var isDiffEncoding;\n var zMax = headerInfo.zMax;\n //var resultPixelsAllDim = resultPixels;\n var resultPixelsPrevDim;\n for (blockY = 0; blockY < numBlocksY; blockY++) {\n thisBlockHeight = (blockY !== numBlocksY - 1) ? microBlockSize : lastBlockHeight;\n for (blockX = 0; blockX < numBlocksX; blockX++) {\n //console.debug(\"y\" + blockY + \" x\" + blockX);\n thisBlockWidth = (blockX !== numBlocksX - 1) ? microBlockSize : lastBlockWidth;\n\n outPtr = blockY * width * microBlockSize + blockX * microBlockSize;\n outStride = width - thisBlockWidth;\n\n for (iDim = 0; iDim < numDims; iDim++) {\n if (numDims > 1) {\n resultPixelsPrevDim = resultPixels;\n outPtr = blockY * width * microBlockSize + blockX * microBlockSize;\n resultPixels = new OutPixelTypeArray(data.pixels.resultPixels.buffer, numPixels * iDim * dataTypeSize, numPixels);\n zMax = headerInfo.maxValues[iDim];\n } else {\n resultPixelsPrevDim = null;\n }\n bytesLeft = input.byteLength - data.ptr;\n view = new DataView(input, data.ptr, Math.min(10, bytesLeft));\n block = {};\n blockPtr = 0;\n headerByte = view.getUint8(0);\n blockPtr++;\n isDiffEncoding = headerInfo.fileVersion >= 5 ? headerByte & 4 : 0;\n bits67 = (headerByte >> 6) & 0xFF;\n testCode = (headerByte >> 2) & fileVersionCheckNum; // use bits 2345 for integrity check\n if (testCode !== (((blockX * microBlockSize) >> 3) & fileVersionCheckNum)) {\n throw \"integrity issue\";\n }\n\n if (isDiffEncoding && iDim === 0) {\n throw \"integrity issue\";\n }\n\n blockEncoding = headerByte & 3;\n if (blockEncoding > 3) {\n data.ptr += blockPtr;\n throw \"Invalid block encoding (\" + blockEncoding + \")\";\n }\n else if (blockEncoding === 2) { //constant 0\n if (isDiffEncoding) {\n if (mask) {\n for (row = 0; row < thisBlockHeight; row++) {\n for (col = 0; col < thisBlockWidth; col++) {\n if (mask[outPtr]) {\n resultPixels[outPtr] = resultPixelsPrevDim[outPtr];\n }\n outPtr++;\n }\n }\n }\n else {\n for (row = 0; row < thisBlockHeight; row++) {\n for (col = 0; col < thisBlockWidth; col++) {\n resultPixels[outPtr] = resultPixelsPrevDim[outPtr];\n outPtr++;\n }\n }\n }\n }\n data.counter.constant++;\n data.ptr += blockPtr;\n continue;\n }\n else if (blockEncoding === 0) { //uncompressed\n if (isDiffEncoding) {\n // doesn't make sense, should not happen\n throw \"integrity issue\";\n }\n data.counter.uncompressed++;\n data.ptr += blockPtr;\n numBytes = thisBlockHeight * thisBlockWidth * dataTypeSize;\n bytesleft = input.byteLength - data.ptr;\n numBytes = numBytes < bytesleft ? numBytes : bytesleft;\n //bit alignment\n arrayBuf = new ArrayBuffer((numBytes % dataTypeSize) === 0 ? numBytes : (numBytes + dataTypeSize - numBytes % dataTypeSize));\n store8 = new Uint8Array(arrayBuf);\n store8.set(new Uint8Array(input, data.ptr, numBytes));\n rawData = new OutPixelTypeArray(arrayBuf);\n z = 0;\n if (mask) {\n for (row = 0; row < thisBlockHeight; row++) {\n for (col = 0; col < thisBlockWidth; col++) {\n if (mask[outPtr]) {\n resultPixels[outPtr] = rawData[z++];\n }\n outPtr++;\n }\n outPtr += outStride;\n }\n }\n else {//all valid\n for (row = 0; row < thisBlockHeight; row++) {\n for (col = 0; col < thisBlockWidth; col++) {\n resultPixels[outPtr++] = rawData[z++];\n }\n outPtr += outStride;\n }\n }\n data.ptr += z * dataTypeSize;\n }\n else { //1 or 3\n offsetType = Lerc2Helpers.getDataTypeUsed((isDiffEncoding && imageType < 6) ? 4 : imageType, bits67);\n offset = Lerc2Helpers.getOnePixel(block, blockPtr, offsetType, view);\n blockPtr += Lerc2Helpers.getDataTypeSize(offsetType);\n if (blockEncoding === 3) //constant offset value\n {\n data.ptr += blockPtr;\n data.counter.constantoffset++;\n //you can delete the following resultMask case in favor of performance because val is constant and users use nodata mask, otherwise nodatavalue post processing handles it too.\n //while the above statement is true, we're not doing it as we want to keep invalid pixel value at 0 rather than arbitrary values\n if (mask) {\n for (row = 0; row < thisBlockHeight; row++) {\n for (col = 0; col < thisBlockWidth; col++) {\n if (mask[outPtr]) {\n resultPixels[outPtr] = isDiffEncoding ? Math.min(zMax, resultPixelsPrevDim[outPtr] + offset) : offset;\n }\n outPtr++;\n }\n outPtr += outStride;\n }\n }\n else {\n for (row = 0; row < thisBlockHeight; row++) {\n for (col = 0; col < thisBlockWidth; col++) {\n resultPixels[outPtr] = isDiffEncoding ? Math.min(zMax, resultPixelsPrevDim[outPtr] + offset) : offset;\n outPtr++;\n }\n outPtr += outStride;\n }\n }\n }\n else { //bitstuff encoding is 3\n data.ptr += blockPtr;\n //heavy lifting\n Lerc2Helpers.decodeBits(input, data, blockDataBuffer, offset, iDim);\n blockPtr = 0;\n // duplicate code to favor performance, diff encoding is for multidimension only\n if (isDiffEncoding) {\n if (mask) {\n for (row = 0; row < thisBlockHeight; row++) {\n for (col = 0; col < thisBlockWidth; col++) {\n if (mask[outPtr]) {\n resultPixels[outPtr] = blockDataBuffer[blockPtr++] + resultPixelsPrevDim[outPtr];\n }\n outPtr++;\n }\n outPtr += outStride;\n }\n }\n else {\n for (row = 0; row < thisBlockHeight; row++) {\n for (col = 0; col < thisBlockWidth; col++) {\n resultPixels[outPtr] = blockDataBuffer[blockPtr++] + resultPixelsPrevDim[outPtr];\n outPtr++;\n }\n outPtr += outStride;\n }\n }\n }\n else if (mask) {\n for (row = 0; row < thisBlockHeight; row++) {\n for (col = 0; col < thisBlockWidth; col++) {\n if (mask[outPtr]) {\n resultPixels[outPtr] = blockDataBuffer[blockPtr++];\n }\n outPtr++;\n }\n outPtr += outStride;\n }\n }\n else {\n for (row = 0; row < thisBlockHeight; row++) {\n for (col = 0; col < thisBlockWidth; col++) {\n resultPixels[outPtr++] = blockDataBuffer[blockPtr++];\n }\n outPtr += outStride;\n }\n }\n }\n }\n }\n }\n }\n //swap for BIP: it's always easier for clients to handle BSQ so we keep existing logic and introduce a swap here to minimze changes\n if (numDims > 1 && !useBSQForOutputDim) {\n data.pixels.resultPixels = Lerc2Helpers.swapDimensionOrder(data.pixels.resultPixels, numPixels, numDims, OutPixelTypeArray);\n }\n },\n\n /*****************\n * private methods (helper methods)\n *****************/\n\n formatFileInfo: function(data) {\n return {\n \"fileIdentifierString\": data.headerInfo.fileIdentifierString,\n \"fileVersion\": data.headerInfo.fileVersion,\n \"imageType\": data.headerInfo.imageType,\n \"height\": data.headerInfo.height,\n \"width\": data.headerInfo.width,\n \"numValidPixel\": data.headerInfo.numValidPixel,\n \"microBlockSize\": data.headerInfo.microBlockSize,\n \"blobSize\": data.headerInfo.blobSize,\n \"maxZError\": data.headerInfo.maxZError,\n \"pixelType\": Lerc2Helpers.getPixelType(data.headerInfo.imageType),\n \"eofOffset\": data.eofOffset,\n \"mask\": data.mask ? {\n \"numBytes\": data.mask.numBytes\n } : null,\n \"pixels\": {\n \"numBlocksX\": data.pixels.numBlocksX,\n \"numBlocksY\": data.pixels.numBlocksY,\n //\"numBytes\": data.pixels.numBytes,\n \"maxValue\": data.headerInfo.zMax,\n \"minValue\": data.headerInfo.zMin,\n \"noDataValue\": data.noDataValue\n }\n };\n },\n\n constructConstantSurface: function(data, useBSQForOutputDim) {\n var val = data.headerInfo.zMax;\n var valMin = data.headerInfo.zMin;\n var maxValues = data.headerInfo.maxValues;\n var numDims = data.headerInfo.numDims;\n var numPixels = data.headerInfo.height * data.headerInfo.width;\n var i = 0, k = 0, nStart = 0;\n var mask = data.pixels.resultMask;\n var resultPixels = data.pixels.resultPixels;\n if (mask) {\n if (numDims > 1) {\n if (useBSQForOutputDim) {\n for (i = 0; i < numDims; i++) {\n nStart = i * numPixels;\n val = maxValues[i];\n for (k = 0; k < numPixels; k++) {\n if (mask[k]) {\n resultPixels[nStart + k] = val;\n }\n }\n } \n }\n else {\n for (k = 0; k < numPixels; k++) {\n if (mask[k]) {\n nStart = k * numDims;\n for (i = 0; i < numDims; i++) {\n resultPixels[nStart + numDims] = maxValues[i];\n }\n }\n }\n }\n }\n else {\n for (k = 0; k < numPixels; k++) {\n if (mask[k]) {\n resultPixels[k] = val;\n }\n }\n }\n }\n else {\n if (numDims > 1 && valMin !== val) {\n if (useBSQForOutputDim) {\n for (i = 0; i < numDims; i++) {\n nStart = i * numPixels;\n val = maxValues[i];\n for (k = 0; k < numPixels; k++) {\n resultPixels[nStart + k] = val;\n }\n }\n }\n else {\n for (k = 0; k < numPixels; k++) {\n nStart = k * numDims;\n for (i = 0; i < numDims; i++) {\n resultPixels[nStart + i] = maxValues[i];\n }\n }\n }\n }\n else {\n for (k = 0; k < numPixels * numDims; k++) {\n resultPixels[k] = val;\n }\n }\n }\n return;\n },\n\n getDataTypeArray: function(t) {\n var tp;\n switch (t) {\n case 0: //char\n tp = Int8Array;\n break;\n case 1: //byte\n tp = Uint8Array;\n break;\n case 2: //short\n tp = Int16Array;\n break;\n case 3: //ushort\n tp = Uint16Array;\n break;\n case 4:\n tp = Int32Array;\n break;\n case 5:\n tp = Uint32Array;\n break;\n case 6:\n tp = Float32Array;\n break;\n case 7:\n tp = Float64Array;\n break;\n default:\n tp = Float32Array;\n }\n return tp;\n },\n\n getPixelType: function(t) {\n var tp;\n switch (t) {\n case 0: //char\n tp = \"S8\";\n break;\n case 1: //byte\n tp = \"U8\";\n break;\n case 2: //short\n tp = \"S16\";\n break;\n case 3: //ushort\n tp = \"U16\";\n break;\n case 4:\n tp = \"S32\";\n break;\n case 5:\n tp = \"U32\";\n break;\n case 6:\n tp = \"F32\";\n break;\n case 7:\n tp = \"F64\";\n break;\n default:\n tp = \"F32\";\n }\n return tp;\n },\n\n isValidPixelValue: function(t, val) {\n if (val == null) {\n return false;\n }\n var isValid;\n switch (t) {\n case 0: //char\n isValid = val >= -128 && val <= 127;\n break;\n case 1: //byte (unsigned char)\n isValid = val >= 0 && val <= 255;\n break;\n case 2: //short\n isValid = val >= -32768 && val <= 32767;\n break;\n case 3: //ushort\n isValid = val >= 0 && val <= 65536;\n break;\n case 4: //int 32\n isValid = val >= -2147483648 && val <= 2147483647;\n break;\n case 5: //uinit 32\n isValid = val >= 0 && val <= 4294967296;\n break;\n case 6:\n isValid = val >= -3.4027999387901484e+38 && val <= 3.4027999387901484e+38;\n break;\n case 7:\n isValid = val >= -1.7976931348623157e+308 && val <= 1.7976931348623157e+308;\n break;\n default:\n isValid = false;\n }\n return isValid;\n },\n\n getDataTypeSize: function(t) {\n var s = 0;\n switch (t) {\n case 0: //ubyte\n case 1: //byte\n s = 1;\n break;\n case 2: //short\n case 3: //ushort\n s = 2;\n break;\n case 4:\n case 5:\n case 6:\n s = 4;\n break;\n case 7:\n s = 8;\n break;\n default:\n s = t;\n }\n return s;\n },\n\n getDataTypeUsed: function(dt, tc) {\n var t = dt;\n switch (dt) {\n case 2: //short\n case 4: //long\n t = dt - tc;\n break;\n case 3: //ushort\n case 5: //ulong\n t = dt - 2 * tc;\n break;\n case 6: //float\n if (0 === tc) {\n t = dt;\n }\n else if (1 === tc) {\n t = 2;\n }\n else {\n t = 1;//byte\n }\n break;\n case 7: //double\n if (0 === tc) {\n t = dt;\n }\n else {\n t = dt - 2 * tc + 1;\n }\n break;\n default:\n t = dt;\n break;\n }\n return t;\n },\n\n getOnePixel: function(block, blockPtr, offsetType, view) {\n var temp = 0;\n switch (offsetType) {\n case 0: //char\n temp = view.getInt8(blockPtr);\n break;\n case 1: //byte\n temp = view.getUint8(blockPtr);\n break;\n case 2:\n temp = view.getInt16(blockPtr, true);\n break;\n case 3:\n temp = view.getUint16(blockPtr, true);\n break;\n case 4:\n temp = view.getInt32(blockPtr, true);\n break;\n case 5:\n temp = view.getUInt32(blockPtr, true);\n break;\n case 6:\n temp = view.getFloat32(blockPtr, true);\n break;\n case 7:\n temp = view.getFloat64(blockPtr, true);\n break;\n default:\n throw (\"the decoder does not understand this pixel type\");\n }\n return temp;\n },\n\n swapDimensionOrder: function(pixels, numPixels, numDims, OutPixelTypeArray, inputIsBIP) {\n var i = 0, j = 0, iDim = 0, temp = 0, swap = pixels;\n if (numDims > 1) {\n swap = new OutPixelTypeArray(numPixels * numDims);\n if (inputIsBIP) {\n for (i=0; i<numPixels; i++) {\n temp = i;\n for (iDim=0; iDim < numDims; iDim++, temp += numPixels) {\n swap[temp] = pixels[j++];\n }\n } \n }\n else {\n for (i=0; i<numPixels; i++) {\n temp = i;\n for (iDim=0; iDim < numDims; iDim++, temp += numPixels) {\n swap[j++] = pixels[temp];\n }\n }\n }\n }\n return swap;\n }\n };\n\n /***************************************************\n *private class for a tree node. Huffman code is in Lerc2Helpers\n ****************************************************/\n var TreeNode = function(val, left, right) {\n this.val = val;\n this.left = left;\n this.right = right;\n };\n\n var Lerc2Decode = {\n /*\n * ********removed options compared to LERC1. We can bring some of them back if needed.\n * removed pixel type. LERC2 is typed and doesn't require user to give pixel type\n * changed encodedMaskData to maskData. LERC2 's js version make it faster to use maskData directly.\n * 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.\n * removed nodatavalue. Because LERC2 pixels are typed, nodatavalue will sacrify a useful value for many types (8bit, 16bit) etc,\n * user has to be knowledgable enough about raster and their data to avoid usability issues. so nodata value is simply removed now.\n * We can add it back later if their's a clear requirement.\n * removed encodedMask. This option was not implemented in LercDecode. It can be done after decoding (less efficient)\n * removed computeUsedBitDepths.\n *\n *\n * response changes compared to LERC1\n * 1. encodedMaskData is not available\n * 2. noDataValue is optional (returns only if user's noDataValue is with in the valid data type range)\n * 3. maskData is always available\n */\n /*****************\n * public properties\n ******************/\n //HUFFMAN_LUT_BITS_MAX: 12, //use 2^12 lut, not configurable\n\n /*****************\n * public methods\n *****************/\n\n /**\n * Decode a LERC2 byte stream and return an object containing the pixel data and optional metadata.\n *\n * @param {ArrayBuffer} input The LERC input byte stream\n * @param {object} [options] options Decoding options\n * @param {number} [options.inputOffset] The number of bytes to skip in the input byte stream. A valid LERC file is expected at that position\n * @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\n * @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...]\n */\n decode: function(/*byte array*/ input, /*object*/ options) {\n //currently there's a bug in the sparse array, so please do not set to false\n options = options || {};\n var noDataValue = options.noDataValue;\n\n //initialize\n var i = 0, data = {};\n data.ptr = options.inputOffset || 0;\n data.pixels = {};\n\n // File header\n if (!Lerc2Helpers.readHeaderInfo(input, data)) {\n return;\n }\n\n var headerInfo = data.headerInfo;\n var fileVersion = headerInfo.fileVersion;\n var OutPixelTypeArray = Lerc2Helpers.getDataTypeArray(headerInfo.imageType);\n\n // version check\n if (fileVersion > 5) {\n throw \"unsupported lerc version 2.\" + fileVersion;\n }\n\n // Mask Header\n Lerc2Helpers.readMask(input, data);\n if (headerInfo.numValidPixel !== headerInfo.width * headerInfo.height && !data.pixels.resultMask) {\n data.pixels.resultMask = options.maskData;\n }\n\n var numPixels = headerInfo.width * headerInfo.height;\n data.pixels.resultPixels = new OutPixelTypeArray(numPixels * headerInfo.numDims);\n\n data.counter = {\n onesweep: 0,\n uncompressed: 0,\n lut: 0,\n bitstuffer: 0,\n constant: 0,\n constantoffset: 0\n };\n var useBSQForOutputDim = !options.returnPixelInterleavedDims;\n if (headerInfo.numValidPixel !== 0) {\n //not tested\n if (headerInfo.zMax === headerInfo.zMin) //constant surface\n {\n Lerc2Helpers.constructConstantSurface(data, useBSQForOutputDim);\n }\n else if (fileVersion >= 4 && Lerc2Helpers.checkMinMaxRanges(input, data)) {\n Lerc2Helpers.constructConstantSurface(data, useBSQForOutputDim);\n }\n else {\n var view = new DataView(input, data.ptr, 2);\n var bReadDataOneSweep = view.getUint8(0);\n data.ptr++;\n if (bReadDataOneSweep) {\n //console.debug(\"OneSweep\");\n Lerc2Helpers.readDataOneSweep(input, data, OutPixelTypeArray, useBSQForOutputDim);\n }\n else {\n //lerc2.1: //bitstuffing + lut\n //lerc2.2: //bitstuffing + lut + huffman\n //lerc2.3: new bitstuffer\n if (fileVersion > 1 && headerInfo.imageType <= 1 && Math.abs(headerInfo.maxZError - 0.5) < 0.00001) {\n //this is 2.x plus 8 bit (unsigned and signed) data, possiblity of Huffman\n var flagHuffman = view.getUint8(1);\n data.ptr++;\n data.encodeMode = flagHuffman;\n if (flagHuffman > 2 || (fileVersion < 4 && flagHuffman > 1)) {\n throw \"Invalid Huffman flag \" + flagHuffman;\n }\n if (flagHuffman) {//1 - delta Huffman, 2 - Huffman\n //console.log(\"Huffman\");\n Lerc2Helpers.readHuffman(input, data, OutPixelTypeArray, useBSQForOutputDim);\n }\n else {\n //console.log(\"Tiles\");\n Lerc2Helpers.readTiles(input, data, OutPixelTypeArray, useBSQForOutputDim);\n }\n }\n else { //lerc2.x non-8 bit data\n //console.log(\"Tiles\");\n Lerc2Helpers.readTiles(input, data, OutPixelTypeArray, useBSQForOutputDim);\n }\n }\n }\n }\n\n data.eofOffset = data.ptr;\n var diff;\n if (options.inputOffset) {\n diff = data.headerInfo.blobSize + options.inputOffset - data.ptr;\n if (Math.abs(diff) >= 1) {\n //console.debug(\"incorrect eof: dataptr \" + data.ptr + \" offset \" + options.inputOffset + \" blobsize \" + data.headerInfo.blobSize + \" diff: \" + diff);\n data.eofOffset = options.inputOffset + data.headerInfo.blobSize;\n }\n }\n else {\n diff = data.headerInfo.blobSize - data.ptr;\n if (Math.abs(diff) >= 1) {\n //console.debug(\"incorrect first band eof: dataptr \" + data.ptr + \" blobsize \" + data.headerInfo.blobSize + \" diff: \" + diff);\n data.eofOffset = data.headerInfo.blobSize;\n }\n }\n\n var result = {\n width: headerInfo.width,\n height: headerInfo.height,\n pixelData: data.pixels.resultPixels,\n minValue: headerInfo.zMin,\n maxValue: headerInfo.zMax,\n validPixelCount: headerInfo.numValidPixel,\n dimCount: headerInfo.numDims,\n dimStats: {\n minValues: headerInfo.minValues,\n maxValues: headerInfo.maxValues\n },\n maskData: data.pixels.resultMask\n //noDataValue: noDataValue\n };\n\n //we should remove this if there's no existing client\n //optional noDataValue processing, it's user's responsiblity\n if (data.pixels.resultMask && Lerc2Helpers.isValidPixelValue(headerInfo.imageType, noDataValue)) {\n var mask = data.pixels.resultMask;\n for (i = 0; i < numPixels; i++) {\n if (!mask[i]) {\n result.pixelData[i] = noDataValue;\n }\n }\n result.noDataValue = noDataValue;\n }\n data.noDataValue = noDataValue;\n if (options.returnFileInfo) {\n result.fileInfo = Lerc2Helpers.formatFileInfo(data);\n }\n return result;\n },\n\n getBandCount: function(/*byte array*/ input) {\n var count = 0;\n var i = 0;\n var temp = {};\n temp.ptr = 0;\n temp.pixels = {};\n while (i < input.byteLength - 58) {\n Lerc2Helpers.readHeaderInfo(input, temp);\n i += temp.headerInfo.blobSize;\n count++;\n temp.ptr = i;\n }\n return count;\n }\n };\n\n return Lerc2Decode;\n })();\n\n var isPlatformLittleEndian = (function() {\n var a = new ArrayBuffer(4);\n var b = new Uint8Array(a);\n var c = new Uint32Array(a);\n c[0] = 1;\n return b[0] === 1;\n })();\n\n var Lerc = {\n /************wrapper**********************************************/\n /**\n * A wrapper for decoding both LERC1 and LERC2 byte streams capable of handling multiband pixel blocks for various pixel types.\n *\n * @alias module:Lerc\n * @param {ArrayBuffer} input The LERC input byte stream\n * @param {object} [options] The decoding options below are optional.\n * @param {number} [options.inputOffset] The number of bytes to skip in the input byte stream. A valid Lerc file is expected at that position.\n * @param {string} [options.pixelType] (LERC1 only) Default value is F32. Valid pixel types for input are U8/S8/S16/U16/S32/U32/F32.\n * @param {number} [options.noDataValue] (LERC1 only). It is recommended to use the returned mask instead of setting this value.\n * @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...]\n * @returns {{width, height, pixels, pixelType, mask, statistics}}\n * @property {number} width Width of decoded image.\n * @property {number} height Height of decoded image.\n * @property {array} pixels [band1, band2, …] Each band is a typed array of width*height.\n * @property {string} pixelType The type of pixels represented in the output.\n * @property {mask} mask Typed array with a size of width*height, or null if all pixels are valid.\n * @property {array} statistics [statistics_band1, statistics_band2, …] Each element is a statistics object representing min and max values\n **/\n decode: function(encodedData, options) {\n if (!isPlatformLittleEndian) {\n throw \"Big endian system is not supported.\";\n }\n options = options || {};\n var inputOffset = options.inputOffset || 0;\n var fileIdView = new Uint8Array(encodedData, inputOffset, 10);\n var fileIdentifierString = String.fromCharCode.apply(null, fileIdView);\n var lerc, majorVersion;\n if (fileIdentifierString.trim() === \"CntZImage\") {\n lerc = LercDecode;\n majorVersion = 1;\n }\n else if (fileIdentifierString.substring(0, 5) === \"Lerc2\") {\n lerc = Lerc2Decode;\n majorVersion = 2;\n }\n else {\n throw \"Unexpected file identifier string: \" + fileIdentifierString;\n }\n\n var iPlane = 0, eof = encodedData.byteLength - 10, encodedMaskData, bandMasks = [], bandMask, maskData;\n var decodedPixelBlock = {\n width: 0,\n height: 0,\n pixels: [],\n pixelType: options.pixelType,\n mask: null,\n statistics: []\n };\n var uniqueBandMaskCount = 0;\n\n while (inputOffset < eof) {\n var result = lerc.decode(encodedData, {\n inputOffset: inputOffset,//for both lerc1 and lerc2\n encodedMaskData: encodedMaskData,//lerc1 only\n maskData: maskData,//lerc2 only\n returnMask: iPlane === 0 ? true : false,//lerc1 only\n returnEncodedMask: iPlane === 0 ? true : false,//lerc1 only\n returnFileInfo: true,//for both lerc1 and lerc2\n returnPixelInterleavedDims: options.returnPixelInterleavedDims,//for ndim lerc2 only\n pixelType: options.pixelType || null,//lerc1 only\n noDataValue: options.noDataValue || null//lerc1 only\n });\n\n inputOffset = result.fileInfo.eofOffset;\n maskData = result.maskData;//lerc2\n if (iPlane === 0) {\n encodedMaskData = result.encodedMaskData;//lerc1\n decodedPixelBlock.width = result.width;\n decodedPixelBlock.height = result.height;\n decodedPixelBlock.dimCount = result.dimCount || 1;\n //decodedPixelBlock.dimStats = decodedPixelBlock.dimStats;\n decodedPixelBlock.pixelType = result.pixelType || result.fileInfo.pixelType;\n decodedPixelBlock.mask = maskData;\n }\n if (majorVersion > 1) {\n if (maskData) {\n bandMasks.push(maskData);\n }\n if (result.fileInfo.mask && result.fileInfo.mask.numBytes > 0) {\n uniqueBandMaskCount++;\n }\n }\n\n iPlane++;\n decodedPixelBlock.pixels.push(result.pixelData);\n decodedPixelBlock.statistics.push({\n minValue: result.minValue,\n maxValue: result.maxValue,\n noDataValue: result.noDataValue,\n dimStats: result.dimStats\n });\n }\n var i, j, numPixels;\n if (majorVersion > 1 && uniqueBandMaskCount > 1) {\n numPixels = decodedPixelBlock.width * decodedPixelBlock.height;\n decodedPixelBlock.bandMasks = bandMasks;\n maskData = new Uint8Array(numPixels);\n maskData.set(bandMasks[0]);\n for (i = 1; i < bandMasks.length; i++) {\n bandMask = bandMasks[i];\n for (j = 0; j < numPixels; j++) {\n maskData[j] = maskData[j] & bandMask[j];\n }\n }\n decodedPixelBlock.maskData = maskData;\n }\n\n return decodedPixelBlock;\n }\n };\n\n if (typeof define === \"function\" && define.amd) {/* jshint ignore:line */\n //amd loaders such as dojo and requireJS\n //http://wiki.commonjs.org/wiki/Modules/AsynchronousDefinition\n define([], function() { return Lerc; });/* jshint ignore:line */\n }\n else if (typeof module !== \"undefined\" && module.exports) {/* jshint ignore:line */\n //commonJS module 1.0/1.1/1.1.1 systems, such as nodeJS\n //http://wiki.commonjs.org/wiki/Modules\n module.exports = Lerc;/* jshint ignore:line */\n }\n else {\n //assign to this, most likely window\n this.Lerc = Lerc;\n }\n\n})();\n","let init;\nlet instance;\nlet heap;\nconst IMPORT_OBJECT = {\n env: {\n emscripten_notify_memory_growth: function (index) {\n heap = new Uint8Array(instance.exports.memory.buffer);\n }\n }\n};\n/**\r\n * ZSTD (Zstandard) decoder.\r\n */\nclass ZSTDDecoder {\n init() {\n if (init) return init;\n if (typeof fetch !== 'undefined') {\n // Web.\n init = fetch('data:application/wasm;base64,' + wasm).then(response => response.arrayBuffer()).then(arrayBuffer => WebAssembly.instantiate(arrayBuffer, IMPORT_OBJECT)).then(this._init);\n } else {\n // Node.js.\n init = WebAssembly.instantiate(Buffer.from(wasm, 'base64'), IMPORT_OBJECT).then(this._init);\n }\n return init;\n }\n _init(result) {\n instance = result.instance;\n IMPORT_OBJECT.env.emscripten_notify_memory_growth(0); // initialize heap.\n }\n\n decode(array, uncompressedSize = 0) {\n if (!instance) throw new Error(`ZSTDDecoder: Await .init() before decoding.`);\n // Write compressed data into WASM memory.\n const compressedSize = array.byteLength;\n const compressedPtr = instance.exports.malloc(compressedSize);\n heap.set(array, compressedPtr);\n // Decompress into WASM memory.\n uncompressedSize = uncompressedSize || Number(instance.exports.ZSTD_findDecompressedSize(compressedPtr, compressedSize));\n const uncompressedPtr = instance.exports.malloc(uncompressedSize);\n const actualSize = instance.exports.ZSTD_decompress(uncompressedPtr, uncompressedSize, compressedPtr, compressedSize);\n // Read decompressed data and free WASM memory.\n const dec = heap.slice(uncompressedPtr, uncompressedPtr + actualSize);\n instance.exports.free(compressedPtr);\n instance.exports.free(uncompressedPtr);\n return dec;\n }\n}\n/**\r\n * BSD License\r\n *\r\n * For Zstandard software\r\n *\r\n * Copyright (c) 2016-present, Yann Collet, Facebook, Inc. All rights reserved.\r\n *\r\n * Redistribution and use in source and binary forms, with or without modification,\r\n * are permitted provided that the following conditions are met:\r\n *\r\n * * Redistributions of source code must retain the above copyright notice, this\r\n * list of conditions and the following disclaimer.\r\n *\r\n * * Redistributions in binary form must reproduce the above copyright notice,\r\n * this list of conditions and the following disclaimer in the documentation\r\n * and/or other materials provided with the distribution.\r\n *\r\n * * Neither the name Facebook nor the names of its contributors may be used to\r\n * endorse or promote products derived from this software without specific\r\n * prior written permission.\r\n *\r\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\r\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\r\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\r\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR\r\n * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\r\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\r\n * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\r\n * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\r\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\r\n * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r\n */\n// wasm:begin\nconst wasm = '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IAMNACAEQQNxBEADQCACRQ0FIAAgAkF/aiICaiIDIAEgAmotAAA6AAAgA0EDcQ0ACwsgAkEDTQ0AA0AgACACQXxqIgJqIAEgAmooAgA2AgAgAkEDSw0ACwsgAkUNAgNAIAAgAkF/aiICaiABIAJqLQAAOgAAIAINAAsMAgsgAkEDTQ0AIAIhBANAIAMgASgCADYCACABQQRqIQEgA0EEaiEDIARBfGoiBEEDSw0ACyACQQNxIQILIAJFDQADQCADIAEtAAA6AAAgA0EBaiEDIAFBAWohASACQX9qIgINAAsLIAAL8wICAn8BfgJAIAJFDQAgACACaiIDQX9qIAE6AAAgACABOgAAIAJBA0kNACADQX5qIAE6AAAgACABOgABIANBfWogAToAACAAIAE6AAIgAkEHSQ0AIANBfGogAToAACAAIAE6AAMgAkEJSQ0AIABBACAAa0EDcSIEaiIDIAFB/wFxQYGChAhsIgE2AgAgAyACIARrQXxxIgRqIgJBfGogATYCACAEQQlJDQAgAyABNgIIIAMgATYCBCACQXhqIAE2AgAgAkF0aiABNgIAIARBGUkNACADIAE2AhggAyABNgIUIAMgATYCECADIAE2AgwgAkFwaiABNgIAIAJBbGogATYCACACQWhqIAE2AgAgAkFkaiABNgIAIAQgA0EEcUEYciIEayICQSBJDQAgAa0iBUIghiAFhCEFIAMgBGohAQNAIAEgBTcDGCABIAU3AxAgASAFNwMIIAEgBTcDACABQSBqIQEgAkFgaiICQR9LDQALCyAACy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAIajYCACADCy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAFajYCACADCx8AIAAgASACKAIEEAg2AgAgARAEGiAAIAJBCGo2AgQLCAAgAGdBH3MLugUBDX8jAEEQayIKJAACfyAEQQNNBEAgCkEANgIMIApBDGogAyAEEAsaIAAgASACIApBDGpBBBAVIgBBbCAAEAMbIAAgACAESxsMAQsgAEEAIAEoAgBBAXRBAmoQECENQVQgAygAACIGQQ9xIgBBCksNABogAiAAQQVqNgIAIAMgBGoiAkF8aiEMIAJBeWohDiACQXtqIRAgAEEGaiELQQQhBSAGQQR2IQRBICAAdCIAQQFyIQkgASgCACEPQQAhAiADIQYCQANAIAlBAkggAiAPS3JFBEAgAiEHAkAgCARAA0AgBEH//wNxQf//A0YEQCAHQRhqIQcgBiAQSQR/IAZBAmoiBigAACAFdgUgBUEQaiEFIARBEHYLIQQMAQsLA0AgBEEDcSIIQQNGBEAgBUECaiEFIARBAnYhBCAHQQNqIQcMAQsLIAcgCGoiByAPSw0EIAVBAmohBQNAIAIgB0kEQCANIAJBAXRqQQA7AQAgAkEBaiECDAELCyAGIA5LQQAgBiAFQQN1aiIHIAxLG0UEQCAHKAAAIAVBB3EiBXYhBAwCCyAEQQJ2IQQLIAYhBwsCfyALQX9qIAQgAEF/anEiBiAAQQF0QX9qIgggCWsiEUkNABogBCAIcSIEQQAgESAEIABIG2shBiALCyEIIA0gAkEBdGogBkF/aiIEOwEAIAlBASAGayAEIAZBAUgbayEJA0AgCSAASARAIABBAXUhACALQX9qIQsMAQsLAn8gByAOS0EAIAcgBSAIaiIFQQN1aiIGIAxLG0UEQCAFQQdxDAELIAUgDCIGIAdrQQN0awshBSACQQFqIQIgBEUhCCAGKAAAIAVBH3F2IQQMAQsLQWwgCUEBRyAFQSBKcg0BGiABIAJBf2o2AgAgBiAFQQdqQQN1aiADawwBC0FQCyEAIApBEGokACAACwkAQQFBBSAAGwsMACAAIAEoAAA2AAALqgMBCn8jAEHwAGsiCiQAIAJBAWohDiAAQQhqIQtBgIAEIAVBf2p0QRB1IQxBACECQQEhBkEBIAV0IglBf2oiDyEIA0AgAiAORkUEQAJAIAEgAkEBdCINai8BACIHQf//A0YEQCALIAhBA3RqIAI2AgQgCEF/aiEIQQEhBwwBCyAGQQAgDCAHQRB0QRB1ShshBgsgCiANaiAHOwEAIAJBAWohAgwBCwsgACAFNgIEIAAgBjYCACAJQQN2IAlBAXZqQQNqIQxBACEAQQAhBkEAIQIDQCAGIA5GBEADQAJAIAAgCUYNACAKIAsgAEEDdGoiASgCBCIGQQF0aiICIAIvAQAiAkEBajsBACABIAUgAhAUayIIOgADIAEgAiAIQf8BcXQgCWs7AQAgASAEIAZBAnQiAmooAgA6AAIgASACIANqKAIANgIEIABBAWohAAwBCwsFIAEgBkEBdGouAQAhDUEAIQcDQCAHIA1ORQRAIAsgAkEDdGogBjYCBANAIAIgDGogD3EiAiAISw0ACyAHQQFqIQcMAQsLIAZBAWohBgwBCwsgCkHwAGokAAsjAEIAIAEQCSAAhUKHla+vmLbem55/fkLj3MqV/M7y9YV/fAsQACAAQn43AwggACABNgIACyQBAX8gAARAIAEoAgQiAgRAIAEoAgggACACEQEADwsgABAmCwsfACAAIAEgAi8BABAINgIAIAEQBBogACACQQRqNgIEC0oBAX9BoCAoAgAiASAAaiIAQX9MBEBBiCBBMDYCAEF/DwsCQCAAPwBBEHRNDQAgABBmDQBBiCBBMDYCAEF/DwtBoCAgADYCACABC9cBAQh/Qbp/IQoCQCACKAIEIgggAigCACIJaiIOIAEgAGtLDQBBbCEKIAkgBCADKAIAIgtrSw0AIAAgCWoiBCACKAIIIgxrIQ0gACABQWBqIg8gCyAJQQAQKSADIAkgC2o2AgACQAJAIAwgBCAFa00EQCANIQUMAQsgDCAEIAZrSw0CIAcgDSAFayIAaiIBIAhqIAdNBEAgBCABIAgQDxoMAgsgBCABQQAgAGsQDyEBIAIgACAIaiIINgIEIAEgAGshBAsgBCAPIAUgCEEBECkLIA4hCgsgCgubAgEBfyMAQYABayINJAAgDSADNgJ8AkAgAkEDSwRAQX8hCQwBCwJAAkACQAJAIAJBAWsOAwADAgELIAZFBEBBuH8hCQwEC0FsIQkgBS0AACICIANLDQMgACAHIAJBAnQiAmooAgAgAiAIaigCABA7IAEgADYCAEEBIQkMAwsgASAJNgIAQQAhCQwCCyAKRQRAQWwhCQwCC0EAIQkgC0UgDEEZSHINAUEIIAR0QQhqIQBBACECA0AgAiAATw0CIAJBQGshAgwAAAsAC0FsIQkgDSANQfwAaiANQfgAaiAFIAYQFSICEAMNACANKAJ4IgMgBEsNACAAIA0gDSgCfCAHIAggAxAYIAEgADYCACACIQkLIA1BgAFqJAAgCQsLACAAIAEgAhALGgsQACAALwAAIAAtAAJBEHRyCy8AAn9BuH8gAUEISQ0AGkFyIAAoAAQiAEF3Sw0AGkG4fyAAQQhqIgAgACABSxsLCwkAIAAgATsAAAsDAAELigYBBX8gACAAKAIAIgVBfnE2AgBBACAAIAVBAXZqQYQgKAIAIgQgAEYbIQECQAJAIAAoAgQiAkUNACACKAIAIgNBAXENACACQQhqIgUgA0EBdkF4aiIDQQggA0EISxtnQR9zQQJ0QYAfaiIDKAIARgRAIAMgAigCDDYCAAsgAigCCCIDBEAgAyACKAIMNgIECyACKAIMIgMEQCADIAIoAgg2AgALIAIgAigCACAAKAIAQX5xajYCAEGEICEAAkACQCABRQ0AIAEgAjYCBCABKAIAIgNBAXENASADQQF2QXhqIgNBCCADQQhLG2dBH3NBAnRBgB9qIgMoAgAgAUEIakYEQCADIAEoAgw2AgALIAEoAggiAwRAIAMgASgCDDYCBAsgASgCDCIDBEAgAyABKAIINgIAQYQgKAIAIQQLIAIgAigCACABKAIAQX5xajYCACABIARGDQAgASABKAIAQQF2akEEaiEACyAAIAI2AgALIAIoAgBBAXZBeGoiAEEIIABBCEsbZ0Efc0ECdEGAH2oiASgCACEAIAEgBTYCACACIAA2AgwgAkEANgIIIABFDQEgACAFNgIADwsCQCABRQ0AIAEoAgAiAkEBcQ0AIAJBAXZBeGoiAkEIIAJBCEsbZ0Efc0ECdEGAH2oiAigCACABQQhqRgRAIAIgASgCDDYCAAsgASgCCCICBEAgAiABKAIMNgIECyABKAIMIgIEQCACIAEoAgg2AgBBhCAoAgAhBAsgACAAKAIAIAEoAgBBfnFqIgI2AgACQCABIARHBEAgASABKAIAQQF2aiAANgIEIAAoAgAhAgwBC0GEICAANgIACyACQQF2QXhqIgFBCCABQQhLG2dBH3NBAnRBgB9qIgIoAgAhASACIABBCGoiAjYCACAAIAE2AgwgAEEANgIIIAFFDQEgASACNgIADwsgBUEBdkF4aiIBQQggAUEISxtnQR9zQQJ0QYAfaiICKAIAIQEgAiAAQQhqIgI2AgAgACABNgIMIABBADYCCCABRQ0AIAEgAjYCAAsLDgAgAARAIABBeGoQJQsLgAIBA38CQCAAQQ9qQXhxQYQgKAIAKAIAQQF2ayICEB1Bf0YNAAJAQYQgKAIAIgAoAgAiAUEBcQ0AIAFBAXZBeGoiAUEIIAFBCEsbZ0Efc0ECdEGAH2oiASgCACAAQQhqRgRAIAEgACgCDDYCAAsgACgCCCIBBEAgASAAKAIMNgIECyAAKAIMIgFFDQAgASAAKAIINgIAC0EBIQEgACAAKAIAIAJBAXRqIgI2AgAgAkEBcQ0AIAJBAXZBeGoiAkEIIAJBCEsbZ0Efc0ECdEGAH2oiAygCACECIAMgAEEIaiIDNgIAIAAgAjYCDCAAQQA2AgggAkUNACACIAM2AgALIAELtwIBA38CQAJAIABBASAAGyICEDgiAA0AAkACQEGEICgCACIARQ0AIAAoAgAiA0EBcQ0AIAAgA0EBcjYCACADQQF2QXhqIgFBCCABQQhLG2dBH3NBAnRBgB9qIgEoAgAgAEEIakYEQCABIAAoAgw2AgALIAAoAggiAQRAIAEgACgCDDYCBAsgACgCDCIBBEAgASAAKAIINgIACyACECchAkEAIQFBhCAoAgAhACACDQEgACAAKAIAQX5xNgIAQQAPCyACQQ9qQXhxIgMQHSICQX9GDQIgAkEHakF4cSIAIAJHBEAgACACaxAdQX9GDQMLAkBBhCAoAgAiAUUEQEGAICAANgIADAELIAAgATYCBAtBhCAgADYCACAAIANBAXRBAXI2AgAMAQsgAEUNAQsgAEEIaiEBCyABC7kDAQJ/IAAgA2ohBQJAIANBB0wEQANAIAAgBU8NAiAAIAItAAA6AAAgAEEBaiEAIAJBAWohAgwAAAsACyAEQQFGBEACQCAAIAJrIgZBB00EQCAAIAItAAA6AAAgACACLQABOgABIAAgAi0AAjoAAiAAIAItAAM6AAMgAEEEaiACIAZBAnQiBkHAHmooAgBqIgIQFyACIAZB4B5qKAIAayECDAELIAAgAhAMCyACQQhqIQIgAEEIaiEACwJAAkACQAJAIAUgAU0EQCAAIANqIQEgBEEBRyAAIAJrQQ9Kcg0BA0AgACACEAwgAkEIaiECIABBCGoiACABSQ0ACwwFCyAAIAFLBEAgACEBDAQLIARBAUcgACACa0EPSnINASAAIQMgAiEEA0AgAyAEEAwgBEEIaiEEIANBCGoiAyABSQ0ACwwCCwNAIAAgAhAHIAJBEGohAiAAQRBqIgAgAUkNAAsMAwsgACEDIAIhBANAIAMgBBAHIARBEGohBCADQRBqIgMgAUkNAAsLIAIgASAAa2ohAgsDQCABIAVPDQEgASACLQAAOgAAIAFBAWohASACQQFqIQIMAAALAAsLQQECfyAAIAAoArjgASIDNgLE4AEgACgCvOABIQQgACABNgK84AEgACABIAJqNgK44AEgACABIAQgA2tqNgLA4AELpgEBAX8gACAAKALs4QEQFjYCyOABIABCADcD+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/QQ8hAiABIABJBEAgAUEEdCAAbiECCyAAQQh2IgEgAkEYbCIAQYwIaigCAGwgAEGICGooAgBqIgJBA3YgAmogAEGACGooAgAgAEGECGooAgAgAWxqSQs3ACAAIAMgBCAFQYAQEDMiBRADBEAgBQ8LIAUgBEkEfyABIAIgAyAFaiAEIAVrIAAQMgVBuH8LC78DAQN/IwBBIGsiBSQAIAVBCGogAiADEAYiAhADRQRAIAAgAWoiB0F9aiEGIAUgBBAOIARBBGohAiAFLQACIQMDQEEAIAAgBkkgBUEIahAEGwRAIAAgAiAFQQhqIAMQAkECdGoiBC8BADsAACAFQQhqIAQtAAIQASAAIAQtAANqIgQgAiAFQQhqIAMQAkECdGoiAC8BADsAACAFQQhqIAAtAAIQASAEIAAtAANqIQAMAQUgB0F+aiEEA0AgBUEIahAEIAAgBEtyRQRAIAAgAiAFQQhqIAMQAkECdGoiBi8BADsAACAFQQhqIAYtAAIQASAAIAYtAANqIQAMAQsLA0AgACAES0UEQCAAIAIgBUEIaiADEAJBAnRqIgYvAQA7AAAgBUEIaiAGLQACEAEgACAGLQADaiEADAELCwJAIAAgB08NACAAIAIgBUEIaiADEAIiA0ECdGoiAC0AADoAACAALQADQQFGBEAgBUEIaiAALQACEAEMAQsgBSgCDEEfSw0AIAVBCGogAiADQQJ0ai0AAhABIAUoAgxBIUkNACAFQSA2AgwLIAFBbCAFQQhqEAobIQILCwsgBUEgaiQAIAILkgIBBH8jAEFAaiIJJAAgCSADQTQQCyEDAkAgBEECSA0AIAMgBEECdGooAgAhCSADQTxqIAgQIyADQQE6AD8gAyACOgA+QQAhBCADKAI8IQoDQCAEIAlGDQEgACAEQQJ0aiAKNgEAIARBAWohBAwAAAsAC0EAIQkDQCAGIAlGRQRAIAMgBSAJQQF0aiIKLQABIgtBAnRqIgwoAgAhBCADQTxqIAotAABBCHQgCGpB//8DcRAjIANBAjoAPyADIAcgC2siCiACajoAPiAEQQEgASAKa3RqIQogAygCPCELA0AgACAEQQJ0aiALNgEAIARBAWoiBCAKSQ0ACyAMIAo2AgAgCUEBaiEJDAELCyADQUBrJAALowIBCX8jAEHQAGsiCSQAIAlBEGogBUE0EAsaIAcgBmshDyAHIAFrIRADQAJAIAMgCkcEQEEBIAEgByACIApBAXRqIgYtAAEiDGsiCGsiC3QhDSAGLQAAIQ4gCUEQaiAMQQJ0aiIMKAIAIQYgCyAPTwRAIAAgBkECdGogCyAIIAUgCEE0bGogCCAQaiIIQQEgCEEBShsiCCACIAQgCEECdGooAgAiCEEBdGogAyAIayAHIA4QYyAGIA1qIQgMAgsgCUEMaiAOECMgCUEBOgAPIAkgCDoADiAGIA1qIQggCSgCDCELA0AgBiAITw0CIAAgBkECdGogCzYBACAGQQFqIQYMAAALAAsgCUHQAGokAA8LIAwgCDYCACAKQQFqIQoMAAALAAs0ACAAIAMgBCAFEDYiBRADBEAgBQ8LIAUgBEkEfyABIAIgAyAFaiAEIAVrIAAQNAVBuH8LCyMAIAA/AEEQdGtB//8DakEQdkAAQX9GBEBBAA8LQQAQAEEBCzsBAX8gAgRAA0AgACABIAJBgCAgAkGAIEkbIgMQCyEAIAFBgCBqIQEgAEGAIGohACACIANrIgINAAsLCwYAIAAQAwsLqBUJAEGICAsNAQAAAAEAAAACAAAAAgBBoAgLswYBAAAAAQAAAAIAAAACAAAAJgAAAIIAAAAhBQAASgAAAGcIAAAmAAAAwAEAAIAAAABJBQAASgAAAL4IAAApAAAALAIAAIAAAABJBQAASgAAAL4IAAAvAAAAygIAAIAAAACKBQAASgAAAIQJAAA1AAAAcwMAAIAAAACdBQAASgAAAKAJAAA9AAAAgQMAAIAAAADrBQAASwAAAD4KAABEAAAAngMAAIAAAABNBgAASwAAAKoKAABLAAAAswMAAIAAAADBBgAATQAAAB8NAABNAAAAUwQAAIAAAAAjCAAAUQAAAKYPAABUAAAAmQQAAIAAAABLCQAAVwAAALESAABYAAAA2gQAAIAAAABvCQAAXQAAACMUAABUAAAARQUAAIAAAABUCgAAagAAAIwUAABqAAAArwUAAIAAAAB2CQAAfAAAAE4QAAB8AAAA0gIAAIAAAABjBwAAkQAAAJAHAACSAAAAAAAAAAEAAAABAAAABQAAAA0AAAAdAAAAPQAAAH0AAAD9AAAA/QEAAP0DAAD9BwAA/Q8AAP0fAAD9PwAA/X8AAP3/AAD9/wEA/f8DAP3/BwD9/w8A/f8fAP3/PwD9/38A/f//AP3//wH9//8D/f//B/3//w/9//8f/f//P/3//38AAAAAAQAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAAAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAAABEAAAASAAAAEwAAABQAAAAVAAAAFgAAABcAAAAYAAAAGQAAABoAAAAbAAAAHAAAAB0AAAAeAAAAHwAAAAMAAAAEAAAABQAAAAYAAAAHAAAACAAAAAkAAAAKAAAACwAAAAwAAAANAAAADgAAAA8AAAAQAAAAEQAAABIAAAATAAAAFAAAABUAAAAWAAAAFwAAABgAAAAZAAAAGgAAABsAAAAcAAAAHQAAAB4AAAAfAAAAIAAAACEAAAAiAAAAIwAAACUAAAAnAAAAKQAAACsAAAAvAAAAMwAAADsAAABDAAAAUwAAAGMAAACDAAAAAwEAAAMCAAADBAAAAwgAAAMQAAADIAAAA0AAAAOAAAADAAEAQeAPC1EBAAAAAQAAAAEAAAABAAAAAgAAAAIAAAADAAAAAwAAAAQAAAAEAAAABQAAAAcAAAAIAAAACQAAAAoAAAALAAAADAAAAA0AAAAOAAAADwAAABAAQcQQC4sBAQAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAAAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAAABIAAAAUAAAAFgAAABgAAAAcAAAAIAAAACgAAAAwAAAAQAAAAIAAAAAAAQAAAAIAAAAEAAAACAAAABAAAAAgAAAAQAAAAIAAAAAAAQBBkBIL5gQBAAAAAQAAAAEAAAABAAAAAgAAAAIAAAADAAAAAwAAAAQAAAAGAAAABwAAAAgAAAAJAAAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAAAAEAAAAEAAAACAAAAAAAAAABAAEBBgAAAAAAAAQAAAAAEAAABAAAAAAgAAAFAQAAAAAAAAUDAAAAAAAABQQAAAAAAAAFBgAAAAAAAAUHAAAAAAAABQkAAAAAAAAFCgAAAAAAAAUMAAAAAAAABg4AAAAAAAEFEAAAAAAAAQUUAAAAAAABBRYAAAAAAAIFHAAAAAAAAwUgAAAAAAAEBTAAAAAgAAYFQAAAAAAABwWAAAAAAAAIBgABAAAAAAoGAAQAAAAADAYAEAAAIAAABAAAAAAAAAAEAQAAAAAAAAUCAAAAIAAABQQAAAAAAAAFBQAAACAAAAUHAAAAAAAABQgAAAAgAAAFCgAAAAAAAAULAAAAAAAABg0AAAAgAAEFEAAAAAAAAQUSAAAAIAABBRYAAAAAAAIFGAAAACAAAwUgAAAAAAADBSgAAAAAAAYEQAAAABAABgRAAAAAIAAHBYAAAAAAAAkGAAIAAAAACwYACAAAMAAABAAAAAAQAAAEAQAAACAAAAUCAAAAIAAABQMAAAAgAAAFBQAAACAAAAUGAAAAIAAABQgAAAAgAAAFCQAAACAAAAULAAAAIAAABQwAAAAAAAAGDwAAACAAAQUSAAAAIAABBRQAAAAgAAIFGAAAACAAAgUcAAAAIAADBSgAAAAgAAQFMAAAAAAAEAYAAAEAAAAPBgCAAAAAAA4GAEAAAAAADQYAIABBgBcLhwIBAAEBBQAAAAAAAAUAAAAAAAAGBD0AAAAAAAkF/QEAAAAADwX9fwAAAAAVBf3/HwAAAAMFBQAAAAAABwR9AAAAAAAMBf0PAAAAABIF/f8DAAAAFwX9/38AAAAFBR0AAAAAAAgE/QAAAAAADgX9PwAAAAAUBf3/DwAAAAIFAQAAABAABwR9AAAAAAALBf0HAAAAABEF/f8BAAAAFgX9/z8AAAAEBQ0AAAAQAAgE/QAAAAAADQX9HwAAAAATBf3/BwAAAAEFAQAAABAABgQ9AAAAAAAKBf0DAAAAABAF/f8AAAAAHAX9//8PAAAbBf3//wcAABoF/f//AwAAGQX9//8BAAAYBf3//wBBkBkLhgQBAAEBBgAAAAAAAAYDAAAAAAAABAQAAAAgAAAFBQAAAAAAAAUGAAAAAAAABQgAAAAAAAAFCQAAAAAAAAULAAAAAAAABg0AAAAAAAAGEAAAAAAAAAYTAAAAAAAABhYAAAAAAAAGGQAAAAAAAAYcAAAAAAAABh8AAAAAAAAGIgAAAAAAAQYlAAAAAAABBikAAAAAAAIGLwAAAAAAAwY7AAAAAAAEBlMAAAAAAAcGgwAAAAAACQYDAgAAEAAABAQAAAAAAAAEBQAAACAAAAUGAAAAAAAABQcAAAAgAAAFCQAAAAAAAAUKAAAAAAAABgwAAAAAAAAGDwAAAAAAAAYSAAAAAAAABhUAAAAAAAAGGAAAAAAAAAYbAAAAAAAABh4AAAAAAAAGIQAAAAAAAQYjAAAAAAABBicAAAAAAAIGKwAAAAAAAwYzAAAAAAAEBkMAAAAAAAUGYwAAAAAACAYDAQAAIAAABAQAAAAwAAAEBAAAABAAAAQFAAAAIAAABQcAAAAgAAAFCAAAACAAAAUKAAAAIAAABQsAAAAAAAAGDgAAAAAAAAYRAAAAAAAABhQAAAAAAAAGFwAAAAAAAAYaAAAAAAAABh0AAAAAAAAGIAAAAAAAEAYDAAEAAAAPBgOAAAAAAA4GA0AAAAAADQYDIAAAAAAMBgMQAAAAAAsGAwgAAAAACgYDBABBpB0L2QEBAAAAAwAAAAcAAAAPAAAAHwAAAD8AAAB/AAAA/wAAAP8BAAD/AwAA/wcAAP8PAAD/HwAA/z8AAP9/AAD//wAA//8BAP//AwD//wcA//8PAP//HwD//z8A//9/AP///wD///8B////A////wf///8P////H////z////9/AAAAAAEAAAACAAAABAAAAAAAAAACAAAABAAAAAgAAAAAAAAAAQAAAAIAAAABAAAABAAAAAQAAAAEAAAABAAAAAgAAAAIAAAACAAAAAcAAAAIAAAACQAAAAoAAAALAEGgIAsDwBBQ';\n// wasm:end\n\nexport { ZSTDDecoder };\n//# sourceMappingURL=zstddec.modern.js.map\n","import { inflate } from 'pako';\nimport Lerc from 'lerc';\nimport { ZSTDDecoder } from 'zstddec';\nimport BaseDecoder from './basedecoder.js';\nimport { LercParameters, LercAddCompression } from '../globals.js';\n\nexport const zstd = new ZSTDDecoder();\n\nexport default class LercDecoder extends BaseDecoder {\n constructor(fileDirectory) {\n super();\n\n this.planarConfiguration = typeof fileDirectory.PlanarConfiguration !== 'undefined' ? fileDirectory.PlanarConfiguration : 1;\n this.samplesPerPixel = typeof fileDirectory.SamplesPerPixel !== 'undefined' ? fileDirectory.SamplesPerPixel : 1;\n\n this.addCompression = fileDirectory.LercParameters[LercParameters.AddCompression];\n }\n\n decodeBlock(buffer) {\n switch (this.addCompression) {\n case LercAddCompression.None:\n break;\n case LercAddCompression.Deflate:\n buffer = inflate(new Uint8Array(buffer)).buffer; // eslint-disable-line no-param-reassign, prefer-destructuring\n break;\n case LercAddCompression.Zstandard:\n buffer = zstd.decode(new Uint8Array(buffer)).buffer; // eslint-disable-line no-param-reassign, prefer-destructuring\n break;\n default:\n throw new Error(`Unsupported LERC additional compression method identifier: ${this.addCompression}`);\n }\n\n const lercResult = Lerc.decode(buffer, { returnPixelInterleavedDims: this.planarConfiguration === 1 });\n const lercData = lercResult.pixels[0];\n return lercData.buffer;\n }\n}\n"],"names":["define","inflate","Lerc"],"mappings":"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","x_google_ignoreList":[0,1,2]}
|