{"version":3,"file":"image-blob-reduce.browser.min.mjs","names":["_typeof","toPrimitive","toPropertyKey","_defineProperty","ownKeys","_objectSpread2"],"sources":["../node_modules/pica/dist/pica.mjs","../src/image_traverse.ts","../src/jpeg_plugins.ts","../src/index.ts"],"sourcesContent":["/*!\n\npica\nhttps://github.com/nodeca/pica\n\n*/\nvar BASE64_MAP = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\nfunction base64decode(str) {\n\tconst input = str.replace(/[\\r\\n=]/g, \"\"), max = input.length;\n\tconst out = new Uint8Array(max * 3 >> 2);\n\tlet bits = 0;\n\tlet ptr = 0;\n\tfor (let idx = 0; idx < max; idx++) {\n\t\tif (idx % 4 === 0 && idx) {\n\t\t\tout[ptr++] = bits >> 16 & 255;\n\t\t\tout[ptr++] = bits >> 8 & 255;\n\t\t\tout[ptr++] = bits & 255;\n\t\t}\n\t\tbits = bits << 6 | BASE64_MAP.indexOf(input.charAt(idx));\n\t}\n\tconst tailbits = max % 4 * 6;\n\tif (tailbits === 0) {\n\t\tout[ptr++] = bits >> 16 & 255;\n\t\tout[ptr++] = bits >> 8 & 255;\n\t\tout[ptr++] = bits & 255;\n\t} else if (tailbits === 18) {\n\t\tout[ptr++] = bits >> 10 & 255;\n\t\tout[ptr++] = bits >> 2 & 255;\n\t} else if (tailbits === 12) out[ptr++] = bits >> 4 & 255;\n\treturn out;\n}\nvar wa;\nfunction hasWebAssembly() {\n\tif (typeof wa !== \"undefined\") return wa;\n\twa = false;\n\tif (typeof WebAssembly === \"undefined\") return wa;\n\ttry {\n\t\tconst bin = new Uint8Array([\n\t\t\t0,\n\t\t\t97,\n\t\t\t115,\n\t\t\t109,\n\t\t\t1,\n\t\t\t0,\n\t\t\t0,\n\t\t\t0,\n\t\t\t1,\n\t\t\t6,\n\t\t\t1,\n\t\t\t96,\n\t\t\t1,\n\t\t\t127,\n\t\t\t1,\n\t\t\t127,\n\t\t\t3,\n\t\t\t2,\n\t\t\t1,\n\t\t\t0,\n\t\t\t5,\n\t\t\t3,\n\t\t\t1,\n\t\t\t0,\n\t\t\t1,\n\t\t\t7,\n\t\t\t8,\n\t\t\t1,\n\t\t\t4,\n\t\t\t116,\n\t\t\t101,\n\t\t\t115,\n\t\t\t116,\n\t\t\t0,\n\t\t\t0,\n\t\t\t10,\n\t\t\t16,\n\t\t\t1,\n\t\t\t14,\n\t\t\t0,\n\t\t\t32,\n\t\t\t0,\n\t\t\t65,\n\t\t\t1,\n\t\t\t54,\n\t\t\t2,\n\t\t\t0,\n\t\t\t32,\n\t\t\t0,\n\t\t\t40,\n\t\t\t2,\n\t\t\t0,\n\t\t\t11\n\t\t]);\n\t\tconst module = new WebAssembly.Module(bin);\n\t\tif (new WebAssembly.Instance(module, {}).exports.test(4) !== 0) wa = true;\n\t\treturn wa;\n\t} catch (__) {}\n\treturn wa;\n}\nvar DEFAULT_OPTIONS = {\n\tjs: true,\n\twasm: true\n};\nvar MultiMath = class {\n\tconstructor(options) {\n\t\tconst opts = Object.assign({}, DEFAULT_OPTIONS, options || {});\n\t\tthis.options = opts;\n\t\tthis.__cache = {};\n\t\tthis.__init_promise = null;\n\t\tthis.__modules = opts.modules || {};\n\t\tthis.__memory = null;\n\t\tthis.__wasm = {};\n\t\tthis.__isLE = new Uint32Array(new Uint8Array([\n\t\t\t1,\n\t\t\t0,\n\t\t\t0,\n\t\t\t0\n\t\t]).buffer)[0] === 1;\n\t\tif (!this.options.js && !this.options.wasm) throw new Error(\"mathlib: at least \\\"js\\\" or \\\"wasm\\\" should be enabled\");\n\t}\n\thas_wasm() {\n\t\treturn hasWebAssembly();\n\t}\n\tuse(module) {\n\t\tthis.__modules[module.name] = module;\n\t\tif (this.options.wasm && this.has_wasm() && module.wasm_fn) this[module.name] = module.wasm_fn;\n\t\telse this[module.name] = module.fn;\n\t\treturn this;\n\t}\n\tinit() {\n\t\tif (this.__init_promise) return this.__init_promise;\n\t\tif (!this.options.js && this.options.wasm && !this.has_wasm()) return Promise.reject(/* @__PURE__ */ new Error(\"mathlib: only \\\"wasm\\\" was enabled, but it's not supported\"));\n\t\tthis.__init_promise = Promise.all(Object.keys(this.__modules).map((name) => {\n\t\t\tconst module = this.__modules[name];\n\t\t\tif (!this.options.wasm || !this.has_wasm() || !module.wasm_fn) return null;\n\t\t\tif (this.__wasm[name]) return null;\n\t\t\treturn WebAssembly.compile(base64decode(module.wasm_src)).then((m) => {\n\t\t\t\tthis.__wasm[name] = m;\n\t\t\t});\n\t\t})).then(() => this);\n\t\treturn this.__init_promise;\n\t}\n\t__reallocate(bytes) {\n\t\tif (!this.__memory) {\n\t\t\tthis.__memory = new WebAssembly.Memory({ initial: Math.ceil(bytes / (64 * 1024)) });\n\t\t\treturn this.__memory;\n\t\t}\n\t\tconst mem_size = this.__memory.buffer.byteLength;\n\t\tif (mem_size < bytes) this.__memory.grow(Math.ceil((bytes - mem_size) / (64 * 1024)));\n\t\treturn this.__memory;\n\t}\n\t__instance(name, memsize, env_extra) {\n\t\tif (memsize) this.__reallocate(memsize);\n\t\tif (!this.__wasm[name]) {\n\t\t\tconst module = this.__modules[name];\n\t\t\tthis.__wasm[name] = new WebAssembly.Module(base64decode(module.wasm_src));\n\t\t}\n\t\tif (!this.__cache[name]) {\n\t\t\tconst env_base = {\n\t\t\t\tmemoryBase: 0,\n\t\t\t\tmemory: this.__memory,\n\t\t\t\ttableBase: 0,\n\t\t\t\ttable: new WebAssembly.Table({\n\t\t\t\t\tinitial: 0,\n\t\t\t\t\telement: \"anyfunc\"\n\t\t\t\t})\n\t\t\t};\n\t\t\tthis.__cache[name] = new WebAssembly.Instance(this.__wasm[name], { env: Object.assign(env_base, env_extra || {}) });\n\t\t}\n\t\treturn this.__cache[name];\n\t}\n\t__align(number, base) {\n\t\tbase = base || 8;\n\t\tconst reminder = number % base;\n\t\treturn number + (reminder ? base - reminder : 0);\n\t}\n};\nfunction gaussCoef(sigma) {\n\tif (sigma < .5) sigma = .5;\n\tconst a = Math.exp(.726 * .726) / sigma, g1 = Math.exp(-a), g2 = Math.exp(-2 * a), k = (1 - g1) * (1 - g1) / (1 + 2 * a * g1 - g2);\n\tconst a0 = k;\n\tconst a1 = k * (a - 1) * g1;\n\tconst a2 = k * (a + 1) * g1;\n\tconst a3 = -k * g2;\n\tconst b1 = 2 * g1;\n\tconst b2 = -g2;\n\tconst left_corner = (a0 + a1) / (1 - b1 - b2);\n\tconst right_corner = (a2 + a3) / (1 - b1 - b2);\n\treturn new Float32Array([\n\t\ta0,\n\t\ta1,\n\t\ta2,\n\t\ta3,\n\t\tb1,\n\t\tb2,\n\t\tleft_corner,\n\t\tright_corner\n\t]);\n}\nfunction convolveMono16(src, out, line, coeff, width, height) {\n\tlet prev_src, curr_src, curr_out, prev_out, prev_prev_out;\n\tlet src_index, out_index, line_index;\n\tlet i, j;\n\tlet coeff_a0, coeff_a1, coeff_b1, coeff_b2;\n\tfor (i = 0; i < height; i++) {\n\t\tsrc_index = i * width;\n\t\tout_index = i;\n\t\tline_index = 0;\n\t\tprev_src = src[src_index];\n\t\tprev_prev_out = prev_src * coeff[6];\n\t\tprev_out = prev_prev_out;\n\t\tcoeff_a0 = coeff[0];\n\t\tcoeff_a1 = coeff[1];\n\t\tcoeff_b1 = coeff[4];\n\t\tcoeff_b2 = coeff[5];\n\t\tfor (j = 0; j < width; j++) {\n\t\t\tcurr_src = src[src_index];\n\t\t\tcurr_out = curr_src * coeff_a0 + prev_src * coeff_a1 + prev_out * coeff_b1 + prev_prev_out * coeff_b2;\n\t\t\tprev_prev_out = prev_out;\n\t\t\tprev_out = curr_out;\n\t\t\tprev_src = curr_src;\n\t\t\tline[line_index] = prev_out;\n\t\t\tline_index++;\n\t\t\tsrc_index++;\n\t\t}\n\t\tsrc_index--;\n\t\tline_index--;\n\t\tout_index += height * (width - 1);\n\t\tprev_src = src[src_index];\n\t\tprev_prev_out = prev_src * coeff[7];\n\t\tprev_out = prev_prev_out;\n\t\tcurr_src = prev_src;\n\t\tcoeff_a0 = coeff[2];\n\t\tcoeff_a1 = coeff[3];\n\t\tfor (j = width - 1; j >= 0; j--) {\n\t\t\tcurr_out = curr_src * coeff_a0 + prev_src * coeff_a1 + prev_out * coeff_b1 + prev_prev_out * coeff_b2;\n\t\t\tprev_prev_out = prev_out;\n\t\t\tprev_out = curr_out;\n\t\t\tprev_src = curr_src;\n\t\t\tcurr_src = src[src_index];\n\t\t\tout[out_index] = line[line_index] + prev_out;\n\t\t\tsrc_index--;\n\t\t\tline_index--;\n\t\t\tout_index -= height;\n\t\t}\n\t}\n}\nfunction blurMono16(src, width, height, radius) {\n\tif (!radius) return;\n\tconst out = new Uint16Array(src.length), tmp_line = new Float32Array(Math.max(width, height));\n\tconst coeff = gaussCoef(radius);\n\tconvolveMono16(src, out, tmp_line, coeff, width, height, radius);\n\tconvolveMono16(out, src, tmp_line, coeff, height, width, radius);\n}\nfunction hsv_v16(img, width, height) {\n\tconst size = width * height;\n\tconst out = new Uint16Array(size);\n\tlet r, g, b, max;\n\tfor (let i = 0; i < size; i++) {\n\t\tr = img[4 * i];\n\t\tg = img[4 * i + 1];\n\t\tb = img[4 * i + 2];\n\t\tmax = r >= g && r >= b ? r : g >= b && g >= r ? g : b;\n\t\tout[i] = max << 8;\n\t}\n\treturn out;\n}\nfunction unsharp$1(img, width, height, amount, radius, threshold) {\n\tlet v1, v2, vmul;\n\tlet diff, iTimes4;\n\tif (amount === 0 || radius < .5) return;\n\tif (radius > 2) radius = 2;\n\tconst brightness = hsv_v16(img, width, height);\n\tconst blured = new Uint16Array(brightness);\n\tblurMono16(blured, width, height, radius);\n\tconst amountFp = amount / 100 * 4096 + .5 | 0;\n\tconst thresholdFp = threshold << 8;\n\tconst size = width * height;\n\tfor (let i = 0; i < size; i++) {\n\t\tv1 = brightness[i];\n\t\tdiff = v1 - blured[i];\n\t\tif (Math.abs(diff) >= thresholdFp) {\n\t\t\tv2 = v1 + (amountFp * diff + 2048 >> 12);\n\t\t\tv2 = v2 > 65280 ? 65280 : v2;\n\t\t\tv2 = v2 < 0 ? 0 : v2;\n\t\t\tv1 = v1 !== 0 ? v1 : 1;\n\t\t\tvmul = (v2 << 12) / v1 | 0;\n\t\t\tiTimes4 = i * 4;\n\t\t\timg[iTimes4] = img[iTimes4] * vmul + 2048 >> 12;\n\t\t\timg[iTimes4 + 1] = img[iTimes4 + 1] * vmul + 2048 >> 12;\n\t\t\timg[iTimes4 + 2] = img[iTimes4 + 2] * vmul + 2048 >> 12;\n\t\t}\n\t}\n}\nfunction unsharp(img, width, height, amount, radius, threshold) {\n\tif (amount === 0 || radius < .5) return;\n\tif (radius > 2) radius = 2;\n\tconst pixels = width * height;\n\tconst img_bytes_cnt = pixels * 4;\n\tconst hsv_bytes_cnt = pixels * 2;\n\tconst blur_bytes_cnt = pixels * 2;\n\tconst blur_line_byte_cnt = Math.max(width, height) * 4;\n\tconst blur_coeffs_byte_cnt = 32;\n\tconst img_offset = 0;\n\tconst hsv_offset = img_bytes_cnt;\n\tconst blur_offset = hsv_offset + hsv_bytes_cnt;\n\tconst blur_tmp_offset = blur_offset + blur_bytes_cnt;\n\tconst blur_line_offset = blur_tmp_offset + blur_bytes_cnt;\n\tconst blur_coeffs_offset = blur_line_offset + blur_line_byte_cnt;\n\tconst instance = this.__instance(\"unsharp_mask\", img_bytes_cnt + hsv_bytes_cnt + blur_bytes_cnt * 2 + blur_line_byte_cnt + blur_coeffs_byte_cnt, { exp: Math.exp });\n\tconst img32 = new Uint32Array(img.buffer);\n\tnew Uint32Array(this.__memory.buffer).set(img32);\n\tlet fn = instance.exports.hsv_v16 || instance.exports._hsv_v16;\n\tif (!fn) throw new Error(\"WASM hsv_v16 function is not available\");\n\tfn(img_offset, hsv_offset, width, height);\n\tfn = instance.exports.blurMono16 || instance.exports._blurMono16;\n\tif (!fn) throw new Error(\"WASM blurMono16 function is not available\");\n\tfn(hsv_offset, blur_offset, blur_tmp_offset, blur_line_offset, blur_coeffs_offset, width, height, radius);\n\tfn = instance.exports.unsharp || instance.exports._unsharp;\n\tif (!fn) throw new Error(\"WASM unsharp function is not available\");\n\tfn(img_offset, img_offset, hsv_offset, blur_offset, width, height, amount, threshold);\n\timg32.set(new Uint32Array(this.__memory.buffer, 0, pixels));\n}\nvar mm_unsharp_mask_default = {\n\tname: \"unsharp_mask\",\n\tfn: unsharp$1,\n\twasm_fn: unsharp,\n\twasm_src: \"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\"\n};\nvar resize_filter_info_default = { filter: {\n\tbox: {\n\t\twin: .5,\n\t\tfn(x) {\n\t\t\tif (x < 0) x = -x;\n\t\t\treturn x < .5 ? 1 : 0;\n\t\t}\n\t},\n\thamming: {\n\t\twin: 1,\n\t\tfn(x) {\n\t\t\tif (x < 0) x = -x;\n\t\t\tif (x >= 1) return 0;\n\t\t\tif (x < 1.1920929e-7) return 1;\n\t\t\tconst xpi = x * Math.PI;\n\t\t\treturn Math.sin(xpi) / xpi * (.54 + .46 * Math.cos(xpi / 1));\n\t\t}\n\t},\n\tlanczos2: {\n\t\twin: 2,\n\t\tfn(x) {\n\t\t\tif (x < 0) x = -x;\n\t\t\tif (x >= 2) return 0;\n\t\t\tif (x < 1.1920929e-7) return 1;\n\t\t\tconst xpi = x * Math.PI;\n\t\t\treturn Math.sin(xpi) / xpi * Math.sin(xpi / 2) / (xpi / 2);\n\t\t}\n\t},\n\tlanczos3: {\n\t\twin: 3,\n\t\tfn(x) {\n\t\t\tif (x < 0) x = -x;\n\t\t\tif (x >= 3) return 0;\n\t\t\tif (x < 1.1920929e-7) return 1;\n\t\t\tconst xpi = x * Math.PI;\n\t\t\treturn Math.sin(xpi) / xpi * Math.sin(xpi / 3) / (xpi / 3);\n\t\t}\n\t},\n\tmks2013: {\n\t\twin: 2.5,\n\t\tfn(x) {\n\t\t\tif (x < 0) x = -x;\n\t\t\tif (x >= 2.5) return 0;\n\t\t\tif (x >= 1.5) return -.125 * (x - 2.5) * (x - 2.5);\n\t\t\tif (x >= .5) return .25 * (4 * x * x - 11 * x + 7);\n\t\t\treturn 1.0625 - 1.75 * x * x;\n\t\t}\n\t}\n} };\nvar FIXED_FRAC_BITS = 14;\nfunction toFixedPoint(num) {\n\treturn Math.round(num * ((1 << FIXED_FRAC_BITS) - 1));\n}\nfunction resizeFilterGen(filter, srcSize, destSize, scale, offset) {\n\tconst filterFunction = resize_filter_info_default.filter[filter].fn;\n\tconst scaleInverted = 1 / scale;\n\tconst scaleClamped = Math.min(1, scale);\n\tconst srcWindow = resize_filter_info_default.filter[filter].win / scaleClamped;\n\tlet destPixel, srcPixel, srcFirst, srcLast, filterElementSize, floatFilter, fxpFilter, total, pxl, idx, floatVal, filterTotal, filterVal;\n\tlet leftNotEmpty, rightNotEmpty, filterShift, filterSize;\n\tconst maxFilterElementSize = Math.floor((srcWindow + 1) * 2);\n\tconst packedFilter = new Int16Array((maxFilterElementSize + 2) * destSize);\n\tlet packedFilterPtr = 0;\n\tconst slowCopy = !packedFilter.subarray || !packedFilter.set;\n\tfor (destPixel = 0; destPixel < destSize; destPixel++) {\n\t\tsrcPixel = (destPixel + .5) * scaleInverted + offset;\n\t\tsrcFirst = Math.max(0, Math.floor(srcPixel - srcWindow));\n\t\tsrcLast = Math.min(srcSize - 1, Math.ceil(srcPixel + srcWindow));\n\t\tfilterElementSize = srcLast - srcFirst + 1;\n\t\tfloatFilter = new Float32Array(filterElementSize);\n\t\tfxpFilter = new Int16Array(filterElementSize);\n\t\ttotal = 0;\n\t\tfor (pxl = srcFirst, idx = 0; pxl <= srcLast; pxl++, idx++) {\n\t\t\tfloatVal = filterFunction((pxl + .5 - srcPixel) * scaleClamped);\n\t\t\ttotal += floatVal;\n\t\t\tfloatFilter[idx] = floatVal;\n\t\t}\n\t\tfilterTotal = 0;\n\t\tfor (idx = 0; idx < floatFilter.length; idx++) {\n\t\t\tfilterVal = floatFilter[idx] / total;\n\t\t\tfilterTotal += filterVal;\n\t\t\tfxpFilter[idx] = toFixedPoint(filterVal);\n\t\t}\n\t\tfxpFilter[destSize >> 1] += toFixedPoint(1 - filterTotal);\n\t\tleftNotEmpty = 0;\n\t\twhile (leftNotEmpty < fxpFilter.length && fxpFilter[leftNotEmpty] === 0) leftNotEmpty++;\n\t\tif (leftNotEmpty < fxpFilter.length) {\n\t\t\trightNotEmpty = fxpFilter.length - 1;\n\t\t\twhile (rightNotEmpty > 0 && fxpFilter[rightNotEmpty] === 0) rightNotEmpty--;\n\t\t\tfilterShift = srcFirst + leftNotEmpty;\n\t\t\tfilterSize = rightNotEmpty - leftNotEmpty + 1;\n\t\t\tpackedFilter[packedFilterPtr++] = filterShift;\n\t\t\tpackedFilter[packedFilterPtr++] = filterSize;\n\t\t\tif (!slowCopy) {\n\t\t\t\tpackedFilter.set(fxpFilter.subarray(leftNotEmpty, rightNotEmpty + 1), packedFilterPtr);\n\t\t\t\tpackedFilterPtr += filterSize;\n\t\t\t} else for (idx = leftNotEmpty; idx <= rightNotEmpty; idx++) packedFilter[packedFilterPtr++] = fxpFilter[idx];\n\t\t} else {\n\t\t\tpackedFilter[packedFilterPtr++] = 0;\n\t\t\tpackedFilter[packedFilterPtr++] = 0;\n\t\t}\n\t}\n\treturn packedFilter;\n}\nfunction clampTo8(i) {\n\treturn i < 0 ? 0 : i > 255 ? 255 : i;\n}\nfunction clampNegative(i) {\n\treturn i >= 0 ? i : 0;\n}\nfunction convolveHor(src, dest, srcW, srcH, destW, filters) {\n\tlet r, g, b, a;\n\tlet filterPtr, filterShift, filterSize;\n\tlet srcPtr, srcY, destX, filterVal;\n\tlet srcOffset = 0, destOffset = 0;\n\tfor (srcY = 0; srcY < srcH; srcY++) {\n\t\tfilterPtr = 0;\n\t\tfor (destX = 0; destX < destW; destX++) {\n\t\t\tfilterShift = filters[filterPtr++];\n\t\t\tfilterSize = filters[filterPtr++];\n\t\t\tsrcPtr = srcOffset + filterShift * 4 | 0;\n\t\t\tr = g = b = a = 0;\n\t\t\tfor (; filterSize > 0; filterSize--) {\n\t\t\t\tfilterVal = filters[filterPtr++];\n\t\t\t\ta = a + filterVal * src[srcPtr + 3] | 0;\n\t\t\t\tb = b + filterVal * src[srcPtr + 2] | 0;\n\t\t\t\tg = g + filterVal * src[srcPtr + 1] | 0;\n\t\t\t\tr = r + filterVal * src[srcPtr] | 0;\n\t\t\t\tsrcPtr = srcPtr + 4 | 0;\n\t\t\t}\n\t\t\tdest[destOffset + 3] = clampNegative(a >> 7);\n\t\t\tdest[destOffset + 2] = clampNegative(b >> 7);\n\t\t\tdest[destOffset + 1] = clampNegative(g >> 7);\n\t\t\tdest[destOffset] = clampNegative(r >> 7);\n\t\t\tdestOffset = destOffset + srcH * 4 | 0;\n\t\t}\n\t\tdestOffset = (srcY + 1) * 4 | 0;\n\t\tsrcOffset = (srcY + 1) * srcW * 4 | 0;\n\t}\n}\nfunction convolveVert(src, dest, srcW, srcH, destW, filters) {\n\tlet r, g, b, a;\n\tlet filterPtr, filterShift, filterSize;\n\tlet srcPtr, srcY, destX, filterVal;\n\tlet srcOffset = 0, destOffset = 0;\n\tfor (srcY = 0; srcY < srcH; srcY++) {\n\t\tfilterPtr = 0;\n\t\tfor (destX = 0; destX < destW; destX++) {\n\t\t\tfilterShift = filters[filterPtr++];\n\t\t\tfilterSize = filters[filterPtr++];\n\t\t\tsrcPtr = srcOffset + filterShift * 4 | 0;\n\t\t\tr = g = b = a = 0;\n\t\t\tfor (; filterSize > 0; filterSize--) {\n\t\t\t\tfilterVal = filters[filterPtr++];\n\t\t\t\ta = a + filterVal * src[srcPtr + 3] | 0;\n\t\t\t\tb = b + filterVal * src[srcPtr + 2] | 0;\n\t\t\t\tg = g + filterVal * src[srcPtr + 1] | 0;\n\t\t\t\tr = r + filterVal * src[srcPtr] | 0;\n\t\t\t\tsrcPtr = srcPtr + 4 | 0;\n\t\t\t}\n\t\t\tr >>= 7;\n\t\t\tg >>= 7;\n\t\t\tb >>= 7;\n\t\t\ta >>= 7;\n\t\t\tdest[destOffset + 3] = clampTo8(a + 8192 >> 14);\n\t\t\tdest[destOffset + 2] = clampTo8(b + 8192 >> 14);\n\t\t\tdest[destOffset + 1] = clampTo8(g + 8192 >> 14);\n\t\t\tdest[destOffset] = clampTo8(r + 8192 >> 14);\n\t\t\tdestOffset = destOffset + srcH * 4 | 0;\n\t\t}\n\t\tdestOffset = (srcY + 1) * 4 | 0;\n\t\tsrcOffset = (srcY + 1) * srcW * 4 | 0;\n\t}\n}\nfunction convolveHorWithPre(src, dest, srcW, srcH, destW, filters) {\n\tlet r, g, b, a, alpha;\n\tlet filterPtr, filterShift, filterSize;\n\tlet srcPtr, srcY, destX, filterVal;\n\tlet srcOffset = 0, destOffset = 0;\n\tfor (srcY = 0; srcY < srcH; srcY++) {\n\t\tfilterPtr = 0;\n\t\tfor (destX = 0; destX < destW; destX++) {\n\t\t\tfilterShift = filters[filterPtr++];\n\t\t\tfilterSize = filters[filterPtr++];\n\t\t\tsrcPtr = srcOffset + filterShift * 4 | 0;\n\t\t\tr = g = b = a = 0;\n\t\t\tfor (; filterSize > 0; filterSize--) {\n\t\t\t\tfilterVal = filters[filterPtr++];\n\t\t\t\talpha = src[srcPtr + 3];\n\t\t\t\ta = a + filterVal * alpha | 0;\n\t\t\t\tb = b + filterVal * src[srcPtr + 2] * alpha | 0;\n\t\t\t\tg = g + filterVal * src[srcPtr + 1] * alpha | 0;\n\t\t\t\tr = r + filterVal * src[srcPtr] * alpha | 0;\n\t\t\t\tsrcPtr = srcPtr + 4 | 0;\n\t\t\t}\n\t\t\tb = b / 255 | 0;\n\t\t\tg = g / 255 | 0;\n\t\t\tr = r / 255 | 0;\n\t\t\tdest[destOffset + 3] = clampNegative(a >> 7);\n\t\t\tdest[destOffset + 2] = clampNegative(b >> 7);\n\t\t\tdest[destOffset + 1] = clampNegative(g >> 7);\n\t\t\tdest[destOffset] = clampNegative(r >> 7);\n\t\t\tdestOffset = destOffset + srcH * 4 | 0;\n\t\t}\n\t\tdestOffset = (srcY + 1) * 4 | 0;\n\t\tsrcOffset = (srcY + 1) * srcW * 4 | 0;\n\t}\n}\nfunction convolveVertWithPre(src, dest, srcW, srcH, destW, filters) {\n\tlet r, g, b, a;\n\tlet filterPtr, filterShift, filterSize;\n\tlet srcPtr, srcY, destX, filterVal;\n\tlet srcOffset = 0, destOffset = 0;\n\tfor (srcY = 0; srcY < srcH; srcY++) {\n\t\tfilterPtr = 0;\n\t\tfor (destX = 0; destX < destW; destX++) {\n\t\t\tfilterShift = filters[filterPtr++];\n\t\t\tfilterSize = filters[filterPtr++];\n\t\t\tsrcPtr = srcOffset + filterShift * 4 | 0;\n\t\t\tr = g = b = a = 0;\n\t\t\tfor (; filterSize > 0; filterSize--) {\n\t\t\t\tfilterVal = filters[filterPtr++];\n\t\t\t\ta = a + filterVal * src[srcPtr + 3] | 0;\n\t\t\t\tb = b + filterVal * src[srcPtr + 2] | 0;\n\t\t\t\tg = g + filterVal * src[srcPtr + 1] | 0;\n\t\t\t\tr = r + filterVal * src[srcPtr] | 0;\n\t\t\t\tsrcPtr = srcPtr + 4 | 0;\n\t\t\t}\n\t\t\tr >>= 7;\n\t\t\tg >>= 7;\n\t\t\tb >>= 7;\n\t\t\ta >>= 7;\n\t\t\ta = clampTo8(a + 8192 >> 14);\n\t\t\tif (a > 0) {\n\t\t\t\tr = r * 255 / a | 0;\n\t\t\t\tg = g * 255 / a | 0;\n\t\t\t\tb = b * 255 / a | 0;\n\t\t\t}\n\t\t\tdest[destOffset + 3] = a;\n\t\t\tdest[destOffset + 2] = clampTo8(b + 8192 >> 14);\n\t\t\tdest[destOffset + 1] = clampTo8(g + 8192 >> 14);\n\t\t\tdest[destOffset] = clampTo8(r + 8192 >> 14);\n\t\t\tdestOffset = destOffset + srcH * 4 | 0;\n\t\t}\n\t\tdestOffset = (srcY + 1) * 4 | 0;\n\t\tsrcOffset = (srcY + 1) * srcW * 4 | 0;\n\t}\n}\nfunction hasAlpha$1(src, width, height) {\n\tlet ptr = 3;\n\tconst len = width * height * 4 | 0;\n\twhile (ptr < len) {\n\t\tif (src[ptr] !== 255) return true;\n\t\tptr = ptr + 4 | 0;\n\t}\n\treturn false;\n}\nfunction resetAlpha$1(dst, width, height) {\n\tlet ptr = 3;\n\tconst len = width * height * 4 | 0;\n\twhile (ptr < len) {\n\t\tdst[ptr] = 255;\n\t\tptr = ptr + 4 | 0;\n\t}\n}\nfunction resize(options) {\n\tconst src = options.src;\n\tconst srcW = options.width;\n\tconst srcH = options.height;\n\tconst destW = options.toWidth;\n\tconst destH = options.toHeight;\n\tconst scaleX = options.scaleX || options.toWidth / options.width;\n\tconst scaleY = options.scaleY || options.toHeight / options.height;\n\tconst offsetX = options.offsetX || 0;\n\tconst offsetY = options.offsetY || 0;\n\tconst dest = options.dest || new Uint8Array(destW * destH * 4);\n\tconst filter = typeof options.filter === \"undefined\" ? \"mks2013\" : options.filter;\n\tconst filtersX = resizeFilterGen(filter, srcW, destW, scaleX, offsetX), filtersY = resizeFilterGen(filter, srcH, destH, scaleY, offsetY);\n\tconst tmp = new Uint16Array(destW * srcH * 4);\n\tif (hasAlpha$1(src, srcW, srcH)) {\n\t\tconvolveHorWithPre(src, tmp, srcW, srcH, destW, filtersX);\n\t\tconvolveVertWithPre(tmp, dest, srcH, destW, destH, filtersY);\n\t} else {\n\t\tconvolveHor(src, tmp, srcW, srcH, destW, filtersX);\n\t\tconvolveVert(tmp, dest, srcH, destW, destH, filtersY);\n\t\tresetAlpha$1(dest, destW, destH);\n\t}\n\treturn dest;\n}\nfunction hasAlpha(src, width, height) {\n\tlet ptr = 3;\n\tconst len = width * height * 4 | 0;\n\twhile (ptr < len) {\n\t\tif (src[ptr] !== 255) return true;\n\t\tptr = ptr + 4 | 0;\n\t}\n\treturn false;\n}\nfunction resetAlpha(dst, width, height) {\n\tlet ptr = 3;\n\tconst len = width * height * 4 | 0;\n\twhile (ptr < len) {\n\t\tdst[ptr] = 255;\n\t\tptr = ptr + 4 | 0;\n\t}\n}\nfunction asUint8Array(src) {\n\treturn new Uint8Array(src.buffer, 0, src.byteLength);\n}\nvar IS_LE = true;\ntry {\n\tIS_LE = new Uint32Array(new Uint8Array([\n\t\t1,\n\t\t0,\n\t\t0,\n\t\t0\n\t]).buffer)[0] === 1;\n} catch (__) {}\nfunction copyInt16asLE(src, target, target_offset) {\n\tif (IS_LE) {\n\t\ttarget.set(asUint8Array(src), target_offset);\n\t\treturn;\n\t}\n\tfor (let ptr = target_offset, i = 0; i < src.length; i++) {\n\t\tconst data = src[i];\n\t\ttarget[ptr++] = data & 255;\n\t\ttarget[ptr++] = data >> 8 & 255;\n\t}\n}\nfunction resize_wasm(options) {\n\tconst src = options.src;\n\tconst srcW = options.width;\n\tconst srcH = options.height;\n\tconst destW = options.toWidth;\n\tconst destH = options.toHeight;\n\tconst scaleX = options.scaleX || options.toWidth / options.width;\n\tconst scaleY = options.scaleY || options.toHeight / options.height;\n\tconst offsetX = options.offsetX || 0;\n\tconst offsetY = options.offsetY || 0;\n\tconst dest = options.dest || new Uint8Array(destW * destH * 4);\n\tconst filter = typeof options.filter === \"undefined\" ? \"mks2013\" : options.filter;\n\tconst filtersX = resizeFilterGen(filter, srcW, destW, scaleX, offsetX), filtersY = resizeFilterGen(filter, srcH, destH, scaleY, offsetY);\n\tconst src_offset = 0;\n\tconst src_size = Math.max(src.byteLength, dest.byteLength);\n\tconst tmp_offset = this.__align(src_offset + src_size);\n\tconst tmp_size = srcH * destW * 4 * 2;\n\tconst filtersX_offset = this.__align(tmp_offset + tmp_size);\n\tconst filtersY_offset = this.__align(filtersX_offset + filtersX.byteLength);\n\tconst alloc_bytes = filtersY_offset + filtersY.byteLength;\n\tconst instance = this.__instance(\"resize\", alloc_bytes);\n\tconst mem = new Uint8Array(this.__memory.buffer);\n\tconst mem32 = new Uint32Array(this.__memory.buffer);\n\tconst src32 = new Uint32Array(src.buffer);\n\tmem32.set(src32);\n\tcopyInt16asLE(filtersX, mem, filtersX_offset);\n\tcopyInt16asLE(filtersY, mem, filtersY_offset);\n\tconst fn = instance.exports.convolveHV || instance.exports._convolveHV;\n\tif (!fn) throw new Error(\"WASM resize function is not available\");\n\tif (hasAlpha(src, srcW, srcH)) fn(filtersX_offset, filtersY_offset, tmp_offset, srcW, srcH, destW, destH, 1);\n\telse {\n\t\tfn(filtersX_offset, filtersY_offset, tmp_offset, srcW, srcH, destW, destH, 0);\n\t\tresetAlpha(dest, destW, destH);\n\t}\n\tnew Uint32Array(dest.buffer).set(new Uint32Array(this.__memory.buffer, 0, destH * destW));\n\treturn dest;\n}\nvar mm_resize_default = {\n\tname: \"resize\",\n\tfn: resize,\n\twasm_fn: resize_wasm,\n\twasm_src: \"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\"\n};\nvar MathLib = class extends MultiMath {\n\tconstructor(requested_features) {\n\t\tconst __requested_features = requested_features || [];\n\t\tconst features = {\n\t\t\tjs: __requested_features.indexOf(\"js\") >= 0,\n\t\t\twasm: __requested_features.indexOf(\"wasm\") >= 0\n\t\t};\n\t\tsuper(features);\n\t\tthis.features = {\n\t\t\tjs: features.js,\n\t\t\twasm: features.wasm && this.has_wasm()\n\t\t};\n\t\tthis.use(mm_unsharp_mask_default);\n\t\tthis.use(mm_resize_default);\n\t}\n\tresizeAndUnsharp(options) {\n\t\tconst result = this.resize(options);\n\t\tif (options.unsharpAmount) this.unsharp_mask(result, options.toWidth, options.toHeight, options.unsharpAmount, options.unsharpRadius, options.unsharpThreshold);\n\t\treturn result;\n\t}\n};\nfunction _typeof(o) {\n\t\"@babel/helpers - typeof\";\n\treturn _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(o) {\n\t\treturn typeof o;\n\t} : function(o) {\n\t\treturn o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n\t}, _typeof(o);\n}\nfunction toPrimitive(t, r) {\n\tif (\"object\" != _typeof(t) || !t) return t;\n\tvar e = t[Symbol.toPrimitive];\n\tif (void 0 !== e) {\n\t\tvar i = e.call(t, r || \"default\");\n\t\tif (\"object\" != _typeof(i)) return i;\n\t\tthrow new TypeError(\"@@toPrimitive must return a primitive value.\");\n\t}\n\treturn (\"string\" === r ? String : Number)(t);\n}\nfunction toPropertyKey(t) {\n\tvar i = toPrimitive(t, \"string\");\n\treturn \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nfunction _defineProperty(e, r, t) {\n\treturn (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n\t\tvalue: t,\n\t\tenumerable: !0,\n\t\tconfigurable: !0,\n\t\twritable: !0\n\t}) : e[r] = t, e;\n}\nfunction ownKeys(e, r) {\n\tvar t = Object.keys(e);\n\tif (Object.getOwnPropertySymbols) {\n\t\tvar o = Object.getOwnPropertySymbols(e);\n\t\tr && (o = o.filter(function(r) {\n\t\t\treturn Object.getOwnPropertyDescriptor(e, r).enumerable;\n\t\t})), t.push.apply(t, o);\n\t}\n\treturn t;\n}\nfunction _objectSpread2(e) {\n\tfor (var r = 1; r < arguments.length; r++) {\n\t\tvar t = null != arguments[r] ? arguments[r] : {};\n\t\tr % 2 ? ownKeys(Object(t), !0).forEach(function(r) {\n\t\t\t_defineProperty(e, r, t[r]);\n\t\t}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r) {\n\t\t\tObject.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n\t\t});\n\t}\n\treturn e;\n}\nvar GC_INTERVAL = 100;\nvar Pool = class {\n\tconstructor(create, idle) {\n\t\t_defineProperty(this, \"create\", void 0);\n\t\t_defineProperty(this, \"available\", void 0);\n\t\t_defineProperty(this, \"acquired\", void 0);\n\t\t_defineProperty(this, \"lastId\", void 0);\n\t\t_defineProperty(this, \"timeoutId\", void 0);\n\t\t_defineProperty(this, \"idle\", void 0);\n\t\tthis.create = create;\n\t\tthis.available = [];\n\t\tthis.acquired = {};\n\t\tthis.lastId = 1;\n\t\tthis.timeoutId = 0;\n\t\tthis.idle = idle || 2e3;\n\t}\n\tacquire() {\n\t\tlet descriptor;\n\t\tif (this.available.length !== 0) descriptor = this.available.pop();\n\t\telse descriptor = _objectSpread2(_objectSpread2({}, this.create()), {}, {\n\t\t\tid: this.lastId++,\n\t\t\tlastUsed: 0\n\t\t});\n\t\tthis.acquired[descriptor.id] = descriptor;\n\t\treturn {\n\t\t\tvalue: descriptor.value,\n\t\t\trelease: () => this.release(descriptor)\n\t\t};\n\t}\n\trelease(descriptor) {\n\t\tdelete this.acquired[descriptor.id];\n\t\tdescriptor.lastUsed = Date.now();\n\t\tthis.available.push(descriptor);\n\t\tif (this.timeoutId === 0) this.timeoutId = setTimeout(() => this.gc(), GC_INTERVAL);\n\t}\n\tgc() {\n\t\tconst now = Date.now();\n\t\tthis.available = this.available.filter((descriptor) => {\n\t\t\tif (now - descriptor.lastUsed > this.idle) {\n\t\t\t\tdescriptor.destroy();\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t});\n\t\tif (this.available.length !== 0) this.timeoutId = setTimeout(() => this.gc(), GC_INTERVAL);\n\t\telse this.timeoutId = 0;\n\t}\n};\nfunction objClass(obj) {\n\tvar _obj$constructor$name, _obj$constructor;\n\treturn (_obj$constructor$name = obj === null || obj === void 0 || (_obj$constructor = obj.constructor) === null || _obj$constructor === void 0 ? void 0 : _obj$constructor.name) !== null && _obj$constructor$name !== void 0 ? _obj$constructor$name : \"\";\n}\nfunction isCanvas(element) {\n\tconst cname = objClass(element);\n\treturn cname === \"HTMLCanvasElement\" || cname === \"OffscreenCanvas\" || cname === \"Canvas\" || cname === \"CanvasElement\";\n}\nfunction isImage(element) {\n\treturn objClass(element) === \"HTMLImageElement\";\n}\nfunction isImageBitmap(element) {\n\treturn objClass(element) === \"ImageBitmap\";\n}\nfunction limiter(concurrency) {\n\tlet active = 0;\n\tconst queue = [];\n\tfunction roll() {\n\t\tif (active < concurrency && queue.length) {\n\t\t\tvar _queue$shift;\n\t\t\tactive++;\n\t\t\t(_queue$shift = queue.shift()) === null || _queue$shift === void 0 || _queue$shift();\n\t\t}\n\t}\n\treturn function limit(fn) {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tqueue.push(() => {\n\t\t\t\tfn().then((result) => {\n\t\t\t\t\tresolve(result);\n\t\t\t\t\tactive--;\n\t\t\t\t\troll();\n\t\t\t\t}, (err) => {\n\t\t\t\t\treject(err);\n\t\t\t\t\tactive--;\n\t\t\t\t\troll();\n\t\t\t\t});\n\t\t\t});\n\t\t\troll();\n\t\t});\n\t};\n}\nfunction cib_quality_name(num) {\n\tswitch (num) {\n\t\tcase 0: return \"pixelated\";\n\t\tcase 1: return \"low\";\n\t\tcase 2: return \"medium\";\n\t}\n\treturn \"high\";\n}\nvar CIB_QUALITY_FILTERS = [\n\t\"box\",\n\t\"hamming\",\n\t\"lanczos2\",\n\t\"lanczos3\"\n];\nfunction cib_quality_filter(num) {\n\treturn CIB_QUALITY_FILTERS[num];\n}\nfunction is_cib_filter(filter) {\n\treturn CIB_QUALITY_FILTERS.indexOf(filter) >= 0;\n}\nfunction filter_to_cib_quality(filter) {\n\tconst index = CIB_QUALITY_FILTERS.indexOf(filter);\n\treturn index >= 0 ? index : void 0;\n}\nvar MIN_INNER_TILE_SIZE = 2;\nvar DEST_TILE_BORDER = 3;\nfunction createStages(fromWidth, fromHeight, toWidth, toHeight, srcTileSize) {\n\tconst scaleX = toWidth / fromWidth;\n\tconst scaleY = toHeight / fromHeight;\n\tconst minScale = (2 * DEST_TILE_BORDER + MIN_INNER_TILE_SIZE + 1) / srcTileSize;\n\tif (minScale > .5) return [[toWidth, toHeight]];\n\tconst stageCount = Math.ceil(Math.log(Math.min(scaleX, scaleY)) / Math.log(minScale));\n\tif (stageCount <= 1) return [[toWidth, toHeight]];\n\tconst result = [];\n\tfor (let i = 0; i < stageCount; i++) {\n\t\tconst width = Math.round(Math.pow(Math.pow(fromWidth, stageCount - i - 1) * Math.pow(toWidth, i + 1), 1 / stageCount));\n\t\tconst height = Math.round(Math.pow(Math.pow(fromHeight, stageCount - i - 1) * Math.pow(toHeight, i + 1), 1 / stageCount));\n\t\tresult.push([width, height]);\n\t}\n\treturn result;\n}\nvar PIXEL_EPSILON = 1e-5;\nfunction pixelFloor(x) {\n\tconst nearest = Math.round(x);\n\tif (Math.abs(x - nearest) < PIXEL_EPSILON) return nearest;\n\treturn Math.floor(x);\n}\nfunction pixelCeil(x) {\n\tconst nearest = Math.round(x);\n\tif (Math.abs(x - nearest) < PIXEL_EPSILON) return nearest;\n\treturn Math.ceil(x);\n}\nfunction createRegions(options) {\n\tconst scaleX = options.toWidth / options.width;\n\tconst scaleY = options.toHeight / options.height;\n\tconst innerTileWidth = pixelFloor(options.srcTileSize * scaleX) - 2 * options.destTileBorder;\n\tconst innerTileHeight = pixelFloor(options.srcTileSize * scaleY) - 2 * options.destTileBorder;\n\tif (innerTileWidth < 1 || innerTileHeight < 1) throw new Error(\"Internal error in pica: target tile width/height is too small.\");\n\tlet x, y;\n\tlet innerX, innerY, toTileWidth, toTileHeight;\n\tconst tiles = [];\n\tlet tile;\n\tfor (innerY = 0; innerY < options.toHeight; innerY += innerTileHeight) for (innerX = 0; innerX < options.toWidth; innerX += innerTileWidth) {\n\t\tx = innerX - options.destTileBorder;\n\t\tif (x < 0) x = 0;\n\t\ttoTileWidth = innerX + innerTileWidth + options.destTileBorder - x;\n\t\tif (x + toTileWidth >= options.toWidth) toTileWidth = options.toWidth - x;\n\t\ty = innerY - options.destTileBorder;\n\t\tif (y < 0) y = 0;\n\t\ttoTileHeight = innerY + innerTileHeight + options.destTileBorder - y;\n\t\tif (y + toTileHeight >= options.toHeight) toTileHeight = options.toHeight - y;\n\t\ttile = {\n\t\t\ttoX: x,\n\t\t\ttoY: y,\n\t\t\ttoWidth: toTileWidth,\n\t\t\ttoHeight: toTileHeight,\n\t\t\ttoInnerX: innerX,\n\t\t\ttoInnerY: innerY,\n\t\t\ttoInnerWidth: innerTileWidth,\n\t\t\ttoInnerHeight: innerTileHeight,\n\t\t\toffsetX: x / scaleX - pixelFloor(x / scaleX),\n\t\t\toffsetY: y / scaleY - pixelFloor(y / scaleY),\n\t\t\tscaleX,\n\t\t\tscaleY,\n\t\t\tx: pixelFloor(x / scaleX),\n\t\t\ty: pixelFloor(y / scaleY),\n\t\t\twidth: pixelCeil(toTileWidth / scaleX),\n\t\t\theight: pixelCeil(toTileHeight / scaleY)\n\t\t};\n\t\ttiles.push(tile);\n\t}\n\treturn tiles;\n}\nvar ORIENTED_JPEG_BASE64 = \"/9j/4QAiRXhpZgAATU0AKgAAAAgAAQESAAMAAAABAAYAAAAAAAD/4AAQskZJRgABAQAAAQABAAD/2wBDAAMCAgICAgMCAgIDAwMDBAYEBAQEBAgGBgUGCQgKCgkICQkKDA8MCgsOCwkJDRENDg8QEBEQCgwSExIQEw8QEBD/wAALCAACAAMBAREA/8QAFAABAAAAAAAAAAAAAAAAAAAACf/EABsQAAMBAQADAAAAAAAAAAAAAAECAwQFABEx/9oACAEBAAA/AC06fW6va0ps7PT179E88MiV02arrCEkjGQZiSEnKc5ovxURVHoADz//2Q==\";\nvar features = {\n\tcanvas: false,\n\toffscreen_canvas: false,\n\tmay_be_worker: false,\n\tcreate_image_bitmap: false,\n\tsafari_put_image_data_fix: false,\n\tbug_canvas_orientation_region: true,\n\tbug_image_bitmap_orientation_region: true,\n\tcib_resize: false\n};\nvar checked = false;\nvar checking = null;\nfunction check_canvas() {\n\tif (typeof document === \"undefined\" || !document.createElement) return false;\n\ttry {\n\t\tconst canvas = document.createElement(\"canvas\");\n\t\tcanvas.width = 2;\n\t\tcanvas.height = 1;\n\t\tconst ctx = canvas.getContext(\"2d\");\n\t\tlet d = ctx.createImageData(2, 1);\n\t\td.data[0] = 12;\n\t\td.data[1] = 23;\n\t\td.data[2] = 34;\n\t\td.data[3] = 255;\n\t\td.data[4] = 45;\n\t\td.data[5] = 56;\n\t\td.data[6] = 67;\n\t\td.data[7] = 255;\n\t\tctx.putImageData(d, 0, 0);\n\t\td = ctx.getImageData(0, 0, 2, 1);\n\t\treturn d.data[0] === 12 && d.data[1] === 23 && d.data[2] === 34 && d.data[3] === 255 && d.data[4] === 45 && d.data[5] === 56 && d.data[6] === 67 && d.data[7] === 255;\n\t} catch (__) {\n\t\treturn false;\n\t}\n}\nfunction check_offscreen_canvas() {\n\tif (typeof OffscreenCanvas === \"undefined\") return false;\n\ttry {\n\t\tconst ctx = new OffscreenCanvas(2, 1).getContext(\"2d\");\n\t\tlet d = ctx.createImageData(2, 1);\n\t\td.data[0] = 12;\n\t\td.data[1] = 23;\n\t\td.data[2] = 34;\n\t\td.data[3] = 255;\n\t\td.data[4] = 45;\n\t\td.data[5] = 56;\n\t\td.data[6] = 67;\n\t\td.data[7] = 255;\n\t\tctx.putImageData(d, 0, 0);\n\t\td = ctx.getImageData(0, 0, 2, 1);\n\t\treturn d.data[0] === 12 && d.data[1] === 23 && d.data[2] === 34 && d.data[3] === 255 && d.data[4] === 45 && d.data[5] === 56 && d.data[6] === 67 && d.data[7] === 255;\n\t} catch (__) {\n\t\treturn false;\n\t}\n}\nfunction check_create_image_bitmap() {\n\treturn typeof createImageBitmap !== \"undefined\";\n}\nfunction check_may_be_worker() {\n\treturn typeof Worker !== \"undefined\" && typeof URL !== \"undefined\" && !!URL.createObjectURL;\n}\nfunction check_safari_put_image_data_fix() {\n\ttry {\n\t\treturn !!(typeof navigator !== \"undefined\" && navigator.userAgent && navigator.userAgent.indexOf(\"Safari\") >= 0 && navigator.userAgent.indexOf(\"Chrome\") < 0);\n\t} catch (__) {\n\t\treturn false;\n\t}\n}\nfunction check_bug_canvas_orientation_region_async() {\n\treturn Promise.resolve().then(() => {\n\t\tif (check_offscreen_canvas() && check_create_image_bitmap() && typeof Blob !== \"undefined\" && typeof atob !== \"undefined\") {\n\t\t\tconst binary = atob(ORIENTED_JPEG_BASE64);\n\t\t\tconst bytes = new Uint8Array(binary.length);\n\t\t\tfor (let i = 0; i < binary.length; i++) bytes[i] = binary.charCodeAt(i);\n\t\t\treturn createImageBitmap(new Blob([bytes], { type: \"image/jpeg\" })).then((bitmap) => {\n\t\t\t\tconst canvas = new OffscreenCanvas(1, 1);\n\t\t\t\ttry {\n\t\t\t\t\tconst ctx = canvas.getContext(\"2d\");\n\t\t\t\t\tctx.drawImage(bitmap, 1, 1, 1, 1, 0, 0, 1, 1);\n\t\t\t\t\treturn ctx.getImageData(0, 0, 1, 1).data[0] < 240;\n\t\t\t\t} finally {\n\t\t\t\t\tbitmap.close();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\tif (check_canvas() && typeof Image !== \"undefined\") return new Promise((resolve) => {\n\t\t\tconst image = new Image();\n\t\t\timage.onload = () => {\n\t\t\t\ttry {\n\t\t\t\t\tconst canvas = document.createElement(\"canvas\");\n\t\t\t\t\tcanvas.width = 1;\n\t\t\t\t\tcanvas.height = 1;\n\t\t\t\t\tconst ctx = canvas.getContext(\"2d\");\n\t\t\t\t\tctx.drawImage(image, 1, 1, 1, 1, 0, 0, 1, 1);\n\t\t\t\t\tresolve(ctx.getImageData(0, 0, 1, 1).data[0] < 240);\n\t\t\t\t} catch (__) {\n\t\t\t\t\tresolve(true);\n\t\t\t\t}\n\t\t\t};\n\t\t\timage.onerror = () => resolve(true);\n\t\t\timage.src = `data:image/jpeg;base64,${ORIENTED_JPEG_BASE64}`;\n\t\t});\n\t\treturn true;\n\t}).catch(() => true);\n}\nfunction check_bug_image_bitmap_orientation_region_async() {\n\treturn Promise.resolve().then(() => {\n\t\tif (!features.create_image_bitmap && !check_create_image_bitmap()) return true;\n\t\tif (typeof Blob === \"undefined\" || typeof atob === \"undefined\") return true;\n\t\tconst canOffscreenCanvas = check_offscreen_canvas();\n\t\tconst canCanvas = check_canvas();\n\t\tif (!canOffscreenCanvas && !canCanvas) return true;\n\t\tconst binary = atob(ORIENTED_JPEG_BASE64);\n\t\tconst bytes = new Uint8Array(binary.length);\n\t\tfor (let i = 0; i < binary.length; i++) bytes[i] = binary.charCodeAt(i);\n\t\treturn createImageBitmap(new Blob([bytes], { type: \"image/jpeg\" })).then((imageBitmap) => createImageBitmap(imageBitmap, 1, 1, 1, 1).then((bitmap) => {\n\t\t\tlet canvas;\n\t\t\tif (canOffscreenCanvas) canvas = new OffscreenCanvas(1, 1);\n\t\t\telse {\n\t\t\t\tcanvas = document.createElement(\"canvas\");\n\t\t\t\tcanvas.width = 1;\n\t\t\t\tcanvas.height = 1;\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tconst ctx = canvas.getContext(\"2d\");\n\t\t\t\tctx.drawImage(bitmap, 0, 0);\n\t\t\t\treturn bitmap.width !== 1 || bitmap.height !== 1 || ctx.getImageData(0, 0, 1, 1).data[0] < 240;\n\t\t\t} finally {\n\t\t\t\timageBitmap.close();\n\t\t\t\tbitmap.close();\n\t\t\t}\n\t\t}, () => {\n\t\t\timageBitmap.close();\n\t\t\treturn true;\n\t\t}));\n\t}).catch(() => true);\n}\nfunction check_cib_resize_async() {\n\treturn Promise.resolve().then(() => {\n\t\tif (!check_create_image_bitmap()) return false;\n\t\tconst SRC_SIZE = 20;\n\t\tconst DST_SIZE = 5;\n\t\tlet canvas;\n\t\tif (features.canvas || check_canvas()) {\n\t\t\tcanvas = document.createElement(\"canvas\");\n\t\t\tcanvas.width = SRC_SIZE;\n\t\t\tcanvas.height = SRC_SIZE;\n\t\t} else if (features.offscreen_canvas || check_offscreen_canvas()) {\n\t\t\tcanvas = new OffscreenCanvas(SRC_SIZE, SRC_SIZE);\n\t\t\tcanvas.getContext(\"2d\").clearRect(0, 0, SRC_SIZE, SRC_SIZE);\n\t\t} else return false;\n\t\treturn createImageBitmap(canvas, 0, 0, SRC_SIZE, SRC_SIZE, {\n\t\t\tresizeWidth: DST_SIZE,\n\t\t\tresizeHeight: DST_SIZE,\n\t\t\tresizeQuality: \"high\"\n\t\t}).then((bitmap) => {\n\t\t\tconst status = bitmap.width === DST_SIZE && !!bitmap.close;\n\t\t\tif (bitmap.close) bitmap.close();\n\t\t\tcanvas = null;\n\t\t\treturn status;\n\t\t});\n\t}).catch(() => false);\n}\nfunction get_supported_features() {\n\tif (checked) return Promise.resolve(Object.assign({}, features));\n\tif (checking) return checking.then(() => Object.assign({}, features));\n\tfeatures.canvas = check_canvas();\n\tfeatures.offscreen_canvas = check_offscreen_canvas();\n\tfeatures.may_be_worker = check_may_be_worker();\n\tfeatures.create_image_bitmap = check_create_image_bitmap();\n\tfeatures.safari_put_image_data_fix = check_safari_put_image_data_fix();\n\tconst bugCanvasOrientationRegion = check_bug_canvas_orientation_region_async().then((result) => {\n\t\tfeatures.bug_canvas_orientation_region = result;\n\t}).catch(() => {});\n\tconst bugImageBitmapOrientationRegion = check_bug_image_bitmap_orientation_region_async().then((result) => {\n\t\tfeatures.bug_image_bitmap_orientation_region = result;\n\t}).catch(() => {});\n\tconst cibResize = check_cib_resize_async().then((result) => {\n\t\tfeatures.cib_resize = result;\n\t}).catch(() => {});\n\tchecking = Promise.all([\n\t\tbugCanvasOrientationRegion,\n\t\tbugImageBitmapOrientationRegion,\n\t\tcibResize\n\t]).then(() => {\n\t\tchecked = true;\n\t\tchecking = null;\n\t\treturn Object.assign({}, features);\n\t}, (err) => {\n\t\tchecking = null;\n\t\tthrow err;\n\t});\n\treturn checking;\n}\nfunction asyncGeneratorStep(n, t, e, r, o, a, c) {\n\ttry {\n\t\tvar i = n[a](c), u = i.value;\n\t} catch (n) {\n\t\te(n);\n\t\treturn;\n\t}\n\ti.done ? t(u) : Promise.resolve(u).then(r, o);\n}\nfunction _asyncToGenerator(n) {\n\treturn function() {\n\t\tvar t = this, e = arguments;\n\t\treturn new Promise(function(r, o) {\n\t\t\tvar a = n.apply(t, e);\n\t\t\tfunction _next(n) {\n\t\t\t\tasyncGeneratorStep(a, r, o, _next, _throw, \"next\", n);\n\t\t\t}\n\t\t\tfunction _throw(n) {\n\t\t\t\tasyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n);\n\t\t\t}\n\t\t\t_next(void 0);\n\t\t});\n\t};\n}\nvar WORKER_SRC = \"/*!\\n\\npica\\nhttps://github.com/nodeca/pica\\n\\n*/\\n!function(){var A;function t(A){const t=A.replace(/[\\\\r\\\\n=]/g,\\\"\\\"),e=t.length,n=new Uint8Array(3*e>>2);let a=0,i=0;for(let s=0;s<e;s++)s%4==0&&s&&(n[i++]=a>>16&255,n[i++]=a>>8&255,n[i++]=255&a),a=a<<6|\\\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\\\".indexOf(t.charAt(s));const r=e%4*6;return 0===r?(n[i++]=a>>16&255,n[i++]=a>>8&255,n[i++]=255&a):18===r?(n[i++]=a>>10&255,n[i++]=a>>2&255):12===r&&(n[i++]=a>>4&255),n}var e={js:!0,wasm:!0},n=class{constructor(A){const t=Object.assign({},e,A||{});if(this.options=t,this.__cache={},this.__init_promise=null,this.__modules=t.modules||{},this.__memory=null,this.__wasm={},this.__isLE=1===new Uint32Array(new Uint8Array([1,0,0,0]).buffer)[0],!this.options.js&&!this.options.wasm)throw new Error('mathlib: at least \\\"js\\\" or \\\"wasm\\\" should be enabled')}has_wasm(){return function(){if(void 0!==A)return A;if(A=!1,\\\"undefined\\\"==typeof WebAssembly)return A;try{const t=new Uint8Array([0,97,115,109,1,0,0,0,1,6,1,96,1,127,1,127,3,2,1,0,5,3,1,0,1,7,8,1,4,116,101,115,116,0,0,10,16,1,14,0,32,0,65,1,54,2,0,32,0,40,2,0,11]),e=new WebAssembly.Module(t);return 0!==new WebAssembly.Instance(e,{}).exports.test(4)&&(A=!0),A}catch(t){}return A}()}use(A){return this.__modules[A.name]=A,this.options.wasm&&this.has_wasm()&&A.wasm_fn?this[A.name]=A.wasm_fn:this[A.name]=A.fn,this}init(){return this.__init_promise?this.__init_promise:this.options.js||!this.options.wasm||this.has_wasm()?(this.__init_promise=Promise.all(Object.keys(this.__modules).map(A=>{const e=this.__modules[A];return this.options.wasm&&this.has_wasm()&&e.wasm_fn?this.__wasm[A]?null:WebAssembly.compile(t(e.wasm_src)).then(t=>{this.__wasm[A]=t}):null})).then(()=>this),this.__init_promise):Promise.reject(new Error('mathlib: only \\\"wasm\\\" was enabled, but it\\\\'s not supported'))}__reallocate(A){if(!this.__memory)return this.__memory=new WebAssembly.Memory({initial:Math.ceil(A/65536)}),this.__memory;const t=this.__memory.buffer.byteLength;return t<A&&this.__memory.grow(Math.ceil((A-t)/65536)),this.__memory}__instance(A,e,n){if(e&&this.__reallocate(e),!this.__wasm[A]){const e=this.__modules[A];this.__wasm[A]=new WebAssembly.Module(t(e.wasm_src))}if(!this.__cache[A]){const t={memoryBase:0,memory:this.__memory,tableBase:0,table:new WebAssembly.Table({initial:0,element:\\\"anyfunc\\\"})};this.__cache[A]=new WebAssembly.Instance(this.__wasm[A],{env:Object.assign(t,n||{})})}return this.__cache[A]}__align(A,t){const e=A%(t=t||8);return A+(e?t-e:0)}};function a(A,t,e,n,a,i){let r,s,o,g,I,h,B,Q,E,C,c,f,u,m;for(E=0;E<i;E++){for(h=E*a,B=E,Q=0,r=A[h],I=r*n[6],g=I,c=n[0],f=n[1],u=n[4],m=n[5],C=0;C<a;C++)s=A[h],o=s*c+r*f+g*u+I*m,I=g,g=o,r=s,e[Q]=g,Q++,h++;for(h--,Q--,B+=i*(a-1),r=A[h],I=r*n[7],g=I,s=r,c=n[2],f=n[3],C=a-1;C>=0;C--)o=s*c+r*f+g*u+I*m,I=g,g=o,r=s,s=A[h],t[B]=e[Q]+g,h--,Q--,B-=i}}function i(A,t,e,n){if(!n)return;const i=new Uint16Array(A.length),r=new Float32Array(Math.max(t,e)),s=function(A){A<.5&&(A=.5);const t=Math.exp(.527076)/A,e=Math.exp(-t),n=Math.exp(-2*t),a=(1-e)*(1-e)/(1+2*t*e-n),i=a*(t-1)*e,r=a*(t+1)*e,s=-a*n,o=2*e,g=-n;return new Float32Array([a,i,r,s,o,g,(a+i)/(1-o-g),(r+s)/(1-o-g)])}(n);a(A,i,r,s,t,e),a(i,A,r,s,e,t)}var r={name:\\\"unsharp_mask\\\",fn:function(A,t,e,n,a,r){let s,o,g,I,h;if(0===n||a<.5)return;a>2&&(a=2);const B=function(A,t,e){const n=t*e,a=new Uint16Array(n);let i,r,s,o;for(let g=0;g<n;g++)i=A[4*g],r=A[4*g+1],s=A[4*g+2],o=i>=r&&i>=s?i:r>=s&&r>=i?r:s,a[g]=o<<8;return a}(A,t,e),Q=new Uint16Array(B);i(Q,t,e,a);const E=n/100*4096+.5|0,C=r<<8,c=t*e;for(let i=0;i<c;i++)s=B[i],I=s-Q[i],Math.abs(I)>=C&&(o=s+(E*I+2048>>12),o=o>65280?65280:o,o=o<0?0:o,s=0!==s?s:1,g=(o<<12)/s|0,h=4*i,A[h]=A[h]*g+2048>>12,A[h+1]=A[h+1]*g+2048>>12,A[h+2]=A[h+2]*g+2048>>12)},wasm_fn:function(A,t,e,n,a,i){if(0===n||a<.5)return;a>2&&(a=2);const r=t*e,s=4*r,o=2*r,g=2*r,I=4*Math.max(t,e),h=s,B=h+o,Q=B+g,E=Q+g,C=E+I,c=this.__instance(\\\"unsharp_mask\\\",s+o+2*g+I+32,{exp:Math.exp}),f=new Uint32Array(A.buffer);new Uint32Array(this.__memory.buffer).set(f);let u=c.exports.hsv_v16||c.exports._hsv_v16;if(!u)throw new Error(\\\"WASM hsv_v16 function is not available\\\");if(u(0,h,t,e),u=c.exports.blurMono16||c.exports._blurMono16,!u)throw new Error(\\\"WASM blurMono16 function is not available\\\");if(u(h,B,Q,E,C,t,e,a),u=c.exports.unsharp||c.exports._unsharp,!u)throw new Error(\\\"WASM unsharp function is not available\\\");u(0,0,h,B,t,e,n,i),f.set(new Uint32Array(this.__memory.buffer,0,r))},wasm_src:\\\"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\\\"},s={filter:{box:{win:.5,fn:A=>(A<0&&(A=-A),A<.5?1:0)},hamming:{win:1,fn(A){if(A<0&&(A=-A),A>=1)return 0;if(A<1.1920929e-7)return 1;const t=A*Math.PI;return Math.sin(t)/t*(.54+.46*Math.cos(t/1))}},lanczos2:{win:2,fn(A){if(A<0&&(A=-A),A>=2)return 0;if(A<1.1920929e-7)return 1;const t=A*Math.PI;return Math.sin(t)/t*Math.sin(t/2)/(t/2)}},lanczos3:{win:3,fn(A){if(A<0&&(A=-A),A>=3)return 0;if(A<1.1920929e-7)return 1;const t=A*Math.PI;return Math.sin(t)/t*Math.sin(t/3)/(t/3)}},mks2013:{win:2.5,fn:A=>(A<0&&(A=-A),A>=2.5?0:A>=1.5?-.125*(A-2.5)*(A-2.5):A>=.5?.25*(4*A*A-11*A+7):1.0625-1.75*A*A)}}};function o(A){return Math.round(16383*A)}function g(A,t,e,n,a){const i=s.filter[A].fn,r=1/n,g=Math.min(1,n),I=s.filter[A].win/g;let h,B,Q,E,C,c,f,u,m,d,w,l,y,_,b,D,M;const p=Math.floor(2*(I+1)),G=new Int16Array((p+2)*e);let U=0;const k=!G.subarray||!G.set;for(h=0;h<e;h++){for(B=(h+.5)*r+a,Q=Math.max(0,Math.floor(B-I)),E=Math.min(t-1,Math.ceil(B+I)),C=E-Q+1,c=new Float32Array(C),f=new Int16Array(C),u=0,m=Q,d=0;m<=E;m++,d++)w=i((m+.5-B)*g),u+=w,c[d]=w;for(l=0,d=0;d<c.length;d++)y=c[d]/u,l+=y,f[d]=o(y);for(f[e>>1]+=o(1-l),_=0;_<f.length&&0===f[_];)_++;if(_<f.length){for(b=f.length-1;b>0&&0===f[b];)b--;if(D=Q+_,M=b-_+1,G[U++]=D,G[U++]=M,k)for(d=_;d<=b;d++)G[U++]=f[d];else G.set(f.subarray(_,b+1),U),U+=M}else G[U++]=0,G[U++]=0}return G}function I(A){return A<0?0:A>255?255:A}function h(A){return A>=0?A:0}var B=!0;try{B=1===new Uint32Array(new Uint8Array([1,0,0,0]).buffer)[0]}catch(p){}function Q(A,t,e){if(B)t.set(function(A){return new Uint8Array(A.buffer,0,A.byteLength)}(A),e);else for(let n=e,a=0;a<A.length;a++){const e=A[a];t[n++]=255&e,t[n++]=e>>8&255}}var E={name:\\\"resize\\\",fn:function(A){const t=A.src,e=A.width,n=A.height,a=A.toWidth,i=A.toHeight,r=A.scaleX||A.toWidth/A.width,s=A.scaleY||A.toHeight/A.height,o=A.offsetX||0,B=A.offsetY||0,Q=A.dest||new Uint8Array(a*i*4),E=void 0===A.filter?\\\"mks2013\\\":A.filter,C=g(E,e,a,r,o),c=g(E,n,i,s,B),f=new Uint16Array(a*n*4);return!function(A,t,e){let n=3;const a=t*e*4|0;for(;n<a;){if(255!==A[n])return!0;n=n+4|0}return!1}(t,e,n)?(function(A,t,e,n,a,i){let r,s,o,g,I,B,Q,E,C,c,f,u=0,m=0;for(C=0;C<n;C++){for(I=0,c=0;c<a;c++){for(B=i[I++],Q=i[I++],E=u+4*B|0,r=s=o=g=0;Q>0;Q--)f=i[I++],g=g+f*A[E+3]|0,o=o+f*A[E+2]|0,s=s+f*A[E+1]|0,r=r+f*A[E]|0,E=E+4|0;t[m+3]=h(g>>7),t[m+2]=h(o>>7),t[m+1]=h(s>>7),t[m]=h(r>>7),m=m+4*n|0}m=4*(C+1)|0,u=(C+1)*e*4|0}}(t,f,e,n,a,C),function(A,t,e,n,a,i){let r,s,o,g,h,B,Q,E,C,c,f,u=0,m=0;for(C=0;C<n;C++){for(h=0,c=0;c<a;c++){for(B=i[h++],Q=i[h++],E=u+4*B|0,r=s=o=g=0;Q>0;Q--)f=i[h++],g=g+f*A[E+3]|0,o=o+f*A[E+2]|0,s=s+f*A[E+1]|0,r=r+f*A[E]|0,E=E+4|0;r>>=7,s>>=7,o>>=7,g>>=7,t[m+3]=I(g+8192>>14),t[m+2]=I(o+8192>>14),t[m+1]=I(s+8192>>14),t[m]=I(r+8192>>14),m=m+4*n|0}m=4*(C+1)|0,u=(C+1)*e*4|0}}(f,Q,n,a,i,c),function(A,t,e){let n=3;const a=t*e*4|0;for(;n<a;)A[n]=255,n=n+4|0}(Q,a,i)):(function(A,t,e,n,a,i){let r,s,o,g,I,B,Q,E,C,c,f,u,m=0,d=0;for(c=0;c<n;c++){for(B=0,f=0;f<a;f++){for(Q=i[B++],E=i[B++],C=m+4*Q|0,r=s=o=g=0;E>0;E--)u=i[B++],I=A[C+3],g=g+u*I|0,o=o+u*A[C+2]*I|0,s=s+u*A[C+1]*I|0,r=r+u*A[C]*I|0,C=C+4|0;o=o/255|0,s=s/255|0,r=r/255|0,t[d+3]=h(g>>7),t[d+2]=h(o>>7),t[d+1]=h(s>>7),t[d]=h(r>>7),d=d+4*n|0}d=4*(c+1)|0,m=(c+1)*e*4|0}}(t,f,e,n,a,C),function(A,t,e,n,a,i){let r,s,o,g,h,B,Q,E,C,c,f,u=0,m=0;for(C=0;C<n;C++){for(h=0,c=0;c<a;c++){for(B=i[h++],Q=i[h++],E=u+4*B|0,r=s=o=g=0;Q>0;Q--)f=i[h++],g=g+f*A[E+3]|0,o=o+f*A[E+2]|0,s=s+f*A[E+1]|0,r=r+f*A[E]|0,E=E+4|0;r>>=7,s>>=7,o>>=7,g>>=7,g=I(g+8192>>14),g>0&&(r=255*r/g|0,s=255*s/g|0,o=255*o/g|0),t[m+3]=g,t[m+2]=I(o+8192>>14),t[m+1]=I(s+8192>>14),t[m]=I(r+8192>>14),m=m+4*n|0}m=4*(C+1)|0,u=(C+1)*e*4|0}}(f,Q,n,a,i,c)),Q},wasm_fn:function(A){const t=A.src,e=A.width,n=A.height,a=A.toWidth,i=A.toHeight,r=A.scaleX||A.toWidth/A.width,s=A.scaleY||A.toHeight/A.height,o=A.offsetX||0,I=A.offsetY||0,h=A.dest||new Uint8Array(a*i*4),B=void 0===A.filter?\\\"mks2013\\\":A.filter,E=g(B,e,a,r,o),C=g(B,n,i,s,I),c=Math.max(t.byteLength,h.byteLength),f=this.__align(0+c),u=n*a*4*2,m=this.__align(f+u),d=this.__align(m+E.byteLength),w=d+C.byteLength,l=this.__instance(\\\"resize\\\",w),y=new Uint8Array(this.__memory.buffer),_=new Uint32Array(this.__memory.buffer),b=new Uint32Array(t.buffer);_.set(b),Q(E,y,m),Q(C,y,d);const D=l.exports.convolveHV||l.exports._convolveHV;if(!D)throw new Error(\\\"WASM resize function is not available\\\");return!function(A,t,e){let n=3;const a=t*e*4|0;for(;n<a;){if(255!==A[n])return!0;n=n+4|0}return!1}(t,e,n)?(D(m,d,f,e,n,a,i,0),function(A,t,e){let n=3;const a=t*e*4|0;for(;n<a;)A[n]=255,n=n+4|0}(h,a,i)):D(m,d,f,e,n,a,i,1),new Uint32Array(h.buffer).set(new Uint32Array(this.__memory.buffer,0,i*a)),h},wasm_src:\\\"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\\\"},C=class extends n{constructor(A){const t=A||[],e={js:t.indexOf(\\\"js\\\")>=0,wasm:t.indexOf(\\\"wasm\\\")>=0};super(e),this.features={js:e.js,wasm:e.wasm&&this.has_wasm()},this.use(r),this.use(E)}resizeAndUnsharp(A){const t=this.resize(A);return A.unsharpAmount&&this.unsharp_mask(t,A.toWidth,A.toHeight,A.unsharpAmount,A.unsharpRadius,A.unsharpThreshold),t}},c=\\\"/9j/4QAiRXhpZgAATU0AKgAAAAgAAQESAAMAAAABAAYAAAAAAAD/4AAQskZJRgABAQAAAQABAAD/2wBDAAMCAgICAgMCAgIDAwMDBAYEBAQEBAgGBgUGCQgKCgkICQkKDA8MCgsOCwkJDRENDg8QEBEQCgwSExIQEw8QEBD/wAALCAACAAMBAREA/8QAFAABAAAAAAAAAAAAAAAAAAAACf/EABsQAAMBAQADAAAAAAAAAAAAAAECAwQFABEx/9oACAEBAAA/AC06fW6va0ps7PT179E88MiV02arrCEkjGQZiSEnKc5ovxURVHoADz//2Q==\\\",f={canvas:!1,offscreen_canvas:!1,may_be_worker:!1,create_image_bitmap:!1,safari_put_image_data_fix:!1,bug_canvas_orientation_region:!0,bug_image_bitmap_orientation_region:!0,cib_resize:!1},u=!1,m=null;function d(){if(\\\"undefined\\\"==typeof document||!document.createElement)return!1;try{const A=document.createElement(\\\"canvas\\\");A.width=2,A.height=1;const t=A.getContext(\\\"2d\\\");let e=t.createImageData(2,1);return e.data[0]=12,e.data[1]=23,e.data[2]=34,e.data[3]=255,e.data[4]=45,e.data[5]=56,e.data[6]=67,e.data[7]=255,t.putImageData(e,0,0),e=t.getImageData(0,0,2,1),12===e.data[0]&&23===e.data[1]&&34===e.data[2]&&255===e.data[3]&&45===e.data[4]&&56===e.data[5]&&67===e.data[6]&&255===e.data[7]}catch(p){return!1}}function w(){if(\\\"undefined\\\"==typeof OffscreenCanvas)return!1;try{const A=new OffscreenCanvas(2,1).getContext(\\\"2d\\\");let t=A.createImageData(2,1);return t.data[0]=12,t.data[1]=23,t.data[2]=34,t.data[3]=255,t.data[4]=45,t.data[5]=56,t.data[6]=67,t.data[7]=255,A.putImageData(t,0,0),t=A.getImageData(0,0,2,1),12===t.data[0]&&23===t.data[1]&&34===t.data[2]&&255===t.data[3]&&45===t.data[4]&&56===t.data[5]&&67===t.data[6]&&255===t.data[7]}catch(p){return!1}}function l(){return\\\"undefined\\\"!=typeof createImageBitmap}function y(){if(u)return Promise.resolve(Object.assign({},f));if(m)return m.then(()=>Object.assign({},f));f.canvas=d(),f.offscreen_canvas=w(),f.may_be_worker=\\\"undefined\\\"!=typeof Worker&&\\\"undefined\\\"!=typeof URL&&!!URL.createObjectURL,f.create_image_bitmap=l(),f.safari_put_image_data_fix=function(){try{return!!(\\\"undefined\\\"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.indexOf(\\\"Safari\\\")>=0&&navigator.userAgent.indexOf(\\\"Chrome\\\")<0)}catch(p){return!1}}();const A=Promise.resolve().then(()=>{if(w()&&l()&&\\\"undefined\\\"!=typeof Blob&&\\\"undefined\\\"!=typeof atob){const A=atob(c),t=new Uint8Array(A.length);for(let e=0;e<A.length;e++)t[e]=A.charCodeAt(e);return createImageBitmap(new Blob([t],{type:\\\"image/jpeg\\\"})).then(A=>{const t=new OffscreenCanvas(1,1);try{const e=t.getContext(\\\"2d\\\");return e.drawImage(A,1,1,1,1,0,0,1,1),e.getImageData(0,0,1,1).data[0]<240}finally{A.close()}})}return!d()||\\\"undefined\\\"==typeof Image||new Promise(A=>{const t=new Image;t.onload=()=>{try{const e=document.createElement(\\\"canvas\\\");e.width=1,e.height=1;const n=e.getContext(\\\"2d\\\");n.drawImage(t,1,1,1,1,0,0,1,1),A(n.getImageData(0,0,1,1).data[0]<240)}catch(p){A(!0)}},t.onerror=()=>A(!0),t.src=`data:image/jpeg;base64,${c}`})}).catch(()=>!0).then(A=>{f.bug_canvas_orientation_region=A}).catch(()=>{}),t=Promise.resolve().then(()=>{if(!f.create_image_bitmap&&!l())return!0;if(\\\"undefined\\\"==typeof Blob||\\\"undefined\\\"==typeof atob)return!0;const A=w(),t=d();if(!A&&!t)return!0;const e=atob(c),n=new Uint8Array(e.length);for(let a=0;a<e.length;a++)n[a]=e.charCodeAt(a);return createImageBitmap(new Blob([n],{type:\\\"image/jpeg\\\"})).then(t=>createImageBitmap(t,1,1,1,1).then(e=>{let n;A?n=new OffscreenCanvas(1,1):(n=document.createElement(\\\"canvas\\\"),n.width=1,n.height=1);try{const A=n.getContext(\\\"2d\\\");return A.drawImage(e,0,0),1!==e.width||1!==e.height||A.getImageData(0,0,1,1).data[0]<240}finally{t.close(),e.close()}},()=>(t.close(),!0)))}).catch(()=>!0).then(A=>{f.bug_image_bitmap_orientation_region=A}).catch(()=>{}),e=Promise.resolve().then(()=>{if(!l())return!1;const A=20;let t;if(f.canvas||d())t=document.createElement(\\\"canvas\\\"),t.width=A,t.height=A;else{if(!f.offscreen_canvas&&!w())return!1;t=new OffscreenCanvas(A,A),t.getContext(\\\"2d\\\").clearRect(0,0,A,A)}return createImageBitmap(t,0,0,A,A,{resizeWidth:5,resizeHeight:5,resizeQuality:\\\"high\\\"}).then(A=>{const e=5===A.width&&!!A.close;return A.close&&A.close(),t=null,e})}).catch(()=>!1).then(A=>{f.cib_resize=A}).catch(()=>{});return m=Promise.all([A,t,e]).then(()=>(u=!0,m=null,Object.assign({},f)),A=>{throw m=null,A})}var _=self,b=null;function D(A,t){return b||(b=new C(A.features)),b.resizeAndUnsharp(t)}function M(A){if(\\\"bitmap\\\"===A.job.kind)return void function(A,t){let e=new OffscreenCanvas(t.width,t.height);const n=e.getContext(\\\"2d\\\");n.drawImage(t.src,0,0);const a=n.getImageData(0,0,t.width,t.height).data;e.width=e.height=0,e=null,t.src.close();const i=D(A,{src:a,width:t.width,height:t.height,toWidth:t.toWidth,toHeight:t.toHeight,scaleX:t.scaleX,scaleY:t.scaleY,offsetX:t.offsetX,offsetY:t.offsetY,filter:t.filter,unsharpAmount:t.unsharpAmount,unsharpRadius:t.unsharpRadius,unsharpThreshold:t.unsharpThreshold}),r=new OffscreenCanvas(t.toWidth,t.toHeight),s=r.getContext(\\\"2d\\\"),o=s.createImageData(t.toWidth,t.toHeight);o.data.set(i),s.putImageData(o,0,0);const g=r.transferToImageBitmap();_.postMessage({kind:\\\"bitmap\\\",data:g},[g])}(A,A.job);const t=D(A,A.job);_.postMessage({kind:\\\"array\\\",data:t},[t.buffer])}_.onmessage=function(A){Promise.resolve().then(()=>function(A){switch(A.method){case\\\"get_supported_features\\\":return y().then(A=>{_.postMessage({data:A})});case\\\"resize\\\":return M(A),Promise.resolve();default:return Promise.reject(new Error(`Unknown worker method: ${A.method}`))}}(A.data)).catch(A=>{_.postMessage({err:A})})}}();\\n//# sourceURL=pica-inline-worker.js\";\nvar concurrency = 1;\nif (typeof navigator !== \"undefined\") concurrency = Math.min(navigator.hardwareConcurrency || 1, 4);\nvar DEFAULT_PICA_OPTS = {\n\ttile: 1024,\n\tconcurrency,\n\tfeatures: [\n\t\t\"js\",\n\t\t\"wasm\",\n\t\t\"ww\"\n\t],\n\tidle: 2e3\n};\nvar DEFAULT_RESIZE_OPTS = {\n\tfilter: \"mks2013\",\n\tunsharpAmount: 0,\n\tunsharpRadius: 0,\n\tunsharpThreshold: 0\n};\nvar Pica = class {\n\tconstructor(options) {\n\t\t_defineProperty(this, \"options\", void 0);\n\t\t_defineProperty(this, \"__limit\", void 0);\n\t\t_defineProperty(this, \"resize_features\", void 0);\n\t\t_defineProperty(this, \"__workersPool\", void 0);\n\t\t_defineProperty(this, \"capabilities\", void 0);\n\t\t_defineProperty(this, \"__requested_features\", void 0);\n\t\t_defineProperty(this, \"__mathlib\", void 0);\n\t\t_defineProperty(this, \"__initPromise\", void 0);\n\t\tthis.options = Object.assign({}, DEFAULT_PICA_OPTS, options || {});\n\t\tif ((this.options.features.indexOf(\"ww\") >= 0 || this.options.features.indexOf(\"all\") >= 0) && !this.options.workerURL && false);\n\t\tthis.__limit = limiter(this.options.concurrency);\n\t\tthis.resize_features = {\n\t\t\tjs: false,\n\t\t\twasm: false,\n\t\t\tcib: false,\n\t\t\tww: false\n\t\t};\n\t\tthis.__workersPool = null;\n\t\tthis.capabilities = {\n\t\t\tworker: false,\n\t\t\tww_offscreen_canvas: false,\n\t\t\tcanvas: false,\n\t\t\toffscreen_canvas: false,\n\t\t\tmay_be_worker: false,\n\t\t\tcreate_image_bitmap: false,\n\t\t\tsafari_put_image_data_fix: false,\n\t\t\tbug_canvas_orientation_region: true,\n\t\t\tbug_image_bitmap_orientation_region: true,\n\t\t\tcib_resize: false\n\t\t};\n\t\tthis.__requested_features = [];\n\t\tthis.__mathlib = null;\n\t}\n\tinit() {\n\t\tif (this.__initPromise) return this.__initPromise;\n\t\tthis.__initPromise = this.__init();\n\t\treturn this.__initPromise;\n\t}\n\t__init() {\n\t\tvar _this = this;\n\t\treturn _asyncToGenerator(function* () {\n\t\t\tlet features = _this.options.features.slice();\n\t\t\tif (features.indexOf(\"all\") >= 0) features = [\n\t\t\t\t\"cib\",\n\t\t\t\t\"wasm\",\n\t\t\t\t\"js\",\n\t\t\t\t\"ww\"\n\t\t\t];\n\t\t\t_this.__requested_features = features;\n\t\t\t_this.__mathlib = new MathLib(features);\n\t\t\tconst result = yield get_supported_features();\n\t\t\tObject.assign(_this.capabilities, result);\n\t\t\tif (_this.capabilities.cib_resize && features.indexOf(\"cib\") >= 0) _this.resize_features.cib = true;\n\t\t\tif (_this.capabilities.may_be_worker && features.indexOf(\"ww\") >= 0 && WORKER_SRC) _this.__workersPool = new Pool(() => _this.__createWorkerSlot(), _this.options.idle);\n\t\t\tif (_this.__workersPool) try {\n\t\t\t\tconst result = yield _this.__invokeWorker(\"get_supported_features\");\n\t\t\t\tconst resultData = result && result.data;\n\t\t\t\tif (resultData) {\n\t\t\t\t\t_this.capabilities.worker = true;\n\t\t\t\t\t_this.resize_features.ww = true;\n\t\t\t\t\t_this.capabilities.ww_offscreen_canvas = !!resultData.offscreen_canvas;\n\t\t\t\t}\n\t\t\t} catch (__) {}\n\t\t\tconst mathlib = yield _this.__mathlib.init();\n\t\t\tObject.assign(_this.resize_features, mathlib.features);\n\t\t\treturn _this;\n\t\t})();\n\t}\n\tcreateCanvas(width, height, preferOffscreen) {\n\t\tif (preferOffscreen && this.capabilities.offscreen_canvas) return new OffscreenCanvas(width, height);\n\t\tif (this.capabilities.canvas) {\n\t\t\tconst canvas = document.createElement(\"canvas\");\n\t\t\tcanvas.width = width;\n\t\t\tcanvas.height = height;\n\t\t\treturn canvas;\n\t\t}\n\t\tif (this.capabilities.ww_offscreen_canvas) return new OffscreenCanvas(width, height);\n\t\tthrow new Error(\"Pica: cannot create canvas\");\n\t}\n\t__createWorkerSlot() {\n\t\tif (this.options.workerURL) {\n\t\t\tconst worker = new Worker(String(this.options.workerURL));\n\t\t\treturn {\n\t\t\t\tvalue: worker,\n\t\t\t\tdestroy() {\n\t\t\t\t\tworker.terminate();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\t{\n\t\t\tconst objectURL = window.URL.createObjectURL(new Blob([WORKER_SRC], { type: \"text/javascript\" }));\n\t\t\tconst worker = new Worker(objectURL);\n\t\t\treturn {\n\t\t\t\tvalue: worker,\n\t\t\t\tdestroy() {\n\t\t\t\t\tworker.terminate();\n\t\t\t\t\tif (typeof window !== \"undefined\") {\n\t\t\t\t\t\tvar _window$URL, _window$URL$revokeObj;\n\t\t\t\t\t\t(_window$URL = window.URL) === null || _window$URL === void 0 || (_window$URL$revokeObj = _window$URL.revokeObjectURL) === null || _window$URL$revokeObj === void 0 || _window$URL$revokeObj.call(_window$URL, objectURL);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\tthrow new Error(\"Pica: no worker source available\");\n\t}\n\t__invokeWorker(method, payload, transfer, opts) {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tconst w = this.__workersPool.acquire();\n\t\t\tif (opts && opts.cancelToken) opts.cancelToken.catch((err) => reject(err));\n\t\t\tw.value.onmessage = (ev) => {\n\t\t\t\tw.release();\n\t\t\t\tif (ev.data.err) reject(ev.data.err);\n\t\t\t\telse resolve(ev.data);\n\t\t\t};\n\t\t\tw.value.postMessage(Object.assign({ method }, payload || {}), transfer || []);\n\t\t});\n\t}\n\t__invokeResize(tileJob, ctx) {\n\t\tvar _this2 = this;\n\t\treturn _asyncToGenerator(function* () {\n\t\t\tyield Promise.resolve();\n\t\t\tif (!_this2.resize_features.ww) {\n\t\t\t\tif (tileJob.kind !== \"array\") throw new Error(\"Pica: resize tile data is missing\");\n\t\t\t\tconst mathOpts = {\n\t\t\t\t\tsrc: tileJob.src,\n\t\t\t\t\twidth: tileJob.width,\n\t\t\t\t\theight: tileJob.height,\n\t\t\t\t\ttoWidth: tileJob.toWidth,\n\t\t\t\t\ttoHeight: tileJob.toHeight,\n\t\t\t\t\tscaleX: tileJob.scaleX,\n\t\t\t\t\tscaleY: tileJob.scaleY,\n\t\t\t\t\toffsetX: tileJob.offsetX,\n\t\t\t\t\toffsetY: tileJob.offsetY,\n\t\t\t\t\tfilter: tileJob.filter,\n\t\t\t\t\tunsharpAmount: tileJob.unsharpAmount,\n\t\t\t\t\tunsharpRadius: tileJob.unsharpRadius,\n\t\t\t\t\tunsharpThreshold: tileJob.unsharpThreshold\n\t\t\t\t};\n\t\t\t\treturn {\n\t\t\t\t\tkind: \"array\",\n\t\t\t\t\tdata: _this2.__mathlib.resizeAndUnsharp(mathOpts)\n\t\t\t\t};\n\t\t\t}\n\t\t\tconst transfer = [];\n\t\t\tif (tileJob.kind === \"array\") transfer.push(tileJob.src.buffer);\n\t\t\telse transfer.push(tileJob.src);\n\t\t\treturn _this2.__invokeWorker(\"resize\", {\n\t\t\t\tjob: tileJob,\n\t\t\t\tfeatures: _this2.__requested_features\n\t\t\t}, transfer, ctx);\n\t\t})();\n\t}\n\t__extractTileData(tile, from, stageEnv, extractTo) {\n\t\tif (this.resize_features.ww && this.capabilities.ww_offscreen_canvas) {\n\t\t\tthis.debug(\"Create tile imageBitmap\");\n\t\t\tconst tileCanvas = this.createCanvas(tile.width, tile.height, { preferOffscreen: true });\n\t\t\ttileCanvas.getContext(\"2d\").drawImage(stageEnv.srcImageBitmap || from, tile.x, tile.y, tile.width, tile.height, 0, 0, tile.width, tile.height);\n\t\t\tif (!(\"transferToImageBitmap\" in tileCanvas)) throw new Error(\"Pica: offscreen canvas is not available for worker transfer\");\n\t\t\treturn Object.assign({}, extractTo, {\n\t\t\t\tkind: \"bitmap\",\n\t\t\t\tsrc: tileCanvas.transferToImageBitmap()\n\t\t\t});\n\t\t}\n\t\tif (isCanvas(from)) {\n\t\t\tif (!stageEnv.srcCtx) stageEnv.srcCtx = from.getContext(\"2d\");\n\t\t\tthis.debug(\"Get tile pixel data\");\n\t\t\treturn Object.assign({}, extractTo, {\n\t\t\t\tkind: \"array\",\n\t\t\t\tsrc: stageEnv.srcCtx.getImageData(tile.x, tile.y, tile.width, tile.height).data\n\t\t\t});\n\t\t}\n\t\tthis.debug(\"Draw tile imageBitmap/image to temporary canvas\");\n\t\tconst tmpCanvas = this.createCanvas(tile.width, tile.height, { preferOffscreen: true });\n\t\tconst tmpCtx = tmpCanvas.getContext(\"2d\");\n\t\ttmpCtx.globalCompositeOperation = \"copy\";\n\t\ttmpCtx.drawImage(stageEnv.srcImageBitmap || from, tile.x, tile.y, tile.width, tile.height, 0, 0, tile.width, tile.height);\n\t\tthis.debug(\"Get tile pixel data\");\n\t\tconst src = tmpCtx.getImageData(0, 0, tile.width, tile.height).data;\n\t\ttmpCanvas.width = tmpCanvas.height = 0;\n\t\treturn Object.assign({}, extractTo, {\n\t\t\tkind: \"array\",\n\t\t\tsrc\n\t\t});\n\t}\n\t__landTileData(tile, result, stageEnv) {\n\t\tif (result.kind === \"bitmap\") {\n\t\t\tstageEnv.toCtx.drawImage(result.data, tile.toX, tile.toY);\n\t\t\tresult.data.close();\n\t\t\treturn null;\n\t\t}\n\t\tthis.debug(\"Draw tile\");\n\t\tconst toImageData = stageEnv.toCtx.createImageData(tile.toWidth, tile.toHeight);\n\t\ttoImageData.data.set(result.data);\n\t\tif (this.capabilities.safari_put_image_data_fix) stageEnv.toCtx.putImageData(toImageData, tile.toX, tile.toY, tile.toInnerX - tile.toX, tile.toInnerY - tile.toY, tile.toInnerWidth + 1e-5, tile.toInnerHeight + 1e-5);\n\t\telse stageEnv.toCtx.putImageData(toImageData, tile.toX, tile.toY, tile.toInnerX - tile.toX, tile.toInnerY - tile.toY, tile.toInnerWidth, tile.toInnerHeight);\n\t\treturn null;\n\t}\n\t__tileAndResize(from, to, resizeParams, ctx) {\n\t\tvar _this3 = this;\n\t\treturn _asyncToGenerator(function* () {\n\t\t\tconst stageEnv = {\n\t\t\t\tsrcCtx: null,\n\t\t\t\tsrcImageBitmap: null,\n\t\t\t\tisImageBitmapReused: false,\n\t\t\t\ttoCtx: null\n\t\t\t};\n\t\t\tconst processTile = (tile) => _this3.__limit(_asyncToGenerator(function* () {\n\t\t\t\tif (ctx.canceled) return ctx.cancelToken;\n\t\t\t\tconst tileJob = {\n\t\t\t\t\twidth: tile.width,\n\t\t\t\t\theight: tile.height,\n\t\t\t\t\ttoWidth: tile.toWidth,\n\t\t\t\t\ttoHeight: tile.toHeight,\n\t\t\t\t\tscaleX: tile.scaleX,\n\t\t\t\t\tscaleY: tile.scaleY,\n\t\t\t\t\toffsetX: tile.offsetX,\n\t\t\t\t\toffsetY: tile.offsetY,\n\t\t\t\t\tfilter: resizeParams.filter,\n\t\t\t\t\tunsharpAmount: resizeParams.unsharpAmount,\n\t\t\t\t\tunsharpRadius: resizeParams.unsharpRadius,\n\t\t\t\t\tunsharpThreshold: resizeParams.unsharpThreshold\n\t\t\t\t};\n\t\t\t\t_this3.debug(\"Invoke resize math\");\n\t\t\t\tconst extractedTileJob = yield _this3.__extractTileData(tile, from, stageEnv, tileJob);\n\t\t\t\t_this3.debug(\"Invoke resize math\");\n\t\t\t\tconst result = yield _this3.__invokeResize(extractedTileJob, ctx);\n\t\t\t\tif (ctx.canceled) return ctx.cancelToken;\n\t\t\t\treturn _this3.__landTileData(tile, result, stageEnv);\n\t\t\t}));\n\t\t\tyield Promise.resolve();\n\t\t\tstageEnv.toCtx = to.getContext(\"2d\");\n\t\t\tif (isCanvas(from)) {} else if (isImageBitmap(from)) {\n\t\t\t\tstageEnv.srcImageBitmap = from;\n\t\t\t\tstageEnv.isImageBitmapReused = true;\n\t\t\t} else if (isImage(from)) {\n\t\t\t\tif (_this3.capabilities.create_image_bitmap) {\n\t\t\t\t\t_this3.debug(\"Decode image via createImageBitmap\");\n\t\t\t\t\ttry {\n\t\t\t\t\t\tstageEnv.srcImageBitmap = yield createImageBitmap(from);\n\t\t\t\t\t} catch (__) {}\n\t\t\t\t}\n\t\t\t} else throw new Error(\"Pica: \\\".from\\\" should be Image, Canvas or ImageBitmap\");\n\t\t\tif (ctx.canceled) return ctx.cancelToken;\n\t\t\t_this3.debug(\"Calculate tiles\");\n\t\t\tconst jobs = createRegions({\n\t\t\t\twidth: resizeParams.width,\n\t\t\t\theight: resizeParams.height,\n\t\t\t\tsrcTileSize: _this3.options.tile,\n\t\t\t\ttoWidth: resizeParams.toWidth,\n\t\t\t\ttoHeight: resizeParams.toHeight,\n\t\t\t\tdestTileBorder: Math.ceil(Math.max(3, 2.5 * resizeParams.unsharpRadius | 0))\n\t\t\t}).map((tile) => processTile(tile));\n\t\t\tfunction cleanup(stageEnv) {\n\t\t\t\tif (stageEnv.srcImageBitmap) {\n\t\t\t\t\tif (!stageEnv.isImageBitmapReused) stageEnv.srcImageBitmap.close();\n\t\t\t\t\tstageEnv.srcImageBitmap = null;\n\t\t\t\t}\n\t\t\t}\n\t\t\t_this3.debug(\"Process tiles\");\n\t\t\ttry {\n\t\t\t\tyield Promise.all(jobs);\n\t\t\t\t_this3.debug(\"Finished!\");\n\t\t\t\tcleanup(stageEnv);\n\t\t\t\treturn to;\n\t\t\t} catch (err) {\n\t\t\t\tcleanup(stageEnv);\n\t\t\t\tthrow err;\n\t\t\t}\n\t\t})();\n\t}\n\t__planStagesAndResize(from, to, resizeParams, ctx) {\n\t\tvar _this4 = this;\n\t\treturn _asyncToGenerator(function* () {\n\t\t\tlet src = from;\n\t\t\tlet srcWidth = resizeParams.width;\n\t\t\tlet srcHeight = resizeParams.height;\n\t\t\tconst stages = createStages(resizeParams.width, resizeParams.height, resizeParams.toWidth, resizeParams.toHeight, _this4.options.tile);\n\t\t\twhile (stages.length > 0) {\n\t\t\t\tif (ctx.canceled) return ctx.cancelToken;\n\t\t\t\tconst [toWidth, toHeight] = stages.shift();\n\t\t\t\tconst isLastStage = stages.length === 0;\n\t\t\t\tlet filter;\n\t\t\t\tif (isLastStage || !is_cib_filter(resizeParams.filter)) filter = resizeParams.filter;\n\t\t\t\telse if (resizeParams.filter === \"box\") filter = \"box\";\n\t\t\t\telse filter = \"hamming\";\n\t\t\t\tconst stageParams = _objectSpread2(_objectSpread2({}, resizeParams), {}, {\n\t\t\t\t\tfilter,\n\t\t\t\t\twidth: srcWidth,\n\t\t\t\t\theight: srcHeight,\n\t\t\t\t\ttoWidth,\n\t\t\t\t\ttoHeight\n\t\t\t\t});\n\t\t\t\tconst dest = isLastStage ? to : _this4.createCanvas(toWidth, toHeight, { preferOffscreen: true });\n\t\t\t\tconst prevTmp = src !== from ? src : void 0;\n\t\t\t\ttry {\n\t\t\t\t\tyield _this4.__tileAndResize(src, dest, stageParams, ctx);\n\t\t\t\t} finally {\n\t\t\t\t\tif (prevTmp) prevTmp.width = prevTmp.height = 0;\n\t\t\t\t}\n\t\t\t\tsrc = dest;\n\t\t\t\tsrcWidth = toWidth;\n\t\t\t\tsrcHeight = toHeight;\n\t\t\t}\n\t\t\treturn to;\n\t\t})();\n\t}\n\t__resizeViaCreateImageBitmap(from, to, resizeParams, ctx) {\n\t\tvar _this5 = this;\n\t\treturn _asyncToGenerator(function* () {\n\t\t\tvar _utils$filter_to_cib_;\n\t\t\tlet toCtx = to.getContext(\"2d\");\n\t\t\t_this5.debug(\"Resize via createImageBitmap()\");\n\t\t\tconst imageBitmap = yield createImageBitmap(from, {\n\t\t\t\tresizeWidth: resizeParams.toWidth,\n\t\t\t\tresizeHeight: resizeParams.toHeight,\n\t\t\t\tresizeQuality: cib_quality_name((_utils$filter_to_cib_ = filter_to_cib_quality(resizeParams.filter)) !== null && _utils$filter_to_cib_ !== void 0 ? _utils$filter_to_cib_ : 3)\n\t\t\t});\n\t\t\tif (ctx.canceled) return ctx.cancelToken;\n\t\t\tif (!resizeParams.unsharpAmount) {\n\t\t\t\ttoCtx.drawImage(imageBitmap, 0, 0);\n\t\t\t\timageBitmap.close();\n\t\t\t\ttoCtx = null;\n\t\t\t\t_this5.debug(\"Finished!\");\n\t\t\t\treturn to;\n\t\t\t}\n\t\t\t_this5.debug(\"Unsharp result\");\n\t\t\tlet tmpCanvas = _this5.createCanvas(resizeParams.toWidth, resizeParams.toHeight);\n\t\t\tlet tmpCtx = tmpCanvas.getContext(\"2d\");\n\t\t\ttmpCtx.drawImage(imageBitmap, 0, 0);\n\t\t\timageBitmap.close();\n\t\t\tlet iData = tmpCtx.getImageData(0, 0, resizeParams.toWidth, resizeParams.toHeight);\n\t\t\t_this5.__mathlib.unsharp_mask(iData.data, resizeParams.toWidth, resizeParams.toHeight, resizeParams.unsharpAmount, resizeParams.unsharpRadius, resizeParams.unsharpThreshold);\n\t\t\ttoCtx.putImageData(iData, 0, 0);\n\t\t\ttmpCanvas.width = tmpCanvas.height = 0;\n\t\t\tiData = tmpCtx = tmpCanvas = toCtx = null;\n\t\t\t_this5.debug(\"Finished!\");\n\t\t\treturn to;\n\t\t})();\n\t}\n\tresize(from, to, options) {\n\t\tvar _this6 = this;\n\t\treturn _asyncToGenerator(function* () {\n\t\t\t_this6.debug(\"Start resize...\");\n\t\t\tconst requested = {};\n\t\t\tif (options) Object.assign(requested, options);\n\t\t\tlet filter = requested.filter || DEFAULT_RESIZE_OPTS.filter;\n\t\t\tif (Object.prototype.hasOwnProperty.call(requested, \"quality\")) {\n\t\t\t\tconst quality = requested.quality;\n\t\t\t\tif (typeof quality !== \"number\" || quality < 0 || quality > 3) throw new Error(`Pica: .quality should be [0..3], got ${quality}`);\n\t\t\t\tfilter = cib_quality_filter(quality);\n\t\t\t}\n\t\t\tconst resizeParams = {\n\t\t\t\tfilter,\n\t\t\t\tunsharpAmount: requested.unsharpAmount || DEFAULT_RESIZE_OPTS.unsharpAmount,\n\t\t\t\tunsharpRadius: requested.unsharpRadius || DEFAULT_RESIZE_OPTS.unsharpRadius,\n\t\t\t\tunsharpThreshold: requested.unsharpThreshold || DEFAULT_RESIZE_OPTS.unsharpThreshold,\n\t\t\t\twidth: isImage(from) ? from.naturalWidth : from.width,\n\t\t\t\theight: isImage(from) ? from.naturalHeight : from.height,\n\t\t\t\ttoWidth: to.width,\n\t\t\t\ttoHeight: to.height\n\t\t\t};\n\t\t\tif (resizeParams.unsharpRadius > 2) resizeParams.unsharpRadius = 2;\n\t\t\tif (to.width === 0 || to.height === 0) return Promise.reject(/* @__PURE__ */ new Error(`Invalid output size: ${to.width}x${to.height}`));\n\t\t\tconst ctx = {\n\t\t\t\tcancelToken: requested.cancelToken,\n\t\t\t\tcanceled: false\n\t\t\t};\n\t\t\tif (ctx.cancelToken) ctx.cancelToken = ctx.cancelToken.then((data) => {\n\t\t\t\tctx.canceled = true;\n\t\t\t\tthrow data;\n\t\t\t}, (err) => {\n\t\t\t\tctx.canceled = true;\n\t\t\t\tthrow err;\n\t\t\t});\n\t\t\tyield _this6.init();\n\t\t\tif (ctx.canceled) return ctx.cancelToken;\n\t\t\tif (_this6.capabilities.bug_image_bitmap_orientation_region && (isImage(from) || isImageBitmap(from))) {\n\t\t\t\tconst tmpCanvas = _this6.createCanvas(resizeParams.width, resizeParams.height);\n\t\t\t\ttmpCanvas.getContext(\"2d\").drawImage(from, 0, 0);\n\t\t\t\tfrom = tmpCanvas;\n\t\t\t}\n\t\t\tif (_this6.resize_features.cib) {\n\t\t\t\tif (is_cib_filter(resizeParams.filter)) return _this6.__resizeViaCreateImageBitmap(from, to, resizeParams, ctx);\n\t\t\t\t_this6.debug(\"cib is enabled, but not supports provided filter, fallback to manual math\");\n\t\t\t}\n\t\t\tif (!_this6.capabilities.canvas && !_this6.capabilities.offscreen_canvas) {\n\t\t\t\tconst err = /* @__PURE__ */ new Error(\"Pica: cannot use getImageData on canvas, make sure fingerprinting protection isn't enabled\");\n\t\t\t\terr.code = \"ERR_GET_IMAGE_DATA\";\n\t\t\t\tthrow err;\n\t\t\t}\n\t\t\treturn _this6.__planStagesAndResize(from, to, resizeParams, ctx);\n\t\t})();\n\t}\n\tresizeBuffer(options) {\n\t\tvar _this7 = this;\n\t\treturn _asyncToGenerator(function* () {\n\t\t\tconst opts = Object.assign({}, DEFAULT_RESIZE_OPTS, options);\n\t\t\tif (Object.prototype.hasOwnProperty.call(opts, \"quality\")) {\n\t\t\t\tconst quality = opts.quality;\n\t\t\t\tif (typeof quality !== \"number\" || quality < 0 || quality > 3) throw new Error(`Pica: .quality should be [0..3], got ${quality}`);\n\t\t\t\topts.filter = cib_quality_filter(quality);\n\t\t\t}\n\t\t\tyield _this7.init();\n\t\t\tif (!_this7.__mathlib) throw new Error(\"Pica: math library is not initialized\");\n\t\t\tconst mathOpts = {\n\t\t\t\tsrc: opts.src,\n\t\t\t\twidth: opts.width,\n\t\t\t\theight: opts.height,\n\t\t\t\ttoWidth: opts.toWidth,\n\t\t\t\ttoHeight: opts.toHeight,\n\t\t\t\tdest: opts.dest,\n\t\t\t\tscaleX: opts.toWidth / opts.width,\n\t\t\t\tscaleY: opts.toHeight / opts.height,\n\t\t\t\toffsetX: 0,\n\t\t\t\toffsetY: 0,\n\t\t\t\tfilter: opts.filter,\n\t\t\t\tunsharpAmount: opts.unsharpAmount,\n\t\t\t\tunsharpRadius: opts.unsharpRadius,\n\t\t\t\tunsharpThreshold: opts.unsharpThreshold\n\t\t\t};\n\t\t\treturn _this7.__mathlib.resizeAndUnsharp(mathOpts);\n\t\t})();\n\t}\n\ttoBlob(canvas, mimeType, quality) {\n\t\treturn _asyncToGenerator(function* () {\n\t\t\tmimeType = mimeType || \"image/png\";\n\t\t\tif (\"toBlob\" in canvas && canvas.toBlob) return new Promise((resolve) => {\n\t\t\t\tcanvas.toBlob((blob) => resolve(blob), mimeType, quality);\n\t\t\t});\n\t\t\tif (\"convertToBlob\" in canvas && canvas.convertToBlob) return canvas.convertToBlob({\n\t\t\t\ttype: mimeType,\n\t\t\t\tquality\n\t\t\t});\n\t\t\tconst asString = atob(canvas.toDataURL(mimeType, quality).split(\",\")[1]);\n\t\t\tconst len = asString.length;\n\t\t\tconst asBuffer = new Uint8Array(len);\n\t\t\tfor (let i = 0; i < len; i++) asBuffer[i] = asString.charCodeAt(i);\n\t\t\treturn new Blob([asBuffer], { type: mimeType });\n\t\t})();\n\t}\n\tdebug(..._args) {}\n};\nfunction pica(options) {\n\treturn new Pica(options);\n}\nexport { Pica, pica as default };\n\n//# sourceMappingURL=pica.mjs.map","// ////////////////////////////////////////////////////////////////////////\n// Helpers\n//\ninterface ErrorWithCode extends Error {\n  code?: string\n}\n\ninterface JpegSegment {\n  code: number\n  offset: number\n  length: number\n}\n\ninterface ExifEntry {\n  is_big_endian: boolean\n  ifd: number\n  tag: number\n  format: number\n  count: number\n  entry_offset: number\n  data_length: number\n  data_offset: number\n  value: number[] | string | null\n  is_subifd_link: boolean\n}\n\ntype JpegSegmentIterator = (segment: JpegSegment) => unknown\ntype JpegSegmentFilter = (segment: JpegSegment) => unknown\ntype ExifEntryIterator = (entry: ExifEntry) => unknown\n\ninterface Ifd {\n  id: number\n  offset?: number\n  entries: ExifEntry[]\n  written_offset?: number\n  link_offset?: number\n}\n\ninterface IfdToRead {\n  id: number\n  offset: number\n}\n\ntype SegmentRange =\n  | { data: Uint8Array, start?: never, end?: never }\n  | { data?: never, start: number, end: number }\n\nfunction error (message: string, code?: string): ErrorWithCode {\n  const err = new Error(message) as ErrorWithCode\n  err.code = code\n  return err\n}\n\n// Convert number to 0xHH string\n//\nfunction to_hex (number: number): string {\n  let n = number.toString(16).toUpperCase()\n  for (let i = 2 - n.length; i > 0; i--) n = '0' + n\n  return '0x' + n\n}\n\nfunction utf8_encode (str: string): string {\n  try {\n    return unescape(encodeURIComponent(str))\n  } catch (_) {\n    return str\n  }\n}\n\nfunction utf8_decode (str: string): string {\n  try {\n    return decodeURIComponent(escape(str))\n  } catch (_) {\n    return str\n  }\n}\n\n// Check if input is a Uint8Array\n//\nfunction is_uint8array (bin: unknown): bin is Uint8Array {\n  return Object.prototype.toString.call(bin) === '[object Uint8Array]'\n}\n\n// ////////////////////////////////////////////////////////////////////////\n// Exif parser\n//\n// Input:\n//  - jpeg_bin:   Uint8Array - jpeg file\n//  - exif_start: Number     - start of TIFF header (after Exif\\0\\0)\n//  - exif_end:   Number     - end of Exif segment\n//  - on_entry:   Number     - callback\n//\nclass ExifParser {\n  input: Uint8Array\n  start: number\n  big_endian: boolean\n  aborted = false\n  ifds_to_read: IfdToRead[] = []\n  output: Uint8Array = new Uint8Array(0)\n\n  constructor (jpeg_bin: Uint8Array, exif_start: number, exif_end: number) {\n    // Uint8Array, exif without signature (which isn't included in offsets)\n    this.input = jpeg_bin.subarray(exif_start, exif_end)\n\n    // offset correction for `on_entry` callback\n    this.start = exif_start\n\n    // Check TIFF header (includes byte alignment and first IFD offset)\n    const sig = String.fromCharCode.apply(null, this.input.subarray(0, 4) as unknown as number[])\n\n    if (sig !== 'II\\x2A\\0' && sig !== 'MM\\0\\x2A') {\n      throw error('invalid TIFF signature', 'EBADDATA')\n    }\n\n    // true if motorola (big endian) byte alignment, false if intel\n    this.big_endian = sig[0] === 'M'\n  }\n\n  each (on_entry: ExifEntryIterator): void {\n    // allow premature exit\n    this.aborted = false\n\n    const offset = this.read_uint32(4)\n\n    this.ifds_to_read = [{\n      id: 0,\n      offset\n    }]\n\n    while (this.ifds_to_read.length > 0 && !this.aborted) {\n      const i = this.ifds_to_read.shift()\n      if (!i || !i.offset) continue\n      this.scan_ifd(i.id, i.offset, on_entry)\n    }\n  }\n\n  filter (on_entry: ExifEntryIterator): Uint8Array {\n    const ifds: Record<string, Ifd> = {}\n\n    // make sure IFD0 always exists\n    ifds.ifd0 = { id: 0, entries: [] }\n\n    this.each(function (entry: ExifEntry) {\n      if (on_entry(entry) === false && !entry.is_subifd_link) return\n      if (entry.is_subifd_link && entry.count !== 1 && entry.format !== 4) return // filter out bogus links\n\n      if (!ifds['ifd' + entry.ifd]) {\n        ifds['ifd' + entry.ifd] = { id: entry.ifd, entries: [] }\n      }\n\n      ifds['ifd' + entry.ifd].entries.push(entry)\n    })\n\n    // Thumbnails are not supported just yet, so delete all information related\n    // to them.\n    delete ifds.ifd1\n\n    // Calculate output size\n    let length = 8\n    Object.keys(ifds).forEach(function (ifd_no) {\n      length += 2\n\n      ifds[ifd_no].entries.forEach(function (entry: ExifEntry) {\n        length += 12 + (entry.data_length > 4 ? Math.ceil(entry.data_length / 2) * 2 : 0)\n      })\n\n      length += 4\n    })\n\n    this.output = new Uint8Array(length)\n    this.output[0] = this.output[1] = (this.big_endian ? 'M' : 'I').charCodeAt(0)\n    this.write_uint16(2, 0x2A)\n\n    let offset = 8\n    this.write_uint32(4, offset)\n\n    Object.keys(ifds).forEach((ifd_no) => {\n      ifds[ifd_no].written_offset = offset\n\n      const ifd_start = offset\n      const ifd_end = ifd_start + 2 + ifds[ifd_no].entries.length * 12 + 4\n      offset = ifd_end\n\n      this.write_uint16(ifd_start, ifds[ifd_no].entries.length)\n\n      ifds[ifd_no].entries.sort(function (a: ExifEntry, b: ExifEntry) {\n        // IFD entries must be in order of increasing tag IDs.\n        return a.tag - b.tag\n      }).forEach((entry: ExifEntry, idx: number) => {\n        const entry_offset = ifd_start + 2 + idx * 12\n\n        this.write_uint16(entry_offset, entry.tag)\n        this.write_uint16(entry_offset + 2, entry.format)\n        this.write_uint32(entry_offset + 4, entry.count)\n\n        if (entry.is_subifd_link) {\n          // Filled in later.\n          if (ifds['ifd' + entry.tag]) ifds['ifd' + entry.tag].link_offset = entry_offset + 8\n        } else if (entry.data_length <= 4) {\n          this.output.set(\n            this.input.subarray(entry.data_offset - this.start, entry.data_offset - this.start + 4),\n            entry_offset + 8\n          )\n        } else {\n          this.write_uint32(entry_offset + 8, offset)\n          this.output.set(\n            this.input.subarray(entry.data_offset - this.start, entry.data_offset - this.start + entry.data_length),\n            offset\n          )\n          offset += Math.ceil(entry.data_length / 2) * 2\n        }\n      })\n\n      const next_ifd = ifds['ifd' + (ifds[ifd_no].id + 1)]\n      if (next_ifd) next_ifd.link_offset = ifd_end - 4\n    })\n\n    Object.keys(ifds).forEach((ifd_no) => {\n      if (ifds[ifd_no].written_offset && ifds[ifd_no].link_offset) {\n        this.write_uint32(ifds[ifd_no].link_offset, ifds[ifd_no].written_offset)\n      }\n    })\n\n    if (this.output.length !== offset) throw error('internal error: incorrect buffer size allocated')\n\n    return this.output\n  }\n\n  read_uint16 (offset: number): number {\n    const d = this.input\n    if (offset + 2 > d.length) throw error('unexpected EOF', 'EBADDATA')\n\n    return this.big_endian\n      ? d[offset] * 0x100 + d[offset + 1]\n      : d[offset] + d[offset + 1] * 0x100\n  }\n\n  read_uint32 (offset: number): number {\n    const d = this.input\n    if (offset + 4 > d.length) throw error('unexpected EOF', 'EBADDATA')\n\n    return this.big_endian\n      ? d[offset] * 0x1000000 + d[offset + 1] * 0x10000 + d[offset + 2] * 0x100 + d[offset + 3]\n      : d[offset] + d[offset + 1] * 0x100 + d[offset + 2] * 0x10000 + d[offset + 3] * 0x1000000\n  }\n\n  write_uint16 (offset: number, value: number): void {\n    const d = this.output\n\n    if (this.big_endian) {\n      d[offset] = (value >>> 8) & 0xFF\n      d[offset + 1] = value & 0xFF\n    } else {\n      d[offset] = value & 0xFF\n      d[offset + 1] = (value >>> 8) & 0xFF\n    }\n  }\n\n  write_uint32 (offset: number, value: number): void {\n    const d = this.output\n\n    if (this.big_endian) {\n      d[offset] = (value >>> 24) & 0xFF\n      d[offset + 1] = (value >>> 16) & 0xFF\n      d[offset + 2] = (value >>> 8) & 0xFF\n      d[offset + 3] = value & 0xFF\n    } else {\n      d[offset] = value & 0xFF\n      d[offset + 1] = (value >>> 8) & 0xFF\n      d[offset + 2] = (value >>> 16) & 0xFF\n      d[offset + 3] = (value >>> 24) & 0xFF\n    }\n  }\n\n  is_subifd_link (ifd: number, tag: number): boolean {\n    return (ifd === 0 && tag === 0x8769) || // SubIFD\n           (ifd === 0 && tag === 0x8825) || // GPS Info\n           (ifd === 0x8769 && tag === 0xA005) // Interop IFD\n  }\n\n  // Returns the byte length of a single component of a given format.\n  //\n  exif_format_length (format: number): number {\n    switch (format) {\n      case 1: // byte\n      case 2: // ascii\n      case 6: // sbyte\n      case 7: // undefined\n        return 1\n\n      case 3: // short\n      case 8: // sshort\n        return 2\n\n      case 4: // long\n      case 9: // slong\n      case 11: // float\n        return 4\n\n      case 5: // rational\n      case 10: // srational\n      case 12: // double\n        return 8\n\n      default:\n      // Unknown type.\n        return 0\n    }\n  }\n\n  // Reads Exif data.\n  //\n  exif_format_read (format: number, offset: number): number | null {\n    let v\n\n    switch (format) {\n      case 1: // byte\n      case 2: // ascii\n        v = this.input[offset]\n        return v\n\n      case 6: // sbyte\n        v = this.input[offset]\n        return v | (v & 0x80) * 0x1fffffe\n\n      case 3: // short\n        v = this.read_uint16(offset)\n        return v\n\n      case 8: // sshort\n        v = this.read_uint16(offset)\n        return v | (v & 0x8000) * 0x1fffe\n\n      case 4: // long\n        v = this.read_uint32(offset)\n        return v\n\n      case 9: // slong\n        v = this.read_uint32(offset)\n        return v | 0\n\n      case 5: // rational\n      case 10: // srational\n      case 11: // float\n      case 12: // double\n        return null // not implemented\n\n      case 7: // undefined\n        return null // blob\n\n      default:\n      // Unknown type.\n        return null\n    }\n  }\n\n  scan_ifd (ifd_no: number, offset: number, on_entry: ExifEntryIterator): void {\n    const entry_count = this.read_uint16(offset)\n\n    offset += 2\n\n    for (let i = 0; i < entry_count; i++) {\n      const tag = this.read_uint16(offset)\n      const format = this.read_uint16(offset + 2)\n      const count = this.read_uint32(offset + 4)\n\n      const comp_length = this.exif_format_length(format)\n      const data_length = count * comp_length\n      const data_offset = data_length <= 4 ? offset + 8 : this.read_uint32(offset + 8)\n      let is_subifd_link = false\n\n      if (data_offset + data_length > this.input.length) {\n        throw error('unexpected EOF', 'EBADDATA')\n      }\n\n      let value: number[] | string | null = []\n      let comp_offset = data_offset\n\n      for (let j = 0; j < count; j++, comp_offset += comp_length) {\n        const item = this.exif_format_read(format, comp_offset)\n        if (item === null) {\n          value = null\n          break\n        }\n        value.push(item)\n      }\n\n      if (Array.isArray(value) && format === 2) {\n        try {\n          value = utf8_decode(String.fromCharCode.apply(null, value))\n        } catch (_) {\n          value = null\n        }\n\n        if (value && value[value.length - 1] === '\\0') value = value.slice(0, -1)\n      }\n\n      if (this.is_subifd_link(ifd_no, tag)) {\n        if (Array.isArray(value) && Number.isInteger(value[0]) && value[0] > 0) {\n          this.ifds_to_read.push({\n            id: tag,\n            offset: value[0]\n          })\n          is_subifd_link = true\n        }\n      }\n\n      const entry = {\n        is_big_endian: this.big_endian,\n        ifd: ifd_no,\n        tag,\n        format,\n        count,\n        entry_offset: offset + this.start,\n        data_length,\n        data_offset: data_offset + this.start,\n        value,\n        is_subifd_link\n      }\n\n      if (on_entry(entry) === false) {\n        this.aborted = true\n        return\n      }\n\n      offset += 12\n    }\n\n    if (ifd_no === 0) {\n      this.ifds_to_read.push({\n        id: 1,\n        offset: this.read_uint32(offset)\n      })\n    }\n  }\n}\n\n// Check whether input is a JPEG image\n//\n// Input:\n//  - jpeg_bin: Uint8Array - jpeg file\n//\n// Returns true if it is and false otherwise\n//\nfunction is_jpeg (jpeg_bin: Uint8Array): boolean {\n  return jpeg_bin.length >= 4 && jpeg_bin[0] === 0xFF && jpeg_bin[1] === 0xD8 && jpeg_bin[2] === 0xFF\n}\n\n// Call an iterator on each segment in the given JPEG image\n//\n// Input:\n//  - jpeg_bin:   Uint8Array - jpeg file\n//  - on_segment: Function - callback executed on each JPEG marker segment\n//    - segment:  Object\n//      - code:   Number - marker type (2nd byte, e.g. 0xE0 for APP0)\n//      - offset: Number - offset of the first byte (0xFF) relative to `jpeg_bin` start\n//      - length: Number - length of the entire marker segment, including marker bytes and length field\n//        - 2 for standalone markers\n//        - 4+length for markers with data\n//\n// Iteration stops when `EOI` (0xFFD9) marker is reached or if `on_segment`\n// function returns `false`.\n//\nfunction jpeg_segments_each (jpeg_bin: Uint8Array, on_segment: JpegSegmentIterator): void {\n  if (!is_uint8array(jpeg_bin)) {\n    throw error('Invalid argument (jpeg_bin), Uint8Array expected', 'EINVAL')\n  }\n\n  if (typeof on_segment !== 'function') {\n    throw error('Invalid argument (on_segment), Function expected', 'EINVAL')\n  }\n\n  if (!is_jpeg(jpeg_bin)) {\n    throw error('Unknown file format', 'ENOTJPEG')\n  }\n\n  let offset = 0, inside_scan = false\n  const length = jpeg_bin.length\n\n  for (;;) {\n    let segment_code\n    let segment_length\n\n    if (offset + 1 >= length) throw error('Unexpected EOF', 'EBADDATA')\n    const byte1 = jpeg_bin[offset]\n    const byte2 = jpeg_bin[offset + 1]\n\n    if (byte1 === 0xFF && byte2 === 0xFF) {\n      // padding\n      segment_code = 0xFF\n      segment_length = 1\n    } else if (byte1 === 0xFF && byte2 !== 0) {\n      // marker\n      segment_code = byte2\n      segment_length = 2\n\n      if ((segment_code >= 0xD0 && segment_code <= 0xD9) || segment_code === 0x01) {\n        // standalone markers, according to JPEG 1992,\n        // http://www.w3.org/Graphics/JPEG/itu-t81.pdf, see Table B.1\n      } else {\n        if (offset + 3 >= length) throw error('Unexpected EOF', 'EBADDATA')\n        segment_length += jpeg_bin[offset + 2] * 0x100 + jpeg_bin[offset + 3]\n        if (segment_length < 2) throw error('Invalid segment length', 'EBADDATA')\n        if (offset + segment_length - 1 >= length) throw error('Unexpected EOF', 'EBADDATA')\n      }\n\n      if (inside_scan) {\n        if (segment_code >= 0xD0 && segment_code <= 0xD7) {\n          // reset markers\n        } else {\n          inside_scan = false\n        }\n      }\n\n      if (segment_code === 0xDA /* SOS */) inside_scan = true\n    } else if (inside_scan) {\n      // entropy-encoded segment\n      for (let pos = offset + 1; ; pos++) {\n        // scan until we find FF\n        if (pos >= length) throw error('Unexpected EOF', 'EBADDATA')\n        if (jpeg_bin[pos] === 0xFF) {\n          if (pos + 1 >= length) throw error('Unexpected EOF', 'EBADDATA')\n          if (jpeg_bin[pos + 1] !== 0) {\n            segment_code = 0\n            segment_length = pos - offset\n            break\n          }\n        }\n      }\n    } else {\n      throw error('Unexpected byte at segment start: ' + to_hex(byte1) +\n        ' (offset ' + to_hex(offset) + ')', 'EBADDATA')\n    }\n\n    if (on_segment({ code: segment_code, offset, length: segment_length }) === false) break\n    if (segment_code === 0xD9 /* EOI */) break\n    offset += segment_length\n  }\n}\n\n// Replace or remove segments in the given JPEG image\n//\n// Input:\n//  - jpeg_bin:   Uint8Array - jpeg file\n//  - on_segment: Function - callback executed on each JPEG marker segment\n//    - segment:  Object\n//      - code:   Number - marker type (2nd byte, e.g. 0xE0 for APP0)\n//      - offset: Number - offset of the first byte (0xFF) relative to `jpeg_bin` start\n//      - length: Number - length of the entire marker segment, including marker bytes and length field\n//        - 2 for standalone markers\n//        - 4+length for markers with data\n//\n// `on_segment` function should return one of the following:\n//  - `false`        - segment is removed from the output\n//  - Uint8Array     - segment is replaced with the new data\n//  - [ Uint8Array ] - segment is replaced with the new data\n//  - anything else  - segment is copied to the output as is\n//\n// Any data after `EOI` (0xFFD9) marker is removed.\n//\nfunction jpeg_segments_filter (jpeg_bin: Uint8Array, on_segment: JpegSegmentFilter): Uint8Array {\n  if (!is_uint8array(jpeg_bin)) {\n    throw error('Invalid argument (jpeg_bin), Uint8Array expected', 'EINVAL')\n  }\n\n  if (typeof on_segment !== 'function') {\n    throw error('Invalid argument (on_segment), Function expected', 'EINVAL')\n  }\n\n  const ranges: SegmentRange[] = []\n  let out_length = 0\n\n  jpeg_segments_each(jpeg_bin, function (segment) {\n    const new_segment = on_segment(segment)\n\n    if (is_uint8array(new_segment)) {\n      ranges.push({ data: new_segment })\n      out_length += new_segment.length\n    } else if (Array.isArray(new_segment)) {\n      new_segment.filter(is_uint8array).forEach(function (s: Uint8Array) {\n        ranges.push({ data: s })\n        out_length += s.length\n      })\n    } else if (new_segment !== false) {\n      const new_range = { start: segment.offset, end: segment.offset + segment.length }\n\n      if (ranges.length > 0 && ranges[ranges.length - 1].end === new_range.start) {\n        ranges[ranges.length - 1].end = new_range.end\n      } else {\n        ranges.push(new_range)\n      }\n\n      out_length += segment.length\n    }\n  })\n\n  const result = new Uint8Array(out_length)\n  let offset = 0\n\n  ranges.forEach(function (range) {\n    const data = range.data || jpeg_bin.subarray(range.start, range.end)\n    result.set(data, offset)\n    offset += data.length\n  })\n\n  return result\n}\n\n// Call an iterator on each Exif entry in the given JPEG image\n//\n// Input:\n//  - jpeg_bin: Uint8Array - jpeg file\n//  - on_entry: Function - callback executed on each Exif entry\n//    - entry:  Object\n//      - is_big_endian:  Boolean - whether Exif uses big or little endian byte alignment\n//      - ifd:            Number  - IFD identifier (0 for IFD0, 1 for IFD1, 0x8769 for SubIFD,\n//                                 0x8825 for GPS Info, 0xA005 for Interop IFD)\n//      - tag:            Number  - exif entry tag (0x0110 - camera name, 0x0112 - orientation, etc. - see Exif spec)\n//      - format:         Number  - exif entry format (1 - byte, 2 - ascii, 3 - short, etc. - see Exif spec)\n//      - count:          Number  - number of components of the given format inside data\n//                                 (usually 1, or string length for ascii format)\n//      - entry_offset:   Number  - start of Exif entry (entry length is always 12, so not included)\n//      - data_offset:    Number  - start of data attached to Exif entry (will overlap with entry if length <= 4)\n//      - data_length:    Number  - length of data attached to Exif entry\n//      - value:          Array|String|Null - our best attempt at parsing data (not all formats supported right now)\n//      - is_subifd_link: Boolean - whether this entry is recognized as a link to SubIFD (can't filter these out)\n//\n// Iteration stops early if iterator returns `false`.\n//\n// If Exif wasn't found anywhere (before start of the image data, SOS),\n// iterator is never executed.\n//\nfunction jpeg_exif_tags_each (jpeg_bin: Uint8Array, on_exif_entry: ExifEntryIterator): void {\n  if (!is_uint8array(jpeg_bin)) {\n    throw error('Invalid argument (jpeg_bin), Uint8Array expected', 'EINVAL')\n  }\n\n  if (typeof on_exif_entry !== 'function') {\n    throw error('Invalid argument (on_exif_entry), Function expected', 'EINVAL')\n  }\n\n  jpeg_segments_each(jpeg_bin, function (segment) {\n    if (segment.code === 0xDA /* SOS */) return false\n\n    // Look for an APP1 segment and compare the header with 'Exif\\0\\0'.\n    if (segment.code === 0xE1 && segment.length >= 10 &&\n        jpeg_bin[segment.offset + 4] === 0x45 && jpeg_bin[segment.offset + 5] === 0x78 &&\n        jpeg_bin[segment.offset + 6] === 0x69 && jpeg_bin[segment.offset + 7] === 0x66 &&\n        jpeg_bin[segment.offset + 8] === 0x00 && jpeg_bin[segment.offset + 9] === 0x00) {\n      new ExifParser(jpeg_bin, segment.offset + 10, segment.offset + segment.length).each(on_exif_entry)\n      return false\n    }\n  })\n}\n\n// Remove Exif entries in the given JPEG image\n//\n// Input:\n//  - jpeg_bin: Uint8Array - jpeg file\n//  - on_entry: Function - callback executed on each Exif entry\n//    - entry:  Object\n//      - is_big_endian:  Boolean - whether Exif uses big or little endian byte alignment\n//      - ifd:            Number  - IFD identifier (0 for IFD0, 1 for IFD1, 0x8769 for SubIFD,\n//                                  0x8825 for GPS Info, 0xA005 for Interop IFD)\n//      - tag:            Number  - exif entry tag (0x0110 - camera name, 0x0112 - orientation, etc. - see Exif spec)\n//      - format:         Number  - exif entry format (1 - byte, 2 - ascii, 3 - short, etc. - see Exif spec)\n//      - count:          Number  - number of components of the given format inside data\n//                                  (usually 1, or string length for ascii format)\n//      - entry_offset:   Number  - start of Exif entry (entry length is always 12, so not included)\n//      - data_offset:    Number  - start of data attached to Exif entry (will overlap with entry if length <= 4)\n//      - data_length:    Number  - length of data attached to Exif entry\n//      - value:          Array|String|Null - our best attempt at parsing data (not all formats supported right now)\n//      - is_subifd_link: Boolean - whether this entry is recognized as a link to SubIFD (can't filter these out)\n//\n// This function removes the following from Exif:\n//  - all entries where the iterator returned false (except subifd links which are mandatory)\n//  - IFD1 and thumbnail image (the purpose of this function is to reduce file size,\n//    so thumbnail is usually the first thing to go)\n//  - all other data that isn't in IFD0, SubIFD, GPSIFD or InteropIFD\n//    (theoretically possible proprietary extensions, I haven't seen any of these yet)\n//\n// Changing data inside Exif entries is NOT supported yet (modifying the `entry` object inside the callback may break stuff).\n//\n// If Exif wasn't found anywhere (before start of the image data, SOS),\n// iterator is never executed, and original JPEG is returned as is.\n//\nfunction jpeg_exif_tags_filter (jpeg_bin: Uint8Array, on_exif_entry: ExifEntryIterator): Uint8Array {\n  if (!is_uint8array(jpeg_bin)) {\n    throw error('Invalid argument (jpeg_bin), Uint8Array expected', 'EINVAL')\n  }\n\n  if (typeof on_exif_entry !== 'function') {\n    throw error('Invalid argument (on_exif_entry), Function expected', 'EINVAL')\n  }\n\n  let stop_search = false\n\n  return jpeg_segments_filter(jpeg_bin, function (segment) {\n    if (stop_search) return\n    if (segment.code === 0xDA /* SOS */) stop_search = true\n\n    // Look for an APP1 segment and compare the header with 'Exif\\0\\0'.\n    if (segment.code === 0xE1 && segment.length >= 10 &&\n        jpeg_bin[segment.offset + 4] === 0x45 && jpeg_bin[segment.offset + 5] === 0x78 &&\n        jpeg_bin[segment.offset + 6] === 0x69 && jpeg_bin[segment.offset + 7] === 0x66 &&\n        jpeg_bin[segment.offset + 8] === 0x00 && jpeg_bin[segment.offset + 9] === 0x00) {\n      const new_exif = new ExifParser(jpeg_bin, segment.offset + 10, segment.offset + segment.length)\n        .filter(on_exif_entry)\n      if (!new_exif) return false\n\n      const header = new Uint8Array(10)\n\n      header.set(jpeg_bin.slice(segment.offset, segment.offset + 10))\n      header[2] = ((new_exif.length + 8) >>> 8) & 0xFF\n      header[3] = (new_exif.length + 8) & 0xFF\n\n      stop_search = true\n      return [header, new_exif]\n    }\n  })\n}\n\n// Inserts a custom comment marker segment into a JPEG file.\n//\n// Input:\n//  - jpeg_bin: Uint8Array - jpeg file\n//  - comment:  String\n//\n// The comment is inserted after the first two bytes (FFD8, SOI).\n//\n// If JFIF (APP0) marker exists immediately after SOI (as mandated by the JFIF\n// spec), we insert the comment after it instead.\n//\nfunction jpeg_add_comment (jpeg_bin: Uint8Array, comment: string): Uint8Array {\n  let comment_inserted = false, segment_count = 0\n\n  return jpeg_segments_filter(jpeg_bin, function (segment) {\n    segment_count++\n    if (segment_count === 1 && segment.code === 0xD8 /* SOI  */) return\n    if (segment_count === 2 && segment.code === 0xE0 /* APP0 */) return\n\n    if (comment_inserted) return\n    comment = utf8_encode(comment)\n\n    // comment segment\n    const csegment = new Uint8Array(5 + comment.length)\n    let offset = 0\n\n    csegment[offset++] = 0xFF\n    csegment[offset++] = 0xFE\n    csegment[offset++] = ((comment.length + 3) >>> 8) & 0xFF\n    csegment[offset++] = (comment.length + 3) & 0xFF\n\n    comment.split('').forEach(function (c) {\n      csegment[offset++] = c.charCodeAt(0) & 0xFF\n    })\n\n    csegment[offset++] = 0\n    comment_inserted = true\n\n    return [csegment, jpeg_bin.subarray(segment.offset, segment.offset + segment.length)]\n  })\n}\n\nexport {\n  is_jpeg,\n  jpeg_segments_each,\n  jpeg_segments_filter,\n  jpeg_exif_tags_each,\n  jpeg_exif_tags_filter,\n  jpeg_add_comment\n}\n\nexport type {\n  ErrorWithCode,\n  JpegSegment,\n  JpegSegmentIterator,\n  JpegSegmentFilter,\n  ExifEntry,\n  ExifEntryIterator\n}\n","import * as image_traverse from './image_traverse'\nimport type { ImageBlobReduce, ImageBlobReduceEnv } from './index'\n\nasync function jpeg_patch_exif (this: ImageBlobReduce, env: ImageBlobReduceEnv): Promise<ImageBlobReduceEnv> {\n  const data = await this._getUint8Array(env.blob)\n\n  env.is_jpeg = image_traverse.is_jpeg(data)\n\n  if (!env.is_jpeg) return env\n\n  env.orig_blob = env.blob\n\n  try {\n    let exif_is_big_endian: boolean | undefined\n    let orientation_offset: number | undefined\n\n    image_traverse.jpeg_exif_tags_each(data, function (entry) {\n      if (entry.ifd === 0 && entry.tag === 0x112 && Array.isArray(entry.value)) {\n        env.orientation = entry.value[0] || 1\n        exif_is_big_endian = entry.is_big_endian\n        orientation_offset = entry.data_offset\n        return false\n      }\n    })\n\n    if (orientation_offset) {\n      const orientation_patch = exif_is_big_endian\n        ? new Uint8Array([0, 1])\n        : new Uint8Array([1, 0])\n\n      env.blob = new Blob([\n        data.slice(0, orientation_offset),\n        orientation_patch,\n        data.slice(orientation_offset + 2)\n      ], { type: 'image/jpeg' })\n    }\n  } catch (_) {}\n\n  return env\n}\n\nasync function jpeg_rotate_canvas (this: ImageBlobReduce, env: ImageBlobReduceEnv): Promise<ImageBlobReduceEnv> {\n  if (!env.is_jpeg) return env\n\n  const orientation = (env.orientation || 1) - 1\n  if (!orientation) return env\n\n  let canvas\n\n  if (orientation & 4) {\n    canvas = this.pica.createCanvas(env.out_canvas!.height, env.out_canvas!.width)\n  } else {\n    canvas = this.pica.createCanvas(env.out_canvas!.width, env.out_canvas!.height)\n  }\n\n  const ctx = canvas.getContext('2d')!\n\n  ctx.save()\n\n  if (orientation & 1) ctx.transform(-1, 0, 0, 1, canvas.width, 0)\n  if (orientation & 2) ctx.transform(-1, 0, 0, -1, canvas.width, canvas.height)\n  if (orientation & 4) ctx.transform(0, 1, 1, 0, 0, 0)\n\n  ctx.drawImage(env.out_canvas!, 0, 0)\n  ctx.restore()\n\n  // Safari 12 workaround\n  // https://github.com/nodeca/pica/issues/199\n  env.out_canvas!.width = env.out_canvas!.height = 0\n\n  env.out_canvas = canvas\n\n  return env\n}\n\nasync function jpeg_attach_orig_segments (this: ImageBlobReduce, env: ImageBlobReduceEnv): Promise<ImageBlobReduceEnv> {\n  if (!env.is_jpeg) return env\n\n  const [data, data_out] = await Promise.all([\n    this._getUint8Array(env.blob),\n    this._getUint8Array(env.out_blob!)\n  ])\n\n  if (!image_traverse.is_jpeg(data)) return env\n\n  const segments: image_traverse.JpegSegment[] = []\n\n  image_traverse.jpeg_segments_each(data, function (segment) {\n    if (segment.code === 0xDA /* SOS */) return false\n    segments.push(segment)\n  })\n\n  const segment_data = segments\n    .filter(function (segment) {\n      // Drop ICC_PROFILE\n      //\n      if (segment.code === 0xE2) return false\n\n      // Keep all APPn segments excluding APP2 (ICC_PROFILE),\n      // remove the others because most of them depend on image data\n      // (DCT and such).\n      //\n      // APP0 - JFIF, APP1 - Exif, the rest are Photoshop metadata and such.\n      //\n      // See full list at https://www.w3.org/Graphics/JPEG/itu-t81.pdf (table B.1 on page 32)\n      //\n      if (segment.code >= 0xE0 && segment.code < 0xF0) return true\n\n      // Keep comments\n      //\n      if (segment.code === 0xFE) return true\n\n      return false\n    })\n    .map(function (segment) {\n      return data.slice(segment.offset, segment.offset + segment.length)\n    })\n\n  env.out_blob = new Blob(\n    // Intentionally omit the expected JFIF segment (offset 2 to 20).\n    [data_out.slice(0, 2)].concat(segment_data).concat([data_out.slice(20)]),\n    { type: 'image/jpeg' }\n  )\n\n  return env\n}\n\nfunction assign (reducer: ImageBlobReduce): void {\n  reducer.before('_blob_to_image', jpeg_patch_exif)\n  reducer.after('_transform', jpeg_rotate_canvas)\n  reducer.after('_create_blob', jpeg_attach_orig_segments)\n}\n\nexport {\n  jpeg_patch_exif,\n  jpeg_rotate_canvas,\n  jpeg_attach_orig_segments,\n  assign\n}\n","import pica, { Pica } from 'pica'\nimport type { PicaCanvas, ResizeOptions as PicaResizeOptions } from 'pica'\nimport * as image_traverse from './image_traverse'\nimport * as jpeg_plugins from './jpeg_plugins'\n\ninterface ImageBlobReduceOptions {\n  pica?: Pica\n}\n\ntype ImageBlobReduceResizeOptions = PicaResizeOptions & {\n  max?: number\n}\n\ninterface ImageBlobReduceEnv {\n  blob: Blob\n  opts: ImageBlobReduceResizeOptions & { max: number }\n  image?: HTMLImageElement | null\n  image_url?: string | null\n  transform_width?: number | null\n  transform_height?: number | null\n  scale_factor?: number\n  out_canvas?: PicaCanvas\n  out_blob?: Blob\n  is_jpeg?: boolean\n  orig_blob?: Blob\n  orientation?: number\n}\n\ntype PipelineMethod = (env: ImageBlobReduceEnv) => Promise<ImageBlobReduceEnv>\ntype HookMethodName = '_blob_to_image' | '_calculate_size' | '_transform' | '_cleanup' | '_create_blob'\ntype Hook = (this: ImageBlobReduce, env: ImageBlobReduceEnv) => Promise<ImageBlobReduceEnv>\ntype Plugin = (reducer: ImageBlobReduce, ...params: unknown[]) => void\n\ninterface ObjectURLAPI {\n  createObjectURL: (blob: Blob) => string\n  revokeObjectURL?: (url: string) => void\n}\n\ntype LegacyWindow = Window & {\n  URL: ObjectURLAPI\n  webkitURL?: ObjectURLAPI\n  mozURL?: ObjectURLAPI\n  msURL?: ObjectURLAPI\n}\n\nclass ImageBlobReduce {\n  pica: Pica\n  private initialized: boolean\n  private _initPromise?: Promise<void>\n\n  constructor (options?: ImageBlobReduceOptions) {\n    options = options || {}\n\n    this.pica = options.pica || pica({})\n    this.initialized = false\n  }\n\n  use (plugin: Plugin, ...params: unknown[]): this {\n    plugin(this, ...params)\n    return this\n  }\n\n  setup (): void {\n    this.use(jpeg_plugins.assign)\n  }\n\n  private async _ensureInitialized (): Promise<void> {\n    if (!this._initPromise) {\n      this._initPromise = Promise.resolve()\n        .then(async () => {\n          this.setup()\n          await this.pica.init()\n          this.initialized = true\n        })\n    }\n\n    return this._initPromise\n  }\n\n  async toBlob (blob: Blob, options?: ImageBlobReduceResizeOptions): Promise<Blob> {\n    const opts = { max: Infinity, ...options }\n    let env: ImageBlobReduceEnv = {\n      blob,\n      opts\n    }\n\n    await this._ensureInitialized()\n\n    env = await this._blob_to_image(env)\n    env = await this._calculate_size(env)\n    env = await this._transform(env)\n    env = await this._cleanup(env)\n    env = await this._create_blob(env)\n\n    // Safari 12 workaround\n    // https://github.com/nodeca/pica/issues/199\n    env.out_canvas!.width = env.out_canvas!.height = 0\n\n    return env.out_blob!\n  }\n\n  async toCanvas (blob: Blob, options?: ImageBlobReduceResizeOptions): Promise<PicaCanvas> {\n    const opts = { max: Infinity, ...options }\n    let env: ImageBlobReduceEnv = {\n      blob,\n      opts\n    }\n\n    await this._ensureInitialized()\n\n    env = await this._blob_to_image(env)\n    env = await this._calculate_size(env)\n    env = await this._transform(env)\n    env = await this._cleanup(env)\n\n    return env.out_canvas!\n  }\n\n  before (method_name: HookMethodName, fn: Hook): this {\n    if (!this[method_name]) throw new Error('Method \"' + method_name + '\" does not exist')\n    if (typeof fn !== 'function') throw new Error('Invalid argument \"fn\", function expected')\n\n    const old_fn = this[method_name] as PipelineMethod\n\n    this[method_name] = (async (env: ImageBlobReduceEnv): Promise<ImageBlobReduceEnv> => {\n      const _env = await fn.call(this, env)\n      return old_fn.call(this, _env)\n    }) as this[HookMethodName]\n\n    return this\n  }\n\n  after (method_name: HookMethodName, fn: Hook): this {\n    if (!this[method_name]) throw new Error('Method \"' + method_name + '\" does not exist')\n    if (typeof fn !== 'function') throw new Error('Invalid argument \"fn\", function expected')\n\n    const old_fn = this[method_name] as PipelineMethod\n\n    this[method_name] = (async (env: ImageBlobReduceEnv): Promise<ImageBlobReduceEnv> => {\n      const _env = await old_fn.call(this, env)\n      return fn.call(this, _env)\n    }) as this[HookMethodName]\n\n    return this\n  }\n\n  _blob_to_image (env: ImageBlobReduceEnv): Promise<ImageBlobReduceEnv> {\n    const win = window as LegacyWindow\n    const URL = win.URL || win.webkitURL || win.mozURL || win.msURL\n\n    env.image = document.createElement('img')\n    env.image_url = URL!.createObjectURL(env.blob)\n    env.image.src = env.image_url\n\n    return new Promise(function (resolve: (env: ImageBlobReduceEnv) => void, reject) {\n      env.image!.onerror = function () { reject(new Error('ImageBlobReduce: failed to create Image() from blob')) }\n      env.image!.onload = function () { resolve(env) }\n    })\n  }\n\n  async _calculate_size (env: ImageBlobReduceEnv): Promise<ImageBlobReduceEnv> {\n    //\n    // Note: if you need non-symmetric resize logic, you MUST check\n    // `env.orientation` (set by plugins) and swap width/height appropriately.\n    //\n    let scale_factor = env.opts.max / Math.max(env.image!.width, env.image!.height)\n\n    if (scale_factor > 1) scale_factor = 1\n\n    env.transform_width = Math.max(Math.round(env.image!.width * scale_factor), 1)\n    env.transform_height = Math.max(Math.round(env.image!.height * scale_factor), 1)\n\n    // Info for user plugins to check whether scaling was applied.\n    env.scale_factor = scale_factor\n\n    return env\n  }\n\n  async _transform (env: ImageBlobReduceEnv): Promise<ImageBlobReduceEnv> {\n    env.out_canvas = this.pica.createCanvas(env.transform_width!, env.transform_height!)\n\n    // Dim temporary env vars to prevent use and avoid confusion when orientation\n    // changes. Take the real size from the canvas.\n    env.transform_width = null\n    env.transform_height = null\n\n    const { max, ...pica_opts } = env.opts\n\n    await this.pica.resize(env.image!, env.out_canvas, pica_opts)\n\n    return env\n  }\n\n  async _cleanup (env: ImageBlobReduceEnv): Promise<ImageBlobReduceEnv> {\n    env.image!.src = ''\n    env.image = null\n\n    const win = window as LegacyWindow\n    const URL = win.URL || win.webkitURL || win.mozURL || win.msURL\n    if (URL!.revokeObjectURL) URL!.revokeObjectURL(env.image_url!)\n\n    env.image_url = null\n\n    return env\n  }\n\n  async _create_blob (env: ImageBlobReduceEnv): Promise<ImageBlobReduceEnv> {\n    env.out_blob = await this.pica.toBlob(env.out_canvas!, env.blob.type)\n    return env\n  }\n\n  async _getUint8Array (blob: Blob): Promise<Uint8Array> {\n    if (blob.arrayBuffer) {\n      return new Uint8Array(await blob.arrayBuffer())\n    }\n\n    return new Promise(function (resolve: (data: Uint8Array) => void, reject) {\n      const fr = new FileReader()\n\n      fr.readAsArrayBuffer(blob)\n\n      fr.onload = function () { resolve(new Uint8Array(fr.result as ArrayBuffer)) }\n      fr.onerror = function () {\n        reject(new Error('ImageBlobReduce: failed to load data from input blob'))\n        fr.abort()\n      }\n      fr.onabort = function () {\n        reject(new Error('ImageBlobReduce: failed to load data from input blob (aborted)'))\n      }\n    })\n  }\n}\n\nfunction imageBlobReduce (options?: ImageBlobReduceOptions): ImageBlobReduce {\n  return new ImageBlobReduce(options)\n}\n\nexport {\n  ImageBlobReduce,\n  image_traverse,\n  pica,\n  Pica\n}\n\nexport type {\n  ImageBlobReduceEnv,\n  ImageBlobReduceOptions,\n  ImageBlobReduceResizeOptions,\n  Hook as ImageBlobReduceHook,\n  HookMethodName as ImageBlobReduceHookMethodName,\n  Plugin as ImageBlobReducePlugin\n}\n\nexport default imageBlobReduce\n"],"x_google_ignoreList":[0],"mappings":"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"}